@zq-silk/yui 2.6.0 → 2.8.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 (126) hide show
  1. package/README.md +23 -0
  2. package/dist/cli/commandCatalog.js +34 -7
  3. package/dist/cli/updateCommand.js +3 -0
  4. package/dist/commands/configCommands.js +1 -0
  5. package/dist/commands/globalRoleCommands.js +62 -35
  6. package/dist/commands/inboxCommands.js +372 -0
  7. package/dist/commands/roleSkillValidation.js +2 -0
  8. package/dist/commands/taskCommands.js +39 -7
  9. package/dist/commands/taskRoleRuntimeStatus.js +2 -0
  10. package/dist/context/currentSkills.js +48 -0
  11. package/dist/context/roleSessionContext.js +13 -16
  12. package/dist/context/runContextPack.js +50 -3
  13. package/dist/context/runInputContract.js +1 -1
  14. package/dist/context/sessionBootstrapManifest.js +27 -4
  15. package/dist/context/skillCatalog.js +2 -3
  16. package/dist/context/taskContext.js +38 -12
  17. package/dist/controlPlaneCli.js +58 -7
  18. package/dist/controller/controller.js +8 -2
  19. package/dist/controller/fileSchedulerStoreAdapter.js +26 -6
  20. package/dist/controller/globalInputDelivery.js +86 -16
  21. package/dist/controller/globalRuntimeAttention.js +136 -6
  22. package/dist/controller/operatorNotification.js +6 -1
  23. package/dist/controller/providerRetryDelivery.js +3 -5
  24. package/dist/controller/runtime.js +6 -2
  25. package/dist/controller/structuredProviderObservation.js +51 -15
  26. package/dist/controller/taskHostTerminalRecovery.js +33 -0
  27. package/dist/doctor/doctor.js +25 -2
  28. package/dist/executor/effectiveLaunch.js +2 -2
  29. package/dist/executor/fileRoleLaunchPlanner.js +8 -15
  30. package/dist/interaction/notificationPresentation.js +2 -2
  31. package/dist/interaction/operatorPresentation.js +1 -1
  32. package/dist/message/globalInputBacklog.js +69 -0
  33. package/dist/message/globalMessageQuery.js +1 -0
  34. package/dist/message/inboxReceipt.js +62 -0
  35. package/dist/message/message.js +6 -1
  36. package/dist/message/messageContinuation.js +34 -13
  37. package/dist/message/taskInboxOwnership.js +43 -0
  38. package/dist/models/modelManagement.js +469 -0
  39. package/dist/models/modelManagementConfig.js +46 -0
  40. package/dist/models/modelManagementFiles.js +90 -0
  41. package/dist/models/modelManagementHttp.js +90 -0
  42. package/dist/models/modelManagementTypes.js +1 -0
  43. package/dist/nativeAgent/session/backends.js +1 -1
  44. package/dist/observability/runtimeIdentity.js +1 -1
  45. package/dist/output/boundedRead.js +43 -14
  46. package/dist/resources/sqliteResourceRegistry.js +1 -1
  47. package/dist/runtime/agentEndpointIdentity.js +8 -4
  48. package/dist/runtime/agentEndpointOwnership.js +5 -6
  49. package/dist/runtime/agentHost.js +165 -24
  50. package/dist/runtime/agentHostImplementation.js +18 -0
  51. package/dist/runtime/managedCaller.js +25 -1
  52. package/dist/runtime/managedIdentity.js +1 -1
  53. package/dist/runtime/providerRetry.js +19 -1
  54. package/dist/runtime/sessionCaller.js +53 -0
  55. package/dist/scheduler/operatorEvent.js +49 -0
  56. package/dist/scheduler/operatorInputNotificationProcessor.js +5 -4
  57. package/dist/scheduler/taskWake.js +5 -0
  58. package/dist/sqlite/driver.js +108 -0
  59. package/dist/storage/contextRecords.js +28 -0
  60. package/dist/storage/sqliteSchema.js +21 -1
  61. package/dist/storage/sqliteStore.js +64 -1
  62. package/dist/storage/storageSchema.js +1 -1
  63. package/dist/storage/storageVersions.js +1 -1
  64. package/dist/storage/storeRpc.js +1 -0
  65. package/dist/storage/taskStore.js +4 -0
  66. package/dist/storage/upgrade/upgradeOrchestrator.js +1 -1
  67. package/dist/task/completionReadiness.js +13 -6
  68. package/dist/telemetry/sqliteTelemetryStore.js +1 -1
  69. package/dist/web/assets/assetManifest.js +28 -2
  70. package/dist/web/assets/client/app/manage.js +6 -0
  71. package/dist/web/assets/client/app/models.js +20 -0
  72. package/dist/web/assets/client/app/settings.js +41 -9
  73. package/dist/web/assets/client/i18n/en.js +180 -2
  74. package/dist/web/assets/client/i18n/zh-CN.js +178 -2
  75. package/dist/web/assets/client/index.js +8 -0
  76. package/dist/web/assets/client/layout/manageShell.js +94 -0
  77. package/dist/web/assets/client/lib/api.js +13 -1
  78. package/dist/web/assets/client/lib/i18n.js +5 -3
  79. package/dist/web/assets/client/views/dock/conversation.js +231 -80
  80. package/dist/web/assets/client/views/models.js +777 -0
  81. package/dist/web/assets/client/views/skills.js +22 -15
  82. package/dist/web/assets/shared/icons.js +2 -0
  83. package/dist/web/assets/shared/manageNav.js +13 -0
  84. package/dist/web/assets/shell/manage.js +54 -0
  85. package/dist/web/assets/shell/models.js +7 -0
  86. package/dist/web/assets/shell/settings.js +1 -35
  87. package/dist/web/assets/shell/settingsContent.js +30 -0
  88. package/dist/web/assets/shell/sidebar.js +1 -0
  89. package/dist/web/assets/styles/index.js +6 -0
  90. package/dist/web/assets/styles/views/conversation.js +133 -0
  91. package/dist/web/assets/styles/views/manage.js +71 -0
  92. package/dist/web/assets/styles/views/models.js +129 -0
  93. package/dist/web/assets/styles/views/settings.js +28 -14
  94. package/dist/web/assets/styles/views/sidebar.js +1 -0
  95. package/dist/web/webServer.js +59 -9
  96. package/docs/cli-information-contract.md +42 -11
  97. package/docs/cli-information-contract.zh-CN.md +28 -7
  98. package/docs/managed-turn-and-session-runtime.md +127 -5
  99. package/docs/managed-turn-and-session-runtime.zh-CN.md +83 -3
  100. package/docs/release-workflow.md +105 -9
  101. package/docs/release-workflow.zh-CN.md +73 -5
  102. package/docs/storage-baseline.md +22 -7
  103. package/docs/storage-baseline.zh-CN.md +14 -5
  104. package/docs/task-delivery.md +17 -8
  105. package/docs/task-delivery.zh-CN.md +11 -5
  106. package/docs/testing/review-evaluation.md +148 -0
  107. package/docs/testing/review-evaluation.zh-CN.md +117 -0
  108. package/docs/testing/verification-levels.md +26 -4
  109. package/docs/testing/verification-levels.zh-CN.md +11 -1
  110. package/i18n/README.zh-CN.md +19 -0
  111. package/package.json +5 -2
  112. package/skills/yui-leader/SKILL.md +28 -11
  113. package/skills/yui-leader/VERSION +1 -0
  114. package/skills/yui-leader/references/execution.md +29 -0
  115. package/skills/yui-leader/references/replicated-execution.md +7 -0
  116. package/skills/yui-operator/SKILL.md +15 -3
  117. package/skills/yui-operator/VERSION +1 -0
  118. package/skills/yui-operator/references/task-delivery.md +2 -0
  119. package/skills/yui-reviewer/SKILL.md +43 -1
  120. package/skills/yui-reviewer/VERSION +1 -0
  121. package/skills/yui-runtime/SKILL.md +144 -15
  122. package/skills/yui-runtime/VERSION +1 -0
  123. package/skills/yui-runtime/references/publication.md +16 -5
  124. package/skills/yui-runtime/references/recovery.md +24 -5
  125. package/skills/yui-worker/SKILL.md +8 -1
  126. package/skills/yui-worker/VERSION +1 -0
