@tea-agent/loop-agent 0.44.0-next.4 → 0.44.0-next.6

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 (100) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/dist/build-stamp.json +3 -3
  3. package/dist/executors/pi-sdk-executor.js +7 -7
  4. package/dist/executors/shell-write-guard.js +26 -3
  5. package/dist/infrastructure/console/operation-store.js +46 -14
  6. package/dist/shared/file-identity.js +23 -0
  7. package/dist/shared/git-workspace-status.js +480 -0
  8. package/dist/shared/path-safety.js +2 -2
  9. package/dist/shared/wizard-local-telemetry.js +2 -1
  10. package/dist/worker/console/chat/context-insights.js +723 -0
  11. package/dist/worker/console/chat/pi-runtime.js +217 -18
  12. package/dist/worker/console/chat/repo-browser.js +52 -4
  13. package/dist/worker/console/chat/routes.js +150 -58
  14. package/dist/worker/console/chat/shortcuts.js +7 -0
  15. package/dist/worker/console/console-update-runtime.js +2 -2
  16. package/dist/worker/console/operator-user-error.js +28 -1
  17. package/dist/worker/console/pi-readiness.js +4 -4
  18. package/dist/worker/console/recovery-cta.js +14 -14
  19. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-B_lmJjOm.js → abnfDiagram-N423BO3Z-Brn2sPzL.js} +1 -1
  20. package/dist/worker/console/static/assets/{arc-pymM4Qeh.js → arc-BIMNTG0W.js} +1 -1
  21. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-Bw9EPAhi.js → architectureDiagram-T3A2C74G--WtcgR_A.js} +1 -1
  22. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-C7_oXJp2.js → blockDiagram-VBNYF7ZC-BT_Ztog1.js} +1 -1
  23. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-LnLWDbh8.js → c4Diagram-5PPSVZJV-C5hbVr-l.js} +1 -1
  24. package/dist/worker/console/static/assets/channel-DNWB4hpR.js +1 -0
  25. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-BBiu3sCW.js → chunk-2GRJ4B5K-BKKnyR9Z.js} +1 -1
  26. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-DiXqDQml.js → chunk-2Q5K7J3B-BHs6biqA.js} +1 -1
  27. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-lmNq9nYk.js → chunk-5RXB4S5H-BdSFy_vP.js} +1 -1
  28. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-boBu74dU.js → chunk-5VM5RSS4-BpJIdTKV.js} +1 -1
  29. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-CjxqoJLQ.js → chunk-6Q2QTUOP-C_iWJhkT.js} +1 -1
  30. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-DL0vQ9MG.js → chunk-GF5L2VYU-BTbmx3-k.js} +1 -1
  31. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-DGPqE-O0.js → chunk-JWPE2WC7-D4Ee6DmP.js} +1 -1
  32. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-v4BbT_r2.js → chunk-KBJHAD2P-B487SORR.js} +1 -1
  33. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-Ci0ynvyL.js → chunk-RYQCIY6F-BKYHjNrr.js} +1 -1
  34. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CGsbJoTV.js → chunk-XXDRQBXY-DrTdoYZG.js} +1 -1
  35. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-COhFgJji.js +1 -0
  36. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-COhFgJji.js +1 -0
  37. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CzoRDEI7.js → cose-bilkent-JH36ORCC-CttUY_Jo.js} +1 -1
  38. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-BOwFwbX4.js → cynefin-VYW2F7L2-B4Rm5gnR.js} +1 -1
  39. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-2Cfg451l.js → cynefinDiagram-MW4NZA55-ByxHBq_S.js} +1 -1
  40. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-DbT0D6Y5.js → dagre-VZM6K2ZE-DGrfNFA0.js} +1 -1
  41. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-Dfd_JoMs.js → diagram-7IWD3JNH-KjrUPquv.js} +1 -1
  42. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-DaGm82kh.js → diagram-B4RE2ZJO-VS4mlm75.js} +1 -1
  43. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-DMoI8Ibc.js → diagram-LBJQPF4R-BLXYmFTM.js} +1 -1
  44. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BtIFA3aY.js → diagram-Q27KOJAE-C6xoFAqH.js} +1 -1
  45. package/dist/worker/console/static/assets/{diagram-UB23O5K3-D_2X1DTZ.js → diagram-UB23O5K3-C478dCe7.js} +1 -1
  46. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-yFW5ZYlZ.js → ebnfDiagram-BXEA7PRR-DHEpW5zN.js} +1 -1
  47. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DBXh5Svj.js → erDiagram-JOGREHBK-CA5GKfo9.js} +1 -1
  48. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-C4ycm8KM.js → flowDiagram-UKHOOZJN-zysi0Fl-.js} +1 -1
  49. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-qr-_Pekr.js → ganttDiagram-PKOTCBZU-DGzcKA8Y.js} +1 -1
  50. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-DzOSLv_A.js → gitGraphDiagram-DS77QQ5N-CHsuIG1w.js} +1 -1
  51. package/dist/worker/console/static/assets/index-CJh6pVLm.js +482 -0
  52. package/dist/worker/console/static/assets/index-C_kvKmFM.css +1 -0
  53. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-C7Hl8D7l.js → infoDiagram-6WML65LV-BexZHPCp.js} +1 -1
  54. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-fBxVlr6t.js → ishikawaDiagram-WSZJBQD7-Gkx8q-DB.js} +1 -1
  55. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-CoiJEVCl.js → journeyDiagram-NVQOT4AX-XDW3qrJ7.js} +1 -1
  56. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-TJXpxNuV.js → kanban-definition-27J2QSJJ-DJ07eEaN.js} +1 -1
  57. package/dist/worker/console/static/assets/{linear-CjQWz1pG.js → linear-DL-zeqOn.js} +1 -1
  58. package/dist/worker/console/static/assets/{mermaid.core-DY9_apIE.js → mermaid.core-C0HdXtOf.js} +5 -5
  59. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-HB0Id8gM.js → mindmap-definition-FAOFIHXS-CqRX0lrt.js} +1 -1
  60. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-0OSWgr6v.js → pegDiagram-VL7TDLO6-BVM9JZ2H.js} +1 -1
  61. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-Cei1GGC2.js → pieDiagram-7S7Q4E2Y-BA3ozdKk.js} +1 -1
  62. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-CDy0Adfu.js → quadrantDiagram-CIZ2JOQS-B-0_p9_4.js} +1 -1
  63. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-BwqzUWwN.js → railroadDiagram-AXF67PYL-DHRzPWFc.js} +1 -1
  64. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-Bif2IBRL.js → requirementDiagram-LRYGKXZP-9BEC_PcW.js} +1 -1
  65. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-CYIoNMLg.js → sankeyDiagram-W5VNT64P-DMxeW4rN.js} +1 -1
  66. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-BDS7Y0aQ.js → sequenceDiagram-SI44F4Z6-DixP6LIU.js} +1 -1
  67. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-lZic-_Bp.js → sizeCapture-X5ZJPWSS-B_EifJBo.js} +1 -1
  68. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-WCVlCqSd.js → stateDiagram-OKZ733FA-BwikwWbX.js} +1 -1
  69. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-S2ZHMo1c.js +1 -0
  70. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-pGccxTw_.js → swimlanes-SLNWSIFB-C162l9o1.js} +2 -2
  71. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-BZm4ByfV.js +8 -0
  72. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-D29RlrQA.js → timeline-definition-Z64GVDOM-mpe_u1i4.js} +1 -1
  73. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-01fEM1NU.js → vennDiagram-T6HMQDX7-DyUk54HX.js} +1 -1
  74. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-C4GeB6dq.js → wardleyDiagram-T6FBY63Y-HYyMkzfm.js} +1 -1
  75. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-BXHrXHps.js → xychartDiagram-ELKLHX3M-DRoh7skR.js} +1 -1
  76. package/dist/worker/console/static/index.html +2 -2
  77. package/dist/worker/console/static-src/app/console-types.js +9 -1
  78. package/dist/worker/console/static-src/operator-chat/context-insights-store.js +64 -0
  79. package/dist/worker/console/static-src/operator-chat/details-rail-surfaces.js +98 -0
  80. package/dist/worker/console/static-src/operator-chat/file-palette-nav.js +81 -0
  81. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +4 -2
  82. package/dist/worker/console/static-src/operator-chat/useComposer.js +80 -6
  83. package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +8 -1
  84. package/dist/worker/console/static-src/operator-chat/useRuntimeControls.js +36 -17
  85. package/dist/worker/console/static-src/operator-chat/useRuntimeSnapshot.js +18 -0
  86. package/dist/worker/console/static-src/operator-chat/useWorkspaceBrowserGate.js +4 -0
  87. package/dist/worker/console/static-src/shell/console-update-reload.js +1 -1
  88. package/dist/worker/console/workspace-initialization.js +3 -3
  89. package/dist/worker/observability/read-model.js +23 -2
  90. package/dist/worker/observe/node-context-insights.js +479 -0
  91. package/docs/README.md +1 -1
  92. package/docs/templates/backend-test-dag.json +1 -0
  93. package/package.json +4 -4
  94. package/dist/worker/console/static/assets/channel-Ym13M3Lb.js +0 -1
  95. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-BeFR1wGo.js +0 -1
  96. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-BeFR1wGo.js +0 -1
  97. package/dist/worker/console/static/assets/index-PFjB6g6l.js +0 -482
  98. package/dist/worker/console/static/assets/index-ZtyB6Ol-.css +0 -1
  99. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-cj5UUB6m.js +0 -1
  100. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-C_Qp6bnh.js +0 -8
