@specship/specship-win32-arm64 0.24.0 → 0.28.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.
- package/bin/specship.cmd +31 -1
- package/lib/dist/activation/cheatsheet.d.ts +17 -1
- package/lib/dist/activation/cheatsheet.d.ts.map +1 -1
- package/lib/dist/activation/cheatsheet.js +47 -3
- package/lib/dist/activation/cheatsheet.js.map +1 -1
- package/lib/dist/activation/hook-output.d.ts +80 -0
- package/lib/dist/activation/hook-output.d.ts.map +1 -0
- package/lib/dist/activation/hook-output.js +103 -0
- package/lib/dist/activation/hook-output.js.map +1 -0
- package/lib/dist/activation/search-intercept.d.ts +60 -29
- package/lib/dist/activation/search-intercept.d.ts.map +1 -1
- package/lib/dist/activation/search-intercept.js +159 -55
- package/lib/dist/activation/search-intercept.js.map +1 -1
- package/lib/dist/activation/steering.d.ts +11 -13
- package/lib/dist/activation/steering.d.ts.map +1 -1
- package/lib/dist/activation/steering.js +25 -10
- package/lib/dist/activation/steering.js.map +1 -1
- package/lib/dist/behaviour/behaviour-surface.d.ts +47 -0
- package/lib/dist/behaviour/behaviour-surface.d.ts.map +1 -1
- package/lib/dist/behaviour/behaviour-surface.js +108 -2
- package/lib/dist/behaviour/behaviour-surface.js.map +1 -1
- package/lib/dist/bin/node-version-check.d.ts +22 -7
- package/lib/dist/bin/node-version-check.d.ts.map +1 -1
- package/lib/dist/bin/node-version-check.js +39 -9
- package/lib/dist/bin/node-version-check.js.map +1 -1
- package/lib/dist/bin/specship.js +989 -116
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/commands/specship/learn.md +27 -3
- package/lib/dist/commands/specship/spec.md +85 -15
- package/lib/dist/db/spec-queries.d.ts +73 -3
- package/lib/dist/db/spec-queries.d.ts.map +1 -1
- package/lib/dist/db/spec-queries.js +139 -5
- package/lib/dist/db/spec-queries.js.map +1 -1
- package/lib/dist/db/sqlite-adapter.d.ts +7 -5
- package/lib/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/lib/dist/db/sqlite-adapter.js +11 -9
- package/lib/dist/db/sqlite-adapter.js.map +1 -1
- package/lib/dist/enforce/changed-files.d.ts +39 -0
- package/lib/dist/enforce/changed-files.d.ts.map +1 -0
- package/lib/dist/enforce/changed-files.js +114 -0
- package/lib/dist/enforce/changed-files.js.map +1 -0
- package/lib/dist/enforce/enforce.d.ts +53 -2
- package/lib/dist/enforce/enforce.d.ts.map +1 -1
- package/lib/dist/enforce/enforce.js +95 -8
- package/lib/dist/enforce/enforce.js.map +1 -1
- package/lib/dist/enforce/mutation.d.ts +46 -0
- package/lib/dist/enforce/mutation.d.ts.map +1 -0
- package/lib/dist/enforce/mutation.js +104 -0
- package/lib/dist/enforce/mutation.js.map +1 -0
- package/lib/dist/enforce/suppressions.d.ts +33 -0
- package/lib/dist/enforce/suppressions.d.ts.map +1 -0
- package/lib/dist/enforce/suppressions.js +159 -0
- package/lib/dist/enforce/suppressions.js.map +1 -0
- package/lib/dist/extraction/grammars.d.ts +10 -0
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +32 -3
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +7 -0
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/specs/markdown-spec-extractor.d.ts +7 -0
- package/lib/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/specs/markdown-spec-extractor.js +97 -10
- package/lib/dist/extraction/specs/markdown-spec-extractor.js.map +1 -1
- package/lib/dist/extraction/wasm/tree-sitter-pascal.wasm.gz +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-scala.wasm.gz +0 -0
- package/lib/dist/graph/spec-coverage.d.ts +142 -0
- package/lib/dist/graph/spec-coverage.d.ts.map +1 -0
- package/lib/dist/graph/spec-coverage.js +276 -0
- package/lib/dist/graph/spec-coverage.js.map +1 -0
- package/lib/dist/health/smoke-check.js +2 -2
- package/lib/dist/health/smoke-check.js.map +1 -1
- package/lib/dist/index.d.ts +75 -7
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +191 -23
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/gemini-commands.d.ts +107 -0
- package/lib/dist/installer/gemini-commands.d.ts.map +1 -0
- package/lib/dist/installer/gemini-commands.js +264 -0
- package/lib/dist/installer/gemini-commands.js.map +1 -0
- package/lib/dist/installer/index.d.ts +55 -8
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +72 -53
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/init-offer.d.ts +14 -9
- package/lib/dist/installer/init-offer.d.ts.map +1 -1
- package/lib/dist/installer/init-offer.js +13 -9
- package/lib/dist/installer/init-offer.js.map +1 -1
- package/lib/dist/installer/install-defaults.d.ts +81 -0
- package/lib/dist/installer/install-defaults.d.ts.map +1 -0
- package/lib/dist/installer/install-defaults.js +95 -0
- package/lib/dist/installer/install-defaults.js.map +1 -0
- package/lib/dist/installer/instructions-template.d.ts +22 -0
- package/lib/dist/installer/instructions-template.d.ts.map +1 -1
- package/lib/dist/installer/instructions-template.js +37 -1
- package/lib/dist/installer/instructions-template.js.map +1 -1
- package/lib/dist/installer/targets/claude.d.ts +18 -0
- package/lib/dist/installer/targets/claude.d.ts.map +1 -1
- package/lib/dist/installer/targets/claude.js +70 -23
- package/lib/dist/installer/targets/claude.js.map +1 -1
- package/lib/dist/installer/targets/gemini.d.ts +85 -12
- package/lib/dist/installer/targets/gemini.d.ts.map +1 -1
- package/lib/dist/installer/targets/gemini.js +527 -30
- package/lib/dist/installer/targets/gemini.js.map +1 -1
- package/lib/dist/installer/targets/shared.d.ts +13 -0
- package/lib/dist/installer/targets/shared.d.ts.map +1 -1
- package/lib/dist/installer/targets/shared.js +22 -4
- package/lib/dist/installer/targets/shared.js.map +1 -1
- package/lib/dist/installer/targets/types.d.ts +12 -0
- package/lib/dist/installer/targets/types.d.ts.map +1 -1
- package/lib/dist/jira/auto-publish.d.ts +71 -4
- package/lib/dist/jira/auto-publish.d.ts.map +1 -1
- package/lib/dist/jira/auto-publish.js +186 -17
- package/lib/dist/jira/auto-publish.js.map +1 -1
- package/lib/dist/jira/reconcile.d.ts +24 -1
- package/lib/dist/jira/reconcile.d.ts.map +1 -1
- package/lib/dist/jira/reconcile.js +46 -2
- package/lib/dist/jira/reconcile.js.map +1 -1
- package/lib/dist/jira/repo-config.d.ts +9 -0
- package/lib/dist/jira/repo-config.d.ts.map +1 -1
- package/lib/dist/jira/repo-config.js +11 -0
- package/lib/dist/jira/repo-config.js.map +1 -1
- package/lib/dist/jira/types.d.ts +7 -0
- package/lib/dist/jira/types.d.ts.map +1 -1
- package/lib/dist/jira/types.js.map +1 -1
- package/lib/dist/knowledge/enforce.d.ts +75 -0
- package/lib/dist/knowledge/enforce.d.ts.map +1 -0
- package/lib/dist/knowledge/enforce.js +250 -0
- package/lib/dist/knowledge/enforce.js.map +1 -0
- package/lib/dist/knowledge/facts.d.ts +33 -0
- package/lib/dist/knowledge/facts.d.ts.map +1 -0
- package/lib/dist/knowledge/facts.js +117 -0
- package/lib/dist/knowledge/facts.js.map +1 -0
- package/lib/dist/knowledge/proposals.d.ts +88 -0
- package/lib/dist/knowledge/proposals.d.ts.map +1 -0
- package/lib/dist/knowledge/proposals.js +360 -0
- package/lib/dist/knowledge/proposals.js.map +1 -0
- package/lib/dist/knowledge/stale.d.ts +64 -0
- package/lib/dist/knowledge/stale.d.ts.map +1 -0
- package/lib/dist/knowledge/stale.js +174 -0
- package/lib/dist/knowledge/stale.js.map +1 -0
- package/lib/dist/mcp/fitness-tool.d.ts +5 -6
- package/lib/dist/mcp/fitness-tool.d.ts.map +1 -1
- package/lib/dist/mcp/fitness-tool.js +0 -16
- package/lib/dist/mcp/fitness-tool.js.map +1 -1
- package/lib/dist/mcp/gemini-session.d.ts +50 -0
- package/lib/dist/mcp/gemini-session.d.ts.map +1 -0
- package/lib/dist/mcp/gemini-session.js +159 -0
- package/lib/dist/mcp/gemini-session.js.map +1 -0
- package/lib/dist/mcp/health-tool.d.ts +26 -0
- package/lib/dist/mcp/health-tool.d.ts.map +1 -0
- package/lib/dist/mcp/health-tool.js +50 -0
- package/lib/dist/mcp/health-tool.js.map +1 -0
- package/lib/dist/mcp/jira-tools.d.ts.map +1 -1
- package/lib/dist/mcp/jira-tools.js +25 -0
- package/lib/dist/mcp/jira-tools.js.map +1 -1
- package/lib/dist/mcp/maintainability-tool.d.ts +5 -7
- package/lib/dist/mcp/maintainability-tool.d.ts.map +1 -1
- package/lib/dist/mcp/maintainability-tool.js +0 -16
- package/lib/dist/mcp/maintainability-tool.js.map +1 -1
- package/lib/dist/mcp/model-context.d.ts +31 -7
- package/lib/dist/mcp/model-context.d.ts.map +1 -1
- package/lib/dist/mcp/model-context.js +70 -21
- package/lib/dist/mcp/model-context.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +5 -2
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/server-instructions.d.ts +16 -15
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +72 -5
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/session.js +1 -1
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/spec-tools.d.ts +9 -1
- package/lib/dist/mcp/spec-tools.d.ts.map +1 -1
- package/lib/dist/mcp/spec-tools.js +282 -49
- package/lib/dist/mcp/spec-tools.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts +49 -9
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +210 -58
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/pulse/pulse.d.ts +93 -0
- package/lib/dist/pulse/pulse.d.ts.map +1 -0
- package/lib/dist/pulse/pulse.js +401 -0
- package/lib/dist/pulse/pulse.js.map +1 -0
- package/lib/dist/reflect/apply.d.ts.map +1 -1
- package/lib/dist/reflect/apply.js +38 -3
- package/lib/dist/reflect/apply.js.map +1 -1
- package/lib/dist/reflect/auto-sweep.d.ts +26 -0
- package/lib/dist/reflect/auto-sweep.d.ts.map +1 -0
- package/lib/dist/reflect/auto-sweep.js +90 -0
- package/lib/dist/reflect/auto-sweep.js.map +1 -0
- package/lib/dist/reflect/cli.d.ts +62 -0
- package/lib/dist/reflect/cli.d.ts.map +1 -0
- package/lib/dist/reflect/cli.js +163 -0
- package/lib/dist/reflect/cli.js.map +1 -0
- package/lib/dist/reflect/miner.d.ts.map +1 -1
- package/lib/dist/reflect/miner.js +119 -0
- package/lib/dist/reflect/miner.js.map +1 -1
- package/lib/dist/reflect/sweep.d.ts +1 -0
- package/lib/dist/reflect/sweep.d.ts.map +1 -1
- package/lib/dist/reflect/sweep.js +62 -13
- package/lib/dist/reflect/sweep.js.map +1 -1
- package/lib/dist/reflect/targets.d.ts +2 -0
- package/lib/dist/reflect/targets.d.ts.map +1 -1
- package/lib/dist/reflect/targets.js +33 -0
- package/lib/dist/reflect/targets.js.map +1 -1
- package/lib/dist/reflect/types.d.ts +19 -2
- package/lib/dist/reflect/types.d.ts.map +1 -1
- package/lib/dist/resolution/spec-link-resolver.d.ts +44 -2
- package/lib/dist/resolution/spec-link-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/spec-link-resolver.js +132 -0
- package/lib/dist/resolution/spec-link-resolver.js.map +1 -1
- package/lib/dist/resolution/test-title-links.d.ts +62 -0
- package/lib/dist/resolution/test-title-links.d.ts.map +1 -0
- package/lib/dist/resolution/test-title-links.js +97 -0
- package/lib/dist/resolution/test-title-links.js.map +1 -0
- package/lib/dist/search/query-parser.d.ts.map +1 -1
- package/lib/dist/search/query-parser.js +6 -1
- package/lib/dist/search/query-parser.js.map +1 -1
- package/lib/dist/server/project-registry.js +1 -1
- package/lib/dist/server/routes/claude.js +24 -43
- package/lib/dist/server/routes/graph.js +53 -7
- package/lib/dist/server/routes/knowledge.js +118 -0
- package/lib/dist/server/routes/mcp.js +4 -3
- package/lib/dist/server/routes/projects.js +4 -4
- package/lib/dist/server/routes/spec.js +49 -7
- package/lib/dist/server/server.js +31 -17
- package/lib/dist/skills/spec-author/SKILL.md +164 -0
- package/lib/dist/skills/spec-author/references/format.md +210 -0
- package/lib/dist/skills/spec-author/references/gap-questions.md +152 -0
- package/lib/dist/skills/spec-author/references/quality-rubric.md +125 -0
- package/lib/dist/skills/spec-author/references/review-checklist.md +175 -0
- package/lib/dist/spec-lint/lint.d.ts +82 -0
- package/lib/dist/spec-lint/lint.d.ts.map +1 -0
- package/lib/dist/spec-lint/lint.js +491 -0
- package/lib/dist/spec-lint/lint.js.map +1 -0
- package/lib/dist/spec-quality/criterion-ids.d.ts +13 -0
- package/lib/dist/spec-quality/criterion-ids.d.ts.map +1 -0
- package/lib/dist/spec-quality/criterion-ids.js +38 -0
- package/lib/dist/spec-quality/criterion-ids.js.map +1 -0
- package/lib/dist/spec-quality/evidence-kind.d.ts +54 -0
- package/lib/dist/spec-quality/evidence-kind.d.ts.map +1 -0
- package/lib/dist/spec-quality/evidence-kind.js +183 -0
- package/lib/dist/spec-quality/evidence-kind.js.map +1 -0
- package/lib/dist/spec-quality/link-persist.d.ts +65 -0
- package/lib/dist/spec-quality/link-persist.d.ts.map +1 -0
- package/lib/dist/spec-quality/link-persist.js +249 -0
- package/lib/dist/spec-quality/link-persist.js.map +1 -0
- package/lib/dist/spec-quality/plan-scope.d.ts +38 -0
- package/lib/dist/spec-quality/plan-scope.d.ts.map +1 -0
- package/lib/dist/spec-quality/plan-scope.js +129 -0
- package/lib/dist/spec-quality/plan-scope.js.map +1 -0
- package/lib/dist/spec-quality/postcheck.d.ts +85 -0
- package/lib/dist/spec-quality/postcheck.d.ts.map +1 -0
- package/lib/dist/spec-quality/postcheck.js +390 -0
- package/lib/dist/spec-quality/postcheck.js.map +1 -0
- package/lib/dist/spec-quality/readiness.d.ts +72 -0
- package/lib/dist/spec-quality/readiness.d.ts.map +1 -0
- package/lib/dist/spec-quality/readiness.js +226 -0
- package/lib/dist/spec-quality/readiness.js.map +1 -0
- package/lib/dist/statusline/index.js.map +1 -1
- package/lib/dist/statusline/render.d.ts +1 -1
- package/lib/dist/statusline/render.d.ts.map +1 -1
- package/lib/dist/statusline/render.js +3 -1
- package/lib/dist/statusline/render.js.map +1 -1
- package/lib/dist/ui/assets/index-BzuUWUAE.js +50 -0
- package/lib/dist/ui/index.html +1 -1
- package/lib/dist/verify/report-ingest.d.ts +88 -0
- package/lib/dist/verify/report-ingest.d.ts.map +1 -0
- package/lib/dist/verify/report-ingest.js +269 -0
- package/lib/dist/verify/report-ingest.js.map +1 -0
- package/lib/dist/workflows/agents/claude.d.ts +16 -0
- package/lib/dist/workflows/agents/claude.d.ts.map +1 -0
- package/lib/dist/workflows/agents/claude.js +82 -0
- package/lib/dist/workflows/agents/claude.js.map +1 -0
- package/lib/dist/workflows/agents/gemini.d.ts +21 -0
- package/lib/dist/workflows/agents/gemini.d.ts.map +1 -0
- package/lib/dist/workflows/agents/gemini.js +124 -0
- package/lib/dist/workflows/agents/gemini.js.map +1 -0
- package/lib/dist/workflows/agents/index.d.ts +28 -0
- package/lib/dist/workflows/agents/index.d.ts.map +1 -0
- package/lib/dist/workflows/agents/index.js +104 -0
- package/lib/dist/workflows/agents/index.js.map +1 -0
- package/lib/dist/workflows/agents/types.d.ts +55 -0
- package/lib/dist/workflows/agents/types.d.ts.map +1 -0
- package/lib/dist/workflows/agents/types.js +46 -0
- package/lib/dist/workflows/agents/types.js.map +1 -0
- package/lib/dist/workflows/batch.d.ts +63 -0
- package/lib/dist/workflows/batch.d.ts.map +1 -0
- package/lib/dist/workflows/batch.js +151 -0
- package/lib/dist/workflows/batch.js.map +1 -0
- package/lib/dist/workflows/defaults/claude-design-implement.yaml +3 -4
- package/lib/dist/workflows/defaults/spec-author.yaml +11 -9
- package/lib/dist/workflows/defaults/spec-fix.yaml +103 -12
- package/lib/dist/workflows/defaults/spec-implement-mixed.yaml +21 -193
- package/lib/dist/workflows/defaults/spec-implement.yaml +701 -41
- package/lib/dist/workflows/defaults/spec-verify.yaml +60 -9
- package/lib/dist/workflows/discovery.d.ts +13 -0
- package/lib/dist/workflows/discovery.d.ts.map +1 -1
- package/lib/dist/workflows/discovery.js +79 -17
- package/lib/dist/workflows/discovery.js.map +1 -1
- package/lib/dist/workflows/executor.d.ts +18 -0
- package/lib/dist/workflows/executor.d.ts.map +1 -1
- package/lib/dist/workflows/executor.js +130 -33
- package/lib/dist/workflows/executor.js.map +1 -1
- package/lib/dist/workflows/gc.d.ts +50 -0
- package/lib/dist/workflows/gc.d.ts.map +1 -0
- package/lib/dist/workflows/gc.js +120 -0
- package/lib/dist/workflows/gc.js.map +1 -0
- package/lib/dist/workflows/merge-queue.d.ts +64 -0
- package/lib/dist/workflows/merge-queue.d.ts.map +1 -0
- package/lib/dist/workflows/merge-queue.js +162 -0
- package/lib/dist/workflows/merge-queue.js.map +1 -0
- package/lib/dist/workflows/runners/approval.d.ts +1 -1
- package/lib/dist/workflows/runners/approval.d.ts.map +1 -1
- package/lib/dist/workflows/runners/approval.js +11 -2
- package/lib/dist/workflows/runners/approval.js.map +1 -1
- package/lib/dist/workflows/runners/bash.d.ts +15 -0
- package/lib/dist/workflows/runners/bash.d.ts.map +1 -1
- package/lib/dist/workflows/runners/bash.js +50 -1
- package/lib/dist/workflows/runners/bash.js.map +1 -1
- package/lib/dist/workflows/runners/prompt.d.ts +16 -41
- package/lib/dist/workflows/runners/prompt.d.ts.map +1 -1
- package/lib/dist/workflows/runners/prompt.js +55 -120
- package/lib/dist/workflows/runners/prompt.js.map +1 -1
- package/lib/dist/workflows/runners/types.d.ts +12 -0
- package/lib/dist/workflows/runners/types.d.ts.map +1 -1
- package/lib/dist/workflows/schemas/workflow.d.ts +17 -0
- package/lib/dist/workflows/schemas/workflow.d.ts.map +1 -1
- package/lib/dist/workflows/schemas/workflow.js +27 -0
- package/lib/dist/workflows/schemas/workflow.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +8 -4
- package/package.json +5 -3
- package/lib/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/lib/dist/server/ingest/impact-query.js +0 -343
- package/lib/dist/server/routes/events.js +0 -152
- package/lib/dist/ui/assets/index-CjjaftDw.js +0 -50
- package/node.exe +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/workflows/runners/bash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,OAAO,EAAY,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/workflows/runners/bash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,OAAO,EAAY,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAMnE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAmB,GAAG,MAAM,CAEzE;AAQD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,IAAI,GAAE,MAAM,EAAiB,EAC7B,QAAQ,GAAE,MAAyB,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIzC;AAYD,qBAAa,UAAW,YAAW,UAAU;IAC3C,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAE1B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAuHxE"}
|
|
@@ -40,10 +40,49 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
40
40
|
})();
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
42
|
exports.BashRunner = void 0;
|
|
43
|
+
exports.tailForError = tailForError;
|
|
44
|
+
exports.specshipCli = specshipCli;
|
|
43
45
|
const child_process_1 = require("child_process");
|
|
44
46
|
const fs = __importStar(require("fs"));
|
|
45
47
|
const path = __importStar(require("path"));
|
|
46
48
|
const DEFAULT_TIMEOUT_MS = 60_000;
|
|
49
|
+
/** How much of a failed step's output the one-line `error` keeps. */
|
|
50
|
+
const ERROR_TAIL_CHARS = 4000;
|
|
51
|
+
/**
|
|
52
|
+
* Keep the LAST `max` chars — test runners and compilers print their summary
|
|
53
|
+
* at the end, so the head is the least useful part (REQ-PIPETRUST-006.A1).
|
|
54
|
+
*/
|
|
55
|
+
function tailForError(text, max = ERROR_TAIL_CHARS) {
|
|
56
|
+
return text.length > max ? `…${text.slice(text.length - max)}` : text;
|
|
57
|
+
}
|
|
58
|
+
/** Combined output of a failed step, stdout first then stderr. */
|
|
59
|
+
function combinedOutput(stdout, stderr) {
|
|
60
|
+
if (stdout && stderr)
|
|
61
|
+
return `${stdout}${stdout.endsWith('\n') ? '' : '\n'}${stderr}`;
|
|
62
|
+
return stdout || stderr;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The SpecShip CLI running this process — `{ node, script }` when this
|
|
66
|
+
* process is the CLI, else null. Exported to bash steps as
|
|
67
|
+
* SPECSHIP_CLI_NODE / SPECSHIP_CLI_SCRIPT (kept separate so paths with spaces
|
|
68
|
+
* survive) plus a display-only SPECSHIP_CLI.
|
|
69
|
+
*/
|
|
70
|
+
function specshipCli(argv = process.argv, execPath = process.execPath) {
|
|
71
|
+
const script = argv[1] ?? '';
|
|
72
|
+
if (!/^specship(\.js)?$/.test(path.basename(script)))
|
|
73
|
+
return null;
|
|
74
|
+
return { node: execPath, script };
|
|
75
|
+
}
|
|
76
|
+
function cliEnv() {
|
|
77
|
+
const cli = specshipCli();
|
|
78
|
+
if (!cli)
|
|
79
|
+
return {};
|
|
80
|
+
return {
|
|
81
|
+
SPECSHIP_CLI_NODE: cli.node,
|
|
82
|
+
SPECSHIP_CLI_SCRIPT: cli.script,
|
|
83
|
+
SPECSHIP_CLI: `${cli.node} ${cli.script}`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
47
86
|
class BashRunner {
|
|
48
87
|
kind = 'bash';
|
|
49
88
|
async run(rawNode, ctx) {
|
|
@@ -65,6 +104,13 @@ class BashRunner {
|
|
|
65
104
|
// Always prepend — being merely *present* later in PATH still loses to
|
|
66
105
|
// an earlier host Node.
|
|
67
106
|
PATH: `${runtimeDir}${path.delimiter}${basePath}`,
|
|
107
|
+
// The exact CLI running this workflow (PIPETRUST-DOC, REQ-PIPETRUST-006.A4):
|
|
108
|
+
// steps call `$SPECSHIP_CLI` before any `specship` on PATH, so a step
|
|
109
|
+
// never runs an older globally installed CLI that lacks its command.
|
|
110
|
+
...cliEnv(),
|
|
111
|
+
// Where this run keeps its artifacts, so a step can leave durable
|
|
112
|
+
// evidence (e.g. a JSON test report) beside the node outputs.
|
|
113
|
+
SPECSHIP_ARTIFACTS_DIR: ctx.artifactsDir,
|
|
68
114
|
...(node.env ?? {}),
|
|
69
115
|
};
|
|
70
116
|
const isWindows = process.platform === 'win32';
|
|
@@ -135,18 +181,21 @@ class BashRunner {
|
|
|
135
181
|
});
|
|
136
182
|
return;
|
|
137
183
|
}
|
|
184
|
+
const combined = combinedOutput(stdout, stderr);
|
|
138
185
|
if (signal === 'SIGTERM') {
|
|
139
186
|
resolve({
|
|
140
187
|
status: 'failed',
|
|
141
188
|
error: `bash node timed out after ${timeout}ms`,
|
|
142
189
|
transient: true,
|
|
190
|
+
...(combined ? { output: { text: combined } } : {}),
|
|
143
191
|
});
|
|
144
192
|
return;
|
|
145
193
|
}
|
|
146
|
-
const errMsg = (stderr || stdout || '')
|
|
194
|
+
const errMsg = tailForError(stderr || stdout || '');
|
|
147
195
|
resolve({
|
|
148
196
|
status: 'failed',
|
|
149
197
|
error: `bash exited with code ${code}: ${errMsg}`,
|
|
198
|
+
output: { text: combined },
|
|
150
199
|
});
|
|
151
200
|
});
|
|
152
201
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/workflows/runners/bash.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/workflows/runners/bash.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,55 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PromptNode runner —
|
|
2
|
+
* PromptNode runner — runs a step on a coding agent in headless mode.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* CLI flags.
|
|
4
|
+
* Host-neutral (REQ-AGENTADAPT-005): the run's headless-agent adapter
|
|
5
|
+
* (`src/workflows/agents/`) supplies the binary, translates the step's model,
|
|
6
|
+
* tools and appended system prompt into that host's flags, and parses its
|
|
7
|
+
* streamed output. Shelling out to the agent's CLI (rather than embedding an
|
|
8
|
+
* SDK) keeps auth with the user's own install and adds no dependencies.
|
|
10
9
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* `
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* what the old `--output-format json` produced. If the output isn't a parseable
|
|
17
|
-
* stream, we fall back to treating stdout as the result, so a run never breaks.
|
|
10
|
+
* Each streamed line is surfaced as a workflow event via `ctx.emitEvent`
|
|
11
|
+
* (WF-STREAM-DOC): a `tool_called` event per tool the agent invokes and an
|
|
12
|
+
* `agent_message` event per assistant text turn. The step's text output is the
|
|
13
|
+
* host's final result (or its concatenated assistant text). If the output isn't
|
|
14
|
+
* a parseable stream, stdout is treated as the result, so a run never breaks.
|
|
18
15
|
*
|
|
19
16
|
* Limitations (acceptable for v1):
|
|
20
|
-
* - Per-node MCP server config is NOT plumbed — prompt nodes inherit the
|
|
21
|
-
*
|
|
17
|
+
* - Per-node MCP server config is NOT plumbed — prompt nodes inherit the
|
|
18
|
+
* host agent's configured MCP servers. v2 candidate.
|
|
22
19
|
* - Per-node hooks likewise inherit host-level hooks.
|
|
23
20
|
*
|
|
24
21
|
* Raw output also streams to `<logsDir>/<runId>-<nodeId>.jsonl`.
|
|
25
22
|
*/
|
|
26
23
|
import { DagNode } from '../schemas/workflow';
|
|
27
24
|
import { NodeRunner, NodeRunResult, RunnerContext } from './types';
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
export
|
|
31
|
-
/** True once at least one line parsed as a known stream event. */
|
|
32
|
-
sawStream: boolean;
|
|
33
|
-
/** Final result text from the terminal `result` event, if seen. */
|
|
34
|
-
resultText: string | null;
|
|
35
|
-
/** Concatenated assistant text turns (fallback when there's no result event). */
|
|
36
|
-
assistantText: string;
|
|
37
|
-
/** `total_cost_usd` from the terminal `result` frame, if present. */
|
|
38
|
-
costUsd?: number;
|
|
39
|
-
/** `duration_ms` from the terminal `result` frame, if present. */
|
|
40
|
-
durationMs?: number;
|
|
41
|
-
/** `model` from the `system` init frame, if present. */
|
|
42
|
-
model?: string;
|
|
43
|
-
}
|
|
44
|
-
export declare function newStreamState(): StreamParseState;
|
|
45
|
-
/** A short, single-line summary of a tool's input for the `tool_called` event. */
|
|
46
|
-
export declare function summarizeToolInput(input: unknown): string;
|
|
47
|
-
/**
|
|
48
|
-
* Parse one stream-json line, emit any activity events, and fold the result
|
|
49
|
-
* into `state`. Pure aside from the `emit` callback. Unknown / non-JSON lines
|
|
50
|
-
* are ignored. Extended-thinking blocks are intentionally NOT emitted.
|
|
51
|
-
*/
|
|
52
|
-
export declare function handleStreamLine(line: string, emit: (type: WorkflowEventType, data?: Record<string, unknown>) => void, state: StreamParseState): void;
|
|
25
|
+
export { newStreamState, summarizeToolInput } from '../agents/types';
|
|
26
|
+
export type { StreamParseState } from '../agents/types';
|
|
27
|
+
export { handleClaudeStreamLine as handleStreamLine } from '../agents/claude';
|
|
53
28
|
export declare class PromptRunner implements NodeRunner {
|
|
54
29
|
readonly kind: "prompt";
|
|
55
30
|
run(rawNode: DagNode, ctx: RunnerContext): Promise<NodeRunResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/workflows/runners/prompt.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/workflows/runners/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAKnE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAW9E,qBAAa,YAAa,YAAW,UAAU;IAC7C,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAE5B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAqKxE"}
|
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* PromptNode runner —
|
|
3
|
+
* PromptNode runner — runs a step on a coding agent in headless mode.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* CLI flags.
|
|
5
|
+
* Host-neutral (REQ-AGENTADAPT-005): the run's headless-agent adapter
|
|
6
|
+
* (`src/workflows/agents/`) supplies the binary, translates the step's model,
|
|
7
|
+
* tools and appended system prompt into that host's flags, and parses its
|
|
8
|
+
* streamed output. Shelling out to the agent's CLI (rather than embedding an
|
|
9
|
+
* SDK) keeps auth with the user's own install and adds no dependencies.
|
|
11
10
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* `
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* what the old `--output-format json` produced. If the output isn't a parseable
|
|
18
|
-
* stream, we fall back to treating stdout as the result, so a run never breaks.
|
|
11
|
+
* Each streamed line is surfaced as a workflow event via `ctx.emitEvent`
|
|
12
|
+
* (WF-STREAM-DOC): a `tool_called` event per tool the agent invokes and an
|
|
13
|
+
* `agent_message` event per assistant text turn. The step's text output is the
|
|
14
|
+
* host's final result (or its concatenated assistant text). If the output isn't
|
|
15
|
+
* a parseable stream, stdout is treated as the result, so a run never breaks.
|
|
19
16
|
*
|
|
20
17
|
* Limitations (acceptable for v1):
|
|
21
|
-
* - Per-node MCP server config is NOT plumbed — prompt nodes inherit the
|
|
22
|
-
*
|
|
18
|
+
* - Per-node MCP server config is NOT plumbed — prompt nodes inherit the
|
|
19
|
+
* host agent's configured MCP servers. v2 candidate.
|
|
23
20
|
* - Per-node hooks likewise inherit host-level hooks.
|
|
24
21
|
*
|
|
25
22
|
* Raw output also streams to `<logsDir>/<runId>-<nodeId>.jsonl`.
|
|
@@ -58,13 +55,18 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
58
55
|
};
|
|
59
56
|
})();
|
|
60
57
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
-
exports.PromptRunner = void 0;
|
|
62
|
-
exports.newStreamState = newStreamState;
|
|
63
|
-
exports.summarizeToolInput = summarizeToolInput;
|
|
64
|
-
exports.handleStreamLine = handleStreamLine;
|
|
58
|
+
exports.PromptRunner = exports.handleStreamLine = exports.summarizeToolInput = exports.newStreamState = void 0;
|
|
65
59
|
const child_process_1 = require("child_process");
|
|
66
60
|
const fs = __importStar(require("fs"));
|
|
67
61
|
const path = __importStar(require("path"));
|
|
62
|
+
const agents_1 = require("../agents");
|
|
63
|
+
const types_1 = require("../agents/types");
|
|
64
|
+
// Kept as this module's exports so existing importers keep working.
|
|
65
|
+
var types_2 = require("../agents/types");
|
|
66
|
+
Object.defineProperty(exports, "newStreamState", { enumerable: true, get: function () { return types_2.newStreamState; } });
|
|
67
|
+
Object.defineProperty(exports, "summarizeToolInput", { enumerable: true, get: function () { return types_2.summarizeToolInput; } });
|
|
68
|
+
var claude_1 = require("../agents/claude");
|
|
69
|
+
Object.defineProperty(exports, "handleStreamLine", { enumerable: true, get: function () { return claude_1.handleClaudeStreamLine; } });
|
|
68
70
|
const TRANSIENT_PATTERNS = [
|
|
69
71
|
/rate.?limit/i,
|
|
70
72
|
/timeout/i,
|
|
@@ -73,79 +75,6 @@ const TRANSIENT_PATTERNS = [
|
|
|
73
75
|
/econn/i,
|
|
74
76
|
/etimedout/i,
|
|
75
77
|
];
|
|
76
|
-
function newStreamState() {
|
|
77
|
-
return { sawStream: false, resultText: null, assistantText: '' };
|
|
78
|
-
}
|
|
79
|
-
/** A short, single-line summary of a tool's input for the `tool_called` event. */
|
|
80
|
-
function summarizeToolInput(input) {
|
|
81
|
-
if (input == null)
|
|
82
|
-
return '';
|
|
83
|
-
let s;
|
|
84
|
-
if (typeof input === 'string') {
|
|
85
|
-
s = input;
|
|
86
|
-
}
|
|
87
|
-
else if (typeof input === 'object') {
|
|
88
|
-
const o = input;
|
|
89
|
-
const pick = o.file_path ?? o.path ?? o.command ?? o.pattern ?? o.query ?? o.url ?? o.prompt;
|
|
90
|
-
s = typeof pick === 'string' ? pick : JSON.stringify(o);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
s = String(input);
|
|
94
|
-
}
|
|
95
|
-
s = s.replace(/\s+/g, ' ').trim();
|
|
96
|
-
return s.length > 140 ? `${s.slice(0, 140)}…` : s;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Parse one stream-json line, emit any activity events, and fold the result
|
|
100
|
-
* into `state`. Pure aside from the `emit` callback. Unknown / non-JSON lines
|
|
101
|
-
* are ignored. Extended-thinking blocks are intentionally NOT emitted.
|
|
102
|
-
*/
|
|
103
|
-
function handleStreamLine(line, emit, state) {
|
|
104
|
-
const trimmed = line.trim();
|
|
105
|
-
if (!trimmed)
|
|
106
|
-
return;
|
|
107
|
-
let ev;
|
|
108
|
-
try {
|
|
109
|
-
ev = JSON.parse(trimmed);
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
return; // not JSON — ignore (keeps the fallback path intact)
|
|
113
|
-
}
|
|
114
|
-
if (!ev || typeof ev !== 'object')
|
|
115
|
-
return;
|
|
116
|
-
const e = ev;
|
|
117
|
-
if (e.type === 'assistant' && e.message && typeof e.message === 'object') {
|
|
118
|
-
state.sawStream = true;
|
|
119
|
-
const content = e.message.content;
|
|
120
|
-
if (Array.isArray(content)) {
|
|
121
|
-
for (const raw of content) {
|
|
122
|
-
const b = raw;
|
|
123
|
-
if (b?.type === 'tool_use') {
|
|
124
|
-
emit('tool_called', { name: b.name, input: summarizeToolInput(b.input) });
|
|
125
|
-
}
|
|
126
|
-
else if (b?.type === 'text' && typeof b.text === 'string' && b.text.trim()) {
|
|
127
|
-
state.assistantText += (state.assistantText ? '\n' : '') + b.text;
|
|
128
|
-
emit('agent_message', { text: b.text });
|
|
129
|
-
}
|
|
130
|
-
// 'thinking' blocks: deliberately skipped.
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
else if (e.type === 'result') {
|
|
135
|
-
state.sawStream = true;
|
|
136
|
-
if (typeof e.result === 'string')
|
|
137
|
-
state.resultText = e.result;
|
|
138
|
-
if (typeof e.total_cost_usd === 'number')
|
|
139
|
-
state.costUsd = e.total_cost_usd;
|
|
140
|
-
if (typeof e.duration_ms === 'number')
|
|
141
|
-
state.durationMs = e.duration_ms;
|
|
142
|
-
}
|
|
143
|
-
else if (e.type === 'system') {
|
|
144
|
-
state.sawStream = true; // init/system frame — confirms we're on the stream path
|
|
145
|
-
if (typeof e.model === 'string' && e.model)
|
|
146
|
-
state.model = e.model;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
78
|
class PromptRunner {
|
|
150
79
|
kind = 'prompt';
|
|
151
80
|
async run(rawNode, ctx) {
|
|
@@ -153,29 +82,23 @@ class PromptRunner {
|
|
|
153
82
|
return { status: 'failed', error: `PromptRunner received ${rawNode.kind} node` };
|
|
154
83
|
}
|
|
155
84
|
const node = rawNode;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
if (node.allowed_tools && node.allowed_tools.length > 0) {
|
|
166
|
-
args.push('--allowed-tools', node.allowed_tools.join(','));
|
|
167
|
-
}
|
|
168
|
-
if (node.denied_tools && node.denied_tools.length > 0) {
|
|
169
|
-
args.push('--disallowed-tools', node.denied_tools.join(','));
|
|
170
|
-
}
|
|
171
|
-
if (node.systemPromptAppend) {
|
|
172
|
-
args.push('--append-system-prompt', node.systemPromptAppend);
|
|
85
|
+
// The run's agent (REQ-AGENTADAPT-006) translates the step; shared code
|
|
86
|
+
// never names a host binary or flag (REQ-AGENTADAPT-005).
|
|
87
|
+
const agentId = ctx.agent ?? agents_1.DEFAULT_WORKFLOW_AGENT;
|
|
88
|
+
const agent = (0, agents_1.getHeadlessAgent)(agentId);
|
|
89
|
+
if (!agent)
|
|
90
|
+
return { status: 'failed', error: `unknown workflow agent "${agentId}"` };
|
|
91
|
+
const built = agent.build(node, (0, agents_1.workflowAgentConfig)(ctx.cwd, agent.id), process.env);
|
|
92
|
+
if ('error' in built) {
|
|
93
|
+
return { status: 'failed', error: `${agent.id} cannot run step ${node.id}: ${built.error}` };
|
|
173
94
|
}
|
|
95
|
+
const { bin, args } = built;
|
|
96
|
+
const binName = path.basename(bin);
|
|
174
97
|
const logPath = path.join(ctx.logsDir, `${ctx.runId}-${node.id}.jsonl`);
|
|
175
98
|
return new Promise((resolve) => {
|
|
176
99
|
let child;
|
|
177
100
|
try {
|
|
178
|
-
child = (0, child_process_1.spawn)(
|
|
101
|
+
child = (0, child_process_1.spawn)(bin, args, {
|
|
179
102
|
cwd: ctx.cwd,
|
|
180
103
|
env: process.env,
|
|
181
104
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
@@ -185,17 +108,19 @@ class PromptRunner {
|
|
|
185
108
|
catch (err) {
|
|
186
109
|
resolve({
|
|
187
110
|
status: 'failed',
|
|
188
|
-
error: `failed to spawn ${
|
|
111
|
+
error: `failed to spawn ${bin}: ${err instanceof Error ? err.message : String(err)}`,
|
|
189
112
|
});
|
|
190
113
|
return;
|
|
191
114
|
}
|
|
192
115
|
let stdout = '';
|
|
193
116
|
let stderr = '';
|
|
194
117
|
let lineBuf = '';
|
|
195
|
-
const state = newStreamState();
|
|
118
|
+
const state = (0, types_1.newStreamState)();
|
|
196
119
|
let logStream = null;
|
|
197
120
|
try {
|
|
198
121
|
logStream = fs.createWriteStream(logPath, { flags: 'a' });
|
|
122
|
+
// The log is best-effort: an unwritable logs dir must never crash the run.
|
|
123
|
+
logStream.on('error', () => { });
|
|
199
124
|
logStream.write(`${JSON.stringify({ event: 'spawn', cwd: ctx.cwd, args, ts: Date.now() })}\n`);
|
|
200
125
|
}
|
|
201
126
|
catch {
|
|
@@ -212,7 +137,9 @@ class PromptRunner {
|
|
|
212
137
|
const line = lineBuf.slice(0, idx);
|
|
213
138
|
lineBuf = lineBuf.slice(idx + 1);
|
|
214
139
|
if (ctx.emitEvent)
|
|
215
|
-
|
|
140
|
+
agent.handleLine(line, ctx.emitEvent, state);
|
|
141
|
+
else
|
|
142
|
+
agent.handleLine(line, () => { }, state);
|
|
216
143
|
}
|
|
217
144
|
});
|
|
218
145
|
child.stderr?.on('data', (chunk) => {
|
|
@@ -232,30 +159,38 @@ class PromptRunner {
|
|
|
232
159
|
if (killer)
|
|
233
160
|
clearTimeout(killer);
|
|
234
161
|
logStream?.end();
|
|
162
|
+
// A missing binary is a setup problem, not a transient one (REQ-AGENTADAPT-006.A5).
|
|
163
|
+
const missing = err.code === 'ENOENT';
|
|
235
164
|
resolve({
|
|
236
165
|
status: 'failed',
|
|
237
|
-
error:
|
|
238
|
-
|
|
166
|
+
error: missing
|
|
167
|
+
? `${binName} not found on PATH — install ${agent.id === agents_1.DEFAULT_WORKFLOW_AGENT ? 'it' : `the ${agent.id} CLI`} or choose another agent with --agent`
|
|
168
|
+
: `spawn error: ${err.message}`,
|
|
169
|
+
transient: missing ? false : isTransient(err.message),
|
|
239
170
|
});
|
|
240
171
|
});
|
|
241
172
|
child.on('close', (code) => {
|
|
242
173
|
if (killer)
|
|
243
174
|
clearTimeout(killer);
|
|
244
175
|
// Flush any trailing partial line.
|
|
245
|
-
if (lineBuf.trim()
|
|
246
|
-
|
|
176
|
+
if (lineBuf.trim())
|
|
177
|
+
agent.handleLine(lineBuf, ctx.emitEvent ?? (() => { }), state);
|
|
247
178
|
logStream?.end();
|
|
248
179
|
if (code !== 0) {
|
|
249
180
|
const errMsg = (stderr || stdout || '').slice(0, 4000);
|
|
250
181
|
resolve({
|
|
251
182
|
status: 'failed',
|
|
252
|
-
error:
|
|
183
|
+
error: `${binName} exited with code ${code}: ${errMsg}`,
|
|
253
184
|
transient: isTransient(errMsg),
|
|
254
185
|
});
|
|
255
186
|
return;
|
|
256
187
|
}
|
|
257
188
|
// Stream path: the terminal `result` is the node's output — identical
|
|
258
189
|
// to what `--output-format json` produced.
|
|
190
|
+
if (state.failure) {
|
|
191
|
+
resolve({ status: 'failed', error: `${binName} reported an error: ${state.failure}`, transient: isTransient(state.failure) });
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
259
194
|
if (state.sawStream) {
|
|
260
195
|
const text = state.resultText ?? state.assistantText ?? stdout;
|
|
261
196
|
const stats = state.costUsd !== undefined || state.durationMs !== undefined || state.model !== undefined
|
|
@@ -294,7 +229,7 @@ class PromptRunner {
|
|
|
294
229
|
});
|
|
295
230
|
// Send the prompt on stdin.
|
|
296
231
|
try {
|
|
297
|
-
child.stdin?.write(
|
|
232
|
+
child.stdin?.write(built.stdin);
|
|
298
233
|
child.stdin?.end();
|
|
299
234
|
}
|
|
300
235
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/workflows/runners/prompt.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/workflows/runners/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,11 @@ export interface RunnerContext {
|
|
|
27
27
|
outputs: Map<string, NodeOutput>;
|
|
28
28
|
/** Verbose logging flag. */
|
|
29
29
|
verbose?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* The headless agent prompt steps run on — the id stored with the run
|
|
32
|
+
* (REQ-AGENTADAPT-006). Unset means the default agent.
|
|
33
|
+
*/
|
|
34
|
+
agent?: string;
|
|
30
35
|
/**
|
|
31
36
|
* Emit a workflow event mid-step — used by the agent runner to stream its
|
|
32
37
|
* live activity (tool calls, message turns) into the run view. No-op when
|
|
@@ -53,6 +58,13 @@ export type NodeRunResult = {
|
|
|
53
58
|
status: 'failed';
|
|
54
59
|
error: string;
|
|
55
60
|
transient?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* What the step printed before it failed (e.g. a bash step's combined
|
|
63
|
+
* stdout+stderr). The executor stores it in the run's outputs and writes
|
|
64
|
+
* it as the step's artifact so a failure keeps its evidence
|
|
65
|
+
* (REQ-PIPETRUST-006). Does NOT make the node count as completed.
|
|
66
|
+
*/
|
|
67
|
+
output?: NodeOutput;
|
|
56
68
|
} | {
|
|
57
69
|
status: 'paused';
|
|
58
70
|
approval: ApprovalContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/workflows/runners/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,+EAA+E;IAC/E,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC/E;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,GACjE;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/workflows/runners/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,+EAA+E;IAC/E,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC/E;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,GACjE;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,GACD;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,sGAAsG;IACtG,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAChE"}
|
|
@@ -104,10 +104,27 @@ export interface ApprovalNode extends BaseNode {
|
|
|
104
104
|
message: string;
|
|
105
105
|
/** If true, the user's reply text becomes `$nodeId.output`. */
|
|
106
106
|
capture_response?: boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Auto-approve (THROUGHPUT-DOC, REQ-THRU-003): when the output of node
|
|
109
|
+
* `from` contains `marker`, the gate completes without pausing and its
|
|
110
|
+
* output records why. Used only for the plan gate behind a project opt-in;
|
|
111
|
+
* the final review never carries it.
|
|
112
|
+
*/
|
|
113
|
+
auto_approve?: {
|
|
114
|
+
from: string;
|
|
115
|
+
marker: string;
|
|
116
|
+
};
|
|
107
117
|
/** Optional on-reject retry config. */
|
|
108
118
|
on_reject?: {
|
|
109
119
|
prompt: string;
|
|
110
120
|
max_attempts?: number;
|
|
121
|
+
/**
|
|
122
|
+
* Node whose output the revision replaces (REQ-AUDFIX-003.A2). When set,
|
|
123
|
+
* a successful revision's output is stored under this node id, so every
|
|
124
|
+
* downstream `$<revises>.output` reference reads the revision. Must name
|
|
125
|
+
* a node in the workflow (validated).
|
|
126
|
+
*/
|
|
127
|
+
revises?: string;
|
|
111
128
|
};
|
|
112
129
|
}
|
|
113
130
|
/** Terminate the workflow with a reason. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/schemas/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAM/C,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,aAAa,GACb,6BAA6B,GAC7B,UAAU,CAAC;AAEf,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8GAA8G;IAC9G,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAChC;AAED,sFAAsF;AACtF,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CAAC;AAM9D,4CAA4C;AAC5C,MAAM,WAAW,QAAQ;IACvB,4FAA4F;IAC5F,EAAE,EAAE,MAAM,CAAC;IAEX,+BAA+B;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IAEvB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,kFAAkF;IAClF,YAAY,CAAC,EAAE,WAAW,CAAC;IAE3B,mGAAmG;IACnG,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qEAAqE;IACrE,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IAEf,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qEAAqE;AACrE,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,gEAAgE;AAChE,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,IAAI,EAAE,UAAU,CAAC;IACjB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uCAAuC;IACvC,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/schemas/workflow.ts"],"names":[],"mappings":"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"}
|