@zq-silk/yui 2.22.0 → 2.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +9 -4
  2. package/dist/artifacts/artifactCapability.js +6 -6
  3. package/dist/artifacts/gitArtifactRef.js +10 -10
  4. package/dist/artifacts/jobArtifact.js +5 -5
  5. package/dist/artifacts/managedGit.js +15 -12
  6. package/dist/artifacts/taskArtifactRepository.js +35 -33
  7. package/dist/cli/commandCatalog.js +2 -2
  8. package/dist/cli/updateCommand.js +20 -3
  9. package/dist/cli/updateOrchestrator.js +13 -0
  10. package/dist/cli/updatePorts.js +27 -0
  11. package/dist/cli.js +9 -2
  12. package/dist/commands/configCommands.js +64 -1
  13. package/dist/commands/projectCommands.js +9 -9
  14. package/dist/commands/taskCompletionGate.js +1 -1
  15. package/dist/commands/taskIntegrationCommands.js +1 -1
  16. package/dist/commands/taskPublicationAdoptCommand.js +1 -1
  17. package/dist/commands/taskRoleRuntimeStatus.js +4 -0
  18. package/dist/commands/taskUpstreamCommands.js +1 -1
  19. package/dist/config/configCatalog.js +3 -0
  20. package/dist/config/gitConfig.js +20 -0
  21. package/dist/config/yuiConfig.js +1 -0
  22. package/dist/context/currentSkills.js +32 -1
  23. package/dist/context/sessionBootstrapManifest.js +17 -4
  24. package/dist/context/sessionSkillNotice.js +33 -12
  25. package/dist/controlPlaneCli.js +4 -4
  26. package/dist/controller/clientRuntime.js +37 -18
  27. package/dist/controller/controller.js +16 -1
  28. package/dist/controller/fileSchedulerStoreAdapter.js +2 -0
  29. package/dist/controller/hostLifecycle.js +153 -0
  30. package/dist/controller/hostLifecycleChecks.js +27 -0
  31. package/dist/controller/hostUpgrade.js +344 -0
  32. package/dist/controller/jobArtifactControl.js +3 -3
  33. package/dist/controller/jobDefinitionControl.js +1 -1
  34. package/dist/controller/runtime.js +67 -16
  35. package/dist/controller/sessionNotify.js +5 -46
  36. package/dist/execution/codexThreadNaming.js +54 -43
  37. package/dist/executor/fileRoleLaunchPlanner.js +18 -3
  38. package/dist/integration/gitIntegrationService.js +1 -1
  39. package/dist/kernel/builtinCapabilities.js +3 -3
  40. package/dist/repository/gitCommand.js +153 -0
  41. package/dist/repository/gitCompatibility.js +3 -2
  42. package/dist/repository/gitWorkspace.js +579 -563
  43. package/dist/repository/gitWorktreeInventory.js +15 -19
  44. package/dist/repository/projectRefresh.js +1 -1
  45. package/dist/repository/taskBaseFreshness.js +1 -4
  46. package/dist/repository/taskWorkspacePreparer.js +1 -1
  47. package/dist/runtime/agentEndpoint.js +11 -1
  48. package/dist/runtime/agentEndpointIdentity.js +2 -0
  49. package/dist/runtime/agentHost.js +167 -42
  50. package/dist/runtime/agentHostImplementation.js +3 -1
  51. package/dist/runtime/codexAppServerRuntime.js +3 -0
  52. package/dist/runtime/codexInteractiveHost.js +62 -17
  53. package/dist/runtime/codexNativeAccess.js +1 -1
  54. package/dist/runtime/contextRecovery.js +15 -0
  55. package/dist/runtime/hostSessionLifecycle.js +83 -0
  56. package/dist/runtime/hostUpgradeGate.js +43 -0
  57. package/dist/runtime/lifecycleChecks.js +47 -0
  58. package/dist/runtime/lifecycleReservation.js +9 -1
  59. package/dist/runtime/nativeExecutable.js +5 -2
  60. package/dist/runtime/nativeTitleReceipt.js +31 -0
  61. package/dist/runtime/nativeTitleSync.js +192 -0
  62. package/dist/runtime/platform.js +11 -0
  63. package/dist/runtime/providerRetry.js +4 -4
  64. package/dist/runtime/structuredProviderHost.js +42 -10
  65. package/dist/storage/sqliteSchema.js +30 -0
  66. package/dist/storage/storageVersions.js +1 -1
  67. package/dist/storage/taskStore.js +7 -1
  68. package/dist/web/webConversation.js +2 -2
  69. package/dist/web/webMaterials.js +19 -19
  70. package/dist/web/webTaskSurface.js +3 -3
  71. package/dist/workspace/workItemChangeSetManager.js +3 -3
  72. package/docs/managed-turn-and-session-runtime.md +96 -1
  73. package/docs/managed-turn-and-session-runtime.zh-CN.md +70 -1
  74. package/docs/project-refresh.md +3 -2
  75. package/docs/project-refresh.zh-CN.md +2 -1
  76. package/docs/release-workflow.md +86 -2
  77. package/docs/release-workflow.zh-CN.md +65 -1
  78. package/docs/roles-and-configuration.md +34 -0
  79. package/docs/roles-and-configuration.zh-CN.md +27 -0
  80. package/docs/storage-baseline.md +14 -1
  81. package/docs/storage-baseline.zh-CN.md +7 -1
  82. package/docs/testing/verification-levels.md +7 -7
  83. package/docs/testing/verification-levels.zh-CN.md +6 -6
  84. package/i18n/README.zh-CN.md +8 -4
  85. package/package.json +1 -1
  86. package/skills/yui-runtime/SKILL.md +7 -2
  87. package/skills/yui-runtime/VERSION +1 -1
  88. package/dist/runtime/native/darwin-x64/claude-process-owner +0 -0
  89. package/dist/runtime/native/darwin-x64/process-identity +0 -0
