@tea-agent/loop-agent 0.43.0-next.9 → 0.43.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 (287) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +31 -2309
  3. package/README.md +7 -0
  4. package/dist/application/dag/args.js +8 -0
  5. package/dist/application/task-lifecycle/advance.js +38 -7
  6. package/dist/build-stamp.json +3 -3
  7. package/dist/cli/command-definitions.js +2 -0
  8. package/dist/cli/program.js +3 -1
  9. package/dist/cli/update/init-surface-notifier.js +2 -0
  10. package/dist/cli/update/policy.js +2 -0
  11. package/dist/commands/client-recovery.js +20 -55
  12. package/dist/commands/cursor-prompt.js +2 -0
  13. package/dist/commands/dag-approve.js +2 -0
  14. package/dist/commands/dag-final-verification.js +2 -0
  15. package/dist/commands/dag-init-hybrid.js +2 -0
  16. package/dist/commands/dag-reconcile-tasks.js +2 -0
  17. package/dist/commands/dag-reject.js +2 -0
  18. package/dist/commands/dag-report.js +2 -0
  19. package/dist/commands/dag-rerun.js +2 -0
  20. package/dist/commands/dag-resume.js +2 -0
  21. package/dist/commands/dag-workflow-compile.js +2 -0
  22. package/dist/commands/dag-workflow-plan.js +2 -0
  23. package/dist/commands/dag-workflow-validate.js +2 -0
  24. package/dist/commands/delegate.js +2 -0
  25. package/dist/commands/examples.js +2 -0
  26. package/dist/commands/import-prd.js +2 -0
  27. package/dist/commands/init-model-catalog.js +2 -0
  28. package/dist/commands/init.js +19 -13
  29. package/dist/commands/instructions.js +2 -0
  30. package/dist/commands/knowledge.js +2 -0
  31. package/dist/commands/loop-benchmark.js +2 -0
  32. package/dist/commands/pi-prompt.js +2 -0
  33. package/dist/commands/pi-reuse-benchmark.js +2 -0
  34. package/dist/commands/promote-run.js +2 -0
  35. package/dist/commands/stats.js +1 -1
  36. package/dist/commands/study-init.js +2 -0
  37. package/dist/commands/task-advance.js +34 -0
  38. package/dist/commands/task-source-prepare.js +2 -0
  39. package/dist/commands/worktree-create.js +2 -0
  40. package/dist/commands/worktree-remove.js +2 -0
  41. package/dist/executors/dag-pi-executor.js +1650 -198
  42. package/dist/executors/pi-executor.js +85 -3
  43. package/dist/executors/pi-sdk-executor.js +18 -0
  44. package/dist/executors/shell-executor.js +93 -7
  45. package/dist/executors/shell-verification.js +3 -0
  46. package/dist/executors/shell-write-guard.js +27 -32
  47. package/dist/governance/exec-plans.js +6 -3
  48. package/dist/infrastructure/console/app-data.js +6 -0
  49. package/dist/shared/artifacts-core.js +2 -0
  50. package/dist/shared/backend-dogfood-preflight.js +47 -0
  51. package/dist/shared/dag-failure-category.js +3 -0
  52. package/dist/shared/git-progress.js +2 -0
  53. package/dist/shared/one-shot-prompt-args.js +2 -0
  54. package/dist/shared/operator/capabilities.js +180 -0
  55. package/dist/shared/package-metadata.js +6 -4
  56. package/dist/shared/pi-context-pressure/extension.js +26 -16
  57. package/dist/shared/pi-context-pressure/sift-bridge.js +1 -1
  58. package/dist/shared/pi-provider-recovery.js +182 -0
  59. package/dist/shared/pi-retry-settings.js +40 -0
  60. package/dist/shared/reference-context.js +2 -0
  61. package/dist/task/config-types.js +29 -0
  62. package/dist/task/contract/project.js +9 -0
  63. package/dist/task/contract/recover.js +6 -0
  64. package/dist/task/contract/schema.js +17 -0
  65. package/dist/task/source-prepare/artifact-meta.js +9 -2
  66. package/dist/task/source-prepare/build-draft.js +60 -0
  67. package/dist/task/source-prepare/fragment-inventory.js +4 -1
  68. package/dist/task/source-prepare/parse-intent.js +36 -11
  69. package/dist/task/task-demand-routing.js +5 -2
  70. package/dist/worker/console/chat/browser-automation.js +523 -0
  71. package/dist/worker/console/chat/browser-policy.js +6 -36
  72. package/dist/worker/console/chat/browser-routes.js +188 -56
  73. package/dist/worker/console/chat/explore-tools.js +5 -2
  74. package/dist/worker/console/chat/pi-mode-loop-isolation.js +155 -0
  75. package/dist/worker/console/chat/pi-runtime/custom-tools/ask-user-question.js +44 -0
  76. package/dist/worker/console/chat/pi-runtime/custom-tools/browser-tools.js +184 -0
  77. package/dist/worker/console/chat/pi-runtime/custom-tools/explore-tools.js +202 -0
  78. package/dist/worker/console/chat/pi-runtime/custom-tools/goal-tools.js +79 -0
  79. package/dist/worker/console/chat/pi-runtime/custom-tools/operator-tools.js +94 -0
  80. package/dist/worker/console/chat/pi-runtime/custom-tools/scheduled-goal-tools.js +22 -0
  81. package/dist/worker/console/chat/pi-runtime/custom-tools/todo-write.js +38 -0
  82. package/dist/worker/console/chat/pi-runtime/inspection-types.js +28 -0
  83. package/dist/worker/console/chat/pi-runtime/inspection.js +439 -0
  84. package/dist/worker/console/chat/pi-runtime/progressive-tools.js +195 -0
  85. package/dist/worker/console/chat/pi-runtime/sdk-bindings.js +153 -0
  86. package/dist/worker/console/chat/pi-runtime/sdk-session.js +5 -0
  87. package/dist/worker/console/chat/pi-runtime.js +208 -1138
  88. package/dist/worker/console/chat/routes.js +27 -7
  89. package/dist/worker/console/chat/scheduled-goal-booking.js +59 -0
  90. package/dist/worker/console/chat/scheduled-goal-delivery.js +27 -0
  91. package/dist/worker/console/chat/scheduled-goal-request.js +190 -0
  92. package/dist/worker/console/chat/sdd-data-alignment.js +1 -1
  93. package/dist/worker/console/chat/session-mode-view.js +5 -4
  94. package/dist/worker/console/chat/session-mode.js +18 -12
  95. package/dist/worker/console/chat/session-store.js +42 -9
  96. package/dist/worker/console/chat/tool-preview.js +115 -0
  97. package/dist/worker/console/chat/tools.js +10 -0
  98. package/dist/worker/console/chat/turn-order.js +13 -0
  99. package/dist/worker/console/chat/turn-process.js +32 -30
  100. package/dist/worker/console/console-update-and-init.js +1 -19
  101. package/dist/worker/console/console-update-runtime.js +5 -20
  102. package/dist/worker/console/operator-actions.js +63 -1
  103. package/dist/worker/console/prd-intake-bridge.js +54 -1
  104. package/dist/worker/console/routes.js +8 -0
  105. package/dist/worker/console/scheduled-goal-host.js +98 -0
  106. package/dist/worker/console/scheduled-goal-operation-adapter.js +127 -0
  107. package/dist/worker/console/server.js +24 -1
  108. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-D_fNbWc_.js → abnfDiagram-N423BO3Z-8-j6y-sd.js} +1 -1
  109. package/dist/worker/console/static/assets/{arc-_HuqLW6m.js → arc-eoQiMvuk.js} +1 -1
  110. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-Djy2qY1m.js → architectureDiagram-T3A2C74G-C4A3uMcI.js} +1 -1
  111. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-bB-1TSyY.js → blockDiagram-VBNYF7ZC-D4zD2F-Q.js} +1 -1
  112. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-C5Hmghrz.js → c4Diagram-5PPSVZJV-j1RkJziL.js} +1 -1
  113. package/dist/worker/console/static/assets/channel-ChE7y-cx.js +1 -0
  114. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-Duyl39oy.js → chunk-2GRJ4B5K-YBHmhik1.js} +1 -1
  115. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-x6mdnSyf.js → chunk-2Q5K7J3B-COfWyo9P.js} +1 -1
  116. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-WlBuFj7W.js → chunk-5RXB4S5H-I99OUkHY.js} +1 -1
  117. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-CTF429HX.js → chunk-5VM5RSS4-XKxoJNJ4.js} +1 -1
  118. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-Dwd6r-SF.js → chunk-6Q2QTUOP-DLT_cYx1.js} +1 -1
  119. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-C-Br82D1.js → chunk-GF5L2VYU-CxcKZ9mV.js} +1 -1
  120. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-CuGp0DeE.js → chunk-JWPE2WC7-V1EqXdjY.js} +1 -1
  121. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-CJhFX6Lh.js → chunk-KBJHAD2P-DebTtdFp.js} +1 -1
  122. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DpGOa_jT.js → chunk-RYQCIY6F-B-ivNRDf.js} +1 -1
  123. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-DXJaTynd.js → chunk-XXDRQBXY-DC_Ds11b.js} +1 -1
  124. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-C01TCf2X.js +1 -0
  125. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-C01TCf2X.js +1 -0
  126. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CRBZWjE4.js → cose-bilkent-JH36ORCC-sWEqKwIb.js} +1 -1
  127. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-BdXcxtlb.js → cynefin-VYW2F7L2-BXa_dcu4.js} +1 -1
  128. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-07UKsOts.js → cynefinDiagram-MW4NZA55-C-Mle84F.js} +1 -1
  129. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-D38p9__S.js → dagre-VZM6K2ZE-CXPDBITe.js} +1 -1
  130. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-nSiBNNjH.js → diagram-7IWD3JNH-CC-WJQfa.js} +1 -1
  131. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-BFOTot5D.js → diagram-B4RE2ZJO-CDAV5Vs4.js} +1 -1
  132. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-DypKaZ6k.js → diagram-LBJQPF4R-CmFiAcNz.js} +1 -1
  133. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-B6yoOQeW.js → diagram-Q27KOJAE-DPBZHuyn.js} +1 -1
  134. package/dist/worker/console/static/assets/{diagram-UB23O5K3-BHYS6viX.js → diagram-UB23O5K3-jUlm_Ds3.js} +1 -1
  135. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-D2VD5Snj.js → ebnfDiagram-BXEA7PRR-DWhQ3mfY.js} +1 -1
  136. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-E98mWxN1.js → erDiagram-JOGREHBK-Tr2gMqet.js} +1 -1
  137. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-CT1zxhqP.js → flowDiagram-UKHOOZJN-DJjVQHPA.js} +1 -1
  138. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-6GcngNcy.js → ganttDiagram-PKOTCBZU-D74dQ4u0.js} +1 -1
  139. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-DCL6NvKe.js → gitGraphDiagram-DS77QQ5N-DwW0tZ0X.js} +1 -1
  140. package/dist/worker/console/static/assets/index-BWkIfcrK.css +1 -0
  141. package/dist/worker/console/static/assets/index-Cdkvw_H6.js +469 -0
  142. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-C0627e-9.js → infoDiagram-6WML65LV-ILCbxJyb.js} +1 -1
  143. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-C_u3P6Ik.js → ishikawaDiagram-WSZJBQD7-DeuWBQ89.js} +1 -1
  144. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-DPDPv9HL.js → journeyDiagram-NVQOT4AX-CF5ih8Fk.js} +1 -1
  145. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-D3OHdWiO.js → kanban-definition-27J2QSJJ-C7yOSuRO.js} +1 -1
  146. package/dist/worker/console/static/assets/{linear-DI88zD7n.js → linear-BDZ9riWi.js} +1 -1
  147. package/dist/worker/console/static/assets/{mermaid.core-p2l8IrWY.js → mermaid.core-7pKqYtpZ.js} +5 -5
  148. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-B1bAX-oS.js → mindmap-definition-FAOFIHXS-LeJDybSU.js} +1 -1
  149. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DwOnWxdD.js → pegDiagram-VL7TDLO6-BJvT3pMD.js} +1 -1
  150. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-xRkTXnJC.js → pieDiagram-7S7Q4E2Y-_rGqpMan.js} +1 -1
  151. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-_9UC5Zio.js → quadrantDiagram-CIZ2JOQS-DPcSv5aA.js} +1 -1
  152. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-CgEUirWJ.js → railroadDiagram-AXF67PYL-Drxx4hkJ.js} +1 -1
  153. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-Czbpwiyz.js → requirementDiagram-LRYGKXZP-BCTUdU4z.js} +1 -1
  154. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-_j7_KiqY.js → sankeyDiagram-W5VNT64P-B6wzbZmB.js} +1 -1
  155. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-BNJa6Hyi.js → sequenceDiagram-SI44F4Z6-BGt8d3QQ.js} +1 -1
  156. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-DedpKtOc.js → sizeCapture-X5ZJPWSS-7nlhJKo7.js} +1 -1
  157. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-BBvthr7c.js → stateDiagram-OKZ733FA-Cv2stqMA.js} +1 -1
  158. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DC7V5vcq.js +1 -0
  159. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-Ds7umgEM.js → swimlanes-SLNWSIFB-qDAo4Yc1.js} +2 -2
  160. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Bwy4QUTO.js +8 -0
  161. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-CKa-p1nF.js → timeline-definition-Z64GVDOM-CKbDNKTr.js} +1 -1
  162. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-LoUNR56o.js → vennDiagram-T6HMQDX7-DI-9EHic.js} +1 -1
  163. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-Bqbl6ym7.js → wardleyDiagram-T6FBY63Y-BrzzRDpX.js} +1 -1
  164. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-B8dUg4lf.js → xychartDiagram-ELKLHX3M-BclH5hGh.js} +1 -1
  165. package/dist/worker/console/static/index.html +2 -2
  166. package/dist/worker/console/static-src/operator-chat/chat-scroll-position.js +24 -0
  167. package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +41 -11
  168. package/dist/worker/console/static-src/operator-chat/compaction-message.js +3 -17
  169. package/dist/worker/console/static-src/operator-chat/composer-session-ledger.js +192 -0
  170. package/dist/worker/console/static-src/operator-chat/pending-user-message.js +9 -1
  171. package/dist/worker/console/static-src/operator-chat/slash-palette-nav.js +15 -5
  172. package/dist/worker/console/static-src/operator-chat/timeline-merge.js +29 -0
  173. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +92 -38
  174. package/dist/worker/console/static-src/operator-chat/useChatStream.js +145 -70
  175. package/dist/worker/console/static-src/operator-chat/useChatThread.js +38 -55
  176. package/dist/worker/console/static-src/operator-chat/useComposer.js +182 -69
  177. package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +2 -0
  178. package/dist/worker/console/static-src/prd-file-import.js +3 -1
  179. package/dist/worker/console/workspace-context.js +22 -0
  180. package/dist/worker/console/workspace-initialization.js +209 -0
  181. package/dist/worker/delivery/git-transaction.js +2 -0
  182. package/dist/worker/feature/fullstack-validate.js +2 -0
  183. package/dist/worker/loop-agent/loop-agent-client.js +8 -2
  184. package/dist/worker/materialize/harness-task-materializer.js +4 -1
  185. package/dist/worker/metrics/projector.js +1 -1
  186. package/dist/worker/observability/event-store.js +4 -1
  187. package/dist/worker/observability/read-model.js +4 -1
  188. package/dist/worker/observe/node-transparency.js +23 -1
  189. package/dist/worker/observe/routes.js +4 -0
  190. package/dist/worker/observe/static/operator-chrome.js +3 -1
  191. package/dist/worker/observe/static/styles.css +7 -4
  192. package/dist/worker/observe/static/views/dag-inspector.js +5 -19
  193. package/dist/worker/outcomes/declared-artifacts.js +2 -0
  194. package/dist/worker/preflight.js +3 -0
  195. package/dist/worker/scheduler/scheduled-goal-dispatch.js +117 -0
  196. package/dist/worker/scheduler/scheduled-goal-evidence.js +167 -0
  197. package/dist/worker/scheduler/scheduled-goal-recovery.js +62 -0
  198. package/dist/worker/scheduler/scheduled-goal-store.js +699 -0
  199. package/dist/worker/scheduler/scheduled-goal-supervisor.js +132 -0
  200. package/dist/worker/scheduler/scheduled-goal-time.js +102 -0
  201. package/dist/worker/scheduler/scheduled-goal-types.js +95 -0
  202. package/dist/worker/task-spec/validate.js +4 -1
  203. package/dist/workflows/dag/backend-test-markdown-workflow.js +6 -24
  204. package/dist/workflows/dag/backend-test-plan-protocol.js +82 -5
  205. package/dist/workflows/dag/dag-retry-schema.js +11 -0
  206. package/dist/workflows/dag/decision-envelope.js +2 -0
  207. package/dist/workflows/dag/dynamic-runtime/shared.js +2 -2
  208. package/dist/workflows/dag/frontend-closeout.js +3 -1
  209. package/dist/workflows/dag/frontend-committed-facts.js +461 -0
  210. package/dist/workflows/dag/frontend-durable-tools.js +15 -3
  211. package/dist/workflows/dag/frontend-implementation-contract.js +369 -12
  212. package/dist/workflows/dag/frontend-plan-canary.js +53 -0
  213. package/dist/workflows/dag/frontend-plan-decision-contract.js +803 -0
  214. package/dist/workflows/dag/frontend-plan-render.js +0 -2
  215. package/dist/workflows/dag/frontend-provider-capability-matrix.js +8 -61
  216. package/dist/workflows/dag/frontend-recovery-run.js +57 -0
  217. package/dist/workflows/dag/frontend-repair.js +55 -76
  218. package/dist/workflows/dag/frontend-review-context.js +42 -68
  219. package/dist/workflows/dag/frontend-review-scopes.js +2 -2
  220. package/dist/workflows/dag/frontend-risk.js +92 -10
  221. package/dist/workflows/dag/frontend-session-budget.js +117 -3
  222. package/dist/workflows/dag/frontend-shape.js +11 -55
  223. package/dist/workflows/dag/frontend-test-execution-evidence.js +35 -10
  224. package/dist/workflows/dag/frontend-typed-event-store.js +32 -25
  225. package/dist/workflows/dag/frontend-verification-trace.js +33 -54
  226. package/dist/workflows/dag/frontend-writer-admission.js +3 -47
  227. package/dist/workflows/dag/frontend-writer-status.js +0 -23
  228. package/dist/workflows/dag/init-hybrid.js +47 -19
  229. package/dist/workflows/dag/interrupt-request.js +2 -0
  230. package/dist/workflows/dag/lifecycle.js +11 -2
  231. package/dist/workflows/dag/node-execution.js +50 -13
  232. package/dist/workflows/dag/reconcile-run.js +2 -0
  233. package/dist/workflows/dag/repair-artifact.js +3 -1
  234. package/dist/workflows/dag/report.js +2 -0
  235. package/dist/workflows/dag/rerun-plan.js +10 -0
  236. package/dist/workflows/dag/rerun-task.js +79 -1
  237. package/dist/workflows/dag/retry-policy.js +18 -0
  238. package/dist/workflows/dag/scheduler.js +2 -4
  239. package/dist/workflows/dag/types.js +44 -6
  240. package/dist/workflows/dag/validate.js +4 -0
  241. package/docs/README.md +1 -0
  242. package/docs/architecture/runtime-boundaries.md +3 -3
  243. package/docs/governance/README.md +1 -0
  244. package/docs/init-surface.manifest.json +1 -0
  245. package/docs/operations/README.md +2 -0
  246. package/docs/templates/README.md +1 -1
  247. package/docs/templates/agent-dag.schema.json +2 -2
  248. package/docs/templates/backend-test-dag.json +14 -10
  249. package/docs/templates/frontend-implementation-contract.schema.json +0 -7
  250. package/package.json +9 -3
  251. package/skills/frontend-bounded-implement/references/code-standards.md +3 -3
  252. package/skills/frontend-contract/references/contract-protocol.md +3 -1
  253. package/skills/frontend-plan/SKILL.md +8 -6
  254. package/skills/frontend-plan/references/decision-contract.md +3 -3
  255. package/skills/frontend-review/SKILL.md +18 -28
  256. package/skills/frontend-review/references/review-findings.md +8 -3
  257. package/dist/commands/new-task.js +0 -5
  258. package/dist/commands/status.js +0 -57
  259. package/dist/commands/task-contract.js +0 -269
  260. package/dist/shared/prompts.js +0 -26
  261. package/dist/task/config.js +0 -2
  262. package/dist/task/contract/validate-draft.js +0 -106
  263. package/dist/task/goal.js +0 -3
  264. package/dist/task/index.js +0 -12
  265. package/dist/task/lifecycle.js +0 -1
  266. package/dist/task/operator/capabilities.js +0 -6
  267. package/dist/task/operator/envelope.js +0 -2
  268. package/dist/task/operator/index.js +0 -5
  269. package/dist/task/operator/registry.js +0 -2
  270. package/dist/task/operator/types.js +0 -1
  271. package/dist/task/paths.js +0 -1
  272. package/dist/task/source-state.js +0 -1
  273. package/dist/task/subagent-guidance.js +0 -1
  274. package/dist/worker/console/chat/sift-bridge.js +0 -1
  275. package/dist/worker/console/index.js +0 -20
  276. package/dist/worker/console/static/assets/channel-C0A6UEIa.js +0 -1
  277. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DzguNppy.js +0 -1
  278. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DzguNppy.js +0 -1
  279. package/dist/worker/console/static/assets/index-24jp3aBh.js +0 -468
  280. package/dist/worker/console/static/assets/index-CY6y6I8M.css +0 -1
  281. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BABVQnfM.js +0 -1
  282. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-D0qsLaxR.js +0 -8
  283. package/dist/worker/scheduler/index.js +0 -25
  284. package/dist/workflows/dag/facts.js +0 -4
  285. package/dist/workflows/dag/frontend-shadow-dual-write.js +0 -975
  286. package/dist/workflows/dag/index.js +0 -6
  287. package/dist/workflows/dynamic/index.js +0 -7
