@zq-silk/yui 2.2.0 → 2.3.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 (51) hide show
  1. package/README.md +4 -2
  2. package/dist/cli/commandCatalog.js +8 -3
  3. package/dist/cli/interactionPolicy.js +4 -0
  4. package/dist/commands/taskCommands.js +5 -7
  5. package/dist/commands/taskIntegrationCommands.js +5 -16
  6. package/dist/controlPlaneCli.js +28 -21
  7. package/dist/controller/clientRuntime.js +3 -2
  8. package/dist/integration/gitIntegrationService.js +8 -67
  9. package/dist/job/jobCleanupInspection.js +67 -0
  10. package/dist/repository/gitWorkspace.js +41 -12
  11. package/dist/repository/taskWorkspaceCoordinator.js +72 -145
  12. package/dist/repository/taskWorkspacePreparer.js +39 -43
  13. package/dist/repository/workspaceCleanupInspection.js +88 -7
  14. package/dist/resources/resourceRegistrar.js +16 -10
  15. package/dist/runtime/integrationRuntimeIsolation.js +21 -0
  16. package/dist/runtime/taskRuntimeIsolation.js +91 -21
  17. package/dist/task/archiveDiagnostics.js +26 -8
  18. package/dist/task/archivePreflight.js +26 -9
  19. package/dist/task/leaderArchive.js +9 -15
  20. package/dist/web/assets/client/api.js +8 -0
  21. package/dist/web/assets/client/app.js +10 -6
  22. package/dist/web/assets/client/components.js +95 -36
  23. package/dist/web/assets/client/detail.js +110 -64
  24. package/dist/web/assets/client/dock.js +95 -11
  25. package/dist/web/assets/client/evidence.js +286 -94
  26. package/dist/web/assets/client/i18n.js +178 -62
  27. package/dist/web/assets/client/overview.js +9 -13
  28. package/dist/web/assets/client/records.js +142 -7
  29. package/dist/web/assets/client/sections.js +234 -198
  30. package/dist/web/assets/icons.js +4 -0
  31. package/dist/web/assets/styles/components.js +64 -17
  32. package/dist/web/assets/styles/responsive.js +7 -5
  33. package/dist/web/assets/styles/tokens.js +1 -1
  34. package/dist/web/assets/styles/views.js +48 -31
  35. package/dist/web/webServer.js +12 -1
  36. package/dist/web/webTaskSurface.js +8 -1
  37. package/docs/observability/README.md +13 -3
  38. package/docs/observability/README.zh-CN.md +10 -3
  39. package/docs/release-workflow.md +25 -0
  40. package/docs/release-workflow.zh-CN.md +19 -0
  41. package/docs/task-delivery.md +36 -8
  42. package/docs/task-delivery.zh-CN.md +24 -7
  43. package/i18n/README.zh-CN.md +3 -2
  44. package/package.json +1 -1
  45. package/skills/yui-leader/references/execution.md +2 -1
  46. package/skills/yui-leader/references/integration.md +20 -0
  47. package/skills/yui-operator/SKILL.md +4 -0
  48. package/skills/yui-reviewer/SKILL.md +3 -0
  49. package/skills/yui-runtime/SKILL.md +4 -0
  50. package/skills/yui-runtime/references/publication.md +20 -4
  51. package/skills/yui-worker/SKILL.md +3 -0
@@ -138,7 +138,7 @@ Review 时跳过刷新,该新鲜度字段为 null。重复完成不重新观
138
138
  干净且已提交的 Task-main 快照。当有一条新的 user/Operator 消息仍在等待 Leader
139
139
  投递时,它也会拒绝完成。当前原生轮次必须结束,待处理的通知才能到达;随后 Leader
140
140
  读取原始消息并重新评估完成。这派生自既有的 Message 和 mailbox 投递,而不是第二套