@@ -2,6 +2,30 @@
2
2
 
3
3
  # Session、AgentRun 与通知
4
4
 
5
+ ## 当前身份与持久处理回执
6
+
7
+ 桌面与 TUI 使用相同的当前 Session 授权。只有 `CODEX_THREAD_ID` 的桌面命令
8
+ 先在所选 Home 的现有活动 Session 索引中定位角色,再校验当前绑定、撤销状态、
9
+ 工作域和 Assignment。Codex 原生线程 ID 优先于继承的 transport ID,原生子
10
+ Agent 不能借用父身份。错误 Home、未知线程和冲突提示会明确拒绝,不降为公共
11
+ 用户;只有不带受管或原生身份的终端才是普通用户。环境变量和 Manifest 是
12
+ 定位提示,不是持续授权。旧 Session 仅保留限定的自身诊断读取。
13
+
14
+ `yui inbox list` 分别返回当前身份、投递事实、处理状态和阻断原因。自动接受的
15
+ Global 消息、已投递的 Leader 窗口及当前 Assignment 续接消息仍须显式 claim,
16
+ 核对原文和既有副作用,完成处理后再 `ack --reason`。这不会重新投递输入;
17
+ pending/unknown 不能借 claim 接管。合法继任者可以核对并结清已接受的 Global
18
+ 输入或 Leader 窗口,保留原投递目标。说明中可引用结果和外部操作回执。
19
+ native terminal 不能替代用户输入处理,也不能单独满足 Task 完成条件。
20
+
21
+ 回执继续保存在现有 Message/TaskWake 中。自动通知和主动领取都以既有
22
+ `message.updated` 事件 ID 绑定可变 Draft 修订,同时间戳的修改也不会沿用旧
23
+ ack。已领取消息的原文和固定窗口引用不能被悄悄替换,重复通知不会重新提交
24
+ 已投递修订。处理崩溃或副作用完成后 ack 失败时,先读回 claim 和外部回执,
25
+ 只完成未完成工作,再重试相同确认。上下文压缩、Session 续接和升级不清空回执。
26
+ 实现复用 storage 1.7 的现有字段,不新增消息系统或 schema 迁移,也不承诺
27
+ 任意外部系统的天然 exactly-once。
28
+
5
29
  Global Session 停止/替换与 Task Session 共用精确的原生执行静止确认边界。
6
30
  Host 消失或 Session 已入历史不代表已接受输入结束:须先检查并停止保留的
7
31
  Provider binding,再结算执行占用。Global 停止证据保存为仅记录的 system Message,
@@ -55,9 +79,19 @@ Run Context 冻结 Assignment、来源引用、生效配置和工作区边界。
55
79
  和消息正文,而不是把加载成功当成交付物。规划 Pack 不暴露 Project 写范围或 Task 完成
56
80
  权限。
57
81
 
58
- Manifest 指针是恢复定位入口,不是已读凭据。首次进入、新会话、版本变化、压缩或恢复后
59
- 说明缺失时,从其确切路径加载 `yui-runtime`、Role Skills 和 profile;仅当同版本全文仍在
60
- 当前可用上下文中,才复用而不机械重读。系统不保存“已经读过”状态。动态事实仍须刷新:
82
+ Manifest 指针是恢复定位入口,不是已读凭据。每轮开始通过本 Session 的 CLI/Home 执行
83
+ `yui session skills --json`,轻量检查当前路径、内部 `VERSION` 和文件可读性,不读取
84
+ 正文或遍历/冻结资源。内置入口是当前安装目录的 `skills/<id>`,自定义入口是
85
+ `YUI_HOME/skills/<id>`,不包含 Session/内容摘要;安装位置变化后由检查重新解析当前入口。
86
+ Global Manifest 的 `skillCheckCommand` 使用自包含的 `session context <role>`,
87
+ 同时返回 Skill 元数据,因此切换到 Desktop 后不依赖启动 shell 的环境;
88
+ 旧 Global Manifest 的 `loadCommand` 也能执行相同检查。
89
+ 首次进入、版本变化、恢复,以及压缩后全文缺失或可用性不确定时,读取当前 Runtime、
90
+ Role/custom Skills 全文及必要引用、Manifest 的 profile。只有版本未变且全文仍在当前
91
+ 上下文时才复用。系统不保存“已经读过”状态,也不声称检查了模型上下文。
92
+ 历史冻结包仅作审计:缺失或损坏不阻止合法 Session 恢复与消息投递;当前文件缺失则
93
+ 报告具体路径和修复动作。身份、作用域、writer fence 与实际 CLI/Home 不兼容仍会拒绝。
94
+ 动态事实仍须刷新:
61
95
  Leader 通知使用 `currentCommand`,显式 AgentRun 使用真实 Run ID 的
