@entelligentsia/forgecli 0.21.0 โ 1.0.3
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 +44 -0
- package/README.md +31 -33
- package/dist/CHANGELOG-forge-plugin.md +142 -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/audience-gate.js +1 -1
- package/dist/extensions/forgecli/audience-gate.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/fix-bug.d.ts +1 -2
- package/dist/extensions/forgecli/fix-bug.js +678 -609
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-artifact-tool.d.ts +6 -8
- package/dist/extensions/forgecli/forge-artifact-tool.js +94 -197
- 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 +26 -0
- package/dist/extensions/forgecli/forge-subagent.js +42 -18
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-tools.d.ts +34 -4
- package/dist/extensions/forgecli/forge-tools.js +191 -79
- 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/run-task.js +461 -391
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/session-registry.d.ts +12 -0
- package/dist/extensions/forgecli/session-registry.js +23 -0
- package/dist/extensions/forgecli/session-registry.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/subagent/caller-context.d.ts +35 -11
- package/dist/extensions/forgecli/subagent/caller-context.js +49 -21
- package/dist/extensions/forgecli/subagent/caller-context.js.map +1 -1
- package/dist/extensions/forgecli/subagent/orchestrator-transcript.d.ts +66 -0
- package/dist/extensions/forgecli/subagent/orchestrator-transcript.js +66 -0
- package/dist/extensions/forgecli/subagent/orchestrator-transcript.js.map +1 -0
- package/dist/extensions/forgecli/subagent/phase-guard.d.ts +34 -0
- package/dist/extensions/forgecli/subagent/phase-guard.js +139 -0
- package/dist/extensions/forgecli/subagent/phase-guard.js.map +1 -0
- package/dist/extensions/forgecli/subagent/phase-summary-map.d.ts +1 -0
- package/dist/extensions/forgecli/subagent/phase-summary-map.js +22 -0
- package/dist/extensions/forgecli/subagent/phase-summary-map.js.map +1 -0
- package/dist/extensions/forgecli/thread-switcher.js +2 -2
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/validate.js +17 -2
- package/dist/extensions/forgecli/validate.js.map +1 -1
- package/dist/extensions/forgecli/viewport-events.d.ts +4 -0
- package/dist/extensions/forgecli/viewport-events.js +18 -1
- package/dist/extensions/forgecli/viewport-events.js.map +1 -1
- package/dist/extensions/forgecli/viewport-renderer.d.ts +12 -2
- package/dist/extensions/forgecli/viewport-renderer.js +8 -6
- package/dist/extensions/forgecli/viewport-renderer.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 +11 -29
- 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/triage.md +190 -0
- 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 +63 -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 +41 -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-bug-triage.md +210 -0
- 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 +11 -29
- 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 +25 -8
- package/dist/forge-payload/tools/artifact.cjs +324 -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/node_modules/@entelligentsia/forge-compress/dist/compressor.d.ts +6 -0
- package/node_modules/@entelligentsia/forge-compress/dist/compressor.js +137 -0
- package/node_modules/@entelligentsia/forge-compress/dist/entropy.d.ts +3 -0
- package/node_modules/@entelligentsia/forge-compress/dist/entropy.js +99 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/entity.d.ts +8 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/entity.js +149 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/index.d.ts +7 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/index.js +4 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/markdown.d.ts +5 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/markdown.js +92 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/query.d.ts +7 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/query.js +60 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/validate.d.ts +1 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/validate.js +82 -0
- package/node_modules/@entelligentsia/forge-compress/dist/index.d.ts +6 -0
- package/node_modules/@entelligentsia/forge-compress/dist/index.js +5 -0
- package/node_modules/@entelligentsia/forge-compress/dist/progressive.d.ts +1 -0
- package/node_modules/@entelligentsia/forge-compress/dist/progressive.js +108 -0
- package/node_modules/@entelligentsia/forge-compress/dist/strip.d.ts +4 -0
- package/node_modules/@entelligentsia/forge-compress/dist/strip.js +55 -0
- package/node_modules/@entelligentsia/forge-compress/dist/tokens.d.ts +2 -0
- package/node_modules/@entelligentsia/forge-compress/dist/tokens.js +17 -0
- package/node_modules/@entelligentsia/forge-compress/package.json +45 -0
- package/node_modules/@entelligentsia/forge-compress/src/__tests__/compress.test.ts +409 -0
- package/node_modules/@entelligentsia/forge-compress/src/compressor.ts +147 -0
- package/node_modules/@entelligentsia/forge-compress/src/entropy.ts +105 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/entity.ts +184 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/index.ts +10 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/markdown.ts +122 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/query.ts +105 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/validate.ts +86 -0
- package/node_modules/@entelligentsia/forge-compress/src/index.ts +22 -0
- package/node_modules/@entelligentsia/forge-compress/src/progressive.ts +123 -0
- package/node_modules/@entelligentsia/forge-compress/src/strip.ts +58 -0
- package/node_modules/@entelligentsia/forge-compress/src/tokens.ts +19 -0
- package/package.json +10 -15
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-phases.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/forge-init/run-phases.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,iFAAiF;AACjF,EAAE;AACF,wCAAwC;AACxC,0EAA0E;AAC1E,iEAAiE;AACjE,EAAE;AACF,oBAAoB;AACpB,2EAA2E;AAC3E,+CAA+C;AAC/C,kFAAkF;AAClF,mEAAmE;AACnE,wEAAwE;AACxE,qEAAqE;AAErE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACN,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE1E,gFAAgF;AAEhF,gFAAgF;AAChF,SAAS,eAAe,CAAC,UAAkB,EAAE,QAAe;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,SAAS,QAAQ,GAAG,CAAC;IACrC,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACR,4CAA4C;IAC7C,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACd,SAAS,QAAQ,6BAA6B,SAAS,eAAe,OAAO,SAAS;YACrF,2EAA2E,CAC5E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,sDAAsD;AACtD,KAAK,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,GAAW,EACX,QAAgB,EAChB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO;IACxC,MAAM,aAAa,CAClB,MAAM,EACN,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,EACrE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CACtB,CAAC,KAAK,CAAC,GAAG,EAAE;QACZ,eAAe;IAChB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,GAAW,EACX,UAAkB,EAClB,SAAiB,EACjB,WAAoC,EACpC,GAA4B,EAC5B,WAA4C,EAC5C,WAAgC,EAChC,gBAA+B;IAE/B,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;IAEvD,MAAM,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAE/D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;IAEvD,sCAAsC;IACtC,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACJ,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,WAAW,EAAE,CAAC;IAEpB,SAAS;IACT,IAAI,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IAErC,6EAA6E;IAC7E,8EAA8E;IAC9E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,UAAU,GACf,yCAAyC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YACzE,oEAAoE;YACpE,0DAA0D;YAC1D,kDAAkD,CAAC;QACpD,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9B,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACzE,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACnC,qBAAqB,EACrB,0BAA0B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAC9E,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,6DAA6D;IAC7D,+DAA+D;IAC/D,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACzB,MAAM,aAAa,GAClB,oFAAoF;YACpF,2IAA2I,CAAC;QAC7I,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CACpC,sDAAsD,EACtD,kCAAkC,CAClC,CAAC;YACF,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBACnE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACrC,MAAM,eAAe,CACpB,gBAAgB,EAChB,CAAC,KAAK,EAAE,mBAAmB,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,EAC/C,GAAG,EACH,GAAG,EACH,iCAAiC,CACjC,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,yDAAyD;IACzD,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,gEAAgE;QAC/D,mEAAmE,EACpE,MAAM,CACN,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACnE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,MAAM,eAAe,CACpB,gBAAgB,EAChB,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAChC,GAAG,EACH,GAAG,EACH,+BAA+B,CAC/B,CAAC;QACF,MAAM,eAAe,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAClG,CAAC;IACD,KAAK,WAAW,CAAC,CAAC,kDAAkD;IAEpE,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;AACb,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,GAAW,EACX,UAAkB,EAClB,SAAiB,EACjB,WAAmB,EACnB,WAAoC,EACpC,GAA4B,EAC5B,WAA4C,EAC5C,WAAgC,EAChC,gBAA+B;IAE/B,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;IAExD,MAAM,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEjE,kCAAkC;IAClC,IAAI,MAAM,GAAG,aAAa,CAAC;IAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,KAA4C,CAAC;IAC5E,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QACxF,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC;IACjC,CAAC;IAED,mCAAmC;IACnC,MAAM,IAAI,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;KACjC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,YAAY;QACb,CAAC;IACF,CAAC;IAED,sCAAsC;IACtC,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACJ,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,WAAW,EAAE,CAAC;IAEpB,SAAS;IACT,IAAI,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE7C,6EAA6E;IAC7E,8EAA8E;IAC9E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,UAAU,GACf,iDAAiD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YACjF,8DAA8D,MAAM,iBAAiB,CAAC;QACvF,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9B,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACzE,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACnC,qBAAqB,EACrB,0BAA0B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAC9E,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,iEAAiE;IACjE,IAAI,cAAc,GAAG,MAAM,CAAC;IAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACJ,MAAM,SAAS,GAAG,WAAW,CAAC,OAA8C,CAAC;QAC7E,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ;YAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACjF,MAAM,WAAW,GAAG,WAAW,CAAC,KAA4C,CAAC;QAC7E,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ;YAAE,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC;IAC1G,CAAC;IAAC,MAAM,CAAC;QACR,eAAe;IAChB,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,UAAU,GAAG,mBAAmB,CACrC;YACC,WAAW,EAAI,WAAW,CAAC,OAAmC,EAAE,IAAe,IAAI,WAAW;YAC9F,MAAM;YACN,MAAM,EAAE,cAAc;SACtB,EACD,WAGC,CACD,CAAC;QACF,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACnC,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACrC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC,OAAO,IAAI,SAAS,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAC/G,CAAC;IAED,uBAAuB;IACvB,IAAI,oBAAoB,GAAG,EAAE,CAAC;IAC9B,IAAI,CAAC;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAyB,CAAC;QACvF,oBAAoB,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACR,qCAAqC;IACtC,CAAC;IACD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;IACvF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACnE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,MAAM,eAAe,CACpB,gBAAgB,EAChB,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EACxD,GAAG,EACH,GAAG,EACH,mCAAmC,CACnC,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;AACb,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,GAAW,EACX,UAAkB,EAClB,SAAiB,EACjB,GAA4B;IAE5B,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAE3D,MAAM,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAEnE,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAExD,iDAAiD;IACjD,IAAI,MAAM,GAAG,aAAa,CAAC;IAC3B,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACzF,IAAI,GAAG,EAAE,KAAK,EAAE,WAAW;YAAE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACR,uBAAuB;IACxB,CAAC;IAED,8DAA8D;IAC9D,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACjE,MAAM,eAAe,CACpB,cAAc,EACd;YACC,cAAc;YACd,UAAU;YACV,aAAa;YACb,WAAW;YACX,UAAU;YACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC;YACvC,WAAW;YACX,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,sBAAsB,CAAC;YAChD,OAAO;YACP,GAAG;SACH,EACD,GAAG,EACH,GAAG,EACH,yBAAyB,EACzB,KAAK,CACL,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,MAAM,eAAe,CACpB,oBAAoB,EACpB;YACC,UAAU;YACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC;YACvC,YAAY;YACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC;YACpC,aAAa;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC;YACrC,MAAM;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;YACtB,OAAO;YACP,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC;YAC3C,YAAY;YACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC;SAC7C,EACD,GAAG,EACH,GAAG,EACH,oBAAoB,EACpB,KAAK,CACL,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,qBAAqB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACjD,mFAAmF;YACnF,wHAAwH,EACzH,OAAO,CACP,CAAC;QACF,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -6,15 +6,24 @@ export interface VerifyResult {
|
|
|
6
6
|
/**
|
|
7
7
|
* Verify Phase 1 deliverable: `.forge/config.json` exists and contains all required fields.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* directly โ intentionally does NOT use a cached value because Phase 1 writes this file.
|
|
9
|
+
* Async wrapper over `verify-phase.cjs --phase 1`.
|
|
11
10
|
*/
|
|
12
|
-
export declare function verifyPhase1(cwd: string): VerifyResult
|
|
11
|
+
export declare function verifyPhase1(cwd: string): Promise<VerifyResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Verify Phase 1 foundation fields only: `project.name` and `project.prefix`.
|
|
14
|
+
*
|
|
15
|
+
* Async wrapper over `verify-phase.cjs --phase 1 --foundation-only`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function verifyPhase1Foundation(cwd: string): Promise<VerifyResult>;
|
|
13
18
|
/**
|
|
14
19
|
* Verify Phase 2 deliverable: 7 architecture KB docs exist under `kbPath/architecture/`.
|
|
20
|
+
*
|
|
21
|
+
* Async wrapper over `verify-phase.cjs --phase 2 --kb-path <kbPath>`.
|
|
15
22
|
*/
|
|
16
|
-
export declare function verifyPhase2(cwd: string, kbPath: string): VerifyResult
|
|
23
|
+
export declare function verifyPhase2(cwd: string, kbPath: string): Promise<VerifyResult>;
|
|
17
24
|
/**
|
|
18
25
|
* Verify Phase 3 deliverable: all four `.forge/` subdirectories contain at least one file.
|
|
26
|
+
*
|
|
27
|
+
* Async wrapper over `verify-phase.cjs --phase 3`.
|
|
19
28
|
*/
|
|
20
|
-
export declare function verifyPhase3(cwd: string): VerifyResult
|
|
29
|
+
export declare function verifyPhase3(cwd: string): Promise<VerifyResult>;
|
|
@@ -1,81 +1,98 @@
|
|
|
1
|
-
// forge-init/verifiers.ts โ per-phase deliverable verification helpers (FORGE-
|
|
1
|
+
// forge-init/verifiers.ts โ per-phase deliverable verification helpers (FORGE-S26-T17)
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
3
|
+
// Thin async wrappers over the shared `verify-phase.cjs` plugin tool.
|
|
4
|
+
// Each function calls `verify-phase.cjs` via execFileAsync, parses the JSON
|
|
5
|
+
// output, and returns a VerifyResult. Exit code 0 โ ok=true; exit code 1 โ
|
|
6
|
+
// ok=false with parsed JSON; any other error โ ok=false with reason.
|
|
7
|
+
//
|
|
8
|
+
// The VerifyResult interface is defined here (authoritative home after
|
|
9
|
+
// phase-descriptors.ts deletion) and re-exported for all consumers.
|
|
10
|
+
//
|
|
11
|
+
// Iron Law 6: execFileAsync with argv arrays โ no shell-string interpolation.
|
|
6
12
|
import * as fs from "node:fs";
|
|
7
13
|
import * as path from "node:path";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return { ok: false, missing: [".forge/config.json"], reason: "config file not written" };
|
|
14
|
+
import { fileURLToPath } from "node:url";
|
|
15
|
+
import { execFileAsync } from "../lib/exec-helpers.js";
|
|
16
|
+
/** Absolute path to verify-phase.cjs in the bundled forge-payload. */
|
|
17
|
+
function resolveVerifyPhaseTool(cwd) {
|
|
18
|
+
// Try forgeRoot from config.json first (populated after Phase 4)
|
|
19
|
+
let forgeRoot = "";
|
|
20
|
+
try {
|
|
21
|
+
const cfg = JSON.parse(fs.readFileSync(path.join(cwd, ".forge", "config.json"), "utf8"));
|
|
22
|
+
forgeRoot = cfg.paths?.forgeRoot ?? "";
|
|
18
23
|
}
|
|
19
|
-
|
|
24
|
+
catch {
|
|
25
|
+
// fall through โ forgeRoot stays ""
|
|
26
|
+
}
|
|
27
|
+
if (forgeRoot) {
|
|
28
|
+
return path.join(forgeRoot, "tools", "verify-phase.cjs");
|
|
29
|
+
}
|
|
30
|
+
// Fallback: resolve from this file's location
|
|
31
|
+
// dist/extensions/forgecli/forge-init/verifiers.js
|
|
32
|
+
// โ dist/extensions/forgecli/ โ dist/extensions/ โ dist/ โ <pkg-root>/
|
|
33
|
+
// โ dist/forge-payload/tools/
|
|
34
|
+
const thisDir = path.dirname(fileURLToPath(import.meta.url));
|
|
35
|
+
const pkgRoot = path.resolve(thisDir, "..", "..", "..", "..");
|
|
36
|
+
return path.join(pkgRoot, "dist", "forge-payload", "tools", "verify-phase.cjs");
|
|
37
|
+
}
|
|
38
|
+
/** Internal: run verify-phase.cjs with given args and parse result. */
|
|
39
|
+
async function runVerifyPhase(cwd, args) {
|
|
40
|
+
const toolPath = resolveVerifyPhaseTool(cwd);
|
|
20
41
|
try {
|
|
21
|
-
|
|
42
|
+
await execFileAsync("node", [toolPath, ...args], { cwd, encoding: "utf8" });
|
|
43
|
+
// exit 0 โ pass
|
|
44
|
+
return { ok: true, missing: [] };
|
|
22
45
|
}
|
|
23
46
|
catch (err) {
|
|
24
47
|
const e = err;
|
|
25
|
-
|
|
48
|
+
// exit code 1 โ fail, JSON on stdout
|
|
49
|
+
if (e.code === 1 && e.stdout) {
|
|
50
|
+
try {
|
|
51
|
+
const parsed = JSON.parse(e.stdout);
|
|
52
|
+
return { ok: false, missing: parsed.missing ?? [], reason: parsed.reason };
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return { ok: false, missing: [], reason: `verify-phase.cjs returned non-parseable output: ${e.stdout}` };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// exit code 2 or other error
|
|
59
|
+
return {
|
|
60
|
+
ok: false,
|
|
61
|
+
missing: [],
|
|
62
|
+
reason: `verify-phase.cjs failed: ${e.stderr ?? e.message ?? "unknown error"}`,
|
|
63
|
+
};
|
|
26
64
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
missing.push("paths.store");
|
|
44
|
-
if (!paths?.workflows)
|
|
45
|
-
missing.push("paths.workflows");
|
|
46
|
-
return { ok: missing.length === 0, missing };
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Verify Phase 1 deliverable: `.forge/config.json` exists and contains all required fields.
|
|
68
|
+
*
|
|
69
|
+
* Async wrapper over `verify-phase.cjs --phase 1`.
|
|
70
|
+
*/
|
|
71
|
+
export async function verifyPhase1(cwd) {
|
|
72
|
+
return runVerifyPhase(cwd, ["--phase", "1"]);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Verify Phase 1 foundation fields only: `project.name` and `project.prefix`.
|
|
76
|
+
*
|
|
77
|
+
* Async wrapper over `verify-phase.cjs --phase 1 --foundation-only`.
|
|
78
|
+
*/
|
|
79
|
+
export async function verifyPhase1Foundation(cwd) {
|
|
80
|
+
return runVerifyPhase(cwd, ["--phase", "1", "--foundation-only"]);
|
|
47
81
|
}
|
|
48
82
|
/**
|
|
49
83
|
* Verify Phase 2 deliverable: 7 architecture KB docs exist under `kbPath/architecture/`.
|
|
84
|
+
*
|
|
85
|
+
* Async wrapper over `verify-phase.cjs --phase 2 --kb-path <kbPath>`.
|
|
50
86
|
*/
|
|
51
|
-
export function verifyPhase2(cwd, kbPath) {
|
|
52
|
-
|
|
53
|
-
const missing = [];
|
|
54
|
-
for (const d of archDocs) {
|
|
55
|
-
if (!fs.existsSync(path.join(cwd, kbPath, "architecture", `${d}.md`))) {
|
|
56
|
-
missing.push(`${kbPath}/architecture/${d}.md`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return { ok: missing.length === 0, missing };
|
|
87
|
+
export async function verifyPhase2(cwd, kbPath) {
|
|
88
|
+
return runVerifyPhase(cwd, ["--phase", "2", "--kb-path", kbPath]);
|
|
60
89
|
}
|
|
61
90
|
/**
|
|
62
91
|
* Verify Phase 3 deliverable: all four `.forge/` subdirectories contain at least one file.
|
|
92
|
+
*
|
|
93
|
+
* Async wrapper over `verify-phase.cjs --phase 3`.
|
|
63
94
|
*/
|
|
64
|
-
export function verifyPhase3(cwd) {
|
|
65
|
-
|
|
66
|
-
const missing = [];
|
|
67
|
-
for (const d of dirs) {
|
|
68
|
-
const dir = path.join(cwd, ".forge", d);
|
|
69
|
-
let count = 0;
|
|
70
|
-
try {
|
|
71
|
-
count = fs.readdirSync(dir).filter((f) => f.endsWith(".md") || f.endsWith(".json")).length;
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
count = 0;
|
|
75
|
-
}
|
|
76
|
-
if (count === 0)
|
|
77
|
-
missing.push(`.forge/${d}/ (empty)`);
|
|
78
|
-
}
|
|
79
|
-
return { ok: missing.length === 0, missing };
|
|
95
|
+
export async function verifyPhase3(cwd) {
|
|
96
|
+
return runVerifyPhase(cwd, ["--phase", "3"]);
|
|
80
97
|
}
|
|
81
98
|
//# sourceMappingURL=verifiers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifiers.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/forge-init/verifiers.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"verifiers.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/forge-init/verifiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
// forge-init.ts โ /forge:init command handler โ FORGE-S17-T02
|
|
2
2
|
//
|
|
3
3
|
// Full 4-phase init flow:
|
|
4
|
-
// Phase 1 โ Collect:
|
|
5
|
-
// Phase 2 โ Discover:
|
|
4
|
+
// Phase 1 โ Collect: multi-step discovery + config.json synthesis โ .forge/config.json
|
|
5
|
+
// Phase 2 โ Discover: phase gate + KB doc generation + index files โ engineering/
|
|
6
6
|
// Phase 3 โ Materialize: substitute-placeholders โ .forge/{personas,skills,workflows,templates}
|
|
7
7
|
// Phase 4 โ Register: 11 deterministic steps โ versioning, packs, store, Tomoshibi
|
|
8
8
|
//
|
|
9
9
|
// Per INIT_PARITY_SPEC.md and PLAN.md (rev 2) phases AโG.
|
|
10
10
|
//
|
|
11
|
-
// โโ
|
|
11
|
+
// โโ Phase model (FORGE-S26-T17) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
12
12
|
//
|
|
13
|
-
// Phases 1โ3 are
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
13
|
+
// Phases 1โ3 are standalone async functions in forge-init/run-phases.ts.
|
|
14
|
+
// Each reads its phase prompt from the bundled init/phases/phase-N-*.md file,
|
|
15
|
+
// dispatches via sendToAgent + waitForIdle (phases 1-2) or runs tools directly
|
|
16
|
+
// (phase 3), then verifies deliverables via verify-phase.cjs.
|
|
17
17
|
//
|
|
18
|
-
// Phase 4
|
|
19
|
-
// extracted into forge-init/phase4-register.ts โ runPhase4().
|
|
18
|
+
// Phase 4 is in forge-init/phase4-register.ts โ runPhase4().
|
|
20
19
|
//
|
|
21
20
|
// This file is the orchestrator: flag parsing, resume detection, configCache population
|
|
22
21
|
// (between Phase 1 and Phase 2), phase loop, post-init report.
|
|
@@ -33,21 +32,28 @@
|
|
|
33
32
|
// #5: Tomoshibi โ runRefreshKbLinks() native TS port; no shell-out
|
|
34
33
|
// #9: Health check โ runHealthCheck() direct call; NOT via sendUserMessage
|
|
35
34
|
//
|
|
36
|
-
// โโ Async/sync contract (N-B-C)
|
|
35
|
+
// โโ Async/sync contract (N-B-C, revised 2026-05-26) โโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
37
36
|
//
|
|
38
|
-
// `sendToAgent(text)`
|
|
39
|
-
//
|
|
40
|
-
// until the current handler yields (awaits).
|
|
37
|
+
// `await sendToAgent(text)` sends a prompt to the agent and resolves when the agent
|
|
38
|
+
// has finished processing it. It wraps `pi.sendUserMessage(text, { deliverAs: "steer" })`.
|
|
41
39
|
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
//
|
|
45
|
-
//
|
|
40
|
+
// When the agent is IDLE (the common case at init start): sendUserMessage calls
|
|
41
|
+
// session.prompt(), which starts a full agent turn via agent.prompt(). Awaiting it
|
|
42
|
+
// blocks until that turn completes, including all tool calls and follow-ups.
|
|
43
|
+
//
|
|
44
|
+
// When the agent is STREAMING (mid-turn): sendUserMessage enqueues a steer message
|
|
45
|
+
// and resolves quickly โ the steer is picked up by the running turn's steering poll.
|
|
46
|
+
// In this case `await ctx.waitForIdle()` IS needed afterwards to wait for the turn
|
|
47
|
+
// (including the steer) to finish.
|
|
48
|
+
//
|
|
49
|
+
// Both awaits are always issued: `await sendToAgent` covers the idle-agent path;
|
|
50
|
+
// `await waitForIdle` covers the streaming-agent path and is a harmless no-op when
|
|
51
|
+
// the agent already completed its turn via sendToAgent.
|
|
46
52
|
//
|
|
47
53
|
// Pattern for every phase:
|
|
48
|
-
// sendToAgent(promptText);
|
|
49
|
-
// await
|
|
50
|
-
// const result = verifyPhaseN();
|
|
54
|
+
// await sendToAgent(promptText); // dispatch + wait for completion when idle
|
|
55
|
+
// await waitForIdle(); // wait for current turn when streaming; no-op when idle
|
|
56
|
+
// const result = verifyPhaseN(); // read deliverable โ agent is done
|
|
51
57
|
//
|
|
52
58
|
// โโ Config cache boundary (B-4, N-B-A) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
53
59
|
//
|
|
@@ -62,14 +68,17 @@
|
|
|
62
68
|
import * as fs from "node:fs";
|
|
63
69
|
import * as path from "node:path";
|
|
64
70
|
import { fileURLToPath } from "node:url";
|
|
65
|
-
import { PHASE_1, PHASE_2, PHASE_3, runLlmPhase } from "./forge-init/phase-descriptors.js";
|
|
66
71
|
import { runPhase4 } from "./forge-init/phase4-register.js";
|
|
72
|
+
import { runPhase1, runPhase2, runPhase3 } from "./forge-init/run-phases.js";
|
|
67
73
|
import { verifyPhase1, verifyPhase3 } from "./forge-init/verifiers.js";
|
|
68
74
|
import { runHealthCheck } from "./health-check.js";
|
|
69
75
|
import { emitSyntheticEvent } from "./hook-dispatcher.js";
|
|
70
76
|
import { discoverProjectName } from "./init-context.js";
|
|
71
77
|
import { deleteInitProgress, readInitProgress } from "./init-progress.js";
|
|
72
78
|
import { execFileAsync } from "./lib/exec-helpers.js";
|
|
79
|
+
import { clearForgeConfigCache } from "./lib/forge-config.js";
|
|
80
|
+
// FORGE-S26-T11: registerMigrate imported to power `forge:init --migrate`
|
|
81
|
+
import { registerMigrate } from "./migrate.js";
|
|
73
82
|
// โโ Bundle path resolution โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
74
83
|
const _EXTENSION_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
75
84
|
// dist/extensions/forgecli/ โ dist/ โ <pkg-root>/
|
|
@@ -149,12 +158,13 @@ function parseInitFlags(args) {
|
|
|
149
158
|
const parts = args.trim().split(/\s+/).filter(Boolean);
|
|
150
159
|
const hasFast = parts.includes("--fast");
|
|
151
160
|
const hasFull = parts.includes("--full");
|
|
161
|
+
const hasMigrate = parts.includes("--migrate");
|
|
152
162
|
// Find trailing numeric phase arg
|
|
153
163
|
let startPhase = null;
|
|
154
164
|
let invalidPhase = false;
|
|
155
165
|
for (let i = 0; i < parts.length; i++) {
|
|
156
166
|
const p = parts[i];
|
|
157
|
-
if (p === "--fast" || p === "--full")
|
|
167
|
+
if (p === "--fast" || p === "--full" || p === "--migrate")
|
|
158
168
|
continue;
|
|
159
169
|
const n = parseInt(p, 10);
|
|
160
170
|
if (!Number.isNaN(n)) {
|
|
@@ -169,6 +179,7 @@ function parseInitFlags(args) {
|
|
|
169
179
|
return {
|
|
170
180
|
fast: hasFast,
|
|
171
181
|
full: hasFull,
|
|
182
|
+
migrate: hasMigrate,
|
|
172
183
|
startPhase,
|
|
173
184
|
conflict: hasFast && hasFull,
|
|
174
185
|
invalidPhase,
|
|
@@ -179,11 +190,19 @@ export function registerForgeInit(pi) {
|
|
|
179
190
|
// Capture pi.sendUserMessage in closure โ ExtensionCommandContext does not
|
|
180
191
|
// have sendUserMessage; it is on ExtensionAPI per pi types.ts:1187.
|
|
181
192
|
//
|
|
182
|
-
//
|
|
183
|
-
//
|
|
184
|
-
//
|
|
185
|
-
//
|
|
186
|
-
|
|
193
|
+
// sendToAgent MUST be awaited. When the agent is idle (the typical case for
|
|
194
|
+
// /forge:init), sendUserMessage starts a full agent turn and resolves when it
|
|
195
|
+
// completes. When the agent is streaming, sendUserMessage enqueues a steer and
|
|
196
|
+
// resolves quickly โ waitForIdle is then needed to wait for the turn to finish.
|
|
197
|
+
//
|
|
198
|
+
// Previous bug (BUG-017/BUG-023 workaround was incomplete): sendToAgent was
|
|
199
|
+
// fire-and-forget (no await), and waitForIdle was the sole sync primitive.
|
|
200
|
+
// But waitForIdle() returns Promise.resolve() when agent.activeRun is null
|
|
201
|
+
// (no active turn), which is the state at init start โ the steer hadn't been
|
|
202
|
+
// picked up yet, so everything after waitForIdle fired instantly.
|
|
203
|
+
const sendToAgent = async (text) => {
|
|
204
|
+
await pi.sendUserMessage(text, { deliverAs: "steer" });
|
|
205
|
+
};
|
|
187
206
|
pi.registerCommand("forge:init", {
|
|
188
207
|
description: "Bootstrap a new Forge SDLC project at the current working directory",
|
|
189
208
|
async handler(args, ctx) {
|
|
@@ -196,6 +215,28 @@ export function registerForgeInit(pi) {
|
|
|
196
215
|
let kbPathFinal = "engineering";
|
|
197
216
|
// โโ 1. Flag parsing โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
198
217
|
const flags = parseInitFlags(args);
|
|
218
|
+
// FORGE-S26-T11: --migrate flag dispatches to store migration instead of init.
|
|
219
|
+
if (flags.migrate) {
|
|
220
|
+
// Strip --migrate, pass remaining args to migrate handler.
|
|
221
|
+
const migrateParts = (args ?? "").trim().split(/\s+/).filter((p) => p !== "--migrate");
|
|
222
|
+
const migrateArgs = migrateParts.join(" ");
|
|
223
|
+
let migrateHandler;
|
|
224
|
+
const syntheticPi = {
|
|
225
|
+
...pi,
|
|
226
|
+
registerCommand: (name, def) => {
|
|
227
|
+
if (name === "forge:migrate")
|
|
228
|
+
migrateHandler = def.handler;
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
registerMigrate(syntheticPi);
|
|
232
|
+
if (migrateHandler) {
|
|
233
|
+
await migrateHandler(migrateArgs, ctx);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
ctx.ui.notify("ร forge:init --migrate โ migrate handler unavailable", "error");
|
|
237
|
+
}
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
199
240
|
if (flags.conflict) {
|
|
200
241
|
ctx.ui.notify("ร Conflicting flags: --fast and --full cannot be combined.", "error");
|
|
201
242
|
return;
|
|
@@ -262,13 +303,12 @@ export function registerForgeInit(pi) {
|
|
|
262
303
|
if (flags.startPhase === null || flags.invalidPhase) {
|
|
263
304
|
const preflightSummary = `Forge Init โ ${projectName}\n\n` +
|
|
264
305
|
`4 phases will run in this session (~45 seconds non-interactive):\n\n` +
|
|
265
|
-
` 1 Collect โ
|
|
306
|
+
` 1 Collect โ codebase discovery โ config.json\n` +
|
|
266
307
|
` KB folder prompt (interactive)\n` +
|
|
267
|
-
` 2 Discover โ KB doc generation
|
|
308
|
+
` 2 Discover โ KB doc generation + project-context.json\n` +
|
|
268
309
|
` 3 Materialize โ substitute-placeholders.cjs โ fully functional workflows\n` +
|
|
269
310
|
` 4 Register โ versioning, manifest, cache, store entries, Tomoshibi\n\n` +
|
|
270
|
-
`Phase 1 is interactive (KB folder name prompt). Phases 2โ4 are non-interactive
|
|
271
|
-
`and complete in under 45 seconds.`;
|
|
311
|
+
`Phase 1 is interactive (KB folder name prompt). Phases 2โ4 are non-interactive.`;
|
|
272
312
|
// G2: skip pre-flight confirm in non-interactive mode (proceed directly to Phase 1)
|
|
273
313
|
if (!isNonInteractive()) {
|
|
274
314
|
const proceed = await ctx.ui.confirm("Start /forge:init?", preflightSummary);
|
|
@@ -292,32 +332,50 @@ export function registerForgeInit(pi) {
|
|
|
292
332
|
catch {
|
|
293
333
|
// File not yet present โ Phase 1 will create it
|
|
294
334
|
}
|
|
295
|
-
// โโ Phases 1โ3:
|
|
296
|
-
// Each phase is
|
|
297
|
-
//
|
|
298
|
-
//
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
if (
|
|
302
|
-
// Resume path: skip phases already completed
|
|
303
|
-
continue;
|
|
304
|
-
}
|
|
305
|
-
const phaseResult = await runLlmPhase(desc, ctx, cwd, bundleRoot, toolsRoot, projectName, configCache, sendToAgent, () => ctx.waitForIdle(), isNonInteractive);
|
|
306
|
-
if (phaseResult === "abort") {
|
|
335
|
+
// โโ Phases 1โ3: linear phase calls โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
336
|
+
// Each phase is a standalone async function in forge-init/run-phases.ts.
|
|
337
|
+
// (FORGE-S26-T17: replaced descriptor-driven loop with explicit calls.)
|
|
338
|
+
// Phase 1 โ Collect
|
|
339
|
+
if (startPhase <= 1) {
|
|
340
|
+
const phase1Result = await runPhase1(cwd, bundleRoot, toolsRoot, configCache, ctx, sendToAgent, () => ctx.waitForIdle(), isNonInteractive);
|
|
341
|
+
if (phase1Result === "abort")
|
|
307
342
|
return;
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
configCache = JSON.parse(fs.readFileSync(path.join(cwd, ".forge", "config.json"), "utf8"));
|
|
343
|
+
// Inter-phase gate: let user review before Phase 2
|
|
344
|
+
if (!isNonInteractive()) {
|
|
345
|
+
const proceed = await ctx.ui.confirm("Phase 1 complete โ proceed?", "Phase 1 deliverables verified. Continue to Phase 2: Discover (KB generation)?");
|
|
346
|
+
if (!proceed) {
|
|
347
|
+
ctx.ui.notify("ใ /forge:init paused after Phase 1. Re-run /forge:init to resume.", "info");
|
|
348
|
+
return;
|
|
315
349
|
}
|
|
316
|
-
|
|
317
|
-
|
|
350
|
+
}
|
|
351
|
+
// Refresh configCache after Phase 1 writes .forge/config.json
|
|
352
|
+
try {
|
|
353
|
+
configCache = JSON.parse(fs.readFileSync(path.join(cwd, ".forge", "config.json"), "utf8"));
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
// Fall back to existing cache โ all downstream reads have their own defaults
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// Phase 2 โ Discover
|
|
360
|
+
if (startPhase <= 2) {
|
|
361
|
+
const phase2Result = await runPhase2(cwd, bundleRoot, toolsRoot, projectName, configCache, ctx, sendToAgent, () => ctx.waitForIdle(), isNonInteractive);
|
|
362
|
+
if (phase2Result === "abort")
|
|
363
|
+
return;
|
|
364
|
+
// Inter-phase gate: let user review before Phase 3
|
|
365
|
+
if (!isNonInteractive()) {
|
|
366
|
+
const proceed = await ctx.ui.confirm("Phase 2 complete โ proceed?", "Phase 2 deliverables verified. Continue to Phase 3: Materialize (workflow generation)?");
|
|
367
|
+
if (!proceed) {
|
|
368
|
+
ctx.ui.notify("ใ /forge:init paused after Phase 2. Re-run /forge:init to resume.", "info");
|
|
369
|
+
return;
|
|
318
370
|
}
|
|
319
371
|
}
|
|
320
372
|
}
|
|
373
|
+
// Phase 3 โ Materialize
|
|
374
|
+
if (startPhase <= 3) {
|
|
375
|
+
const phase3Result = await runPhase3(cwd, bundleRoot, toolsRoot, ctx);
|
|
376
|
+
if (phase3Result === "abort")
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
321
379
|
// โโ Phase 4 โ Register (runPhase4) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
322
380
|
if (startPhase <= 4) {
|
|
323
381
|
const phase4Result = await runPhase4({
|
|
@@ -336,6 +394,8 @@ export function registerForgeInit(pi) {
|
|
|
336
394
|
// phase4Result.kbPathFinal is used in the post-init report below
|
|
337
395
|
kbPathFinal = phase4Result.kbPathFinal;
|
|
338
396
|
}
|
|
397
|
+
// โโ Invalidate forge-config cache so same-session commands find the new project
|
|
398
|
+
clearForgeConfigCache();
|
|
339
399
|
// โโ Post-Phase-4: health check โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
340
400
|
ctx.ui.setStatus?.("forge:init", "Post-init: health check");
|
|
341
401
|
const healthResult = await runHealthCheck(cwd, bundleRoot);
|
|
@@ -348,23 +408,6 @@ export function registerForgeInit(pi) {
|
|
|
348
408
|
ctx.ui.notify(` ยท ${gap.check}: ${gap.message}`, "info");
|
|
349
409
|
}
|
|
350
410
|
}
|
|
351
|
-
// โโ post-init: emit synthetic event for registered hooks (FORGE-S21-T04) โโ
|
|
352
|
-
// Replaces the old sentinel-writing stub. The init-complete event is
|
|
353
|
-
// consumed by hooks/post-init-hook.ts which handles idempotency,
|
|
354
|
-
// materialization-marker checks, audience gates, and dispatch.
|
|
355
|
-
// Errors inside hooks are caught by emitSyntheticEvent โ fail-open.
|
|
356
|
-
{
|
|
357
|
-
// Use configCache โ valid for both full-run and resumed-init paths.
|
|
358
|
-
// configCache is populated once (after Phase 1 completes or from pre-existing
|
|
359
|
-
// config.json for resumed inits). Non-fatal if cache is empty (empty prefix
|
|
360
|
-
// causes hook to write sentinel under post-init-fired-.json).
|
|
361
|
-
let projectPrefixForHook = "";
|
|
362
|
-
const projForHook = configCache.project;
|
|
363
|
-
if (projForHook && typeof projForHook.prefix === "string") {
|
|
364
|
-
projectPrefixForHook = projForHook.prefix;
|
|
365
|
-
}
|
|
366
|
-
await emitSyntheticEvent({ type: "init-complete", projectPrefix: projectPrefixForHook, cwd }, ctx);
|
|
367
|
-
}
|
|
368
411
|
// โโ Report โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
369
412
|
// FIX BUG-020: use configCache here (populated from config.json after Phase 1
|
|
370
413
|
// or from pre-existing config.json for resumed inits starting at Phase 2+).
|
|
@@ -404,8 +447,8 @@ export function registerForgeInit(pi) {
|
|
|
404
447
|
ctx.ui.notify(`ร /forge:init: ${criticalGaps.length} critical gap(s) require attention โ see Report.`, "error");
|
|
405
448
|
}
|
|
406
449
|
// Final cross-phase verification โ banner reflects real disk state.
|
|
407
|
-
const finalP1 = verifyPhase1(cwd);
|
|
408
|
-
const finalP3 = verifyPhase3(cwd);
|
|
450
|
+
const finalP1 = await verifyPhase1(cwd);
|
|
451
|
+
const finalP3 = await verifyPhase3(cwd);
|
|
409
452
|
const fullyComplete = finalP1.ok && finalP3.ok;
|
|
410
453
|
const bannerLabel = fullyComplete
|
|
411
454
|
? `โ /forge:init complete โ`
|
|
@@ -416,7 +459,7 @@ export function registerForgeInit(pi) {
|
|
|
416
459
|
}
|
|
417
460
|
if (!finalP3.ok) {
|
|
418
461
|
incompleteDetail.push(`ร Phase 3: ${finalP3.missing.join(", ")} (materialization missing)`);
|
|
419
|
-
incompleteDetail.push(` โ Recover: \`/forge:
|
|
462
|
+
incompleteDetail.push(` โ Recover: \`/forge:rebuild\` (re-runs substitute-placeholders against current config), or delete .forge/init-progress.json and re-run /forge:init.`);
|
|
420
463
|
}
|
|
421
464
|
const report = [
|
|
422
465
|
``,
|
|
@@ -437,9 +480,9 @@ export function registerForgeInit(pi) {
|
|
|
437
480
|
healthSection,
|
|
438
481
|
``,
|
|
439
482
|
`Next steps:`,
|
|
440
|
-
` 1. Run /forge:sprint
|
|
441
|
-
` 2. Run /forge:
|
|
442
|
-
` 3. Run /forge:
|
|
483
|
+
` 1. Run /forge:new-sprint to start your first sprint`,
|
|
484
|
+
` 2. Run /forge:status to see sprint and task summary`,
|
|
485
|
+
` 3. Run /forge:health anytime to check project health`,
|
|
443
486
|
``,
|
|
444
487
|
`Note: Marketplace skills auto-recommendation is Claude-Code-only.`,
|
|
445
488
|
`Pi users install extensions manually.`,
|
|
@@ -452,7 +495,19 @@ export function registerForgeInit(pi) {
|
|
|
452
495
|
]
|
|
453
496
|
: []),
|
|
454
497
|
].join("\n");
|
|
455
|
-
sendToAgent(report);
|
|
498
|
+
await sendToAgent(report);
|
|
499
|
+
// โโ post-init: emit synthetic event for registered hooks (FORGE-S21-T04) โโ
|
|
500
|
+
// Fires AFTER the report so the user sees the summary before enhancement
|
|
501
|
+
// or other hook-triggered workflows begin.
|
|
502
|
+
// Errors inside hooks are caught by emitSyntheticEvent โ fail-open.
|
|
503
|
+
{
|
|
504
|
+
let projectPrefixForHook = "";
|
|
505
|
+
const projForHook = configCache.project;
|
|
506
|
+
if (projForHook && typeof projForHook.prefix === "string") {
|
|
507
|
+
projectPrefixForHook = projForHook.prefix;
|
|
508
|
+
}
|
|
509
|
+
await emitSyntheticEvent({ type: "init-complete", projectPrefix: projectPrefixForHook, cwd }, ctx);
|
|
510
|
+
}
|
|
456
511
|
},
|
|
457
512
|
});
|
|
458
513
|
}
|