141
- 确认或工作流状态。终态工作区清理在完成时可以只是建议。普通归档要求清理已结算;
141
+ 确认或工作流状态。终态工作区清理在完成时可以只是建议。普通归档要求业务及执行已结算;
142
142
  明确授权的 force 归档可以保留下文所述的未解决资源。被选作结果的 Artifact 必须是
143
143
  固定的、存在的且 Task 局部的。
144
144
 
@@ -235,13 +235,15 @@ yui task archive <task> (--integrated|--abandon) --force
235
235
 
236
236
  ### 普通归档
237
237
 
238
- 活动工作与输入必须已了结,受管资源干净且可安全移除。WorkItem 结果必须已集成或
238
+ 活动工作与输入必须已了结,并证明执行已停止。WorkItem 结果必须已集成或
239
239
  有意放弃;Review、Lane 和 Integration 资源必须已结算。使用 `--integrated` 时,
240
240
  每个需要代码交付的 Project 都要求已合并且已验证的 Publication,通过精确匹配
241
241
  或有效显式采用候选覆盖其验收 head。`--abandon` 记录有意不交付,而不是已验证合并。
242
242
 
243
- 缺失或陈旧的覆盖、未解决的执行或脏 worktree 会阻止普通归档。先解决报告的事实,
244
- 再显式重试;不会隐式 reset 或强制删除。
243
+ 缺失或陈旧的覆盖、未解决的执行会阻止普通归档。脏 worktree 或其他无法安全移除的
244
+ 临时资源在逻辑归档后保留,不会仅因这些残留而要求 force;不会隐式 reset 或强制删除。
245
+ `--abandon` 可释放 HEAD 精确等于已记录 Project 基线的干净 Task-main,无需 Publication;
246
+ 未验证的新增提交仍保留。pending/running Review 属于未结清业务,而不只是保留目录。
245
247
 
246
248
  ### 明确授权的 force 归档
247
249
 
@@ -265,9 +267,17 @@ Force 不验证合并、不验收工作、不证明物理静止、不丢弃脏
265
267
 
266
268
  归档结果中的 `archived=true` 证明已归档,不证明清理全部成功。即使 `cleanupFinished`
267
269
  也只代表前台清理已走完,不代表资源全部移除。重复归档只报告当前事实,不重放清理。
268
- 检查后通过显式的精确 owner 资源操作进行安全清理;不隐含后台重试或更广泛的删除
270
+ 检查后通过 `yui task archive-cleanup <task>` 显式重试精确 owner 的安全清理。
271
+ `allResourcesReleased` 将当前轮次及剩余所有权与历史警告分开报告;不隐含后台重试或更广泛的删除
269
272
  权限。两条归档路径都保留 Task 历史与恢复信息。已归档的 Task 不能重开。
270
273
 
274
+ runtime 清理中断可能留下相邻的 `.cleanup-*` 认领目录。重试同时检查这些目录和原路径,
275
+ 只有 Owner marker 精确匹配且没有存活进程引用时才删除。marker 缺失或不匹配时保留目录,
276
+ 并给出路径供显式诊断;原目录不存在本身不证明资源已释放。未解决的认领也阻止同一 runtime
277
+ 重新激活。此过程复用已有资源 owner 和回执,不引入第二套清理队列。
278
+ 实际启动过的 Job 的物理检查在普通归档提交前复用同一认领目录清单;
279
+ 确认未知结果不能跳过仍被进程引用或无法核实的重命名 runtime。
280
+
271
281
  资源 GC 是独立、显式启用的隔离路径。同一 runtime 子树只移动一次,由父目录
272
282
  回执负责恢复完整内容;重复的子目录 registry 记录在同一事务内移除。
273
283
  独立 Git worktree 或仍需保留的子资源会阻止移动其父目录,不删除 Task 记录或成果。
@@ -311,8 +321,15 @@ Task Leader reader 也可读取。这里的 `--force` 仅选择要检查的行
311
321
 