62
96
  `loadCommand`/`expandCommand`,不可直接执行占位模板。
63
97
 
@@ -110,6 +144,52 @@ Leader 本地编辑保留持久事件,但不创建自唤醒。当 Leader 忙
110
144
  Task 叙述。人工输入、显式执行进入和激活失败通过既有唤醒机制及时投递。Worker 结果
111
145
  保留其聚合窗口。忙碌的原生输入仍保留待处理的消息。
112
146
 
147
+ ### Operator 积压与周期恢复
148
+
149
+ Task 完成/取消/退役、Publication 记录/采用及 InputRequest 与持久事件在同一事务中
150
+ 进入 Operator 邮箱;Run 失败继续遵守既有重试和监督路由。邮箱自身就是增量恢复源:
151
+ 通知信号遗漏或 Controller 重启后,既有周期协调读取尚未处理的引用,不依赖 Leader
152
+ 主动报告,也不遍历历史 Task。已结算且无变化的邮箱不会生成消息或调用模型。
153
+
154
+ 最多保留一条未发送的工程通知,后续事实在原邮箱中合并,直到该通知已接受或明确未投递。
155
+ 每次认领最多 64 个来源信号,读取精确记录并保留未认领后缀。Global 投递每个 Role 每轮
156
+ 最多读取 64 条待处理消息;已证明失效的原始消息保留未投递证据,后续页由下一轮处理。
157
+ interrupt-then 的预留输入不会因超出普通页而被跳过,用户输入顺序和未知效果围栏保持不变。
158
+ SQL 聚合仍检查匹配的存储行;这些上界约束物化记录和每轮投递工作,不限制持久邮箱或数据库大小。
159
+
160
+ 完整周期协调可要求原 Host 重发它已经观察到的精确终态,严格绑定 Session、
161
+ authority、attempt 和 native Turn。Desktop direct 回合还要求该 Host 保留同一 writer 围栏下
162
+ 精确匹配的开始和结束,同时核对 `direct:<nativeTurnId>` 与 native Turn;只保留最近一次
163
+ 观察,不把 direct 输入改为 client-owned。通过原 Inbox 和规范观察器处理完整结果;不提交新输入、
164
+ 另开原生客户端查询、重启 Host,也不凭时间或 idle 推定静止。正常终态在释放 Host 占用后
165
+ 再次发出队列信号。未知接受只有精确证据才能结算,显式停止/替换及外部 writer 仍是硬边界。
166
+
167
+ `yui session context <role> --json` 的 `backlog` 提供有界待投递数量、最老时间、
168
+ 目标与尝试身份、阻塞原因和恢复指引;实时年龄位于分页摘要外的 `backlogObservation`,
169
+ 不会令分页游标因时间流逝失效。`in-flight-or-unobserved-terminal` 不把长期 accepted
170
+ 误报为卡死。Host 不可达、不支持重观察或缺少保留终态时,每个精确尝试只留下一个 record-only
171
+ runtime-attention Message,可通过既有 message list/show 查看,不自动唤醒恢复 Agent。
172
+ 如果 Provider 从未报告终态,或原 Host 已失去证据,则不能自动证明完成;须恢复兼容观察路径,
173
+ 或在取得原生静止证据后显式停止/替换。不新增私有定时器、迁移或 ack 状态,不猜补任意旧历史、
174
+ 收养旧 Host,也不授权生产升级/重启。
175
+
176
+ Controller 重启保留存活 Host,不替换它们已加载的代码。支持当前协议的原 Host 在 Controller
177
+ 停机期间仍把原始观察写入不可变 Inbox,重启后由 Controller 按当前 Session 围栏应用。
178
+ Inbox 写入故障时,Host 保留尚未持久化的原始 start 与完整终态,不能被后续直接 Turn
179
+ 覆盖;修复后按原始观察顺序补收。Task 与 Global 完整协调也覆盖没有后续输入的最后
180
+ 一个未结算 Turn。补收不重执行;落盘前进程丢失仍是明确的恢复缺口。
181
+ 冻结 Manifest 的旧 CLI/storage 不匹配是 Context 读取失败,不足以证明 Host 发布失败:
182
+ 发布器使用 Inbox/RPC,不执行该 CLI。Endpoint 的 checkout generation 也不是完整 Host
183
+ 构建身份。runtime-attention 区分控制通道不可达、控制被拒绝(包括实现不支持协调)和
184
+ 精确终态未保留,并附已报告的 Endpoint/eventDelivery 观察;缺少诊断表示未报告,而非健康。
185
+ status 的 `controlCapabilities` 决定可用的 v1 增量命令,未声明 `reconcile-turn` 时
186
+ 直接返回 unsupported,不发送已知无效请求,仍可消费原始 Inbox。
187
+ `hostImplementation` 在 Host 加载时捕获,不借磁盘当前安装或 Endpoint generation
188
+ 冒充运行代码。兼容构建差异不阻止安全释放后的同一原生 Session 恢复,
189
+ 不改变模型、账号、原生权限或工作域。
190
+ 再次重启 Controller 或猜测 adoption 不能修复不支持的存活代码;须检查原证据,并为必要的
191
+ 生命周期恢复另行取得明确授权。
192
+
113
193
  | 证据 | 处置 |
114
194
  | --- | --- |
