@specship/specship-darwin-arm64 0.28.0 → 0.30.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 +1 -1
- package/lib/dist/.claude-plugin/plugin.json +15 -3
- package/lib/dist/activation/cheatsheet.d.ts +10 -7
- package/lib/dist/activation/cheatsheet.d.ts.map +1 -1
- package/lib/dist/activation/cheatsheet.js +21 -5
- package/lib/dist/activation/cheatsheet.js.map +1 -1
- package/lib/dist/activation/hook-output.d.ts +75 -2
- package/lib/dist/activation/hook-output.d.ts.map +1 -1
- package/lib/dist/activation/hook-output.js +114 -3
- package/lib/dist/activation/hook-output.js.map +1 -1
- package/lib/dist/activation/search-intercept.d.ts +20 -7
- package/lib/dist/activation/search-intercept.d.ts.map +1 -1
- package/lib/dist/activation/search-intercept.js +27 -5
- package/lib/dist/activation/search-intercept.js.map +1 -1
- package/lib/dist/activation/steering.d.ts +7 -4
- package/lib/dist/activation/steering.d.ts.map +1 -1
- package/lib/dist/activation/steering.js +10 -8
- package/lib/dist/activation/steering.js.map +1 -1
- package/lib/dist/agents/detect.d.ts +32 -0
- package/lib/dist/agents/detect.d.ts.map +1 -0
- package/lib/dist/agents/detect.js +54 -0
- package/lib/dist/agents/detect.js.map +1 -0
- package/lib/dist/agents/recent-project.d.ts +18 -0
- package/lib/dist/agents/recent-project.d.ts.map +1 -0
- package/lib/dist/agents/recent-project.js +92 -0
- package/lib/dist/agents/recent-project.js.map +1 -0
- package/lib/dist/analytics/canonical-tools.d.ts +23 -0
- package/lib/dist/analytics/canonical-tools.d.ts.map +1 -0
- package/lib/dist/analytics/canonical-tools.js +36 -0
- package/lib/dist/analytics/canonical-tools.js.map +1 -0
- package/lib/dist/analytics/canonical-tools.json +16 -0
- package/lib/dist/analytics/specship-impact.d.ts +3 -2
- package/lib/dist/analytics/specship-impact.d.ts.map +1 -1
- package/lib/dist/analytics/specship-impact.js +6 -4
- package/lib/dist/analytics/specship-impact.js.map +1 -1
- package/lib/dist/bin/specship.js +252 -170
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/bin/uninstall.js +2 -2
- package/lib/dist/bin/uninstall.js.map +1 -1
- package/lib/dist/claudemd/audit.d.ts +12 -3
- package/lib/dist/claudemd/audit.d.ts.map +1 -1
- package/lib/dist/claudemd/audit.js +65 -22
- package/lib/dist/claudemd/audit.js.map +1 -1
- package/lib/dist/commands/specship/spec.md +16 -1
- package/lib/dist/db/migrations.d.ts +1 -1
- package/lib/dist/db/migrations.d.ts.map +1 -1
- package/lib/dist/db/migrations.js +18 -4
- package/lib/dist/db/migrations.js.map +1 -1
- package/lib/dist/db/schema.sql +8 -0
- package/lib/dist/db/spec-queries.d.ts +13 -1
- package/lib/dist/db/spec-queries.d.ts.map +1 -1
- package/lib/dist/db/spec-queries.js +21 -0
- package/lib/dist/db/spec-queries.js.map +1 -1
- package/lib/dist/design-md/check.d.ts +51 -0
- package/lib/dist/design-md/check.d.ts.map +1 -0
- package/lib/dist/design-md/check.js +335 -0
- package/lib/dist/design-md/check.js.map +1 -0
- package/lib/dist/design-md/css.d.ts +40 -0
- package/lib/dist/design-md/css.d.ts.map +1 -0
- package/lib/dist/design-md/css.js +224 -0
- package/lib/dist/design-md/css.js.map +1 -0
- package/lib/dist/design-md/extract.d.ts +84 -0
- package/lib/dist/design-md/extract.d.ts.map +1 -0
- package/lib/dist/design-md/extract.js +595 -0
- package/lib/dist/design-md/extract.js.map +1 -0
- package/lib/dist/design-md/maintain.d.ts +45 -0
- package/lib/dist/design-md/maintain.d.ts.map +1 -0
- package/lib/dist/design-md/maintain.js +127 -0
- package/lib/dist/design-md/maintain.js.map +1 -0
- package/lib/dist/design-md/render.d.ts +28 -0
- package/lib/dist/design-md/render.d.ts.map +1 -0
- package/lib/dist/design-md/render.js +178 -0
- package/lib/dist/design-md/render.js.map +1 -0
- package/lib/dist/design-md/upkeep.d.ts +48 -0
- package/lib/dist/design-md/upkeep.d.ts.map +1 -0
- package/lib/dist/design-md/upkeep.js +169 -0
- package/lib/dist/design-md/upkeep.js.map +1 -0
- package/lib/dist/design-md/verify.d.ts +65 -0
- package/lib/dist/design-md/verify.d.ts.map +1 -0
- package/lib/dist/design-md/verify.js +311 -0
- package/lib/dist/design-md/verify.js.map +1 -0
- package/lib/dist/enforce/changed-files.d.ts +7 -0
- package/lib/dist/enforce/changed-files.d.ts.map +1 -1
- package/lib/dist/enforce/changed-files.js +17 -0
- package/lib/dist/enforce/changed-files.js.map +1 -1
- package/lib/dist/enforce/enforce.d.ts +35 -1
- package/lib/dist/enforce/enforce.d.ts.map +1 -1
- package/lib/dist/enforce/enforce.js +66 -2
- package/lib/dist/enforce/enforce.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +50 -4
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +105 -13
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/parse-warnings.d.ts +16 -0
- package/lib/dist/extraction/parse-warnings.d.ts.map +1 -0
- package/lib/dist/extraction/parse-warnings.js +30 -0
- package/lib/dist/extraction/parse-warnings.js.map +1 -0
- package/lib/dist/extraction/tree-sitter.d.ts +27 -0
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +168 -1
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/health/smoke-check.js +1 -1
- package/lib/dist/health/smoke-check.js.map +1 -1
- package/lib/dist/hooks/hooks.json +16 -1
- package/lib/dist/index.d.ts +63 -3
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +235 -9
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/agent-record.d.ts +80 -0
- package/lib/dist/installer/agent-record.d.ts.map +1 -0
- package/lib/dist/installer/agent-record.js +351 -0
- package/lib/dist/installer/agent-record.js.map +1 -0
- package/lib/dist/installer/auto-migrate.d.ts +56 -0
- package/lib/dist/installer/auto-migrate.d.ts.map +1 -0
- package/lib/dist/installer/auto-migrate.js +328 -0
- package/lib/dist/installer/auto-migrate.js.map +1 -0
- package/lib/dist/installer/index.d.ts +37 -8
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +156 -46
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/install-defaults.d.ts +4 -3
- package/lib/dist/installer/install-defaults.d.ts.map +1 -1
- package/lib/dist/installer/install-defaults.js +6 -5
- package/lib/dist/installer/install-defaults.js.map +1 -1
- package/lib/dist/installer/{config-writer.d.ts → targets/claude-config-writer.d.ts} +1 -1
- package/lib/dist/installer/targets/claude-config-writer.d.ts.map +1 -0
- package/lib/dist/installer/{config-writer.js → targets/claude-config-writer.js} +7 -6
- package/lib/dist/installer/targets/claude-config-writer.js.map +1 -0
- package/lib/dist/installer/targets/claude-projects.d.ts +9 -0
- package/lib/dist/installer/targets/claude-projects.d.ts.map +1 -0
- package/lib/dist/installer/targets/claude-projects.js +151 -0
- package/lib/dist/installer/targets/claude-projects.js.map +1 -0
- package/lib/dist/installer/targets/claude.d.ts +29 -2
- package/lib/dist/installer/targets/claude.d.ts.map +1 -1
- package/lib/dist/installer/targets/claude.js +44 -20
- package/lib/dist/installer/targets/claude.js.map +1 -1
- package/lib/dist/installer/targets/feature-parity.d.ts +28 -0
- package/lib/dist/installer/targets/feature-parity.d.ts.map +1 -0
- package/lib/dist/installer/targets/feature-parity.js +32 -0
- package/lib/dist/installer/targets/feature-parity.js.map +1 -0
- package/lib/dist/installer/{gemini-commands.d.ts → targets/gemini-commands.d.ts} +7 -3
- package/lib/dist/installer/targets/gemini-commands.d.ts.map +1 -0
- package/lib/dist/installer/{gemini-commands.js → targets/gemini-commands.js} +37 -9
- package/lib/dist/installer/targets/gemini-commands.js.map +1 -0
- package/lib/dist/installer/targets/gemini-projects.d.ts +11 -0
- package/lib/dist/installer/targets/gemini-projects.d.ts.map +1 -0
- package/lib/dist/installer/targets/gemini-projects.js +84 -0
- package/lib/dist/installer/targets/gemini-projects.js.map +1 -0
- package/lib/dist/installer/targets/gemini.d.ts +94 -8
- package/lib/dist/installer/targets/gemini.d.ts.map +1 -1
- package/lib/dist/installer/targets/gemini.js +392 -33
- package/lib/dist/installer/targets/gemini.js.map +1 -1
- package/lib/dist/installer/targets/registry.d.ts +8 -1
- package/lib/dist/installer/targets/registry.d.ts.map +1 -1
- package/lib/dist/installer/targets/registry.js +14 -5
- package/lib/dist/installer/targets/registry.js.map +1 -1
- package/lib/dist/installer/targets/shared.d.ts +44 -1
- package/lib/dist/installer/targets/shared.d.ts.map +1 -1
- package/lib/dist/installer/targets/shared.js +130 -3
- package/lib/dist/installer/targets/shared.js.map +1 -1
- package/lib/dist/installer/targets/types.d.ts +23 -1
- package/lib/dist/installer/targets/types.d.ts.map +1 -1
- package/lib/dist/jira/auto-publish.d.ts +22 -2
- package/lib/dist/jira/auto-publish.d.ts.map +1 -1
- package/lib/dist/jira/auto-publish.js +54 -9
- package/lib/dist/jira/auto-publish.js.map +1 -1
- package/lib/dist/jira/board-first.d.ts +15 -2
- package/lib/dist/jira/board-first.d.ts.map +1 -1
- package/lib/dist/jira/board-first.js +16 -0
- package/lib/dist/jira/board-first.js.map +1 -1
- package/lib/dist/jira/ci-publish.d.ts +72 -0
- package/lib/dist/jira/ci-publish.d.ts.map +1 -0
- package/lib/dist/jira/ci-publish.js +162 -0
- package/lib/dist/jira/ci-publish.js.map +1 -0
- package/lib/dist/jira/publish.d.ts +23 -0
- package/lib/dist/jira/publish.d.ts.map +1 -1
- package/lib/dist/jira/publish.js +0 -0
- package/lib/dist/jira/publish.js.map +1 -1
- package/lib/dist/jira/regression-pack.d.ts.map +1 -1
- package/lib/dist/jira/regression-pack.js +7 -1
- package/lib/dist/jira/regression-pack.js.map +1 -1
- package/lib/dist/jira/repo-config.d.ts.map +1 -1
- package/lib/dist/jira/repo-config.js +8 -0
- package/lib/dist/jira/repo-config.js.map +1 -1
- package/lib/dist/jira/types.d.ts +8 -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.map +1 -1
- package/lib/dist/knowledge/enforce.js +6 -1
- package/lib/dist/knowledge/enforce.js.map +1 -1
- package/lib/dist/mcp/jira-tools.d.ts +5 -0
- package/lib/dist/mcp/jira-tools.d.ts.map +1 -1
- package/lib/dist/mcp/jira-tools.js +59 -4
- package/lib/dist/mcp/jira-tools.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +2 -1
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/server-instructions.d.ts +16 -10
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +69 -20
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/session.d.ts +11 -0
- package/lib/dist/mcp/session.d.ts.map +1 -1
- package/lib/dist/mcp/session.js +43 -1
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +8 -0
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/reflect/apply.d.ts +2 -2
- package/lib/dist/reflect/apply.d.ts.map +1 -1
- package/lib/dist/reflect/apply.js +6 -5
- package/lib/dist/reflect/apply.js.map +1 -1
- package/lib/dist/reflect/miner.d.ts.map +1 -1
- package/lib/dist/reflect/miner.js +28 -15
- package/lib/dist/reflect/miner.js.map +1 -1
- package/lib/dist/reflect/session-outcomes.d.ts.map +1 -1
- package/lib/dist/reflect/session-outcomes.js +8 -3
- package/lib/dist/reflect/session-outcomes.js.map +1 -1
- package/lib/dist/reflect/targets.d.ts.map +1 -1
- package/lib/dist/reflect/targets.js +25 -5
- package/lib/dist/reflect/targets.js.map +1 -1
- package/lib/dist/reflect/types.d.ts +7 -0
- package/lib/dist/reflect/types.d.ts.map +1 -1
- package/lib/dist/resolution/spec-link-resolver.d.ts +14 -2
- package/lib/dist/resolution/spec-link-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/spec-link-resolver.js +13 -3
- package/lib/dist/resolution/spec-link-resolver.js.map +1 -1
- package/lib/dist/server/canonical-tools.js +50 -0
- package/lib/dist/server/cli.js +2 -2
- package/lib/dist/server/host-profiles.js +39 -0
- package/lib/dist/server/ingest/index.js +2 -1
- package/lib/dist/server/ingest/ingestor.js +195 -76
- package/lib/dist/server/ingest/project-paths.js +8 -2
- package/lib/dist/server/ingest/recorded-projects.js +43 -0
- package/lib/dist/server/ingest/specship-classify.js +7 -2
- package/lib/dist/server/ingest/transcripts/claude-jsonl.js +54 -0
- package/lib/dist/server/ingest/transcripts/claude.js +64 -0
- package/lib/dist/server/ingest/transcripts/gemini.js +469 -0
- package/lib/dist/server/ingest/transcripts/index.js +14 -0
- package/lib/dist/server/ingest/{parser.js → transcripts/shared.js} +3 -49
- package/lib/dist/server/ingest/transcripts/types.js +4 -0
- package/lib/dist/server/ingest/watcher.js +31 -30
- package/lib/dist/server/routes/claude.js +27 -10
- package/lib/dist/server/routes/graph.js +64 -3
- package/lib/dist/server/routes/mcp.js +57 -15
- package/lib/dist/server/routes/memory.js +54 -35
- package/lib/dist/server/routes/projects.js +78 -7
- package/lib/dist/server/routes/spec.js +125 -0
- package/lib/dist/server/server.js +8 -2
- package/lib/dist/skills/design-md/SKILL.md +172 -0
- package/lib/dist/skills/design-md/references/authored-sections.md +90 -0
- package/lib/dist/skills/design-md/references/sources.md +71 -0
- package/lib/dist/skills/spec-author/SKILL.md +1 -1
- package/lib/dist/skills/spec-author/references/gap-questions.md +1 -1
- package/lib/dist/spec-lint/lint.d.ts +26 -1
- package/lib/dist/spec-lint/lint.d.ts.map +1 -1
- package/lib/dist/spec-lint/lint.js +96 -7
- package/lib/dist/spec-lint/lint.js.map +1 -1
- package/lib/dist/spec-quality/postcheck.d.ts +7 -1
- package/lib/dist/spec-quality/postcheck.d.ts.map +1 -1
- package/lib/dist/spec-quality/postcheck.js +31 -0
- package/lib/dist/spec-quality/postcheck.js.map +1 -1
- package/lib/dist/sync/worktree.d.ts +48 -0
- package/lib/dist/sync/worktree.d.ts.map +1 -1
- package/lib/dist/sync/worktree.js +109 -0
- package/lib/dist/sync/worktree.js.map +1 -1
- package/lib/dist/ui/assets/bricolage-latin-C23fTOVi.woff2 +0 -0
- package/lib/dist/ui/assets/bricolage-latin-ext-B82pxkPf.woff2 +0 -0
- package/lib/dist/ui/assets/index-54vorjyq.css +1 -0
- package/lib/dist/ui/assets/index-BZQonCVb.js +52 -0
- package/lib/dist/ui/assets/space-grotesk-latin-DPT1xrvW.woff2 +0 -0
- package/lib/dist/ui/assets/space-grotesk-latin-ext-wJGaI8U0.woff2 +0 -0
- package/lib/dist/ui/index.html +2 -2
- package/lib/dist/update/updater.d.ts +6 -0
- package/lib/dist/update/updater.d.ts.map +1 -1
- package/lib/dist/update/updater.js +13 -1
- package/lib/dist/update/updater.js.map +1 -1
- package/lib/dist/workflows/agents/claude.d.ts +9 -0
- package/lib/dist/workflows/agents/claude.d.ts.map +1 -1
- package/lib/dist/workflows/agents/claude.js +22 -3
- package/lib/dist/workflows/agents/claude.js.map +1 -1
- package/lib/dist/workflows/agents/gemini-version.d.ts +18 -0
- package/lib/dist/workflows/agents/gemini-version.d.ts.map +1 -0
- package/lib/dist/workflows/agents/gemini-version.js +81 -0
- package/lib/dist/workflows/agents/gemini-version.js.map +1 -0
- package/lib/dist/workflows/agents/gemini.d.ts +1 -1
- package/lib/dist/workflows/agents/gemini.d.ts.map +1 -1
- package/lib/dist/workflows/agents/gemini.js +12 -2
- package/lib/dist/workflows/agents/gemini.js.map +1 -1
- package/lib/dist/workflows/agents/index.d.ts +2 -0
- package/lib/dist/workflows/agents/index.d.ts.map +1 -1
- package/lib/dist/workflows/agents/index.js +5 -0
- package/lib/dist/workflows/agents/index.js.map +1 -1
- package/lib/dist/workflows/agents/types.d.ts +13 -0
- package/lib/dist/workflows/agents/types.d.ts.map +1 -1
- package/lib/dist/workflows/agents/types.js.map +1 -1
- package/lib/dist/workflows/condition-evaluator.d.ts +8 -0
- package/lib/dist/workflows/condition-evaluator.d.ts.map +1 -1
- package/lib/dist/workflows/condition-evaluator.js +7 -0
- package/lib/dist/workflows/condition-evaluator.js.map +1 -1
- package/lib/dist/workflows/defaults/claude-design-implement.yaml +44 -15
- package/lib/dist/workflows/defaults/spec-author.yaml +9 -9
- package/lib/dist/workflows/defaults/spec-fix.yaml +8 -8
- package/lib/dist/workflows/defaults/spec-implement.yaml +54 -23
- package/lib/dist/workflows/defaults/spec-relink.yaml +5 -5
- package/lib/dist/workflows/defaults/spec-verify.yaml +3 -3
- package/lib/dist/workflows/executor.d.ts +7 -0
- package/lib/dist/workflows/executor.d.ts.map +1 -1
- package/lib/dist/workflows/executor.js +22 -5
- package/lib/dist/workflows/executor.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +3 -2
- package/package.json +1 -1
- package/lib/dist/installer/config-writer.d.ts.map +0 -1
- package/lib/dist/installer/config-writer.js.map +0 -1
- package/lib/dist/installer/gemini-commands.d.ts.map +0 -1
- package/lib/dist/installer/gemini-commands.js.map +0 -1
- package/lib/dist/ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/lib/dist/ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/lib/dist/ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/lib/dist/ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/lib/dist/ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/lib/dist/ui/assets/index-BzuUWUAE.js +0 -50
- package/lib/dist/ui/assets/index-ezwX2EfG.css +0 -1
|
Binary file
|
|
Binary file
|
package/lib/dist/ui/index.html
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
|
|
9
9
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
|
|
10
10
|
<link rel="apple-touch-icon" sizes="180x180" href="/favicon-180.png" />
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-BZQonCVb.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-54vorjyq.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
|
@@ -23,6 +23,12 @@ export interface UpdateDeps {
|
|
|
23
23
|
/** Perform the real update for a method. Throws when the underlying updater
|
|
24
24
|
* (bundle installer / npm) exits non-zero. */
|
|
25
25
|
runInstaller: (method: InstallMethod) => Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Reinstall SpecShip for every agent in the installed-agents record
|
|
28
|
+
* (REQ-AGENTSWITCH-006.A3), via the NEW binary. Returns output lines.
|
|
29
|
+
* Optional; a throw is reported as a warning, never as a failed update.
|
|
30
|
+
*/
|
|
31
|
+
reinstallAgents?: () => Promise<string[]>;
|
|
26
32
|
/** Bundle install dir (for messages). */
|
|
27
33
|
installDir: string;
|
|
28
34
|
/** Bundle symlink dir (for messages). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE9E;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEzD;sEACsE;AACtE,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,8FAC8D,CAAC;AAC9F,eAAO,MAAM,eAAe,uCAAuC,CAAC;AAEpE,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,aAAa,CAAC;IAC5B;yCACqC;IACrC,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D;mDAC+C;IAC/C,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAMzF;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAahE;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE9E;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEzD;sEACsE;AACtE,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,8FAC8D,CAAC;AAC9F,eAAO,MAAM,eAAe,uCAAuC,CAAC;AAEpE,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,aAAa,CAAC;IAC5B;yCACqC;IACrC,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D;mDAC+C;IAC/C,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAMzF;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAahE;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAkHjG"}
|
|
@@ -155,6 +155,17 @@ async function runUpdate(deps, opts = {}) {
|
|
|
155
155
|
lines: [`Update failed: ${errMsg(err)}`, 'Your existing install is unchanged.'],
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
|
+
// Reinstall for every recorded agent (REQ-AGENTSWITCH-006.A3). The binary
|
|
159
|
+
// is already updated, so a failure here is a warning, not a failed update.
|
|
160
|
+
const agentLines = [];
|
|
161
|
+
if (deps.reinstallAgents) {
|
|
162
|
+
try {
|
|
163
|
+
agentLines.push(...(await deps.reinstallAgents()));
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
agentLines.push(`Warning: could not reinstall for the recorded agents: ${errMsg(err)}`, 'Run `specship install --replay-recorded` to retry.');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
158
169
|
// Success → report old → new + remind to restart (REQ-CLI-UPDATE-001.A1, 005.A1).
|
|
159
170
|
return {
|
|
160
171
|
exitCode: 0,
|
|
@@ -165,7 +176,8 @@ async function runUpdate(deps, opts = {}) {
|
|
|
165
176
|
changed: true,
|
|
166
177
|
lines: [
|
|
167
178
|
`Updated ${currentVersion} → ${latestVersion}.`,
|
|
168
|
-
|
|
179
|
+
...agentLines,
|
|
180
|
+
'Restart any running `specship serve` / coding-agent MCP session to pick up the new version.',
|
|
169
181
|
],
|
|
170
182
|
};
|
|
171
183
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":";;;;;;AAoBA,8CAEC;
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,15 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { PromptNode } from '../schemas/workflow';
|
|
7
7
|
import { EmitFn, HeadlessAgent, StreamParseState } from './types';
|
|
8
|
+
/** A tool served by SpecShip's MCP server, named bare (`specship_explore`, `designer_snapshot`). */
|
|
9
|
+
export declare const SPECSHIP_SERVER_TOOL: RegExp;
|
|
10
|
+
/**
|
|
11
|
+
* Bundled workflows name SpecShip's tools by their bare server name
|
|
12
|
+
* (`specship_explore`); Claude Code addresses them as `mcp__specship__…`.
|
|
13
|
+
* Every other entry — built-ins, `Bash(...)`, an already-qualified name a
|
|
14
|
+
* user's own workflow carries — passes through unchanged.
|
|
15
|
+
*/
|
|
16
|
+
export declare function qualifyClaudeTools(tools: readonly string[]): string[];
|
|
8
17
|
export declare function buildClaudeArgs(node: PromptNode): string[];
|
|
9
18
|
/**
|
|
10
19
|
* Parse one stream-json line, emit any activity events, and fold the result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/claude.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAsB,gBAAgB,EAAqC,MAAM,SAAS,CAAC;AAEzH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAkB1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CA4BhG;AAED,eAAO,MAAM,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/claude.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAsB,gBAAgB,EAAqC,MAAM,SAAS,CAAC;AAEzH,oGAAoG;AACpG,eAAO,MAAM,oBAAoB,QAA8B,CAAC;AAKhE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAErE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAkB1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CA4BhG;AAED,eAAO,MAAM,mBAAmB,EAAE,aAajC,CAAC"}
|
|
@@ -5,10 +5,24 @@
|
|
|
5
5
|
* built before adapters existed (REQ-AGENTADAPT-005.A1).
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.claudeHeadlessAgent = void 0;
|
|
8
|
+
exports.claudeHeadlessAgent = exports.SPECSHIP_SERVER_TOOL = void 0;
|
|
9
|
+
exports.qualifyClaudeTools = qualifyClaudeTools;
|
|
9
10
|
exports.buildClaudeArgs = buildClaudeArgs;
|
|
10
11
|
exports.handleClaudeStreamLine = handleClaudeStreamLine;
|
|
11
12
|
const types_1 = require("./types");
|
|
13
|
+
/** A tool served by SpecShip's MCP server, named bare (`specship_explore`, `designer_snapshot`). */
|
|
14
|
+
exports.SPECSHIP_SERVER_TOOL = /^(specship|designer)_\w+$/;
|
|
15
|
+
/** Claude Code's prefix for SpecShip's MCP tools (`mcp__<server>__<tool>`). */
|
|
16
|
+
const CLAUDE_SPECSHIP_TOOL_PREFIX = 'mcp__specship__';
|
|
17
|
+
/**
|
|
18
|
+
* Bundled workflows name SpecShip's tools by their bare server name
|
|
19
|
+
* (`specship_explore`); Claude Code addresses them as `mcp__specship__…`.
|
|
20
|
+
* Every other entry — built-ins, `Bash(...)`, an already-qualified name a
|
|
21
|
+
* user's own workflow carries — passes through unchanged.
|
|
22
|
+
*/
|
|
23
|
+
function qualifyClaudeTools(tools) {
|
|
24
|
+
return tools.map((t) => (exports.SPECSHIP_SERVER_TOOL.test(t) ? `${CLAUDE_SPECSHIP_TOOL_PREFIX}${t}` : t));
|
|
25
|
+
}
|
|
12
26
|
function buildClaudeArgs(node) {
|
|
13
27
|
const args = [];
|
|
14
28
|
args.push('--print');
|
|
@@ -19,10 +33,10 @@ function buildClaudeArgs(node) {
|
|
|
19
33
|
if (node.model)
|
|
20
34
|
args.push('--model', node.model);
|
|
21
35
|
if (node.allowed_tools && node.allowed_tools.length > 0) {
|
|
22
|
-
args.push('--allowed-tools', node.allowed_tools.join(','));
|
|
36
|
+
args.push('--allowed-tools', qualifyClaudeTools(node.allowed_tools).join(','));
|
|
23
37
|
}
|
|
24
38
|
if (node.denied_tools && node.denied_tools.length > 0) {
|
|
25
|
-
args.push('--disallowed-tools', node.denied_tools.join(','));
|
|
39
|
+
args.push('--disallowed-tools', qualifyClaudeTools(node.denied_tools).join(','));
|
|
26
40
|
}
|
|
27
41
|
if (node.systemPromptAppend) {
|
|
28
42
|
args.push('--append-system-prompt', node.systemPromptAppend);
|
|
@@ -72,8 +86,13 @@ function handleClaudeStreamLine(line, emit, state) {
|
|
|
72
86
|
}
|
|
73
87
|
exports.claudeHeadlessAgent = {
|
|
74
88
|
id: 'claude',
|
|
89
|
+
displayName: 'Claude Code',
|
|
75
90
|
// Claude Code sets CLAUDECODE=1 in the environment of the commands it runs.
|
|
76
91
|
launchedFrom: (env) => env.CLAUDECODE === '1',
|
|
92
|
+
// Read from Claude Code 2.1.318's own source on 2026-11-05.
|
|
93
|
+
mcpClientNames: ['claude-code'],
|
|
94
|
+
// SessionStart is shared with Gemini CLI, so it is deliberately absent.
|
|
95
|
+
exclusiveHookEvents: ['UserPromptSubmit', 'PreToolUse', 'PostToolUse'],
|
|
77
96
|
build(node, _config, env) {
|
|
78
97
|
return { bin: env.SPECSHIP_CLAUDE_BIN ?? 'claude', args: buildClaudeArgs(node), stdin: node.prompt };
|
|
79
98
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/workflows/agents/claude.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/workflows/agents/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini CLI version probe and the version-dependent MCP tool-name form
|
|
3
|
+
* (REQ-AGENTSWITCH-018). Gemini CLI 0.33.0 renamed MCP tools from
|
|
4
|
+
* `<server>__<tool>` to `mcp_<server>_<tool>`; verified against
|
|
5
|
+
* gemini-cli-core 0.32.1, 0.33.0 and 0.67.0 (`isValidToolName`,
|
|
6
|
+
* `formatMcpToolName`).
|
|
7
|
+
*/
|
|
8
|
+
/** First Gemini CLI release that names MCP tools `mcp_<server>_<tool>`. */
|
|
9
|
+
export declare const GEMINI_MCP_PREFIX_SINCE = "0.33.0";
|
|
10
|
+
export declare function probeGeminiVersion(): string | null;
|
|
11
|
+
/** True when `version` (x.y.z, any suffix ignored) is at least `min`. */
|
|
12
|
+
export declare function geminiVersionSupports(version: string | null, min: string): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The name the installed Gemini CLI gives an MCP server's tool. An unknown
|
|
15
|
+
* version gets the current form (REQ-AGENTSWITCH-018).
|
|
16
|
+
*/
|
|
17
|
+
export declare function geminiMcpToolName(server: string, tool: string, version: string | null): string;
|
|
18
|
+
//# sourceMappingURL=gemini-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-version.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/gemini-version.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAUhD,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAyBlD;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAalF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG9F"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Gemini CLI version probe and the version-dependent MCP tool-name form
|
|
4
|
+
* (REQ-AGENTSWITCH-018). Gemini CLI 0.33.0 renamed MCP tools from
|
|
5
|
+
* `<server>__<tool>` to `mcp_<server>_<tool>`; verified against
|
|
6
|
+
* gemini-cli-core 0.32.1, 0.33.0 and 0.67.0 (`isValidToolName`,
|
|
7
|
+
* `formatMcpToolName`).
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.GEMINI_MCP_PREFIX_SINCE = void 0;
|
|
11
|
+
exports.probeGeminiVersion = probeGeminiVersion;
|
|
12
|
+
exports.geminiVersionSupports = geminiVersionSupports;
|
|
13
|
+
exports.geminiMcpToolName = geminiMcpToolName;
|
|
14
|
+
const child_process_1 = require("child_process");
|
|
15
|
+
/** First Gemini CLI release that names MCP tools `mcp_<server>_<tool>`. */
|
|
16
|
+
exports.GEMINI_MCP_PREFIX_SINCE = '0.33.0';
|
|
17
|
+
/**
|
|
18
|
+
* Probe the installed Gemini CLI's version (`gemini --version`). Returns
|
|
19
|
+
* `null` when Gemini is not on PATH or prints no version. `SPECSHIP_GEMINI_VERSION`
|
|
20
|
+
* overrides the probe (tests, and users whose `gemini` is not on PATH);
|
|
21
|
+
* `none` or an empty value means "not found". The real probe is memoised per
|
|
22
|
+
* process — it costs about a second.
|
|
23
|
+
*/
|
|
24
|
+
let probedGeminiVersion;
|
|
25
|
+
function probeGeminiVersion() {
|
|
26
|
+
const override = process.env.SPECSHIP_GEMINI_VERSION;
|
|
27
|
+
if (override !== undefined) {
|
|
28
|
+
const v = override.trim();
|
|
29
|
+
return v === '' || v.toLowerCase() === 'none' ? null : v;
|
|
30
|
+
}
|
|
31
|
+
if (probedGeminiVersion !== undefined)
|
|
32
|
+
return probedGeminiVersion;
|
|
33
|
+
let found = null;
|
|
34
|
+
try {
|
|
35
|
+
const res = (0, child_process_1.spawnSync)('gemini', ['--version'], {
|
|
36
|
+
encoding: 'utf-8',
|
|
37
|
+
windowsHide: true,
|
|
38
|
+
// Short: this also runs inside automatic agent set-up (MCP sessions, git hooks).
|
|
39
|
+
timeout: 3000,
|
|
40
|
+
shell: process.platform === 'win32',
|
|
41
|
+
});
|
|
42
|
+
if (res.status === 0) {
|
|
43
|
+
const m = /(\d+)\.(\d+)\.(\d+)/.exec(String(res.stdout ?? ''));
|
|
44
|
+
if (m)
|
|
45
|
+
found = m[0];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
found = null;
|
|
50
|
+
}
|
|
51
|
+
probedGeminiVersion = found;
|
|
52
|
+
return found;
|
|
53
|
+
}
|
|
54
|
+
/** True when `version` (x.y.z, any suffix ignored) is at least `min`. */
|
|
55
|
+
function geminiVersionSupports(version, min) {
|
|
56
|
+
if (!version)
|
|
57
|
+
return false;
|
|
58
|
+
const parse = (v) => {
|
|
59
|
+
const m = /(\d+)\.(\d+)\.(\d+)/.exec(v);
|
|
60
|
+
return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : null;
|
|
61
|
+
};
|
|
62
|
+
const a = parse(version);
|
|
63
|
+
const b = parse(min);
|
|
64
|
+
if (!a || !b)
|
|
65
|
+
return false;
|
|
66
|
+
for (let i = 0; i < 3; i++) {
|
|
67
|
+
if (a[i] !== b[i])
|
|
68
|
+
return a[i] > b[i];
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The name the installed Gemini CLI gives an MCP server's tool. An unknown
|
|
74
|
+
* version gets the current form (REQ-AGENTSWITCH-018).
|
|
75
|
+
*/
|
|
76
|
+
function geminiMcpToolName(server, tool, version) {
|
|
77
|
+
if (version && !geminiVersionSupports(version, exports.GEMINI_MCP_PREFIX_SINCE))
|
|
78
|
+
return `${server}__${tool}`;
|
|
79
|
+
return `mcp_${server}_${tool}`;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=gemini-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-version.js","sourceRoot":"","sources":["../../../src/workflows/agents/gemini-version.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { EmitFn, HeadlessAgent, StreamParseState } from './types';
|
|
10
10
|
/** Translate a step's allowed tools, or name the first one with no Gemini equivalent. */
|
|
11
|
-
export declare function translateGeminiTools(tools: string[]): {
|
|
11
|
+
export declare function translateGeminiTools(tools: string[], version?: string | null): {
|
|
12
12
|
tools: string[];
|
|
13
13
|
} | {
|
|
14
14
|
error: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAsB,gBAAgB,EAAqC,MAAM,SAAS,CAAC;AAiBzH,yFAAyF;AACzF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,MAAM,GAAG,IAA2B,GAC5C;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAezC;AAED,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIxH;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAmChG;AAED,eAAO,MAAM,mBAAmB,EAAE,aA2BjC,CAAC"}
|
|
@@ -12,6 +12,8 @@ exports.geminiHeadlessAgent = void 0;
|
|
|
12
12
|
exports.translateGeminiTools = translateGeminiTools;
|
|
13
13
|
exports.geminiModelFor = geminiModelFor;
|
|
14
14
|
exports.handleGeminiStreamLine = handleGeminiStreamLine;
|
|
15
|
+
const claude_1 = require("./claude");
|
|
16
|
+
const gemini_version_1 = require("./gemini-version");
|
|
15
17
|
const types_1 = require("./types");
|
|
16
18
|
/** Claude-form built-in tool names → Gemini CLI 0.28 tool names. */
|
|
17
19
|
const BUILTIN_TOOLS = {
|
|
@@ -28,14 +30,17 @@ const BUILTIN_TOOLS = {
|
|
|
28
30
|
};
|
|
29
31
|
const MODEL_TIERS = new Set(['haiku', 'sonnet', 'opus']);
|
|
30
32
|
/** Translate a step's allowed tools, or name the first one with no Gemini equivalent. */
|
|
31
|
-
function translateGeminiTools(tools) {
|
|
33
|
+
function translateGeminiTools(tools, version = (0, gemini_version_1.probeGeminiVersion)()) {
|
|
32
34
|
const out = [];
|
|
33
35
|
for (const tool of tools) {
|
|
34
36
|
let mapped;
|
|
35
37
|
const mcp = tool.match(/^mcp__([A-Za-z0-9_-]+?)__(.+)$/);
|
|
36
38
|
const shell = tool.match(/^Bash\((.+?)(?::\*)?\)$/);
|
|
37
39
|
if (mcp)
|
|
38
|
-
mapped =
|
|
40
|
+
mapped = (0, gemini_version_1.geminiMcpToolName)(mcp[1], mcp[2], version);
|
|
41
|
+
// A bare SpecShip server tool name (the bundled workflows' vocabulary).
|
|
42
|
+
else if (claude_1.SPECSHIP_SERVER_TOOL.test(tool))
|
|
43
|
+
mapped = (0, gemini_version_1.geminiMcpToolName)('specship', tool, version);
|
|
39
44
|
else if (shell)
|
|
40
45
|
mapped = `run_shell_command(${shell[1].trim()})`;
|
|
41
46
|
else
|
|
@@ -98,8 +103,13 @@ function handleGeminiStreamLine(line, emit, state) {
|
|
|
98
103
|
}
|
|
99
104
|
exports.geminiHeadlessAgent = {
|
|
100
105
|
id: 'gemini',
|
|
106
|
+
displayName: 'Gemini CLI',
|
|
101
107
|
// Gemini CLI sets GEMINI_CLI=1 for the shell commands it runs.
|
|
102
108
|
launchedFrom: (env) => env.GEMINI_CLI === '1',
|
|
109
|
+
// Read from Gemini CLI 0.28.0's own source on 2026-11-05.
|
|
110
|
+
mcpClientNames: ['gemini-cli-mcp-client'],
|
|
111
|
+
// SessionStart is shared with Claude Code, so it is deliberately absent.
|
|
112
|
+
exclusiveHookEvents: ['BeforeAgent', 'BeforeTool', 'AfterTool'],
|
|
103
113
|
build(node, config, env) {
|
|
104
114
|
if (node.denied_tools && node.denied_tools.length > 0) {
|
|
105
115
|
return { error: `denied_tools (${node.denied_tools.join(', ')}) cannot be enforced on Gemini CLI — it has no deny flag` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/workflows/agents/gemini.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/workflows/agents/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export type { HeadlessAgent, HeadlessAgentConfig, HeadlessInvocation, StreamPars
|
|
|
11
11
|
export declare const DEFAULT_WORKFLOW_AGENT: string;
|
|
12
12
|
/** Run-metadata key the chosen agent is stored under. */
|
|
13
13
|
export declare const RUN_AGENT_KEY = "agent";
|
|
14
|
+
/** Every registered agent adapter, in registry order. */
|
|
15
|
+
export declare function headlessAgents(): readonly HeadlessAgent[];
|
|
14
16
|
export declare function knownWorkflowAgents(): string[];
|
|
15
17
|
export declare function getHeadlessAgent(id: string): HeadlessAgent | undefined;
|
|
16
18
|
export declare class UnknownWorkflowAgentError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAElE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGxG,eAAO,MAAM,sBAAsB,QAAyB,CAAC;AAC7D,yDAAyD;AACzD,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEtE;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIzC;AAgBD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAgBtE;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,CAGxF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAElE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGxG,eAAO,MAAM,sBAAsB,QAAyB,CAAC;AAC7D,yDAAyD;AACzD,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC,yDAAyD;AACzD,wBAAgB,cAAc,IAAI,SAAS,aAAa,EAAE,CAEzD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEtE;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIzC;AAgBD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAgBtE;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,CAGxF"}
|
|
@@ -42,6 +42,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
42
42
|
})();
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
44
|
exports.UnknownWorkflowAgentError = exports.RUN_AGENT_KEY = exports.DEFAULT_WORKFLOW_AGENT = void 0;
|
|
45
|
+
exports.headlessAgents = headlessAgents;
|
|
45
46
|
exports.knownWorkflowAgents = knownWorkflowAgents;
|
|
46
47
|
exports.getHeadlessAgent = getHeadlessAgent;
|
|
47
48
|
exports.resolveWorkflowAgent = resolveWorkflowAgent;
|
|
@@ -54,6 +55,10 @@ const AGENTS = [claude_1.claudeHeadlessAgent, gemini_1.geminiHeadlessAgent];
|
|
|
54
55
|
exports.DEFAULT_WORKFLOW_AGENT = claude_1.claudeHeadlessAgent.id;
|
|
55
56
|
/** Run-metadata key the chosen agent is stored under. */
|
|
56
57
|
exports.RUN_AGENT_KEY = 'agent';
|
|
58
|
+
/** Every registered agent adapter, in registry order. */
|
|
59
|
+
function headlessAgents() {
|
|
60
|
+
return AGENTS;
|
|
61
|
+
}
|
|
57
62
|
function knownWorkflowAgents() {
|
|
58
63
|
return AGENTS.map((a) => a.id);
|
|
59
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflows/agents/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflows/agents/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,8 +37,21 @@ export interface HeadlessAgentConfig {
|
|
|
37
37
|
export interface HeadlessAgent {
|
|
38
38
|
/** The name `--agent` / `SPECSHIP_WORKFLOW_AGENT` / `workflow.agent` use. */
|
|
39
39
|
readonly id: string;
|
|
40
|
+
/** Human-readable host name for CLI output (e.g. in `specship status`). */
|
|
41
|
+
readonly displayName: string;
|
|
40
42
|
/** True when `env` shows the command was launched from inside this host. */
|
|
41
43
|
launchedFrom(env: NodeJS.ProcessEnv): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* `clientInfo.name` values this host sends in the MCP `initialize` request
|
|
46
|
+
* (REQ-AGENTSWITCH-007). Matched exactly.
|
|
47
|
+
*/
|
|
48
|
+
readonly mcpClientNames: readonly string[];
|
|
49
|
+
/**
|
|
50
|
+
* Hook event names only this host sends, so a payload naming one proves the
|
|
51
|
+
* host (REQ-AGENTSWITCH-007). Events several hosts share (e.g. a common
|
|
52
|
+
* session-start event) MUST NOT be listed.
|
|
53
|
+
*/
|
|
54
|
+
readonly exclusiveHookEvents: readonly string[];
|
|
42
55
|
/**
|
|
43
56
|
* Translate a step. Returns `{ error }` — never a partial invocation — when
|
|
44
57
|
* the step uses something this host cannot honour (REQ-AGENTADAPT-007.A4).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,IAAI,gBAAgB,CAEjD;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAEvF,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;IAC9C;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,kBAAkB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrH,4EAA4E;IAC5E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvE;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAezD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAS1E"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/workflows/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,IAAI,gBAAgB,CAEjD;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAEvF,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;IAC9C;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,kBAAkB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrH,4EAA4E;IAC5E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvE;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAezD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAS1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/workflows/agents/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoBH,wCAEC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/workflows/agents/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoBH,wCAEC;AA8CD,gDAeC;AAED,sCASC;AA1ED,SAAgB,cAAc;IAC5B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;AACnE,CAAC;AA6CD,kFAAkF;AAClF,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAS,CAAC;IACd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,CAAC,GAAG,KAAK,CAAC;IACZ,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,MAAM,IAAI,GACR,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;QAClF,CAAC,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAA8B,CAAC,CAAC,CAAC,IAAI,CAAC;IACrG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,wDAAwD;IACvE,CAAC;AACH,CAAC"}
|
|
@@ -47,6 +47,14 @@ export interface SubstitutionContext {
|
|
|
47
47
|
spillDir?: string;
|
|
48
48
|
/** Override the 10KB spill threshold (in bytes). */
|
|
49
49
|
spillThreshold?: number;
|
|
50
|
+
/**
|
|
51
|
+
* Every step id of the running workflow (REQ-WFINTEG-001). When set,
|
|
52
|
+
* `$name.field` is a step reference only if `name` is one of these or the
|
|
53
|
+
* field is `output`; any other `$name.field` (a shell variable followed by
|
|
54
|
+
* text, e.g. `$i.md`) is left as written. When unset, every `$name.field`
|
|
55
|
+
* is treated as a ref.
|
|
56
|
+
*/
|
|
57
|
+
nodeIds?: ReadonlySet<string>;
|
|
50
58
|
}
|
|
51
59
|
/**
|
|
52
60
|
* Substitute references in a template. Returns the substituted string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-evaluator.d.ts","sourceRoot":"","sources":["../../src/workflows/condition-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,qBAAa,cAAe,SAAQ,KAAK;IACpB,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIhD;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"condition-evaluator.d.ts","sourceRoot":"","sources":["../../src/workflows/condition-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,qBAAa,cAAe,SAAQ,KAAK;IACpB,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIhD;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAOD;;;;;;;GAOG;AAEH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,mBAAmB,EACxB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,MAAM,CAkGR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAoBT"}
|
|
@@ -76,6 +76,7 @@ const DEFAULT_SPILL_THRESHOLD = 10 * 1024;
|
|
|
76
76
|
* writes the value to a temp file and substitutes `$(cat <file>)` instead
|
|
77
77
|
* of the raw text — preventing shell argv overflow.
|
|
78
78
|
*/
|
|
79
|
+
// @implements REQ-WFINTEG-001
|
|
79
80
|
function substituteRefs(template, ctx, opts = {}) {
|
|
80
81
|
const spillDir = ctx.spillDir ?? require('os').tmpdir();
|
|
81
82
|
const threshold = ctx.spillThreshold ?? DEFAULT_SPILL_THRESHOLD;
|
|
@@ -96,6 +97,12 @@ function substituteRefs(template, ctx, opts = {}) {
|
|
|
96
97
|
return v;
|
|
97
98
|
// Fall through to node-id lookup (an UPPER_SNAKE word might be a node ID).
|
|
98
99
|
}
|
|
100
|
+
// Not a step of this workflow and not addressing `.output`: shell text
|
|
101
|
+
// such as `$i.md`, not a ref (REQ-WFINTEG-001). A misspelled
|
|
102
|
+
// `$plnn.output` still fails below. Only known when the caller supplied
|
|
103
|
+
// the step ids.
|
|
104
|
+
if (ctx.nodeIds && !ctx.nodeIds.has(name) && second !== 'output')
|
|
105
|
+
return match;
|
|
99
106
|
// Node-output reference. Second segment must be `output` for v1.
|
|
100
107
|
if (second !== 'output') {
|
|
101
108
|
// Bare `$nodeId` with no `.output` is treated as plain text (no substitution).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-evaluator.js","sourceRoot":"","sources":["../../src/workflows/condition-evaluator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"condition-evaluator.js","sourceRoot":"","sources":["../../src/workflows/condition-evaluator.ts"],"names":[],"mappings":"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"}
|