312
322
  预检是观察,不是删除凭据。清理会重新读取同一组检查,Git 删除时再验证身份和脏状态。
313
323
  Task-main clone 在子工作区清理前存在关联 Git 注册是正常现象,但移除 clone 前它们必须
314
- 已释放。归档会保留失败 Integration 工作区中新出现的脏文件;独立的显式 Integration
315
- 清理命令保留既有的可丢弃冲突现场合同。force 清理完成只表示这次前台尝试结束,不表示
324
+ 已释放。归档与独立的显式 Integration 清理均保留脏文件和持久日志。
325
+ 确认 unknown Job 不会改写其未知结果;清理还需重新验证精确 runner 进程代次及物理路径引用
326
+ 均已消失。成功、失败、超时或取消的已执行 Job 也要求同样的物理证据;终态结果不能证明
327
+ 存活子进程已停止。只有执行产生任何效果前已取消或拒绝的 Job 可跳过检查。
328
+ 清理先检查 Job 结果与精确 runner 退出,再停止执行已结算且归属精确的 Role;
329
+ 停止后、删除任何子工作区或提交普通归档前,重新执行完整路径引用检查。
330
+ 共享工作区的可复用空闲 Role 可以进入正常停止流程;残留或无法核实的引用仍阻止释放。
331
+ Integration 资源预检与删除共享 runtime 归属和认领目录检查;无法验证的物理材料保留,
332
+ 不会因此新增普通归档的业务准入门槛。清理完成只表示这次前台尝试结束,不表示
316
333
  全部资源已释放;当前保留引用、精确物理运行时证据与历史诊断仍是不同事实。
317
334
 
318
335
  清理前用每个命令的 `--help` 查看它确切的权限和选项;阅读一份生命周期文档不授权
@@ -137,8 +137,9 @@ Agent 可以重新读取任务上下文,继续兼容的 Session,或在必要
137
137
  想直观看进展,可以在另一个终端运行 `yui web`。本地 Web 展示同一份任务与
138
138
  待回答问题,也允许发送消息、回答问题,以及显式 queue、steer 或 interrupt Task 输入。
139
139
  这些经认证的 Task 控制复用 CLI 的相同操作,不是另一套需要同步的任务系统。
