Repository navigation
feat(swift): EventKit 插件的 TCC e2e、承诺登记、agent skill 与设计记录(#387) - #497
Merged
Merged
Conversation
- e2e tests/e2e/tests/tcc.rs:用 EventKit 的 Swift 插件由 rutis-host run 运行、Python 插件调用:运行时为自己负责(负责进程是自己),签名标识来自链入的 Info.plist、其中有用途说明;未授权时 Python 调用方收到插件的错误(CalendarAccessDenied);CI 里从不弹提示,RUTIS_E2E_TCC_ASK=1 时请求授权(人工验收) - 承诺登记:loader/swift-runtimes、swift/tcc-belongs-to-the-binary,bridge/dial-out-rules 加 Swift 列 - .agents/skills/rutis-remote-plugin:Swift 插件二进制的 listen: / dial:、language swift、runtimes.swift - 设计:Swift SDK §17.4 S2 的实现记录;多语言总体稿 M3 的进展 - CI:runtimes-swift 跑 tcc Closes #387
# Conflicts: # docs/ci.en.md # docs/ci.md
# Conflicts: # docs/ci.en.md # docs/ci.md # docs/guarantees.en.md # docs/guarantees.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#387(Swift S2)的最后一部分,接 #495、#496:用 EventKit 的插件的 TCC e2e、承诺登记、agent skill 与设计记录。基于 #496 的分支,前两个合入后改到 main。
Closes #387
e2e:
tests/e2e/tests/tcc.rs(macOS)场景里写一个 SwiftPM 包
calendar(依赖本仓库,linkerSettings链入 Info.plist:CFBundleIdentifierdev.rutis.e2e.calendar、NSCalendarsFullAccessUsageDescription),插件calendar用 EventKit;构建后放进runtimes.swift.dir,由rutis-host run运行,Python 探针调用它。检查:serve时原地重新执行自己并 disclaim)。codesign -d的Identifier=dev.rutis.e2e.calendar,二进制里有用途说明。titles抛CalendarAccessDenied,Python 调用方收到CalendarAccessDenied: calendar access is not granted to this plugin (<状态>);已授权(人工授予过)时返回事件标题。CI 里提示无法点击:插件配置
ask: false,从不请求,不会弹出提示。RUTIS_E2E_TCC_ASK=1时请求授权,用于下面的人工验收。人工验收(授权的那一半)
在一台有图形会话的 Mac 上:
RUTIS_E2E_TCC_ASK=1 cargo test -p rutis-e2e --test tcc -- --nocaptureCFBundleName)想访问日历,并显示用途说明“The rutis end-to-end test reads the titles of this week's events.”,不是终端或 rutis-host。CalendarAccessDenied: … (denied)。系统设置 › 隐私与安全性 › 日历里出现的是这个二进制,而不是终端。tccutil reset Calendar dev.rutis.e2e.calendar后再跑一次,点“允许”:测试通过,返回本周事件的标题。tccutil reset Calendar dev.rutis.e2e.calendar。(每次构建都是 ad-hoc 签名的新程序:macOS 可能为新构建再问一次,见 Swift 指南“系统权限”。)
其他
loader/swift-runtimes、swift/tcc-belongs-to-the-binary(契约行为 117 → 119,已验证 108 → 110);bridge/dial-out-rules加 Swift 列。.agents/skills/rutis-remote-plugin:Swift 插件二进制的listen:/dial:、language: "swift"、runtimes.swift、构建与 Info.plist;references 同步。dev用 debug 构建、模板测试与 Command Line Tools、check的旧 SDK、宿主的编译型语言模块、监听不用NWProtocolWebSocket、RUTIS_KEY格式);多语言总体稿 M3 一行记下形态①完成。runtimes-swift跑rutis-e2e --test tcc;路径过滤加它;docs/ci同步。本机结果(macOS 26.6 / Swift 6.3.2)
cargo test -p rutis-e2e --test tcc过(本机此二进制的日历授权为“未决定”,走拒绝的那一支,未弹提示)。S2 与 M3 的验收
swift_rows.rs(feat(swift): rutis-host 的 runtimes.swift、dev、check、new --lang swift 与指南(#387) #495)。dev改代码只重启本运行时:e2edev_loop的 Swift 列(feat(swift): rutis-host 的 runtimes.swift、dev、check、new --lang swift 与指南(#387) #495)。tcc.rs,提示本身见上面的人工验收。