115
195
  | 忙碌且已证明未接受 | 保留输入;新的传输尝试可以使用同一 Session |
@@ -51,6 +51,80 @@ 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.8.0 compatibility and migration notes
55
+
56
+ This minor adds native metabridge model management: provider configuration,
57
+ cached model catalogs, and manual subscription-quota observations through the
58
+ supported CPA extensions. Models and Settings share navigation, canonical
59
+ section URLs, browser history, locale and theme handling. Content-versioned
60
+ static assets improve repeat navigation; HTML and account APIs remain uncached.
61
+ The release also includes the chat-style Conversation dock, bounded runtime
62
+ diagnostics, native caller/inbox corrections, and review-context improvements
63
+ merged since 2.7.1.
64
+
65
+ Storage advances from **1.7 to 1.8** through the centralized additive transition
66
+ for optional, non-secret model connection references. Existing Homes remain
67
+ unconfigured. A separately authorized upgrade can use
68
+ `yui update --version 2.8.0`; the updater owns preflight, backup, migration and
69
+ Controller replacement. Do not open an upgraded Home with an older binary or
70
+ edit its storage manually.
71
+
72
+ metabridge and CPA remain separately operated services; installing Yui does not
73
+ start, reload or adopt them. Configure their connection references explicitly.
74
+ Saving provider configuration does not prove it is applied or validate inference.
75
+ CPA still owns its upstream OAuth/account pool. Quota refresh may query billing
76
+ services but does not renew credentials, reset quota or run inference. Unknown,
77
+ partial and stale observations remain distinct.
78
+
79
+ Release evidence is deterministic core CI and isolated, fresh-install package
80
+ smoke on supported Linux/macOS and Node versions, not real-model validation.
81
+ Publishing this package alone does not authorize a global CLI update, a Home
82
+ migration, or any production-service restart.
83
+
84
+ ### 2.7.1 compatibility and migration notes
85
+
86
+ This release delivers the intended 2.7 feature line. The `v2.7.0` attempt stopped
87
+ before npm publication because package smoke compared a macOS temporary path
88
+ with its physical alias. The smoke now uses the physical package root; its
89
+ assertions and the cross-platform release gate remain intact.
90
+
91
+ This minor adds own-scope Agent inbox discovery, full reads, claims and
92
+ acknowledgements for GlobalRoles and Task Leaders, Workers and Reviewers.
93
+ Use `yui inbox list/show/claim/ack` from the current managed Session; reads do
94
+ not consume input, claims do not grant additional authority, and an
95
+ acknowledgement is not execution-result acceptance. Durable receipts arbitrate
96
+ with automatic delivery without replaying unknown native input.
97
+
98
+ Storage advances from **1.6 to 1.7** through the centralized additive migration
99
+ for Message and Leader-wake inbox receipts. Use `yui update --version 2.7.1`
100
+ for an exact upgrade; the updater preflights the target Home, takes a backup
101
+ when migration is required, and coordinates the exact Controller replacement.
102
+ Do not edit stored records manually. Task, Session and original input history
103
+ remain authoritative.
104
+
105
+ Runtime and Role instructions now use stable current source paths and independent
106
+ integer `VERSION` files. Every managed turn checks `yui session skills --json`;
107
+ only unchanged full instructions still present in context may be reused.
108
+ Recovery, version changes and missing/uncertain context require full reload.
109
+ Configured Skills must supply `VERSION` beside `SKILL.md`.
110
+
111
+ Frozen packages remain historical audit, not a Session admission condition.
112
+ Valid pre-1.5 Sessions may resume without that evidence; no historical read,
113
+ native acceptance or input consumption is fabricated. Identity, scope, writer,
114
+ lifecycle, protocol/storage and unknown-input fences are unchanged. The Skill
115
+ loading change itself adds no storage migration.
116
+
117
+ This release also recovers Operator notification backlogs and Desktop-direct
118
+ terminal facts across Controller replacement, retaining exact input and Turn
119
+ identities. SQLite prefers the pinned modern N-API driver, with a bounded
120
+ compatibility fallback when that optional native candidate is unavailable;
121
+ this fixes the reproduced Node 24 native GC abort.
122
+
123
+ Deterministic core checks and isolated assembled/fresh-install package smoke
124
+ are the release evidence; they do not establish real-model behavior.
125
+ Publishing this package alone does not authorize a global CLI update, Home
126
+ migration or Controller replacement.
127
+
54
128
  ### 2.6.0 compatibility and migration notes
55
129
 
56
130
  This minor includes Task111's paged current activity and parallel execution
@@ -118,8 +192,9 @@ fixes are included; Task110's unmerged work is not part of this release.
118
192
  Storage is now **1.6**. Use the supported centralized, contiguous same-major
119
193
  upgrade path for older supported Homes; do not edit stored records manually.
120
194
  Historical missing cost remains unknown. Old Skill provenance is not rebuilt
121
- from today's files: if restoring an old Session reports missing frozen-package
122
- evidence, follow its new-Session guidance while preserving the old history.
195
+ from today's files. The original 2.4 restoration restriction for missing packages
196
+ is superseded by the current Skill-loading contract above; preserve old history
197
+ without making that audit evidence a Session admission condition.
123
198
  Current model adoption is connection-local and does not change future defaults;
124
199
  exit the Host-owned native TUI before changing its model (closing a viewer only
125
200
  detaches it). Unknown sends must be inspected by their original request ID,
@@ -306,13 +381,27 @@ Home database, including for process custody, native account locations, or
306
381
  execution-environment checks. Only the Controller owns storage and resolves
307
382
  durable facts; malformed current input fails at its normal protocol boundary.
308
383
 