@@ -51,6 +51,90 @@ merely to avoid a version decision. Package versions remain distinct from protoc
51
51
  and persistent-storage contracts: their compatibility checks and required migrations
52
52
  are unchanged, and the storage rules below do not authorize a package release.
53
53
 
54
+ ### 2.25.0 compatibility and migration notes
55
+
56
+ This minor release removes macOS Intel support. Supported runtimes are now
57
+ Linux x64 (glibc) and macOS Apple Silicon with native arm64 Node.js. macOS x64,
58
+ including x64 Node.js under Rosetta on Apple Silicon, is rejected before either
59
+ CLI product is loaded or the Home is opened. Intel Macs must remain on 2.23.0;
60
+ Apple Silicon users must switch to native arm64 Node.js before upgrading.
61
+ The combined npm manifest cannot express OS/CPU pairs, so npm installation can
62
+ still succeed on an unsupported combination. Runtime startup fails explicitly;
63
+ no install scripts, fallback helpers or first-use downloads are added.
64
+ The existing updater's staged-target preflight also rejects that runtime before
65
+ Controller shutdown, global binary activation or storage migration.
66
+
67
+ Native builds, package contents, Core CI and release smoke now cover only those
68
+ two platforms. Every supported Node 20/22/24/26 install remains gated (8 rows),
69
+ with process lifecycle coverage on Node 24 for each platform. The `v2.24.0`
70
+ tag is retained as unpublished evidence: required Intel smoke jobs did not
71
+ acquire hosted runners, and neither npm nor GitHub Release was published.
72
+ 2.25.0 includes its complete configurable Git budget/error-handling changes
73
+ described below.
74
+
75
+ Storage remains **1.29**; the platform removal adds no migration. Updating from
76
+ 2.23.0 still applies the declared **1.28 → 1.29** Git configuration migration.
77
+ Back up the Home and use the normal upgrade/migration path; do not open a
78
+ migrated Home with an older binary. Controller/Host protocols remain v1.
79
+ Publication does not update the global CLI, migrate production data or restart
80
+ shared services. Deterministic package/OS checks do not establish real-model
81
+ or real remote-server behavior.
82
+
83
+ ### 2.24.0 unpublished tag: Git budgets and migration
84
+
85
+ Git workspace and artifact operations now use a configurable local total
86
+ budget, independent of clone, remote fetch and network `ls-remote`. Configure
87
+ `git-local-timeout-seconds` (default 30),
88
+ `git-remote-inactivity-timeout-seconds` (default 120), and
89
+ `git-remote-timeout-seconds` (default 1800) under `yui config tools` or Web
90
+ settings. Each accepts integer seconds from 1 to 86400. Changes apply to the
91
+ next command, including Controller-owned commands; in-flight budgets do not
92
+ change. See [Git operation budgets](roles-and-configuration.md#git-operation-budgets).
93
+
94
+ Clone/fetch request progress without a terminal. Output resets only the
95
+ inactivity clock, never the total deadline; activity is not semantic progress
96
+ proof. Remote stderr keeps a bounded tail. Timeout errors retain their kind
97
+ and budget, elapsed time, exit code, signal and stderr instead of reporting
98
+ only the last progress line. Deadline termination includes the invocation's
99
+ owned transport helpers; no automatic Git retry or rollback is introduced.
100
+
101
+ Storage advances **1.28 → 1.29** through the centralized additive migration
102
+ for the three optional settings. Existing config bytes remain unchanged and
103
+ missing values use runtime defaults. Back up the Home and use the normal
104
+ upgrade/migration path; do not open a migrated Home with an older binary.
105
+ Controller/Host protocols remain v1. Exact-merge Core CI and the same runtime
106
+ archive's fresh-install matrix gate publication. These deterministic checks
107
+ do not establish real remote-server or real-model behavior. Publication does
108
+ not update the global CLI, migrate production data or restart shared services.
109
+
110
+ ### 2.23.0 compatibility and migration notes
111
+
112
+ Host upgrades use explicit lifecycle signals and safe drain/reattachment
113
+ boundaries without replaying business input or replacing native identity.
114
+ Routine Skill checks remain inside the Host; unchanged Turns carry no Skill
115
+ notice. Cold attachment, explicit context loss/compaction and changed Skills
116
+ provide only the current loading pointers.
117
+
118
+ Codex keeps original user input separate from application context on start and
119
+ steer. Failed-Turn recovery does not duplicate the original input or imply lost
120
+ Skill context. This requires the native `additionalContext` contract verified
121
+ against Codex CLI 0.159.2; older native implementations are not covered and there
122
+ is no fallback that reinserts metadata into user input.
123
+
124
+ Native titles reuse the Role/Task/Draft/instance format through an independent,
125
+ bounded metadata process, never blocking Startup, Goal or Turn. Exact identity,
126
+ persisted intent and native readback distinguish confirmed naming from unknown
127
+ effects. Observed manual names are preserved; unknown writes are not replayed.
128
+ Historical polluted names without ownership evidence are diagnosed, not renamed.
129
+ The native naming API has no compare-and-swap, so a final concurrent external
130
+ rename cannot be protected atomically.
131
+
132
+ Storage advances to **1.28**, preserving **1.26 → 1.27** Host-upgrade signals and
133
+ adding **1.27 → 1.28** native-title receipts without rewriting history. Back up
134
+ the Home and use the normal upgrade/migration path; do not open a migrated Home
135
+ with an older binary. Controller/Host protocols remain v1. Publishing does not
136
+ update the global CLI, migrate production data or restart shared services.
137
+
54
138
  ### 2.22.0 compatibility and migration notes
55
139
 
56
140
  Context reads now support bounded discovery, precise batched original retrieval,
@@ -738,7 +822,7 @@ protection and valid exact-identity caches remain normal runtime behavior.
738
822
 
739
823
  Stable releases use npm `latest`; prereleases use `next`, never the stable
740
824
  default. The release workflow builds one runtime archive, verifies it across
741
- supported Node versions on Linux x64, macOS x64 and macOS arm64, publishes that exact archive to npm, then creates the
825
+ supported Node versions on Linux x64 and macOS arm64, publishes that exact archive to npm, then creates the
742
826
  matching GitHub Release. Every release carries the runtime archive, checksum and
743
827
  provenance. A stable tag becomes GitHub latest; a prerelease does not.
744
828
 
@@ -1063,7 +1147,7 @@ It reuses the exact commit that passed core CI and adds only artifact assembly,
1063
1147
  fresh installation, and provenance checks required to publish.
1064
1148
 
1065
1149
  Business contracts and full Jobs/Schedules wiring run once in Core CI on Linux
1066
- Node 24. Release still installs the same checksummed archive on all three
1150
+ Node 24. Release still installs the same checksummed archive on both supported
1067
1151
  platforms × Node 20/22/24/26: every install checks CLI/setup/native helpers,
1068
1152
  Doctor/PTY and real SQLite SQL/GC. Node 24 additionally checks real process
1069
1153
  lifecycle on each platform. See the [coverage table](testing/verification-levels.md#ci-and-release).
@@ -36,6 +36,70 @@ Agent 选择一个预先声明的计划,设施从持久状态驱动该计划
36
36
  不能将不兼容冒称为兼容,也不为回避版本选择新增历史兼容机制。包版本与协议、
37
37
  持久存储契约仍然独立:兼容性检查和必要迁移要求不变,下文存储规则不授予发版权限。
38
38
 
39
+ ### 2.25.0 兼容性及迁移说明
40
+
41
+ 本次 minor 版本移除 macOS Intel 支持。仅支持 Linux x64(glibc)和使用原生
42
+ arm64 Node.js 的 macOS Apple Silicon。macOS x64(包括 Apple Silicon 上通过
43
+ Rosetta 运行的 x64 Node.js)会在加载任一 CLI 产品或打开 Home 前明确拒绝。
44
+ Intel Mac 用户须停留在 2.23.0;Apple Silicon 用户须先切换到原生 arm64 Node.js。
45
+ 合并 npm 包的 OS/CPU 字段不能表达平台配对,因此不支持的组合仍可能安装成功,
46
+ 但启动时会明确失败;不新增安装脚本、备用 helper 或首次使用下载。
47
+ 既有 updater 的目标包预检也会在停止 Controller、替换全局二进制或迁移存储前拒绝。
48
+
49
+ 原生构建、包内容、Core CI 和发布冒烟同步收敛到上述两个平台。
50
+ 保留全部受支持 Node 20/22/24/26 的全新安装门禁(8 组),各平台 Node 24
51
+ 仍验证真实进程生命周期。保留 `v2.24.0` tag 作为未发布证据:
52
+ 必需的 Intel 冒烟作业未能获得 hosted runner,npm 和 GitHub Release 均未发布。
53
+ 2.25.0 包含下文完整的 Git 预算配置及错误保真变更。
54
+
55
+ 存储仍为 **1.29**,移除平台本身不新增迁移;从 2.23.0 升级仍执行已声明的
56
+ Git 配置 **1.28 → 1.29** 迁移。升级前备份 Home,使用正常升级/迁移路径,
57
+ 不要用旧二进制打开已迁移的 Home。Controller/Host 协议仍为 v1。
58
+ 发布本身不更新全局 CLI、不迁移生产数据,也不重启共享服务。
59
+ 确定性安装包及 OS 检查不证明真实模型或真实远端服务器行为。
60
+
61
+ ### 2.24.0 未发布 tag:Git 预算及迁移
62
+
63
+ Git 工作区和产物操作使用可配置的本地总耗时预算,与 clone、远程 fetch 和需要连接
64
+ 远端的 `ls-remote` 分离。在 `yui config tools` 或 Web 设置中配置
65
+ `git-local-timeout-seconds`(默认 30)、
66
+ `git-remote-inactivity-timeout-seconds`(默认 120)及
67
+ `git-remote-timeout-seconds`(默认 1800);三项均接受 1–86400 的整数秒。
68
+ 保存后下一条命令生效,包含 Controller 发起的命令,已启动命令保持原预算。
69
+ 参见 [Git 操作预算](roles-and-configuration.zh-CN.md#git-操作预算)。
70
+
71
+ clone/fetch 无终端时也请求进度。输出只重置无进展计时,不延长总耗时上限;
72
+ 有输出不等于传输实际推进。远程 stderr 保留有界尾部。错误保留超时类型和预算、
73
+ 实际耗时、退出码、信号及 stderr,不再只显示最后一行进度。预算耗尽时终止本次调用
74
+ 自己的传输 helper;不引入自动 Git 重试或回滚。
75
+
76
+ 存储通过集中式增量迁移从 **1.28 → 1.29**,声明三项可选配置。
77
+ 既有配置逐字节保留,缺失字段采用运行时默认值。升级前备份 Home,使用正常升级/迁移
78
+ 路径,不要用旧二进制打开已迁移的 Home。Controller/Host 协议仍为 v1。
79
+ 发布前要求确切合并提交的 Core CI 及同一 runtime 包的全新安装矩阵通过;
80
+ 确定性检查不证明真实远端服务器或真实模型行为。发布本身不更新全局 CLI、
81
+ 不迁移生产数据,也不重启共享服务。
82
+
83
+ ### 2.23.0 兼容性及迁移说明
84
+
85
+ Host 升级使用明确的生命周期信号及安全排空/重新挂接边界,不重放业务输入、
86
+ 不替换原生会话身份。常规 Skill 检查保留在 Host 内,未变化的 Turn 不携带
87
+ Skill 提示;仅首次挂接、明确上下文丢失/压缩及 Skill 变化提供当前加载指针。
88
+
89
+ Codex 的 start/steer 将用户原文与应用上下文分离。失败 Turn 恢复不复制原文,
90
+ 也不视为 Skill 上下文丢失。此路径要求原生 `additionalContext` 契约,已核对
91
+ Codex CLI 0.159.2;旧原生实现不在验证范围内,不提供把元信息塞回用户输入的回退。
92
+
93
+ 原生标题复用 Role/Task/Draft/实例格式,通过独立、有界的元数据进程同步,
94
+ 不阻塞 Startup、Goal 或 Turn。精确身份、持久化意图和原生读回区分成功与未知效果。
95
+ 保留已观测到的手动命名,未知写入不重放;缺乏归属证据的历史污染标题只诊断、不改名。
96
+ 原生命名 API 没有 compare-and-swap,无法原子保护最后读写窗口内的外部并发改名。
97
+
98
+ 存储升级至 **1.28**:保留 **1.26 → 1.27** Host 升级信号迁移,追加
99
+ **1.27 → 1.28** 原生标题回执,不改写历史。升级前备份 Home,使用正常升级/迁移
100
+ 路径,不要用旧二进制打开已迁移的 Home。Controller/Host 协议仍为 v1。
101
+ 发布本身不更新全局 CLI、不迁移生产数据,也不重启共享服务。
102
+
39
103
  ### 2.22.0 兼容性及迁移说明
40
104
 
41
105
  上下文读取增加有界发现、精确批量原文读取、正文传输回执及聚焦通知。
@@ -801,7 +865,7 @@ yui task grant revoke task-15 capability-grant-1
801
865
  确切 commit,只增加发布所需的产物装配、全新安装和 provenance 检查。
802
866
 
803
867
  业务契约与完整 Jobs/Schedules 链路仅在 Core CI 的 Linux Node 24 执行一次。
804
- 发布仍在三平台 × Node 20/22/24/26 全部安装同一个已校验 tarball:每组都验证
868
+ 发布仍在两个受支持平台 × Node 20/22/24/26 全部安装同一个已校验 tarball:每组都验证
805
869
  CLI/setup/原生 helper、Doctor/PTY 和真实 SQLite SQL/GC;各平台 Node 24 额外验证
806
870
  真实进程生命周期。参见[分层覆盖表](testing/verification-levels.zh-CN.md#ci-与发布)。
807
871
  依赖安装不再隐含构建,每个源码作业只构建一次,再验证原生依赖;smoke 输出分段耗时。
@@ -18,6 +18,40 @@ requiring a same-named global Role. A global Role is a creation template only
18
18
  when the requested Task Role does not exist. Availability, producer separation
19
19
  and the frozen review candidate still apply.
20
20
 
21
+ ## Git operation budgets
22
+
23
+ All three Git timeout budgets have durable settings. Local commands (including
24
+ local ref copies and artifact repositories) have a total limit; clone, remote
25
+ fetch and network `ls-remote` have independent inactivity and total limits:
26
+
27
+ ```sh
28
+ yui config tools show
29
+ yui config tools set git-local-timeout-seconds 30
30
+ yui config tools set git-remote-inactivity-timeout-seconds 120
31
+ yui config tools set git-remote-timeout-seconds 1800
32
+ yui config tools clear git-local-timeout-seconds
33
+ yui config tools clear git-remote-inactivity-timeout-seconds
34
+ yui config tools clear git-remote-timeout-seconds
35
+ ```
36
+
37
+ All three accept integer seconds from 1 to 86400. Defaults are 30 seconds total
38
+ per local command, 120 seconds without stdout/stderr output and 1800 seconds
39
+ total per remote command.
40
+ They apply to the next command, including Controller-owned Project refresh
41
+ and Task preparation, without a restart; an in-flight command keeps its budgets.
42
+ Clone/fetch explicitly request progress even without a terminal. Each output
43
+ chunk resets only the silence timer, not the total deadline. Output is evidence
44
+ of activity, not proof that a transfer is advancing; the total limit still wins.
45
+ Remote stderr retains its last 64 KiB so progress cannot exhaust the output
46
+ buffer; stdout and local command output retain their existing buffer limits.
47
+
48
+ At either hard deadline Yui kills that invocation's process group, including
49
+ transport helpers, and waits for process/pipe closure. Errors preserve the
50
+ timeout kind/budget, elapsed time, exit code, signal and stderr where available.
51
+ No Git operation is automatically retried, and a failure is not rollback proof.
52
+ Storage 1.28 → 1.29 admits these optional configuration fields without
53
+ rewriting historical configuration or persisting default values.
54
+
21
55
  ## Optional instance codes and Session titles
22
56
 
23
57
  Each Role can independently set a display-only instance code. For example,
@@ -15,6 +15,33 @@ Task Role 是 Task 局部的;global Role 提供已配置的默认值和全局
15
15
  的 global Role。只有当请求的 Task Role 不存在时,global Role 才作为创建模板。
16
16
  可用性、producer 分离和冻结的审查候选仍然适用。
17
17
 
18
+ ## Git 操作预算
19
+
20
+ 三项 Git 超时均有正式配置。本地命令(包括本地 ref 复制和产物仓库)使用总耗时上限;
21
+ clone、远程 fetch 和需要连接远端的 `ls-remote` 使用独立的无进展超时与总耗时上限:
22
+
23
+ ```sh
24
+ yui config tools show
25
+ yui config tools set git-local-timeout-seconds 30
26
+ yui config tools set git-remote-inactivity-timeout-seconds 120
27
+ yui config tools set git-remote-timeout-seconds 1800
28
+ yui config tools clear git-local-timeout-seconds
29
+ yui config tools clear git-remote-inactivity-timeout-seconds
30
+ yui config tools clear git-remote-timeout-seconds
31
+ ```
32
+
33
+ 三项都接受 1–86400 的整数秒,默认分别为单条本地命令总耗时 30 秒、
34
+ 无 stdout/stderr 输出 120 秒、单条远程命令总耗时 1800 秒。
35
+ 保存后下一条命令生效,包括 Controller 的 Project refresh 和 Task
36
+ 准备;无需重启,已启动命令保持原预算。clone/fetch 即使没有终端也显式请求进度输出。
37
+ 每次输出只重置静默计时,不延长总上限;输出仅证明活动,不证明传输在推进。
38
+ 远程 stderr 只保留末尾 64 KiB,避免长时间进度输出耗尽缓冲;stdout 和本地命令输出
39
+ 保留原缓冲上限。
40
+
41
+ 任一预算耗尽时终止该次调用自己的进程组(含传输 helper),等待进程与管道关闭。
42
+ 错误保留超时类型和预算、实际耗时、可用的退出码、信号及 stderr;不会自动重试,
43
+ 失败也不等于已回滚。存储 1.28 → 1.29 声明三项可选配置,不重写旧配置或持久化默认值。
44
+
18
45
  ## 可选实例码与会话标题
19
46
 
20
47
  每个 Role 独立配置仅用于展示的实例码。例如只设置 Operator,其他角色留空:
@@ -2,7 +2,20 @@
2
2
 
3
3
  # Storage baseline 1.0
4
4
 
5
- Current storage is 1.26. The 1.25 → 1.26 transition admits optional Codex
5
+ Current storage is 1.29. The 1.28 → 1.29 transition admits optional local Git
6
+ total and remote Git inactivity/total timeout settings. Existing configuration payloads remain
7
+ byte-for-byte unchanged; absent fields use runtime defaults.
8
+
9
+ The 1.27 → 1.28 transition admits exact-identity native
10
+ title effect receipts under `runtime/native-titles`. It does not infer historical
11
+ title ownership, rename conversations, or change existing database payloads.
12
+ Unconfirmed naming intents remain non-replayable across Host replacement.
13
+
14
+ The 1.26 → 1.27 transition admits versioned Host-upgrade
15
+ signals in the existing role-runtime mailbox. It adds no table, infers no past
16
+ upgrade request, and preserves existing payloads. Drain receipts precede Host
17
+ exit; a Controller restart resumes the exact request, not business input.
18
+ The 1.25 → 1.26 transition admits optional Codex
6
19
  workspace-write temporary-directory exclusions without changing historical
7
20
  permission payloads. The published 1.24 → 1.25 transition remains unchanged
8
21
  and admits optional Role
@@ -2,7 +2,13 @@
2
2
 
3
3
  # 存储基线 1.0
4
4
 
5
- 当前存储为 1.26。1.25 → 1.26 增加 Codex workspace-write 可选临时目录排除字段,不改写历史权限 payload。已发布的 1.24 → 1.25 定义保持不变:增加可选 Role `instanceCode` 和 Session `generatedTitle` 展示字段,不回填历史标题来源或实例码,不改写既有记录。1.23 → 1.24 为调度器的九类来源表增加事务维护的 Task 读取缓存修订号。插入、更新和删除只使对应 Task 的缓存失效,回滚同时回滚修订号。该值仅是派生缓存标识,不是 Task 权限或 Home revision CAS 的替代。历史 payload 不变,旧 Task 在首次修改前使用隐含的零修订号。
5
+ 当前存储为 1.29。1.28 → 1.29 声明本地 Git 总耗时、远程 Git 无进展超时和总耗时上限三项可选配置;既有配置 payload 逐字节保留,缺失字段使用运行时默认值。
6
+
7
+ 1.27 → 1.28 声明 `runtime/native-titles` 下绑定精确会话身份的原生标题意图与回执;迁移不认领历史标题、不改名、不改写既有数据库 payload。未确认改名意图在 Host 替换后也不得重放。
8
+
9
+ 1.26 → 1.27 允许现有 role-runtime mailbox 保存版本化 Host 升级信号,不新增表、不推断历史升级请求、不改写既有 payload。排空回执先于 Host 退出持久化;Controller 重启继续精确升级请求,不重放业务输入。
10
+
11
+ 1.25 → 1.26 增加 Codex workspace-write 可选临时目录排除字段,不改写历史权限 payload。已发布的 1.24 → 1.25 定义保持不变:增加可选 Role `instanceCode` 和 Session `generatedTitle` 展示字段,不回填历史标题来源或实例码,不改写既有记录。1.23 → 1.24 为调度器的九类来源表增加事务维护的 Task 读取缓存修订号。插入、更新和删除只使对应 Task 的缓存失效,回滚同时回滚修订号。该值仅是派生缓存标识,不是 Task 权限或 Home revision CAS 的替代。历史 payload 不变,旧 Task 在首次修改前使用隐含的零修订号。
6
12
  同时增加两个局部索引,支持按精确运行观测身份查找,不再扫描或反序列化历史观测集合。
7
13
 
8
14
  1.22 → 1.23 新增全局 Shell Job、版本化脚本文件及每次运行的配置快照,不改写已有 Job、计划和历史记录。
@@ -53,12 +53,12 @@ is required.
53
53
  Both include `test/core` and `test/platform`. For an already built checkout,
54
54
  `npm run test:business` runs only `test/core` and `npm run test:platform` runs
55
55
  only `test/platform`; neither rebuilds. CI owns one explicit build per job.
56
- The stable suite owns current storage 1.26 and its declared 1.0 through 1.25 minor
56
+ The stable suite owns current storage 1.29 and its declared 1.0 through 1.28 minor
57
57
  transition. It contains no undeclared historical format compatibility path.
58
58
 
59
59
  Current coverage includes:
60
60
 
61
- 1. Fresh storage 1.26, exact schema/record validation, no initialization over
61
+ 1. Fresh storage 1.29, exact schema/record validation, no initialization over
62
62
  unknown data, and rejection of old integer formats without mutation.
63
63
  2. Exact-version staging, mismatched-target refusal, same-major contiguous
64
64
  minor preflight, explicit maintenance-owner identity across handover, and
@@ -160,17 +160,17 @@ adjudication aggregation are deterministic; they do not run or measure a model.
160
160
 
161
161
  `ci.yml` runs on PRs and master. Business contracts and full package business
162
162
  wiring run once on Linux x64/Node 24. Platform tests run on Linux Node 24/26
163
- and Mac Intel/Apple Silicon Node 24. Every job builds exactly once, without
163
+ and macOS Apple Silicon Node 24. Every job builds exactly once, without
164
164
  another lint or implicit pretest build. Keep the existing job names for branch
165
165
  checks; the complete workflow must pass for the exact master commit.
166
166
 
167
167
  | Evidence | PR/master | Exact release tarball |
168
168
  | --- | --- | --- |
169
169
  | Business/state/authority contracts (`test/core`) | Linux 24 once | Reuse exact-SHA successful Core CI |
170
- | OS/helper/PTY/Git/SQLite boundaries (`test/platform`) | Linux 24/26, both Macs 24 | Real SQLite SQL/GC on all 12 installs; other installed boundaries below |
170
+ | OS/helper/PTY/Git/SQLite boundaries (`test/platform`) | Linux 24/26, Apple Silicon Mac 24 | Real SQLite SQL/GC on all 8 installs; other installed boundaries below |
171
171
  | `full` smoke: business Jobs/Schedules + lifecycle + compatibility | Linux 24 once | Reuse exact-SHA business evidence |
172
- | `lifecycle` smoke: restart, Session/Host handoff, archive + compatibility | Both Macs 24 (Linux included in full) | Node 24 on each of the 3 platforms |
173
- | `compatibility` smoke: setup, CLI/bin, helpers, Doctor/PTY/SQLite | Linux 26 (included in other profiles) | All 3 platforms × Node 20/22/24/26 (included in lifecycle on 24) |
172
+ | `lifecycle` smoke: restart, Session/Host handoff, archive + compatibility | Apple Silicon Mac 24 (Linux included in full) | Node 24 on each of the 2 platforms |
173
+ | `compatibility` smoke: setup, CLI/bin, helpers, Doctor/PTY/SQLite | Linux 26 (included in other profiles) | Both platforms × Node 20/22/24/26 (included in lifecycle on 24) |
174
174
 
175
175
  `node scripts/smoke-runtime-package.mjs --assembled .release-stage` exercises
176
176
  the actual CLI/Controller/Host/SQLite and isolated tmux, replacing only the
@@ -224,7 +224,7 @@ It starts empty on each smoke invocation and is removed with the fixture.
224
224
  No cache is restored across jobs, packages or Node versions, and no production
225
225
  default changes. Keep it out of V8 coverage runs, where it can reduce precision.
226
226
 
227
- `publish.yml` builds one archive containing all three native targets and runs
227
+ `publish.yml` builds one archive containing both supported native targets and runs
228
228
  the profiles above against that exact freshly installed package through
229
229
  `YUI_INSTALLED_ROOT`, adding actual npm-bin, dependency, supported Node version,
230
230
  artifact and provenance boundaries. This validates runtime integration, not
@@ -39,12 +39,12 @@ Yui 是一个单用户本地产品。永久验证保护关键的 happy path 和
39
39
  两者均包含 `test/core` 和 `test/platform`。已构建的 checkout 可分别运行
40
40
  `npm run test:business` 与 `npm run test:platform`,它们不会再次构建。
41
41
  CI 每个作业只显式构建一次。
42
- 稳定套件维护当前存储 1.26 和明确声明的 1.0 至 1.25 连续小版本迁移,
42
+ 稳定套件维护当前存储 1.29 和明确声明的 1.0 至 1.28 连续小版本迁移,
43
43
  不包含未声明的历史格式兼容路径。
44
44
 
45
45
  当前覆盖包括:
46
46
 
47
- 1. 新建存储 1.26、精确结构与记录校验、禁止覆盖未知数据库、无修改拒绝旧整数格式。
47
+ 1. 新建存储 1.29、精确结构与记录校验、禁止覆盖未知数据库、无修改拒绝旧整数格式。
48
48
  2. 精确版本暂存、目标不匹配拒绝、同主版本连续小版本预检、交接锁显式所有者,
49
49
  以及恢复时核对捕获的协议和存储身份,不接受缺失字段。
50
50
  3. 持久 Task/Message/Decision 上下文、Draft 激活权威、mailbox 认领、
@@ -101,17 +101,17 @@ package-start 检查跟随已安装树中的本地 Skill 引用,包括跨 Role
101
101
  ## CI 与发布
102
102
 
103
103
  `ci.yml` 在 PR 和 master 上执行。业务契约与完整业务链路仅在 Linux x64/Node 24
104
- 运行一次;平台测试在 Linux Node 24/26、Intel/Apple Silicon Mac Node 24 上运行。
104
+ 运行一次;平台测试在 Linux Node 24/26、Apple Silicon Mac Node 24 上运行。
105
105
  每个作业只构建一次,不重复 lint 或隐含 pretest 构建。保留现有作业名称;发布仍要求
106
106
  精确 master SHA 的整个 Core CI 成功,不复用另一源码的结果。
107
107
 
108
108
  | 证据 | PR/master | 精确发布 tarball |
109
109
  | --- | --- | --- |
110
110
  | 业务、状态、授权契约(`test/core`) | Linux 24 一次 | 复用精确 SHA 的成功 Core CI |
111
- | OS/helper/PTY/Git/SQLite(`test/platform`) | Linux 24/26、双 Mac 24 | 12 组真实 SQL/GC;其余安装边界见下 |
111
+ | OS/helper/PTY/Git/SQLite(`test/platform`) | Linux 24/26、Apple Silicon Mac 24 | 8 组真实 SQL/GC;其余安装边界见下 |
112
112
  | `full`:Jobs/Schedules 业务链路 + lifecycle + compatibility | Linux 24 一次 | 复用精确 SHA 业务证据 |
113
- | `lifecycle`:重启、Session/Host 交接、归档 + compatibility | 双 Mac 24,Linux 已在 full 内 | 三平台 Node 24 |
114
- | `compatibility`:setup、CLI/bin、helper、Doctor/PTY/SQLite | Linux 26,其余已包含 | 三平台 × Node 20/22/24/26,24 已包含在 lifecycle 内 |
113
+ | `lifecycle`:重启、Session/Host 交接、归档 + compatibility | Apple Silicon Mac 24,Linux 已在 full 内 | 两平台 Node 24 |
114
+ | `compatibility`:setup、CLI/bin、helper、Doctor/PTY/SQLite | Linux 26,其余已包含 | 两平台 × Node 20/22/24/26,24 已包含在 lifecycle 内 |
115
115
 
116
116
  `node scripts/smoke-runtime-package.mjs --assembled .release-stage` 经过真实
117
117
  CLI/Controller/Host/SQLite 与隔离 tmux,仅用确定性夹具替换外部 Provider。它验证
@@ -5,7 +5,7 @@
5
5
  [![Core CI](https://github.com/zhangqian-silk/yui/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/zhangqian-silk/yui/actions/workflows/ci.yml)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](../LICENSE)
7
7
  ![Node](https://img.shields.io/badge/node-20%20%7C%2022%20%7C%2024-brightgreen.svg)
8
- ![Platform](https://img.shields.io/badge/platform-Linux%20x64%20%28glibc%29%20%7C%20macOS%20x64%2Farm64-blue.svg)
8
+ ![Platform](https://img.shields.io/badge/platform-Linux%20x64%20%28glibc%29%20%7C%20macOS%20arm64-blue.svg)
9
9
  [![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](#参与开发)
10
10
 
11
11
  让 Agent 持续推进你的任务,而不只是回答一轮对话。
@@ -37,10 +37,14 @@ Yui 是面向编程 Agent 的本地控制面。你只需用自然语言把目标
37
37
 
38
38
  ## 快速开始
39
39
 
40
- npm 包包含 Linux x64、Mac Intel 和 Apple Silicon 的 Yui 预编译程序。
41
- 同一份包在三个平台验证后发布,运行时只选择对应平台的程序。
40
+ npm 包包含 Linux x64 和 macOS Apple Silicon 的 Yui 预编译程序。
41
+ 同一份包在两个平台验证后发布,运行时只选择对应平台的程序。
42
+ 从 2.25.0 开始不再支持 macOS Intel,也不支持通过 Rosetta 运行的 x64 Node.js。
43
+ Intel Mac 用户须停留在 2.23.0;Apple Silicon 用户须使用原生 arm64 Node.js。
44
+ npm 的 OS/CPU 字段不能表达这种平台配对,因此不支持的组合仍可能安装成功,
45
+ 但 Yui 会在加载任一 CLI 产品或打开 Home 前明确拒绝,不新增安装脚本。
42
46
 
43
- 需要 Linux x64 / glibc 或 macOS(x64 或 Apple Silicon)、Git 2.29.0 或更新版本、tmux,以及
47
+ 需要 Linux x64 / glibc 或 macOS Apple Silicon(使用原生 arm64 Node.js)、Git 2.29.0 或更新版本、tmux,以及
44
48
  Node.js `^20.17.0`、`^22.9.0`、`^24.0.0` 或 `^26.0.0`。macOS 上可用
45
49
  `brew install tmux` 安装 tmux。最简单的方式是先安装 Codex CLI 或 Claude
46
50
  Code CLI,并确保它已经可以使用你自己的账号正常工作。Yui 负责协调 Agent,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zq-silk/yui",
3
- "version": "2.22.0",
3
+ "version": "2.25.0",
4
4
  "description": "Local control plane for long-running native agent CLI sessions backed by tmux.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -13,9 +13,14 @@ Resolve links relative to their containing file.
13
13
  ## Keep the current working set
14
14
 
15
15
  The managed Host mechanically checks current Skill VERSION/readability for each
16
- input. Use its short check result/current pointers; do not duplicate that check.
17
- Without a Host check, run the Manifest's `contextProtocol.skillCheckCommand`
16
+ input. It injects guidance only when loading is needed; unchanged inputs carry
17
+ no notice or marker. Do not duplicate the Host's check merely because no notice
18
+ appears. For unmediated clients or uncertain current input routing, run the
19
+ Manifest's `contextProtocol.skillCheckCommand`
18
20
  (older Manifests: `yui session skills --json`) through the intended CLI/Home.
21
+ Conversation reuse alone does not establish Host mediation. Keep routine
22
+ role/Skill checks and empty-inbox observations internal; only report business
23
+ progress or actionable failures.
19
24
  Global `loadCommand` includes the check. Recheck after repair/relevant change.
20
25
 
21
26
  A check is metadata, not bodies, remembered instructions, a loading receipt or
@@ -1 +1 @@
1
- 44
1
+ 46