@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
|
@@ -13,7 +13,7 @@ nothing is deleted until you confirm explicitly.
|
|
|
13
13
|
| Location | Contents | Safe to remove? |
|
|
14
14
|
|---|---|---|
|
|
15
15
|
| `.forge/` | Config, workflows, templates, task/sprint/bug store | Yes — regeneratable via `/forge:init` |
|
|
16
|
-
| `.claude/commands/` | Generated slash commands (sprint
|
|
16
|
+
| `.claude/commands/` | Generated slash commands (plan-sprint, run-task, etc.) | Yes — regeneratable via `/forge:init` |
|
|
17
17
|
| `{KB_PATH}/` | Knowledge base, sprint history, bug history, tools | **Caution** — represents accumulated project learning |
|
|
18
18
|
|
|
19
19
|
## Step 1 — Inventory what exists
|
|
@@ -90,8 +90,8 @@ Summarise exactly what will be deleted, then ask:
|
|
|
90
90
|
```
|
|
91
91
|
About to delete:
|
|
92
92
|
✗ .forge/
|
|
93
|
-
✗ .claude/commands/{PREFIX}/sprint
|
|
94
|
-
✗ .claude/commands/{PREFIX}/sprint
|
|
93
|
+
✗ .claude/commands/{PREFIX}/new-sprint.md
|
|
94
|
+
✗ .claude/commands/{PREFIX}/plan-sprint.md
|
|
95
95
|
✗ .claude/commands/{PREFIX}/run-task.md
|
|
96
96
|
✗ .claude/commands/{PREFIX}/run-sprint.md
|
|
97
97
|
✗ .claude/commands/{PREFIX}/plan.md
|
|
@@ -101,8 +101,7 @@ About to delete:
|
|
|
101
101
|
✗ .claude/commands/{PREFIX}/fix-bug.md
|
|
102
102
|
✗ .claude/commands/{PREFIX}/approve.md
|
|
103
103
|
✗ .claude/commands/{PREFIX}/commit.md
|
|
104
|
-
✗ .claude/commands/{PREFIX}/
|
|
105
|
-
✗ .claude/commands/{PREFIX}/retrospective.md
|
|
104
|
+
✗ .claude/commands/{PREFIX}/retro.md
|
|
106
105
|
[✗ {KB_PATH}/] ← only if option 3 confirmed
|
|
107
106
|
|
|
108
107
|
Type "confirm" to proceed, or anything else to cancel.
|
|
@@ -122,8 +121,8 @@ rm -rf .forge/
|
|
|
122
121
|
**Option 2 (standard):**
|
|
123
122
|
```bash
|
|
124
123
|
rm -rf .forge/
|
|
125
|
-
rm -f ".claude/commands/${PREFIX}/sprint
|
|
126
|
-
".claude/commands/${PREFIX}/sprint
|
|
124
|
+
rm -f ".claude/commands/${PREFIX}/new-sprint.md" \
|
|
125
|
+
".claude/commands/${PREFIX}/plan-sprint.md" \
|
|
127
126
|
".claude/commands/${PREFIX}/run-task.md" \
|
|
128
127
|
".claude/commands/${PREFIX}/run-sprint.md" \
|
|
129
128
|
".claude/commands/${PREFIX}/plan.md" \
|
|
@@ -133,16 +132,15 @@ rm -f ".claude/commands/${PREFIX}/sprint-intake.md" \
|
|
|
133
132
|
".claude/commands/${PREFIX}/fix-bug.md" \
|
|
134
133
|
".claude/commands/${PREFIX}/approve.md" \
|
|
135
134
|
".claude/commands/${PREFIX}/commit.md" \
|
|
136
|
-
".claude/commands/${PREFIX}/
|
|
137
|
-
".claude/commands/${PREFIX}/retrospective.md"
|
|
135
|
+
".claude/commands/${PREFIX}/retro.md"
|
|
138
136
|
rmdir ".claude/commands/${PREFIX}" 2>/dev/null || true
|
|
139
137
|
```
|
|
140
138
|
|
|
141
139
|
**Option 3 (full):**
|
|
142
140
|
```bash
|
|
143
141
|
rm -rf .forge/ "{KB_PATH}/"
|
|
144
|
-
rm -f ".claude/commands/${PREFIX}/sprint
|
|
145
|
-
".claude/commands/${PREFIX}/sprint
|
|
142
|
+
rm -f ".claude/commands/${PREFIX}/new-sprint.md" \
|
|
143
|
+
".claude/commands/${PREFIX}/plan-sprint.md" \
|
|
146
144
|
".claude/commands/${PREFIX}/run-task.md" \
|
|
147
145
|
".claude/commands/${PREFIX}/run-sprint.md" \
|
|
148
146
|
".claude/commands/${PREFIX}/plan.md" \
|
|
@@ -152,8 +150,7 @@ rm -f ".claude/commands/${PREFIX}/sprint-intake.md" \
|
|
|
152
150
|
".claude/commands/${PREFIX}/fix-bug.md" \
|
|
153
151
|
".claude/commands/${PREFIX}/approve.md" \
|
|
154
152
|
".claude/commands/${PREFIX}/commit.md" \
|
|
155
|
-
".claude/commands/${PREFIX}/
|
|
156
|
-
".claude/commands/${PREFIX}/retrospective.md"
|
|
153
|
+
".claude/commands/${PREFIX}/retro.md"
|
|
157
154
|
rmdir ".claude/commands/${PREFIX}" 2>/dev/null || true
|
|
158
155
|
```
|
|
159
156
|
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: repair
|
|
3
|
+
description: Diagnose and repair corrupted store records. Use when validate-store reports errors or store data seems wrong.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /forge:repair
|
|
7
|
+
|
|
8
|
+
Diagnose and repair corruption in the Forge JSON store.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
$ARGUMENTS
|
|
13
|
+
|
|
14
|
+
| Argument | Purpose |
|
|
15
|
+
|----------|---------|
|
|
16
|
+
| `--dry-run` | Show what would be repaired without making any changes |
|
|
17
|
+
|
|
18
|
+
## How to Run
|
|
19
|
+
|
|
20
|
+
1. Resolve the plugin root:
|
|
21
|
+
```
|
|
22
|
+
FORGE_ROOT: !`echo "${CLAUDE_PLUGIN_ROOT}"`
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
2. Run the four-phase repair workflow below. If `--dry-run` is in `$ARGUMENTS`,
|
|
26
|
+
preview all changes without writing — skip Phase 2 writes and Phase 3
|
|
27
|
+
writes, and skip Phase 4 verification since nothing changed.
|
|
28
|
+
|
|
29
|
+
## Phase 1: Diagnosis
|
|
30
|
+
|
|
31
|
+
Run the deterministic validator in JSON mode:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
node "$FORGE_ROOT/tools/validate-store.cjs" --dry-run --json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Parse the JSON output. Categorize each error by its `category` field:
|
|
38
|
+
|
|
39
|
+
| Category | Example | Deterministic fix? |
|
|
40
|
+
|----------|---------|--------------------|
|
|
41
|
+
| `missing-required` | `"sprintId": null` on a sprint | Yes — backfill |
|
|
42
|
+
| `type-mismatch` | `"iteration": "1"` instead of `1` | Yes — coerce |
|
|
43
|
+
| `invalid-enum` | `"status": "in-progress"` on a bug | No — needs judgment |
|
|
44
|
+
| `undeclared-field` | `"priority": "high"` on a task | No — needs judgment |
|
|
45
|
+
| `orphaned-fk` | `taskId` pointing to deleted task in event | No — needs judgment |
|
|
46
|
+
| `filename-mismatch` | Event filename != eventId | Yes — rename |
|
|
47
|
+
| `minimum-violation` | `"iteration": 0` | Yes — coerce |
|
|
48
|
+
| `orphan-directory` | Sprint dir with no sprint record | No — needs judgment |
|
|
49
|
+
| `stale-path` | `path` pointing to nonexistent dir | No — needs judgment |
|
|
50
|
+
|
|
51
|
+
## Phase 2: Auto-Fix
|
|
52
|
+
|
|
53
|
+
Run the deterministic validator with `--fix`:
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
node "$FORGE_ROOT/tools/validate-store.cjs" --fix --json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
For dry-run, preview without writing:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
node "$FORGE_ROOT/tools/validate-store.cjs" --fix --dry-run --json
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Report each fix to the user (entity, field, what was backfilled or nullified).
|
|
66
|
+
|
|
67
|
+
## Phase 3: LLM-Judgment Fixes
|
|
68
|
+
|
|
69
|
+
For each remaining error from Phase 1 that was not auto-fixed, apply LLM judgment:
|
|
70
|
+
|
|
71
|
+
1. **Read the corrupted record**:
|
|
72
|
+
```sh
|
|
73
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" read <entity> <id> --json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
2. **Determine the correct value** based on schema definitions, store context, and
|
|
77
|
+
the judgment rules below.
|
|
78
|
+
|
|
79
|
+
3. **Present the proposed fix** to the user with:
|
|
80
|
+
- Entity ID and field affected
|
|
81
|
+
- Current (corrupted) value
|
|
82
|
+
- Proposed (corrected) value
|
|
83
|
+
- Reasoning
|
|
84
|
+
|
|
85
|
+
If the user declines, skip the fix and note it in the report.
|
|
86
|
+
|
|
87
|
+
4. **Apply the fix** using the appropriate command:
|
|
88
|
+
|
|
89
|
+
| Corruption Pattern | Repair Action | Command |
|
|
90
|
+
|-------------------|---------------|---------|
|
|
91
|
+
| Invalid enum value | Map to nearest valid enum | `store-cli.cjs update-status <entity> <id> <field> <value> [--force]` |
|
|
92
|
+
| Undeclared field | Remove the field by rewriting | `store-cli.cjs write <entity> '<fixed-json>'` |
|
|
93
|
+
| Type mismatch | Coerce to correct type and rewrite | `store-cli.cjs write <entity> '<fixed-json>'` |
|
|
94
|
+
| Orphaned FK | Nullify or remap to existing entity | `store-cli.cjs write <entity> '<fixed-json>'` |
|
|
95
|
+
| Dangling sprint.taskIds | Remove taskIds referencing non-existent tasks | `store-cli.cjs write sprint '<fixed-json>'` |
|
|
96
|
+
| Illegal status transition | Force-correct to valid state | `store-cli.cjs update-status <entity> <id> status <value> --force` |
|
|
97
|
+
| Stale COLLATION_STATE | Regenerate via collate | `node "$FORGE_ROOT/tools/collate.cjs"` |
|
|
98
|
+
|
|
99
|
+
### Judgment Rules: Invalid Enum Values
|
|
100
|
+
|
|
101
|
+
Map common misspellings and variant forms to canonical values:
|
|
102
|
+
|
|
103
|
+
| Entity | Field | Common Misspellings | Canonical Values |
|
|
104
|
+
|--------|-------|--------------------|------------------|
|
|
105
|
+
| Sprint | status | "in-progress" | active |
|
|
106
|
+
| Sprint | status | "done", "finished" | completed |
|
|
107
|
+
| Task | status | "in-progress" | implementing |
|
|
108
|
+
| Task | status | "in-review", "review" | review-approved |
|
|
109
|
+
| Task | status | "done", "finished" | committed |
|
|
110
|
+
| Bug | severity | "high", "critical" | critical |
|
|
111
|
+
| Bug | severity | "medium" | major |
|
|
112
|
+
| Bug | severity | "low" | minor |
|
|
113
|
+
| Bug | status | "open" | reported |
|
|
114
|
+
| Bug | status | "working" | in-progress |
|
|
115
|
+
| Feature | status | "complete", "done" | shipped |
|
|
116
|
+
|
|
117
|
+
When no reasonable mapping exists, ask the user to choose from valid values.
|
|
118
|
+
|
|
119
|
+
### Judgment Rules: Orphaned References
|
|
120
|
+
|
|
121
|
+
- **Event.taskId → deleted task**: If the event's sprintId is valid, nullify the
|
|
122
|
+
taskId. If the sprint also doesn't exist, ask the user whether to delete the
|
|
123
|
+
event or create a stub sprint.
|
|
124
|
+
- **Sprint.taskIds containing deleted task IDs**: Remove the deleted IDs from the
|
|
125
|
+
array and rewrite the sprint.
|
|
126
|
+
- **Undeclared fields**: Remove the field and rewrite. Mention the removed data in
|
|
127
|
+
the report so the user can decide whether to add it to the schema.
|
|
128
|
+
|
|
129
|
+
### Hard Rules
|
|
130
|
+
|
|
131
|
+
1. **Never fall back to direct file writes.** All repairs go through
|
|
132
|
+
`store-cli.cjs`. If it rejects a write, fix the data and retry (max 2).
|
|
133
|
+
2. **Never delete data without confirmation.** Ask the user before deleting any
|
|
134
|
+
record.
|
|
135
|
+
3. **Never skip Phase 4 verification.** Always re-run validate-store after
|
|
136
|
+
repairs.
|
|
137
|
+
4. **Preserve data priority.** Prefer corrections that retain more original data.
|
|
138
|
+
Mapping "in-progress" → "implementing" is better than resetting to "draft".
|
|
139
|
+
|
|
140
|
+
## Phase 4: Verification
|
|
141
|
+
|
|
142
|
+
Re-run the validator to confirm the store is clean:
|
|
143
|
+
|
|
144
|
+
```sh
|
|
145
|
+
node "$FORGE_ROOT/tools/validate-store.cjs" --dry-run --json
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
If `"ok": true`, report success. If errors remain, report them as unresolved
|
|
149
|
+
with suggestions for next steps.
|
|
150
|
+
|
|
151
|
+
## Repair Report
|
|
152
|
+
|
|
153
|
+
After all phases, output a structured report:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
# Store Repair Report
|
|
157
|
+
|
|
158
|
+
## Phase 1: Diagnosis
|
|
159
|
+
- Errors found: N
|
|
160
|
+
- Warnings found: M
|
|
161
|
+
- Categories: {breakdown by category}
|
|
162
|
+
|
|
163
|
+
## Phase 2: Auto-Fix
|
|
164
|
+
- Fixes applied: N
|
|
165
|
+
- Details: {list of each fix}
|
|
166
|
+
|
|
167
|
+
## Phase 3: LLM-Judgment Fixes
|
|
168
|
+
- Fixes proposed: N
|
|
169
|
+
- Fixes applied: M (with user approval)
|
|
170
|
+
- Fixes skipped: K (user declined)
|
|
171
|
+
- Details: {list of each proposed change with reasoning}
|
|
172
|
+
|
|
173
|
+
## Phase 4: Verification
|
|
174
|
+
- Errors remaining: N
|
|
175
|
+
- Warnings remaining: M
|
|
176
|
+
- Status: PASS / FAIL
|
|
177
|
+
|
|
178
|
+
## Unresolved Issues
|
|
179
|
+
{List of issues that could not be automatically resolved, with suggestions}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## On Error
|
|
183
|
+
|
|
184
|
+
If `validate-store.cjs` crashes or returns unexpected output, report the error
|
|
185
|
+
and suggest running `/forge:report-bug` if it appears to be a Forge bug. Do NOT
|
|
186
|
+
attempt to continue repairs after an unexpected error in a deterministic tool —
|
|
187
|
+
the store state is unknown and further writes could cause additional corruption.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: search
|
|
3
|
+
description: Query the Forge store by natural language or exact flags. Use for finding tasks, bugs, sprints, or features without manually reading the knowledge base.
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /forge:search
|
|
9
|
+
|
|
10
|
+
Query the Forge JSON store by intent, sprint, entity ID, or keyword.
|
|
11
|
+
|
|
12
|
+
## Locate plugin root
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
FORGE_ROOT: !`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Dispatch
|
|
19
|
+
|
|
20
|
+
If `$ARGUMENTS` starts with `--` (flags), run exact query:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" query $ARGUMENTS
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Otherwise run NLP intent query:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" nlp "$ARGUMENTS"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If `$ARGUMENTS` is empty, print usage:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Usage: /forge:search <intent or flags>
|
|
36
|
+
|
|
37
|
+
Examples:
|
|
38
|
+
/forge:search open bugs in S12
|
|
39
|
+
/forge:search WI-BUG-047
|
|
40
|
+
/forge:search --sprint S12 --status in-progress
|
|
41
|
+
/forge:search --keyword auth
|
|
42
|
+
/forge:search schema
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Output
|
|
46
|
+
|
|
47
|
+
Results are printed as JSON. Key fields:
|
|
48
|
+
|
|
49
|
+
| Field | Meaning |
|
|
50
|
+
|-------|---------|
|
|
51
|
+
| `results[].id` | Entity ID |
|
|
52
|
+
| `results[].title` | Entity title |
|
|
53
|
+
| `results[].status` | Current status |
|
|
54
|
+
| `results[].type` | `task`, `bug`, `sprint`, or `feature` |
|
|
55
|
+
| `results[].relationships` | FK IDs (sprintId, featureId, blockedBy, etc.) |
|
|
56
|
+
| `results[].fileRefs.md` | Path to INDEX.md for this entity |
|
|
57
|
+
| `results[].excerpt` | First 4 sentences from INDEX.md |
|
|
58
|
+
| `traversalTrace` | NLP parse steps and confidence |
|
|
59
|
+
| `meta.totalTimeMs` | Query wall-clock time |
|
|
60
|
+
|
|
61
|
+
## Schema reference
|
|
62
|
+
|
|
63
|
+
To see the project's entity schemas and NLP grammar vocabulary:
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" schema
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Skills
|
|
70
|
+
|
|
71
|
+
- `forge:store-query-nlp` — NLP intent reference and output schema
|
|
72
|
+
- `forge:store-query-grammar` — Token vocabulary for constructing queries
|
|
73
|
+
- `forge:store-custodian` — Write/mutate operations (separate from query)
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: status
|
|
3
|
+
description: Sprint and task summary — shows current sprint name, task status counts, and recent activity
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /forge:status
|
|
9
|
+
|
|
10
|
+
Quick overview of the current sprint and task state.
|
|
11
|
+
|
|
12
|
+
## Locate plugin root
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
FORGE_ROOT: !`echo "${CLAUDE_PLUGIN_ROOT}"`
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Locate project config
|
|
19
|
+
|
|
20
|
+
Check whether `.forge/config.json` exists in the current working directory.
|
|
21
|
+
If it does not exist, output:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
× forge:status — not inside a Forge project. Run /forge:init first.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
and stop.
|
|
28
|
+
|
|
29
|
+
## Gather sprint data
|
|
30
|
+
|
|
31
|
+
Run:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" query --list-sprints --no-excerpts
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Parse the JSON output. Filter `results` to entries where `status == "active"`.
|
|
38
|
+
Sort by `id` descending (most recent sprint first). If no active sprints are found, output:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
forge:status — No active sprint found.
|
|
42
|
+
Run /forge:init to initialise a project, or check your store with /forge:search --list-sprints.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
and stop.
|
|
46
|
+
|
|
47
|
+
Use the first (most recent) active sprint as the current sprint.
|
|
48
|
+
|
|
49
|
+
## Gather task data
|
|
50
|
+
|
|
51
|
+
Run:
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
node "$FORGE_ROOT/tools/store-cli.cjs" query --sprint <SPRINT_ID> --no-excerpts
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
From the JSON output, collect all results where `type == "task"`.
|
|
58
|
+
|
|
59
|
+
## Format and output
|
|
60
|
+
|
|
61
|
+
Print a markdown status report in this format:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
## Sprint: <SPRINT_ID> — <sprint.title> (<sprint.status>)
|
|
65
|
+
|
|
66
|
+
### Tasks (<total> total)
|
|
67
|
+
<status1>: <count> | <status2>: <count> | ...
|
|
68
|
+
|
|
69
|
+
### Recent Activity
|
|
70
|
+
- <TASK_ID>: <task.title truncated to 60 chars> → <task.status>
|
|
71
|
+
...
|
|
72
|
+
|
|
73
|
+
### Next: /forge:run-task <NEXT_TASK_ID>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Task counts:** Group tasks by status. Show only status buckets with count > 0, separated by ` | `. Omit zero-count buckets.
|
|
77
|
+
|
|
78
|
+
**Recent Activity:** Show up to 5 tasks sorted by taskId descending (highest T-number first). Each line:
|
|
79
|
+
` - <task.id>: <title> → <status>`
|
|
80
|
+
|
|
81
|
+
**Next action:** Find the first task (sorted by taskId ascending) that has status `implementing` or `planned`. Suggest `/forge:run-task <TASK_ID>`. If all tasks are committed or abandoned, output `### Next: Sprint complete — run /forge:retro`.
|
|
82
|
+
|
|
83
|
+
**Multiple active sprints:** If more than one active sprint exists, add a note after the report:
|
|
84
|
+
```
|
|
85
|
+
Note: <N> other active sprint(s) found. Showing most recent (<SPRINT_ID>).
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Arguments
|
|
89
|
+
|
|
90
|
+
$ARGUMENTS
|
|
91
|
+
|
|
92
|
+
| Argument | Purpose |
|
|
93
|
+
|----------|---------|
|
|
94
|
+
| `--sprint <ID>` | Show status for a specific sprint instead of the most recent active one |
|
|
95
|
+
|
|
96
|
+
If `--sprint <ID>` is in `$ARGUMENTS`, use that sprint ID directly (skip the list-sprints step and active-filter). If the sprint is not found, output:
|
|
97
|
+
```
|
|
98
|
+
× forge:status — sprint <ID> not found. Run /forge:search --list-sprints to see available sprints.
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## On error
|
|
102
|
+
|
|
103
|
+
If any step above fails unexpectedly, describe what went wrong and ask:
|
|
104
|
+
|
|
105
|
+
> "This looks like a Forge bug. Would you like to file a report to help improve it? Run `/forge:report-bug` — I'll pre-fill the report from this conversation."
|
|
@@ -1,73 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: store-query
|
|
3
|
-
description:
|
|
4
|
-
allowed-tools:
|
|
5
|
-
- Bash
|
|
3
|
+
description: Renamed in v1.0 — use /forge:search
|
|
6
4
|
---
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Query the Forge JSON store by intent, sprint, entity ID, or keyword.
|
|
11
|
-
|
|
12
|
-
## Locate plugin root
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
FORGE_ROOT: !`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Dispatch
|
|
19
|
-
|
|
20
|
-
If `$ARGUMENTS` starts with `--` (flags), run exact query:
|
|
21
|
-
|
|
22
|
-
```sh
|
|
23
|
-
node "$FORGE_ROOT/tools/store-cli.cjs" query $ARGUMENTS
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Otherwise run NLP intent query:
|
|
27
|
-
|
|
28
|
-
```sh
|
|
29
|
-
node "$FORGE_ROOT/tools/store-cli.cjs" nlp "$ARGUMENTS"
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
If `$ARGUMENTS` is empty, print usage:
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
Usage: /forge:store-query <intent or flags>
|
|
36
|
-
|
|
37
|
-
Examples:
|
|
38
|
-
/forge:store-query open bugs in S12
|
|
39
|
-
/forge:store-query WI-BUG-047
|
|
40
|
-
/forge:store-query --sprint S12 --status in-progress
|
|
41
|
-
/forge:store-query --keyword auth
|
|
42
|
-
/forge:store-query schema
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Output
|
|
46
|
-
|
|
47
|
-
Results are printed as JSON. Key fields:
|
|
48
|
-
|
|
49
|
-
| Field | Meaning |
|
|
50
|
-
|-------|---------|
|
|
51
|
-
| `results[].id` | Entity ID |
|
|
52
|
-
| `results[].title` | Entity title |
|
|
53
|
-
| `results[].status` | Current status |
|
|
54
|
-
| `results[].type` | `task`, `bug`, `sprint`, or `feature` |
|
|
55
|
-
| `results[].relationships` | FK IDs (sprintId, featureId, blockedBy, etc.) |
|
|
56
|
-
| `results[].fileRefs.md` | Path to INDEX.md for this entity |
|
|
57
|
-
| `results[].excerpt` | First 4 sentences from INDEX.md |
|
|
58
|
-
| `traversalTrace` | NLP parse steps and confidence |
|
|
59
|
-
| `meta.totalTimeMs` | Query wall-clock time |
|
|
60
|
-
|
|
61
|
-
## Schema reference
|
|
62
|
-
|
|
63
|
-
To see the project's entity schemas and NLP grammar vocabulary:
|
|
64
|
-
|
|
65
|
-
```sh
|
|
66
|
-
node "$FORGE_ROOT/tools/store-cli.cjs" schema
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Skills
|
|
70
|
-
|
|
71
|
-
- `forge:store-query-nlp` — NLP intent reference and output schema
|
|
72
|
-
- `forge:store-query-grammar` — Token vocabulary for constructing queries
|
|
73
|
-
- `forge:store-custodian` — Write/mutate operations (separate from query)
|
|
6
|
+
× /forge:store-query was renamed to /forge:search in v1.0.
|