309
- Breaking upgrades do not inherit historical Hosts or processes. Runtime startup,
310
- `upgrade`, `update`, and release activation no longer scan old Host sockets or
311
- processes, infer their capabilities, or negotiate a compatibility handoff. Use a
312
- clean runtime environment; this is not permission to discard pending work or
313
- kill resources of uncertain ownership. Current Controller restart, exact
314
- process-generation checks, handover locks, Session authority and event replay
315
- protection remain enforced.
384
+ Compatible upgrades retain logical Sessions and live Hosts. A build generation
385
+ is diagnostic provenance, not a native-resume gate: after a safe authorized Host
386
+ release, the current built-in adapter may resume the same native identity.
387
+ Model, account, permissions, workspace and current authority are not relaxed.
388
+ No module hot-replacement or old-code installation is used.
389
+
390
+ The supported interoperability range is the existing control/event v1 and RPC
391
+ version 1, not arbitrary historical processes. Host status now advertises
392
+ `controlCapabilities` and `hostImplementation` captured at process load, separate
393
+ from the Endpoint build. Controllers request `reconcile-turn` only when
394
+ advertised. Pre-advertisement v1 Hosts still support status and raw Inbox
395
+ consumption; exact terminal republication is unavailable, not guessed from a
396
+ package version. Unknown protocols remain refused.
397
+
398
+ `update` reports program/storage completion separately from retained Host state.
399
+ It neither interrupts compatible busy Hosts nor automatically replaces an
400
+ unsupported one. A required refresh uses the existing explicit lifecycle, with
401
+ exact Turn, background execution and writer-release evidence before reattachment.
402
+ Idle status alone is insufficient; uncertain state blocks refresh rather than
403
+ authorizing force-kill, input replay or a new native identity. Controller
404
+ handover locks, process-generation fences and Session authority remain enforced.
316
405
 
317
406
  Storage upgrades are limited to the current major's explicit minor steps.
318
407
  Cross-major conversion is independently authorized and is not a runtime fallback.
@@ -330,6 +419,13 @@ reporting alongside durable Run state. Pending native results or known reporting
330
419
  failures require attention; they do not mean the Provider failed, the Run ended,
331
420
  or the work was accepted. The Host's live diagnostics inspect only its own event
332
421
  file identities and never parse or quarantine another producer's newer payload.
422
+ Missing event delivery is unreported, not healthy. `unpersisted` counts original
423
+ facts still held in the Host after an Inbox write failure. Reconciliation first
424
+ retries those exact bytes in observation order, then republishes retained exact
425
+ terminal evidence; it does not execute input. Keep this Host alive until its
426
+ bytes are durable. A filesystem fault followed by process loss cannot be
427
+ repaired by inventing a result. Task and Global full reconciliation use the
428
+ same capability-gated operation, including a final input with no queued successor.
333
429
 
334
430
  ## CLI and Controller release boundary
335
431
 
@@ -36,6 +36,59 @@ Agent 选择一个预先声明的计划,设施从持久状态驱动该计划
36
36
  不能将不兼容冒称为兼容,也不为回避版本选择新增历史兼容机制。包版本与协议、
37
37
  持久存储契约仍然独立:兼容性检查和必要迁移要求不变,下文存储规则不授予发版权限。
38
38
 
39
+ ### 2.8.0 兼容性及迁移说明
40
+
41
+ 本 minor 新增原生 metabridge 模型管理:提供商配置、模型目录缓存,以及经受支持
42
+ CPA 扩展手动查询的订阅额度。模型和设置共用导航、规范分区 URL、浏览器前后退、
43
+ 语言和主题处理;带内容版本的静态资源改善重复访问,HTML 与账号 API 仍不缓存。
44
+ 同时包含 2.7.1 之后合入的聊天式 Conversation 面板、有界运行诊断、原生调用者/
45
+ 收件箱修正,以及评审上下文改进。
46
+
47
+ 存储通过集中式增量迁移从 **1.7 升至 1.8**,新增可选、非密钥的模型连接引用;
48
+ 已有 Home 保持未配置。另行授权升级时可使用 `yui update --version 2.8.0`,
49
+ 由更新器负责预检、备份、迁移与 Controller 替换。不要使用旧程序打开升级后的
50
+ Home,也不要手工修改存储。
51
+
52
+ metabridge 与 CPA 仍为单独运维的服务,安装 Yui 不会启动、重载或自动接管它们,
53
+ 需显式配置连接引用。保存提供商配置不代表已生效,也不验证推理;CPA 继续负责其
54
+ 上游 OAuth/账号池。额度刷新可能查询计费服务,但不续期凭据、不重置额度、
55
+ 不执行推理;未知、部分成功和过期观测保持区分。
56
+
57
+ 发布证据为确定性核心 CI 与受支持 Linux/macOS、Node 版本上的隔离全新安装冒烟,
58
+ 不代表真实模型验证。仅发布本包不授予全局 CLI 更新、实际 Home 迁移或生产服务重启权限。
59
+
60
+ ### 2.7.1 兼容性及迁移说明
61
+
62
+ 本版交付原定的 2.7 功能。`v2.7.0` 的运行包冒烟将 macOS 临时路径与其物理别名
63
+ 直接比较,在 npm 发布前停止;现改用物理包根路径,原有断言和跨平台发布门禁
64
+ 保持不变。
65
+
66
+ 本 minor 增加 GlobalRole 及 Task Leader、Worker、Reviewer 自身作用域的 Agent
67
+ 收件箱发现、全文读取、领取与确认。在当前受管理 Session 中使用
68
+ `yui inbox list/show/claim/ack`;读取不消费输入,claim 不增加权限,ack 不是执行结果
69
+ 验收。持久回执与自动投递仲裁,不重放结果未知的原生输入。
70
+
71
+ 存储通过集中式增量迁移从 **1.6 升至 1.7**,为 Message 和 Leader wake 增加收件箱
72
+ 回执。确切升级使用 `yui update --version 2.7.1`;更新器预检目标 Home,在需要迁移
73
+ 时备份,并协调确切 Controller 的替换。不要手工编辑存储记录,Task、Session
74
+ 及原始输入历史仍为权威。
75
+
76
+ Runtime/Role Skill 使用稳定源入口和独立的整数 `VERSION` 文件。每轮执行
77
+ `yui session skills --json`;只有版本未变且全文仍在当前上下文时才复用,版本变化、
78
+ 恢复或上下文缺失/不确定时全文重读。自定义 Skill 须在 `SKILL.md` 旁提供 `VERSION`。
79
+
80
+ 冻结包仅作历史审计,不再是 Session 准入条件;合法 1.5 以前的 Session 可在缺少
81
+ 该证据时恢复,不补造已读、原生接受或输入消费回执。身份、作用域、writer、
82
+ 生命周期、协议/存储兼容与未知输入不重放边界保持不变。Skill 加载变更本身不增加
83
+ 存储迁移。
84
+
85
+ 本版还恢复 Controller 替换期间积压的 Operator 通知和 Desktop 直连终态事实,
86
+ 保留精确输入与 Turn 身份。SQLite 优先使用固定版本的现代 N-API 驱动,在可选原生
87
+ 候选不可用时有界回退至兼容候选,修复已复现的 Node 24 原生 GC 崩溃。
88
+
89
+ 发版证据为确定性核心检查及隔离的组装/全新安装运行包冒烟,不代表真实模型行为
90
+ 验证。仅发布本包不授予全局 CLI 更新、Home 迁移或 Controller 替换权限。
91
+
39
92
  ### 2.6.0 兼容性及迁移说明
