@tea-agent/loop-agent 0.42.0-next.1 → 0.42.0-next.10
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.
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +319 -1
- package/dist/application/dag/generate-task-dag.js +75 -19
- package/dist/application/dag/run-dag.js +41 -0
- package/dist/application/task-lifecycle/advance.js +24 -5
- package/dist/application/task-lifecycle/observe.js +171 -17
- package/dist/application/task-lifecycle/plan-transitions.js +42 -7
- package/dist/application/task-lifecycle/recommendations.js +13 -2
- package/dist/build-stamp.json +3 -3
- package/dist/cli/command-definitions.js +7 -0
- package/dist/cli/program.js +6 -1
- package/dist/commands/client-recovery.js +3 -0
- package/dist/commands/dag-follow-up.js +138 -0
- package/dist/commands/dag-rerun-task.js +2 -0
- package/dist/commands/init.js +27 -1
- package/dist/commands/task-advance.js +19 -0
- package/dist/executors/dag-pi-executor.js +3976 -76
- package/dist/executors/pi-executor.js +15 -4
- package/dist/executors/pi-read-budget-policy.js +239 -0
- package/dist/executors/shell-executor.js +978 -188
- package/dist/executors/shell-write-guard.js +7 -0
- package/dist/infrastructure/console/operation-store.js +226 -6
- package/dist/shared/dag-failure-category.js +12 -0
- package/dist/shared/openspec-spec.js +70 -4
- package/dist/shared/operator/capabilities.js +7 -0
- package/dist/task/config-types.js +105 -5
- package/dist/task/contract/adopt.js +4 -0
- package/dist/task/contract/import-revision.js +4 -0
- package/dist/task/contract/project.js +3 -0
- package/dist/task/contract/schema.js +2 -1
- package/dist/task/frontend-project-capability.js +203 -20
- package/dist/task/runtime.js +5 -2
- package/dist/task/source-prepare/build-draft.js +3 -3
- package/dist/task/source-prepare/fragment-inventory.js +64 -25
- package/dist/task/source-prepare/prepare.js +126 -21
- package/dist/task/source-prepare/semantic-intake.js +6 -2
- package/dist/task/source-references.js +22 -1
- package/dist/worker/console/chat/chat-ui-policy.js +4 -2
- package/dist/worker/console/chat/model-resolver.js +7 -4
- package/dist/worker/console/chat/pi-runtime.js +258 -11
- package/dist/worker/console/chat/repo-browser.js +10 -3
- package/dist/worker/console/chat/routes.js +165 -71
- package/dist/worker/console/chat/sdd-data-alignment.js +222 -0
- package/dist/worker/console/chat/session-catalog.js +2 -0
- package/dist/worker/console/chat/session-store.js +159 -70
- package/dist/worker/console/chat/shortcuts.js +19 -3
- package/dist/worker/console/chat/turn-process.js +111 -56
- package/dist/worker/console/frontend-human-decision-adapter.js +19 -0
- package/dist/worker/console/frontend-split-operation-adapter.js +20 -0
- package/dist/worker/console/index.js +3 -0
- package/dist/worker/console/operator-actions.js +169 -7
- package/dist/worker/console/pi-readiness.js +3 -2
- package/dist/worker/console/server.js +23 -1
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-DZZ8m3PO.js → abnfDiagram-N423BO3Z-CcS17TBr.js} +1 -1
- package/dist/worker/console/static/assets/{arc-D6PvaVd-.js → arc-COptKq2S.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-B_OTOiI8.js → architectureDiagram-T3A2C74G-h4LKMHjP.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-Bv6rqHBg.js → blockDiagram-VBNYF7ZC-COA1MOH0.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-B8eHr0oz.js → c4Diagram-5PPSVZJV-DJUf0QPm.js} +1 -1
- package/dist/worker/console/static/assets/channel-DdBCaOJ6.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-DYwR0im2.js → chunk-2GRJ4B5K-mtWfKrUX.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-D2WPGqXt.js → chunk-2Q5K7J3B-B8pXsxDQ.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-CQISJ_I7.js → chunk-5RXB4S5H-ipKzByl1.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-C0o2Du1e.js → chunk-5VM5RSS4-DYi3Ald_.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-4f8kr-U7.js → chunk-6Q2QTUOP-DQtGYoty.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-D_OWvXzX.js → chunk-GF5L2VYU-BU0qS2YV.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-CasdPz5X.js → chunk-JWPE2WC7-DVH9dIGE.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-Cj8lRrla.js → chunk-KBJHAD2P-Dt60SmgM.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-CUvD1FSd.js → chunk-RYQCIY6F-BoaUGuEY.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CqLw_eqB.js → chunk-XXDRQBXY-_WHFDTp2.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DZFra1GO.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DZFra1GO.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-ku-WqJPx.js → cose-bilkent-JH36ORCC-BxkbTIRd.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-Bq_PYDhl.js → cynefin-VYW2F7L2-Bf2UVnoG.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-BiGZV641.js → cynefinDiagram-MW4NZA55-Bo23q1J_.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-C4JRlglF.js → dagre-VZM6K2ZE-Dd_UU49i.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-B0dNeWYG.js → diagram-7IWD3JNH-ebUa1a9y.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-Cj35YvYM.js → diagram-B4RE2ZJO-BucthU8r.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-uzQoJ2-8.js → diagram-LBJQPF4R-BgqNpAkm.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-D1a-Buoz.js → diagram-Q27KOJAE-DC4q5NGa.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-XjRrLRSs.js → diagram-UB23O5K3-CBqCaMeb.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-Da_O24cW.js → ebnfDiagram-BXEA7PRR-CGtnbQ3-.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-BLJ8jrYU.js → erDiagram-JOGREHBK-CG3LUao5.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-B9GrLjM0.js → flowDiagram-UKHOOZJN-D2ZVgoFS.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-CeJ0TqiK.js → ganttDiagram-PKOTCBZU-DoYFZiKt.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-Bm2eNNFX.js → gitGraphDiagram-DS77QQ5N-CKoP1s6j.js} +1 -1
- package/dist/worker/console/static/assets/index-CAZ2fC_X.css +1 -0
- package/dist/worker/console/static/assets/index-vbTcFnFs.js +449 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DB26i3d8.js → infoDiagram-6WML65LV-Duofv8p2.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-BOGRyeZT.js → ishikawaDiagram-WSZJBQD7-D2nlCkA1.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-CZRoBO_6.js → journeyDiagram-NVQOT4AX-Dd4IHdus.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-qlWhJyoB.js → kanban-definition-27J2QSJJ-Bi20AOdt.js} +1 -1
- package/dist/worker/console/static/assets/{linear-CfUiDDB3.js → linear-D59YJ9kB.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-BQe6fpqj.js → mermaid.core-Bl13LpNa.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-zFzWHw64.js → mindmap-definition-FAOFIHXS-C6DLP5eY.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DFGUqjZO.js → pegDiagram-VL7TDLO6-BjO4cy64.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-BB5i0l8Z.js → pieDiagram-7S7Q4E2Y-D7i2qZTG.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-obbVZ_X5.js → quadrantDiagram-CIZ2JOQS-Dx8o_h0y.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-BwdaNzc1.js → railroadDiagram-AXF67PYL-B55orI_t.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-CkTJaugh.js → requirementDiagram-LRYGKXZP-zWaehp6f.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-BwJ-hIgq.js → sankeyDiagram-W5VNT64P-CcA-pjvD.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-BzSgmm7w.js → sequenceDiagram-SI44F4Z6-BOFbzNHI.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-Bn3oj5Q1.js → sizeCapture-X5ZJPWSS-BjAejah1.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-dxhGtL8K.js → stateDiagram-OKZ733FA-DXYwxJwZ.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Clg3V9t1.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-BLpEInya.js → swimlanes-SLNWSIFB-OYiOch8n.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DX1dxAAW.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-ChJGYcXy.js → timeline-definition-Z64GVDOM-cZfH3nmU.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-DK-qjRer.js → vennDiagram-T6HMQDX7-BDE7b3E1.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-3qeaWAg-.js → wardleyDiagram-T6FBY63Y-kyyGy9WJ.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-CootlyP9.js → xychartDiagram-ELKLHX3M-CJj6VTog.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/active-run-badge.js +17 -0
- package/dist/worker/console/static-src/app/useRecoveryConsole.js +5 -5
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +19 -8
- package/dist/worker/console/static-src/operator-chat/input-history.js +8 -6
- package/dist/worker/console/static-src/operator-chat/open-preview-in-browser.js +15 -7
- package/dist/worker/console/static-src/operator-chat/runtime-snapshot-store.js +10 -0
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +258 -23
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +112 -4
- package/dist/worker/console/static-src/operator-chat/useComposer.js +13 -4
- package/dist/worker/console/static-src/operator-chat/useRuntimeControls.js +29 -6
- package/dist/worker/console/static-src/operator-chat/useRuntimeSnapshot.js +8 -2
- package/dist/worker/console/static-src/shell/console-update-reload.js +36 -9
- package/dist/worker/console/static-src/shell/workspace-route.js +11 -0
- package/dist/worker/console/workspace-context.js +115 -1
- package/dist/worker/materialize/frontend-split-task-materializer.js +72 -0
- package/dist/worker/observe/routes.js +4 -0
- package/dist/worker/observe/static/dag-helpers.js +4 -2
- package/dist/worker/observe/static/dag-node-purpose.js +5 -0
- package/dist/worker/observe/static/inspect-workspace.js +23 -0
- package/dist/worker/observe/static/kpi.js +2 -2
- package/dist/worker/observe/static/operator-chrome.d.ts +10 -2
- package/dist/worker/observe/static/operator-chrome.js +37 -23
- package/dist/worker/observe/static/relations.js +2 -2
- package/dist/worker/observe/static/router.d.ts +12 -1
- package/dist/worker/observe/static/router.js +48 -6
- package/dist/worker/observe/static/run-processing.js +4 -2
- package/dist/worker/observe/static/shell-chrome.js +2 -2
- package/dist/worker/observe/static/state.js +5 -0
- package/dist/worker/observe/static/styles.css +95 -0
- package/dist/worker/observe/static/views/dag-inspector.js +14 -7
- package/dist/worker/observe/static/views/dag.js +10 -2
- package/dist/worker/observe/static/views/dags.js +3 -1
- package/dist/worker/observe/static/views/dashboard.js +14 -6
- package/dist/worker/observe/static/views/pool.js +7 -2
- package/dist/worker/observe/static/views/run.js +12 -3
- package/dist/worker/observe/static/views/session-timeline.js +69 -10
- package/dist/worker/observe/static/views/task.js +7 -2
- package/dist/workflows/dag/backend-test-case-coverage-analysis.js +215 -28
- package/dist/workflows/dag/backend-test-markdown-workflow.js +13 -1
- package/dist/workflows/dag/backend-test-plan-protocol.js +106 -0
- package/dist/workflows/dag/backend-test-scenario-param.js +172 -25
- package/dist/workflows/dag/backend-test-scenario-partitions.js +62 -1
- package/dist/workflows/dag/backend-test-writer-completeness.js +104 -12
- package/dist/workflows/dag/contract-validator-registrations.js +1 -2
- package/dist/workflows/dag/dag-retry-schema.js +138 -0
- package/dist/workflows/dag/frontend-closeout.js +221 -0
- package/dist/workflows/dag/frontend-design-policy.js +400 -0
- package/dist/workflows/dag/frontend-human-decision.js +182 -0
- package/dist/workflows/dag/frontend-implementation-contract.js +1237 -192
- package/dist/workflows/dag/frontend-plan-render.js +2 -1
- package/dist/workflows/dag/frontend-prewrite-gate.js +256 -350
- package/dist/workflows/dag/frontend-provider-capability-matrix.js +159 -0
- package/dist/workflows/dag/frontend-recovery-capsule.js +455 -0
- package/dist/workflows/dag/frontend-recovery-controller.js +226 -0
- package/dist/workflows/dag/frontend-recovery-lineage.js +178 -0
- package/dist/workflows/dag/frontend-recovery-plan.js +21 -10
- package/dist/workflows/dag/frontend-recovery-run.js +166 -34
- package/dist/workflows/dag/frontend-repair.js +1 -432
- package/dist/workflows/dag/frontend-review-context.js +261 -15
- package/dist/workflows/dag/frontend-review-findings.js +270 -0
- package/dist/workflows/dag/frontend-shadow-dual-write.js +941 -0
- package/dist/workflows/dag/frontend-shape-capsule-store.js +191 -0
- package/dist/workflows/dag/frontend-shape-facts.js +419 -0
- package/dist/workflows/dag/frontend-shape.js +435 -0
- package/dist/workflows/dag/frontend-source-fidelity-ledger.js +108 -0
- package/dist/workflows/dag/frontend-split-application-service.js +203 -0
- package/dist/workflows/dag/frontend-split-orchestrator.js +899 -0
- package/dist/workflows/dag/frontend-typed-event-store.js +452 -0
- package/dist/workflows/dag/frontend-typed-event-transaction.js +180 -0
- package/dist/workflows/dag/frontend-verification-trace.js +252 -25
- package/dist/workflows/dag/frontend-worktree-diff.js +250 -17
- package/dist/workflows/dag/frontend-writer-admission.js +319 -0
- package/dist/workflows/dag/frontend-writer-status.js +256 -0
- package/dist/workflows/dag/init-hybrid.js +1028 -562
- package/dist/workflows/dag/interrupt-request.js +7 -0
- package/dist/workflows/dag/node-execution.js +828 -4
- package/dist/workflows/dag/prompt.js +70 -3
- package/dist/workflows/dag/recovery-lease.js +170 -0
- package/dist/workflows/dag/report.js +37 -1
- package/dist/workflows/dag/rerun-feedback.js +315 -1
- package/dist/workflows/dag/rerun-plan.js +17 -6
- package/dist/workflows/dag/rerun-run.js +44 -6
- package/dist/workflows/dag/rerun-task.js +251 -13
- package/dist/workflows/dag/retry-policy.js +219 -104
- package/dist/workflows/dag/runner.js +580 -124
- package/dist/workflows/dag/scheduler.js +133 -20
- package/dist/workflows/dag/types.js +244 -16
- package/dist/workflows/dag/validate.js +28 -12
- package/docs/examples/README.md +5 -0
- package/docs/init-surface.manifest.json +30 -12
- package/docs/skills/vetted-skill-registry.md +4 -2
- package/docs/templates/README.md +2 -0
- package/docs/templates/agent-dag-report.schema.json +8 -2
- package/docs/templates/agent-dag.schema.json +1 -1
- package/docs/templates/backend-test-dag.json +23 -20
- package/docs/templates/frontend-implementation-contract.schema.json +4 -1
- package/docs/templates/frontend-implementation-dag.json +89 -0
- package/docs/templates/spec-registry.schema.json +45 -0
- package/harness.json +1 -1
- package/package.json +4 -3
- package/skills/frontend-bounded-implement/SKILL.md +15 -14
- package/skills/frontend-bounded-implement/references/code-standards.md +19 -0
- package/skills/frontend-contract/SKILL.md +23 -0
- package/skills/frontend-contract/references/contract-protocol.md +34 -0
- package/skills/frontend-design-review/SKILL.md +22 -41
- package/skills/frontend-plan/SKILL.md +26 -0
- package/skills/frontend-plan/references/decision-contract.md +37 -0
- package/skills/frontend-plan/references/design-decisions.md +17 -0
- package/skills/frontend-review/SKILL.md +20 -15
- package/skills/frontend-review/references/review-findings.md +6 -7
- package/skills/frontend-scout/SKILL.md +25 -0
- package/skills/frontend-scout/references/design-evidence.md +16 -0
- package/skills/frontend-scout/references/scout-evidence.md +23 -0
- package/skills/frontend-verification/SKILL.md +1 -1
- package/skills/loop-agent/references/command-reference.md +1 -0
- package/skills/loop-agent/references/hybrid-dag.md +2 -2
- package/dist/worker/console/static/assets/channel-BU5gOilw.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DIzKJGHr.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DIzKJGHr.js +0 -1
- package/dist/worker/console/static/assets/index-H9rFJiGL.css +0 -1
- package/dist/worker/console/static/assets/index-xwu9GxEc.js +0 -451
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Cld2qK9v.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-TIHpiT7w.js +0 -8
- package/skills/frontend-implementation/SKILL.md +0 -52
- package/skills/frontend-implementation/references/code-standards.md +0 -33
- package/skills/frontend-implementation/references/design-spec.md +0 -56
- package/skills/frontend-implementation/references/node-contracts.md +0 -31
|
@@ -65,6 +65,10 @@ function paramsOf(req) {
|
|
|
65
65
|
function str(v) {
|
|
66
66
|
return typeof v === "string" && v.trim() ? v.trim() : undefined;
|
|
67
67
|
}
|
|
68
|
+
function appendExplicitTaskKindArg(args, taskKind, taskKindExplicit) {
|
|
69
|
+
if (taskKindExplicit)
|
|
70
|
+
args.push("--task-kind", taskKind);
|
|
71
|
+
}
|
|
68
72
|
const TASK_ID_PLACEHOLDER_RE = /[<>]|^(?:id|task-?id|your-task-id|todo|tbd)$/i;
|
|
69
73
|
/** Mirror of runtime GENERIC_TASK_SLUGS (not exported there); keep in sync. */
|
|
70
74
|
const GENERIC_SLUG_SET = new Set(["test", "fix", "tmp", "new-task"]);
|
|
@@ -580,6 +584,84 @@ export async function acceptOperation(ctx, input) {
|
|
|
580
584
|
},
|
|
581
585
|
};
|
|
582
586
|
}
|
|
587
|
+
function splitRuntimeMissing(action) {
|
|
588
|
+
return {
|
|
589
|
+
kind: "error",
|
|
590
|
+
status: 503,
|
|
591
|
+
body: operatorFailed({
|
|
592
|
+
command: action,
|
|
593
|
+
outcome: "blocked",
|
|
594
|
+
code: "INTERNAL_ERROR",
|
|
595
|
+
message: `${action} is unavailable: frontend split runtime is not wired`,
|
|
596
|
+
}),
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
function numOf(v) {
|
|
600
|
+
return typeof v === "number" ? v : Number(v);
|
|
601
|
+
}
|
|
602
|
+
function splitCommandBase(p) {
|
|
603
|
+
return {
|
|
604
|
+
operationId: str(p.operationId) ?? "",
|
|
605
|
+
expectedRevision: numOf(p.expectedRevision),
|
|
606
|
+
expectedParentDigest: str(p.expectedParentDigest) ?? "",
|
|
607
|
+
expectedManifestDigest: str(p.expectedManifestDigest) ?? "",
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
function splitCommandDispatch(action, result) {
|
|
611
|
+
if (result.outcome === "conflict") {
|
|
612
|
+
return {
|
|
613
|
+
kind: "error",
|
|
614
|
+
status: 409,
|
|
615
|
+
body: operatorFailed({
|
|
616
|
+
command: action,
|
|
617
|
+
outcome: "conflict",
|
|
618
|
+
code: "CONFLICT",
|
|
619
|
+
message: "frontend split CAS conflict (stale revision or binding)",
|
|
620
|
+
}),
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
return { kind: "sync", status: 200, body: operatorSucceeded(action, result) };
|
|
624
|
+
}
|
|
625
|
+
async function runSplitAction(action, run) {
|
|
626
|
+
try {
|
|
627
|
+
const result = await run();
|
|
628
|
+
if (result && typeof result === "object" && "outcome" in result) {
|
|
629
|
+
return splitCommandDispatch(action, result);
|
|
630
|
+
}
|
|
631
|
+
return {
|
|
632
|
+
kind: "sync",
|
|
633
|
+
status: 200,
|
|
634
|
+
body: operatorSucceeded(action, result),
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
catch (error) {
|
|
638
|
+
return invalid(action, error instanceof Error ? error.message : String(error));
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
function humanDecisionDispatch(action, result) {
|
|
642
|
+
if (result.outcome === "rejected") {
|
|
643
|
+
return {
|
|
644
|
+
kind: "error",
|
|
645
|
+
status: 409,
|
|
646
|
+
body: operatorFailed({
|
|
647
|
+
command: action,
|
|
648
|
+
outcome: "conflict",
|
|
649
|
+
code: "CONFLICT",
|
|
650
|
+
message: result.reason,
|
|
651
|
+
details: { projection: result.projection },
|
|
652
|
+
}),
|
|
653
|
+
};
|
|
654
|
+
}
|
|
655
|
+
return { kind: "sync", status: 200, body: operatorSucceeded(action, result) };
|
|
656
|
+
}
|
|
657
|
+
async function runHumanDecisionAction(action, run) {
|
|
658
|
+
try {
|
|
659
|
+
return humanDecisionDispatch(action, await run());
|
|
660
|
+
}
|
|
661
|
+
catch (error) {
|
|
662
|
+
return invalid(action, error instanceof Error ? error.message : String(error));
|
|
663
|
+
}
|
|
664
|
+
}
|
|
583
665
|
/**
|
|
584
666
|
* Map artifact revision / rerun operation outcomes onto the append-only
|
|
585
667
|
* context-transfer lifecycle event log. Only stages the Console truly
|
|
@@ -1978,7 +2060,7 @@ export async function dispatchOperatorAction(ctx, req) {
|
|
|
1978
2060
|
const staged = await stageUtf8Text(ctx.appData, content, {
|
|
1979
2061
|
extension: ".md",
|
|
1980
2062
|
});
|
|
1981
|
-
const
|
|
2063
|
+
const importArgs = [
|
|
1982
2064
|
"task",
|
|
1983
2065
|
"advance",
|
|
1984
2066
|
taskId,
|
|
@@ -1987,8 +2069,10 @@ export async function dispatchOperatorAction(ctx, req) {
|
|
|
1987
2069
|
staged.path,
|
|
1988
2070
|
"--role",
|
|
1989
2071
|
"requirement",
|
|
1990
|
-
|
|
1991
|
-
|
|
2072
|
+
];
|
|
2073
|
+
appendExplicitTaskKindArg(importArgs, taskKind, taskKindExplicit);
|
|
2074
|
+
importArgs.push("--json");
|
|
2075
|
+
const imported = await run(importArgs, {
|
|
1992
2076
|
cwd: ctx.repoRoot,
|
|
1993
2077
|
artifactName: "import-prd-task-advance",
|
|
1994
2078
|
expectJson: true,
|
|
@@ -2963,6 +3047,75 @@ export async function dispatchOperatorAction(ctx, req) {
|
|
|
2963
3047
|
}),
|
|
2964
3048
|
};
|
|
2965
3049
|
}
|
|
3050
|
+
case "frontendSplitWakeup": {
|
|
3051
|
+
if (!ctx.splitOrchestrator)
|
|
3052
|
+
return splitRuntimeMissing(action);
|
|
3053
|
+
return runSplitAction(action, () => ctx.splitOrchestrator.wakeupChildren(splitCommandBase(p)));
|
|
3054
|
+
}
|
|
3055
|
+
case "frontendSplitChildCallback": {
|
|
3056
|
+
if (!ctx.splitOrchestrator)
|
|
3057
|
+
return splitRuntimeMissing(action);
|
|
3058
|
+
return runSplitAction(action, () => ctx.splitOrchestrator.childCallback({
|
|
3059
|
+
...splitCommandBase(p),
|
|
3060
|
+
observation: p.observation,
|
|
3061
|
+
}));
|
|
3062
|
+
}
|
|
3063
|
+
case "frontendSplitWakeupIntegration": {
|
|
3064
|
+
if (!ctx.splitOrchestrator)
|
|
3065
|
+
return splitRuntimeMissing(action);
|
|
3066
|
+
return runSplitAction(action, () => ctx.splitOrchestrator.wakeupIntegration(splitCommandBase(p)));
|
|
3067
|
+
}
|
|
3068
|
+
case "frontendSplitIntegrationCallback": {
|
|
3069
|
+
if (!ctx.splitOrchestrator)
|
|
3070
|
+
return splitRuntimeMissing(action);
|
|
3071
|
+
return runSplitAction(action, () => ctx.splitOrchestrator.integrationCallback({
|
|
3072
|
+
...splitCommandBase(p),
|
|
3073
|
+
completion: p.completion,
|
|
3074
|
+
}));
|
|
3075
|
+
}
|
|
3076
|
+
case "frontendSplitFinalize": {
|
|
3077
|
+
if (!ctx.splitOrchestrator)
|
|
3078
|
+
return splitRuntimeMissing(action);
|
|
3079
|
+
return runSplitAction(action, () => ctx.splitOrchestrator.finalize(splitCommandBase(p)));
|
|
3080
|
+
}
|
|
3081
|
+
case "frontendHumanDecisionMaterialize": {
|
|
3082
|
+
if (!ctx.humanDecisionAdapter)
|
|
3083
|
+
return splitRuntimeMissing(action);
|
|
3084
|
+
return runHumanDecisionAction(action, () => ctx.humanDecisionAdapter.materialize({
|
|
3085
|
+
operationId: str(p.operationId) ?? "",
|
|
3086
|
+
expectedRecordRevision: numOf(p.expectedRecordRevision),
|
|
3087
|
+
expectedProjectionDigest: str(p.expectedProjectionDigest) ?? "",
|
|
3088
|
+
envelope: p.envelope,
|
|
3089
|
+
}));
|
|
3090
|
+
}
|
|
3091
|
+
case "frontendHumanDecisionApprove": {
|
|
3092
|
+
if (!ctx.humanDecisionAdapter)
|
|
3093
|
+
return splitRuntimeMissing(action);
|
|
3094
|
+
return runHumanDecisionAction(action, () => ctx.humanDecisionAdapter.consume({
|
|
3095
|
+
operationId: str(p.operationId) ?? "",
|
|
3096
|
+
expectedRecordRevision: numOf(p.expectedRecordRevision),
|
|
3097
|
+
expectedProjectionDigest: str(p.expectedProjectionDigest) ?? "",
|
|
3098
|
+
receipt: p.receipt,
|
|
3099
|
+
currentTargetDigest: str(p.currentTargetDigest) ?? "",
|
|
3100
|
+
now: str(p.now) ?? new Date().toISOString(),
|
|
3101
|
+
}));
|
|
3102
|
+
}
|
|
3103
|
+
case "frontendSplitInitialize": {
|
|
3104
|
+
if (!ctx.humanDecisionAdapter)
|
|
3105
|
+
return splitRuntimeMissing(action);
|
|
3106
|
+
return runHumanDecisionAction(action, () => ctx.humanDecisionAdapter.initializeSplit({
|
|
3107
|
+
operationId: str(p.operationId) ?? "",
|
|
3108
|
+
expectedRecordRevision: numOf(p.expectedRecordRevision),
|
|
3109
|
+
expectedProjectionDigest: str(p.expectedProjectionDigest) ?? "",
|
|
3110
|
+
execution: p.execution,
|
|
3111
|
+
manifest: p.manifest,
|
|
3112
|
+
receipt: p.receipt,
|
|
3113
|
+
currentTargetDigest: str(p.currentTargetDigest) ?? "",
|
|
3114
|
+
now: str(p.now) ?? new Date().toISOString(),
|
|
3115
|
+
activeWriterOperationId: str(p.activeWriterOperationId) ?? null,
|
|
3116
|
+
activeProviderOperationId: str(p.activeProviderOperationId) ?? null,
|
|
3117
|
+
}));
|
|
3118
|
+
}
|
|
2966
3119
|
default: {
|
|
2967
3120
|
// M5 official-command coverage uses one generic tail for newly registered
|
|
2968
3121
|
// CLI actions. It remains inside dispatchOperatorAction (the sole dispatch
|
|
@@ -3347,7 +3500,14 @@ async function dispatchBootstrapFromPrd(ctx, p) {
|
|
|
3347
3500
|
const title = identity.title;
|
|
3348
3501
|
const run = ctx.runCommand ?? ((a, o) => ctx.client.run(a, o));
|
|
3349
3502
|
// Standard lifecycle entry: task advance create + PRD import(s).
|
|
3350
|
-
|
|
3503
|
+
// Preserve an explicitly selected business workflow from the very first
|
|
3504
|
+
// task.json write. The task lifecycle otherwise defaults new tasks to
|
|
3505
|
+
// standard, which caused frontend tasks to be promoted only during the
|
|
3506
|
+
// final intake pass.
|
|
3507
|
+
const createArgs = ["task", "advance", taskId, title];
|
|
3508
|
+
appendExplicitTaskKindArg(createArgs, taskKind, taskKindExplicit);
|
|
3509
|
+
createArgs.push("--json");
|
|
3510
|
+
const advanceCreate = await run(createArgs, {
|
|
3351
3511
|
cwd: ctx.repoRoot,
|
|
3352
3512
|
artifactName: "bootstrap-task-advance-create",
|
|
3353
3513
|
expectJson: true,
|
|
@@ -3381,7 +3541,7 @@ async function dispatchBootstrapFromPrd(ctx, p) {
|
|
|
3381
3541
|
const staged = await stageUtf8Text(ctx.appData, text, {
|
|
3382
3542
|
extension: ".md",
|
|
3383
3543
|
});
|
|
3384
|
-
const
|
|
3544
|
+
const importArgs = [
|
|
3385
3545
|
"task",
|
|
3386
3546
|
"advance",
|
|
3387
3547
|
taskId,
|
|
@@ -3389,8 +3549,10 @@ async function dispatchBootstrapFromPrd(ctx, p) {
|
|
|
3389
3549
|
staged.path,
|
|
3390
3550
|
"--role",
|
|
3391
3551
|
role,
|
|
3392
|
-
|
|
3393
|
-
|
|
3552
|
+
];
|
|
3553
|
+
appendExplicitTaskKindArg(importArgs, taskKind, taskKindExplicit);
|
|
3554
|
+
importArgs.push("--json");
|
|
3555
|
+
const imported = await run(importArgs, {
|
|
3394
3556
|
cwd: ctx.repoRoot,
|
|
3395
3557
|
artifactName: `bootstrap-task-advance-prd-${label}`,
|
|
3396
3558
|
expectJson: true,
|
|
@@ -170,11 +170,12 @@ export async function discoverPiReadinessProbe(options) {
|
|
|
170
170
|
const availableCount = countAvailableModels(snapshot);
|
|
171
171
|
const providerConfigured = hasProviderConfig(snapshot);
|
|
172
172
|
const availableModels = mapSnapshotAvailableModels(snapshot);
|
|
173
|
+
const credentialedAvailableCount = availableModels.filter((model) => model.hasCredentials !== false).length;
|
|
173
174
|
const harnessMatrix = await resolveHarnessPiExecutorMatrix(repoRoot, availableModels);
|
|
174
175
|
const resolvedHarnessModels = [];
|
|
175
176
|
if (typeof runtime.getModel === "function") {
|
|
176
177
|
for (const row of harnessMatrix) {
|
|
177
|
-
if (!row.provider)
|
|
178
|
+
if (!row.provider || !row.resolved)
|
|
178
179
|
continue;
|
|
179
180
|
try {
|
|
180
181
|
if (runtime.getModel(row.provider, row.modelId)) {
|
|
@@ -195,7 +196,7 @@ export async function discoverPiReadinessProbe(options) {
|
|
|
195
196
|
.join(",")
|
|
196
197
|
: "none";
|
|
197
198
|
const authReady = availableCount > 0 || providerConfigured;
|
|
198
|
-
const modelsAvailable =
|
|
199
|
+
const modelsAvailable = credentialedAvailableCount > 0 || resolvedHarnessModels.length > 0;
|
|
199
200
|
let interviewSessionOk = false;
|
|
200
201
|
let sessionMessage;
|
|
201
202
|
if (!authReady || !modelsAvailable) {
|
|
@@ -455,6 +455,7 @@ export async function createConsoleServer(options) {
|
|
|
455
455
|
: "idle",
|
|
456
456
|
deferredTurn: entry.deferredTurn,
|
|
457
457
|
deferredTurns: entry.deferredTurns,
|
|
458
|
+
isBlank: entry.isBlank && !active,
|
|
458
459
|
};
|
|
459
460
|
});
|
|
460
461
|
sendJson(res, 200, {
|
|
@@ -566,8 +567,26 @@ export async function createConsoleServer(options) {
|
|
|
566
567
|
const stored = await context.chatRouteDeps.store.get(sessionId);
|
|
567
568
|
if (stored)
|
|
568
569
|
owner = context;
|
|
570
|
+
else if (!catalogEntry) {
|
|
571
|
+
// Catalog and store both miss: the session was deleted, not
|
|
572
|
+
// retargeted. Do not scan other workspaces or leak existence.
|
|
573
|
+
sendJson(res, 404, {
|
|
574
|
+
ok: false,
|
|
575
|
+
error: {
|
|
576
|
+
code: "PI_SESSION_NOT_FOUND",
|
|
577
|
+
message: `chat session not found: ${sessionId}`,
|
|
578
|
+
},
|
|
579
|
+
});
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
569
582
|
else {
|
|
570
|
-
|
|
583
|
+
chatSessionCatalog.remove(sessionId);
|
|
584
|
+
await registry
|
|
585
|
+
.detachSession(ownerRecord.workspaceId, sessionId)
|
|
586
|
+
.catch(() => undefined);
|
|
587
|
+
// Catalog had the id, but this workspace store does not.
|
|
588
|
+
// Keep the conflict code so a mismatched selection cannot
|
|
589
|
+
// discover whether the session lives elsewhere.
|
|
571
590
|
sendJson(res, 403, {
|
|
572
591
|
ok: false,
|
|
573
592
|
error: {
|
|
@@ -781,6 +800,9 @@ export async function createConsoleServer(options) {
|
|
|
781
800
|
appData: startup.appData,
|
|
782
801
|
operations: startup.operations,
|
|
783
802
|
events: startup.events,
|
|
803
|
+
splitOrchestrator: startup.splitOrchestrator,
|
|
804
|
+
humanDecisionAdapter: startup.humanDecisionAdapter,
|
|
805
|
+
materializer: startup.materializer,
|
|
784
806
|
getReadiness,
|
|
785
807
|
operatorSessionId,
|
|
786
808
|
registry,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-
|
|
1
|
+
import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-DQtGYoty.js";import{p as f}from"./chunk-JWPE2WC7-DVH9dIGE.js";import{_ as n,l as o}from"./mermaid.core-Bl13LpNa.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-Bf2UVnoG.js";import"./index-vbTcFnFs.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-
|
|
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-Bl13LpNa.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};
|