@tea-agent/loop-agent 0.44.0-next.12 → 0.44.0-next.14

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 (188) hide show
  1. package/CHANGELOG.md +27 -2
  2. package/README.md +12 -12
  3. package/dist/adapters/loop-agent.js +34 -0
  4. package/dist/build-stamp.json +3 -3
  5. package/dist/cli/command-definitions.js +5 -5
  6. package/dist/cli/program.js +1 -4
  7. package/dist/commands/init-legacy-audit.js +330 -0
  8. package/dist/commands/init-upgrade.js +644 -104
  9. package/dist/commands/init.js +686 -330
  10. package/dist/commands/operator-guide.js +99 -0
  11. package/dist/commands/operator.js +16 -3
  12. package/dist/executors/dag-pi-executor.js +11 -6
  13. package/dist/executors/pi-sdk-executor.js +3 -1
  14. package/dist/executors/pi-writer-tool-policy.js +60 -4
  15. package/dist/executors/playwright-cli-launcher.js +31 -45
  16. package/dist/executors/shell-write-guard.js +24 -67
  17. package/dist/governance/exec-plans.js +10 -1
  18. package/dist/governance/harness.js +2 -7
  19. package/dist/governance/manifest-types.js +28 -9
  20. package/dist/governance/project-capability-scanner.js +263 -0
  21. package/dist/governance/project-config.js +96 -0
  22. package/dist/governance/resource-catalog.js +151 -0
  23. package/dist/infrastructure/console/app-data.js +6 -2
  24. package/dist/shared/operator/capabilities.js +2 -2
  25. package/dist/shared/package-metadata.js +23 -7
  26. package/dist/shared/pi-context-pressure/extension.js +23 -0
  27. package/dist/shared/pi-context-pressure/index.js +1 -0
  28. package/dist/shared/pi-context-pressure/telemetry.js +4 -0
  29. package/dist/shared/pi-context-pressure/tool-result-pruner.js +98 -0
  30. package/dist/shared/update/npm-client.js +49 -1
  31. package/dist/task/config-types.js +4 -2
  32. package/dist/task/source-prepare/build-draft.js +1 -0
  33. package/dist/task/source-prepare/path-policy.js +17 -7
  34. package/dist/worker/cli.js +3 -5
  35. package/dist/worker/console/chat/browser-automation.js +455 -41
  36. package/dist/worker/console/chat/browser-content.js +74 -0
  37. package/dist/worker/console/chat/browser-diagnostics.js +250 -0
  38. package/dist/worker/console/chat/browser-evaluation.js +58 -0
  39. package/dist/worker/console/chat/browser-operation-queue.js +19 -0
  40. package/dist/worker/console/chat/browser-pick.js +113 -0
  41. package/dist/worker/console/chat/browser-routes.js +54 -5
  42. package/dist/worker/console/chat/browser-screenshot-result.js +47 -0
  43. package/dist/worker/console/chat/browser-storage.js +89 -0
  44. package/dist/worker/console/chat/chat-event-store.js +7 -6
  45. package/dist/worker/console/chat/context-insights.js +84 -19
  46. package/dist/worker/console/chat/pet/pet-affinity.js +169 -0
  47. package/dist/worker/console/chat/pet/pet-persist.js +109 -0
  48. package/dist/worker/console/chat/pet/pet-registry.js +142 -0
  49. package/dist/worker/console/chat/pet/pet-remarks.js +48 -0
  50. package/dist/worker/console/chat/pet/pet-routes.js +125 -0
  51. package/dist/worker/console/chat/pet/pet-service.js +262 -0
  52. package/dist/worker/console/chat/pet/pet-state.js +99 -0
  53. package/dist/worker/console/chat/pi-mode-loop-isolation.js +17 -2
  54. package/dist/worker/console/chat/pi-runtime/custom-tools/browser-tools.js +125 -174
  55. package/dist/worker/console/chat/pi-runtime.js +8 -3
  56. package/dist/worker/console/chat/repo-browser.js +80 -2
  57. package/dist/worker/console/chat/repo-preview-kind.js +155 -0
  58. package/dist/worker/console/chat/routes.js +43 -7
  59. package/dist/worker/console/chat/scheduled-goal-request.js +14 -6
  60. package/dist/worker/console/chat/session-mode.js +1 -1
  61. package/dist/worker/console/chat/session-store.js +24 -5
  62. package/dist/worker/console/chat/tools.js +12 -0
  63. package/dist/worker/console/console-shutdown.js +34 -0
  64. package/dist/worker/console/server.js +2 -1
  65. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-r1NAPU_5.js → abnfDiagram-N423BO3Z-DASc69AM.js} +1 -1
  66. package/dist/worker/console/static/assets/{arc-dT5T4sVL.js → arc-h09p-LAc.js} +1 -1
  67. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-CP_cOq46.js → architectureDiagram-T3A2C74G-CZ3dtLkh.js} +1 -1
  68. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-sToEZxEf.js → blockDiagram-VBNYF7ZC-DMrRhMXG.js} +1 -1
  69. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-DSxwwi2m.js → c4Diagram-5PPSVZJV-DQxisHV6.js} +1 -1
  70. package/dist/worker/console/static/assets/channel-D1zgKZfg.js +1 -0
  71. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-B9fh0IkF.js → chunk-2GRJ4B5K-CefVN9zh.js} +1 -1
  72. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-CAUNl-A6.js → chunk-2Q5K7J3B-DmR1Koq2.js} +1 -1
  73. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-BomeqbNX.js → chunk-5RXB4S5H-NlzrSW7L.js} +1 -1
  74. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-BNAuTOLE.js → chunk-5VM5RSS4-DfelJv-0.js} +1 -1
  75. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DfzjRD5y.js → chunk-6Q2QTUOP-BK6RFy58.js} +1 -1
  76. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-C3uE-yc2.js → chunk-GF5L2VYU-BAeh9lz4.js} +1 -1
  77. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-C3sQMMYr.js → chunk-JWPE2WC7-ChPS5WzG.js} +1 -1
  78. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-D_AtEYQL.js → chunk-KBJHAD2P-BoVe5IM6.js} +1 -1
  79. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DW4TwhKv.js → chunk-RYQCIY6F-C4q_0Lw9.js} +1 -1
  80. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CTQDmJcp.js → chunk-XXDRQBXY-Bb9TvjeY.js} +1 -1
  81. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-CXNNsY2M.js +1 -0
  82. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-CXNNsY2M.js +1 -0
  83. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-iMqPuBsL.js → cose-bilkent-JH36ORCC-DmNnL8Ff.js} +1 -1
  84. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-DktIuDWs.js → cynefin-VYW2F7L2-Contvx58.js} +1 -1
  85. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-BgVnjyEs.js → cynefinDiagram-MW4NZA55-Cigq7cjk.js} +1 -1
  86. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-CR25E4bu.js → dagre-VZM6K2ZE-dEbC0nxb.js} +1 -1
  87. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-CPM2h5HY.js → diagram-7IWD3JNH-CzIztESV.js} +1 -1
  88. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-DqF0x2g1.js → diagram-B4RE2ZJO-Bo14zbaY.js} +1 -1
  89. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-G8BYp2eb.js → diagram-LBJQPF4R-C4xUyil6.js} +1 -1
  90. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BbC4kT_D.js → diagram-Q27KOJAE-CaBY_uYa.js} +1 -1
  91. package/dist/worker/console/static/assets/{diagram-UB23O5K3-CKZwZ-G5.js → diagram-UB23O5K3-ClUXUeiu.js} +1 -1
  92. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-kJDmheia.js → ebnfDiagram-BXEA7PRR-BbGCgjC6.js} +1 -1
  93. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DFTVHyxB.js → erDiagram-JOGREHBK-Dr-AcwSl.js} +1 -1
  94. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-BqdN5_os.js → flowDiagram-UKHOOZJN-BG8Gcfyc.js} +1 -1
  95. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-SYDjVakh.js → ganttDiagram-PKOTCBZU-CFVaPs5r.js} +1 -1
  96. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-Bf8bNpGA.js → gitGraphDiagram-DS77QQ5N-ChJ8pm-O.js} +1 -1
  97. package/dist/worker/console/static/assets/index-B_5GhVIO.js +488 -0
  98. package/dist/worker/console/static/assets/index-C7YMBluX.css +1 -0
  99. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DIeAmJ45.js → infoDiagram-6WML65LV-C5J9-uCZ.js} +1 -1
  100. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-oikqUAlo.js → ishikawaDiagram-WSZJBQD7-BcfjqzDv.js} +1 -1
  101. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-mKEF_xYT.js → journeyDiagram-NVQOT4AX-BzzCO-rD.js} +1 -1
  102. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-BdWJHPnN.js → kanban-definition-27J2QSJJ-NCHUZ46h.js} +1 -1
  103. package/dist/worker/console/static/assets/{linear-DGRlieMH.js → linear-BKZlWCUU.js} +1 -1
  104. package/dist/worker/console/static/assets/{mermaid.core-4P9yPC9c.js → mermaid.core-DbTaQjFE.js} +5 -5
  105. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-5PTSkos6.js → mindmap-definition-FAOFIHXS-CroYl5xQ.js} +1 -1
  106. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DONIFpG5.js → pegDiagram-VL7TDLO6-DgMBx-9k.js} +1 -1
  107. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-D_Z4S70M.js → pieDiagram-7S7Q4E2Y-CyWDmbq1.js} +1 -1
  108. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-CAsjh8iY.js → quadrantDiagram-CIZ2JOQS-BgGEOqSP.js} +1 -1
  109. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-Cx4Dd6ac.js → railroadDiagram-AXF67PYL-BMZ7oeeV.js} +1 -1
  110. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-cQb7mwyH.js → requirementDiagram-LRYGKXZP-DxqyGhcc.js} +1 -1
  111. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-Cd-DhUdf.js → sankeyDiagram-W5VNT64P-DnSvNCG8.js} +1 -1
  112. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-AlKYRgIk.js → sequenceDiagram-SI44F4Z6-BiZh6f-R.js} +1 -1
  113. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-CUy_ET4e.js → sizeCapture-X5ZJPWSS-BKXSI8WB.js} +1 -1
  114. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-CTuVe6Sa.js → stateDiagram-OKZ733FA-CfSgoYFm.js} +1 -1
  115. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DgHi3vjb.js +1 -0
  116. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-ChFLJb-v.js → swimlanes-SLNWSIFB-CyGADcHe.js} +2 -2
  117. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Bgvdt1Y0.js +8 -0
  118. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-DZZeiAPr.js → timeline-definition-Z64GVDOM-HmPaSPOK.js} +1 -1
  119. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-t4O91cZU.js → vennDiagram-T6HMQDX7-VA2VBbez.js} +1 -1
  120. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-CV5qGHZu.js → wardleyDiagram-T6FBY63Y-BxjiBPZa.js} +1 -1
  121. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-DyXbytUI.js → xychartDiagram-ELKLHX3M--hUY-qFj.js} +1 -1
  122. package/dist/worker/console/static/index.html +2 -2
  123. package/dist/worker/console/static/pets/ember/pet.json +167 -0
  124. package/dist/worker/console/static/pets/ember/spritesheet.png +0 -0
  125. package/dist/worker/console/static-src/operator-chat/details-rail-surfaces.js +4 -3
  126. package/dist/worker/console/static-src/operator-chat/open-preview-in-browser.js +57 -9
  127. package/dist/worker/console/static-src/operator-chat/use-stat-dialog.js +95 -0
  128. package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +6 -0
  129. package/dist/worker/console/workspace-context.js +15 -0
  130. package/dist/worker/console/workspace-initialization.js +25 -16
  131. package/dist/worker/delivery/package.js +4 -1
  132. package/dist/worker/materialize/harness-task-lineage.js +4 -2
  133. package/dist/worker/observe/static/console-theme.css +33 -29
  134. package/dist/worker/observe/static/operator-chrome.js +1 -42
  135. package/dist/workflows/dag/backend-test-case-coverage-analysis.js +3 -1
  136. package/dist/workflows/dag/backend-test-layout.js +27 -7
  137. package/dist/workflows/dag/backend-test-markdown-workflow.js +3 -1
  138. package/dist/workflows/dag/backend-test-pytest-collection.js +4 -1
  139. package/dist/workflows/dag/final-verification.js +45 -10
  140. package/dist/workflows/dag/frontend-test-case-checklist.js +12 -3
  141. package/dist/workflows/dag/frontend-test-environment-probe.js +0 -2
  142. package/dist/workflows/dag/frontend-test-layout.js +41 -12
  143. package/dist/workflows/dag/hybrid/sources.js +35 -16
  144. package/dist/workflows/dag/hybrid/templates/backend-test.js +70 -55
  145. package/dist/workflows/dag/hybrid/templates/frontend-test.js +62 -41
  146. package/dist/workflows/dag/hybrid/templates/kg-bootstrap.js +6 -6
  147. package/dist/workflows/dag/hybrid/templates/knowledge-sync.js +5 -5
  148. package/dist/workflows/dag/skill-instructions.js +102 -32
  149. package/dist/workflows/dag/skill-snapshot.js +3 -0
  150. package/dist/workflows/dag/skills.js +7 -7
  151. package/dist/workflows/dag/test-artifact-namespace.js +73 -0
  152. package/dist/workflows/dag/validate.js +24 -5
  153. package/dist/workflows/dag/workspace-checkpoint.js +13 -1
  154. package/docs/architecture/runtime-boundaries.md +28 -22
  155. package/docs/init-surface.manifest.json +43 -295
  156. package/docs/templates/README.md +4 -4
  157. package/docs/templates/agent-dag.base.json +9 -9
  158. package/docs/templates/agent-dag.final-verification.json +6 -6
  159. package/docs/templates/agent-dag.supervised-implementation.json +12 -12
  160. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +3 -3
  161. package/docs/templates/backend-test-dag.json +708 -708
  162. package/docs/templates/backend-test-dag.review-cases.prompt.md +3 -3
  163. package/docs/templates/frontend-implementation-dag.json +2 -2
  164. package/docs/templates/frontend-test-case-checklist.md +2 -2
  165. package/docs/templates/frontend-test-dag.generate-cases.prompt.md +7 -7
  166. package/docs/templates/frontend-test-dag.json +48 -39
  167. package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +2 -2
  168. package/docs/templates/frontend-test-dag.retrospect.prompt.md +1 -1
  169. package/docs/templates/frontend-test-dag.review-cases.prompt.md +1 -1
  170. package/docs/templates/hybrid-dag.json +9 -9
  171. package/docs/templates/knowledge-sync-dag.json +8 -8
  172. package/package.json +12 -3
  173. package/resource-catalog.v1.json +1973 -0
  174. package/resources/agent-bridge/loop-agent/SKILL.md +40 -0
  175. package/resources/init-history/legacy-surface.v1.json +33 -0
  176. package/skills/fe-test-ui-scout/SKILL.md +4 -4
  177. package/skills/fe-test-ui-scout/references/ledger-schema.md +1 -1
  178. package/skills/init-update/SKILL.md +34 -0
  179. package/skills/init-update/agents/openai.yaml +6 -0
  180. package/skills/playwright-cli/SKILL.md +1 -1
  181. package/skills/playwright-cli-case-generator/SKILL.md +4 -4
  182. package/dist/worker/console/static/assets/channel-CyBY_yGk.js +0 -1
  183. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-D5lN4E_E.js +0 -1
  184. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-D5lN4E_E.js +0 -1
  185. package/dist/worker/console/static/assets/index-B28Onmfy.css +0 -1
  186. package/dist/worker/console/static/assets/index-CTMZsDmh.js +0 -486
  187. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BsWhs8O7.js +0 -1
  188. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CJcioYGH.js +0 -8
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: loop-agent
3
+ description: >-
4
+ Use when a repository is initialized with loop-agent and the user asks to
5
+ implement, fix, review, plan, verify, resume, or inspect work through the
6
+ loop-agent Task and Agent DAG workflow.
7
+ metadata:
8
+ loop-agent:
9
+ schemaVersion: 1
10
+ kind: external-agent-bridge
11
+ ---
12
+
13
+ # loop-agent bridge
14
+
15
+ This file is a discovery bridge. The installed `loop-agent` package is the
16
+ authority for workflow policy, commands, templates, and built-in Skills. Do not
17
+ infer write permission from this file and do not copy its policy into project
18
+ files.
19
+
20
+ ## Route
21
+
22
+ 1. Read the repository's own `AGENTS.md` and project instructions when present.
23
+ 2. Run `loop-agent --repo-root . operator guide --json`. Treat its typed project
24
+ status and single `next.command` as the controller-owned route for an
25
+ uninitialized, ready, update-required, or blocked workspace.
26
+ 3. For a direct read-only surface comparison, run `loop-agent init check-update
27
+ --repo-root . --json`.
28
+ 4. For read-only orientation, use `loop-agent inspect --json`, `loop-agent task
29
+ status <task-id> --json`, and `loop-agent dag doctor --run-id <run-id> --json`.
30
+ 5. For new implementation work, use `loop-agent task advance` with explicit
31
+ allowed and forbidden paths, then review the generated writeSet before
32
+ approval.
33
+ 6. Long-running DAG execution needs a durable owner. Prefer the Console
34
+ operation returned by `agent-worker console`; do not start an unowned
35
+ foreground DAG command that the host may terminate.
36
+
37
+ If a command reports a gate, controller identity mismatch, active run, or human
38
+ decision, stop writing and follow the single `next` action in the typed result.
39
+ Package built-ins are addressed as `builtin:<name>`; project and user Skills are
40
+ addressed as `project:<name>` and `user:<name>` when an explicit source matters.
@@ -0,0 +1,33 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "catalogVersion": 1,
4
+ "entries": [
5
+ { "id": "legacy-full-v1-01", "path": "ai_workspace/loop-agent/decisions/README.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["d2b7cd3a7aada67c8918bc923c298c56d6b24f76ced331cea94c40aa819a8efb"], "canonicalTextSha256": ["d2b7cd3a7aada67c8918bc923c298c56d6b24f76ced331cea94c40aa819a8efb"], "retirement": "remove" },
6
+ { "id": "legacy-full-v1-02", "path": "ai_workspace/loop-agent/design/README.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["81c613511fa172c509c25614a24420fdca6895025cf4ffb30f11af245b82a244"], "canonicalTextSha256": ["81c613511fa172c509c25614a24420fdca6895025cf4ffb30f11af245b82a244"], "retirement": "remove" },
7
+ { "id": "legacy-full-v1-03", "path": "ai_workspace/loop-agent/exec-plans/README.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["794353280a8251794537df7cbbabaa0ae101ed83cad29d85aa6bd3c494deaa8c"], "canonicalTextSha256": ["794353280a8251794537df7cbbabaa0ae101ed83cad29d85aa6bd3c494deaa8c"], "retirement": "remove" },
8
+ { "id": "legacy-full-v1-04", "path": "ai_workspace/loop-agent/exec-plans/active/README.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["109f4cb2ff72281831afd8081d9022b087f2bcf1f7e9a74cc8d4e0a332ca2db3"], "canonicalTextSha256": ["109f4cb2ff72281831afd8081d9022b087f2bcf1f7e9a74cc8d4e0a332ca2db3"], "retirement": "remove" },
9
+ { "id": "legacy-full-v1-05", "path": "ai_workspace/loop-agent/exec-plans/completed/README.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["18659db03f919a2468ec07b144afced8fbed1fbf9574836cbe98e0a09c112c48"], "canonicalTextSha256": ["18659db03f919a2468ec07b144afced8fbed1fbf9574836cbe98e0a09c112c48"], "retirement": "remove" },
10
+ { "id": "legacy-full-v1-06", "path": "ai_workspace/loop-agent/harness-methodology-verification.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["0549642cf39664e0518400a7816c249347234861d548601478a7d8e4a52019db"], "canonicalTextSha256": ["23befc817df9e5ece4b8bdd3d9cefa709f3eebbb6549cdbfd3b94518827287d1"], "retirement": "remove" },
11
+ { "id": "legacy-full-v1-07", "path": "ai_workspace/loop-agent/progress/README.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["346e5c59a5f9affb466d549942e65a9738573c70cbcd565e654e74bb35ab3a6b"], "canonicalTextSha256": ["346e5c59a5f9affb466d549942e65a9738573c70cbcd565e654e74bb35ab3a6b"], "retirement": "remove" },
12
+ { "id": "legacy-full-v1-08", "path": "ai_workspace/loop-agent/reports/README.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["991df05df343d3438f1ad7b5d1267fab82afcb37a590b38deba3943fc94c94e0"], "canonicalTextSha256": ["991df05df343d3438f1ad7b5d1267fab82afcb37a590b38deba3943fc94c94e0"], "retirement": "remove" },
13
+ { "id": "legacy-full-v1-09", "path": "ai_workspace/loop-agent/templates/adr.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["93177f43902f32079db85031c06bda501bd2fe5c167ab00c51bf5591e6c7821d"], "canonicalTextSha256": ["c0315f1112ce05f66a6f41ab7865aba03e218c70afaf20153f2735d4e081cf4d"], "retirement": "remove" },
14
+ { "id": "legacy-full-v1-10", "path": "ai_workspace/loop-agent/templates/agent-dag-authority-surface-audit.prompt.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["c7fc215523a5fd8027b0ec476144d7d5b8274818adc7c9b6cf9a7d5f394352af"], "canonicalTextSha256": ["02023a687cfa8b67daa171da9d73d18885c80353f38157ac2966f456a0804f76"], "retirement": "remove" },
15
+ { "id": "legacy-full-v1-11", "path": "ai_workspace/loop-agent/templates/agent-dag-decision-envelope.schema.json", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["4baa9a83f7ca78849cd370969c8634d5e75d5addef85a0671da4084def967736"], "canonicalTextSha256": ["ff62c6515487b2e0c29043b7d71db7423e8331088b97cb3d05d7958cde5b7c33"], "retirement": "remove" },
16
+ { "id": "legacy-full-v1-12", "path": "ai_workspace/loop-agent/templates/agent-dag-decision-gate-dogfood-report.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["bc708ebca250ff64640159333325363367fd9b69d8d46b3ab9420d316acd40ce"], "canonicalTextSha256": ["0f0b17546647755639ea5937332dfe04c663b5edbf379b43210bc92c77898eaa"], "retirement": "remove" },
17
+ { "id": "legacy-full-v1-13", "path": "ai_workspace/loop-agent/templates/agent-dag-decision-gate.prompt.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["61f2964bbf2dbe025ad69d402ac29b8d555ebf9c325d52d7b371908586167bd3"], "canonicalTextSha256": ["a6c89374ca343edb171d05a118143ebe96c77f14d532af487e554d9c511f1cb8"], "retirement": "remove" },
18
+ { "id": "legacy-full-v1-14", "path": "ai_workspace/loop-agent/templates/agent-dag-process-supervisor.prompt.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["cd20efd90a23001ca05e745e9a79c14b85d8926aa471b519625e1b8138e82938"], "canonicalTextSha256": ["660af472281b66d474fb8f269798dbee7714bbff92eb2837d8fbc23831b13892"], "retirement": "remove" },
19
+ { "id": "legacy-full-v1-15", "path": "ai_workspace/loop-agent/templates/agent-dag-review-verdict.prompt.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["04961e5e728cbddbcf07c4ef77437d2a6367e254345298ce1653d50bfede0629"], "canonicalTextSha256": ["c63750b0230744730e68caba8830dba1ea347dd31e0f107a81e8edff0b9521ef"], "retirement": "remove" },
20
+ { "id": "legacy-full-v1-16", "path": "ai_workspace/loop-agent/templates/exec-plan.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["f8ca330a8b22db7261165bd128a6ad2e86d9c3b63a39d5a734915bc305d8c00c"], "canonicalTextSha256": ["4c34349cc6e79ac71923ea3408d94cff809aaac94d9390a7a93a1146d90b4b18"], "retirement": "remove" },
21
+ { "id": "legacy-full-v1-17", "path": "ai_workspace/loop-agent/templates/feature-spec.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["8ce457e9239a41855cabf85f4c2910d9455e7303a48e38253870ed5152258282"], "canonicalTextSha256": ["0fcfb89c50a4ba38120cb34827f01f1023b8a1de2c8a6cddcf0137764e63219d"], "retirement": "remove" },
22
+ { "id": "legacy-full-v1-18", "path": "ai_workspace/loop-agent/templates/progress-log.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["5db2b5a0ac22a980e334775c3d111ea340e867285b9763477e17ee6c9f45fe7b"], "canonicalTextSha256": ["0df84ccd0c93bdbfbf98245c691be6ac71738679685568991a01d4e2134be540"], "retirement": "remove" },
23
+ { "id": "legacy-full-v1-19", "path": "ai_workspace/loop-agent/templates/qa-report.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["7eb8eff6e35f8bfc1dfcdbf16c149a97929e389288c49e3b15e4b2f7c3b0dd45"], "canonicalTextSha256": ["2f1e54542175569f13243f8d0b6b29663893919072e21fa2a25abac67b53accf"], "retirement": "remove" },
24
+ { "id": "legacy-full-v1-20", "path": "ai_workspace/loop-agent/templates/sprint-contract.md", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["6f1daaf7f06f772ffe3177fc18bb1ac10866863b671a472c645912469d6a5b7d"], "canonicalTextSha256": ["23cbcd347087e0bc4e0d1eb8853421b9aa948c40e332c2d99714879469ff213c"], "retirement": "remove" },
25
+ { "id": "legacy-full-v1-21", "path": "scripts/check-active-plan-status.sh", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["24821c2bb128a9b86fadf5a1a0006f23cc5557ad93cba7a959144bdf7753845d"], "canonicalTextSha256": ["24821c2bb128a9b86fadf5a1a0006f23cc5557ad93cba7a959144bdf7753845d"], "retirement": "remove" },
26
+ { "id": "legacy-full-v1-22", "path": "scripts/check-architecture-boundaries.sh", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["38f07e0758bcf369266d1a6eb08cefeb1592ea857f7deaf3153ac8c096965a07"], "canonicalTextSha256": ["38f07e0758bcf369266d1a6eb08cefeb1592ea857f7deaf3153ac8c096965a07"], "retirement": "remove" },
27
+ { "id": "legacy-full-v1-23", "path": "scripts/check-doc-index.sh", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["e207c9458a65f4a5ae954704cab61888c070a6a8c671fdb8b5070138c1f9f05e"], "canonicalTextSha256": ["e207c9458a65f4a5ae954704cab61888c070a6a8c671fdb8b5070138c1f9f05e"], "retirement": "remove" },
28
+ { "id": "legacy-full-v1-24", "path": "scripts/check-doc-links.sh", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["5e57e80018dcc3fba0868876acfaeddcaf46845a046fe593290455b3940d9ca1"], "canonicalTextSha256": ["5e57e80018dcc3fba0868876acfaeddcaf46845a046fe593290455b3940d9ca1"], "retirement": "remove" },
29
+ { "id": "legacy-full-v1-25", "path": "scripts/check-engineering-structure.sh", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["d9a2ab94c35960033725b5c6fb9535cf91eefa7295fc07bcd904930627df09a8"], "canonicalTextSha256": ["d9a2ab94c35960033725b5c6fb9535cf91eefa7295fc07bcd904930627df09a8"], "retirement": "remove" },
30
+ { "id": "legacy-full-v1-26", "path": "scripts/check-exec-plan-index-sync.sh", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["a70395b3cd17106d1d53e877880f46a73e4dcbcea5a4fb32ea2661aebfd520bf"], "canonicalTextSha256": ["a70395b3cd17106d1d53e877880f46a73e4dcbcea5a4fb32ea2661aebfd520bf"], "retirement": "remove" },
31
+ { "id": "legacy-full-v1-27", "path": "scripts/check-harness-runtime-clean.sh", "mode": "copied", "releaseFamily": "legacy-full-v1", "templateIdentity": "loop-agent-0.11-full-init", "rawSha256": ["4f0fe0d161e9cbb6b371392e776337c0416ac9e95aee4586e626deed9a6da51e"], "canonicalTextSha256": ["4f0fe0d161e9cbb6b371392e776337c0416ac9e95aee4586e626deed9a6da51e"], "retirement": "remove" }
32
+ ]
33
+ }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: fe-test-ui-scout
3
- description: 在写 frontend-test Wave PRD/回归目录之前,对真实运行的被测页面做只读锚点侦察,产出并维护 {testRoot}/rag/ui-anchors.md 锚点台账(默认 testcase/frontend/rag/ui-anchors.md)。用 playwright-cli snapshot/find 逐字面验证命中数与唯一性,防止 PRD 验收标准引用不存在或不唯一的文案。触发词:frontend-test、锚点、台账、ui-anchors、侦察、写 PRD 前、snapshot/find 校准、Wave PRD。
3
+ description: 在写 frontend-test Wave PRD/回归目录之前,对真实运行的被测页面做只读锚点侦察,产出并维护 {testRoot}/rag/ui-anchors.md 锚点台账(默认 .harness/testcase/frontend/rag/ui-anchors.md)。用 playwright-cli snapshot/find 逐字面验证命中数与唯一性,防止 PRD 验收标准引用不存在或不唯一的文案。触发词:frontend-test、锚点、台账、ui-anchors、侦察、写 PRD 前、snapshot/find 校准、Wave PRD。
4
4
  references:
5
5
  - path: references/ledger-schema.md
6
6
  required: true
@@ -13,7 +13,7 @@ references:
13
13
  ## 定位
14
14
 
15
15
  写 Wave PRD / 校准回归目录 AC **之前**的前置侦察。产出锚点台账
16
- `{testRoot}/rag/ui-anchors.md`(默认 `testcase/frontend/rag/ui-anchors.md`):每个「页面 × 状态」下真实可见、
16
+ `{testRoot}/rag/ui-anchors.md`(默认 `.harness/testcase/frontend/rag/ui-anchors.md`):每个「页面 × 状态」下真实可见、
17
17
  `find` 可命中的字面清单。PRD 的每条 `find "..."` 断言必须能在台账找到对应行;
18
18
  台账没有的字面禁止写进验收标准。
19
19
 
@@ -23,7 +23,7 @@ references:
23
23
 
24
24
  ## 输入
25
25
 
26
- - 被测 baseUrl(来自 `{testRoot}/rag/context.md` 的 `environmentProbe=reachable` URL;默认 `testcase/frontend/rag/context.md`)
26
+ - 被测 baseUrl(来自 `{testRoot}/rag/context.md` 的 `environmentProbe=reachable` URL;默认 `.harness/testcase/frontend/rag/context.md`)
27
27
  - 目标 Wave 的 AC 清单(回归目录中本 Wave 范围的行)
28
28
  - 既有台账(增量更新,不整表重写)
29
29
 
@@ -56,7 +56,7 @@ references:
56
56
 
57
57
  ## 输出
58
58
 
59
- - `{testRoot}/rag/ui-anchors.md`(增量更新;默认 `testcase/frontend/rag/ui-anchors.md`)
59
+ - `{testRoot}/rag/ui-anchors.md`(增量更新;默认 `.harness/testcase/frontend/rag/ui-anchors.md`)
60
60
  - 侦察小结(对话内输出,不落盘;结论回写 PRD 草稿的锚点引用)
61
61
 
62
62
  ## References
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## 文件位置与命名
4
4
 
5
- - 路径:`{testRoot}/rag/ui-anchors.md`(默认 `testcase/frontend/rag/ui-anchors.md`)
5
+ - 路径:`{testRoot}/rag/ui-anchors.md`(默认 `.harness/testcase/frontend/rag/ui-anchors.md`)
6
6
  - 编码:UTF-8,LF;表格用 GitHub Flavored Markdown。
7
7
  - 台账是**增量账本**:修订不删除历史行;失效行改状态列并注明原因。
8
8
 
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: init-update
3
+ description: Safely audit and update an existing loop-agent initialization when the user explicitly invokes /skill:init-update. Uses controller-owned candidate evidence and decisions; never deletes files directly.
4
+ ---
5
+
6
+ # Init Update
7
+
8
+ Use this Skill only after explicit invocation. It helps an existing workspace adopt the current initialization surface without treating old controller files as user content or guessing that user files are disposable.
9
+
10
+ ## Workflow
11
+
12
+ 1. Confirm the intended workspace and run `loop-agent --version` so the controller identity is visible.
13
+ 2. Run `loop-agent init check-update --legacy-audit --repo-root . --json` for a read-only explanation. Distinguish `coreState` from `migrationState`.
14
+ 3. Start or resume the controller-owned lifecycle with `loop-agent init upgrade --repo-root . --json`. Continue the same `runId` until it completes, reaches a genuine model merge, or needs a user decision.
15
+ 4. Explain automatic actions, external consumers, modified files, and uncertain provenance in grouped language. Ask the user only where the controller reports a human decision.
16
+ 5. Convert explicit choices into the run-bound decision file exactly as reported. Each legacy decision must retain its `candidateId`, `path`, and `expectedSha256`; never invent a path, hash, candidate id, glob, or directory decision.
17
+ 6. Resume with `loop-agent init upgrade --repo-root . --continue --run-id <runId> --decision-file <repo-relative-json> --json`.
18
+ 7. Report removed files, retained files, unresolved consumers, `coreState`, `migrationState`, and the resumable `runId`.
19
+
20
+ ## Decision Rules
21
+
22
+ - Prefer `retain-project-content` when the file is valid project content.
23
+ - Use `preserve-unproven` when ownership remains uncertain.
24
+ - Use `delete-listed-file` only after the user explicitly approves the exact listed candidates. Manual Skill invocation alone is not deletion approval.
25
+ - A candidate with consumers must be migrated and re-audited before deletion. Do not bypass the controller when it refuses the decision.
26
+ - If the user postpones a choice, leave the run in `review-required`; a ready core can continue running DAGs.
27
+
28
+ ## Hard Boundaries
29
+
30
+ - Do not call `rm`, `Remove-Item`, `git clean`, directory deletion, or a custom deletion script.
31
+ - Do not edit `.harness/init-surface.json`, init-upgrade state, receipts, candidate ids, or hashes by hand.
32
+ - Do not treat modified, staged, untracked, symlinked, junction-backed, referenced, or unproven content as automatically removable.
33
+ - Do not continue mutation while the controller reports active DAG, Worker, or chat runtime activity.
34
+ - Do not expose credentials, provider configuration, or unrelated user files.
@@ -0,0 +1,6 @@
1
+ interface:
2
+ display_name: "Init Update"
3
+ short_description: "Safely audit and update loop-agent initialization"
4
+ default_prompt: "Use $init-update to audit and safely update this workspace initialization."
5
+ policy:
6
+ allow_implicit_invocation: false
@@ -55,7 +55,7 @@ request
55
55
 
56
56
  ## 推荐执行流程
57
57
 
58
- 使用 `{testRoot}/rag/context.md`(默认 `testcase/frontend/rag/context.md`)中已由 environment shell 标记为 `reachable` 的非生产 `baseUrl` 和默认浏览器 session;不得创建 named session。交互前先获取 snapshot,并只使用 snapshot 中可见的 ref 或已知安全 locator。截图写入当前 case 的 `{evidenceDir}/<caseId>/`,canonical 文件名仍是 `final.png`。
58
+ 使用 `{testRoot}/rag/context.md`(默认 `.harness/testcase/frontend/rag/context.md`)中已由 environment shell 标记为 `reachable` 的非生产 `baseUrl` 和默认浏览器 session;不得创建 named session。交互前先获取 snapshot,并只使用 snapshot 中可见的 ref 或已知安全 locator。截图写入当前 case 的 `{evidenceDir}/<caseId>/`,canonical 文件名仍是 `final.png`。
59
59
 
60
60
  ```text
61
61
  playwright-cli open --browser=chrome http://localhost:5173
@@ -13,7 +13,7 @@ description: 根据 FE-test RAG 知识包生成可由受限 playwright_cli runti
13
13
 
14
14
  ## 输入与边界
15
15
 
16
- 默认产物根是 `testcase/frontend/`。若任务配置了 `frontendTest.testRoot`,把下列路径中的 `testcase/frontend/` 整段替换为该根(不要只替换 `testcase/`)。
16
+ 默认产物根是 `.harness/testcase/frontend/`。若任务配置了 `frontendTest.testRoot`,把下列路径中的 `.harness/testcase/frontend/` 整段替换为该根(不要只替换 `.harness/testcase/`)。
17
17
 
18
18
  - 只读取 `{testRoot}/rag/context.md`、`coverage-map.md` 与已有 `{testRoot}/cases/`。
19
19
  - 若存在 `{testRoot}/rag/ui-anchors.md` 锚点台账,必须一并读取并作为 UI 断言的唯一事实源;台账缺失时按 RAG 知识包生成,但不得引用台账外的具体控件字面(缺失信息标 `blocked`)。
@@ -40,8 +40,8 @@ description: 根据 FE-test RAG 知识包生成可由受限 playwright_cli runti
40
40
  (例:`FE-LOGIN-001-core`)。禁止把验收标准写成 caseId。
41
41
  - `acIds` = **验收标准 ID 列表**,形态 `AC-FE-*` / `AC-*`
42
42
  (例:`["AC-FE-001"]`)。禁止把用例 ID 放进 acIds。
43
- - `casePath` 必须等于 `{casesDir}/<caseId>.md`(默认 `testcase/frontend/cases/<caseId>.md`);
44
- `evidenceDir` 必须等于 `{evidenceDir}/<caseId>/`(默认 `testcase/frontend/evidence/<caseId>/`)。
43
+ - `casePath` 必须等于 `{casesDir}/<caseId>.md`(默认 `.harness/testcase/frontend/cases/<caseId>.md`);
44
+ `evidenceDir` 必须等于 `{evidenceDir}/<caseId>/`(默认 `.harness/testcase/frontend/evidence/<caseId>/`)。
45
45
  - `manifest` 使用 `schemaVersion: 1`,每项只含 `caseId`、`casePath`、`dimension`、`acIds`、
46
46
  `evidenceDir`。所有 ID、路径和 evidenceDir 必须唯一,并位于 `{testRoot}/` 内。
47
47
  - `index.md` 按功能点列出 case、维度、AC、数据依赖、API 映射和预期执行状态。
@@ -75,7 +75,7 @@ description: 根据 FE-test RAG 知识包生成可由受限 playwright_cli runti
75
75
  7. 明确的 UI/API 预期与数据清理结果;无法满足的环境或数据依赖必须写为 `blocked`。
76
76
 
77
77
  所有文件型输出均由 controller 绑定到执行节点提供的
78
- `{evidenceDir}/<case-id>/` 工作目录(默认 `testcase/frontend/evidence/<case-id>/`)。截图一律使用 canonical 语法
78
+ `{evidenceDir}/<case-id>/` 工作目录(默认 `.harness/testcase/frontend/evidence/<case-id>/`)。截图一律使用 canonical 语法
79
79
  `playwright-cli screenshot --filename final.png`;如确有从最新 snapshot 解析出的真实元素 ref,写为
80
80
  `playwright-cli screenshot e5 --filename final.png`。`pdf` 必须写为
81
81
  `playwright-cli pdf --filename final.pdf`。`snapshot` 无 filename 时仅返回响应;需要文件时使用
@@ -1 +0,0 @@
1
- import{ag as o,ah as n}from"./mermaid.core-4P9yPC9c.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-GF5L2VYU-C3uE-yc2.js";import{_ as i}from"./mermaid.core-4P9yPC9c.js";import"./chunk-5VM5RSS4-BNAuTOLE.js";import"./chunk-XXDRQBXY-CTQDmJcp.js";import"./chunk-KBJHAD2P-D_AtEYQL.js";import"./chunk-2GRJ4B5K-B9fh0IkF.js";import"./index-CTMZsDmh.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-GF5L2VYU-C3uE-yc2.js";import{_ as i}from"./mermaid.core-4P9yPC9c.js";import"./chunk-5VM5RSS4-BNAuTOLE.js";import"./chunk-XXDRQBXY-CTQDmJcp.js";import"./chunk-KBJHAD2P-D_AtEYQL.js";import"./chunk-2GRJ4B5K-B9fh0IkF.js";import"./index-CTMZsDmh.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};