@entelligentsia/forgecli 1.0.25 → 1.0.36
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 +258 -0
- package/README.md +2 -0
- package/dist/CHANGELOG-forge-plugin.md +163 -0
- package/dist/bin/argv.d.ts +2 -2
- package/dist/bin/argv.js +25 -0
- package/dist/bin/argv.js.map +1 -1
- package/dist/bin/forge.js +12 -0
- package/dist/bin/forge.js.map +1 -1
- package/dist/bin/init.d.ts +23 -0
- package/dist/bin/init.js +123 -0
- package/dist/bin/init.js.map +1 -0
- package/dist/bin/uninstall.d.ts +20 -0
- package/dist/bin/uninstall.js +141 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/extensions/forgecli/add-pipeline.d.ts +19 -0
- package/dist/extensions/forgecli/add-pipeline.js +143 -0
- package/dist/extensions/forgecli/add-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/add-task.d.ts +20 -0
- package/dist/extensions/forgecli/add-task.js +154 -0
- package/dist/extensions/forgecli/add-task.js.map +1 -0
- package/dist/extensions/forgecli/approve.d.ts +22 -0
- package/dist/extensions/forgecli/approve.js +152 -0
- package/dist/extensions/forgecli/approve.js.map +1 -0
- package/dist/extensions/forgecli/banner.d.ts +10 -0
- package/dist/extensions/forgecli/banner.js +36 -0
- package/dist/extensions/forgecli/banner.js.map +1 -0
- package/dist/extensions/forgecli/calibrate.d.ts +64 -0
- package/dist/extensions/forgecli/calibrate.js +481 -0
- package/dist/extensions/forgecli/calibrate.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.d.ts +40 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js +593 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.d.ts +46 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js +245 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.d.ts +23 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.js +215 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.js.map +1 -0
- package/dist/extensions/forgecli/collate.d.ts +22 -0
- package/dist/extensions/forgecli/collate.js +134 -0
- package/dist/extensions/forgecli/collate.js.map +1 -0
- package/dist/extensions/forgecli/commit.d.ts +22 -0
- package/dist/extensions/forgecli/commit.js +152 -0
- package/dist/extensions/forgecli/commit.js.map +1 -0
- package/dist/extensions/forgecli/config-command.d.ts +8 -0
- package/dist/extensions/forgecli/config-command.js +67 -0
- package/dist/extensions/forgecli/config-command.js.map +1 -0
- package/dist/extensions/forgecli/config-layer.d.ts +53 -0
- package/dist/extensions/forgecli/config-layer.js +72 -0
- package/dist/extensions/forgecli/config-layer.js.map +1 -0
- package/dist/extensions/forgecli/config-writer.d.ts +16 -0
- package/dist/extensions/forgecli/config-writer.js +69 -0
- package/dist/extensions/forgecli/config-writer.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/component.js +10 -7
- package/dist/extensions/forgecli/dashboard/component.js.map +1 -1
- package/dist/extensions/forgecli/enhance.d.ts +27 -0
- package/dist/extensions/forgecli/enhance.js +199 -0
- package/dist/extensions/forgecli/enhance.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.d.ts +85 -0
- package/dist/extensions/forgecli/fix-bug.js +1580 -0
- package/dist/extensions/forgecli/fix-bug.js.map +1 -0
- package/dist/extensions/forgecli/forge-header.d.ts +12 -0
- package/dist/extensions/forgecli/forge-header.js +114 -0
- package/dist/extensions/forgecli/forge-header.js.map +1 -0
- package/dist/extensions/forgecli/forge-init.d.ts +26 -0
- package/dist/extensions/forgecli/forge-init.js +514 -0
- package/dist/extensions/forgecli/forge-init.js.map +1 -0
- package/dist/extensions/forgecli/forge-root.d.ts +10 -0
- package/dist/extensions/forgecli/forge-root.js +62 -0
- package/dist/extensions/forgecli/forge-root.js.map +1 -0
- package/dist/extensions/forgecli/forge-update-command.d.ts +100 -0
- package/dist/extensions/forgecli/forge-update-command.js +435 -0
- package/dist/extensions/forgecli/forge-update-command.js.map +1 -0
- package/dist/extensions/forgecli/friction-emit.d.ts +99 -0
- package/dist/extensions/forgecli/friction-emit.js +245 -0
- package/dist/extensions/forgecli/friction-emit.js.map +1 -0
- package/dist/extensions/forgecli/implement.d.ts +22 -0
- package/dist/extensions/forgecli/implement.js +170 -0
- package/dist/extensions/forgecli/implement.js.map +1 -0
- package/dist/extensions/forgecli/init-context.d.ts +99 -0
- package/dist/extensions/forgecli/init-context.js +178 -0
- package/dist/extensions/forgecli/init-context.js.map +1 -0
- package/dist/extensions/forgecli/init-progress.d.ts +39 -0
- package/dist/extensions/forgecli/init-progress.js +117 -0
- package/dist/extensions/forgecli/init-progress.js.map +1 -0
- package/dist/extensions/forgecli/input-router.d.ts +33 -0
- package/dist/extensions/forgecli/input-router.js +136 -0
- package/dist/extensions/forgecli/input-router.js.map +1 -0
- package/dist/extensions/forgecli/lib/halt-advisor.d.ts +59 -0
- package/dist/extensions/forgecli/lib/halt-advisor.js +113 -0
- package/dist/extensions/forgecli/lib/halt-advisor.js.map +1 -0
- package/dist/extensions/forgecli/lib/orchestrator-preflight.d.ts +46 -0
- package/dist/extensions/forgecli/lib/orchestrator-preflight.js +64 -0
- package/dist/extensions/forgecli/lib/orchestrator-preflight.js.map +1 -0
- package/dist/extensions/forgecli/materialize.d.ts +16 -0
- package/dist/extensions/forgecli/materialize.js +195 -0
- package/dist/extensions/forgecli/materialize.js.map +1 -0
- package/dist/extensions/forgecli/migrate.d.ts +22 -0
- package/dist/extensions/forgecli/migrate.js +260 -0
- package/dist/extensions/forgecli/migrate.js.map +1 -0
- package/dist/extensions/forgecli/migration-engine.d.ts +117 -0
- package/dist/extensions/forgecli/migration-engine.js +563 -0
- package/dist/extensions/forgecli/migration-engine.js.map +1 -0
- package/dist/extensions/forgecli/model-registry.d.ts +61 -0
- package/dist/extensions/forgecli/model-registry.js +127 -0
- package/dist/extensions/forgecli/model-registry.js.map +1 -0
- package/dist/extensions/forgecli/model-resolver.d.ts +32 -0
- package/dist/extensions/forgecli/model-resolver.js +65 -0
- package/dist/extensions/forgecli/model-resolver.js.map +1 -0
- package/dist/extensions/forgecli/model-validator.d.ts +29 -0
- package/dist/extensions/forgecli/model-validator.js +107 -0
- package/dist/extensions/forgecli/model-validator.js.map +1 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.d.ts +26 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.js +213 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.d.ts +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.js +65 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.d.ts +23 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.js +140 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.d.ts +54 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js +349 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.d.ts +8 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js +60 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.d.ts +14 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.js +100 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.d.ts +72 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js +204 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.d.ts +38 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js +166 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.d.ts +3 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js +55 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.d.ts +7 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js +293 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.d.ts +2 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js +501 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.d.ts +41 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js +5 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.d.ts +43 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js +85 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.d.ts +8 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js +37 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.d.ts +28 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js +45 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.d.ts +26 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js +75 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.d.ts +24 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js +37 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/fix-bug.d.ts +9 -93
- package/dist/extensions/forgecli/orchestrators/fix-bug.js +23 -1721
- package/dist/extensions/forgecli/orchestrators/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/run-sprint.d.ts +3 -12
- package/dist/extensions/forgecli/orchestrators/run-sprint.js +48 -270
- package/dist/extensions/forgecli/orchestrators/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/run-task.d.ts +10 -214
- package/dist/extensions/forgecli/orchestrators/run-task.js +31 -1481
- package/dist/extensions/forgecli/orchestrators/run-task.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.d.ts +33 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js +135 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.d.ts +18 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js +55 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.d.ts +9 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.js +174 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.d.ts +2 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js +494 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.d.ts +62 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.js +5 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.d.ts +4 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.js +48 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.d.ts +63 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.js +185 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.d.ts +34 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.js +78 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.d.ts +42 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js +370 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.d.ts +14 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.js +26 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.d.ts +9 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.js +58 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.d.ts +14 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.js +35 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.d.ts +36 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js +152 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js.map +1 -0
- package/dist/extensions/forgecli/plan.d.ts +22 -0
- package/dist/extensions/forgecli/plan.js +167 -0
- package/dist/extensions/forgecli/plan.js.map +1 -0
- package/dist/extensions/forgecli/quiz-agent.d.ts +17 -0
- package/dist/extensions/forgecli/quiz-agent.js +98 -0
- package/dist/extensions/forgecli/quiz-agent.js.map +1 -0
- package/dist/extensions/forgecli/read-command.d.ts +2 -0
- package/dist/extensions/forgecli/read-command.js +100 -0
- package/dist/extensions/forgecli/read-command.js.map +1 -0
- package/dist/extensions/forgecli/regenerate.d.ts +40 -0
- package/dist/extensions/forgecli/regenerate.js +438 -0
- package/dist/extensions/forgecli/regenerate.js.map +1 -0
- package/dist/extensions/forgecli/remove-command.d.ts +17 -0
- package/dist/extensions/forgecli/remove-command.js +124 -0
- package/dist/extensions/forgecli/remove-command.js.map +1 -0
- package/dist/extensions/forgecli/report-bug.d.ts +25 -0
- package/dist/extensions/forgecli/report-bug.js +159 -0
- package/dist/extensions/forgecli/report-bug.js.map +1 -0
- package/dist/extensions/forgecli/retrospective.d.ts +20 -0
- package/dist/extensions/forgecli/retrospective.js +126 -0
- package/dist/extensions/forgecli/retrospective.js.map +1 -0
- package/dist/extensions/forgecli/review-code.d.ts +35 -0
- package/dist/extensions/forgecli/review-code.js +196 -0
- package/dist/extensions/forgecli/review-code.js.map +1 -0
- package/dist/extensions/forgecli/review-plan.d.ts +35 -0
- package/dist/extensions/forgecli/review-plan.js +200 -0
- package/dist/extensions/forgecli/review-plan.js.map +1 -0
- package/dist/extensions/forgecli/run-sprint.d.ts +27 -0
- package/dist/extensions/forgecli/run-sprint.js +716 -0
- package/dist/extensions/forgecli/run-sprint.js.map +1 -0
- package/dist/extensions/forgecli/run-task.d.ts +204 -0
- package/dist/extensions/forgecli/run-task.js +1403 -0
- package/dist/extensions/forgecli/run-task.js.map +1 -0
- package/dist/extensions/forgecli/skill-curation-flag.d.ts +21 -0
- package/dist/extensions/forgecli/skill-curation-flag.js +71 -0
- package/dist/extensions/forgecli/skill-curation-flag.js.map +1 -0
- package/dist/extensions/forgecli/skill-curator-subagent.d.ts +102 -0
- package/dist/extensions/forgecli/skill-curator-subagent.js +339 -0
- package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -0
- package/dist/extensions/forgecli/skill-retriever.d.ts +84 -0
- package/dist/extensions/forgecli/skill-retriever.js +246 -0
- package/dist/extensions/forgecli/skill-retriever.js.map +1 -0
- package/dist/extensions/forgecli/skill-usage-tracker.d.ts +91 -0
- package/dist/extensions/forgecli/skill-usage-tracker.js +224 -0
- package/dist/extensions/forgecli/skill-usage-tracker.js.map +1 -0
- package/dist/extensions/forgecli/sprint-intake.d.ts +10 -0
- package/dist/extensions/forgecli/sprint-intake.js +91 -0
- package/dist/extensions/forgecli/sprint-intake.js.map +1 -0
- package/dist/extensions/forgecli/sprint-plan.d.ts +14 -0
- package/dist/extensions/forgecli/sprint-plan.js +122 -0
- package/dist/extensions/forgecli/sprint-plan.js.map +1 -0
- package/dist/extensions/forgecli/status-command.d.ts +19 -0
- package/dist/extensions/forgecli/status-command.js +140 -0
- package/dist/extensions/forgecli/status-command.js.map +1 -0
- package/dist/extensions/forgecli/store-error-remediation.d.ts +65 -0
- package/dist/extensions/forgecli/store-error-remediation.js +307 -0
- package/dist/extensions/forgecli/store-error-remediation.js.map +1 -0
- package/dist/extensions/forgecli/store-query.d.ts +22 -0
- package/dist/extensions/forgecli/store-query.js +107 -0
- package/dist/extensions/forgecli/store-query.js.map +1 -0
- package/dist/extensions/forgecli/store-repair.d.ts +17 -0
- package/dist/extensions/forgecli/store-repair.js +123 -0
- package/dist/extensions/forgecli/store-repair.js.map +1 -0
- package/dist/extensions/forgecli/store-resolver.d.ts +56 -0
- package/dist/extensions/forgecli/store-resolver.js +263 -0
- package/dist/extensions/forgecli/store-resolver.js.map +1 -0
- package/dist/extensions/forgecli/store-validator.d.ts +16 -0
- package/dist/extensions/forgecli/store-validator.js +32 -0
- package/dist/extensions/forgecli/store-validator.js.map +1 -0
- package/dist/extensions/forgecli/test-orchestrate.d.ts +2 -0
- package/dist/extensions/forgecli/test-orchestrate.js +182 -0
- package/dist/extensions/forgecli/test-orchestrate.js.map +1 -0
- package/dist/extensions/forgecli/thread-switcher.d.ts +5 -0
- package/dist/extensions/forgecli/thread-switcher.js +189 -0
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -0
- package/dist/extensions/forgecli/transition-guard.d.ts +20 -0
- package/dist/extensions/forgecli/transition-guard.js +89 -0
- package/dist/extensions/forgecli/transition-guard.js.map +1 -0
- package/dist/extensions/forgecli/update/forge-update-command.js +10 -7
- package/dist/extensions/forgecli/update/forge-update-command.js.map +1 -1
- package/dist/extensions/forgecli/update-check.d.ts +37 -0
- package/dist/extensions/forgecli/update-check.js +185 -0
- package/dist/extensions/forgecli/update-check.js.map +1 -0
- package/dist/extensions/forgecli/update-tools.d.ts +23 -0
- package/dist/extensions/forgecli/update-tools.js +135 -0
- package/dist/extensions/forgecli/update-tools.js.map +1 -0
- package/dist/extensions/forgecli/validate.d.ts +22 -0
- package/dist/extensions/forgecli/validate.js +152 -0
- package/dist/extensions/forgecli/validate.js.map +1 -0
- package/dist/extensions/forgecli/viewport-events.d.ts +78 -0
- package/dist/extensions/forgecli/viewport-events.js +243 -0
- package/dist/extensions/forgecli/viewport-events.js.map +1 -0
- package/dist/extensions/forgecli/viewport-renderer.d.ts +83 -0
- package/dist/extensions/forgecli/viewport-renderer.js +233 -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 +128 -0
- package/dist/extensions/forgecli/viewport-theme.js.map +1 -0
- package/dist/extensions/forgecli/whats-new-widget.d.ts +26 -0
- package/dist/extensions/forgecli/whats-new-widget.js +376 -0
- package/dist/extensions/forgecli/whats-new-widget.js.map +1 -0
- package/dist/extensions/forgecli/whats-new.d.ts +120 -0
- package/dist/extensions/forgecli/whats-new.js +470 -0
- package/dist/extensions/forgecli/whats-new.js.map +1 -0
- package/dist/forge-payload/.base-pack/commands/approve.md +2 -2
- package/dist/forge-payload/.base-pack/commands/check-agent.md +2 -2
- package/dist/forge-payload/.base-pack/commands/collate.md +2 -2
- package/dist/forge-payload/.base-pack/commands/commit.md +2 -2
- package/dist/forge-payload/.base-pack/commands/enhance.md +2 -2
- package/dist/forge-payload/.base-pack/commands/fix-bug.md +2 -2
- package/dist/forge-payload/.base-pack/commands/implement.md +2 -2
- package/dist/forge-payload/.base-pack/commands/init.md +278 -0
- package/dist/forge-payload/.base-pack/commands/new-sprint.md +2 -2
- package/dist/forge-payload/.base-pack/commands/plan-sprint.md +2 -2
- package/dist/forge-payload/.base-pack/commands/plan.md +2 -2
- package/dist/forge-payload/.base-pack/commands/retro.md +2 -2
- package/dist/forge-payload/.base-pack/commands/review-code.md +2 -2
- package/dist/forge-payload/.base-pack/commands/review-plan.md +2 -2
- package/dist/forge-payload/.base-pack/commands/run-sprint.md +2 -2
- package/dist/forge-payload/.base-pack/commands/run-task.md +2 -2
- package/dist/forge-payload/.base-pack/commands/validate.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/collator_agent.md +5 -6
- package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +1 -1
- package/dist/forge-payload/.base-pack/workflows-js/wfl-init.js +449 -0
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/.schemas/migrations.json +85 -0
- package/dist/forge-payload/commands/add-pipeline.md +1 -1
- package/dist/forge-payload/commands/add-task.md +3 -3
- package/dist/forge-payload/commands/ask.md +1 -1
- package/dist/forge-payload/commands/check-agent.md +1 -1
- package/dist/forge-payload/commands/config.md +1 -1
- package/dist/forge-payload/commands/health.md +1 -1
- package/dist/forge-payload/commands/init.md +62 -7
- package/dist/forge-payload/commands/rebuild.md +3 -3
- package/dist/forge-payload/commands/remove.md +1 -1
- package/dist/forge-payload/commands/repair.md +1 -1
- package/dist/forge-payload/commands/report-bug.md +1 -1
- package/dist/forge-payload/commands/status.md +1 -1
- package/dist/forge-payload/commands/update.md +3 -3
- package/dist/forge-payload/hooks/lib/common.cjs +228 -0
- package/dist/forge-payload/hooks/lib/plugin-detection.cjs +106 -0
- package/dist/forge-payload/hooks/lib/update-msg.cjs +23 -0
- package/dist/forge-payload/hooks/lib/update-url.cjs +46 -0
- package/dist/forge-payload/hooks/lib/write-registry.js +53 -0
- package/dist/forge-payload/init/discovery/discover-database.md +32 -0
- package/dist/forge-payload/init/discovery/discover-processes.md +31 -0
- package/dist/forge-payload/init/discovery/discover-routing.md +31 -0
- package/dist/forge-payload/init/discovery/discover-stack.md +33 -0
- package/dist/forge-payload/init/discovery/discover-testing.md +34 -0
- package/dist/forge-payload/init/generation/generate-commands.md +171 -0
- package/dist/forge-payload/init/generation/generate-kb-doc.md +60 -0
- package/dist/forge-payload/init/generation/generate-knowledge-base.md +56 -0
- package/dist/forge-payload/init/generation/generate-persona.md +73 -0
- package/dist/forge-payload/init/generation/generate-personas.md +54 -0
- package/dist/forge-payload/init/generation/generate-skill.md +66 -0
- package/dist/forge-payload/init/generation/generate-skills.md +36 -0
- package/dist/forge-payload/init/generation/generate-template.md +60 -0
- package/dist/forge-payload/init/generation/generate-templates.md +39 -0
- package/dist/forge-payload/init/generation/generate-tools.md +133 -0
- package/dist/forge-payload/init/generation/generate-workflows.md +78 -0
- package/dist/forge-payload/init/phases/phase-1-collect.md +10 -2
- package/dist/forge-payload/init/phases/phase-3-materialize.md +1 -1
- package/dist/forge-payload/init/phases/phase-4-register.md +8 -0
- package/dist/forge-payload/init/workflow-gen-plan.json +17 -0
- package/dist/forge-payload/integrity.json +16 -16
- package/dist/forge-payload/meta/workflows/meta-collate.md +5 -6
- package/dist/forge-payload/meta/workflows/meta-migrate.md +1 -1
- package/dist/forge-payload/schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/schemas/structure-manifest.json +3 -12
- package/dist/forge-payload/tools/forge-preflight.cjs +268 -0
- package/dist/forge-payload/tools/lib/paths.cjs +12 -11
- package/dist/forge-payload/tools/lib/pricing.cjs +31 -11
- package/dist/forge-payload/tools/query-logger.cjs +34 -0
- package/dist/forge-payload/tools/substitute-placeholders.cjs +5 -6
- package/node_modules/@mariozechner/clipboard/package.json +1 -2
- package/package.json +2 -2
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/README.md +0 -3
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/package.json +0 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bug-phase-dispatch.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,uEAAuE;AACvE,6EAA6E;AAC7E,oEAAoE;AACpE,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAE/E,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAwB,MAAM,gBAAgB,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,MAAM,UAAU,GAAG,eAAe,CAAC;AAwCnC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,CAAyB;IAC/D,MAAM,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,GAAG,EACH,GAAG,EACH,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,YAAY,GACZ,GAAG,CAAC,CAAC;IAEN,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IAEnC,iEAAiE;IACjE,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACJ,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,8BAA8B,KAAK,CAAC,WAAW,yBAAyB,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,SAAS,IAAI;YAChH,qDAAqD,EACtD,OAAO,CACP,CAAC;QACF,aAAa,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,UAAU,EAAE,iBAAiB;YAC7B,eAAe;YACf,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,wBAAwB,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE;YAC3D,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACjC,CAAC,CAAC;QACH,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,cAAc,EAAE,iBAAiB;gBACjC,eAAe;gBACf,SAAS,EAAE,wBAAwB,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE;aAC3D;SACD,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,2DAA2D;IAC3D,sDAAsD;IACtD,MAAM,iBAAiB,GACtB,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,IAAI,OAAO,GAAG,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IAExG,qEAAqE;IACrE,8DAA8D;IAC9D,sEAAsE;IACtE,0DAA0D;IAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;QACxD,OAAO,GAAG,oBAAoB,WAAW,cAAc,OAAO,EAAE,CAAC;IAClE,CAAC;IAED,iCAAiC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE9B,uEAAuE;IACvE,MAAM,mBAAmB,GAAmD,EAAE,CAAC;IAE/E,0BAA0B;IAC1B,iEAAiE;IACjE,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,GAAG,CAAC;IAC7D,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,UAAU,GAA2C,GAAG,EAAE,GAAE,CAAC,CAAC;IAClE,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC;QACjF,UAAU,GAAG,CAAC,GAA4B,EAAE,EAAE;YAC7C,IAAI,CAAC;gBACJ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,yDAAyD;gBACzD,IAAI,CAAC;oBACJ,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAa,CAAC,CAAC;oBACtC,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;wBAChC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAa,EAAE,MAAM,CAAC,CAAC;wBACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC9B,yBAAyB;wBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;wBAC5C,EAAE,CAAC,aAAa,CAAC,YAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;oBACxE,CAAC;gBACF,CAAC;gBAAC,MAAM,CAAC;oBACR,4BAA4B;gBAC7B,CAAC;gBACD,EAAE,CAAC,cAAc,CAChB,YAAa,EACb,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,EAClF,MAAM,CACN,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACR,sCAAsC;YACvC,CAAC;QACF,CAAC,CAAC;IACH,CAAC;IACD,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAE1D,+DAA+D;IAC/D,kEAAkE;IAClE,wBAAwB;IACxB,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;IAC1D,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAC3B,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;QACnC,IAAI,EAAE,MAAM;QACZ,gEAAgE;QAChE,yCAAyC;QACzC,aAAa,EAAE,OAAO;KACtB,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,GAAG,EAAE;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG;YAAE,OAAO;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CACjB,UAAU,EACV,WAAW,KAAK,KAAK,KAAK,CAAC,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,OAAO,IAAI,IAAI,EAAE,CACzL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACvC,QAAQ;QACR,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,aAAa,KAAK,CAAC,IAAI,YAAY;QAChD,UAAU;QACV,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;QACjD,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACpG,WAAW,EAAE,EAAE,UAAU,EAAE,GAAG,UAAU,UAAU,EAAE;QACpD,SAAS,EAAE,aAAa;KACxB,CAAC,CAAC;IAEH,wEAAwE;IACxE,0EAA0E;IAC1E,0DAA0D;IAC1D,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,MAAM,eAAe,GAAG,CAAC,KAAU,EAAE,EAAE;QACtC,IAAI,KAAK,EAAE,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAC1C,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,mBAAmB,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAChF,mBAAmB,GAAG,IAAI,CAAC;YAC3B,UAAU,CAAC;gBACV,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI;gBACxC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;aAC1B,CAAC,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,uEAAuE;IACvE,wEAAwE;IACxE,sEAAsE;IACtE,qEAAqE;IACrE,MAAM,eAAe,GAAG,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC3G,UAAU,CAAC;QACV,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE,eAAe,CAAC,KAAK,IAAI,IAAI;QACxC,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,OAAO,EAAE,KAAK,CAAC,WAAW;KAC1B,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACJ,iEAAiE;QACjE,4DAA4D;QAC5D,oEAAoE;QACpE,+DAA+D;QAC/D,+DAA+D;QAC/D,0DAA0D;QAC1D,wDAAwD;QACxD,MAAM,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,IAAiB,EAAE,GAAG,EAAE,CAC1E,gBAAgB,CAAC;YAChB,OAAO;YACP,IAAI,EAAE,OAAO;YACb,GAAG;YACH,SAAS,EAAE,GAAG,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;YACpC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO;YAC/B,gEAAgE;YAChE,+DAA+D;YAC/D,6DAA6D;YAC7D,gCAAgC;YAChC,cAAc,EACb,OAAO,eAAe,EAAE,QAAQ,KAAK,QAAQ;gBAC5C,CAAC,CAAC,SAAS,eAAe,CAAC,QAAQ,EAAE;gBACrC,CAAC,CAAC,aAAa,KAAK,EAAE;YACxB,OAAO,EAAE,eAAe;YACxB,cAAc,EAAE,eAAe,CAAC,KAAK;YACrC,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAChG,CAAC,CACF,CAAC;IACH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,sDAAsD,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE,EAC7F,OAAO,CACP,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzC,aAAa,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,UAAU,EAAE,iBAAiB;YAC7B,eAAe;YACf,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,2BAA2B,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE;YAC9D,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACjC,CAAC,CAAC;QACH,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,cAAc,EAAE,iBAAiB;gBACjC,eAAe;gBACf,SAAS,EAAE,2BAA2B,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE;aAC9D;SACD,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,8DAA8D;IAC9D,iEAAiE;IACjE,0DAA0D;IAC1D,mEAAmE;IACnE,MAAM,eAAe,GAAG,CAAC,MAA4C,EAAQ,EAAE;QAC9E,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;YACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC3B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;SACjC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,qEAAqE;IACrE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,KAAK,UAAU,KAAK,CAAC,IAAI,aAAa,EAAE,MAAM,CAAC,CAAC;QACnF,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC5C,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,4EAA4E;QAC5E,uEAAuE;QACvE,sEAAsE;QACtE,wBAAwB,CAAC;YACxB,OAAO,EAAE;gBACR,UAAU,EAAE,KAAK;gBACjB,KAAK;gBACL,QAAQ,EAAE,MAAM;gBAChB,KAAK;gBACL,SAAS,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;gBACjD,OAAO,EAAE,UAAU;gBACnB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;gBAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;gBACtC,KAAK,EAAE;oBACN,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;oBACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC3B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;oBACjC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;iBACnC;gBACD,SAAS,EAAE,SAAS;gBACpB,QAAQ;gBACR,GAAG;aACH;YACD,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS;YAC5D,OAAO,EAAE,UAAU;SACnB,CAAC,CAAC;QACH,kEAAkE;QAClE,aAAa,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,UAAU,EAAE,iBAAiB;YAC7B,eAAe;YACf,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACjC,CAAC,CAAC;QACH,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE;SACnF,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,2BAA2B,KAAK,CAAC,IAAI,iBAAiB,MAAM,CAAC,QAAQ,GAAG;YACvE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EACrD,OAAO,CACP,CAAC;QACF,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,2EAA2E;QAC3E,wBAAwB,CAAC;YACxB,OAAO,EAAE;gBACR,UAAU,EAAE,KAAK;gBACjB,KAAK;gBACL,QAAQ,EAAE,MAAM;gBAChB,KAAK;gBACL,SAAS,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;gBACjD,OAAO,EAAE,UAAU;gBACnB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;gBAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;gBACtC,KAAK,EAAE;oBACN,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;oBACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC3B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;oBACjC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;iBACnC;gBACD,SAAS,EAAE,SAAS;gBACpB,QAAQ;gBACR,GAAG;aACH;YACD,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS;YAC5D,OAAO,EAAE,UAAU;SACnB,CAAC,CAAC;QACH,aAAa,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,UAAU,EAAE,iBAAiB;YAC7B,eAAe;YACf,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,wBAAwB;YAC/E,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACjC,CAAC,CAAC;QACH,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,cAAc,EAAE,iBAAiB;gBACjC,eAAe;gBACf,SAAS,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,wBAAwB;aAC/E;SACD,CAAC;IACH,CAAC;IAED,OAAO;QACN,IAAI,EAAE,IAAI;QACV,MAAM;QACN,eAAe;QACf,QAAQ;QACR,UAAU;QACV,UAAU;QACV,mBAAmB;QACnB,YAAY;QACZ,gBAAgB;KAChB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PhaseDescriptor } from "../task/task-phases.js";
|
|
2
|
+
export declare const BUG_PHASES: PhaseDescriptor[];
|
|
3
|
+
export declare const BUG_TYPE_TOKENS: Record<string, {
|
|
4
|
+
pass: string;
|
|
5
|
+
fail: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const BUG_TERMINAL_STATES: Set<string>;
|
|
8
|
+
export declare function postTriageTransitions(status: string | undefined): string[];
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// bug-phases.ts — bug phase descriptor table, bug-event type tokens, terminal
|
|
2
|
+
// states, and the orchestrator-owned post-triage status transitions. Extracted
|
|
3
|
+
// VERBATIM from fix-bug.ts (FORGE-S31 file-size refactor); no logic changes.
|
|
4
|
+
// ── Bug phase descriptor table ──────────────────────────────────────────────
|
|
5
|
+
//
|
|
6
|
+
// Decoded from .forge/workflows/fix_bug.md and the task prompt's BUG_PHASES.
|
|
7
|
+
// triage / plan-fix / implement all read the same fix_bug.md body — the
|
|
8
|
+
// workflow handles all three phases through prose.
|
|
9
|
+
// FORGE-S25-T16: readPersonaDirBug / readPipelineNamesBug extracted to
|
|
10
|
+
// lib/catalog-helpers.ts and imported above with aliases (H-4, N-H-G).
|
|
11
|
+
export const BUG_PHASES = [
|
|
12
|
+
// FORGE-BUG-040: each phase points at its own phase-scoped subagent workflow.
|
|
13
|
+
// Previously triage/plan-fix/implement all pointed at fix_bug.md (the
|
|
14
|
+
// orchestrator-only body), which caused the triage subagent to execute
|
|
15
|
+
// the full lifecycle in a single invocation. plan-fix and implement reuse
|
|
16
|
+
// plan_task.md / implement_plan.md (bug-mode) per meta-fix-bug.md
|
|
17
|
+
// § Pipeline Phases — the bug-mode entity-kind detection is built into
|
|
18
|
+
// those workflows already.
|
|
19
|
+
{ role: "triage", workflowFile: "triage", personaNoun: "bug-fixer", isReview: false, maxIterations: 1 },
|
|
20
|
+
{ role: "plan-fix", workflowFile: "plan_task", personaNoun: "engineer", isReview: false, maxIterations: 1 },
|
|
21
|
+
{ role: "review-plan", workflowFile: "review_plan", personaNoun: "supervisor", isReview: true, maxIterations: 3 },
|
|
22
|
+
{ role: "implement", workflowFile: "implement_plan", personaNoun: "engineer", isReview: false, maxIterations: 1 },
|
|
23
|
+
{ role: "review-code", workflowFile: "review_code", personaNoun: "supervisor", isReview: true, maxIterations: 3 },
|
|
24
|
+
{ role: "approve", workflowFile: "architect_approve", personaNoun: "architect", isReview: true, maxIterations: 3 },
|
|
25
|
+
{ role: "commit", workflowFile: "commit_task", personaNoun: "engineer", isReview: false, maxIterations: 1 },
|
|
26
|
+
];
|
|
27
|
+
// ── Bug-event type tokens ──────────────────────────────────────────────────
|
|
28
|
+
// Explicit mapping per review finding #3. Non-review phases always emit the
|
|
29
|
+
// pass token. Review phases select pass or fail based on ec.judgement.verdict.
|
|
30
|
+
// The event-vocabulary contract test scans this literal block here.
|
|
31
|
+
export const BUG_TYPE_TOKENS = {
|
|
32
|
+
triage: { pass: "bug-triaged", fail: "bug-triaged" },
|
|
33
|
+
"plan-fix": { pass: "fix-planned", fail: "fix-planned" },
|
|
34
|
+
"review-plan": { pass: "fix-review-passed", fail: "fix-review-failed" },
|
|
35
|
+
implement: { pass: "fix-implemented", fail: "fix-implemented" },
|
|
36
|
+
"review-code": { pass: "fix-code-review-passed", fail: "fix-code-review-failed" },
|
|
37
|
+
approve: { pass: "fix-approved", fail: "fix-revision-requested" },
|
|
38
|
+
commit: { pass: "bug-committed", fail: "bug-commit-failed" },
|
|
39
|
+
};
|
|
40
|
+
// ── Bug FSM transitions ────────────────────────────────────────────────────
|
|
41
|
+
// Mirrors store-cli BUG_TRANSITIONS. Terminal: `fixed`.
|
|
42
|
+
// `approved` and `verified` enum values were dropped in forge v0.44.0
|
|
43
|
+
// (FORGE-BUG-002 trap). The canonical source is store-cli.cjs.
|
|
44
|
+
export const BUG_TERMINAL_STATES = new Set(["fixed"]);
|
|
45
|
+
// Post-triage status transitions the ORCHESTRATOR owns (meta-fix-bug.md
|
|
46
|
+
// step 2: "On return, orchestrator transitions status: triaged then
|
|
47
|
+
// in-progress" — a required two-step state-machine contract; the FSM
|
|
48
|
+
// forbids the one-step reported → in-progress jump). First live firing of
|
|
49
|
+
// commit-task.cjs exposed this as unimplemented: bugs reached the commit
|
|
50
|
+
// phase still 'reported' and the terminal-status guard fired every run.
|
|
51
|
+
// Returns the ordered list of statuses to write from the given status —
|
|
52
|
+
// idempotent on resume (already in-progress / terminal → no-op).
|
|
53
|
+
export function postTriageTransitions(status) {
|
|
54
|
+
if (status === "reported")
|
|
55
|
+
return ["triaged", "in-progress"];
|
|
56
|
+
if (status === "triaged")
|
|
57
|
+
return ["in-progress"];
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=bug-phases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bug-phases.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/bug-phases.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAI7E,+EAA+E;AAC/E,EAAE;AACF,6EAA6E;AAC7E,wEAAwE;AACxE,mDAAmD;AAEnD,uEAAuE;AACvE,uEAAuE;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAsB;IAC5C,8EAA8E;IAC9E,sEAAsE;IACtE,uEAAuE;IACvE,0EAA0E;IAC1E,kEAAkE;IAClE,uEAAuE;IACvE,2BAA2B;IAC3B,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE;IACvG,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE;IAC3G,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;IACjH,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE;IACjH,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;IACjH,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;IAClH,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE;CAC3G,CAAC;AAEF,8EAA8E;AAC9E,4EAA4E;AAC5E,+EAA+E;AAC/E,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAmD;IAC9E,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE;IACpD,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE;IACxD,aAAa,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACvE,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC/D,aAAa,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,wBAAwB,EAAE;IACjF,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,wBAAwB,EAAE;IACjE,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE;CAC5D,CAAC;AAEF,8EAA8E;AAC9E,wDAAwD;AACxD,sEAAsE;AACtE,+DAA+D;AAE/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAEtD,wEAAwE;AACxE,oEAAoE;AACpE,qEAAqE;AACrE,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,wEAAwE;AACxE,iEAAiE;AACjE,MAAM,UAAU,qBAAqB,CAAC,MAA0B;IAC/D,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface RunBugState {
|
|
2
|
+
bugId: string;
|
|
3
|
+
phaseIndex: number;
|
|
4
|
+
iterationCounts: Record<string, number>;
|
|
5
|
+
halted: boolean;
|
|
6
|
+
/** Set on cancellation so the resume prompt says "cancelled" vs "halted". */
|
|
7
|
+
status?: "cancelled" | "halted" | "running";
|
|
8
|
+
lastError?: string;
|
|
9
|
+
savedAt: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function readBugState(cwd: string, bugId: string, sessionId?: string): RunBugState | null;
|
|
12
|
+
export declare function writeBugState(cwd: string, state: RunBugState): void;
|
|
13
|
+
export declare function deleteBugState(cwd: string, bugId: string): void;
|
|
14
|
+
export declare function isBugStateStale(state: RunBugState): boolean;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// bug-state.ts — bug-pipeline state persistence (RunBugState + the cache-file
|
|
2
|
+
// read/write/delete/stale helpers). Extracted VERBATIM from fix-bug.ts
|
|
3
|
+
// (FORGE-S31 file-size refactor); no logic changes.
|
|
4
|
+
import * as fs from "node:fs";
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
import { validateId } from "../common/orchestrator-misc.js";
|
|
7
|
+
function bugStateFilePath(cwd, bugId, sessionId) {
|
|
8
|
+
if (!validateId(bugId)) {
|
|
9
|
+
throw new Error(`Invalid bugId for state file path: ${bugId}`);
|
|
10
|
+
}
|
|
11
|
+
const suffix = sessionId ?? process.env.FORGE_SESSION_ID ?? `${process.pid}`;
|
|
12
|
+
return path.join(cwd, ".forge", "cache", `fix-bug-state-${bugId}-${suffix}.json`);
|
|
13
|
+
}
|
|
14
|
+
export function readBugState(cwd, bugId, sessionId) {
|
|
15
|
+
// If a specific session ID is given, read that file directly.
|
|
16
|
+
if (sessionId || process.env.FORGE_SESSION_ID) {
|
|
17
|
+
const fp = bugStateFilePath(cwd, bugId, sessionId);
|
|
18
|
+
try {
|
|
19
|
+
if (!fs.existsSync(fp))
|
|
20
|
+
return null;
|
|
21
|
+
const raw = fs.readFileSync(fp, "utf8");
|
|
22
|
+
return JSON.parse(raw);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// No specific session — glob for the most recent matching state file.
|
|
29
|
+
// Single-writer assumption: normally only one session per bug.
|
|
30
|
+
const cacheDir = path.join(cwd, ".forge", "cache");
|
|
31
|
+
const prefix = `fix-bug-state-${bugId}-`;
|
|
32
|
+
let bestFile = null;
|
|
33
|
+
let bestMtime = 0;
|
|
34
|
+
try {
|
|
35
|
+
const entries = fs.readdirSync(cacheDir);
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
if (!entry.startsWith(prefix) || !entry.endsWith(".json"))
|
|
38
|
+
continue;
|
|
39
|
+
const fp = path.join(cacheDir, entry);
|
|
40
|
+
try {
|
|
41
|
+
const st = fs.statSync(fp);
|
|
42
|
+
if (st.mtimeMs > bestMtime) {
|
|
43
|
+
bestMtime = st.mtimeMs;
|
|
44
|
+
bestFile = fp;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch { }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
if (!bestFile)
|
|
54
|
+
return null;
|
|
55
|
+
try {
|
|
56
|
+
const raw = fs.readFileSync(bestFile, "utf8");
|
|
57
|
+
return JSON.parse(raw);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function writeBugState(cwd, state) {
|
|
64
|
+
// Guard: never write state for PENDING bugIds — wait for real bugId capture.
|
|
65
|
+
if (state.bugId.startsWith("PENDING-"))
|
|
66
|
+
return;
|
|
67
|
+
const fp = bugStateFilePath(cwd, state.bugId);
|
|
68
|
+
const dir = path.dirname(fp);
|
|
69
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
70
|
+
fs.writeFileSync(fp, JSON.stringify(state, null, 2), "utf8");
|
|
71
|
+
}
|
|
72
|
+
export function deleteBugState(cwd, bugId) {
|
|
73
|
+
// Clean up all state files for this bug (all sessions)
|
|
74
|
+
const cacheDir = path.join(cwd, ".forge", "cache");
|
|
75
|
+
const statePrefix = `fix-bug-state-${bugId}-`;
|
|
76
|
+
const debugPrefix = `fix-bug-debug-${bugId}`;
|
|
77
|
+
try {
|
|
78
|
+
const entries = fs.readdirSync(cacheDir);
|
|
79
|
+
for (const entry of entries) {
|
|
80
|
+
if ((entry.startsWith(statePrefix) && entry.endsWith(".json")) || entry.startsWith(debugPrefix)) {
|
|
81
|
+
try {
|
|
82
|
+
fs.unlinkSync(path.join(cacheDir, entry));
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
/* non-fatal */
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// non-fatal
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export function isBugStateStale(state) {
|
|
95
|
+
const savedAt = new Date(state.savedAt).getTime();
|
|
96
|
+
const ageMs = Date.now() - savedAt;
|
|
97
|
+
const sevenDaysMs = 7 * 24 * 60 * 60 * 1000;
|
|
98
|
+
return ageMs > sevenDaysMs;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=bug-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bug-state.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/bug-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import type { PhaseDescriptor } from "../run-task.js";
|
|
3
|
+
import type { BugRecord } from "./bug-id.js";
|
|
4
|
+
import type { RunBugPipelineResult } from "./run-bug-types.js";
|
|
5
|
+
export interface MaybeSkipParams {
|
|
6
|
+
phase: PhaseDescriptor;
|
|
7
|
+
bugId: string;
|
|
8
|
+
cwd: string;
|
|
9
|
+
ctx: ExtensionCommandContext;
|
|
10
|
+
storeCli: string;
|
|
11
|
+
/** Bug record read at the top of §6a (same read the caller already did). */
|
|
12
|
+
bugNow: BugRecord | null;
|
|
13
|
+
summaryKeyByRole: Record<string, string | null>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* §6a — decide whether the current phase should be skipped because the bug is
|
|
17
|
+
* already in a done state. When skipping, writes a synthetic summary so
|
|
18
|
+
* downstream `after <phase>` verdict checks succeed. Returns true when the
|
|
19
|
+
* caller should `currentPhaseIndex++; continue;`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function maybeSkipPhase(p: MaybeSkipParams): boolean;
|
|
22
|
+
export interface CaptureTriageBugIdParams {
|
|
23
|
+
bugId: string;
|
|
24
|
+
cwd: string;
|
|
25
|
+
ctx: ExtensionCommandContext;
|
|
26
|
+
storeCli: string;
|
|
27
|
+
currentPhaseIndex: number;
|
|
28
|
+
iterationCounts: Record<string, number>;
|
|
29
|
+
debugLogDisabled: boolean;
|
|
30
|
+
toolExecutionEvents: Array<{
|
|
31
|
+
toolName?: string;
|
|
32
|
+
result?: unknown;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
export type CaptureTriageBugIdOutcome = {
|
|
36
|
+
kind: "return";
|
|
37
|
+
result: RunBugPipelineResult;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "ok";
|
|
40
|
+
bugId: string;
|
|
41
|
+
debugLogPath: string | null;
|
|
42
|
+
writeDebug: (rec: Record<string, unknown>) => void;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Post-triage bugId capture: for new bugs the triage subagent creates the bug
|
|
46
|
+
* record via store-cli; capture the real id by scanning tool_execution_end
|
|
47
|
+
* events, with a list-and-filter fallback. On success re-initializes the debug
|
|
48
|
+
* log under the real id and returns the updated locals. Preserves the PENDING-
|
|
49
|
+
* nuance: the orchestrator transcript writer keeps the PENDING entityId — this
|
|
50
|
+
* only updates the loop's local bugId.
|
|
51
|
+
*/
|
|
52
|
+
export declare function captureTriageBugId(p: CaptureTriageBugIdParams, writeDebug: (rec: Record<string, unknown>) => void, debugLogPath: string | null): CaptureTriageBugIdOutcome;
|
|
53
|
+
export interface RouteAfterTriageParams {
|
|
54
|
+
bugId: string;
|
|
55
|
+
cwd: string;
|
|
56
|
+
ctx: ExtensionCommandContext;
|
|
57
|
+
storeCli: string;
|
|
58
|
+
currentPhaseIndex: number;
|
|
59
|
+
}
|
|
60
|
+
export type RouteAfterTriageOutcome = {
|
|
61
|
+
kind: "jump";
|
|
62
|
+
toIndex: number;
|
|
63
|
+
} | {
|
|
64
|
+
kind: "advance";
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* §6c — orchestrator-owned post-triage status transitions, then the Path A/B
|
|
68
|
+
* branch read from bug.summaries.triage.route. Path A skips plan-fix +
|
|
69
|
+
* review-plan (jumps to implement); Path B / missing / any other value advances
|
|
70
|
+
* normally.
|
|
71
|
+
*/
|
|
72
|
+
export declare function routeAfterTriage(p: RouteAfterTriageParams): RouteAfterTriageOutcome;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
// bug-triage-routing.ts — bug-specific control flow extracted VERBATIM from
|
|
2
|
+
// fix-bug.ts's phase loop (FORGE-S31 file-size refactor). Two self-contained
|
|
3
|
+
// blocks, each a pure-ish helper the pipeline switches on:
|
|
4
|
+
//
|
|
5
|
+
// 1. maybeSkipPhase — the state-aware phase-skip heuristic (§6a): skip a
|
|
6
|
+
// non-review phase whose output is already reflected in the bug status,
|
|
7
|
+
// writing a synthetic summary so downstream predecessor-verdict checks pass.
|
|
8
|
+
// 2. captureTriageBugId — post-triage bugId capture (§ bugId capture): read the
|
|
9
|
+
// real FORGE-BUG-NNN from triage events, fall back to a list-and-filter,
|
|
10
|
+
// then re-initialize the debug log under the real id. Preserves the
|
|
11
|
+
// PENDING- nuance exactly — the transcript writer keeps the PENDING entityId.
|
|
12
|
+
// 3. routeAfterTriage — the orchestrator-owned post-triage status transitions
|
|
13
|
+
// (§6c) followed by the Path A/B branch read from bug.summaries.triage.route.
|
|
14
|
+
// The source-introspection contract test scans the `postTriageTransitions`
|
|
15
|
+
// wiring here.
|
|
16
|
+
//
|
|
17
|
+
// No logic changes; the inline `continue` / `return` paths are surfaced as small
|
|
18
|
+
// discriminated results.
|
|
19
|
+
import { spawnSync } from "node:child_process";
|
|
20
|
+
import * as fs from "node:fs";
|
|
21
|
+
import * as path from "node:path";
|
|
22
|
+
import { loadGovernorProjectConfig } from "../../governor-config.js";
|
|
23
|
+
import { BUG_PHASES, postTriageTransitions } from "./bug-phases.js";
|
|
24
|
+
import { extractBugIdFromEvents, readBugRecord } from "./bug-id.js";
|
|
25
|
+
// ── 6a. Phase skip (state-aware, defense-in-depth) ─────────────
|
|
26
|
+
// Belt-and-suspenders alongside the explicit summaries.triage.route
|
|
27
|
+
// branch (handled in routeAfterTriage below). Some subagents in some
|
|
28
|
+
// runtimes still go end-to-end during triage instead of just triaging
|
|
29
|
+
// — rather than roll back the work they did, skip non-review phases
|
|
30
|
+
// whose output is already reflected in the bug status. Review phases
|
|
31
|
+
// are never skipped — they are quality gates that must always run.
|
|
32
|
+
//
|
|
33
|
+
// Post-v0.44.0: terminal status is `fixed` only. `approved` and
|
|
34
|
+
// `verified` are no longer valid bug status values; references removed.
|
|
35
|
+
const PHASE_SKIP_STATES = {
|
|
36
|
+
"plan-fix": new Set(["fixed"]),
|
|
37
|
+
implement: new Set(["fixed"]),
|
|
38
|
+
commit: new Set(["fixed"]), // commit writes the terminal status; skip if already there
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* §6a — decide whether the current phase should be skipped because the bug is
|
|
42
|
+
* already in a done state. When skipping, writes a synthetic summary so
|
|
43
|
+
* downstream `after <phase>` verdict checks succeed. Returns true when the
|
|
44
|
+
* caller should `currentPhaseIndex++; continue;`.
|
|
45
|
+
*/
|
|
46
|
+
export function maybeSkipPhase(p) {
|
|
47
|
+
const { phase, bugId, cwd, ctx, storeCli, bugNow, summaryKeyByRole } = p;
|
|
48
|
+
const skipStates = PHASE_SKIP_STATES[phase.role];
|
|
49
|
+
if (!(skipStates && bugNow?.status && skipStates.has(bugNow.status) && !phase.isReview)) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
ctx.ui.notify(`⊘ forge:fix-bug — skipping ${phase.role}: bug ${bugId} is already '${bugNow.status}' (work already done).`, "info");
|
|
53
|
+
// Write a synthetic "approved" summary so downstream `after` predecessor
|
|
54
|
+
// verdict checks find a verdict and don't block review phases.
|
|
55
|
+
const summaryKey = summaryKeyByRole[phase.role];
|
|
56
|
+
if (summaryKey) {
|
|
57
|
+
const synthSummary = {
|
|
58
|
+
objective: `Phase ${phase.role} skipped — bug already ${bugNow.status}`,
|
|
59
|
+
findings: ["Subagent completed fix during triage (Path A); phase output implicitly satisfied."],
|
|
60
|
+
// Non-review phases should have verdict "n/a" — the phase
|
|
61
|
+
// didn't produce a gate verdict. This matches the `after
|
|
62
|
+
// <phase> = n/a` preflight gate contract. Review phases
|
|
63
|
+
// use "approved" since they are gate phases.
|
|
64
|
+
verdict: phase.isReview ? "approved" : "n/a",
|
|
65
|
+
written_at: new Date().toISOString(),
|
|
66
|
+
};
|
|
67
|
+
const synthFile = path.join(cwd, ".forge", "cache", `synthetic-summary-${bugId}-${summaryKey}.json`);
|
|
68
|
+
fs.writeFileSync(synthFile, JSON.stringify(synthSummary, null, 2), "utf8");
|
|
69
|
+
const synthResult = spawnSync("node", [storeCli, "set-bug-summary", bugId, summaryKey, synthFile], {
|
|
70
|
+
cwd,
|
|
71
|
+
encoding: "utf8",
|
|
72
|
+
});
|
|
73
|
+
if (synthResult.status !== 0) {
|
|
74
|
+
ctx.ui.notify(`⚠ forge:fix-bug — synthetic summary write failed for ${phase.role}: ${String(synthResult.stderr).trim()}`, "warning");
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
fs.unlinkSync(synthFile);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
/* non-fatal */
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Post-triage bugId capture: for new bugs the triage subagent creates the bug
|
|
87
|
+
* record via store-cli; capture the real id by scanning tool_execution_end
|
|
88
|
+
* events, with a list-and-filter fallback. On success re-initializes the debug
|
|
89
|
+
* log under the real id and returns the updated locals. Preserves the PENDING-
|
|
90
|
+
* nuance: the orchestrator transcript writer keeps the PENDING entityId — this
|
|
91
|
+
* only updates the loop's local bugId.
|
|
92
|
+
*/
|
|
93
|
+
export function captureTriageBugId(p, writeDebug, debugLogPath) {
|
|
94
|
+
const { cwd, ctx, storeCli, currentPhaseIndex, iterationCounts, debugLogDisabled, toolExecutionEvents } = p;
|
|
95
|
+
let bugId = p.bugId;
|
|
96
|
+
const capturedBugId = extractBugIdFromEvents(toolExecutionEvents, loadGovernorProjectConfig(cwd).prefix);
|
|
97
|
+
if (capturedBugId) {
|
|
98
|
+
ctx.ui.notify(`forge:fix-bug — captured bug ID: ${capturedBugId}`, "info");
|
|
99
|
+
bugId = capturedBugId;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Fallback: list bugs and find the most recent one created after pipeline start.
|
|
103
|
+
const listResult = spawnSync("node", [storeCli, "list", "bug", "--json"], { cwd, encoding: "utf8" });
|
|
104
|
+
if (listResult.status === 0 && listResult.stdout) {
|
|
105
|
+
try {
|
|
106
|
+
const bugs = JSON.parse(listResult.stdout);
|
|
107
|
+
if (Array.isArray(bugs)) {
|
|
108
|
+
// Find most recent bug whose reportedAt is after the pipeline start
|
|
109
|
+
const pipelineStartIso = new Date(parseInt(bugId.replace("PENDING-", ""))).toISOString();
|
|
110
|
+
const recent = bugs
|
|
111
|
+
.filter((b) => b.reportedAt && b.reportedAt >= pipelineStartIso)
|
|
112
|
+
.sort((a, b) => String(b.reportedAt).localeCompare(String(a.reportedAt)))[0];
|
|
113
|
+
if (recent &&
|
|
114
|
+
recent.bugId &&
|
|
115
|
+
typeof recent.bugId === "string" &&
|
|
116
|
+
recent.bugId.startsWith("FORGE-BUG-")) {
|
|
117
|
+
bugId = recent.bugId;
|
|
118
|
+
ctx.ui.notify(`forge:fix-bug — captured bug ID via store fallback: ${bugId}`, "info");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
/* parse failure — fall through to assertion */
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Defensive guard: if bugId is still PENDING after triage, pipeline cannot proceed.
|
|
128
|
+
if (bugId.startsWith("PENDING-")) {
|
|
129
|
+
ctx.ui.notify("× forge:fix-bug — failed to capture real bug ID after triage. Cannot proceed with PENDING placeholder.", "error");
|
|
130
|
+
return {
|
|
131
|
+
kind: "return",
|
|
132
|
+
result: {
|
|
133
|
+
status: "failed",
|
|
134
|
+
lastPhaseIndex: currentPhaseIndex,
|
|
135
|
+
iterationCounts,
|
|
136
|
+
lastError: "bugId still PENDING after triage",
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// Re-initialize debug log now that real bugId is available.
|
|
141
|
+
if (!debugLogDisabled) {
|
|
142
|
+
debugLogPath = path.join(cwd, ".forge", "cache", `fix-bug-debug-${bugId}.jsonl`);
|
|
143
|
+
const capturedPath = debugLogPath;
|
|
144
|
+
writeDebug = (rec) => {
|
|
145
|
+
try {
|
|
146
|
+
fs.mkdirSync(path.dirname(capturedPath), { recursive: true });
|
|
147
|
+
try {
|
|
148
|
+
const st = fs.statSync(capturedPath);
|
|
149
|
+
if (st.size > 10 * 1024 * 1024) {
|
|
150
|
+
const all = fs.readFileSync(capturedPath, "utf8");
|
|
151
|
+
const lines = all.split("\n");
|
|
152
|
+
const keep = Math.floor(lines.length * 0.8);
|
|
153
|
+
fs.writeFileSync(capturedPath, lines.slice(-keep).join("\n"), "utf8");
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
/* file may not exist yet */
|
|
158
|
+
}
|
|
159
|
+
fs.appendFileSync(capturedPath, `${JSON.stringify({ ts: new Date().toISOString(), phase: "triage", ...rec })}\n`, "utf8");
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// non-fatal
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
writeDebug({ kind: "bugid_captured", bugId });
|
|
166
|
+
}
|
|
167
|
+
return { kind: "ok", bugId, debugLogPath, writeDebug };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* §6c — orchestrator-owned post-triage status transitions, then the Path A/B
|
|
171
|
+
* branch read from bug.summaries.triage.route. Path A skips plan-fix +
|
|
172
|
+
* review-plan (jumps to implement); Path B / missing / any other value advances
|
|
173
|
+
* normally.
|
|
174
|
+
*/
|
|
175
|
+
export function routeAfterTriage(p) {
|
|
176
|
+
const { bugId, cwd, ctx, storeCli, currentPhaseIndex } = p;
|
|
177
|
+
const bugAfterTriage = readBugRecord(bugId, storeCli, cwd);
|
|
178
|
+
// Orchestrator-owned post-triage transitions (meta-fix-bug.md
|
|
179
|
+
// step 2). Two sequential writes through store-cli (the FSM
|
|
180
|
+
// authority); failure warns but does not halt — the commit
|
|
181
|
+
// phase's status guard is the backstop.
|
|
182
|
+
for (const target of postTriageTransitions(bugAfterTriage?.status)) {
|
|
183
|
+
const upd = spawnSync("node", [storeCli, "update-status", "bug", bugId, "status", target], {
|
|
184
|
+
cwd,
|
|
185
|
+
encoding: "utf8",
|
|
186
|
+
});
|
|
187
|
+
if (upd.status !== 0) {
|
|
188
|
+
ctx.ui.notify(`⚠ forge:fix-bug — post-triage transition to '${target}' failed: ${(upd.stderr ?? "").toString().trim()}`, "warning");
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const triageSummary = bugAfterTriage?.summaries?.triage;
|
|
193
|
+
const route = triageSummary?.route;
|
|
194
|
+
if (route === "A") {
|
|
195
|
+
const skipUntilIndex = BUG_PHASES.findIndex((ph) => ph.role === "implement");
|
|
196
|
+
if (skipUntilIndex > currentPhaseIndex + 1) {
|
|
197
|
+
ctx.ui.notify(`⊘ forge:fix-bug — Path A selected by triage; skipping plan-fix and review-plan.`, "info");
|
|
198
|
+
return { kind: "jump", toIndex: skipUntilIndex };
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// route === "B", missing, or any other value → fall through to standard advance
|
|
202
|
+
return { kind: "advance" };
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=bug-triage-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bug-triage-routing.js","sourceRoot":"","sources":["../../../../../src/extensions/forgecli/orchestrators/bug/bug-triage-routing.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,2DAA2D;AAC3D,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,kFAAkF;AAClF,kFAAkF;AAClF,8EAA8E;AAC9E,yEAAyE;AACzE,mFAAmF;AACnF,gFAAgF;AAChF,mFAAmF;AACnF,gFAAgF;AAChF,oBAAoB;AACpB,EAAE;AACF,iFAAiF;AACjF,yBAAyB;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIpE,kEAAkE;AAClE,oEAAoE;AACpE,qEAAqE;AACrE,sEAAsE;AACtE,oEAAoE;AACpE,qEAAqE;AACrE,mEAAmE;AACnE,EAAE;AACF,gEAAgE;AAChE,wEAAwE;AACxE,MAAM,iBAAiB,GAAgC;IACtD,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,2DAA2D;CACvF,CAAC;AAaF;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,CAAkB;IAChD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,8BAA8B,KAAK,CAAC,IAAI,SAAS,KAAK,gBAAgB,MAAM,CAAC,MAAM,wBAAwB,EAC3G,MAAM,CACN,CAAC;IACF,yEAAyE;IACzE,+DAA+D;IAC/D,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,UAAU,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG;YACpB,SAAS,EAAE,SAAS,KAAK,CAAC,IAAI,0BAA0B,MAAM,CAAC,MAAM,EAAE;YACvE,QAAQ,EAAE,CAAC,mFAAmF,CAAC;YAC/F,0DAA0D;YAC1D,yDAAyD;YACzD,wDAAwD;YACxD,6CAA6C;YAC7C,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;YAC5C,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;QACrG,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE;YAClG,GAAG;YACH,QAAQ,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,wDAAwD,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAC1G,SAAS,CACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACJ,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACR,eAAe;QAChB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAwBD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CACjC,CAA2B,EAC3B,UAAkD,EAClD,YAA2B;IAE3B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAC5G,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAEpB,MAAM,aAAa,GAAG,sBAAsB,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACzG,IAAI,aAAa,EAAE,CAAC;QACnB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;QAC3E,KAAK,GAAG,aAAa,CAAC;IACvB,CAAC;SAAM,CAAC;QACP,iFAAiF;QACjF,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACrG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YAClD,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,oEAAoE;oBACpE,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBACzF,MAAM,MAAM,GAAG,IAAI;yBACjB,MAAM,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,gBAAgB,CAAC;yBACxF,IAAI,CAAC,CAAC,CAA0B,EAAE,CAA0B,EAAE,EAAE,CAChE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CACxD,CAAC,CAAC,CAAC,CAAC;oBACN,IACC,MAAM;wBACN,MAAM,CAAC,KAAK;wBACZ,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;wBAChC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EACpC,CAAC;wBACF,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBACrB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uDAAuD,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;oBACvF,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,+CAA+C;YAChD,CAAC;QACF,CAAC;IACF,CAAC;IAED,oFAAoF;IACpF,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,wGAAwG,EACxG,OAAO,CACP,CAAC;QACF,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,cAAc,EAAE,iBAAiB;gBACjC,eAAe;gBACf,SAAS,EAAE,kCAAkC;aAC7C;SACD,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC;QACjF,MAAM,YAAY,GAAG,YAAY,CAAC;QAClC,UAAU,GAAG,CAAC,GAA4B,EAAE,EAAE;YAC7C,IAAI,CAAC;gBACJ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC;oBACJ,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBACrC,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;wBAChC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;wBAClD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;wBAC5C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;oBACvE,CAAC;gBACF,CAAC;gBAAC,MAAM,CAAC;oBACR,4BAA4B;gBAC7B,CAAC;gBACD,EAAE,CAAC,cAAc,CAChB,YAAY,EACZ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,EAChF,MAAM,CACN,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACR,YAAY;YACb,CAAC;QACF,CAAC,CAAC;QACF,UAAU,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACxD,CAAC;AAcD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAyB;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE3D,8DAA8D;IAC9D,4DAA4D;IAC5D,2DAA2D;IAC3D,wCAAwC;IACxC,KAAK,MAAM,MAAM,IAAI,qBAAqB,CAAC,cAAc,EAAE,MAA4B,CAAC,EAAE,CAAC;QAC1F,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC1F,GAAG;YACH,QAAQ,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,gDAAgD,MAAM,aAAa,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,EACzG,SAAS,CACT,CAAC;YACF,MAAM;QACP,CAAC;IACF,CAAC;IAED,MAAM,aAAa,GAAG,cAAc,EAAE,SAAS,EAAE,MAAyC,CAAC;IAC3F,MAAM,KAAK,GAAG,aAAa,EAAE,KAAK,CAAC;IACnC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QACnB,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAC7E,IAAI,cAAc,GAAG,iBAAiB,GAAG,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iFAAiF,EAAE,MAAM,CAAC,CAAC;YACzG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAClD,CAAC;IACF,CAAC;IACD,gFAAgF;IAChF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import type { MergedConfig } from "../../config/config-layer.js";
|
|
3
|
+
import type { OrchestratorTranscriptWriter } from "../../subagent/orchestrator-transcript.js";
|
|
4
|
+
import { type PhaseDescriptor } from "../run-task.js";
|
|
5
|
+
import type { RunBugPipelineResult } from "./run-bug-types.js";
|
|
6
|
+
export type BugVerdictLoopOutcome = {
|
|
7
|
+
kind: "advance";
|
|
8
|
+
} | {
|
|
9
|
+
kind: "loopback";
|
|
10
|
+
toIndex: number;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "return";
|
|
13
|
+
result: RunBugPipelineResult;
|
|
14
|
+
};
|
|
15
|
+
export interface BugVerdictLoopParams {
|
|
16
|
+
phase: PhaseDescriptor;
|
|
17
|
+
bugId: string;
|
|
18
|
+
storeCli: string;
|
|
19
|
+
cwd: string;
|
|
20
|
+
forgeRoot: string;
|
|
21
|
+
iterationCounts: Record<string, number>;
|
|
22
|
+
currentPhaseIndex: number;
|
|
23
|
+
modelRoutingConfig: MergedConfig;
|
|
24
|
+
ctx: ExtensionCommandContext;
|
|
25
|
+
orchTranscript: OrchestratorTranscriptWriter;
|
|
26
|
+
/** Per-role phase-summary key map (BUG_SUMMARY_KEY_BY_ROLE). */
|
|
27
|
+
summaryKeyByRole: Record<string, string | null>;
|
|
28
|
+
/** Closure that finalizes this dispatch's OrchestratorTree node. */
|
|
29
|
+
finishPhaseNode: (status: "completed" | "failed" | "escalated") => void;
|
|
30
|
+
/** Per-phase completion-recovery guard (forge-engineering#41) — roles that
|
|
31
|
+
* already consumed their one set-bug-summary recovery attempt this run. */
|
|
32
|
+
recoveredPhases: Set<string>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Evaluate the review-phase verdict and decide the loop's next move.
|
|
36
|
+
* Mirrors the inline block that previously lived in runBugPipelineInner.
|
|
37
|
+
*/
|
|
38
|
+
export declare function handleBugReviewVerdict(p: BugVerdictLoopParams): BugVerdictLoopOutcome;
|