@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
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,264 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **`4ge uninstall claude [dir] [--purge] [--yes]`** — the counterpart to
|
|
13
|
+
`4ge init claude`. Deterministically reverses the bootstrap: removes the
|
|
14
|
+
vendored Forge scaffold (`.forge/{tools,schemas,init,.base-pack,meta,
|
|
15
|
+
.claude-plugin,cache}`, `.bootstrap-manifest.json`, `.claude/commands/forge`,
|
|
16
|
+
`.claude/workflows`, and the payload's agents/skills), un-merges the Forge
|
|
17
|
+
hooks from `.claude/settings.json`, and un-appends the Forge block from
|
|
18
|
+
`.gitignore`. Safety: **preserves user data by default** (`.forge/config.json`,
|
|
19
|
+
`.forge/store/**`, the KB folder); `--purge` also removes config + store (KB
|
|
20
|
+
is never auto-removed). Refuses to act without a `.bootstrap-manifest.json`
|
|
21
|
+
(proof the project was forge-bootstrapped), edits `settings.json`/`.gitignore`
|
|
22
|
+
rather than deleting them, preserves user-authored agents/skills not in the
|
|
23
|
+
payload, and is idempotent. A `[y/N]` confirm guards it unless `--yes`/`-y` or
|
|
24
|
+
`FORGE_NON_INTERACTIVE=1`.
|
|
25
|
+
|
|
26
|
+
## [1.0.36] — 2026-06-09
|
|
27
|
+
|
|
28
|
+
Orchestrator dashboard logs + autonomous run-sprint + KB-refresh, re-landed onto
|
|
29
|
+
the modular-orchestrator decomposition.
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- **Orchestrator decision logs on the dashboard.** The shared
|
|
34
|
+
`withOrchestratorTranscript` notify-interception now mirrors every
|
|
35
|
+
orchestrator notify onto its root node (`tree.appendTail(entityId, …)`), and
|
|
36
|
+
the dashboard renders the Activity log for ALL node kinds (not just leaf). The
|
|
37
|
+
task/sprint/bug root node now carries the orchestrator's own narrative — gate
|
|
38
|
+
results, review verdicts, escalations, halts — alongside the per-phase leaf
|
|
39
|
+
nodes' subagent tool-call activity. New granular per-phase lines: `〇 preflight
|
|
40
|
+
ok`, `dispatch persona/model`, resolved `verdict`, `〇 postflight ok`.
|
|
41
|
+
- **KB-link refresh is orchestrator-owned in run-task.** After the writeback
|
|
42
|
+
phase, the pipeline calls `runRefreshKbLinks(cwd)` directly (forge-cli
|
|
43
|
+
subagents run via the Pi runtime and have no Skill tool, so the prior
|
|
44
|
+
`forge:refresh-kb-links` Skill-tool instruction caused a multi-call probe
|
|
45
|
+
loop).
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- **`/forge:run-sprint` runs to completion.** Removed the per-task "Continue to
|
|
50
|
+
next task?" confirm and the partial-ceremony-on-decline branch. A sprint
|
|
51
|
+
command now runs all of its tasks, then the single clean-complete ceremony.
|
|
52
|
+
The mid-sprint modal previously turned any UI hiccup into a premature partial
|
|
53
|
+
ceremony (ceremony firing after task 1 with later tasks still draft).
|
|
54
|
+
Deliberate cancellation (abort signal / task halt) still stops the sprint.
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- Dispatch line printed `model=[object Object]` — `modelResolution.model` is a
|
|
59
|
+
`{provider, model}` object; now formatted as `provider:model`.
|
|
60
|
+
|
|
61
|
+
## [1.0.35] — 2026-06-07
|
|
62
|
+
|
|
63
|
+
Re-bundle forge-plugin 1.4.4 — CLI-first field-test gap fixes: paths.commands
|
|
64
|
+
no longer prefix-derived (always `.claude/commands/forge`), explicit
|
|
65
|
+
`paths.forgeRoot=".forge"` write, dev-only tools excluded from the
|
|
66
|
+
structure manifest (instance expectation 49/49, no false /forge:health gaps).
|
|
67
|
+
|
|
68
|
+
## [1.0.34] — 2026-06-07
|
|
69
|
+
|
|
70
|
+
No-dead-vendored-references gate (closes the forge#112 failure class).
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
|
|
74
|
+
- **`tools/check-vendored-refs.cjs`** — scans every vendored text file
|
|
75
|
+
(commands, drivers, rulebooks, settings, agents, skills) for
|
|
76
|
+
`.forge/…` / `$FORGE_ROOT/…` path references and fails on any whose
|
|
77
|
+
target doesn't exist post-bootstrap. Wired in twice: vitest
|
|
78
|
+
(`vendored-refs.test.ts`, against the real payload) and `tmp-smoke.sh`
|
|
79
|
+
BOOTSTRAP-9.
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
|
|
83
|
+
- Two dead references the new gate caught immediately:
|
|
84
|
+
**`forge-preflight.cjs`** (referenced by the run-task driver +
|
|
85
|
+
meta-fix-bug/meta-orchestrate — /forge:run-task would have hit a dead tool
|
|
86
|
+
on first use) added to `TOOLS_TO_COPY`, and
|
|
87
|
+
**`init/workflow-gen-plan.json`** (referenced by rebuild.md) bundled.
|
|
88
|
+
|
|
89
|
+
## [1.0.33] — 2026-06-07
|
|
90
|
+
|
|
91
|
+
Re-bundle forge-plugin 1.4.3 — wfl-init.js Phase 2 verify invocations carry
|
|
92
|
+
the required `--kb-path` ([forge#112](https://github.com/Entelligentsia/forge/issues/112) follow-up).
|
|
93
|
+
|
|
94
|
+
## [1.0.32] — 2026-06-07
|
|
95
|
+
|
|
96
|
+
Re-bundle forge-plugin 1.4.2 — wfl-init.js Workflow-API rewrite
|
|
97
|
+
([forge#112](https://github.com/Entelligentsia/forge/issues/112): phase
|
|
98
|
+
callbacks silently discarded → init ran 0 agents but reported success;
|
|
99
|
+
parallel() thunks; agent(prompt, opts) arg order; missing schema opts).
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- **`build-payload` bundles the full `init/` rulebook tree** — `discovery/`
|
|
104
|
+
(5 prompts) and `generation/` (11 rulebooks) join `phases/`. Bundling only
|
|
105
|
+
`phases/` left wfl-init.js discovery/KB-doc subagents with dead rulebook
|
|
106
|
+
references in vendored projects.
|
|
107
|
+
|
|
108
|
+
## [1.0.31] — 2026-06-07
|
|
109
|
+
|
|
110
|
+
Re-bundle forge-plugin 1.4.1 — wfl-init.js Workflow-harness parse fix
|
|
111
|
+
(`export default` wrapper stripped; every `/forge:init` dispatch previously
|
|
112
|
+
failed at launch with "SyntaxError: Unexpected keyword 'export'").
|
|
113
|
+
Projects bootstrapped with the broken driver: re-run `4ge init claude .`
|
|
114
|
+
(idempotent repair overwrites `.claude/workflows/wfl-init.js`).
|
|
115
|
+
|
|
116
|
+
## [1.0.30] — 2026-06-07
|
|
117
|
+
|
|
118
|
+
Fixed `/forge:*` command namespace — full project vendoring (bundles forge-plugin 1.4.0).
|
|
119
|
+
|
|
120
|
+
### Changed
|
|
121
|
+
|
|
122
|
+
- **Bootstrap Step 4 — full `/forge:*` command surface vendored.** Replaces the
|
|
123
|
+
init.md-only install: the union of `.base-pack/commands/` (17 sprint-workflow
|
|
124
|
+
shims, now static `/forge:*` files) and `commands/` (utility commands) vendors
|
|
125
|
+
into `.claude/commands/forge/`. On name collision (`init.md`, `check-agent.md`,
|
|
126
|
+
`enhance.md`) the `.base-pack` version wins. Project-prefix namespaces
|
|
127
|
+
(`/acme:*`, `/hello:*`) are retired — wfl:init no longer generates them
|
|
128
|
+
(plugin 1.4.0 `getCommandsSubdir()` is fixed to `forge`).
|
|
129
|
+
|
|
130
|
+
- **Bootstrap Step 4c — Forge-root content vendored into `.forge/`.** `init/`
|
|
131
|
+
(wfl:init phase rulebooks), `.base-pack/` (Phase 3 materialization source —
|
|
132
|
+
substitute-placeholders probes it first), `meta/` (rebuild/migrate sources +
|
|
133
|
+
skill-recommendations), and `.claude-plugin/plugin.json` (version source).
|
|
134
|
+
The vendored `.forge/` now serves as a complete Forge root for the
|
|
135
|
+
`${CLAUDE_PLUGIN_ROOT:-$(pwd)/.forge}` fallback every command carries.
|
|
136
|
+
|
|
137
|
+
- **Bootstrap Step 4d — Claude Code assets vendored into `.claude/`.**
|
|
138
|
+
`agents/` (store-query-validator, tomoshibi) and `skills/` (4 skill dirs).
|
|
139
|
+
|
|
140
|
+
- **`forge.bundledVersion`** corrected to track the actually-bundled plugin
|
|
141
|
+
(1.4.0; had drifted at 1.2.21).
|
|
142
|
+
|
|
143
|
+
### Fixed
|
|
144
|
+
|
|
145
|
+
- **`composeUpdateKickoff` directive patch** handles both the plugin ≥ 1.4.0
|
|
146
|
+
`${CLAUDE_PLUGIN_ROOT:-$(pwd)/.forge}` form and the legacy
|
|
147
|
+
`${CLAUDE_PLUGIN_ROOT}` form when retargeting `update.md`.
|
|
148
|
+
|
|
149
|
+
## [1.0.29] — 2026-06-07
|
|
150
|
+
|
|
151
|
+
`4ge init claude` bootstrap repair, round 2 — hook runtime deps (PostToolUse MODULE_NOT_FOUND in 1.0.28).
|
|
152
|
+
|
|
153
|
+
### Fixed
|
|
154
|
+
|
|
155
|
+
- **`hooks/lib/` vendored (bootstrap Step 3b + build-payload 2e4).** Hook scripts
|
|
156
|
+
require `./lib/common.cjs` / `./lib/write-registry.js` at runtime; neither the
|
|
157
|
+
payload nor the bootstrap shipped `hooks/lib/`, so `validate-write`, `post-init`,
|
|
158
|
+
and `post-sprint` failed with MODULE_NOT_FOUND on every matching tool call
|
|
159
|
+
(fail-open, but noisy in the Claude Code UI).
|
|
160
|
+
|
|
161
|
+
- **`query-logger.cjs` added to `TOOLS_TO_COPY`.** The settings.json PostToolUse:Bash
|
|
162
|
+
hook points at `.forge/tools/query-logger.cjs`, but the tool was never bundled into
|
|
163
|
+
the payload — a hard exit-1 hook error on every Bash call in a bootstrapped project.
|
|
164
|
+
|
|
165
|
+
- **`tools/package.json` CJS scope marker vendored (FORGE-BUG-030 parity).** The
|
|
166
|
+
bootstrap copy filter (`*.cjs`/`*.js` only) dropped the `{"type":"commonjs"}`
|
|
167
|
+
marker build-payload writes into `tools/` — vendored `lib/*.js` would resolve as
|
|
168
|
+
ESM and crash in `"type":"module"` host projects.
|
|
169
|
+
|
|
170
|
+
## [1.0.28] — 2026-06-07
|
|
171
|
+
|
|
172
|
+
`4ge init claude` bootstrap repair — vendor hook scripts + schemas (first-field-test regressions in 1.0.27).
|
|
173
|
+
|
|
174
|
+
### Fixed
|
|
175
|
+
|
|
176
|
+
- **Bootstrap Step 3b — hook scripts vendored.** `bootstrapClaudeProject()` now copies
|
|
177
|
+
`payload/hooks/*.cjs` into `.forge/tools/hooks/` — the exact paths the Step 7 settings
|
|
178
|
+
wiring points at. In 1.0.27 the copy step was missing entirely, so every wired hook
|
|
179
|
+
(SessionStart, PreToolUse, PostToolUse, PermissionRequest) fired `node` against a
|
|
180
|
+
nonexistent file and failed with MODULE_NOT_FOUND on session start.
|
|
181
|
+
|
|
182
|
+
- **Bootstrap Step 3c — schemas vendored.** `payload/schemas/*.json` + `schemas/_defs/`
|
|
183
|
+
are now copied into `.forge/schemas/` (previously scaffolded empty), per the
|
|
184
|
+
cli-first-bootstrap ADR ("vendor tools → `.forge/tools/` + schemas").
|
|
185
|
+
|
|
186
|
+
- **`settings-merge.ts` — query-logger retarget.** `query-logger.cjs` is a tool, not a
|
|
187
|
+
hook script (plugin `hooks.json` points it at `tools/query-logger.cjs`); the settings
|
|
188
|
+
block now targets `$CLAUDE_PROJECT_DIR/.forge/tools/query-logger.cjs` instead of the
|
|
189
|
+
nonexistent `tools/hooks/query-logger.cjs`.
|
|
190
|
+
|
|
191
|
+
- Bootstrap manifest `steps` now records `vendor-hooks` and `vendor-schemas`.
|
|
192
|
+
|
|
193
|
+
## [1.0.27] — 2026-06-07
|
|
194
|
+
|
|
195
|
+
`4ge init claude` — settings hooks wiring, gitignore, preflight, hand-off UX (FORGE-S31-T03).
|
|
196
|
+
|
|
197
|
+
### Added
|
|
198
|
+
|
|
199
|
+
- **`settings-merge.ts`** — new `mergeForgeHooks()` + `buildForgeHooksBlock()` module with
|
|
200
|
+
merge-not-clobber semantics for wiring Forge hooks into project `.claude/settings.json`.
|
|
201
|
+
Handles 6 branches: absent file (create), empty object (add hooks key), existing without hooks
|
|
202
|
+
(merge in), unrelated hooks (merge Forge entries without overwriting), already-present (no-op),
|
|
203
|
+
malformed JSON (error, never overwrites). Fully idempotent: second run returns `"already-present"`.
|
|
204
|
+
|
|
205
|
+
- **Bootstrap Step 7** — `bootstrapClaudeProject()` now wires Forge hooks into project
|
|
206
|
+
`.claude/settings.json` via `mergeForgeHooks()`. All 8 hook entries (7 task-workflow hooks +
|
|
207
|
+
`forge-permissions`) are written with commands pointing at
|
|
208
|
+
`$CLAUDE_PROJECT_DIR/.forge/tools/hooks/<name>.cjs`. Outcome (`created`/`skipped`/`warnings`)
|
|
209
|
+
reported in `BootstrapResult` per existing conventions.
|
|
210
|
+
|
|
211
|
+
- **Bootstrap Step 8** — idempotent `.gitignore` append. Ported `updateGitignore()` from
|
|
212
|
+
`phase4-register.ts` as a pure standalone function (no `ctx.ui`). If `.gitignore` is present
|
|
213
|
+
and does not already contain a `.forge/store/events/` parent pattern, appends the standard
|
|
214
|
+
Forge gitignore block. Skips silently when absent or already covered.
|
|
215
|
+
|
|
216
|
+
- **Bootstrap Step 9** — preflight check for Claude Code availability (`runPreflight()`). Detects
|
|
217
|
+
`claude` binary reachability via `execFileSync("claude", ["--version"])`. Non-fatal: adds an
|
|
218
|
+
actionable warning to `result.warnings` if unavailable, but does not flip `result.ok`. Returns
|
|
219
|
+
`BootstrapPreflight { claudeAvailable, workflowToolChecked, warnings }` attached to `BootstrapResult`.
|
|
220
|
+
|
|
221
|
+
- **`BootstrapPreflight` type** — new sub-object on `BootstrapResult` with `claudeAvailable: boolean`,
|
|
222
|
+
`workflowToolChecked: boolean` (always `false` in T03 — no reliable offline check), and `warnings: string[]`.
|
|
223
|
+
Additive change — T02 tests remain green.
|
|
224
|
+
|
|
225
|
+
- **Hand-off UX** — `init.ts` now prints a structured multi-line message naming `/forge:init`,
|
|
226
|
+
explaining the one-time hooks-approval prompt, and listing all 7 task-workflow hooks by name
|
|
227
|
+
and event type. Prepends a warning line if Claude Code was not found on PATH.
|
|
228
|
+
|
|
229
|
+
- **Test suite** — 9-fixture `settings-merge.test.ts` covering all merge branches; 11 new assertions
|
|
230
|
+
in `bootstrap.test.ts` for Steps 7–9 and idempotency.
|
|
231
|
+
|
|
232
|
+
## [1.0.26] — 2026-06-07
|
|
233
|
+
|
|
234
|
+
CLI-first bootstrap: new `4ge init claude [dir]` bin subcommand (FORGE-S31-T02).
|
|
235
|
+
|
|
236
|
+
### Added
|
|
237
|
+
|
|
238
|
+
- **`forge init claude [dir]` subcommand** — new bin route that deterministically
|
|
239
|
+
bootstraps a Claude Code project from the bundled forge-payload in seconds.
|
|
240
|
+
Zero LLM tokens, zero network access, pure fs. Scaffolds `.forge/` skeleton
|
|
241
|
+
+ store dirs, vendors tools+lib into `.forge/tools/`, installs
|
|
242
|
+
`.claude/commands/forge/init.md` from payload, and installs all four
|
|
243
|
+
`.claude/workflows/wfl-*.js` drivers. Writes `.forge/.bootstrap-manifest.json`
|
|
244
|
+
with payload version and integrity hash. Idempotent repair: a second consecutive
|
|
245
|
+
run is a byte-identical no-op; partial bootstraps are repaired file-by-file.
|
|
246
|
+
`.forge/config.json` and `.forge/store/**` are never touched.
|
|
247
|
+
|
|
248
|
+
- **`src/extensions/forgecli/claude-bootstrap/bootstrap.ts`** — the pure-fs
|
|
249
|
+
bootstrap module (`bootstrapClaudeProject(opts)`) with clean/partial/complete
|
|
250
|
+
idempotency, fast-fail payload validation, and structured `BootstrapResult`
|
|
251
|
+
(created/skipped/warnings). Grep-negative: no fetch/network, no store writes,
|
|
252
|
+
no sendUserMessage, no ctx.ui.
|
|
253
|
+
|
|
254
|
+
- **Vitest tests** in
|
|
255
|
+
`test/extensions/forgecli/claude-bootstrap/bootstrap.test.ts` — 17 tests
|
|
256
|
+
covering clean / partial / complete (no-op) / non-writable / payload-validation
|
|
257
|
+
/ init.md install / wfl-drivers / grep-negative ACs branches. All integration-
|
|
258
|
+
style against the real function (no fs mocking).
|
|
259
|
+
|
|
260
|
+
- **argv.ts**: extended `ForgeAction` union with `"init"`; added `init claude [dir]`
|
|
261
|
+
parse branch before the fast-path subcommand block.
|
|
262
|
+
|
|
263
|
+
- **`src/bin/init.ts`** — `parseInitArgs()` + `runInit()` handler following the
|
|
264
|
+
`runDoctor` / `runUpdate` / `runConfig` structural convention.
|
|
265
|
+
|
|
266
|
+
- **forge.ts**: wired `forgeAction === "init"` dispatch branch; updated help text.
|
|
267
|
+
|
|
10
268
|
## [1.0.25] — 2026-06-06
|
|
11
269
|
|
|
12
270
|
Coordinated release matching forge plugin **v1.2.21**. Both changes come from
|
package/README.md
CHANGED
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
|
|
19
19
|
forge-cli generates a project-specific engineering knowledge base, sprint workflows, agent personas, and an SDLC pipeline — then drives them from your terminal on the [pi-coding-agent] runtime. Model-agnostic. No editor lock-in.
|
|
20
20
|
|
|
21
|
+
> **Two ways to run Forge.** Drive it headless in your terminal on the pi runtime (this README), **or** scaffold Forge into a Claude Code project with `4ge init claude .` and run the `/forge:*` slash commands inside Claude Code — remove it with `4ge uninstall claude`. The `4ge init` path is the supported way to add Forge to Claude Code and **replaces the deprecated marketplace plugin install** ([why](https://github.com/Entelligentsia/forge#distribution)).
|
|
22
|
+
|
|
21
23
|
## Why
|
|
22
24
|
|
|
23
25
|
- **Structured SDLC, in any terminal.** Plan → implement → review → validate → commit chains, gated by your own personas and audience rules.
|
|
@@ -5,6 +5,169 @@ Format: newest first. Breaking changes are marked **△ Breaking**.
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [1.4.5] — 2026-06-09
|
|
9
|
+
|
|
10
|
+
Collate-workflow KB-link refresh is orchestrator-owned under forge-cli. The
|
|
11
|
+
generated collate workflow no longer instructs the collator subagent to invoke
|
|
12
|
+
the `forge:refresh-kb-links` Skill tool — forge-cli subagents run via the Pi
|
|
13
|
+
runtime, which has no Skill tool, so the instruction triggered a multi-call
|
|
14
|
+
bash-probe loop before falling back. The Claude Code TUI standalone path still
|
|
15
|
+
uses the Skill tool; under forge-cli the run-task orchestrator owns the KB
|
|
16
|
+
refresh after the writeback phase. Prose-only change to `collator_agent.md`
|
|
17
|
+
(base-pack) and `meta-collate.md`.
|
|
18
|
+
|
|
19
|
+
**Regenerate:** workflows:collator_agent
|
|
20
|
+
|
|
21
|
+
> Manual: run `/forge:update` (or `/forge:rebuild`) to regenerate the collate workflow.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## [1.4.4] — 2026-06-07
|
|
26
|
+
|
|
27
|
+
First full CLI-first field test (git.git, ~500 source files) — `/forge:init`
|
|
28
|
+
passed all phases; gap analysis surfaced three config/manifest defects.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **`paths.commands` config drift** — `phase-1-collect.md` still carried a
|
|
33
|
+
prefix-derived instruction ("if prefix is `HELLO`, write
|
|
34
|
+
`.claude/commands/hello`") that survived the 1.4.0 namespace redesign; the
|
|
35
|
+
config-writer followed it and check-structure reported commands 0/14. The
|
|
36
|
+
path is ALWAYS `.claude/commands/forge`.
|
|
37
|
+
- **`paths.forgeRoot` written as an absolute npm-global payload path** — no
|
|
38
|
+
rulebook said what to write, so the register agent improvised. New explicit
|
|
39
|
+
`generate-tools.md` step: `paths.forgeRoot = ".forge"` (the vendored
|
|
40
|
+
`.forge/` IS the Forge root; absolute paths break on upgrades/nvm switches).
|
|
41
|
+
- **False "missing tools" gaps (49/59)** — `build-manifest.cjs` now excludes
|
|
42
|
+
the 10 plugin-development tools (`build-manifest`, `gen-integrity`,
|
|
43
|
+
`token-forensics`, …) from the `tools` namespace: the structure manifest
|
|
44
|
+
describes project instances, and dev tools are never vendored.
|
|
45
|
+
`structure-manifest.json` regenerated; instance expectation is now 49/49.
|
|
46
|
+
|
|
47
|
+
## [1.4.3] — 2026-06-07
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
|
|
51
|
+
- **`wfl-init.js` Phase 2 verify invocations matched the tool's real CLI**
|
|
52
|
+
([forge#112](https://github.com/Entelligentsia/forge/issues/112) follow-up).
|
|
53
|
+
Prompts said `verify-phase.cjs --phase 2` bare; the tool requires
|
|
54
|
+
`--phase 2 --kb-path <path>` and exits 2 without it. Both invocations now
|
|
55
|
+
pass `--kb-path "${kbFolder}"`. Contract gates added: every driver
|
|
56
|
+
verify-phase invocation must use a supported phase (1–3) and `--phase 2`
|
|
57
|
+
must carry `--kb-path`.
|
|
58
|
+
|
|
59
|
+
## [1.4.2] — 2026-06-07
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
|
|
63
|
+
- **`wfl-init.js` ran zero agents but reported fabricated success
|
|
64
|
+
([forge#112](https://github.com/Entelligentsia/forge/issues/112)).** Four
|
|
65
|
+
Workflow-API misuses: `phase(title, callback)` callbacks (containing every
|
|
66
|
+
phase body) were silently discarded by the harness; `parallel()` received
|
|
67
|
+
in-flight promises instead of thunks; `agent()` got the model tier as first
|
|
68
|
+
arg instead of `opts.model`; structured results lacked `opts.schema` so
|
|
69
|
+
`.ok` reads were undefined. `/forge:init` "completed" in ~3 ms with 0 agents
|
|
70
|
+
and hardcoded `ok: true`. Phase bodies now run inline, fan-outs use thunks,
|
|
71
|
+
every agent call is `agent(prompt, { model, label, phase, schema })`, and
|
|
72
|
+
the final report reflects real phase results (halts return `ok: false` with
|
|
73
|
+
the failure reason). Rulebook reads use vendored `.forge/init/...` paths
|
|
74
|
+
with a direct-analysis fallback for absent prompt files. Fix ported from
|
|
75
|
+
the field-validated patch authored against the live testbench run.
|
|
76
|
+
|
|
77
|
+
### Added
|
|
78
|
+
|
|
79
|
+
- **`wfl-drivers-parse.test.cjs` API-contract gates** — all drivers checked
|
|
80
|
+
for phase-callback misuse, promise-instead-of-thunk `parallel()` calls,
|
|
81
|
+
reversed `agent()` args, and dead `init/**.md` rulebook references.
|
|
82
|
+
|
|
83
|
+
## [1.4.1] — 2026-06-07
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
|
|
87
|
+
- **`wfl-init.js` failed to launch — "SyntaxError: Unexpected keyword 'export'".**
|
|
88
|
+
The driver shipped wrapped in `export default async function wflInit(args)`,
|
|
89
|
+
but the Workflow harness permits exactly one export (the leading `meta`
|
|
90
|
+
literal) and evaluates the remainder as an async function body. The body now
|
|
91
|
+
runs at top level reading the `args` global, matching the other three
|
|
92
|
+
drivers. Every `/forge:init` → `workflow('wfl:init')` dispatch was dead on
|
|
93
|
+
arrival before this fix.
|
|
94
|
+
|
|
95
|
+
### Added
|
|
96
|
+
|
|
97
|
+
- **`wfl-drivers-parse.test.cjs`** — regression gate that parses all base-pack
|
|
98
|
+
`wfl-*.js` drivers exactly the way the Workflow harness does (single meta
|
|
99
|
+
export, body as async function body with workflow globals in scope).
|
|
100
|
+
|
|
101
|
+
## [1.4.0] — 2026-06-07
|
|
102
|
+
|
|
103
|
+
### Changed — △ Breaking
|
|
104
|
+
|
|
105
|
+
- **Fixed `/forge:*` command namespace (CLI-first redesign).** Project-prefix
|
|
106
|
+
command namespaces (`/acme:*`, `/hello:*`) are retired — every project gets
|
|
107
|
+
the same `/forge:*` surface, with full parity between Claude Code and the
|
|
108
|
+
pure CLI (`4ge`):
|
|
109
|
+
- `tools/lib/paths.cjs` — `getCommandsSubdir()` returns `'forge'`
|
|
110
|
+
unconditionally (prefix arg is vestigial, kept for caller compat).
|
|
111
|
+
- `init/base-pack/commands/*.md` — `/{{PREFIX}}:` → literal `/forge:`
|
|
112
|
+
(26 occurrences, 17 files). Command templates are now fully static.
|
|
113
|
+
- `tools/substitute-placeholders.cjs` — materializes commands to
|
|
114
|
+
`.claude/commands/forge/` regardless of project prefix.
|
|
115
|
+
- Rulebooks updated: `generate-commands.md`, `phase-3-materialize.md`,
|
|
116
|
+
`phase-1-collect.md` (config `paths.commands` example), `meta-migrate.md`,
|
|
117
|
+
`migrate_structural.md`, `commands/add-task.md` next-steps text.
|
|
118
|
+
- The prefix-derived namespace existed to avoid collisions with the Forge
|
|
119
|
+
*plugin's* own `/forge:*` commands — moot now that the plugin mechanism
|
|
120
|
+
is retired in favour of project-vendored commands.
|
|
121
|
+
- **Migration:** existing projects keep working with their old
|
|
122
|
+
`.claude/commands/<prefix>/` files; re-materialize to get
|
|
123
|
+
`.claude/commands/forge/`, then delete the prefix directory.
|
|
124
|
+
|
|
125
|
+
- **`FORGE_ROOT` vendored fallback in every command.** All 33 resolution
|
|
126
|
+
lines across `commands/*.md` and `init/base-pack/commands/*.md` change from
|
|
127
|
+
`${CLAUDE_PLUGIN_ROOT}` to `${CLAUDE_PLUGIN_ROOT:-$(pwd)/.forge}` — in a
|
|
128
|
+
plugin-installed session the plugin root still wins; in a plugin-less
|
|
129
|
+
project bootstrapped by `4ge init claude` the vendored `.forge/` (tools,
|
|
130
|
+
schemas, hooks, init, meta) serves as the Forge root.
|
|
131
|
+
|
|
132
|
+
## [1.3.0] — 2026-06-07
|
|
133
|
+
|
|
134
|
+
### Added
|
|
135
|
+
|
|
136
|
+
- **`init/base-pack/commands/init.md`** — new project-local command wrapper
|
|
137
|
+
installed by `4ge init claude .` into `.claude/commands/forge/`. Contains
|
|
138
|
+
the full hoisted-prompt flow (KB folder prompt, CLAUDE.md offer, timestamp
|
|
139
|
+
minting), dispatches `workflow('wfl:init', args)`, handles the
|
|
140
|
+
Workflow-tool-missing error explicitly, presents the marketplace-skills offer
|
|
141
|
+
from `result.skillMatches` post-workflow, invokes `forge:refresh-kb-links`
|
|
142
|
+
via the Skill tool, and emits the final report (KB doc count, workflow count,
|
|
143
|
+
command count, accepted/skipped skills). Uses vendored `.forge/tools/` paths
|
|
144
|
+
only — no `$FORGE_ROOT` / `${CLAUDE_PLUGIN_ROOT}` references.
|
|
145
|
+
|
|
146
|
+
### Changed
|
|
147
|
+
|
|
148
|
+
- **`commands/init.md` (plugin-side)** — Execute section rewritten to dispatch
|
|
149
|
+
`workflow('wfl:init', args)` with hoisted interactive prompts (KB folder
|
|
150
|
+
prompt, CLAUDE.md offer, timestamp minting). Replaces the previous
|
|
151
|
+
`Read $FORGE_ROOT/init/sdlc-init.md` instruction. Includes the explicit
|
|
152
|
+
Workflow-tool-missing error halt (Iron Law 5 — no silent degradation or
|
|
153
|
+
fallback to `sdlc-init.md`).
|
|
154
|
+
|
|
155
|
+
- **`init/phases/phase-1-collect.md`** — Pre-flight Knowledge Base Folder block
|
|
156
|
+
and Step 5 (Marketplace Skills) annotated as orchestrator-owned when the
|
|
157
|
+
orchestrator pre-supplies the values. Annotations are informational — no step
|
|
158
|
+
renames or renumbers (forge-cli `run-phases.ts` glob freeze maintained).
|
|
159
|
+
|
|
160
|
+
- **`init/phases/phase-4-register.md`** — Step 11 (Tomoshibi/refresh-kb-links)
|
|
161
|
+
and Step 13 (CLAUDE.md prompt) annotated as orchestrator-owned. Same
|
|
162
|
+
semantics-preserving annotation policy.
|
|
163
|
+
|
|
164
|
+
- **`init/sdlc-init.md`** — Body reduced to a spec-pointer paragraph: points
|
|
165
|
+
to `wfl-init.js` (orchestration), `commands/init.md` (dispatch surface), and
|
|
166
|
+
`init/phases/` (canonical per-phase contracts). Phase/verify table preserved
|
|
167
|
+
for human readers. File not deleted.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
8
171
|
## [1.2.21] — 2026-06-06
|
|
9
172
|
|
|
10
173
|
### Fixed
|
package/dist/bin/argv.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/** Parsed result when `--version`, `--help`, `doctor`, `update`, `config`, or a fast-path subcommand is requested. */
|
|
2
|
-
export type ForgeAction = "version" | "help" | "doctor" | "update" | "config" | "subcommand" | null;
|
|
1
|
+
/** Parsed result when `--version`, `--help`, `doctor`, `update`, `config`, `init`, or a fast-path subcommand is requested. */
|
|
2
|
+
export type ForgeAction = "version" | "help" | "doctor" | "update" | "config" | "init" | "uninstall" | "subcommand" | null;
|
|
3
3
|
/**
|
|
4
4
|
* Whitelist of bare subcommands that bypass pi and exec a bundled cjs tool
|
|
5
5
|
* directly. Each entry maps the user-typed subcommand to the cjs filename
|
package/dist/bin/argv.js
CHANGED
|
@@ -155,6 +155,31 @@ export function parseForgeArgv(argv) {
|
|
|
155
155
|
subcommandArgs: argv.slice(i + 1),
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
|
+
// ── `forge init` — deterministic bootstrap (FORGE-S31-T02) ─────────
|
|
159
|
+
// Bootstraps a Claude Code project from the bundled forge-payload.
|
|
160
|
+
// Subcommand args (["claude", "[dir]", ...flags]) are forwarded to
|
|
161
|
+
// init.ts for further parsing. Only matches the first bare token,
|
|
162
|
+
// no flags collected yet.
|
|
163
|
+
if (token === "init" && piArgv.length === 0) {
|
|
164
|
+
return {
|
|
165
|
+
forgeAction: "init",
|
|
166
|
+
piArgv: [],
|
|
167
|
+
env,
|
|
168
|
+
subcommandArgs: argv.slice(i + 1),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// ── `forge uninstall` — deterministic reverse of `init` ─────────────
|
|
172
|
+
// Removes the Forge scaffold a prior `init claude` placed in a project.
|
|
173
|
+
// Subcommand args (["claude", "[dir]", "--purge", "--yes"]) forwarded to
|
|
174
|
+
// uninstall.ts. Only matches the first bare token, no flags collected yet.
|
|
175
|
+
if (token === "uninstall" && piArgv.length === 0) {
|
|
176
|
+
return {
|
|
177
|
+
forgeAction: "uninstall",
|
|
178
|
+
piArgv: [],
|
|
179
|
+
env,
|
|
180
|
+
subcommandArgs: argv.slice(i + 1),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
158
183
|
// ── Fast-path subcommand (forge store, forge collate, etc.) ──────────
|
|
159
184
|
// Only matches the FIRST bare token, and only when no flags have
|
|
160
185
|
// been collected yet (so `forge --cwd /tmp store ...` still treats
|
package/dist/bin/argv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argv.js","sourceRoot":"","sources":["../../src/bin/argv.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,EAAE;AACF,8CAA8C;AAC9C,EAAE;AACF,qBAAqB;AACrB,yDAAyD;AACzD,sDAAsD;AACtD,iEAAiE;AACjE,mEAAmE;AACnE,EAAE;AACF,wCAAwC;AACxC,mEAAmE;AACnE,mEAAmE;AACnE,EAAE;AACF,6CAA6C;AAC7C,oEAAoE;AACpE,sEAAsE;AACtE,gDAAgD;
|
|
1
|
+
{"version":3,"file":"argv.js","sourceRoot":"","sources":["../../src/bin/argv.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/forge.js
CHANGED
|
@@ -14,6 +14,8 @@ import { isParseError, parseForgeArgv } from "./argv.js";
|
|
|
14
14
|
import { runConfig } from "./config.js";
|
|
15
15
|
import { runDoctor } from "./doctor.js";
|
|
16
16
|
import { applyForgeOwnedEnvDefaults } from "./env-defaults.js";
|
|
17
|
+
import { runInit } from "./init.js";
|
|
18
|
+
import { runUninstall } from "./uninstall.js";
|
|
17
19
|
import { runUpdate } from "./update-cli.js";
|
|
18
20
|
// ---------------------------------------------------------------------------
|
|
19
21
|
// Version information (resolved at startup from package.json files)
|
|
@@ -64,6 +66,8 @@ Subcommands:
|
|
|
64
66
|
doctor [--json] Preflight check — pi auth, model availability, settings
|
|
65
67
|
update [--check] [--yes] [--version <spec>] Guided upgrade (npm i -g)
|
|
66
68
|
config show [--resolved] [--json] Model routing config inspector
|
|
69
|
+
init claude [dir] Bootstrap a Claude Code project from the bundled forge-payload
|
|
70
|
+
uninstall claude [dir] [--purge] [--yes] Remove the Forge scaffold (--purge also removes config + store)
|
|
67
71
|
|
|
68
72
|
Slash commands (inside a Forge project):
|
|
69
73
|
/forge:init Bootstrap a new Forge SDLC project
|
|
@@ -113,6 +117,14 @@ async function run() {
|
|
|
113
117
|
const exitCode = await runConfig(parsed.subcommandArgs ?? []);
|
|
114
118
|
process.exit(exitCode);
|
|
115
119
|
}
|
|
120
|
+
if (parsed.forgeAction === "init") {
|
|
121
|
+
const exitCode = await runInit(parsed.subcommandArgs ?? []);
|
|
122
|
+
process.exit(exitCode);
|
|
123
|
+
}
|
|
124
|
+
if (parsed.forgeAction === "uninstall") {
|
|
125
|
+
const exitCode = await runUninstall(parsed.subcommandArgs ?? []);
|
|
126
|
+
process.exit(exitCode);
|
|
127
|
+
}
|
|
116
128
|
// Apply forge env overrides
|
|
117
129
|
Object.assign(process.env, parsed.env);
|
|
118
130
|
applyForgeOwnedEnvDefaults();
|
package/dist/bin/forge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/bin/forge.ts"],"names":[],"mappings":";AAEA,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AACvD,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EACN,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GAClB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,wDAAwD;AACxD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzD,KAAK,UAAU,YAAY;IAC1B,MAAM,eAAe,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,4BAA4B,eAAe,kBAAkB,cAAc,QAAQ,SAAS,KAAK,CACjG,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB
|
|
1
|
+
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/bin/forge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface InitArgs {
|
|
2
|
+
platform: "claude";
|
|
3
|
+
dir: string;
|
|
4
|
+
}
|
|
5
|
+
export interface InitArgsError {
|
|
6
|
+
error: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Parse subcommand args for `forge init`.
|
|
10
|
+
*
|
|
11
|
+
* Expected forms:
|
|
12
|
+
* forge init claude → dir = process.cwd()
|
|
13
|
+
* forge init claude <dir> → dir = <dir>
|
|
14
|
+
* forge init → error: platform required
|
|
15
|
+
* forge init <other> → error: unknown platform
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseInitArgs(args: readonly string[]): InitArgs | InitArgsError;
|
|
18
|
+
/**
|
|
19
|
+
* Entry point invoked from bin/forge.ts.
|
|
20
|
+
*
|
|
21
|
+
* Returns exit code: 0 on success, 1 on bootstrap error.
|
|
22
|
+
*/
|
|
23
|
+
export declare function runInit(args: readonly string[]): Promise<number>;
|