40
93
 
41
94
  本 minor 包含 Task111 的当前活动分页与并行执行摘要。任务运行列表可发现超出
@@ -87,7 +140,8 @@ Task110 尚未合入的工作不属于本版本。
87
140
 
88
141
  存储版本现为 **1.6**。旧的受支持 Home 应走集中、连续的同主版本升级路径,
89
142
  不要手工修改存储记录。历史缺失费用仍为未知;旧 Skill 来源不会从今天的文件
90
- 补造。恢复旧 Session 若提示缺少冻结包证据,应保留旧历史并按提示建立新 Session。
143
+ 补造。2.4 原有“恢复需要冻结包”的限制已由上述当前加载契约取代;
144
+ 保留旧历史,不再将缺少冻结包作为 Session 准入门槛。
91
145
  当前模型操作只作用于本次连接,不修改未来默认值;切换模型前须退出 Host 持有的
92
146
  原生 TUI,关闭浏览器查看器仅断开查看。未知发送必须查询原 request-id,
93
147
  不能通过新标签页重放。这些是明确的行为边界,不是一般向后兼容承诺。
@@ -232,10 +286,20 @@ Controller RPC 版本 1。Host 不打开 Home 数据库,包括进程归属、
232
286
  执行环境校验。只有 Controller 拥有存储并解析持久事实;非法当前输入在正常协议
233
287
  边界得到明确错误。
234
288
 
235
- 破坏性升级不承接历史 Host 或进程。启动、`upgrade`、`update` 和 release activation
236
- 不再扫描旧 Host socket/进程、推断旧能力或协商兼容交接。使用干净的运行时环境;
237
- 这不授权丢弃未决工作或终止归属不确定的资源。当前 Controller 正常重启、准确进程
238
- 代际校验、交接锁、Session 权限与事件防重放继续生效。
289
+ 兼容升级保留逻辑 Session 和存活 Host。构建 generation 仅作历史诊断,不再作为
290
+ 原生恢复门槛;通过已有获授权生命周期安全释放旧 Host 后,当前内置 adapter 可恢复
291
+ 同一原生身份,不改变模型、账号、权限或工作区,也不热替换模块或安装旧实现。
292
+
293
+ 支持范围明确为现有 control/event v1 与 RPC 版本 1,不承诺任意历史进程兼容。
294
+ Host status 用 `controlCapabilities` 声明控制能力,并用进程加载时捕获的
295
+ `hostImplementation` 区别于 Endpoint 构建。Controller 仅在明确声明时发送
296
+ `reconcile-turn`。没有能力字段的 v1 Host 仍可读取 status、消费原始 Inbox;
297
+ 精确终态重发能力不可用,不根据包版本猜测。未知协议仍拒绝。
298
+
299
+ `update` 区分程序/存储完成与保留 Host 的状态,不打断兼容的忙碌 Host,也不自动
300
+ 替换不支持的 Host。必要刷新沿用显式生命周期:先证明精确 Turn、后台执行与写入者
301
+ 已释放,再重新附着。仅 idle 不足以证明安全;状态未知时保留现场,不能强杀、
302
+ 重放输入或静默新建原生身份。Controller 交接锁、进程身份围栏与 Session 权限继续有效。
239
303
 
240
304
  存储升级仅包含同主版本内明确的小版本步骤。跨主版本转换独立授权,
241
305
  不构成运行时回退。
@@ -249,6 +313,10 @@ Global Context 命令保持自足,供远端 TUI/Desktop 使用。必须正确
249
313
  显示 Host 上报观测。原生结果待落库或已知上报故障需要关注,但不代表 Provider 失败、
250
314
  Run 已结束或业务已验收。Host 诊断只检查自己已投递文件的身份是否存在,不解析或隔离
251
315
  其他生产者的新格式事件。
316
+ 缺少 eventDelivery 表示未报告而非健康。`unpersisted` 是 Inbox 写入失败后仍保留在
317
+ 原 Host 内的原始事实数;协调先按观察顺序重试这些字节,再补发保留的精确终态,
318
+ 不重新执行输入。必须保留该 Host 直至落盘,不能在文件系统故障又进程丢失后编造结果。
319
+ Task 与 Global 的完整协调都使用同一能力检查,包括没有后续排队输入的最后一个 Turn。
252
320
 
253
321
  ## CLI 与 Controller 发布边界
254
322
 
@@ -2,7 +2,18 @@
2
2
 
3
3
  # Storage baseline 1.0
4
4
 
5
- Current storage is 1.6. The declared 1.5 → 1.6 transition adds optional
5
+ Current storage is 1.8. The declared 1.7 → 1.8 transition permits an optional
6
+ Model management connection in Yui configuration. Only service addresses and
7
+ file references are stored; no credentials are imported. Existing Homes remain
8
+ unconfigured, and the SQL layout is unchanged.
9
+
10
+ The declared 1.6 → 1.7 transition adds optional Agent
11
+ inbox claim and acknowledgement receipts to canonical Messages and Leader
12
+ wakes, including the exact pending-window identity. Historical records and
13
+ frozen Context digests remain unchanged; missing handling evidence is never
14
+ backfilled as delivery or consumption. The SQL layout is unchanged.
15
+
16
+ The declared 1.5 → 1.6 transition adds optional
6
17
  source-attributed monetary evidence to canonical runtime observations. Existing