140
- 详情优先展示用户待办、原生会话活动、任务进展和关键结论;固定文件成果与交付证据
141
- 按需展开。详见[用户关注与进展](../docs/observability/README.zh-CN.md#web-用户关注与进展)。
140
+ 详情分为四个页签:概览(用户待办、任务进展和关键决定)、交付(工作项、评审、
141
+ 集成与远程交付,按需读取)、运行(Role、原生会话活动、进行中的执行和用量)、
142
+ 记录(决定、里程碑、执行与问题的时间线)。详见[用户关注与进展](../docs/observability/README.zh-CN.md#web-用户关注与进展)。
142
143
  详见 [Web 权限](../docs/architecture/capabilities-and-resources.zh-CN.md#cli-与-web)
143
144
  和[输入时机](../docs/managed-turn-and-session-runtime.zh-CN.md#输入时机queuesteer-与-interrupt)。
144
145
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zq-silk/yui",
3
- "version": "2.2.0",
3
+ "version": "2.3.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,
@@ -378,7 +378,8 @@ After a ReviewRound is terminal, the Leader or authorized Operator owns
378
378
  `task work review cleanup <task>/<round>`. Preserve dirty diagnostic evidence
379
379
  and resolve it explicitly; do not ask a Reviewer to clean its own runtime
380
380
  after its final report. Cleanup can remain advisory at completion. Ordinary
381
- archive requires settled resources; explicitly authorized force archive preserves
381
+ archive requires settled business and stopped execution, not complete physical
382
+ release; safe resource retention is reported separately. Explicitly authorized force archive preserves
382
383
  unresolved resources and diagnostics under the shared
383
384
  [archive contract](../../yui-runtime/references/publication.md). The Leader
384
385
  does not gain independent archive authorization. An original explicit user
@@ -33,6 +33,10 @@ the files there, then run `integration continue`. No preceding
33
33
  `resolve --option manual-resolution` is required for an ordinary conflict.
34
34
  Core completes the matching Git operation, records the candidate, runs or
35
35
  recovers its exact checks and advances the original target by CAS.
36
+ Keep that same attempt for ordinary resolution and record its rationale in
37
+ the existing resolution/report evidence. A detached HEAD during a matching
38
+ rebase is normal. Start another attempt only for a real input/baseline change
39
+ or evidenced inability to resume safely, explaining that decision.
36
40
 
37
41
  Do not close the Task execution gate, stop unrelated work, create an
38
42
  InputRequest or end in passive waiting merely because Git conflicted.
@@ -86,6 +90,22 @@ Inspect all Jobs owned by the exact attempt, including an unbound Job;
86
90
  cancel and establish quiescence by exact identity before reusing or cleaning
87
91
  resources. Successful Job evidence and Task acceptance remain separate.
88
92
 
93
+ After terminal settlement, `task integration cleanup <task>/<integration>`
94
+ can release clean exact-owner temporary resources without waiting for Task
95
+ archive. Save necessary reports in Task artifacts/results first. Cleanup
96
+ preserves the attempt, fixed checks/logs and target receipts. Failure or abort
97
+ never authorizes deleting uncommitted resolutions; preserve dirty material
98
+ and resolve its disposition explicitly. Acknowledging an unknown Job is not
99
+ physical stop evidence: cleanup also rechecks the recorded runner generation
100
+ and physical workspace/log/runtime references. When those are proven absent,
101
+ the acknowledged unknown result remains historical evidence, not a permanent
102
+ physical-cleanup blocker.
103
+ The same physical checks apply to every executed terminal Job, including a
104
+ successful one: surviving child processes are not stopped by a result receipt.
105
+ Integration resource preflight includes runtime ownership and renamed cleanup
106
+ claims; retain unverified material for diagnosis without inferring new deletion
107
+ authority from Task archive admission.
108
+
89
109
  Direct Task-main delivery is an alternative only when current delivery
90
110
  authority, ownership and the Task contract already permit it, with no other
91
111
  writer or active check using that workspace. Do not edit managed refs or the
@@ -268,6 +268,10 @@ After an authorized PR/MR operation or before archive, read
268
268
  [publication and archive boundaries](../yui-runtime/references/publication.md).
269
269
  Record confirmed delivery facts promptly. Completion does not authorize
270
270
  archive, and ordinary archive approval does not authorize `--force`.
271
+ Distinguish settled business and stopped execution from safely retained
272
+ physical resources. Ordinary archive may retain the latter; follow the shared
273
+ archive diagnostics and exact cleanup actions instead of requesting force
274
+ merely for old terminal Integration worktrees or preserved diagnostics.
271
275
  When the user explicitly authorizes force archive for an eligible terminal
272
276
  Task, archive even if delivery proof or cleanup is incomplete. Report the
273
277
  warnings and retained resources without claiming merge verification or physical
@@ -104,6 +104,9 @@ judgment; it does not accept the WorkItem or complete the Task. Preserve the
104
104
  ReviewRound record and workspace, and report any diagnostic changes. After
105
105
  the Round is terminal, an authorized Leader or Operator owns cleanup through
106
106
  Yui; do not attempt to terminate or delete your own managed runtime/workspace.
107
+ Keep scratch in the supplied runtime `TMPDIR` and put required diagnostic
108
+ evidence in durable results/artifacts; resource release must not erase the
109
+ frozen Review or its original report.
107
110
 
108
111
  A helpful default result layout is Conclusion, Material findings, Verification,
109
112
  Uncertainty, and Recommended next action. Markdown or JSON are both acceptable.
@@ -26,6 +26,10 @@ resource boundaries still apply; a planning Session does not gain delivery
26
26
  authority merely because the Task becomes active.
27
27
  Use the runtime-provided `TMPDIR` for temporary context or diagnostic files,
28
28
  not fixed shared `/tmp` names or the logical multi-Project workspace container.
29
+ Save durable reports in Task artifacts/results before releasing their temporary
30
+ workspace. Integration history and check evidence outlive its worktree; a
31
+ terminal attempt is not an unresolved business input merely because resources
32
+ remain. Cleanup inspects exact ownership and preserves unknown or dirty data.
29
33
 
30
34
  Ordinary commands use `yui` from the intended launch environment's PATH and
31
35
  `YUI_HOME`. Session/native identity, Task/Assignment/workspace authority and
@@ -94,6 +94,14 @@ the exact Task, checks archive eligibility, then uses `--integrated` for verifie
94
94
  merged delivery or `--abandon` for deliberate non-delivery. General archive
95
95
  approval never implies `--force` authority. Preserve the Task record.
96
96
 
97
+ Ordinary archive requires settled business, exact delivery (or authorized
98
+ abandonment), and proven stopped execution. It commits logical archive before
99
+ one foreground resource cleanup. Safe physical retention—dirty diagnostics,
100
+ missing-path recovery gaps, or remaining Git registrations—is not a reason to
101
+ force archive or rewrite old Integration outcomes. Terminal failed/superseded
102
+ Integration history stays readable; an active/conflicted attempt or unknown
103
+ execution still requires settlement.
104
+
97
105
  With explicit force authorization for a completed or cancelled (retired) Task, use
98
106
  `yui task archive <task> (--integrated|--abandon) --force`. Force commits the
99
107
  archive and stops new Task scheduling before attempting safe foreground cleanup.
@@ -108,10 +116,18 @@ cannot be safely released stay owned and traceable. Late runtime events remain
108
116
  source evidence, not authority to resume or settle unknown input.
109
117
 
110
118
  Read `task show <task> --json` for `data.archive.warnings`,
111
- `data.archive.retainedResources` and `data.archive.cleanupEvents`;
112
- `task context` also retains the original records/events. A successful archive
119
+ `data.archive.retainedResources` and `data.archive.cleanupEvents`. These bounded
120
+ views include counts and inspection actions; read the existing paginated
121
+ `task event list` and Task context resource inventory for omitted evidence.
122
+ A successful archive
113
123
  exit means `archived=true`, not that cleanup fully succeeded. `cleanupFinished`
114
124
  means the foreground pass finished, not that every resource was removed.
125
+ `allResourcesReleased` separately requires release evidence and no retained
126
+ resources. Historical warnings do not disappear after a successful later pass.
115
127
  If cleanup was interrupted, the Task stays archived. Repeating archive only
116
- reports current facts; use explicit, exact-owner resource operations after
117
- inspection instead of re-running broad cleanup. No background retry is implied.
128
+ reports current facts. After inspecting the exact retained owner/reason, use
129
+ `task archive-cleanup <task>` for one new bounded pass, or the reported
130
+ WorkItem/Review/Integration cleanup entry. Every pass rechecks current identity,
131
+ runtime and Git registration facts; it is not an atomic batch and does not
132
+ discard unknown material. Registry-only remnants require the existing resource
133
+ inspection route, not a global `worktree prune`. No background retry is implied.
@@ -109,3 +109,6 @@ reject it for missing headings or invalid JSON.
109
109
 
110
110
  Leave managed workspaces intact after handoff. Their owner lifecycle and
111
111
  cleanup belong to the Leader and Yui Core.
112
+ Keep disposable tools/cache in the supplied runtime `TMPDIR`, not the logical
113
+ multi-Project container. Preserve required handoff evidence in durable
114
+ results/artifacts before its temporary workspace is released.