@@ -42,6 +42,13 @@ export const SHORTCUTS = [
42
42
  action: "reload",
43
43
  source: "operator",
44
44
  },
45
+ {
46
+ command: "/context",
47
+ label: "Context insights",
48
+ description: "打开上下文洞察仪表盘:构成、趋势、事件与文件活动",
49
+ action: "focus:context-insights",
50
+ source: "operator",
51
+ },
45
52
  ];
46
53
  export const SDD_BINGO_SHORTCUT = {
47
54
  command: "/sdd-bingo",
@@ -4,7 +4,7 @@ import { createNpmUpdateClient } from "../../shared/update/npm-client.js";
4
4
  import { acquireUpdateLock, updateLockPath } from "../../shared/update/state.js";
5
5
  import { readInitRuntimeActivity } from "../observability/init-runtime-activity.js";
6
6
  import { performConsoleUpdateAndInit, } from "./console-update-and-init.js";
7
- import { TERMINAL_OPERATION_STATES } from "../../infrastructure/console/operation-store.js";
7
+ import { isOperationOccupied, } from "../../infrastructure/console/operation-store.js";
8
8
  export function createConsoleUpdateExecutor(input) {
9
9
  return async (channel) => {
10
10
  const currentVersion = readPackageVersion(input.packageRoot);
@@ -49,7 +49,7 @@ export function createConsoleUpdateExecutor(input) {
49
49
  };
50
50
  }
51
51
  const liveOtherOperation = operations.some((operation) => operation.action !== "consoleUpdateAndInit" &&
52
- !TERMINAL_OPERATION_STATES.has(operation.state));
52
+ isOperationOccupied(operation.state));
53
53
  return liveOtherOperation
54
54
  ? {
55
55
  ok: false,
@@ -114,7 +114,7 @@ const CONTEXT_TRANSFER_CODE_COPY = [
114
114
  },
115
115
  {
116
116
  pattern: /\bOPERATION_NEEDS_RECONCILE\b/,
117
- copy: "操作记录需要先恢复核对(OPERATION_NEEDS_RECONCILE):上次执行未确认结束,请刷新操作状态后重试。",
117
+ copy: "当前操作的执行结果尚未确认,需要先核对(OPERATION_NEEDS_RECONCILE)。请查看操作记录和相关任务状态,核对实际执行结果后再决定后续操作;确认前请勿重复提交。",
118
118
  },
119
119
  {
120
120
  pattern: /\bCONTEXT_EXPORT_FAILED\b/,
@@ -169,6 +169,33 @@ const CONTEXT_TRANSFER_CODE_COPY = [
169
169
  pattern: /\bINVALID_VERSION\b/,
170
170
  copy: "安装版本或渠道版本号无法解析(INVALID_VERSION),请重试;若持续出现请反馈。",
171
171
  },
172
+ // 源绑定漂移(dag-confirmation.ts / dag-execution-receipt.ts 的英文原文)
173
+ // 与 frontend split CAS 冲突(operator-actions.ts)原本会原样透传到操作者
174
+ // 横幅,这里给出可执行的中文说明。
175
+ {
176
+ pattern: /\bBINDING_DRIFT\b|\bbinding drift\b|\bbinding drifted\b/i,
177
+ copy: "这次确认所依据的内容已经变了(任务契约、源文件、程序版本或校验结果在确认之后被修改),因此旧确认不能再使用。这是保护措施,不是故障:请回到任务页重新生成确认,然后重新开始运行。",
178
+ },
179
+ {
180
+ pattern: /frontend split CAS conflict/i,
181
+ copy: "前端拆分任务的状态在你操作期间被其他操作改过了(通常是另一个标签页或并发操作),为避免覆盖对方的结果,本次修改没有生效。请刷新页面,确认当前状态后重试。",
182
+ },
183
+ {
184
+ pattern: /\bCONFIRMATION_EXPIRED\b/,
185
+ copy: "这次确认已经超时失效。请回到任务页重新生成确认后再继续。",
186
+ },
187
+ {
188
+ pattern: /\bCONFIRMATION_STALE\b/,
189
+ copy: "这次确认对应的是改动之前的内容,已经过期作废。请回到任务页重新生成确认后再继续。",
190
+ },
191
+ {
192
+ pattern: /\bCONFIRMATION_CONSUMED\b/,
193
+ copy: "这次确认已经被使用过了,不能重复提交。如需再次执行,请重新生成确认。",
194
+ },
195
+ {
196
+ pattern: /\bHUMAN_CONFIRMATION_REQUIRED\b/,
197
+ copy: "这一步需要你先在页面上确认一次才能继续。请按提示完成确认后再重试。",
198
+ },
172
199
  ];
173
200
  /** Map internal spawn/controller errors to actionable Chinese copy. */
174
201
  export function formatOperatorUserError(message) {
@@ -85,7 +85,7 @@ function hasProviderConfig(snapshot) {
85
85
  /**
86
86
  * Discover live Pi SDK / auth / model readiness via ModelRuntime.
87
87
  * Kept inside worker/console (dynamic import) so Worker does not depend on
88
- * executors; contract matches pi-sdk-executor 0.83.0.
88
+ * executors; contract matches pi-sdk-executor 0.84.4.
89
89
  */
90
90
  export async function discoverPiReadinessProbe(options) {
91
91
  const repoRoot = options?.repoRoot ?? process.cwd();
@@ -118,7 +118,7 @@ export async function discoverPiReadinessProbe(options) {
118
118
  modelsAvailable: false,
119
119
  interviewSessionOk: false,
120
120
  details: {
121
- sdkMessage: "Pi SDK incompatible: requires createAgentSession, getAgentDir, and ModelRuntime.create (0.83.0)",
121
+ sdkMessage: "Pi SDK incompatible: requires createAgentSession, getAgentDir, and ModelRuntime.create (0.84.4)",
122
122
  authMessage: "skipped (sdk incompatible)",
123
123
  modelsMessage: "skipped (sdk incompatible)",
124
124
  sessionMessage: "skipped (sdk incompatible)",
@@ -159,7 +159,7 @@ export async function discoverPiReadinessProbe(options) {
159
159
  modelsAvailable: false,
160
160
  interviewSessionOk: false,
161
161
  details: {
162
- sdkMessage: "Pi SDK 0.83.0 contract available",
162
+ sdkMessage: "Pi SDK 0.84.4 contract available",
163
163
  authMessage: `ModelRuntime.create failed: ${message}`,
164
164
  modelsMessage: "skipped (runtime init failed)",
165
165
  sessionMessage: "skipped (runtime init failed)",
@@ -225,7 +225,7 @@ export async function discoverPiReadinessProbe(options) {
225
225
  interviewSessionOk,
226
226
  piAvailableModels: availableModels,
227
227
  details: {
228
- sdkMessage: `Pi SDK 0.83.0 contract available (agentDir=${agentDir})`,
228
+ sdkMessage: `Pi SDK 0.84.4 contract available (agentDir=${agentDir})`,
229
229
  authMessage: authReady
230
230
  ? `credentials/providers ready (available=${availableCount}, providerConfig=${providerConfigured})`
231
231
  : "no available models and no stored/configured provider credentials (set Pi auth or provider API keys)",
@@ -13,40 +13,40 @@ const CTA = {
13
13
  },
14
14
  doctor: {
15
15
  id: "doctor",
16
- label: "Doctor 诊断",
16
+ label: "体检诊断",
17
17
  action: "doctor",
18
18
  lane: "dag",
19
- guide: "只读诊断:检查 Console / Pi / 仓库就绪,不是重跑前置",
19
+ guide: "只做检查、不改动任何东西:看看 Console、模型服务和仓库是否正常。重跑之前先跑它,能省很多试错。",
20
20
  commandHint: "agent-worker console doctor --repo .",
21
21
  },
22
22
  decision: {
23
23
  id: "decision",
24
24
  label: "人工决策",
25
25
  lane: "dag",
26
- guide: "暂停等人时:先看 doctor 输出再做决策(经 CLI)",
26
+ guide: "运行停下来等你拍板时用:先点「体检诊断」看清现状,再决定继续还是调整(需要走命令行)。",
27
27
  commandHint: "loop-agent dag doctor --run-id <run-id> --markdown",
28
28
  },
29
29
  resume: {
30
30
  id: "resume",
31
- label: "恢复运行",
31
+ label: "继续运行",
32
32
  lane: "dag",
33
- guide: "仅当运行可安全 resume 时使用(经 CLI)",
33
+ guide: "只在确认这次运行还能安全接着跑时使用;不确定就先点「体检诊断」(需要走命令行)。",
34
34
  commandHint: "loop-agent task advance <task-id> --json",
35
35
  },
36
36
  reconcile: {
37
37
  id: "reconcile",
38
- label: "对账 / reconcile",
38
+ label: "核对并归档中断的运行",
39
39
  requiresReason: true,
40
40
  action: "dagReconcileRun",
41
41
  lane: "dag",
42
- guide: "Orphan/中断时先对账归档(默认 supersede);runner 仍存活时勿盲 supersede",
42
+ guide: "运行被中断或找不到归属时,用它把这次运行标记为「已归档」,之后才能重新发起。如果运行其实还在跑,请不要用这个动作,否则会打断它。",
43
43
  commandHint: "loop-agent dag reconcile-run --run-id <run-id> --action supersede --reason <structured-reason>",
44
44
  },
45
45
  regenerate: {
46
46
  id: "regenerate",
47
47
  label: "重新生成契约/计划",
48
48
  lane: "dag",
49
- guide: "契约/计划过期时:回任务页或经 CLI 重新 task advance(本页仅提示)",
49
+ guide: "任务契约或计划已经过期时用:回任务页重新生成,或走命令行重跑一次 task advance。本页只是提示,按钮在任务页。",
50
50
  commandHint: "loop-agent task advance <task-id> --json",
51
51
  },
52
52
  observeLink: {
@@ -54,16 +54,16 @@ const CTA = {
54
54
  label: "全屏观测",
55
55
  action: "observeLink",
56
56
  lane: "dag",
57
- guide: "打开完整 Inspect 画布;顶栏可返回操作台",
57
+ guide: "打开完整的过程视图;顶栏可以回到操作台。",
58
58
  commandHint: "agent-worker console --repo . --port 8790",
59
59
  },
60
60
  dagRerun: {
61
61
  id: "dagRerun",
62
- label: "从失败节点恢复",
62
+ label: "从失败节点继续",
63
63
  requiresReason: true,
64
64
  action: "dagRerun",
65
65
  lane: "dag",
66
- guide: "Provider、网络、限流或超时等非代码问题的首选:先评估安全子图,合格后创建 continuation run 从有效节点恢复(无需 Human Gate)。Worker 持有的 run、workspace/controller 漂移或含 unsafe shell 时不要强跑子图",
66
+ guide: "失败原因跟代码无关时(模型服务报错、网络、限流、超时)首选这个:系统会先判断哪些步骤可以安全跳过,再从出错前的那一步接着跑,不用从头再来,也不需要人工审批。以下几种情况不能这样跑:这次运行是 Worker 队列发起的、仓库或程序版本在这次运行后被改过、或者后续步骤里有会执行命令的验证环节——遇到这些请改用「带反馈重新执行任务」。",
67
67
  commandHint: "loop-agent dag rerun --run-id <run-id> --from-node <node-id> --plan",
68
68
  },
69
69
  standaloneTaskRerun: {
@@ -72,7 +72,7 @@ const CTA = {
72
72
  requiresReason: true,
73
73
  action: "standaloneTaskRerun",
74
74
  lane: "dag",
75
- guide: "独立 DAG run 无法安全从节点恢复时,重新生成完整 DAG,并带入上一轮仍未解决的 verify/review 反馈;没有可继承反馈时会明确说明(无需 Human Gate)。Worker 持有的 run 请用下方「重新排队 Worker Task」",
75
+ guide: "不能从中间某一步接着跑时用这个:会把整个任务从头重新执行一遍,并自动带上上一轮还没解决的验证/评审意见,不用人工审批。如果没有可以继承的意见,会明确告诉你。注意:Worker 队列发起的任务请用下方「重新排队 Worker Task」。",
76
76
  commandHint: "loop-agent dag rerun-task --run-id <run-id> --reason <text> --json",
77
77
  },
78
78
  workerTaskRetry: {
@@ -81,7 +81,7 @@ const CTA = {
81
81
  requiresReason: true,
82
82
  action: "workerTaskRetry",
83
83
  lane: "worker",
84
- guide: "仅 Worker 队列任务失败时直调执行,服务端校验 Failed 状态,无需 Human Gate;不要与 DAG 完整重跑混用",
84
+ guide: "只用于 Worker 队列里失败的任务:服务端会先确认它确实处于失败状态再重新入队,不需要人工审批。不要和上面的「带反馈重新执行任务」混用。",
85
85
  commandHint: "agent-worker task retry <task-id> --feature-id <feature-id> --repo . --reason <reason>",
86
86
  },
87
87
  interrupt: {
@@ -90,7 +90,7 @@ const CTA = {
90
90
  requiresReason: true,
91
91
  action: "dagRequestInterrupt",
92
92
  lane: "dag",
93
- guide: "仅本机 Console 持有的正在运行 DAG:经 Human Gate 登记协作中止,等待当前节点安全收敛。不会立即强杀进程",
93
+ guide: "只对这台 Console 正在跑的运行有效:提交后需要你在浏览器里确认一次,然后等当前步骤安全跑完,不会立刻杀掉进程。",
94
94
  commandHint: "loop-agent dag request-interrupt --run-id <run-id> --reason-code operator-request --reason <structured-reason>",
95
95
  },
96
96
  };
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-CjxqoJLQ.js";import{p as f}from"./chunk-JWPE2WC7-DGPqE-O0.js";import{_ as n,l as o}from"./mermaid.core-DY9_apIE.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-BOwFwbX4.js";import"./index-PFjB6g6l.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
1
+ import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-C_iWJhkT.js";import{p as f}from"./chunk-JWPE2WC7-D4Ee6DmP.js";import{_ as n,l as o}from"./mermaid.core-C0HdXtOf.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-B4Rm5gnR.js";import"./index-CJh6pVLm.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
@@ -1 +1 @@
1
- import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-DY9_apIE.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-C0HdXtOf.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};