7
18
  observations remain unchanged: absent amounts and prices stay unknown. The SQL
8
19
  layout is unchanged.
@@ -28,9 +39,10 @@ The 1.4 → 1.5 transition introduces complete Skill package references in
28
39
  effective launch snapshots and Session Manifests. Historical records and their
29
40
  digests are preserved byte-for-byte; missing package metadata explicitly means
30
41
  legacy entrypoint-only/unrecorded evidence. Migration cannot recover resources
31
- that were never captured. Existing running Hosts keep their original inputs;
32
- restoring a legacy Session requires explicitly selecting a new Session. No
33
- ordinary reader backfills historical versions from mutable sources.
42
+ that were never captured. Existing running Hosts keep their original inputs.
43
+ Current loading uses stable source paths and internal versions; restoring a
44
+ valid legacy Session does not require frozen-package evidence or replacement.
45
+ No ordinary reader backfills historical versions from mutable sources.
34
46
 
35
47
  New launches snapshot raw resources under `runtime/skill-packages/<digest>`.
36
48
  The version covers sorted relative paths, SHA-256 byte digests, sizes and
@@ -40,9 +52,12 @@ Symlinks and special files are rejected, as are packages exceeding 2,048 files,
40
52
  8 MiB per file, 32 MiB total or 32 directory levels. Scripts are retained,
41
53
  never run on import. Sources must be readable and physically rooted.
42
54
  Sessions and AgentRuns retain the compact source/version/inventory pointers;
43
- file bodies stay in the package. Changing a source affects a new Session only.
44
- Lost or corrupted packages fail closed rather than being rebuilt from current
45
- sources.
55
+ file bodies stay in the package. These records describe captured source, not
56
+ proof of model loading. Source changes apply to current Skill loading after the
57
+ per-turn version check, including existing Sessions. Lost or corrupted audit
58
+ packages fail explicit historical reads, not current Session admission, and are
59
+ never rebuilt from current sources. The loading change adds no persisted DB
60
+ fields or storage migration; storage remains 1.6.
46
61
 
47
62
  Yui 1.0.0 starts from one clean persistent contract. The package version,
48
63
  storage schema, record envelopes and Controller protocol are separate
@@ -2,7 +2,15 @@
2
2
 
3
3
  # 存储基线 1.0
4
4
 
5
- 当前存储为 1.5。已声明的 1.3 → 1.4 迁移为正式项目知识增加适用信息和精确版本历史,
5
+ 当前存储为 1.8。1.7 → 1.8 允许在 Yui 配置中保存可选的 Model 管理连接,
6
+ 仅保存服务地址及文件引用,不导入凭据;已有 Home 保持未配置,SQL 布局不变。
7
+
8
+ 1.6 → 1.7 为规范 Message 和 Leader wake 增加可选的 Agent
9
+ 信箱领取、确认消费回执及精确待处理窗口身份;不改写历史原文或冻结 Context 摘要,
10
+ 不将缺失的处理证据补写成投递或消费。物理 SQL 结构不变。
11
+
12
+ 1.5 → 1.6 增加可选的来源归属费用证据,缺失费用仍保持未知。
13
+ 已声明的 1.3 → 1.4 迁移为正式项目知识增加适用信息和精确版本历史,
6
14
  并将提案指纹扩展到适用范围、失效条件及替代意图。仅从精确匹配的已接受提案恢复
7
15
  `scope`/`expiresWhen`;存量知识以已观察到的当前内容建立版本 1,不臆造缺失的修改历史。
8
16
  已有提案的身份、审批和来源保留,冻结的 Context 快照及摘要不改写。物理 SQL 结构不变。
@@ -13,16 +21,17 @@
13
21
  1.4 → 1.5 在现有 effective launch 和 Session
14
22
  Manifest 中新增完整 Skill 包引用,不改 SQL 布局。历史记录与摘要原样保留;
15
23
  缺少包元数据明确表示旧版只记录入口正文或没有装载证据,不能拿当前源目录
16
- 补造历史版本。运行中的旧 Host 保留原输入;恢复缺少包快照的旧 Session 时
17
- 会给出需要显式创建新 Session 的诊断,不在普通读取中迁移或回填。
24
+ 补造历史版本。运行中的旧 Host 保留原输入;当前加载使用稳定源入口与内部版本,
25
+ 合法旧 Session 恢复不再要求历史冻结包或更换 Session,不在普通读取中迁移或回填。
18
26
 
19
27
  新 Session 将资源保存到 `runtime/skill-packages/<digest>`,摘要覆盖排序后的
20
28
  相对路径、原始文件字节摘要、大小与可执行标志。内置 Skills 共享完整兄弟目录,
21
29
  保留跨 Role 相对引用;自定义 Skill 限于其自身目录。拒绝符号链接、特殊文件,
22
30
  以及超过 2,048 个文件、单文件 8 MiB、总计 32 MiB 或 32 层目录的包。
23
31
  脚本只保存,不因装载而执行。Session、AgentRun、CLI 和 Web 复用精简来源、
24
- 版本与资源清单引用,不复制大文件正文。源更新只影响新 Session;快照丢失或
25
- 损坏明确报错,不从当前源目录重建。
32
+ 版本与资源清单引用,不复制大文件正文。这些是源快照而非模型已读证明。源更新可在
33
+ 现有 Session 的每轮版本检查后采用。快照丢失或损坏只使历史读取明确报错,不再作为
34
+ 当前会话准入门槛,也不从当前源目录重建。本次加载契约不改 DB 字段,存储仍为 1.6。
26
35
 
27
36
  Yui 1.0.0 从唯一、纯净的持久化契约开始。软件包版本、存储结构、记录封装和
28
37
  Controller 协议是相互独立的身份,不能从其中一个推断另一个。
@@ -253,10 +253,11 @@ External-effect authorization must be explicit: development does not grant
253
253
  push/PR/merge, and merge does not grant release, production update or archive.
254
254
 
255
255
  When the user explicitly requests further implementation or delivery of the same
