@entelligentsia/forgecli 0.21.0 → 1.0.2
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 +21 -0
- package/README.md +31 -33
- package/dist/CHANGELOG-forge-plugin.md +118 -0
- package/dist/CHANGELOG-pi.md +24 -1
- package/dist/bin/forgecli.d.ts +2 -0
- package/dist/bin/forgecli.js +6 -0
- package/dist/bin/forgecli.js.map +1 -0
- package/dist/extensions/forgecli/add-pipeline.js +1 -1
- package/dist/extensions/forgecli/add-pipeline.js.map +1 -1
- package/dist/extensions/forgecli/add-task.js +1 -1
- package/dist/extensions/forgecli/add-task.js.map +1 -1
- package/dist/extensions/forgecli/approve.js +17 -2
- package/dist/extensions/forgecli/approve.js.map +1 -1
- package/dist/extensions/forgecli/calibrate.js +11 -8
- package/dist/extensions/forgecli/calibrate.js.map +1 -1
- package/dist/extensions/forgecli/collate.js +1 -1
- package/dist/extensions/forgecli/collate.js.map +1 -1
- package/dist/extensions/forgecli/commit.js +17 -2
- package/dist/extensions/forgecli/commit.js.map +1 -1
- package/dist/extensions/forgecli/enhance.js +1 -1
- package/dist/extensions/forgecli/enhance.js.map +1 -1
- package/dist/extensions/forgecli/forge-artifact-tool.d.ts +6 -8
- package/dist/extensions/forgecli/forge-artifact-tool.js +80 -195
- package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
- package/dist/extensions/forgecli/forge-commands.js +57 -18
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-init/phase4-register.js +6 -7
- package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
- package/dist/extensions/forgecli/forge-init/run-phases.d.ts +4 -0
- package/dist/extensions/forgecli/forge-init/run-phases.js +304 -0
- package/dist/extensions/forgecli/forge-init/run-phases.js.map +1 -0
- package/dist/extensions/forgecli/forge-init/verifiers.d.ts +14 -5
- package/dist/extensions/forgecli/forge-init/verifiers.js +79 -62
- package/dist/extensions/forgecli/forge-init/verifiers.js.map +1 -1
- package/dist/extensions/forgecli/forge-init.js +131 -76
- package/dist/extensions/forgecli/forge-init.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.d.ts +9 -0
- package/dist/extensions/forgecli/forge-subagent.js +11 -6
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-tools.d.ts +28 -4
- package/dist/extensions/forgecli/forge-tools.js +122 -73
- package/dist/extensions/forgecli/forge-tools.js.map +1 -1
- package/dist/extensions/forgecli/health-check.js +3 -3
- package/dist/extensions/forgecli/health-check.js.map +1 -1
- package/dist/extensions/forgecli/hook-dispatcher.d.ts +1 -1
- package/dist/extensions/forgecli/hooks/check-update.d.ts +8 -0
- package/dist/extensions/forgecli/hooks/check-update.js +29 -1
- package/dist/extensions/forgecli/hooks/check-update.js.map +1 -1
- package/dist/extensions/forgecli/hooks/post-init-hook.js +6 -6
- package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
- package/dist/extensions/forgecli/hooks/post-sprint-hook.js +6 -6
- package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
- package/dist/extensions/forgecli/hooks/triage-error.js +1 -0
- package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -1
- package/dist/extensions/forgecli/implement.js +20 -2
- package/dist/extensions/forgecli/implement.js.map +1 -1
- package/dist/extensions/forgecli/index.js +39 -32
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/lib/pipeline-guard.d.ts +41 -0
- package/dist/extensions/forgecli/lib/pipeline-guard.js +100 -0
- package/dist/extensions/forgecli/lib/pipeline-guard.js.map +1 -0
- package/dist/extensions/forgecli/loaders/persona-skill-loader.js +2 -2
- package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +1 -1
- package/dist/extensions/forgecli/migrate.d.ts +3 -0
- package/dist/extensions/forgecli/migrate.js +4 -2
- package/dist/extensions/forgecli/migrate.js.map +1 -1
- package/dist/extensions/forgecli/plan.js +21 -2
- package/dist/extensions/forgecli/plan.js.map +1 -1
- package/dist/extensions/forgecli/quiz-agent.js +7 -7
- package/dist/extensions/forgecli/quiz-agent.js.map +1 -1
- package/dist/extensions/forgecli/regenerate.js +49 -18
- package/dist/extensions/forgecli/regenerate.js.map +1 -1
- package/dist/extensions/forgecli/remove-command.js +1 -1
- package/dist/extensions/forgecli/remove-command.js.map +1 -1
- package/dist/extensions/forgecli/report-bug.js +1 -1
- package/dist/extensions/forgecli/report-bug.js.map +1 -1
- package/dist/extensions/forgecli/retrospective.js +9 -9
- package/dist/extensions/forgecli/retrospective.js.map +1 -1
- package/dist/extensions/forgecli/review-code.d.ts +13 -0
- package/dist/extensions/forgecli/review-code.js +62 -3
- package/dist/extensions/forgecli/review-code.js.map +1 -1
- package/dist/extensions/forgecli/review-plan.d.ts +13 -0
- package/dist/extensions/forgecli/review-plan.js +65 -3
- package/dist/extensions/forgecli/review-plan.js.map +1 -1
- package/dist/extensions/forgecli/skill-curator-subagent.d.ts +2 -1
- package/dist/extensions/forgecli/skill-curator-subagent.js +2 -1
- package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -1
- package/dist/extensions/forgecli/sprint-intake.js +6 -6
- package/dist/extensions/forgecli/sprint-intake.js.map +1 -1
- package/dist/extensions/forgecli/sprint-plan.js +9 -9
- package/dist/extensions/forgecli/sprint-plan.js.map +1 -1
- package/dist/extensions/forgecli/status-command.js +1 -1
- package/dist/extensions/forgecli/status-command.js.map +1 -1
- package/dist/extensions/forgecli/store-query.js +11 -11
- package/dist/extensions/forgecli/store-query.js.map +1 -1
- package/dist/extensions/forgecli/store-repair.js +7 -7
- package/dist/extensions/forgecli/store-repair.js.map +1 -1
- package/dist/extensions/forgecli/validate.js +17 -2
- package/dist/extensions/forgecli/validate.js.map +1 -1
- package/dist/forge-payload/.base-pack/commands/check-agent.md +22 -0
- package/dist/forge-payload/.base-pack/commands/new-sprint.md +22 -0
- package/dist/forge-payload/.base-pack/commands/plan-sprint.md +22 -0
- package/dist/forge-payload/.base-pack/commands/quiz-agent.md +2 -18
- package/dist/forge-payload/.base-pack/commands/retro.md +22 -0
- package/dist/forge-payload/.base-pack/commands/retrospective.md +2 -18
- package/dist/forge-payload/.base-pack/commands/sprint-intake.md +2 -18
- package/dist/forge-payload/.base-pack/commands/sprint-plan.md +2 -18
- package/dist/forge-payload/.base-pack/workflows/_fragments/friction-emit.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/_fragments/generation-instructions.md +4 -4
- package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/architect_approve.md +13 -1
- package/dist/forge-payload/.base-pack/workflows/commit_task.md +12 -1
- package/dist/forge-payload/.base-pack/workflows/enhance.md +6 -6
- package/dist/forge-payload/.base-pack/workflows/fix_bug.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/implement_plan.md +14 -2
- package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +20 -4
- package/dist/forge-payload/.base-pack/workflows/plan_task.md +14 -2
- package/dist/forge-payload/.base-pack/workflows/review_code.md +37 -7
- package/dist/forge-payload/.base-pack/workflows/review_plan.md +36 -6
- package/dist/forge-payload/.base-pack/workflows/run_sprint.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/validate_task.md +37 -7
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/config.schema.json +0 -5
- package/dist/forge-payload/.schemas/enum-catalog.json +9 -13
- package/dist/forge-payload/.schemas/migrations.json +54 -0
- package/dist/forge-payload/agents/tomoshibi.md +150 -6
- package/dist/forge-payload/commands/add-pipeline.md +1 -1
- package/dist/forge-payload/commands/add-task.md +1 -1
- package/dist/forge-payload/commands/calibrate.md +4 -350
- package/dist/forge-payload/commands/check-agent.md +38 -0
- package/dist/forge-payload/commands/config.md +3 -113
- package/dist/forge-payload/commands/enhance.md +5 -32
- package/dist/forge-payload/commands/health.md +155 -13
- package/dist/forge-payload/commands/init.md +25 -31
- package/dist/forge-payload/commands/migrate.md +6 -154
- package/dist/forge-payload/commands/quiz-agent.md +2 -34
- package/dist/forge-payload/commands/rebuild.md +664 -0
- package/dist/forge-payload/commands/regenerate.md +2 -774
- package/dist/forge-payload/commands/remove.md +10 -13
- package/dist/forge-payload/commands/repair.md +187 -0
- package/dist/forge-payload/commands/search.md +73 -0
- package/dist/forge-payload/commands/status.md +105 -0
- package/dist/forge-payload/commands/store-query.md +2 -69
- package/dist/forge-payload/commands/store-repair.md +2 -183
- package/dist/forge-payload/commands/update-tools.md +4 -50
- package/dist/forge-payload/commands/update.md +64 -58
- package/dist/forge-payload/hooks/check-update.cjs +1 -1
- package/dist/forge-payload/hooks/post-init.cjs +2 -2
- package/dist/forge-payload/hooks/post-sprint.cjs +2 -2
- package/dist/forge-payload/hooks/triage-error.cjs +11 -10
- package/dist/forge-payload/init/phases/phase-1-collect.md +138 -0
- package/dist/forge-payload/init/phases/phase-2-discover.md +127 -0
- package/dist/forge-payload/init/phases/phase-3-materialize.md +113 -0
- package/dist/forge-payload/init/phases/phase-4-register.md +159 -0
- package/dist/forge-payload/integrity.json +21 -24
- package/dist/forge-payload/meta/fragments/tool-discipline.md +22 -0
- package/dist/forge-payload/meta/templates/meta-retro.md +28 -0
- package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +2 -2
- package/dist/forge-payload/meta/workflows/_fragments/generation-instructions.md +4 -4
- package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +1 -1
- package/dist/forge-payload/meta/workflows/meta-approve.md +13 -1
- package/dist/forge-payload/meta/workflows/meta-check-agent.md +138 -0
- package/dist/forge-payload/meta/workflows/meta-commit.md +12 -1
- package/dist/forge-payload/meta/workflows/meta-enhance.md +5 -5
- package/dist/forge-payload/meta/workflows/meta-fix-bug.md +1 -1
- package/dist/forge-payload/meta/workflows/meta-implement.md +13 -1
- package/dist/forge-payload/meta/workflows/meta-migrate.md +3 -3
- package/dist/forge-payload/meta/workflows/meta-new-sprint.md +84 -0
- package/dist/forge-payload/meta/workflows/meta-orchestrate.md +20 -4
- package/dist/forge-payload/meta/workflows/meta-plan-sprint.md +152 -0
- package/dist/forge-payload/meta/workflows/meta-plan-task.md +13 -1
- package/dist/forge-payload/meta/workflows/meta-retro.md +73 -0
- package/dist/forge-payload/meta/workflows/meta-review-implementation.md +37 -7
- package/dist/forge-payload/meta/workflows/meta-review-plan.md +36 -6
- package/dist/forge-payload/meta/workflows/meta-validate.md +37 -7
- package/dist/forge-payload/schemas/config.schema.json +0 -5
- package/dist/forge-payload/schemas/enum-catalog.json +9 -13
- package/dist/forge-payload/schemas/structure-manifest.json +6 -8
- package/dist/forge-payload/tools/artifact.cjs +295 -0
- package/dist/forge-payload/tools/banners.cjs +3 -4
- package/dist/forge-payload/tools/build-context-pack.cjs +1 -1
- package/dist/forge-payload/tools/check-structure.cjs +8 -3
- package/dist/forge-payload/tools/store-cli.cjs +67 -7
- package/dist/forge-payload/tools/substitute-placeholders.cjs +1 -1
- package/dist/forge-payload/tools/verify-apply.cjs +75 -0
- package/dist/forge-payload/tools/verify-phase.cjs +259 -0
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +0 -17
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +21 -38
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +5 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +5 -2
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +24 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +2 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js +52 -22
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +16 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +45 -50
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +43 -81
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js +27 -12
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +2 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js +3 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -5
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js +37 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +9 -8
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +20 -35
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +64 -7
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +15 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts +3 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js +14 -8
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts +30 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js +124 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js +31 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts +7 -27
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js +75 -115
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +6 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -14
- package/node_modules/@earendil-works/pi-coding-agent/package.json +5 -5
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +3 -0
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +53 -0
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -0
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +2 -0
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js +13 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
- package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
- package/node_modules/@earendil-works/pi-tui/package.json +2 -2
- package/package.json +6 -6
- package/dist/extensions/forgecli/forge-init/phase-descriptors.d.ts +0 -72
- package/dist/extensions/forgecli/forge-init/phase-descriptors.js +0 -359
- package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +0 -1
- package/dist/extensions/forgecli/forge-init/prompts.d.ts +0 -10
- package/dist/extensions/forgecli/forge-init/prompts.js +0 -91
- package/dist/extensions/forgecli/forge-init/prompts.js.map +0 -1
- package/dist/extensions/forgecli/lib/store-error-remediation.d.ts +0 -65
- package/dist/extensions/forgecli/lib/store-error-remediation.js +0 -298
- package/dist/extensions/forgecli/lib/store-error-remediation.js.map +0 -1
- package/dist/forge-payload/hooks/check-update.js +0 -378
- package/dist/forge-payload/hooks/forge-permissions.js +0 -164
- package/dist/forge-payload/hooks/triage-error.js +0 -77
- package/dist/forge-payload/hooks/validate-write.js +0 -250
|
@@ -36,43 +36,73 @@ deps:
|
|
|
36
36
|
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
0a. Pre-flight Gate Check:
|
|
40
40
|
- Resolve FORGE_ROOT (`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`).
|
|
41
41
|
- **Entity-mode resolution:** read the kickoff arguments. `--task {id}` → `entity_kind = "task"`, `record_id = {id}`. `--bug {id}` → `entity_kind = "bug"`, `record_id = {id}`. All store-cli calls below substitute `{entity_kind}` and `{record_id}` for the literal "task"/{taskId} placeholders.
|
|
42
42
|
- Run: `node "$FORGE_ROOT/tools/preflight-gate.cjs" --phase review-code --{entity_kind} {record_id}`
|
|
43
43
|
- Exit 1 (gate failed) → print stderr and HALT. Do not proceed; do not attempt to produce the artifact.
|
|
44
44
|
- Exit 2 (misconfiguration) → print stderr and HALT.
|
|
45
45
|
- Exit 0 → continue.
|
|
46
|
-
|
|
46
|
+
|
|
47
|
+
0b. Pipeline Step Guard (user-invoked state check):
|
|
48
|
+
- If `--force` is present in the invocation arguments, skip this step entirely.
|
|
49
|
+
- If `entity_kind == "bug"`, skip this step entirely (bug state is managed by meta-fix-bug.md).
|
|
50
|
+
- Read current task state:
|
|
51
|
+
`node "$FORGE_ROOT/tools/store-cli.cjs" read task {record_id} --json`
|
|
52
|
+
- Extract the `status` field from the JSON output.
|
|
53
|
+
- Allowed states for this phase: `implemented`, `implementing`.
|
|
54
|
+
- If the current status is NOT in the allowed set:
|
|
55
|
+
Print the following and HALT (do not proceed):
|
|
56
|
+
`× Task {record_id} is in state '{status}' — /forge:implement must complete first. To run the full pipeline: /forge:run-task {record_id}`
|
|
57
|
+
|
|
58
|
+
1. Read Review Loop Context:
|
|
59
|
+
- Check the spawning prompt for a `### Review Loop Context` block.
|
|
60
|
+
- If present, extract:
|
|
61
|
+
- `Iteration: N of M` — current attempt number and the configured limit
|
|
62
|
+
- `Is final iteration: true/false`
|
|
63
|
+
- If absent (user-invoked, not orchestrated): treat as iteration 1 of M, where M is
|
|
64
|
+
read from `.forge/config.json` → `maxReviewIterations` (default 3 if field absent).
|
|
65
|
+
- Include `(iteration N of M)` in the opening line of the `CODE_REVIEW.md` artifact.
|
|
66
|
+
- If this is the final iteration (`N == M`) and the verdict is `Revision Required`,
|
|
67
|
+
append a `### Next Steps` section to the artifact showing:
|
|
68
|
+
```
|
|
69
|
+
### Next Steps
|
|
70
|
+
- Force-approve (bypass remaining reviews): `/forge:approve --force {task_id}`
|
|
71
|
+
- Increase iteration limit: edit `config.pipelines.{pipeline}.phases[review-code].maxIterations`
|
|
72
|
+
- Restart from review: `/forge:review-code {task_id}`
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
2. Load Context:
|
|
47
76
|
- Read task prompt
|
|
48
77
|
- Read approved PLAN.md
|
|
49
78
|
- Read PROGRESS.md
|
|
50
79
|
|
|
51
80
|
**Read mode: diff-first.** Read `git diff $(git merge-base HEAD origin/main)..HEAD -- <files-listed-in-PLAN>` first. Read full source files only when the diff context is insufficient to judge a finding (e.g., the change is an inversion of an invariant defined elsewhere). Do not pre-load full source — tool calls earn their tokens.
|
|
52
81
|
|
|
53
|
-
|
|
82
|
+
3. Review:
|
|
54
83
|
- Verify all plan steps were executed
|
|
55
84
|
- Review code for quality, security, and architecture alignment
|
|
56
85
|
- Verify test evidence in PROGRESS.md is authentic and complete
|
|
57
86
|
|
|
58
|
-
|
|
87
|
+
4. Verdict:
|
|
59
88
|
- Write the code review via forge_artifact:
|
|
60
89
|
`forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"code-review", content:"<markdown>" })`
|
|
61
90
|
Use the format:
|
|
62
91
|
**Verdict:** [Approved | Revision Required]
|
|
63
92
|
- If Revision Required: provide numbered, actionable items
|
|
64
93
|
- If Approved: provide any advisory notes
|
|
94
|
+
- See step 1 for iteration header and final-iteration Next Steps requirements.
|
|
65
95
|
|
|
66
|
-
|
|
96
|
+
5. Knowledge Writeback:
|
|
67
97
|
- Update stack-checklist.md if new patterns or pitfalls were discovered
|
|
68
98
|
|
|
69
|
-
|
|
99
|
+
6. Finalize:
|
|
70
100
|
- Transitions:
|
|
71
101
|
- **Task mode** — Update status: `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status review-approved` (if Approved) or `... status code-revision-required` (if Revision Required).
|
|
72
102
|
- **Bug mode** — NO status write. The bug remains `in-progress`. The verdict signal travels through `summaries.code_review.verdict` (read by `read-verdict.cjs § BUG_PHASE_VERDICT_SOURCE`), not `bug.status`. Writing `bug.status` here violates `meta-fix-bug.md § Iron Laws #2`.
|
|
73
103
|
- **Do NOT emit a phase event yourself.** The orchestrator (or kickoff handler) owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
|
|
74
104
|
|
|
75
|
-
|
|
105
|
+
7. Emit Summary Sidecar:
|
|
76
106
|
- Write the review summary via forge_artifact:
|
|
77
107
|
`forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"review-impl-summary", content:"<JSON>" })`
|
|
78
108
|
The JSON shape:
|
|
@@ -38,30 +38,60 @@ deps:
|
|
|
38
38
|
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
0a. Pre-flight Gate Check:
|
|
42
42
|
- Resolve FORGE_ROOT (`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`).
|
|
43
43
|
- **Entity-mode resolution:** read the kickoff arguments. `--task {id}` → `entity_kind = "task"`, `record_id = {id}`. `--bug {id}` → `entity_kind = "bug"`, `record_id = {id}`. All store-cli calls below substitute `{entity_kind}` and `{record_id}` for the literal "task"/{taskId} placeholders.
|
|
44
44
|
- Run: `node "$FORGE_ROOT/tools/preflight-gate.cjs" --phase review-plan --{entity_kind} {record_id}`
|
|
45
45
|
- Exit 1 (gate failed) → print stderr and HALT. Do not proceed; do not attempt to produce the artifact.
|
|
46
46
|
- Exit 2 (misconfiguration) → print stderr and HALT.
|
|
47
47
|
- Exit 0 → continue.
|
|
48
|
-
|
|
48
|
+
|
|
49
|
+
0b. Pipeline Step Guard (user-invoked state check):
|
|
50
|
+
- If `--force` is present in the invocation arguments, skip this step entirely.
|
|
51
|
+
- If `entity_kind == "bug"`, skip this step entirely (bug state is managed by meta-fix-bug.md).
|
|
52
|
+
- Read current task state:
|
|
53
|
+
`node "$FORGE_ROOT/tools/store-cli.cjs" read task {record_id} --json`
|
|
54
|
+
- Extract the `status` field from the JSON output.
|
|
55
|
+
- Allowed states for this phase: `planned`.
|
|
56
|
+
- If the current status is NOT in the allowed set:
|
|
57
|
+
Print the following and HALT (do not proceed):
|
|
58
|
+
`× Task {record_id} is in state '{status}' — /forge:plan must complete first. To run the full pipeline: /forge:run-task {record_id}`
|
|
59
|
+
|
|
60
|
+
1. Read Review Loop Context:
|
|
61
|
+
- Check the spawning prompt for a `### Review Loop Context` block.
|
|
62
|
+
- If present, extract:
|
|
63
|
+
- `Iteration: N of M` — current attempt number and the configured limit
|
|
64
|
+
- `Is final iteration: true/false`
|
|
65
|
+
- If absent (user-invoked, not orchestrated): treat as iteration 1 of M, where M is
|
|
66
|
+
read from `.forge/config.json` → `maxReviewIterations` (default 3 if field absent).
|
|
67
|
+
- Include `(iteration N of M)` in the opening line of the `PLAN_REVIEW.md` artifact.
|
|
68
|
+
- If this is the final iteration (`N == M`) and the verdict is `Revision Required`,
|
|
69
|
+
append a `### Next Steps` section to the artifact showing:
|
|
70
|
+
```
|
|
71
|
+
### Next Steps
|
|
72
|
+
- Force-approve (bypass remaining reviews): `/forge:approve --force {task_id}`
|
|
73
|
+
- Increase iteration limit: edit `config.pipelines.{pipeline}.phases[review-plan].maxIterations`
|
|
74
|
+
- Restart from review: `/forge:review-plan {task_id}`
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
2. Load Context:
|
|
49
78
|
- Read task prompt (source of truth)
|
|
50
79
|
- Read PLAN.md (subject of review)
|
|
51
80
|
- Read stack checklist if available
|
|
52
81
|
|
|
53
|
-
|
|
82
|
+
3. Review:
|
|
54
83
|
- Evaluate feasibility, completeness, security, architecture alignment, and testing strategy
|
|
55
84
|
- Identify missing edge cases or failure modes
|
|
56
85
|
|
|
57
|
-
|
|
86
|
+
4. Verdict:
|
|
58
87
|
- Write the plan review via forge_artifact: forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"plan-review", content:"<markdown>" })
|
|
59
88
|
Use the format:
|
|
60
89
|
**Verdict:** [Approved | Revision Required]
|
|
61
90
|
- If Revision Required: provide numbered, actionable items
|
|
62
91
|
- If Approved: provide any advisory notes
|
|
92
|
+
- See step 1 for iteration header and final-iteration Next Steps requirements.
|
|
63
93
|
|
|
64
|
-
|
|
94
|
+
5. Finalize:
|
|
65
95
|
- Transitions:
|
|
66
96
|
- **Task mode** — predecessor must be `planned`.
|
|
67
97
|
- Approved → `plan-approved`
|
|
@@ -71,7 +101,7 @@ deps:
|
|
|
71
101
|
- **Bug mode** — NO status write. The bug remains `in-progress`. The verdict signal travels through `summaries.review_plan.verdict` (read by `read-verdict.cjs § BUG_PHASE_VERDICT_SOURCE`), not `bug.status`. Writing `bug.status` here violates `meta-fix-bug.md § Iron Laws #2`.
|
|
72
102
|
- **Do NOT emit a phase event yourself.** The orchestrator owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
|
|
73
103
|
|
|
74
|
-
|
|
104
|
+
6. Emit Summary Sidecar:
|
|
75
105
|
- Write the review-plan summary via forge_artifact: forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"review-plan-summary", content:"<JSON>" })
|
|
76
106
|
The JSON must have the following shape:
|
|
77
107
|
```json
|
|
@@ -181,7 +181,7 @@ Once all tasks have reached a terminal status:
|
|
|
181
181
|
── Carried over / abandoned: N tasks
|
|
182
182
|
```
|
|
183
183
|
3. Update sprint `status` to `completed` or `partially-completed`
|
|
184
|
-
4. Suggest: "Run `/forge:
|
|
184
|
+
4. Suggest: "Run `/forge:retro {SPRINT_ID}` to close out the sprint."
|
|
185
185
|
|
|
186
186
|
## Sprint Lifecycle Hooks
|
|
187
187
|
|
|
@@ -189,7 +189,7 @@ Once all tasks have reached a terminal status:
|
|
|
189
189
|
|---|---|---|
|
|
190
190
|
| `collate` | After all tasks terminal | Run `node "$FORGE_ROOT/tools/collate.cjs"` |
|
|
191
191
|
| `report` | After collation | Print outcome summary (committed/escalated/carried-over counts) |
|
|
192
|
-
| `suggest` | After report | Suggest `/forge:
|
|
192
|
+
| `suggest` | After report | Suggest `/forge:retro {SPRINT_ID}` |
|
|
193
193
|
|
|
194
194
|
## Resume Semantics
|
|
195
195
|
|
|
@@ -36,38 +36,68 @@ deps:
|
|
|
36
36
|
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
0a. Pre-flight Gate Check:
|
|
40
40
|
- Resolve FORGE_ROOT (`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`).
|
|
41
|
-
-
|
|
41
|
+
- **Entity-mode resolution:** read the kickoff arguments. `--task {id}` → `entity_kind = "task"`, `record_id = {id}`. `--bug {id}` → `entity_kind = "bug"`, `record_id = {id}`. All store-cli calls below substitute `{entity_kind}` and `{record_id}` for the literal "task"/{taskId} placeholders.
|
|
42
|
+
- Run: `node "$FORGE_ROOT/tools/preflight-gate.cjs" --phase validate --{entity_kind} {record_id}`
|
|
42
43
|
- Exit 1 (gate failed) → print stderr and HALT. Do not proceed; do not attempt to produce the artifact.
|
|
43
44
|
- Exit 2 (misconfiguration) → print stderr and HALT.
|
|
44
45
|
- Exit 0 → continue.
|
|
45
46
|
|
|
46
|
-
|
|
47
|
+
0b. Pipeline Step Guard (user-invoked state check):
|
|
48
|
+
- If `--force` is present in the invocation arguments, skip this step entirely.
|
|
49
|
+
- If `entity_kind == "bug"`, skip this step entirely (bug state is managed by meta-fix-bug.md).
|
|
50
|
+
- Read current task state:
|
|
51
|
+
`node "$FORGE_ROOT/tools/store-cli.cjs" read task {record_id} --json`
|
|
52
|
+
- Extract the `status` field from the JSON output.
|
|
53
|
+
- Allowed states for this phase: `implemented`, `review-approved`.
|
|
54
|
+
- If the current status is NOT in the allowed set:
|
|
55
|
+
Print the following and HALT (do not proceed):
|
|
56
|
+
`× Task {record_id} is in state '{status}' — /forge:implement must complete first. To run the full pipeline: /forge:run-task {record_id}`
|
|
57
|
+
|
|
58
|
+
1. Read Review Loop Context:
|
|
59
|
+
- Check the spawning prompt for a `### Review Loop Context` block.
|
|
60
|
+
- If present, extract:
|
|
61
|
+
- `Iteration: N of M` — current attempt number and the configured limit
|
|
62
|
+
- `Is final iteration: true/false`
|
|
63
|
+
- If absent (user-invoked, not orchestrated): treat as iteration 1 of M, where M is
|
|
64
|
+
read from `.forge/config.json` → `maxReviewIterations` (default 3 if field absent).
|
|
65
|
+
- Include `(iteration N of M)` in the opening line of the `VALIDATION_REPORT.md` artifact.
|
|
66
|
+
- If this is the final iteration (`N == M`) and the verdict is `Revision Required`,
|
|
67
|
+
append a `### Next Steps` section to the artifact showing:
|
|
68
|
+
```
|
|
69
|
+
### Next Steps
|
|
70
|
+
- Force-approve (bypass remaining reviews): `/forge:approve --force {task_id}`
|
|
71
|
+
- Increase iteration limit: edit `config.pipelines.{pipeline}.phases[validate].maxIterations`
|
|
72
|
+
- Restart from validation: `/forge:validate {task_id}`
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
2. Load Context:
|
|
47
76
|
- Read task prompt
|
|
48
77
|
- Read approved PLAN.md
|
|
49
78
|
- Read the implementation
|
|
50
79
|
- Read PROGRESS.md
|
|
51
80
|
|
|
52
|
-
|
|
81
|
+
3. Validation:
|
|
53
82
|
- Execute the "Acceptance Criteria" checklist from the plan
|
|
54
83
|
- Verify that all technical constraints (e.g., performance, security) are met
|
|
55
84
|
- Check for any regressions in related functionality
|
|
56
85
|
- When re-running the test suite, use the **resolved test command** from `commands.test` in `.forge/config.json` (i.e. `` `${commands.test}` ``, e.g. `.venv/bin/python -m pytest`). Template placeholder: {{TEST_COMMAND}}. Do NOT invoke bare `python` / `python3` — the project interpreter is rarely on `$PATH`.
|
|
57
86
|
|
|
58
|
-
|
|
87
|
+
4. Verdict:
|
|
59
88
|
- Write the validation report via:
|
|
60
89
|
`forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"validation-report", content:"<markdown>" })`
|
|
61
90
|
The markdown content must use the format:
|
|
62
91
|
**Verdict:** [Approved | Revision Required]
|
|
63
92
|
- If Revision Required: list the failed criteria and required fixes
|
|
64
93
|
- If Approved: confirm the task is validated
|
|
94
|
+
- See step 1 for iteration header and final-iteration Next Steps requirements.
|
|
65
95
|
|
|
66
|
-
|
|
96
|
+
5. Finalize:
|
|
67
97
|
- Update task status via `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status review-approved` (if Approved) or `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task {taskId} status code-revision-required` (if Revision Required)
|
|
68
98
|
- **Do NOT emit a phase event yourself.** The orchestrator owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
|
|
69
99
|
|
|
70
|
-
|
|
100
|
+
6. Emit Summary Sidecar:
|
|
71
101
|
- Write the validation summary via:
|
|
72
102
|
`forge_artifact({ command:"write", entity:"{entity_kind}", entityId:"{record_id}", artifact:"validation-summary", content:"<JSON>" })`
|
|
73
103
|
The JSON content must have the following shape:
|
|
@@ -204,11 +204,6 @@
|
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
|
-
},
|
|
208
|
-
"mode": {
|
|
209
|
-
"type": "string",
|
|
210
|
-
"enum": ["full", "fast"],
|
|
211
|
-
"description": "Init mode. 'fast' means scaffolding was generated by /forge:init --fast (stubs present, heavy artifacts deferred to first use). 'full' means all artifacts are generated. Absent on pre-0.12 projects — treated as 'full' by all readers. Flipped to 'full' by /forge:regenerate (default) or /forge:materialize --all."
|
|
212
207
|
}
|
|
213
208
|
},
|
|
214
209
|
"additionalProperties": false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
3
|
-
"generated": "2026-05-
|
|
2
|
+
"version": "1.0.2",
|
|
3
|
+
"generated": "2026-05-27",
|
|
4
4
|
"note": "Authoritative enum catalog. Source: build-enum-catalog.cjs. Regenerate via node forge/tools/build-manifest.cjs.",
|
|
5
5
|
"enums": {
|
|
6
6
|
"task.status": [
|
|
@@ -35,34 +35,30 @@
|
|
|
35
35
|
]
|
|
36
36
|
},
|
|
37
37
|
"commandNames": [
|
|
38
|
-
"forge:sprint
|
|
38
|
+
"forge:new-sprint",
|
|
39
39
|
"forge:plan",
|
|
40
40
|
"forge:review-plan",
|
|
41
41
|
"forge:implement",
|
|
42
42
|
"forge:review-code",
|
|
43
43
|
"forge:fix-bug",
|
|
44
|
-
"forge:sprint
|
|
44
|
+
"forge:plan-sprint",
|
|
45
45
|
"forge:run-task",
|
|
46
46
|
"forge:run-sprint",
|
|
47
|
-
"forge:
|
|
48
|
-
"forge:retrospective",
|
|
47
|
+
"forge:retro",
|
|
49
48
|
"forge:approve",
|
|
50
49
|
"forge:commit",
|
|
51
|
-
"forge:
|
|
52
|
-
"forge:quiz-agent",
|
|
50
|
+
"forge:check-agent",
|
|
53
51
|
"forge:validate",
|
|
54
52
|
"forge:init",
|
|
55
53
|
"forge:health",
|
|
56
|
-
"forge:
|
|
54
|
+
"forge:rebuild",
|
|
57
55
|
"forge:update",
|
|
58
56
|
"forge:add-task",
|
|
59
57
|
"forge:add-pipeline",
|
|
60
|
-
"forge:calibrate",
|
|
61
|
-
"forge:materialize",
|
|
62
58
|
"forge:remove",
|
|
63
59
|
"forge:report-bug",
|
|
64
|
-
"forge:
|
|
65
|
-
"forge:
|
|
60
|
+
"forge:search",
|
|
61
|
+
"forge:repair",
|
|
66
62
|
"forge:config",
|
|
67
63
|
"forge:ask",
|
|
68
64
|
"forge:store-custodian",
|
|
@@ -1,4 +1,58 @@
|
|
|
1
1
|
{
|
|
2
|
+
"1.0.1": {
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"date": "2026-05-27",
|
|
5
|
+
"notes": "v1.0.2 — deprecated command cleanup + init bug fixes. Redirect stubs removed (old command names are now unknown). paths.commands uses project prefix. artifact.cjs strips trailing filenames from store path. Deprecated command references replaced across all meta sources.",
|
|
6
|
+
"target": "commands,init:phases,init:sdlc-init,tools:artifact",
|
|
7
|
+
"regenerate": ["commands"],
|
|
8
|
+
"breaking": false,
|
|
9
|
+
"manual": [
|
|
10
|
+
"Deprecated command redirect stubs removed. Old names (sprint-intake, sprint-plan, retrospective, regenerate, store-query, store-repair, quiz-agent, calibrate, update-tools, migrate, materialize) are now unknown commands. See docs/migration/v0-to-v1.md for the mapping.",
|
|
11
|
+
"If your project has .claude/commands/<prefix>/sprint-intake.md, sprint-plan.md, retrospective.md, or quiz-agent.md — these are stale and can be deleted."
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"1.0.0": {
|
|
15
|
+
"version": "1.0.1",
|
|
16
|
+
"date": "2026-05-27",
|
|
17
|
+
"notes": "v1.0.1 — init phase decomposition (FORGE-S26-T17). New shared verify-phase.cjs tool; sdlc-init.md rewritten as thin orchestrator; per-phase prompt files extracted to init/phases/.",
|
|
18
|
+
"target": "tools:verify-phase,init:phases",
|
|
19
|
+
"regenerate": ["tools"],
|
|
20
|
+
"breaking": false,
|
|
21
|
+
"manual": []
|
|
22
|
+
},
|
|
23
|
+
"0.52.1": {
|
|
24
|
+
"version": "1.0.0",
|
|
25
|
+
"date": "2026-05-26",
|
|
26
|
+
"notes": "v1.0.0 — v1.0 DevX Overhaul (FORGE-S26). 7 command renames, 6 command removals, fast-mode dead code removal, health --fix, rebuild --enrich, init --migrate, pipeline step guards, revision loop visibility, post-init welcome, Tomoshibi enhancements, forge:status plugin command, v1.0 documentation restructure.",
|
|
27
|
+
"target": "commands:new-sprint,commands:plan-sprint,commands:retro,commands:rebuild,commands:search,commands:repair,commands:check-agent,commands:calibrate,commands:enhance,commands:migrate,commands:materialize,commands:update-tools,commands:collate,commands:status,workflows:orchestrate_task,workflows:plan_task,workflows:implement_plan,workflows:fix_bug,config:mode",
|
|
28
|
+
"regenerate": ["commands", "workflows", "tools"],
|
|
29
|
+
"breaking": true,
|
|
30
|
+
"manual": [
|
|
31
|
+
"Removed commands: /forge:update-tools, /forge:materialize, /forge:enhance, /forge:calibrate, /forge:migrate, /forge:collate (user surface). Use /forge:update for schema refresh, /forge:rebuild --enrich for enhancement, /forge:health --fix for calibration, /forge:init --migrate for migration.",
|
|
32
|
+
"Renamed commands: /forge:sprint-intake → /forge:new-sprint, /forge:sprint-plan → /forge:plan-sprint, /forge:retrospective → /forge:retro, /forge:regenerate → /forge:rebuild, /forge:store-query → /forge:search, /forge:store-repair → /forge:repair, /forge:quiz-agent → /forge:check-agent. Old names redirect with deprecation notice.",
|
|
33
|
+
"Config: 'mode' field removed from .forge/config.json schema. Remove it manually from existing projects or run /forge:update."
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"0.52.0": {
|
|
37
|
+
"version": "0.52.1",
|
|
38
|
+
"date": "2026-05-26",
|
|
39
|
+
"notes": "fix(tool-discipline): add forge_artifact and forge_verify_apply discipline lines to meta/fragments/tool-discipline.md — fragment was missing two bullet points present in the FORGE_TOOL_DISCIPLINE TypeScript constant, causing subagents to receive incomplete discipline text when the fragment was present.",
|
|
40
|
+
"target": "fragments:tool-discipline",
|
|
41
|
+
"regenerate": [],
|
|
42
|
+
"breaking": false,
|
|
43
|
+
"manual": []
|
|
44
|
+
},
|
|
45
|
+
"0.51.4": {
|
|
46
|
+
"version": "0.52.0",
|
|
47
|
+
"date": "2026-05-26",
|
|
48
|
+
"notes": "New tools: artifact.cjs, verify-apply.cjs; tool-discipline.md canonical fragment; store-cli list/read --no-summaries, --fields, --limit, --count flags.",
|
|
49
|
+
"target": "tools:artifact,tools:verify-apply,tools:store-cli",
|
|
50
|
+
"regenerate": [
|
|
51
|
+
"tools"
|
|
52
|
+
],
|
|
53
|
+
"breaking": false,
|
|
54
|
+
"manual": []
|
|
55
|
+
},
|
|
2
56
|
"0.51.3": {
|
|
3
57
|
"version": "0.51.4",
|
|
4
58
|
"date": "2026-05-26",
|
|
@@ -65,7 +65,7 @@ Permitted fields: `project.name`, `project.prefix` only.
|
|
|
65
65
|
|
|
66
66
|
| Field | Impact |
|
|
67
67
|
|---|---|
|
|
68
|
-
| `project.prefix` | △ Requires regeneration — command folder renames from `.claude/commands/{old_lower}/` to `.claude/commands/{new_lower}/`, and generated workflow slash-command references become stale. Run `/forge:
|
|
68
|
+
| `project.prefix` | △ Requires regeneration — command folder renames from `.claude/commands/{old_lower}/` to `.claude/commands/{new_lower}/`, and generated workflow slash-command references become stale. Run `/forge:rebuild commands workflows` after confirming. |
|
|
69
69
|
|
|
70
70
|
*The prefix is stored as provided but the command namespace is always lowercase.*
|
|
71
71
|
| `project.name` | 〇 No regeneration needed. |
|
|
@@ -106,7 +106,7 @@ remote check — Tomoshibi only knows the locally installed version.
|
|
|
106
106
|
### Workflow or command explanation
|
|
107
107
|
|
|
108
108
|
Triggered by: "how does sprint planning work?", "explain the implement workflow",
|
|
109
|
-
"what does /forge:
|
|
109
|
+
"what does /forge:health --fix do?", etc.
|
|
110
110
|
|
|
111
111
|
Read the relevant file:
|
|
112
112
|
- Workflows: `.forge/workflows/<name>.md`
|
|
@@ -138,6 +138,147 @@ Use the Skill tool:
|
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
141
|
+
### What now?
|
|
142
|
+
|
|
143
|
+
Triggered by (fuzzy, case-insensitive, substring match): "what now", "what should i do", "what's next", "where do i start", "next steps", "get started", "how do i begin"
|
|
144
|
+
|
|
145
|
+
State detection — run in order, stop at first match:
|
|
146
|
+
|
|
147
|
+
**1. No config:**
|
|
148
|
+
|
|
149
|
+
If `HAS_CONFIG` env is false or `manage-config.cjs get project` returns an error:
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
灯 No Forge project found here.
|
|
153
|
+
Run /forge:init to create one, then come back and ask again.
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**2. No sprints:**
|
|
157
|
+
|
|
158
|
+
```sh
|
|
159
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" list sprint status=active
|
|
160
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" list sprint status=planning
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
If both are empty:
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
灯 Project initialized, no sprints yet.
|
|
167
|
+
Next step: /forge:new-sprint — start your first sprint by describing what you want to build.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**3. Active sprint — inspect tasks:**
|
|
171
|
+
|
|
172
|
+
```sh
|
|
173
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" list task status=planned
|
|
174
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" list task status=implementing
|
|
175
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" list task status=committed
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Determine sub-state from results:
|
|
179
|
+
|
|
180
|
+
- **All tasks committed** (no planned, no implementing):
|
|
181
|
+
```
|
|
182
|
+
灯 Sprint {id} complete — all tasks committed.
|
|
183
|
+
Next step: /forge:retro — capture lessons learned and close the sprint.
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
- **Any tasks implementing** (n implementing, m planned, k committed):
|
|
187
|
+
```
|
|
188
|
+
灯 Sprint {id} in progress — {n} tasks implementing, {m} planned, {k} committed.
|
|
189
|
+
Next step: /forge:run-task {next-planned-task-id} — continue the pipeline.
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
- **All tasks planned** (none started):
|
|
193
|
+
```
|
|
194
|
+
灯 Sprint {id} ready — {n} tasks planned, none started.
|
|
195
|
+
Next step: /forge:run-task {first-task-id} — kick off the first task.
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
### Commands
|
|
201
|
+
|
|
202
|
+
Triggered by (fuzzy, case-insensitive, substring match): "commands", "help", "available commands", "what commands", "command list", "what can you do", "list commands", "show commands"
|
|
203
|
+
|
|
204
|
+
Respond with this static reference (no shell commands needed):
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
灯 Forge v1.0 command reference:
|
|
208
|
+
|
|
209
|
+
Tier 1 — Start here:
|
|
210
|
+
/forge:ask Ask anything — this command
|
|
211
|
+
/forge:init Create a new Forge project
|
|
212
|
+
/forge:new-sprint Start a new sprint (intake)
|
|
213
|
+
/forge:status Current sprint and task overview
|
|
214
|
+
/forge:health Project health check and diagnostics
|
|
215
|
+
|
|
216
|
+
Tier 2 — Sprint workflow:
|
|
217
|
+
/forge:plan-sprint Decompose sprint into tasks
|
|
218
|
+
/forge:run-sprint Run all sprint tasks (automated)
|
|
219
|
+
/forge:run-task Run a single task through the pipeline
|
|
220
|
+
/forge:retro Sprint retrospective
|
|
221
|
+
/forge:rebuild Regenerate workflows, personas, commands
|
|
222
|
+
|
|
223
|
+
Tier 3 — Advanced:
|
|
224
|
+
/forge:search Query the task/sprint/bug store
|
|
225
|
+
/forge:repair Repair store integrity issues
|
|
226
|
+
/forge:check-agent Quiz an agent on project knowledge
|
|
227
|
+
/forge:config View or change project configuration
|
|
228
|
+
/forge:update Check for and install Forge updates
|
|
229
|
+
/forge:remove Remove a task or sprint
|
|
230
|
+
/forge:add-task Add a task to an active sprint
|
|
231
|
+
/forge:add-pipeline Register a custom pipeline
|
|
232
|
+
/forge:report-bug File a Forge bug report
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
### KB summary
|
|
238
|
+
|
|
239
|
+
Triggered by (fuzzy, case-insensitive, substring match): "what did you find", "show me", "kb summary", "knowledge base", "what's in the kb", "findings", "what do you know", "show kb", "summarize"
|
|
240
|
+
|
|
241
|
+
**1. No config:**
|
|
242
|
+
|
|
243
|
+
If `HAS_CONFIG` is false:
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
灯 No project config found — KB summary requires an initialized project.
|
|
247
|
+
Run /forge:init first.
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**2. Check calibration baseline:**
|
|
251
|
+
|
|
252
|
+
```sh
|
|
253
|
+
node "$FORGE_ROOT/tools/manage-config.cjs" get calibrationBaseline 2>/dev/null
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
- If absent or null → `calibration_status = "× No baseline — run /forge:health --fix to establish one."`
|
|
257
|
+
- If present → `calibration_status = "〇 Baseline established."`
|
|
258
|
+
|
|
259
|
+
**3. Read KB index:**
|
|
260
|
+
|
|
261
|
+
```sh
|
|
262
|
+
cat "$PROJECT_ROOT/engineering/MASTER_INDEX.md" 2>/dev/null
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
**4. Present compact summary:**
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
灯 Knowledge base summary:
|
|
269
|
+
|
|
270
|
+
KB freshness: {calibration_status}
|
|
271
|
+
|
|
272
|
+
Architecture: {n} sections — {list key architecture topics found}
|
|
273
|
+
Business domain: {n} entities — {list key entities found}
|
|
274
|
+
Features: {n} total — {n} active, {n} completed
|
|
275
|
+
Sprints: {n} total — {n} active, {n} completed, {n} abandoned
|
|
276
|
+
|
|
277
|
+
To explore further: /forge:search — query the store directly.
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
141
282
|
### Anything else
|
|
142
283
|
|
|
143
284
|
Ask one clarifying question. Do not guess.
|
|
@@ -149,6 +290,9 @@ Ask one clarifying question. Do not guess.
|
|
|
149
290
|
```
|
|
150
291
|
🏮 灯 Tomoshibi — I can help you with:
|
|
151
292
|
|
|
293
|
+
· What now? — context-aware next step based on your current project state
|
|
294
|
+
· Commands — full Forge v1.0 command reference, tiered by use case
|
|
295
|
+
· KB summary — what's in your knowledge base and how fresh it is
|
|
152
296
|
· Project status — active sprint, open bugs, active features, in-progress tasks
|
|
153
297
|
· Config queries — show or change project.name / project.prefix
|
|
154
298
|
· Version — locally installed Forge version
|
|
@@ -168,14 +312,14 @@ What would you like to know?
|
|
|
168
312
|
|---|---|---|
|
|
169
313
|
| `.forge/config.json` | Yes | `project.name`, `project.prefix` only — with `[Y/n]` confirm |
|
|
170
314
|
| `.forge/store/` | `list`/`read` via `store-cli.cjs` only | **Never** — redirect to workflow commands |
|
|
171
|
-
| `.forge/workflows/`, `.forge/personas/`, `.forge/skills/` | Yes — to explain content | **Never** — redirect to `/forge:
|
|
172
|
-
| `engineering/` KB | Yes — to answer questions | **Never** — redirect to `/forge:
|
|
173
|
-
| `.claude/commands/` | Yes — to explain | **Never** — redirect to `/forge:
|
|
315
|
+
| `.forge/workflows/`, `.forge/personas/`, `.forge/skills/` | Yes — to explain content | **Never** — redirect to `/forge:rebuild` |
|
|
316
|
+
| `engineering/` KB | Yes — to answer questions | **Never** — redirect to `/forge:health --fix` or sprint commands |
|
|
317
|
+
| `.claude/commands/` | Yes — to explain | **Never** — redirect to `/forge:rebuild commands` |
|
|
174
318
|
| `forge/` plugin source | No — internal impl detail | **Never** |
|
|
175
319
|
|
|
176
320
|
Forbidden store operations: `write`, `update-status`, `delete`, `emit`, `purge-events`.
|
|
177
321
|
|
|
178
|
-
Forbidden forge commands to invoke: `/forge:remove`, `/forge:init
|
|
322
|
+
Forbidden forge commands to invoke: `/forge:remove`, `/forge:init` —
|
|
179
323
|
Tomoshibi can *explain* these but never invokes them.
|
|
180
324
|
|
|
181
325
|
## Output rules
|
|
@@ -329,7 +329,7 @@ On success, print next steps:
|
|
|
329
329
|
and fill in any {PLACEHOLDER} sections before running a task.
|
|
330
330
|
2. Assign this pipeline to a task: set "pipeline": "{NAME}" in the task's
|
|
331
331
|
.forge/store/tasks/{TASK_ID}.json, or let the sprint planner auto-assign it.
|
|
332
|
-
3. Run /forge:
|
|
332
|
+
3. Run /forge:rebuild to update the orchestrator's pipeline routing.
|
|
333
333
|
```
|
|
334
334
|
|
|
335
335
|
---
|
|
@@ -48,7 +48,7 @@ If no `--sprint` argument:
|
|
|
48
48
|
- Filter to sprints with status `active` or `planning` (these are the only
|
|
49
49
|
states where adding tasks makes sense).
|
|
50
50
|
- If no active/planning sprints exist:
|
|
51
|
-
> △ No active or planning sprints found. Create a sprint first using sprint
|
|
51
|
+
> △ No active or planning sprints found. Create a sprint first using new-sprint.
|
|
52
52
|
> Exit without making changes.
|
|
53
53
|
- If only one active/planning sprint: auto-select it and tell the user:
|
|
54
54
|
> 〇 Auto-selected sprint: **{SPRINT_ID}** — {title}
|