@@ -1,269 +0,0 @@
1
- import { ContractMutationError, adoptTaskContract, applyTaskContract, diffTaskContract, doctorTaskContract, loadDraftFromPath, observeTaskContractState, recoverTaskContract, validateDraftForTask, } from "../task/contract/index.js";
2
- import { operatorFailed, operatorSucceeded, processExitCodeForOutcome, writeOperatorJson, } from "../shared/operator/index.js";
3
- const USAGE = `usage:
4
- task contract validate --task <id> --input <path> [--json]
5
- task contract diff --task <id> --input <path> [--json]
6
-
7
- Advanced-only public leaves. Managed apply/show/adopt/doctor/recover are internal services
8
- reached via task advance / task status (or application APIs), not public CLI subcommands.`;
9
- export function parseTaskContractArgs(args) {
10
- const options = {};
11
- const positional = [];
12
- for (let i = 0; i < args.length; i += 1) {
13
- const token = args[i];
14
- if (token === "--json") {
15
- options.json = true;
16
- continue;
17
- }
18
- if (token === "--task") {
19
- options.task = args[i + 1];
20
- i += 1;
21
- continue;
22
- }
23
- if (token === "--input") {
24
- options.input = args[i + 1];
25
- i += 1;
26
- continue;
27
- }
28
- if (token === "--expected-revision") {
29
- const raw = args[i + 1];
30
- const n = Number(raw);
31
- if (!Number.isInteger(n) || n < 0) {
32
- throw new Error(`invalid --expected-revision: ${raw}`);
33
- }
34
- options.expectedRevision = n;
35
- i += 1;
36
- continue;
37
- }
38
- if (token === "--expected-observed-hash") {
39
- options.expectedObservedHash = args[i + 1];
40
- i += 1;
41
- continue;
42
- }
43
- if (token === "--request-id") {
44
- options.requestId = args[i + 1];
45
- i += 1;
46
- continue;
47
- }
48
- if (token === "--request-payload-sha256") {
49
- options.requestPayloadSha256 = args[i + 1];
50
- i += 1;
51
- continue;
52
- }
53
- if (token === "--tx-id") {
54
- options.txId = args[i + 1];
55
- i += 1;
56
- continue;
57
- }
58
- if (token.startsWith("-")) {
59
- throw new Error(`unknown flag ${token}\n${USAGE}`);
60
- }
61
- positional.push(token);
62
- }
63
- const subcommand = positional[0];
64
- if (!subcommand) {
65
- throw new Error(USAGE);
66
- }
67
- // show takes positional taskId; others prefer --task
68
- let taskId = options.task;
69
- if (subcommand === "show") {
70
- taskId = positional[1] ?? options.task;
71
- }
72
- return { subcommand, taskId, options };
73
- }
74
- function mutationOutcome(code) {
75
- switch (code) {
76
- case "REVISION_CONFLICT":
77
- case "OBSERVED_HASH_CONFLICT":
78
- case "REQUEST_ID_REUSE_CONFLICT":
79
- case "LEASE_HELD":
80
- return "conflict";
81
- case "NOT_FOUND":
82
- return "not-found";
83
- case "TRANSACTION_INCOMPLETE":
84
- case "OPERATION_NEEDS_RECONCILE":
85
- return "needs-reconcile";
86
- case "EXTERNALLY_MODIFIED":
87
- case "NOT_MANAGED":
88
- case "BINDING_DRIFT":
89
- return "blocked";
90
- case "INVALID_INPUT":
91
- case "PATH_OUTSIDE_REPO":
92
- case "UNSUPPORTED_SCHEMA_VERSION":
93
- return "invalid";
94
- default:
95
- return "rejected";
96
- }
97
- }
98
- function emit(result, json) {
99
- // Machine envelope is the default for task contract when --json is set;
100
- // without --json still print the same document for dogfood consistency.
101
- writeOperatorJson(result);
102
- if (!json) {
103
- // already wrote JSON; human path same for Phase 0.5
104
- }
105
- process.exitCode = processExitCodeForOutcome(result.outcome);
106
- }
107
- export async function runTaskContract(repoRoot, args) {
108
- let subcommand;
109
- let taskId;
110
- let options;
111
- try {
112
- ({ subcommand, taskId, options } = parseTaskContractArgs(args));
113
- }
114
- catch (error) {
115
- const result = operatorFailed({
116
- command: "task contract",
117
- outcome: "invalid",
118
- code: "INVALID_INPUT",
119
- message: error instanceof Error ? error.message : String(error),
120
- });
121
- emit(result, true);
122
- return;
123
- }
124
- const command = `task contract ${subcommand}`;
125
- try {
126
- switch (subcommand) {
127
- case "show": {
128
- if (!taskId) {
129
- throw new ContractMutationError("INVALID_INPUT", "task contract show requires <taskId>");
130
- }
131
- const state = await observeTaskContractState(repoRoot, taskId);
132
- const result = operatorSucceeded(command, { taskId, state });
133
- emit(result, options.json);
134
- return;
135
- }
136
- case "validate": {
137
- if (!taskId || !options.input) {
138
- throw new ContractMutationError("INVALID_INPUT", "task contract validate requires --task and --input");
139
- }
140
- const { draft } = await loadDraftFromPath(options.input, repoRoot);
141
- const validation = await validateDraftForTask({
142
- repoRoot,
143
- taskId,
144
- draft,
145
- });
146
- if (!validation.ok) {
147
- const result = operatorFailed({
148
- command,
149
- outcome: "invalid",
150
- code: "INVALID_INPUT",
151
- message: validation.errors.join("; "),
152
- details: { errors: validation.errors },
153
- });
154
- emit(result, options.json);
155
- return;
156
- }
157
- const result = operatorSucceeded(command, {
158
- taskId,
159
- valid: true,
160
- warnings: validation.warnings,
161
- });
162
- emit(result, options.json);
163
- return;
164
- }
165
- case "diff": {
166
- if (!taskId || !options.input) {
167
- throw new ContractMutationError("INVALID_INPUT", "task contract diff requires --task and --input");
168
- }
169
- const { draft } = await loadDraftFromPath(options.input, repoRoot);
170
- const diff = await diffTaskContract({ repoRoot, taskId, draft });
171
- const result = operatorSucceeded(command, diff);
172
- emit(result, options.json);
173
- return;
174
- }
175
- case "apply": {
176
- if (!taskId ||
177
- !options.input ||
178
- options.expectedRevision === undefined ||
179
- !options.expectedObservedHash ||
180
- !options.requestId ||
181
- !options.requestPayloadSha256) {
182
- throw new ContractMutationError("INVALID_INPUT", "task contract apply requires --task --input --expected-revision --expected-observed-hash --request-id --request-payload-sha256");
183
- }
184
- const loaded = await loadDraftFromPath(options.input, repoRoot);
185
- // Client-supplied payload hash must match file bytes
186
- if (loaded.payloadSha256 !== options.requestPayloadSha256) {
187
- throw new ContractMutationError("INVALID_INPUT", `request-payload-sha256 does not match input file hash (expected ${loaded.payloadSha256})`);
188
- }
189
- const applyResult = await applyTaskContract({
190
- repoRoot,
191
- taskId,
192
- draft: loaded.draft,
193
- expectedRevision: options.expectedRevision,
194
- expectedObservedHash: options.expectedObservedHash,
195
- requestId: options.requestId,
196
- requestPayloadSha256: options.requestPayloadSha256,
197
- rawDraftText: loaded.rawText,
198
- });
199
- const result = operatorSucceeded(command, applyResult);
200
- emit(result, options.json);
201
- return;
202
- }
203
- case "adopt": {
204
- if (!taskId ||
205
- options.expectedRevision === undefined ||
206
- !options.expectedObservedHash ||
207
- !options.requestId ||
208
- !options.requestPayloadSha256) {
209
- throw new ContractMutationError("INVALID_INPUT", "task contract adopt requires --task --expected-revision --expected-observed-hash --request-id --request-payload-sha256");
210
- }
211
- const adoptResult = await adoptTaskContract({
212
- repoRoot,
213
- taskId,
214
- expectedRevision: options.expectedRevision,
215
- expectedObservedHash: options.expectedObservedHash,
216
- requestId: options.requestId,
217
- requestPayloadSha256: options.requestPayloadSha256,
218
- });
219
- const result = operatorSucceeded(command, adoptResult);
220
- emit(result, options.json);
221
- return;
222
- }
223
- case "doctor": {
224
- if (!taskId) {
225
- throw new ContractMutationError("INVALID_INPUT", "task contract doctor requires --task");
226
- }
227
- const doctor = await doctorTaskContract({ repoRoot, taskId });
228
- const result = operatorSucceeded(command, doctor);
229
- emit(result, options.json);
230
- return;
231
- }
232
- case "recover": {
233
- if (!taskId) {
234
- throw new ContractMutationError("INVALID_INPUT", "task contract recover requires --task");
235
- }
236
- const recover = await recoverTaskContract({
237
- repoRoot,
238
- taskId,
239
- txId: options.txId,
240
- });
241
- const result = operatorSucceeded(command, recover);
242
- emit(result, options.json);
243
- return;
244
- }
245
- default:
246
- throw new ContractMutationError("INVALID_INPUT", `unknown task contract subcommand: ${subcommand}\n${USAGE}`);
247
- }
248
- }
249
- catch (error) {
250
- if (error instanceof ContractMutationError) {
251
- const result = operatorFailed({
252
- command,
253
- outcome: mutationOutcome(error.code),
254
- code: error.code,
255
- message: error.message,
256
- details: error.details,
257
- });
258
- emit(result, options.json);
259
- return;
260
- }
261
- const result = operatorFailed({
262
- command,
263
- outcome: "rejected",
264
- code: "INTERNAL_ERROR",
265
- message: error instanceof Error ? error.message : String(error),
266
- });
267
- emit(result, options.json);
268
- }
269
- }
@@ -1,26 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { isFeatureStudyTask } from './reference-context.js';
4
- export async function loadPrompt(repoRoot, step, taskConfig) {
5
- const filename = resolvePromptFilename(step, taskConfig);
6
- const promptPath = path.join(repoRoot, '.harness', 'prompts', filename);
7
- try {
8
- return await readFile(promptPath, 'utf-8');
9
- }
10
- catch {
11
- if (filename !== `${step}.md`) {
12
- return readFile(path.join(repoRoot, '.harness', 'prompts', `${step}.md`), 'utf-8');
13
- }
14
- throw new Error(`prompt not found: ${promptPath}`);
15
- }
16
- }
17
- function resolvePromptFilename(step, taskConfig) {
18
- if (!taskConfig || !isFeatureStudyTask(taskConfig)) {
19
- return `${step}.md`;
20
- }
21
- if (step === 'analyze')
22
- return 'feature-study-analyze.md';
23
- if (step === 'plan')
24
- return 'feature-study-plan.md';
25
- return `${step}.md`;
26
- }
@@ -1,2 +0,0 @@
1
- export * from "./config-types.js";
2
- export * from "./workflow-state-types.js";
@@ -1,106 +0,0 @@
1
- import path from "node:path";
2
- import { safeParseTaskContractDraft } from "./schema.js";
3
- import { getTaskContractPaths } from "./paths.js";
4
- import { readSourceManifest } from "../source-references.js";
5
- function isPathOutsideRepoHint(p) {
6
- if (path.isAbsolute(p))
7
- return true;
8
- if (p.includes("\0"))
9
- return true;
10
- const normalized = p.replace(/\\/g, "/");
11
- if (normalized.startsWith("../") || normalized.includes("/../"))
12
- return true;
13
- return false;
14
- }
15
- export async function validateTaskContractDraft(input) {
16
- const errors = [];
17
- const warnings = [];
18
- const parsed = safeParseTaskContractDraft(input.draft);
19
- if (!parsed.success) {
20
- for (const issue of parsed.error.issues) {
21
- errors.push({
22
- code: issue.message.includes("schemaVersion") ||
23
- issue.path[0] === "schemaVersion"
24
- ? "UNSUPPORTED_SCHEMA_VERSION"
25
- : "INVALID_INPUT",
26
- path: issue.path.join("."),
27
- message: issue.message,
28
- });
29
- }
30
- return {
31
- taskId: input.taskId,
32
- valid: false,
33
- errors,
34
- warnings,
35
- };
36
- }
37
- const draft = parsed.data;
38
- if (draft.taskId !== input.taskId) {
39
- errors.push({
40
- code: "INVALID_INPUT",
41
- path: "taskId",
42
- message: `draft.taskId (${draft.taskId}) does not match task (${input.taskId})`,
43
- });
44
- }
45
- for (const p of draft.constraints.allowedPaths) {
46
- if (isPathOutsideRepoHint(p) && !p.includes("*")) {
47
- // globs may be relative; absolute is out of repo
48
- if (path.isAbsolute(p)) {
49
- errors.push({
50
- code: "PATH_OUTSIDE_REPO",
51
- path: "constraints.allowedPaths",
52
- message: `absolute path not allowed: ${p}`,
53
- });
54
- }
55
- }
56
- }
57
- for (const p of draft.constraints.forbiddenPaths) {
58
- if (path.isAbsolute(p)) {
59
- errors.push({
60
- code: "PATH_OUTSIDE_REPO",
61
- path: "constraints.forbiddenPaths",
62
- message: `absolute path not allowed: ${p}`,
63
- });
64
- }
65
- }
66
- if (draft.references && draft.references.length > 0) {
67
- const paths = getTaskContractPaths(input.repoRoot, input.taskId);
68
- const manifest = await readSourceManifest(paths.sourceDir);
69
- if (!manifest) {
70
- warnings.push({
71
- code: "MISSING_SOURCE_MANIFEST",
72
- message: "draft references present but source-manifest.json is missing; import-prd first for immutable evidence",
73
- });
74
- }
75
- else {
76
- for (const ref of draft.references) {
77
- const normalized = ref.ref.replace(/\\/g, "/");
78
- const hit = manifest.documents.some((doc) => {
79
- const mat = doc.materializedPath.replace(/\\/g, "/");
80
- return (mat === normalized ||
81
- `source/${mat}` === normalized ||
82
- normalized.endsWith(mat));
83
- });
84
- if (!hit) {
85
- warnings.push({
86
- code: "REFERENCE_NOT_IN_MANIFEST",
87
- message: `reference not found in source-manifest: ${ref.ref}`,
88
- });
89
- }
90
- }
91
- }
92
- }
93
- if (draft.sourceResolutions &&
94
- draft.sourceResolutions.some((r) => r.decidedBy !== "human")) {
95
- warnings.push({
96
- code: "NON_HUMAN_SOURCE_RESOLUTION",
97
- message: "one or more sourceResolutions are not decidedBy=human; blocking conflicts require human resolution before apply",
98
- });
99
- }
100
- return {
101
- taskId: input.taskId,
102
- valid: errors.length === 0,
103
- errors,
104
- warnings,
105
- };
106
- }
package/dist/task/goal.js DELETED
@@ -1,3 +0,0 @@
1
- export { clearTaskGoal, consumeTaskGoalNotices, getTaskGoal, incrementGoalContinuationRuns, markTaskGoalComplete, recordTaskGoalProgress, setTaskGoal, updateTaskGoalStatus, } from "./runtime.js";
2
- export * from "./goal-audit.js";
3
- export * from "./goal-policy.js";
@@ -1,12 +0,0 @@
1
- export * from "./ids.js";
2
- export * from "./paths.js";
3
- export * from "./source-state.js";
4
- export * from "./lifecycle.js";
5
- export * from "./goal.js";
6
- export * from "./subagent-guidance.js";
7
- export * from "./runtime.js";
8
- export * from "./config.js";
9
- export * from "./worktree.js";
10
- export * as taskContract from "./contract/index.js";
11
- export * as taskOperator from "./operator/index.js";
12
- export * from "./contract/index.js";
@@ -1 +0,0 @@
1
- export { createTask, getNextStep, getSupportedNextCommand, getTaskStatus, markStepCompleted, markTaskCompleted, markTaskFailed, markTaskRunning, markVerifyGoalPending, resolveTaskFlow, shouldRunRetrospective, } from "./runtime.js";
@@ -1,6 +0,0 @@
1
- /**
2
- * Compatibility re-export — canonical capabilities document lives in
3
- * src/shared/operator (includes Console negotiation `dag` block).
4
- * No independent projection / dual implementation.
5
- */
6
- export { buildOperatorCapabilitiesDocument, } from "../../shared/operator/capabilities.js";
@@ -1,2 +0,0 @@
1
- /** Compatibility re-export — canonical envelope lives in src/shared/operator. */
2
- export { buildOperatorResult, operatorSucceeded, operatorFailed, writeOperatorJson, processExitCodeForOutcome, } from "../../shared/operator/envelope.js";
@@ -1,5 +0,0 @@
1
- /** Compatibility barrel — re-exports src/shared/operator for task-adjacent imports. */
2
- export * from "./types.js";
3
- export * from "./envelope.js";
4
- export * from "./registry.js";
5
- export * from "./capabilities.js";
@@ -1,2 +0,0 @@
1
- /** Compatibility re-export — canonical registry lives in src/shared/operator. */
2
- export { OPERATOR_OUTCOMES_V1, OPERATOR_ERROR_CODES_V1, OPERATOR_ERROR_CODE_SET, isOperatorErrorCode, } from "../../shared/operator/registry.js";
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export { getTaskDir, getTaskPaths, listTaskSourceFiles, } from "./runtime.js";
@@ -1 +0,0 @@
1
- export { assertPlanFreshForImplement, markSpecCompleted, refreshSourceState, } from "./runtime.js";
@@ -1 +0,0 @@
1
- export { resolvePiSubagentTools, resolveSubagentGuidance, shouldInjectSubagentGuidance, SUBAGENT_GUIDANCE, SUBAGENT_GUIDANCE_STANDARD, SUBAGENT_GUIDANCE_STRONG, } from "./runtime.js";
@@ -1 +0,0 @@
1
- export { createSiftBridgeState, parseSiftBridgeConfig, compressProviderPayload, executeSiftRetrieve, housekeepSiftStash, createSiftRetrieveToolDefinition, SIFT_RETRIEVE_TOOL_NAME, SIFT_POLICY_VERSION, } from "../../../shared/pi-context-pressure/sift-bridge.js";
@@ -1,20 +0,0 @@
1
- export { createConsoleServer, defaultConsoleStaticDir } from "./server.js";
2
- export { buildOperatorSurfaceHealthV1 } from "./operator-surface-health.js";
3
- export { runConsoleDoctor, formatConsoleDoctorHuman } from "./doctor.js";
4
- export { isLoopbackHost } from "./loopback.js";
5
- export { shouldOpenConsoleBrowser, normalizeConsoleBrowserUrl, openSystemBrowser, maybeOpenConsoleBrowser, } from "./open-browser.js";
6
- export { repoFingerprintV1, normalizeWorktreeRealpath, } from "../../infrastructure/console/repo-fingerprint.js";
7
- export { buildObserveDeepLink } from "./observe-link.js";
8
- export { classifyObserveHealth, probeAndClassifyObserve, capabilityForObserveTarget, OBSERVE_START_COMMAND, DEFAULT_OBSERVE_BASE_URL, } from "./observe-health-match.js";
9
- export { allowedRecoveryCtas, classifyRecoveryFact, partitionRecoveryCtas, recoveryMatrixInvariants, } from "./recovery-cta.js";
10
- export { createClosedResourceLoader, createInterviewResourceLoader, tryActivateTool, assertOfficialToolAllowed, listOfficialTools, OFFICIAL_DENIED_TOOL_IDS, INTERVIEW_ALLOWED_TOOLS, INTERVIEW_DENIED_TOOLS, authorizeInterviewTool, } from "./resource-loader.js";
11
- export { resolveSiblingLoopAgentBin } from "./sibling-controller.js";
12
- export { openConsoleAppData, defaultConsoleAppDataRoot } from "../../infrastructure/console/app-data.js";
13
- export { OperationStore } from "../../infrastructure/console/operation-store.js";
14
- export { createFrontendSplitOperationAdapter } from "./frontend-split-operation-adapter.js";
15
- export { createFrontendHumanDecisionAdapter } from "./frontend-human-decision-adapter.js";
16
- export { FrontendSplitTaskMaterializer } from "../materialize/frontend-split-task-materializer.js";
17
- export { createOperationEventStore } from "./operation-sse.js";
18
- export { DagConfirmationStore } from "./dag-confirmation.js";
19
- export { DraftStore } from "./draft-store.js";
20
- export { probePiReadiness, classifyPiReadiness, isActionBlockedByReadiness, } from "./pi-readiness.js";
@@ -1 +0,0 @@
1
- import{ag as o,ah as n}from"./mermaid.core-p2l8IrWY.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-C-Br82D1.js";import{_ as i}from"./mermaid.core-p2l8IrWY.js";import"./chunk-5VM5RSS4-CTF429HX.js";import"./chunk-XXDRQBXY-DXJaTynd.js";import"./chunk-KBJHAD2P-CJhFX6Lh.js";import"./chunk-2GRJ4B5K-Duyl39oy.js";import"./index-24jp3aBh.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-C-Br82D1.js";import{_ as i}from"./mermaid.core-p2l8IrWY.js";import"./chunk-5VM5RSS4-CTF429HX.js";import"./chunk-XXDRQBXY-DXJaTynd.js";import"./chunk-KBJHAD2P-CJhFX6Lh.js";import"./chunk-2GRJ4B5K-Duyl39oy.js";import"./index-24jp3aBh.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};