256
- completed, unarchived result, the Operator may perform the necessary
257
- `task reopen <task>` before submitting the new scoped request. The user need not
258
- add a mechanical “reopen” confirmation. These existing operations suffice; no
259
- auto-reopen option or post-completion execution protocol is needed. Ordinary
256
+ completed, unarchived result, the current matching Leader may perform the necessary
257
+ `task reopen <task>` for its own Task and continue that bounded request; Operator
258
+ handoff is not mandatory. The Operator may still reopen before routing new input.
259
+ Neither path needs a mechanical “reopen” confirmation. These existing operations
260
+ suffice; no auto-reopen option or post-completion execution protocol is needed. Ordinary
260
261
  send/queue/submit, including `--intent develop`, still refuses a completed Task
261
262
  before saving new input. Queries, record-only input and discussion do not grant
262
263
  reopening authority.
@@ -266,10 +267,14 @@ preserving original events, fixed heads/reports and Publication history. The
266
267
  Leader separately verifies and accepts the new result; old validation does not
267
268
  automatically cover it. Reopen preserves an independent execution stop: only the
268
269
  authorized `task execution start` path can lift that gate after cleanup.
269
- Cancelled intent requires separate restoration authority; archived Tasks cannot
270
- reopen, and retained workspaces or Session replacement do not bypass lifecycle.
271
-
272
- Reopening and submitting are two atomic operations with separate outcomes.
270
+ Cancelled/retired intent requires separate explicit user/Operator restoration
271
+ authority and cannot be restored by the Leader; archived Tasks cannot reopen,
272
+ and retained workspaces or Session replacement do not bypass lifecycle.
273
+ Delivery still requires the current Session's delivery authority and legal
274
+ workspace; reopening does not promote a planning Session or expand write scope.
275
+
276
+ For routed input, reopening and submitting are two atomic operations with
277
+ separate outcomes.
273
278
  Inspect the lifecycle result and saved/queued receipt; if submission fails,
274
279
  read current state and continue only the unapplied step within the same authority.
275
280
  Keep the same key for a matching submission retry, never replay unknown effects,
@@ -277,6 +282,10 @@ and do not reopen again merely to retry after another completion or cancellation
277
282
  The reopen notification can arrive before the new Message: the Leader waits for
278
283
  the actual request, without rerunning accepted work or immediately completing
279
284
  again. Once the request arrives, it proceeds without another “continue.”
285
+ When the Leader already has the new request, it uses that original input after
286
+ reopening rather than resubmitting or creating a self-wake. Preserve a direct
287
+ conversation's request and boundaries in Task records without impersonating
288
+ user/Operator input.
280
289
 
281
290
  Publication upsert, diff/adopt and verify remain separate, authorized atomic
282
291
  operations for completed, unarchived results. They need no reopening when no new
@@ -194,8 +194,10 @@ CLI、当前 Leader Context 和 Web 从同一组事实推导覆盖,不联网
194
194
  WorkItem/ReviewRound Assignment。外部效果必须明确获授权:开发不授予
195
195
  push/PR/merge,合并不授予发版、生产升级或归档。
196
196
 
197
- 用户明确要求继续同一个已完成、未归档成果的实现或交付时,Operator 可以先执行必要的
198
- `task reopen <task>`,再提交这次有界请求。用户无需机械地额外确认“重开”。
197
+ 用户明确要求继续同一个已完成、未归档成果的实现或交付时,当前有效且匹配该 Task 的
198
+ Leader 可以自行执行 `task reopen <task>`,重开自己的任务并继续这次有界请求,
199
+ 不必转交 Operator。Operator 仍可在路由新输入前重开。两条路径都无需用户机械地
200
+ 额外确认“重开”。
199
201
  现有两步即可满足目标,不需要自动重开开关或后完成执行协议。普通 send/queue/submit
200
202
  (包括 `--intent develop`)仍会在保存新输入前拒绝 completed Task;只读查询、
201
203
  record-only 输入和讨论本身不授予重开权限。
@@ -203,14 +205,18 @@ record-only 输入和讨论本身不授予重开权限。
203
205
  重开回到 active,撤下当前完成元数据,同时保留原事件、固定 head/报告和 Publication
204
206
  历史。Leader 对新结果单独验证与验收,不能把旧验证直接宣称为新结果的证据。
205
207
  重开保留独立的执行停止决定;只有获授权且完成清理的 `task execution start` 路径
206
- 可以解除 gate。恢复 cancelled 意图需要单独明确授权;archived Task 不能重开,
207
- 保留工作区或 Session 替换都不能绕过生命周期。
208
+ 可以解除 gate。恢复 cancelled/retired 意图需要单独明确授权并由 user/Operator 执行,
209
+ Leader 不能自行恢复;archived Task 不能重开,保留工作区或 Session 替换都不能绕过生命周期。
210
+ 交付仍要求当前 Session 的 delivery 权限和合法工作区;重开不会把 planning Session
211
+ 升级为交付 Session,也不扩大写入范围。
208
212
 
209
- 重开与提交是两个有独立结果的原子操作。分别检查生命周期结果和 saved/queued 回执;
213
+ 路由新输入时,重开与提交是两个有独立结果的原子操作。分别检查生命周期结果和 saved/queued 回执;
210
214
  提交失败时读取当前状态,仅在权限未变时继续尚未生效的那一步。相同提交重试保留原 key,
211
215
  不重放效果未知的操作,也不因重试而再次重开已经重新完成或取消的 Task。
212
216
  重开通知可能先于新 Message 到达:Leader 等待具体新请求,不重跑已验收工作,
213
217
  也不立即再次 complete;请求到达后不再要求额外“继续”。
218
+ Leader 已收到新请求时,重开后使用该原始输入,不重新提交或制造 self-wake。
219
+ 直接对话中的请求及边界按需保存在 Task 记录中,不冒充 user/Operator 输入。
214
220
 
215
221
  Publication upsert、diff/adopt、verify 仍是未归档已完成成果的独立授权原子操作,
216
222
  没有新执行请求时不必重开。重开后的工作记录自己的新完成证据,不改写旧基线,