@entelligentsia/forgecli 1.0.14 → 1.0.21
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/CHANGELOG.md +185 -0
- package/README.md +7 -1
- package/dist/CHANGELOG-forge-plugin.md +61 -0
- package/dist/bin/config.js +4 -4
- package/dist/bin/config.js.map +1 -1
- package/dist/bin/update-cli.d.ts +1 -1
- package/dist/bin/update-cli.js +1 -1
- package/dist/bin/update-cli.js.map +1 -1
- package/dist/extensions/forgecli/ask-user-tool.js +1 -1
- package/dist/extensions/forgecli/ask-user-tool.js.map +1 -1
- package/dist/extensions/forgecli/commands/add-pipeline.d.ts +19 -0
- package/dist/extensions/forgecli/commands/add-pipeline.js +143 -0
- package/dist/extensions/forgecli/commands/add-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/commands/add-task.d.ts +20 -0
- package/dist/extensions/forgecli/commands/add-task.js +154 -0
- package/dist/extensions/forgecli/commands/add-task.js.map +1 -0
- package/dist/extensions/forgecli/commands/approve.d.ts +22 -0
- package/dist/extensions/forgecli/commands/approve.js +152 -0
- package/dist/extensions/forgecli/commands/approve.js.map +1 -0
- package/dist/extensions/forgecli/commands/collate.d.ts +22 -0
- package/dist/extensions/forgecli/commands/collate.js +134 -0
- package/dist/extensions/forgecli/commands/collate.js.map +1 -0
- package/dist/extensions/forgecli/commands/commit.d.ts +22 -0
- package/dist/extensions/forgecli/commands/commit.js +152 -0
- package/dist/extensions/forgecli/commands/commit.js.map +1 -0
- package/dist/extensions/forgecli/commands/config-command.d.ts +8 -0
- package/dist/extensions/forgecli/commands/config-command.js +67 -0
- package/dist/extensions/forgecli/commands/config-command.js.map +1 -0
- package/dist/extensions/forgecli/commands/enhance.d.ts +45 -0
- package/dist/extensions/forgecli/commands/enhance.js +219 -0
- package/dist/extensions/forgecli/commands/enhance.js.map +1 -0
- package/dist/extensions/forgecli/commands/implement.d.ts +22 -0
- package/dist/extensions/forgecli/commands/implement.js +170 -0
- package/dist/extensions/forgecli/commands/implement.js.map +1 -0
- package/dist/extensions/forgecli/commands/plan.d.ts +22 -0
- package/dist/extensions/forgecli/commands/plan.js +167 -0
- package/dist/extensions/forgecli/commands/plan.js.map +1 -0
- package/dist/extensions/forgecli/commands/quiz-agent.d.ts +17 -0
- package/dist/extensions/forgecli/commands/quiz-agent.js +98 -0
- package/dist/extensions/forgecli/commands/quiz-agent.js.map +1 -0
- package/dist/extensions/forgecli/commands/read-command.d.ts +2 -0
- package/dist/extensions/forgecli/commands/read-command.js +100 -0
- package/dist/extensions/forgecli/commands/read-command.js.map +1 -0
- package/dist/extensions/forgecli/commands/regenerate.d.ts +40 -0
- package/dist/extensions/forgecli/commands/regenerate.js +426 -0
- package/dist/extensions/forgecli/commands/regenerate.js.map +1 -0
- package/dist/extensions/forgecli/commands/remove-command.d.ts +17 -0
- package/dist/extensions/forgecli/commands/remove-command.js +124 -0
- package/dist/extensions/forgecli/commands/remove-command.js.map +1 -0
- package/dist/extensions/forgecli/commands/report-bug.d.ts +25 -0
- package/dist/extensions/forgecli/commands/report-bug.js +159 -0
- package/dist/extensions/forgecli/commands/report-bug.js.map +1 -0
- package/dist/extensions/forgecli/commands/retrospective.d.ts +20 -0
- package/dist/extensions/forgecli/commands/retrospective.js +126 -0
- package/dist/extensions/forgecli/commands/retrospective.js.map +1 -0
- package/dist/extensions/forgecli/commands/review-code.d.ts +35 -0
- package/dist/extensions/forgecli/commands/review-code.js +196 -0
- package/dist/extensions/forgecli/commands/review-code.js.map +1 -0
- package/dist/extensions/forgecli/commands/review-plan.d.ts +35 -0
- package/dist/extensions/forgecli/commands/review-plan.js +200 -0
- package/dist/extensions/forgecli/commands/review-plan.js.map +1 -0
- package/dist/extensions/forgecli/commands/sprint-intake.d.ts +10 -0
- package/dist/extensions/forgecli/commands/sprint-intake.js +91 -0
- package/dist/extensions/forgecli/commands/sprint-intake.js.map +1 -0
- package/dist/extensions/forgecli/commands/sprint-plan.d.ts +14 -0
- package/dist/extensions/forgecli/commands/sprint-plan.js +122 -0
- package/dist/extensions/forgecli/commands/sprint-plan.js.map +1 -0
- package/dist/extensions/forgecli/commands/status-command.d.ts +19 -0
- package/dist/extensions/forgecli/commands/status-command.js +140 -0
- package/dist/extensions/forgecli/commands/status-command.js.map +1 -0
- package/dist/extensions/forgecli/commands/store-query.d.ts +22 -0
- package/dist/extensions/forgecli/commands/store-query.js +107 -0
- package/dist/extensions/forgecli/commands/store-query.js.map +1 -0
- package/dist/extensions/forgecli/commands/store-repair.d.ts +17 -0
- package/dist/extensions/forgecli/commands/store-repair.js +123 -0
- package/dist/extensions/forgecli/commands/store-repair.js.map +1 -0
- package/dist/extensions/forgecli/commands/test-orchestrate.d.ts +2 -0
- package/dist/extensions/forgecli/commands/test-orchestrate.js +182 -0
- package/dist/extensions/forgecli/commands/test-orchestrate.js.map +1 -0
- package/dist/extensions/forgecli/commands/transcripts-command.d.ts +87 -0
- package/dist/extensions/forgecli/commands/transcripts-command.js +418 -0
- package/dist/extensions/forgecli/commands/transcripts-command.js.map +1 -0
- package/dist/extensions/forgecli/commands/validate.d.ts +22 -0
- package/dist/extensions/forgecli/commands/validate.js +152 -0
- package/dist/extensions/forgecli/commands/validate.js.map +1 -0
- package/dist/extensions/forgecli/config/config-layer.d.ts +53 -0
- package/dist/extensions/forgecli/config/config-layer.js +72 -0
- package/dist/extensions/forgecli/config/config-layer.js.map +1 -0
- package/dist/extensions/forgecli/config/config-writer.d.ts +16 -0
- package/dist/extensions/forgecli/config/config-writer.js +69 -0
- package/dist/extensions/forgecli/config/config-writer.js.map +1 -0
- package/dist/extensions/forgecli/config/model-registry.d.ts +61 -0
- package/dist/extensions/forgecli/config/model-registry.js +127 -0
- package/dist/extensions/forgecli/config/model-registry.js.map +1 -0
- package/dist/extensions/forgecli/config/model-resolver.d.ts +32 -0
- package/dist/extensions/forgecli/config/model-resolver.js +65 -0
- package/dist/extensions/forgecli/config/model-resolver.js.map +1 -0
- package/dist/extensions/forgecli/config/model-validator.d.ts +29 -0
- package/dist/extensions/forgecli/config/model-validator.js +107 -0
- package/dist/extensions/forgecli/config/model-validator.js.map +1 -0
- package/dist/extensions/forgecli/config-layer.d.ts +0 -16
- package/dist/extensions/forgecli/config-layer.js +0 -5
- package/dist/extensions/forgecli/config-layer.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/component.js +1 -1
- package/dist/extensions/forgecli/config-tui/component.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/handler.js +1 -1
- package/dist/extensions/forgecli/config-tui/handler.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/override-editor.js +1 -1
- package/dist/extensions/forgecli/config-tui/screens/override-editor.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js +1 -1
- package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/show-resolved.js +1 -1
- package/dist/extensions/forgecli/config-tui/screens/show-resolved.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/buffer.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/state/model.d.ts +1 -1
- package/dist/extensions/forgecli/config-tui/state/reducer.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/selectors.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/state/selectors.js +1 -1
- package/dist/extensions/forgecli/config-tui/state/selectors.js.map +1 -1
- package/dist/extensions/forgecli/context-governor-compaction.d.ts +94 -0
- package/dist/extensions/forgecli/context-governor-compaction.js +327 -0
- package/dist/extensions/forgecli/context-governor-compaction.js.map +1 -0
- package/dist/extensions/forgecli/context-governor.d.ts +169 -0
- package/dist/extensions/forgecli/context-governor.js +592 -0
- package/dist/extensions/forgecli/context-governor.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/component.d.ts +17 -5
- package/dist/extensions/forgecli/dashboard/component.js +160 -115
- package/dist/extensions/forgecli/dashboard/component.js.map +1 -1
- package/dist/extensions/forgecli/dashboard/register.js +7 -21
- package/dist/extensions/forgecli/dashboard/register.js.map +1 -1
- package/dist/extensions/forgecli/dashboard/theme.d.ts +27 -0
- package/dist/extensions/forgecli/dashboard/theme.js +91 -0
- package/dist/extensions/forgecli/dashboard/theme.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.js +59 -5
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-artifact-tool.js +3 -2
- package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
- package/dist/extensions/forgecli/forge-cli-schema.json +0 -4
- package/dist/extensions/forgecli/forge-commands.js +1 -1
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-init/forge-init.d.ts +26 -0
- package/dist/extensions/forgecli/forge-init/forge-init.js +514 -0
- package/dist/extensions/forgecli/forge-init/forge-init.js.map +1 -0
- package/dist/extensions/forgecli/forge-init/init-context.d.ts +99 -0
- package/dist/extensions/forgecli/forge-init/init-context.js +178 -0
- package/dist/extensions/forgecli/forge-init/init-context.js.map +1 -0
- package/dist/extensions/forgecli/forge-init/init-progress.d.ts +39 -0
- package/dist/extensions/forgecli/forge-init/init-progress.js +117 -0
- package/dist/extensions/forgecli/forge-init/init-progress.js.map +1 -0
- package/dist/extensions/forgecli/forge-init/phase4-register.js +1 -1
- package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
- package/dist/extensions/forgecli/forge-init/run-phases.js +2 -2
- package/dist/extensions/forgecli/forge-init/run-phases.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.d.ts +42 -1
- package/dist/extensions/forgecli/forge-subagent.js +59 -18
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-tools.d.ts +0 -25
- package/dist/extensions/forgecli/forge-tools.js +8 -37
- package/dist/extensions/forgecli/forge-tools.js.map +1 -1
- package/dist/extensions/forgecli/governor-config.d.ts +19 -0
- package/dist/extensions/forgecli/governor-config.js +58 -0
- package/dist/extensions/forgecli/governor-config.js.map +1 -0
- package/dist/extensions/forgecli/health-check.js +1 -1
- package/dist/extensions/forgecli/health-check.js.map +1 -1
- package/dist/extensions/forgecli/hook-dispatcher.d.ts +3 -1
- package/dist/extensions/forgecli/hook-dispatcher.js +39 -5
- package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
- package/dist/extensions/forgecli/hooks/post-init-hook.js +11 -6
- package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
- package/dist/extensions/forgecli/hooks/post-sprint-hook.js +11 -6
- package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
- package/dist/extensions/forgecli/hooks/write-guard.js +1 -1
- package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -1
- package/dist/extensions/forgecli/index.js +70 -36
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/kickoff.d.ts +9 -0
- package/dist/extensions/forgecli/kickoff.js +15 -0
- package/dist/extensions/forgecli/kickoff.js.map +1 -1
- package/dist/extensions/forgecli/lib/forge-config.d.ts +1 -1
- package/dist/extensions/forgecli/lib/forge-config.js +1 -1
- package/dist/extensions/forgecli/lib/forge-config.js.map +1 -1
- package/dist/extensions/forgecli/lib/forge-root.d.ts +10 -0
- package/dist/extensions/forgecli/lib/forge-root.js +62 -0
- package/dist/extensions/forgecli/lib/forge-root.js.map +1 -0
- package/dist/extensions/forgecli/lib/halt-advisor.d.ts +19 -14
- package/dist/extensions/forgecli/lib/halt-advisor.js +36 -13
- package/dist/extensions/forgecli/lib/halt-advisor.js.map +1 -1
- package/dist/extensions/forgecli/lib/run-cjs.d.ts +26 -0
- package/dist/extensions/forgecli/lib/run-cjs.js +42 -0
- package/dist/extensions/forgecli/lib/run-cjs.js.map +1 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.d.ts +3 -2
- package/dist/extensions/forgecli/orchestrator-status-bar.js +90 -60
- package/dist/extensions/forgecli/orchestrator-status-bar.js.map +1 -1
- package/dist/extensions/forgecli/orchestrator-tree.d.ts +4 -0
- package/dist/extensions/forgecli/orchestrator-tree.js +21 -3
- package/dist/extensions/forgecli/orchestrator-tree.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/calibrate.d.ts +64 -0
- package/dist/extensions/forgecli/orchestrators/calibrate.js +481 -0
- package/dist/extensions/forgecli/orchestrators/calibrate.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/fix-bug.d.ts +93 -0
- package/dist/extensions/forgecli/orchestrators/fix-bug.js +1705 -0
- package/dist/extensions/forgecli/orchestrators/fix-bug.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/halt-advisor.d.ts +59 -0
- package/dist/extensions/forgecli/orchestrators/halt-advisor.js +113 -0
- package/dist/extensions/forgecli/orchestrators/halt-advisor.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/materialize.d.ts +16 -0
- package/dist/extensions/forgecli/orchestrators/materialize.js +195 -0
- package/dist/extensions/forgecli/orchestrators/materialize.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/migrate.d.ts +22 -0
- package/dist/extensions/forgecli/orchestrators/migrate.js +260 -0
- package/dist/extensions/forgecli/orchestrators/migrate.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/orchestrator-preflight.d.ts +46 -0
- package/dist/extensions/forgecli/orchestrators/orchestrator-preflight.js +64 -0
- package/dist/extensions/forgecli/orchestrators/orchestrator-preflight.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/run-sprint.d.ts +27 -0
- package/dist/extensions/forgecli/orchestrators/run-sprint.js +734 -0
- package/dist/extensions/forgecli/orchestrators/run-sprint.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/run-task.d.ts +215 -0
- package/dist/extensions/forgecli/orchestrators/run-task.js +1491 -0
- package/dist/extensions/forgecli/orchestrators/run-task.js.map +1 -0
- package/dist/extensions/forgecli/paths/paths.d.ts +8 -0
- package/dist/extensions/forgecli/paths/paths.js +17 -0
- package/dist/extensions/forgecli/paths/paths.js.map +1 -1
- package/dist/extensions/forgecli/phase-vocab.d.ts +31 -0
- package/dist/extensions/forgecli/phase-vocab.js +82 -0
- package/dist/extensions/forgecli/phase-vocab.js.map +1 -0
- package/dist/extensions/forgecli/run-sprint.d.ts +3 -1
- package/dist/extensions/forgecli/run-sprint.js +1 -0
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.d.ts +34 -1
- package/dist/extensions/forgecli/run-task.js +144 -6
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/session-registry.d.ts +2 -2
- package/dist/extensions/forgecli/session-registry.js +6 -2
- package/dist/extensions/forgecli/session-registry.js.map +1 -1
- package/dist/extensions/forgecli/skill-curation/friction-emit.d.ts +99 -0
- package/dist/extensions/forgecli/skill-curation/friction-emit.js +245 -0
- package/dist/extensions/forgecli/skill-curation/friction-emit.js.map +1 -0
- package/dist/extensions/forgecli/skill-curation/skill-curation-flag.d.ts +21 -0
- package/dist/extensions/forgecli/skill-curation/skill-curation-flag.js +71 -0
- package/dist/extensions/forgecli/skill-curation/skill-curation-flag.js.map +1 -0
- package/dist/extensions/forgecli/skill-curation/skill-curator-subagent.d.ts +102 -0
- package/dist/extensions/forgecli/skill-curation/skill-curator-subagent.js +339 -0
- package/dist/extensions/forgecli/skill-curation/skill-curator-subagent.js.map +1 -0
- package/dist/extensions/forgecli/skill-curation/skill-retriever.d.ts +84 -0
- package/dist/extensions/forgecli/skill-curation/skill-retriever.js +246 -0
- package/dist/extensions/forgecli/skill-curation/skill-retriever.js.map +1 -0
- package/dist/extensions/forgecli/skill-curation/skill-usage-tracker.d.ts +91 -0
- package/dist/extensions/forgecli/skill-curation/skill-usage-tracker.js +224 -0
- package/dist/extensions/forgecli/skill-curation/skill-usage-tracker.js.map +1 -0
- package/dist/extensions/forgecli/store/store-error-remediation.d.ts +65 -0
- package/dist/extensions/forgecli/store/store-error-remediation.js +307 -0
- package/dist/extensions/forgecli/store/store-error-remediation.js.map +1 -0
- package/dist/extensions/forgecli/store/store-resolver.d.ts +56 -0
- package/dist/extensions/forgecli/store/store-resolver.js +263 -0
- package/dist/extensions/forgecli/store/store-resolver.js.map +1 -0
- package/dist/extensions/forgecli/store/store-validator.d.ts +16 -0
- package/dist/extensions/forgecli/store/store-validator.js +32 -0
- package/dist/extensions/forgecli/store/store-validator.js.map +1 -0
- package/dist/extensions/forgecli/store/transition-guard.d.ts +20 -0
- package/dist/extensions/forgecli/store/transition-guard.js +89 -0
- package/dist/extensions/forgecli/store/transition-guard.js.map +1 -0
- package/dist/extensions/forgecli/subagent/orchestrator-transcript.js +5 -0
- package/dist/extensions/forgecli/subagent/orchestrator-transcript.js.map +1 -1
- package/dist/extensions/forgecli/thread-switcher.d.ts +4 -1
- package/dist/extensions/forgecli/thread-switcher.js +36 -21
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/transcript-archive-types.d.ts +171 -0
- package/dist/extensions/forgecli/transcript-archive-types.js +130 -0
- package/dist/extensions/forgecli/transcript-archive-types.js.map +1 -0
- package/dist/extensions/forgecli/transcript-archive.d.ts +127 -0
- package/dist/extensions/forgecli/transcript-archive.js +656 -0
- package/dist/extensions/forgecli/transcript-archive.js.map +1 -0
- package/dist/extensions/forgecli/transcript-replay.d.ts +28 -0
- package/dist/extensions/forgecli/transcript-replay.js +153 -0
- package/dist/extensions/forgecli/transcript-replay.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/component.d.ts +36 -0
- package/dist/extensions/forgecli/transcripts-tui/component.js +112 -0
- package/dist/extensions/forgecli/transcripts-tui/component.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/index.d.ts +4 -0
- package/dist/extensions/forgecli/transcripts-tui/index.js +5 -0
- package/dist/extensions/forgecli/transcripts-tui/index.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/screens/browse.d.ts +21 -0
- package/dist/extensions/forgecli/transcripts-tui/screens/browse.js +172 -0
- package/dist/extensions/forgecli/transcripts-tui/screens/browse.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/screens/types.d.ts +22 -0
- package/dist/extensions/forgecli/transcripts-tui/screens/types.js +4 -0
- package/dist/extensions/forgecli/transcripts-tui/screens/types.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/state/index.d.ts +4 -0
- package/dist/extensions/forgecli/transcripts-tui/state/index.js +5 -0
- package/dist/extensions/forgecli/transcripts-tui/state/index.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/state/init.d.ts +8 -0
- package/dist/extensions/forgecli/transcripts-tui/state/init.js +18 -0
- package/dist/extensions/forgecli/transcripts-tui/state/init.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/state/model.d.ts +56 -0
- package/dist/extensions/forgecli/transcripts-tui/state/model.js +6 -0
- package/dist/extensions/forgecli/transcripts-tui/state/model.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/state/reducer.d.ts +2 -0
- package/dist/extensions/forgecli/transcripts-tui/state/reducer.js +51 -0
- package/dist/extensions/forgecli/transcripts-tui/state/reducer.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/state/selectors.d.ts +10 -0
- package/dist/extensions/forgecli/transcripts-tui/state/selectors.js +62 -0
- package/dist/extensions/forgecli/transcripts-tui/state/selectors.js.map +1 -0
- package/dist/extensions/forgecli/transcripts-tui/theme.d.ts +20 -0
- package/dist/extensions/forgecli/transcripts-tui/theme.js +47 -0
- package/dist/extensions/forgecli/transcripts-tui/theme.js.map +1 -0
- package/dist/extensions/forgecli/tui/banner.d.ts +10 -0
- package/dist/extensions/forgecli/tui/banner.js +36 -0
- package/dist/extensions/forgecli/tui/banner.js.map +1 -0
- package/dist/extensions/forgecli/tui/forge-header.d.ts +12 -0
- package/dist/extensions/forgecli/tui/forge-header.js +114 -0
- package/dist/extensions/forgecli/tui/forge-header.js.map +1 -0
- package/dist/extensions/forgecli/tui/input-router.d.ts +33 -0
- package/dist/extensions/forgecli/tui/input-router.js +136 -0
- package/dist/extensions/forgecli/tui/input-router.js.map +1 -0
- package/dist/extensions/forgecli/tui/orchestrator-status-bar.d.ts +26 -0
- package/dist/extensions/forgecli/tui/orchestrator-status-bar.js +213 -0
- package/dist/extensions/forgecli/tui/orchestrator-status-bar.js.map +1 -0
- package/dist/extensions/forgecli/tui/thread-switcher.d.ts +18 -0
- package/dist/extensions/forgecli/tui/thread-switcher.js +194 -0
- package/dist/extensions/forgecli/tui/thread-switcher.js.map +1 -0
- package/dist/extensions/forgecli/update/forge-update-command.d.ts +100 -0
- package/dist/extensions/forgecli/update/forge-update-command.js +435 -0
- package/dist/extensions/forgecli/update/forge-update-command.js.map +1 -0
- package/dist/extensions/forgecli/update/migration-engine.d.ts +117 -0
- package/dist/extensions/forgecli/update/migration-engine.js +563 -0
- package/dist/extensions/forgecli/update/migration-engine.js.map +1 -0
- package/dist/extensions/forgecli/update/update-check.d.ts +37 -0
- package/dist/extensions/forgecli/update/update-check.js +185 -0
- package/dist/extensions/forgecli/update/update-check.js.map +1 -0
- package/dist/extensions/forgecli/update/update-tools.d.ts +23 -0
- package/dist/extensions/forgecli/update/update-tools.js +135 -0
- package/dist/extensions/forgecli/update/update-tools.js.map +1 -0
- package/dist/extensions/forgecli/update/whats-new-widget.d.ts +26 -0
- package/dist/extensions/forgecli/update/whats-new-widget.js +376 -0
- package/dist/extensions/forgecli/update/whats-new-widget.js.map +1 -0
- package/dist/extensions/forgecli/update/whats-new.d.ts +120 -0
- package/dist/extensions/forgecli/update/whats-new.js +470 -0
- package/dist/extensions/forgecli/update/whats-new.js.map +1 -0
- package/dist/extensions/forgecli/viewport/events.d.ts +113 -0
- package/dist/extensions/forgecli/viewport/events.js +290 -0
- package/dist/extensions/forgecli/viewport/events.js.map +1 -0
- package/dist/extensions/forgecli/viewport/renderer.d.ts +102 -0
- package/dist/extensions/forgecli/viewport/renderer.js +277 -0
- package/dist/extensions/forgecli/viewport/renderer.js.map +1 -0
- package/dist/extensions/forgecli/viewport/theme.d.ts +11 -0
- package/dist/extensions/forgecli/viewport/theme.js +131 -0
- package/dist/extensions/forgecli/viewport/theme.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/engine.js +1 -1
- package/dist/extensions/forgecli/wf-engine/engine.js.map +1 -1
- package/dist/forge-payload/.base-pack/workflows/implement_plan.md +9 -0
- package/dist/forge-payload/.base-pack/workflows/plan_task.md +7 -0
- package/dist/forge-payload/.base-pack/workflows/review_code.md +4 -3
- package/dist/forge-payload/.base-pack/workflows/review_plan.md +4 -3
- package/dist/forge-payload/.base-pack/workflows/validate_task.md +4 -3
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/migrations.json +132 -27
- package/dist/forge-payload/meta/workflows/meta-review-implementation.md +4 -3
- package/dist/forge-payload/meta/workflows/meta-review-plan.md +4 -3
- package/dist/forge-payload/meta/workflows/meta-validate.md +4 -3
- package/dist/forge-payload/tools/collate.cjs +32 -0
- package/dist/forge-payload/tools/postflight-gate.cjs +56 -10
- package/package.json +5 -3
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
// migrate.ts — native handler for /forge:migrate (FORGE-S23-T09)
|
|
2
|
+
//
|
|
3
|
+
// Two-branch handler:
|
|
4
|
+
// Structural branch: --structural flag OR .forge/structure-versions.json absent
|
|
5
|
+
// → runForgeSubagent(architect persona + migrate_structural.md workflow)
|
|
6
|
+
// Schema branch: deterministic store migration
|
|
7
|
+
// → runMigrations() from migration-engine.ts (T01)
|
|
8
|
+
//
|
|
9
|
+
// Post-migration health check runs in both branches via runHealthCheck().
|
|
10
|
+
//
|
|
11
|
+
// Iron Laws:
|
|
12
|
+
// IL6 — no shell-string interpolation (argv-array throughout)
|
|
13
|
+
// IL10 — structural branch uses runForgeSubagent (in-process pi SDK), not sendKickoff
|
|
14
|
+
// FORGE-BUG-001 — ctx.modelRegistry passed to runForgeSubagent
|
|
15
|
+
import * as fs from "node:fs";
|
|
16
|
+
import * as path from "node:path";
|
|
17
|
+
import { getBundledPayloadRoot } from "../forge-init/forge-init.js";
|
|
18
|
+
import { loadForgePersona, runForgeSubagent } from "../forge-subagent.js";
|
|
19
|
+
import { getSubagentTools } from "../forge-tools.js";
|
|
20
|
+
import { runHealthCheck } from "../health-check.js";
|
|
21
|
+
import { runMigrations } from "../update/migration-engine.js";
|
|
22
|
+
// ── Argument parser ─────────────────────────────────────────────────────────
|
|
23
|
+
/**
|
|
24
|
+
* Parse /forge:migrate arguments.
|
|
25
|
+
*
|
|
26
|
+
* Also checks filesystem for .forge/structure-versions.json to determine
|
|
27
|
+
* structural vs schema branch (absence → structural).
|
|
28
|
+
*/
|
|
29
|
+
export function parseMigrateArgs(args, cwd) {
|
|
30
|
+
const parts = args.trim().split(/\s+/).filter(Boolean);
|
|
31
|
+
const hasStructuralFlag = parts.includes("--structural");
|
|
32
|
+
const hasDryRun = parts.includes("--dry-run");
|
|
33
|
+
// Structural if --structural flag OR structure-versions.json absent
|
|
34
|
+
const structureVersionsPath = path.join(cwd, ".forge", "structure-versions.json");
|
|
35
|
+
const structural = hasStructuralFlag || !fs.existsSync(structureVersionsPath);
|
|
36
|
+
return { structural, dryRun: hasDryRun };
|
|
37
|
+
}
|
|
38
|
+
// ── Ledger reader ───────────────────────────────────────────────────────────
|
|
39
|
+
function readAppliedMigrationsFromVersion(cwd) {
|
|
40
|
+
const ledgerPath = path.join(cwd, ".forge", "applied-migrations.json");
|
|
41
|
+
try {
|
|
42
|
+
const raw = fs.readFileSync(ledgerPath, "utf8");
|
|
43
|
+
const ledger = JSON.parse(raw);
|
|
44
|
+
const versions = ledger.appliedVersions ?? [];
|
|
45
|
+
return versions.at(-1) ?? "0.0.0";
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return "0.0.0";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// ── Bundle version reader ───────────────────────────────────────────────────
|
|
52
|
+
function readBundledForgeVersion(bundleRoot) {
|
|
53
|
+
try {
|
|
54
|
+
const pluginJson = path.join(bundleRoot, ".claude-plugin", "plugin.json");
|
|
55
|
+
const raw = fs.readFileSync(pluginJson, "utf8");
|
|
56
|
+
const parsed = JSON.parse(raw);
|
|
57
|
+
if (typeof parsed.version === "string" && parsed.version)
|
|
58
|
+
return parsed.version;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// fall through
|
|
62
|
+
}
|
|
63
|
+
return "0.0.0";
|
|
64
|
+
}
|
|
65
|
+
export function registerMigrate(pi, opts = {}) {
|
|
66
|
+
pi.registerCommand("forge:migrate", {
|
|
67
|
+
description: "Migrate an existing project store to Forge format. " +
|
|
68
|
+
"Structural branch (--structural or pre-T05 install): delegates to architect persona. " +
|
|
69
|
+
"Schema branch: applies deterministic store migrations from bundled migrations.json.",
|
|
70
|
+
async handler(args, ctx) {
|
|
71
|
+
const cwd = process.cwd();
|
|
72
|
+
const parsed = parseMigrateArgs(args, cwd);
|
|
73
|
+
// Config guard (Step 1 from plugin source)
|
|
74
|
+
const configPath = path.join(cwd, ".forge", "config.json");
|
|
75
|
+
if (!fs.existsSync(configPath)) {
|
|
76
|
+
ctx.ui.notify("× forge:migrate — no .forge/config.json found. " +
|
|
77
|
+
"Run /forge:init first, then come back to /forge:migrate.", "error");
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// Resolve forge root (for subagent and health check)
|
|
81
|
+
let forgeRoot;
|
|
82
|
+
let bundleRoot;
|
|
83
|
+
if (opts._testBundleRoot) {
|
|
84
|
+
bundleRoot = opts._testBundleRoot;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
try {
|
|
88
|
+
bundleRoot = getBundledPayloadRoot();
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
92
|
+
ctx.ui.notify(`× forge:migrate — could not resolve bundle root: ${msg}`, "error");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const cfg = JSON.parse(fs.readFileSync(configPath, "utf8"));
|
|
98
|
+
const paths = cfg.paths;
|
|
99
|
+
if (paths && typeof paths.forgeRoot === "string")
|
|
100
|
+
forgeRoot = paths.forgeRoot;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// non-fatal — forgeRoot remains undefined; health check degrades gracefully
|
|
104
|
+
}
|
|
105
|
+
if (parsed.structural) {
|
|
106
|
+
// ── Structural branch ────────────────────────────────────────────────
|
|
107
|
+
await runStructuralMigration(cwd, forgeRoot, bundleRoot, ctx, opts.forgeToolDefs);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// ── Schema branch ────────────────────────────────────────────────────
|
|
111
|
+
await runSchemaMigration(cwd, forgeRoot, bundleRoot, parsed.dryRun, ctx);
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
// ── Structural branch ────────────────────────────────────────────────────────
|
|
117
|
+
/**
|
|
118
|
+
* Structural migration: load migrate_structural.md (materialized workflow),
|
|
119
|
+
* run marker check, spawn architect subagent, then health check.
|
|
120
|
+
*
|
|
121
|
+
* Marker check rationale: migrate_structural.md does NOT contain
|
|
122
|
+
* Store-Write Verification or forge_store markers (it is a prose-heavy
|
|
123
|
+
* migration guide, not a store-writing kickoff). The handler checks only
|
|
124
|
+
* for `Iron Laws` as the minimum safeguard. This is a documented deviation
|
|
125
|
+
* from the full pack-06 marker set (pack-06 markers are designed for
|
|
126
|
+
* store-writing kickoff shims; structural migration is a different workflow
|
|
127
|
+
* class). Filed for follow-up: add Store-Write Verification to meta-migrate.md.
|
|
128
|
+
*/
|
|
129
|
+
async function runStructuralMigration(cwd, forgeRoot, bundleRoot, ctx, forgeToolDefs) {
|
|
130
|
+
ctx.ui.setStatus?.("forge:migrate", "Structural migration — loading workflow…");
|
|
131
|
+
// Read the materialized structural migration workflow
|
|
132
|
+
const workflowPath = path.join(cwd, ".forge", "workflows", "migrate_structural.md");
|
|
133
|
+
let workflowContent;
|
|
134
|
+
try {
|
|
135
|
+
workflowContent = fs.readFileSync(workflowPath, "utf8");
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
ctx.ui.notify(`× forge:migrate — migrate_structural.md not found at ${workflowPath}. ` +
|
|
139
|
+
"Run /forge:materialize first to fill missing workflows.", "error");
|
|
140
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
// Materialization marker check (partial — Iron Laws only for structural workflow class)
|
|
144
|
+
if (!workflowContent.includes("Iron Laws")) {
|
|
145
|
+
ctx.ui.notify(`× forge:migrate — workflow regression: 'Iron Laws' not found in ${workflowPath}. ` +
|
|
146
|
+
"Run /forge:materialize to refresh.", "error");
|
|
147
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
// Load architect persona
|
|
151
|
+
let persona;
|
|
152
|
+
try {
|
|
153
|
+
persona = loadForgePersona("architect", cwd);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
157
|
+
ctx.ui.notify(`× forge:migrate — could not load architect persona: ${msg}`, "error");
|
|
158
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
ctx.ui.setStatus?.("forge:migrate", "Structural migration — architect running…");
|
|
162
|
+
// Spawn isolated subagent (IL10)
|
|
163
|
+
const result = await runForgeSubagent({
|
|
164
|
+
persona,
|
|
165
|
+
task: workflowContent,
|
|
166
|
+
cwd,
|
|
167
|
+
signal: ctx.signal,
|
|
168
|
+
forgeRoot,
|
|
169
|
+
modelRegistry: ctx.modelRegistry, // FORGE-BUG-001 followup
|
|
170
|
+
customTools: forgeToolDefs ? getSubagentTools(forgeToolDefs) : undefined,
|
|
171
|
+
});
|
|
172
|
+
if (result.exitCode !== 0) {
|
|
173
|
+
ctx.ui.notify(`× forge:migrate — structural migration subagent failed (exit ${result.exitCode})`, "error");
|
|
174
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
ctx.ui.notify("〇 forge:migrate — structural migration complete", "info");
|
|
178
|
+
await runPostMigrationHealthCheck(cwd, bundleRoot, forgeRoot, ctx);
|
|
179
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
180
|
+
}
|
|
181
|
+
// ── Schema branch ─────────────────────────────────────────────────────────────
|
|
182
|
+
async function runSchemaMigration(cwd, forgeRoot, bundleRoot, dryRun, ctx) {
|
|
183
|
+
ctx.ui.setStatus?.("forge:migrate", "Schema migration — detecting versions…");
|
|
184
|
+
const fromVersion = readAppliedMigrationsFromVersion(cwd);
|
|
185
|
+
const toVersion = readBundledForgeVersion(bundleRoot);
|
|
186
|
+
if (!toVersion || toVersion === "0.0.0") {
|
|
187
|
+
ctx.ui.notify("× forge:migrate — could not determine bundled forge version. " +
|
|
188
|
+
"The bundle may be incomplete. Try reinstalling forge-cli.", "error");
|
|
189
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (fromVersion === toVersion) {
|
|
193
|
+
ctx.ui.notify(`〇 forge:migrate — store is already at v${toVersion}; no schema migration needed. ` +
|
|
194
|
+
'Run `node "$FORGE_ROOT/tools/validate-store.cjs"` to confirm.', "info");
|
|
195
|
+
await runPostMigrationHealthCheck(cwd, bundleRoot, forgeRoot, ctx);
|
|
196
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
ctx.ui.notify(`forge:migrate — applying migrations from v${fromVersion} → v${toVersion}${dryRun ? " (dry-run)" : ""}`, "info");
|
|
200
|
+
ctx.ui.setStatus?.("forge:migrate", `Applying migrations v${fromVersion} → v${toVersion}…`);
|
|
201
|
+
let migResult;
|
|
202
|
+
try {
|
|
203
|
+
migResult = await runMigrations({
|
|
204
|
+
bundleRoot,
|
|
205
|
+
projectRoot: cwd,
|
|
206
|
+
fromVersion,
|
|
207
|
+
toVersion,
|
|
208
|
+
dryRun,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
213
|
+
ctx.ui.notify(`× forge:migrate — migration engine error: ${msg}`, "error");
|
|
214
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
// Surface results
|
|
218
|
+
if (migResult.applied.length > 0) {
|
|
219
|
+
const versions = migResult.applied.map((a) => `v${a.toVersion}`).join(", ");
|
|
220
|
+
ctx.ui.notify(`〇 forge:migrate — applied ${migResult.applied.length} migration(s): ${versions}`, "info");
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
ctx.ui.notify(`〇 forge:migrate — no new migrations to apply from v${fromVersion} to v${toVersion}`, "info");
|
|
224
|
+
}
|
|
225
|
+
if (migResult.skippedBreaking.length > 0) {
|
|
226
|
+
for (const skipped of migResult.skippedBreaking) {
|
|
227
|
+
ctx.ui.notify(`△ forge:migrate — skipped breaking migration to v${skipped.toVersion}: ${skipped.reason}`, "warning");
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (migResult.manualSteps.length > 0) {
|
|
231
|
+
ctx.ui.notify("△ forge:migrate — manual steps required after migration:", "warning");
|
|
232
|
+
for (const ms of migResult.manualSteps) {
|
|
233
|
+
for (const step of ms.steps) {
|
|
234
|
+
ctx.ui.notify(` · v${ms.toVersion}: ${step}`, "info");
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
await runPostMigrationHealthCheck(cwd, bundleRoot, forgeRoot, ctx);
|
|
239
|
+
ctx.ui.setStatus?.("forge:migrate", undefined);
|
|
240
|
+
}
|
|
241
|
+
// ── Shared post-migration health check ─────────────────────────────────────────
|
|
242
|
+
async function runPostMigrationHealthCheck(cwd, bundleRoot, forgeRoot, ctx) {
|
|
243
|
+
try {
|
|
244
|
+
const healthResult = await runHealthCheck(cwd, bundleRoot, forgeRoot);
|
|
245
|
+
if (healthResult.clean) {
|
|
246
|
+
ctx.ui.notify("〇 /forge:health: clean.", "info");
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
ctx.ui.notify(`△ /forge:health: ${healthResult.gaps.length} gap(s) detected after migration`, "warning");
|
|
250
|
+
for (const gap of healthResult.gaps) {
|
|
251
|
+
ctx.ui.notify(` · ${gap.check}: ${gap.message}`, "info");
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch (err) {
|
|
256
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
257
|
+
ctx.ui.notify(`△ forge:migrate — health check failed (non-fatal): ${msg}`, "warning");
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/orchestrators/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { MergedConfig } from "../config/config-layer.js";
|
|
2
|
+
import type { OrchestratorResult } from "../lib/orchestrator-types.js";
|
|
3
|
+
/** Minimal context interface — only the bits preflight needs. */
|
|
4
|
+
export interface PreflightContext {
|
|
5
|
+
ui: {
|
|
6
|
+
notify(message: string, type?: "error" | "info" | "warning"): void;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export interface RunOrchestratorPreflightOptions {
|
|
10
|
+
/** "task" runs validateModelConfig; "ceremony" skips it. */
|
|
11
|
+
mode: "task" | "ceremony";
|
|
12
|
+
/** Minimal context for notifications. */
|
|
13
|
+
ctx: PreflightContext;
|
|
14
|
+
/** Prefix for notify messages, e.g. "forge:run-task" or "forge:fix-bug". */
|
|
15
|
+
notifyPrefix: string;
|
|
16
|
+
/** Persona name catalogue from readPersonaDir. */
|
|
17
|
+
personaCatalogue: string[];
|
|
18
|
+
/** Pipeline name catalogue from readPipelineNames; null if no config found. */
|
|
19
|
+
pipelineCatalogue: string[] | null;
|
|
20
|
+
/** Merged model-routing config from loadLayeredConfig. */
|
|
21
|
+
modelRoutingConfig: MergedConfig;
|
|
22
|
+
/** Available models from ctx.modelRegistry.getAvailable(). */
|
|
23
|
+
availableModels: Array<{
|
|
24
|
+
provider: string;
|
|
25
|
+
id: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
/** Discriminated union: proceed=true → continue; proceed=false → return result early. */
|
|
29
|
+
export type OrchestratorPreflightResult = {
|
|
30
|
+
proceed: true;
|
|
31
|
+
} | {
|
|
32
|
+
proceed: false;
|
|
33
|
+
result: OrchestratorResult;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Run the orchestrator pre-flight check.
|
|
37
|
+
*
|
|
38
|
+
* In mode="task": calls validateModelConfig and surfaces warnings/errors via
|
|
39
|
+
* ctx.ui.notify. Returns `{ proceed: false, result }` with status="failed" if
|
|
40
|
+
* there are errors; returns `{ proceed: true }` otherwise.
|
|
41
|
+
*
|
|
42
|
+
* In mode="ceremony": returns `{ proceed: true }` immediately without calling
|
|
43
|
+
* validateModelConfig. This matches the existing behaviour of ceremony dispatch
|
|
44
|
+
* which uses lookupPersonaModel rather than the full validator.
|
|
45
|
+
*/
|
|
46
|
+
export declare function runOrchestratorPreflight(opts: RunOrchestratorPreflightOptions): OrchestratorPreflightResult;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// orchestrator-preflight.ts — FORGE-S25-T17 (H-13, N-H-D)
|
|
2
|
+
//
|
|
3
|
+
// Single shared preflight helper for orchestrator pipelines. Replaces the
|
|
4
|
+
// duplicate pre-flight validation blocks in run-task.ts and fix-bug.ts.
|
|
5
|
+
//
|
|
6
|
+
// Design: a `mode` parameter selects behaviour:
|
|
7
|
+
//
|
|
8
|
+
// mode="task" — full model-config validation via validateModelConfig.
|
|
9
|
+
// Used by runTaskPipeline and runBugPipeline.
|
|
10
|
+
// mode="ceremony" — skips validateModelConfig entirely.
|
|
11
|
+
// Aligns with dispatchSprintCeremony which uses
|
|
12
|
+
// lookupPersonaModel (not the full validator). The
|
|
13
|
+
// run-sprint.ts ceremony call does NOT use this helper
|
|
14
|
+
// directly; it was already skip-validation by design
|
|
15
|
+
// (N-H-D). This mode is available for future callers
|
|
16
|
+
// that need a ceremony-style preflight.
|
|
17
|
+
//
|
|
18
|
+
// Why run-sprint.ts is NOT migrated to this helper:
|
|
19
|
+
// run-sprint.ts contains a separate sprint-entry validation block
|
|
20
|
+
// (lines 470–498) that validates sprint-level config, not task/phase-level.
|
|
21
|
+
// That block is architecturally distinct and is explicitly out of scope
|
|
22
|
+
// per the plan-review finding (N-H-D resolved, reviewer-approved).
|
|
23
|
+
import { validateModelConfig } from "../config/model-validator.js";
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// runOrchestratorPreflight
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* Run the orchestrator pre-flight check.
|
|
29
|
+
*
|
|
30
|
+
* In mode="task": calls validateModelConfig and surfaces warnings/errors via
|
|
31
|
+
* ctx.ui.notify. Returns `{ proceed: false, result }` with status="failed" if
|
|
32
|
+
* there are errors; returns `{ proceed: true }` otherwise.
|
|
33
|
+
*
|
|
34
|
+
* In mode="ceremony": returns `{ proceed: true }` immediately without calling
|
|
35
|
+
* validateModelConfig. This matches the existing behaviour of ceremony dispatch
|
|
36
|
+
* which uses lookupPersonaModel rather than the full validator.
|
|
37
|
+
*/
|
|
38
|
+
export function runOrchestratorPreflight(opts) {
|
|
39
|
+
if (opts.mode === "ceremony") {
|
|
40
|
+
return { proceed: true };
|
|
41
|
+
}
|
|
42
|
+
// mode="task" — full validation
|
|
43
|
+
const strict = process.env.FORGE_STRICT_MODELS === "1";
|
|
44
|
+
const { errors, warnings } = validateModelConfig(opts.personaCatalogue, opts.pipelineCatalogue, opts.modelRoutingConfig, opts.availableModels, strict);
|
|
45
|
+
for (const w of warnings) {
|
|
46
|
+
opts.ctx.ui.notify(`⚠ ${opts.notifyPrefix} — model routing: ${w.message}`, "warning");
|
|
47
|
+
}
|
|
48
|
+
if (errors.length > 0) {
|
|
49
|
+
for (const e of errors) {
|
|
50
|
+
opts.ctx.ui.notify(`× ${opts.notifyPrefix} — model routing: ${e.message}`, "error");
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
proceed: false,
|
|
54
|
+
result: {
|
|
55
|
+
status: "failed",
|
|
56
|
+
lastPhaseIndex: 0,
|
|
57
|
+
iterationCounts: {},
|
|
58
|
+
lastError: `model config validation failed: ${errors.map((e) => e.code).join(", ")}`,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return { proceed: true };
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=orchestrator-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-preflight.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/orchestrators/orchestrator-preflight.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,4EAA4E;AAC5E,kEAAkE;AAClE,0DAA0D;AAC1D,oEAAoE;AACpE,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,yEAAyE;AACzE,4DAA4D;AAC5D,EAAE;AACF,oDAAoD;AACpD,oEAAoE;AACpE,8EAA8E;AAC9E,0EAA0E;AAC1E,qEAAqE;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAkCnE,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAqC;IAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,gCAAgC;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG,CAAC;IACvD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAC/C,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,eAAe,EACpB,MAAM,CACN,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,YAAY,qBAAqB,CAAC,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,YAAY,qBAAqB,CAAC,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACrF,CAAC;QACD,OAAO;YACN,OAAO,EAAE,KAAK;YACd,MAAM,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,cAAc,EAAE,CAAC;gBACjB,eAAe,EAAE,EAAE;gBACnB,SAAS,EAAE,mCAAmC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACpF;SACD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { StreamFn } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { ExtensionAPI, ExtensionFactory } from "@earendil-works/pi-coding-agent";
|
|
3
|
+
import { type ForgeToolDefs } from "../forge-tools.js";
|
|
4
|
+
/**
|
|
5
|
+
* Test-only seam (forge-cli#17). Resolves a StreamFn for a given dispatch
|
|
6
|
+
* context — ceremony or per-phase. Production callers leave this undefined.
|
|
7
|
+
*/
|
|
8
|
+
export type SprintStreamFnFactory = (ctx: {
|
|
9
|
+
kind: "task-phase" | "ceremony";
|
|
10
|
+
persona: string;
|
|
11
|
+
phase?: string;
|
|
12
|
+
taskId?: string;
|
|
13
|
+
}) => StreamFn | undefined;
|
|
14
|
+
export interface RegisterRunSprintOptions {
|
|
15
|
+
cwd?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Test-only seam (forge-cli#17). When set, each `runForgeSubagent` call
|
|
18
|
+
* spawned by the sprint handler (ceremony) and by the per-task pipeline
|
|
19
|
+
* (each phase) is dispatched with `streamFn = factory({...})`. Production
|
|
20
|
+
* callers leave this undefined.
|
|
21
|
+
*/
|
|
22
|
+
streamFnFactory?: SprintStreamFnFactory;
|
|
23
|
+
forgeToolDefs?: ForgeToolDefs;
|
|
24
|
+
/** Extension factories forwarded to each task's subagent sessions (see RunTaskPipelineOptions). */
|
|
25
|
+
extensionFactories?: ExtensionFactory[];
|
|
26
|
+
}
|
|
27
|
+
export declare function registerRunSprint(pi: ExtensionAPI, options?: RegisterRunSprintOptions): void;
|