@entelligentsia/forgecli 1.0.25 → 1.0.40
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 +341 -0
- package/README.md +2 -0
- package/dist/CHANGELOG-forge-plugin.md +264 -0
- package/dist/CHANGELOG-pi.md +143 -0
- package/dist/bin/argv.d.ts +2 -2
- package/dist/bin/argv.js +37 -0
- package/dist/bin/argv.js.map +1 -1
- package/dist/bin/forge.js +30 -16
- package/dist/bin/forge.js.map +1 -1
- package/dist/bin/init.d.ts +23 -0
- package/dist/bin/init.js +123 -0
- package/dist/bin/init.js.map +1 -0
- package/dist/bin/reset.d.ts +39 -0
- package/dist/bin/reset.js +101 -0
- package/dist/bin/reset.js.map +1 -0
- package/dist/bin/uninstall.d.ts +20 -0
- package/dist/bin/uninstall.js +141 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.d.ts +40 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js +384 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.d.ts +46 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js +245 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.d.ts +23 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.js +235 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.js.map +1 -0
- package/dist/extensions/forgecli/commands/reset.d.ts +16 -0
- package/dist/extensions/forgecli/commands/reset.js +83 -0
- package/dist/extensions/forgecli/commands/reset.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/component.js +10 -7
- package/dist/extensions/forgecli/dashboard/component.js.map +1 -1
- package/dist/extensions/forgecli/forge-commands.d.ts +7 -2
- package/dist/extensions/forgecli/forge-commands.js +19 -5
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.d.ts +4 -4
- package/dist/extensions/forgecli/hooks/forge-permissions.js +20 -6
- package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -1
- package/dist/extensions/forgecli/index.js +6 -3
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/lib/forge-root.d.ts +6 -0
- package/dist/extensions/forgecli/lib/forge-root.js +52 -0
- package/dist/extensions/forgecli/lib/forge-root.js.map +1 -1
- package/dist/extensions/forgecli/lib/payload-manifest.d.ts +62 -0
- package/dist/extensions/forgecli/lib/payload-manifest.js +151 -0
- package/dist/extensions/forgecli/lib/payload-manifest.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/advisory-render.d.ts +9 -0
- package/dist/extensions/forgecli/orchestrators/advisory-render.js +107 -0
- package/dist/extensions/forgecli/orchestrators/advisory-render.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.d.ts +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.js +65 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.d.ts +23 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.js +140 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.d.ts +54 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js +349 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.d.ts +11 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js +82 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.d.ts +14 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.js +100 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.d.ts +72 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js +204 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.d.ts +38 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js +198 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.d.ts +3 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js +55 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.d.ts +7 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js +293 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.d.ts +2 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js +501 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.d.ts +41 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js +5 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.d.ts +43 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js +85 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.d.ts +8 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js +37 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.d.ts +28 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js +45 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.d.ts +26 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js +75 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/recovery-menu.d.ts +24 -0
- package/dist/extensions/forgecli/orchestrators/common/recovery-menu.js +58 -0
- package/dist/extensions/forgecli/orchestrators/common/recovery-menu.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/reset-pipeline.d.ts +53 -0
- package/dist/extensions/forgecli/orchestrators/common/reset-pipeline.js +131 -0
- package/dist/extensions/forgecli/orchestrators/common/reset-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.d.ts +24 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js +37 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/fix-bug.d.ts +9 -93
- package/dist/extensions/forgecli/orchestrators/fix-bug.js +23 -1721
- package/dist/extensions/forgecli/orchestrators/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/halt-advisor.js +25 -3
- package/dist/extensions/forgecli/orchestrators/halt-advisor.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/run-sprint.d.ts +3 -12
- package/dist/extensions/forgecli/orchestrators/run-sprint.js +48 -270
- package/dist/extensions/forgecli/orchestrators/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/run-task.d.ts +10 -214
- package/dist/extensions/forgecli/orchestrators/run-task.js +31 -1481
- package/dist/extensions/forgecli/orchestrators/run-task.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.d.ts +33 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js +135 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.d.ts +18 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js +55 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.d.ts +9 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.js +174 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.d.ts +2 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js +494 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.d.ts +62 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.js +5 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.d.ts +4 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.js +48 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.d.ts +63 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.js +185 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.d.ts +34 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.js +78 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.d.ts +42 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js +370 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.d.ts +17 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.js +48 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.d.ts +9 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.js +58 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.d.ts +14 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.js +35 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.d.ts +36 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js +187 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js.map +1 -0
- package/dist/extensions/forgecli/store/store-resolver.d.ts +15 -0
- package/dist/extensions/forgecli/store/store-resolver.js +118 -18
- package/dist/extensions/forgecli/store/store-resolver.js.map +1 -1
- package/dist/extensions/forgecli/update/forge-update-command.js +10 -7
- package/dist/extensions/forgecli/update/forge-update-command.js.map +1 -1
- package/dist/forge-payload/.base-pack/workflows/collator_agent.md +5 -6
- package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +1 -1
- package/dist/forge-payload/.base-pack/workflows-js/wfl-init.js +449 -0
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/.schemas/migrations.json +170 -0
- package/dist/forge-payload/.schemas/payload-manifest.schema.json +100 -0
- package/dist/forge-payload/commands/add-pipeline.md +1 -1
- package/dist/forge-payload/commands/add-task.md +3 -3
- package/dist/forge-payload/{.base-pack/commands → commands}/approve.md +2 -2
- package/dist/forge-payload/commands/ask.md +1 -1
- package/dist/forge-payload/commands/check-agent.md +8 -24
- package/dist/forge-payload/{.base-pack/commands → commands}/collate.md +2 -2
- package/dist/forge-payload/{.base-pack/commands → commands}/commit.md +2 -2
- package/dist/forge-payload/commands/config.md +1 -1
- package/dist/forge-payload/commands/enhance.md +31 -5
- package/dist/forge-payload/{.base-pack/commands → commands}/fix-bug.md +2 -2
- package/dist/forge-payload/commands/health.md +1 -1
- package/dist/forge-payload/{.base-pack/commands → commands}/implement.md +2 -2
- package/dist/forge-payload/commands/init.md +186 -67
- package/dist/forge-payload/{.base-pack/commands → commands}/new-sprint.md +2 -2
- package/dist/forge-payload/{.base-pack/commands → commands}/plan-sprint.md +2 -2
- package/dist/forge-payload/{.base-pack/commands → commands}/plan.md +2 -2
- package/dist/forge-payload/commands/rebuild.md +3 -3
- package/dist/forge-payload/commands/remove.md +1 -1
- package/dist/forge-payload/commands/repair.md +1 -1
- package/dist/forge-payload/commands/report-bug.md +1 -1
- package/dist/forge-payload/commands/reset.md +117 -0
- package/dist/forge-payload/{.base-pack/commands → commands}/retro.md +2 -2
- package/dist/forge-payload/{.base-pack/commands → commands}/review-code.md +2 -2
- package/dist/forge-payload/{.base-pack/commands → commands}/review-plan.md +2 -2
- package/dist/forge-payload/{.base-pack/commands → commands}/run-sprint.md +2 -2
- package/dist/forge-payload/{.base-pack/commands → commands}/run-task.md +2 -2
- package/dist/forge-payload/commands/status.md +1 -1
- package/dist/forge-payload/commands/update.md +3 -3
- package/dist/forge-payload/{.base-pack/commands → commands}/validate.md +2 -2
- package/dist/forge-payload/hooks/forge-permissions.cjs +29 -6
- package/dist/forge-payload/hooks/lib/common.cjs +228 -0
- package/dist/forge-payload/hooks/lib/plugin-detection.cjs +106 -0
- package/dist/forge-payload/hooks/lib/update-msg.cjs +23 -0
- package/dist/forge-payload/hooks/lib/update-url.cjs +46 -0
- package/dist/forge-payload/hooks/lib/write-registry.js +53 -0
- package/dist/forge-payload/init/discovery/discover-database.md +32 -0
- package/dist/forge-payload/init/discovery/discover-processes.md +31 -0
- package/dist/forge-payload/init/discovery/discover-routing.md +31 -0
- package/dist/forge-payload/init/discovery/discover-stack.md +33 -0
- package/dist/forge-payload/init/discovery/discover-testing.md +34 -0
- package/dist/forge-payload/init/generation/generate-commands.md +171 -0
- package/dist/forge-payload/init/generation/generate-kb-doc.md +60 -0
- package/dist/forge-payload/init/generation/generate-persona.md +73 -0
- package/dist/forge-payload/init/generation/generate-skill.md +66 -0
- package/dist/forge-payload/init/generation/generate-template.md +60 -0
- package/dist/forge-payload/init/generation/generate-tools.md +133 -0
- package/dist/forge-payload/init/generation/generate-workflows.md +78 -0
- package/dist/forge-payload/init/phases/phase-1-collect.md +10 -2
- package/dist/forge-payload/init/phases/phase-3-materialize.md +5 -1
- package/dist/forge-payload/init/phases/phase-4-register.md +8 -0
- package/dist/forge-payload/init/workflow-gen-plan.json +17 -0
- package/dist/forge-payload/integrity.json +33 -18
- package/dist/forge-payload/meta/workflows/meta-collate.md +5 -6
- package/dist/forge-payload/meta/workflows/meta-migrate.md +1 -1
- package/dist/forge-payload/payload-manifest.json +314 -0
- package/dist/forge-payload/schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/schemas/payload-manifest.schema.json +100 -0
- package/dist/forge-payload/schemas/structure-manifest.json +5 -12
- package/dist/forge-payload/tools/forge-preflight.cjs +268 -0
- package/dist/forge-payload/tools/lib/paths.cjs +12 -11
- package/dist/forge-payload/tools/lib/pricing.cjs +31 -11
- package/dist/forge-payload/tools/query-logger.cjs +34 -0
- package/dist/forge-payload/tools/reset-plan.cjs +210 -0
- package/dist/forge-payload/tools/store.cjs +4 -1
- package/dist/forge-payload/tools/substitute-placeholders.cjs +14 -7
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +8 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts +4 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js +3 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts +20 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js +92 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts +18 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js +42 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts +10 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js +31 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts +30 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js +170 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts +26 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js +90 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +6 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/README.md +12 -4
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +45 -0
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +45 -0
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +1804 -815
- 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 +2031 -1384
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +71 -27
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +24 -16
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.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 +3 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +35 -13
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +12 -4
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +13 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +4 -2
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +1 -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 +3 -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 +143 -0
- package/node_modules/@earendil-works/pi-coding-agent/README.md +26 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js +11 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/project-trust.d.ts +10 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/project-trust.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/project-trust.js +48 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/project-trust.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.d.ts +17 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js +128 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +9 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.d.ts +3 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js +4 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts +2 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +4 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +16 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +4 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts +3 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js +9 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/utils.d.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/utils.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/experimental.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/experimental.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/experimental.js +4 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/experimental.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/template.js +19 -6
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +4 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +10 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +47 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +28 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.js +29 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.js +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +44 -5
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts +3 -0
- 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 +47 -13
- 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/project-trust.d.ts +15 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.js +58 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.d.ts +2 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js +24 -26
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.d.ts +4 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.js +72 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-display-names.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-display-names.js +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-display-names.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts +13 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +112 -37
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +7 -33
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +103 -70
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +20 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +97 -30
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.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 +1 -1
- 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/find.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/read.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +1 -1
- 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 +1 -1
- 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/core/trust-manager.d.ts +36 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.js +202 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +5 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +72 -32
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js +39 -34
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.js +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/first-time-setup.js +103 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js +7 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.js +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +10 -13
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +3 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +20 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +22 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/trust-selector.js +91 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/trust-selector.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +7 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +101 -5
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.js +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.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 +1 -0
- 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/package-manager-cli.d.ts +6 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +111 -10
- package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.js +78 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/git.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/git.js +54 -22
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/git.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/open-browser.d.ts +9 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/open-browser.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/open-browser.js +22 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/open-browser.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/containerization.md +111 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/docs.json +8 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/extensions.md +67 -13
- package/node_modules/@earendil-works/pi-coding-agent/docs/index.md +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/models.md +4 -3
- package/node_modules/@earendil-works/pi-coding-agent/docs/packages.md +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/prompt-templates.md +9 -2
- package/node_modules/@earendil-works/pi-coding-agent/docs/providers.md +5 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/rpc.md +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/sdk.md +5 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/security.md +59 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/settings.md +15 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/skills.md +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +36 -2
- package/node_modules/@earendil-works/pi-coding-agent/docs/themes.md +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/tmux.md +4 -2
- package/node_modules/@earendil-works/pi-coding-agent/docs/tui.md +10 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +19 -2
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/README.md +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-header.ts +1 -1
- 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/doom-overlay/index.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/index.ts +531 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package-lock.json +185 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package.json +19 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/handoff.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/interactive-shell.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/overlay-qa-tests.ts +152 -81
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/project-trust.ts +64 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/qna.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/question.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/questionnaire.ts +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/snake.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/space-invaders.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/summarize.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/tic-tac-toe.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/todo.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/tools.ts +5 -0
- 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 -419
- package/node_modules/@earendil-works/pi-coding-agent/package.json +5 -8
- package/node_modules/@earendil-works/pi-tui/README.md +13 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +2 -0
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +6 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +102 -43
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +2 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +11 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +2 -2
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +4 -7
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js +38 -77
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +20 -4
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.js +244 -42
- package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +1 -0
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.js +46 -15
- package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +8 -7
- package/dist/forge-payload/.base-pack/commands/check-agent.md +0 -22
- package/dist/forge-payload/.base-pack/commands/enhance.md +0 -37
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,347 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Command-tree unification (FORGE-S32-T06).** The former two-tree command
|
|
13
|
+
model is collapsed into a single unified `commands/` tree. `build-payload.cjs`
|
|
14
|
+
bundles one `commands/` directory (30 files) and `.base-pack/` no longer
|
|
15
|
+
carries a `commands/` subdir; `bootstrap.ts` copies one directory with no
|
|
16
|
+
union/collision precedence; `lib/payload-manifest.ts` drops the
|
|
17
|
+
loser/winner ordering note. `registerAllForgeCommands` (forge-commands.ts)
|
|
18
|
+
now enumerates `dist/forge-payload/commands/` instead of
|
|
19
|
+
`.base-pack/commands/`; `forge:reset` was added to
|
|
20
|
+
`EXPLICITLY_REGISTERED_NAMES` so the repoint introduces **no new auto-stub**
|
|
21
|
+
(the slash-command surface is unchanged). The frozen install-set fixture
|
|
22
|
+
(`expected-install-set.json`) drops the 17 vendored
|
|
23
|
+
`.forge/.base-pack/commands/*.md` entries; installed `.claude/commands/forge/`
|
|
24
|
+
byte-parity is preserved.
|
|
25
|
+
|
|
26
|
+
- **Dead Pass-1 build output removed (FORGE-S32-T05).** `scripts/build-payload.cjs`
|
|
27
|
+
no longer emits the pre-substituted `personas/`/`skills/`/`workflows/`/
|
|
28
|
+
`templates/` bundle-root tree (the old `--include-full`-gated Pass 1) or its
|
|
29
|
+
restore branch. `forge-init.ts` re-runs `substitute-placeholders` against the
|
|
30
|
+
user's config from `.base-pack/` at runtime (Phase 3b), so that output was
|
|
31
|
+
never consumed in the default flow. `--include-full` still governs the full
|
|
32
|
+
`tools/lib/`, `.init/generation/`, and generic `.schemas/` supersets. The
|
|
33
|
+
non-dot `schemas/` mirror and `schemas/structure-manifest.json` are RETAINED
|
|
34
|
+
(load-bearing for `health.md`/`update.md` `$FORGE_ROOT/schemas/` reads and
|
|
35
|
+
`check-structure.cjs` via `/forge:health`). Frozen install-set parity fixture
|
|
36
|
+
(`expected-install-set.json`) updated to drop the four superseded
|
|
37
|
+
`init/generation` orchestrator placeholders trimmed on the plugin side.
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- **Payload require-walker CI gate (FORGE-S32-T04).** New build-side tool
|
|
42
|
+
`tools/check-payload-requires.cjs <payloadRoot>` statically proves that every
|
|
43
|
+
`require()` target and referenced runtime path in the bundled payload's
|
|
44
|
+
`.cjs`/`.js` tools and hooks resolves inside the bundle. Generalizes the two
|
|
45
|
+
narrow regression guards (`bug-025-payload-completeness`,
|
|
46
|
+
`bug-036-payload-lib-completeness`) into one walker over ALL `.cjs`/`.js`
|
|
47
|
+
under `dist/forge-payload/{tools,hooks}`. Three reference classes are
|
|
48
|
+
resolved — static string requires, the runtime-path literals behind dynamic
|
|
49
|
+
requires, and dynamic `require(<variable>)` sites gated against a structural
|
|
50
|
+
`DYNAMIC_SITES` allowlist (keyed by file + normalized expression, not line
|
|
51
|
+
number). Any un-enumerated dynamic require is itself a hard failure (Iron Law
|
|
52
|
+
5, no silent skips). Exit `0`/`1`/`2` contract. Wired into `tests.yml`
|
|
53
|
+
(`npm run lint:payload-requires`, post-build) so the MODULE_NOT_FOUND drift
|
|
54
|
+
class (FORGE-BUG-030 / FORGE-BUG-036) is caught red, build-side. CI-only: no
|
|
55
|
+
payload bytes change.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- **Payload consumers now read a single declarative manifest (FORGE-S32-T03).**
|
|
60
|
+
`scripts/build-payload.cjs` (bundle), `claude-bootstrap/bootstrap.ts` (vendor)
|
|
61
|
+
and `claude-bootstrap/uninstall.ts` (remove) are wired to
|
|
62
|
+
`forge/forge/payload-manifest.json` (authored in T02) instead of the
|
|
63
|
+
hand-maintained copy/removal lists each carried. build-payload's
|
|
64
|
+
`TOOLS_TO_COPY` / `LIB_ALLOWLIST` / `SKILLS_TO_COPY` arrays are deleted and
|
|
65
|
+
derived from the manifest; bootstrap vendors `payloadRoot/<bundle>` →
|
|
66
|
+
`<project>/<install>` driven solely by the manifest (the entry order encodes
|
|
67
|
+
the `commands` / `.base-pack/commands` union precedence); uninstall removes
|
|
68
|
+
install destinations grouped by `owner`, bounding agents/skills removal to
|
|
69
|
+
payload-declared names so user-authored siblings survive. `bundleOnly`
|
|
70
|
+
entries (`schemas/transitions`, `migrations.json`, `integrity.json`) ship to
|
|
71
|
+
the bundle for tool resolution but are never vendored. The build now bundles
|
|
72
|
+
`payload-manifest.json` itself so the runtime consumers can read it. Adding a
|
|
73
|
+
payload file is now a single manifest edit — the FORGE-BUG-030/036
|
|
74
|
+
MODULE_NOT_FOUND lockstep is retired. `4ge init claude .` output is
|
|
75
|
+
byte-identical (frozen-install-set parity guard in `bootstrap.test.ts`).
|
|
76
|
+
|
|
77
|
+
### Added
|
|
78
|
+
|
|
79
|
+
- **`4ge uninstall claude [dir] [--purge] [--yes]`** — the counterpart to
|
|
80
|
+
`4ge init claude`. Deterministically reverses the bootstrap: removes the
|
|
81
|
+
vendored Forge scaffold (`.forge/{tools,schemas,init,.base-pack,meta,
|
|
82
|
+
.claude-plugin,cache}`, `.bootstrap-manifest.json`, `.claude/commands/forge`,
|
|
83
|
+
`.claude/workflows`, and the payload's agents/skills), un-merges the Forge
|
|
84
|
+
hooks from `.claude/settings.json`, and un-appends the Forge block from
|
|
85
|
+
`.gitignore`. Safety: **preserves user data by default** (`.forge/config.json`,
|
|
86
|
+
`.forge/store/**`, the KB folder); `--purge` also removes config + store (KB
|
|
87
|
+
is never auto-removed). Refuses to act without a `.bootstrap-manifest.json`
|
|
88
|
+
(proof the project was forge-bootstrapped), edits `settings.json`/`.gitignore`
|
|
89
|
+
rather than deleting them, preserves user-authored agents/skills not in the
|
|
90
|
+
payload, and is idempotent. A `[y/N]` confirm guards it unless `--yes`/`-y` or
|
|
91
|
+
`FORGE_NON_INTERACTIVE=1`.
|
|
92
|
+
|
|
93
|
+
### Fixed
|
|
94
|
+
|
|
95
|
+
- **Halt-recovery advisor output now reaches the human (FORGE-BUG-046).** When a
|
|
96
|
+
`run-task` / `fix-bug` phase halted on a missing verdict or a preflight/
|
|
97
|
+
postflight gate failure, the orchestrator spawned an opus-class read-only
|
|
98
|
+
advisor — but its diagnosis was never surfaced. Two compounding defects:
|
|
99
|
+
`runHaltAdvisor` discarded the subagent result (never extracted or notified
|
|
100
|
+
the advisory text), and every caller invoked it with `void` and returned
|
|
101
|
+
`halted` immediately, so `pipeline-end` fired ~1 ms after the advisor started
|
|
102
|
+
— before the LLM had produced anything. Now the advisor is awaited before
|
|
103
|
+
teardown, its final output is surfaced via `ctx.ui.notify` (reaching both the
|
|
104
|
+
viewport tail and `orchestrator.jsonl`), and the structured `remediation` is
|
|
105
|
+
printed deterministically — independent of the LLM — so a skipped or failed
|
|
106
|
+
advisor still leaves a concrete next step. Applies to both the task and bug
|
|
107
|
+
verdict loops and all five gate-halt call sites.
|
|
108
|
+
|
|
109
|
+
## [1.0.36] — 2026-06-09
|
|
110
|
+
|
|
111
|
+
Orchestrator dashboard logs + autonomous run-sprint + KB-refresh, re-landed onto
|
|
112
|
+
the modular-orchestrator decomposition.
|
|
113
|
+
|
|
114
|
+
### Added
|
|
115
|
+
|
|
116
|
+
- **Orchestrator decision logs on the dashboard.** The shared
|
|
117
|
+
`withOrchestratorTranscript` notify-interception now mirrors every
|
|
118
|
+
orchestrator notify onto its root node (`tree.appendTail(entityId, …)`), and
|
|
119
|
+
the dashboard renders the Activity log for ALL node kinds (not just leaf). The
|
|
120
|
+
task/sprint/bug root node now carries the orchestrator's own narrative — gate
|
|
121
|
+
results, review verdicts, escalations, halts — alongside the per-phase leaf
|
|
122
|
+
nodes' subagent tool-call activity. New granular per-phase lines: `〇 preflight
|
|
123
|
+
ok`, `dispatch persona/model`, resolved `verdict`, `〇 postflight ok`.
|
|
124
|
+
- **KB-link refresh is orchestrator-owned in run-task.** After the writeback
|
|
125
|
+
phase, the pipeline calls `runRefreshKbLinks(cwd)` directly (forge-cli
|
|
126
|
+
subagents run via the Pi runtime and have no Skill tool, so the prior
|
|
127
|
+
`forge:refresh-kb-links` Skill-tool instruction caused a multi-call probe
|
|
128
|
+
loop).
|
|
129
|
+
|
|
130
|
+
### Changed
|
|
131
|
+
|
|
132
|
+
- **`/forge:run-sprint` runs to completion.** Removed the per-task "Continue to
|
|
133
|
+
next task?" confirm and the partial-ceremony-on-decline branch. A sprint
|
|
134
|
+
command now runs all of its tasks, then the single clean-complete ceremony.
|
|
135
|
+
The mid-sprint modal previously turned any UI hiccup into a premature partial
|
|
136
|
+
ceremony (ceremony firing after task 1 with later tasks still draft).
|
|
137
|
+
Deliberate cancellation (abort signal / task halt) still stops the sprint.
|
|
138
|
+
|
|
139
|
+
### Fixed
|
|
140
|
+
|
|
141
|
+
- Dispatch line printed `model=[object Object]` — `modelResolution.model` is a
|
|
142
|
+
`{provider, model}` object; now formatted as `provider:model`.
|
|
143
|
+
|
|
144
|
+
## [1.0.35] — 2026-06-07
|
|
145
|
+
|
|
146
|
+
Re-bundle forge-plugin 1.4.4 — CLI-first field-test gap fixes: paths.commands
|
|
147
|
+
no longer prefix-derived (always `.claude/commands/forge`), explicit
|
|
148
|
+
`paths.forgeRoot=".forge"` write, dev-only tools excluded from the
|
|
149
|
+
structure manifest (instance expectation 49/49, no false /forge:health gaps).
|
|
150
|
+
|
|
151
|
+
## [1.0.34] — 2026-06-07
|
|
152
|
+
|
|
153
|
+
No-dead-vendored-references gate (closes the forge#112 failure class).
|
|
154
|
+
|
|
155
|
+
### Added
|
|
156
|
+
|
|
157
|
+
- **`tools/check-vendored-refs.cjs`** — scans every vendored text file
|
|
158
|
+
(commands, drivers, rulebooks, settings, agents, skills) for
|
|
159
|
+
`.forge/…` / `$FORGE_ROOT/…` path references and fails on any whose
|
|
160
|
+
target doesn't exist post-bootstrap. Wired in twice: vitest
|
|
161
|
+
(`vendored-refs.test.ts`, against the real payload) and `tmp-smoke.sh`
|
|
162
|
+
BOOTSTRAP-9.
|
|
163
|
+
|
|
164
|
+
### Fixed
|
|
165
|
+
|
|
166
|
+
- Two dead references the new gate caught immediately:
|
|
167
|
+
**`forge-preflight.cjs`** (referenced by the run-task driver +
|
|
168
|
+
meta-fix-bug/meta-orchestrate — /forge:run-task would have hit a dead tool
|
|
169
|
+
on first use) added to `TOOLS_TO_COPY`, and
|
|
170
|
+
**`init/workflow-gen-plan.json`** (referenced by rebuild.md) bundled.
|
|
171
|
+
|
|
172
|
+
## [1.0.33] — 2026-06-07
|
|
173
|
+
|
|
174
|
+
Re-bundle forge-plugin 1.4.3 — wfl-init.js Phase 2 verify invocations carry
|
|
175
|
+
the required `--kb-path` ([forge#112](https://github.com/Entelligentsia/forge/issues/112) follow-up).
|
|
176
|
+
|
|
177
|
+
## [1.0.32] — 2026-06-07
|
|
178
|
+
|
|
179
|
+
Re-bundle forge-plugin 1.4.2 — wfl-init.js Workflow-API rewrite
|
|
180
|
+
([forge#112](https://github.com/Entelligentsia/forge/issues/112): phase
|
|
181
|
+
callbacks silently discarded → init ran 0 agents but reported success;
|
|
182
|
+
parallel() thunks; agent(prompt, opts) arg order; missing schema opts).
|
|
183
|
+
|
|
184
|
+
### Fixed
|
|
185
|
+
|
|
186
|
+
- **`build-payload` bundles the full `init/` rulebook tree** — `discovery/`
|
|
187
|
+
(5 prompts) and `generation/` (11 rulebooks) join `phases/`. Bundling only
|
|
188
|
+
`phases/` left wfl-init.js discovery/KB-doc subagents with dead rulebook
|
|
189
|
+
references in vendored projects.
|
|
190
|
+
|
|
191
|
+
## [1.0.31] — 2026-06-07
|
|
192
|
+
|
|
193
|
+
Re-bundle forge-plugin 1.4.1 — wfl-init.js Workflow-harness parse fix
|
|
194
|
+
(`export default` wrapper stripped; every `/forge:init` dispatch previously
|
|
195
|
+
failed at launch with "SyntaxError: Unexpected keyword 'export'").
|
|
196
|
+
Projects bootstrapped with the broken driver: re-run `4ge init claude .`
|
|
197
|
+
(idempotent repair overwrites `.claude/workflows/wfl-init.js`).
|
|
198
|
+
|
|
199
|
+
## [1.0.30] — 2026-06-07
|
|
200
|
+
|
|
201
|
+
Fixed `/forge:*` command namespace — full project vendoring (bundles forge-plugin 1.4.0).
|
|
202
|
+
|
|
203
|
+
### Changed
|
|
204
|
+
|
|
205
|
+
- **Bootstrap Step 4 — full `/forge:*` command surface vendored.** Replaces the
|
|
206
|
+
init.md-only install: the union of `.base-pack/commands/` (17 sprint-workflow
|
|
207
|
+
shims, now static `/forge:*` files) and `commands/` (utility commands) vendors
|
|
208
|
+
into `.claude/commands/forge/`. On name collision (`init.md`, `check-agent.md`,
|
|
209
|
+
`enhance.md`) the `.base-pack` version wins. Project-prefix namespaces
|
|
210
|
+
(`/acme:*`, `/hello:*`) are retired — wfl:init no longer generates them
|
|
211
|
+
(plugin 1.4.0 `getCommandsSubdir()` is fixed to `forge`).
|
|
212
|
+
|
|
213
|
+
- **Bootstrap Step 4c — Forge-root content vendored into `.forge/`.** `init/`
|
|
214
|
+
(wfl:init phase rulebooks), `.base-pack/` (Phase 3 materialization source —
|
|
215
|
+
substitute-placeholders probes it first), `meta/` (rebuild/migrate sources +
|
|
216
|
+
skill-recommendations), and `.claude-plugin/plugin.json` (version source).
|
|
217
|
+
The vendored `.forge/` now serves as a complete Forge root for the
|
|
218
|
+
`${CLAUDE_PLUGIN_ROOT:-$(pwd)/.forge}` fallback every command carries.
|
|
219
|
+
|
|
220
|
+
- **Bootstrap Step 4d — Claude Code assets vendored into `.claude/`.**
|
|
221
|
+
`agents/` (store-query-validator, tomoshibi) and `skills/` (4 skill dirs).
|
|
222
|
+
|
|
223
|
+
- **`forge.bundledVersion`** corrected to track the actually-bundled plugin
|
|
224
|
+
(1.4.0; had drifted at 1.2.21).
|
|
225
|
+
|
|
226
|
+
### Fixed
|
|
227
|
+
|
|
228
|
+
- **`composeUpdateKickoff` directive patch** handles both the plugin ≥ 1.4.0
|
|
229
|
+
`${CLAUDE_PLUGIN_ROOT:-$(pwd)/.forge}` form and the legacy
|
|
230
|
+
`${CLAUDE_PLUGIN_ROOT}` form when retargeting `update.md`.
|
|
231
|
+
|
|
232
|
+
## [1.0.29] — 2026-06-07
|
|
233
|
+
|
|
234
|
+
`4ge init claude` bootstrap repair, round 2 — hook runtime deps (PostToolUse MODULE_NOT_FOUND in 1.0.28).
|
|
235
|
+
|
|
236
|
+
### Fixed
|
|
237
|
+
|
|
238
|
+
- **`hooks/lib/` vendored (bootstrap Step 3b + build-payload 2e4).** Hook scripts
|
|
239
|
+
require `./lib/common.cjs` / `./lib/write-registry.js` at runtime; neither the
|
|
240
|
+
payload nor the bootstrap shipped `hooks/lib/`, so `validate-write`, `post-init`,
|
|
241
|
+
and `post-sprint` failed with MODULE_NOT_FOUND on every matching tool call
|
|
242
|
+
(fail-open, but noisy in the Claude Code UI).
|
|
243
|
+
|
|
244
|
+
- **`query-logger.cjs` added to `TOOLS_TO_COPY`.** The settings.json PostToolUse:Bash
|
|
245
|
+
hook points at `.forge/tools/query-logger.cjs`, but the tool was never bundled into
|
|
246
|
+
the payload — a hard exit-1 hook error on every Bash call in a bootstrapped project.
|
|
247
|
+
|
|
248
|
+
- **`tools/package.json` CJS scope marker vendored (FORGE-BUG-030 parity).** The
|
|
249
|
+
bootstrap copy filter (`*.cjs`/`*.js` only) dropped the `{"type":"commonjs"}`
|
|
250
|
+
marker build-payload writes into `tools/` — vendored `lib/*.js` would resolve as
|
|
251
|
+
ESM and crash in `"type":"module"` host projects.
|
|
252
|
+
|
|
253
|
+
## [1.0.28] — 2026-06-07
|
|
254
|
+
|
|
255
|
+
`4ge init claude` bootstrap repair — vendor hook scripts + schemas (first-field-test regressions in 1.0.27).
|
|
256
|
+
|
|
257
|
+
### Fixed
|
|
258
|
+
|
|
259
|
+
- **Bootstrap Step 3b — hook scripts vendored.** `bootstrapClaudeProject()` now copies
|
|
260
|
+
`payload/hooks/*.cjs` into `.forge/tools/hooks/` — the exact paths the Step 7 settings
|
|
261
|
+
wiring points at. In 1.0.27 the copy step was missing entirely, so every wired hook
|
|
262
|
+
(SessionStart, PreToolUse, PostToolUse, PermissionRequest) fired `node` against a
|
|
263
|
+
nonexistent file and failed with MODULE_NOT_FOUND on session start.
|
|
264
|
+
|
|
265
|
+
- **Bootstrap Step 3c — schemas vendored.** `payload/schemas/*.json` + `schemas/_defs/`
|
|
266
|
+
are now copied into `.forge/schemas/` (previously scaffolded empty), per the
|
|
267
|
+
cli-first-bootstrap ADR ("vendor tools → `.forge/tools/` + schemas").
|
|
268
|
+
|
|
269
|
+
- **`settings-merge.ts` — query-logger retarget.** `query-logger.cjs` is a tool, not a
|
|
270
|
+
hook script (plugin `hooks.json` points it at `tools/query-logger.cjs`); the settings
|
|
271
|
+
block now targets `$CLAUDE_PROJECT_DIR/.forge/tools/query-logger.cjs` instead of the
|
|
272
|
+
nonexistent `tools/hooks/query-logger.cjs`.
|
|
273
|
+
|
|
274
|
+
- Bootstrap manifest `steps` now records `vendor-hooks` and `vendor-schemas`.
|
|
275
|
+
|
|
276
|
+
## [1.0.27] — 2026-06-07
|
|
277
|
+
|
|
278
|
+
`4ge init claude` — settings hooks wiring, gitignore, preflight, hand-off UX (FORGE-S31-T03).
|
|
279
|
+
|
|
280
|
+
### Added
|
|
281
|
+
|
|
282
|
+
- **`settings-merge.ts`** — new `mergeForgeHooks()` + `buildForgeHooksBlock()` module with
|
|
283
|
+
merge-not-clobber semantics for wiring Forge hooks into project `.claude/settings.json`.
|
|
284
|
+
Handles 6 branches: absent file (create), empty object (add hooks key), existing without hooks
|
|
285
|
+
(merge in), unrelated hooks (merge Forge entries without overwriting), already-present (no-op),
|
|
286
|
+
malformed JSON (error, never overwrites). Fully idempotent: second run returns `"already-present"`.
|
|
287
|
+
|
|
288
|
+
- **Bootstrap Step 7** — `bootstrapClaudeProject()` now wires Forge hooks into project
|
|
289
|
+
`.claude/settings.json` via `mergeForgeHooks()`. All 8 hook entries (7 task-workflow hooks +
|
|
290
|
+
`forge-permissions`) are written with commands pointing at
|
|
291
|
+
`$CLAUDE_PROJECT_DIR/.forge/tools/hooks/<name>.cjs`. Outcome (`created`/`skipped`/`warnings`)
|
|
292
|
+
reported in `BootstrapResult` per existing conventions.
|
|
293
|
+
|
|
294
|
+
- **Bootstrap Step 8** — idempotent `.gitignore` append. Ported `updateGitignore()` from
|
|
295
|
+
`phase4-register.ts` as a pure standalone function (no `ctx.ui`). If `.gitignore` is present
|
|
296
|
+
and does not already contain a `.forge/store/events/` parent pattern, appends the standard
|
|
297
|
+
Forge gitignore block. Skips silently when absent or already covered.
|
|
298
|
+
|
|
299
|
+
- **Bootstrap Step 9** — preflight check for Claude Code availability (`runPreflight()`). Detects
|
|
300
|
+
`claude` binary reachability via `execFileSync("claude", ["--version"])`. Non-fatal: adds an
|
|
301
|
+
actionable warning to `result.warnings` if unavailable, but does not flip `result.ok`. Returns
|
|
302
|
+
`BootstrapPreflight { claudeAvailable, workflowToolChecked, warnings }` attached to `BootstrapResult`.
|
|
303
|
+
|
|
304
|
+
- **`BootstrapPreflight` type** — new sub-object on `BootstrapResult` with `claudeAvailable: boolean`,
|
|
305
|
+
`workflowToolChecked: boolean` (always `false` in T03 — no reliable offline check), and `warnings: string[]`.
|
|
306
|
+
Additive change — T02 tests remain green.
|
|
307
|
+
|
|
308
|
+
- **Hand-off UX** — `init.ts` now prints a structured multi-line message naming `/forge:init`,
|
|
309
|
+
explaining the one-time hooks-approval prompt, and listing all 7 task-workflow hooks by name
|
|
310
|
+
and event type. Prepends a warning line if Claude Code was not found on PATH.
|
|
311
|
+
|
|
312
|
+
- **Test suite** — 9-fixture `settings-merge.test.ts` covering all merge branches; 11 new assertions
|
|
313
|
+
in `bootstrap.test.ts` for Steps 7–9 and idempotency.
|
|
314
|
+
|
|
315
|
+
## [1.0.26] — 2026-06-07
|
|
316
|
+
|
|
317
|
+
CLI-first bootstrap: new `4ge init claude [dir]` bin subcommand (FORGE-S31-T02).
|
|
318
|
+
|
|
319
|
+
### Added
|
|
320
|
+
|
|
321
|
+
- **`forge init claude [dir]` subcommand** — new bin route that deterministically
|
|
322
|
+
bootstraps a Claude Code project from the bundled forge-payload in seconds.
|
|
323
|
+
Zero LLM tokens, zero network access, pure fs. Scaffolds `.forge/` skeleton
|
|
324
|
+
+ store dirs, vendors tools+lib into `.forge/tools/`, installs
|
|
325
|
+
`.claude/commands/forge/init.md` from payload, and installs all four
|
|
326
|
+
`.claude/workflows/wfl-*.js` drivers. Writes `.forge/.bootstrap-manifest.json`
|
|
327
|
+
with payload version and integrity hash. Idempotent repair: a second consecutive
|
|
328
|
+
run is a byte-identical no-op; partial bootstraps are repaired file-by-file.
|
|
329
|
+
`.forge/config.json` and `.forge/store/**` are never touched.
|
|
330
|
+
|
|
331
|
+
- **`src/extensions/forgecli/claude-bootstrap/bootstrap.ts`** — the pure-fs
|
|
332
|
+
bootstrap module (`bootstrapClaudeProject(opts)`) with clean/partial/complete
|
|
333
|
+
idempotency, fast-fail payload validation, and structured `BootstrapResult`
|
|
334
|
+
(created/skipped/warnings). Grep-negative: no fetch/network, no store writes,
|
|
335
|
+
no sendUserMessage, no ctx.ui.
|
|
336
|
+
|
|
337
|
+
- **Vitest tests** in
|
|
338
|
+
`test/extensions/forgecli/claude-bootstrap/bootstrap.test.ts` — 17 tests
|
|
339
|
+
covering clean / partial / complete (no-op) / non-writable / payload-validation
|
|
340
|
+
/ init.md install / wfl-drivers / grep-negative ACs branches. All integration-
|
|
341
|
+
style against the real function (no fs mocking).
|
|
342
|
+
|
|
343
|
+
- **argv.ts**: extended `ForgeAction` union with `"init"`; added `init claude [dir]`
|
|
344
|
+
parse branch before the fast-path subcommand block.
|
|
345
|
+
|
|
346
|
+
- **`src/bin/init.ts`** — `parseInitArgs()` + `runInit()` handler following the
|
|
347
|
+
`runDoctor` / `runUpdate` / `runConfig` structural convention.
|
|
348
|
+
|
|
349
|
+
- **forge.ts**: wired `forgeAction === "init"` dispatch branch; updated help text.
|
|
350
|
+
|
|
10
351
|
## [1.0.25] — 2026-06-06
|
|
11
352
|
|
|
12
353
|
Coordinated release matching forge plugin **v1.2.21**. Both changes come from
|
package/README.md
CHANGED
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
|
|
19
19
|
forge-cli generates a project-specific engineering knowledge base, sprint workflows, agent personas, and an SDLC pipeline — then drives them from your terminal on the [pi-coding-agent] runtime. Model-agnostic. No editor lock-in.
|
|
20
20
|
|
|
21
|
+
> **Two ways to run Forge.** Drive it headless in your terminal on the pi runtime (this README), **or** scaffold Forge into a Claude Code project with `4ge init claude .` and run the `/forge:*` slash commands inside Claude Code — remove it with `4ge uninstall claude`. The `4ge init` path is the supported way to add Forge to Claude Code and **replaces the deprecated marketplace plugin install** ([why](https://github.com/Entelligentsia/forge#distribution)).
|
|
22
|
+
|
|
21
23
|
## Why
|
|
22
24
|
|
|
23
25
|
- **Structured SDLC, in any terminal.** Plan → implement → review → validate → commit chains, gated by your own personas and audience rules.
|
|
@@ -5,6 +5,270 @@ Format: newest first. Breaking changes are marked **△ Breaking**.
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [1.5.0] — 2026-06-11
|
|
9
|
+
|
|
10
|
+
Plugin **shim-only sunset release** (FORGE-S32-T07). The stable skillforge
|
|
11
|
+
marketplace channel stops being a parallel distribution mechanism and becomes a
|
|
12
|
+
one-way migration ramp to the CLI-first install (`npm i -g @entelligentsia/forgecli`,
|
|
13
|
+
the `4ge` binary). A plugin user who invokes `/forge:init` (or `/forge:update` /
|
|
14
|
+
`/forge:rebuild`) on v1.5.0 is shown what changed and — with one explicit consent —
|
|
15
|
+
is migrated to the CLI, with project data (`.forge/config.json`, `.forge/store/**`,
|
|
16
|
+
the KB folder) preserved byte-for-byte.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- `forge/forge/tools/apply-plugin-shim.cjs` — a **release-branch** shim-overlay
|
|
20
|
+
generator (sibling of `rewrite-plugin-urls.cjs`). It overlays the
|
|
21
|
+
`release`-branch `forge/forge/commands/*.md` with two template tiers and
|
|
22
|
+
regenerates `integrity.json` so `/forge:health` verification still passes:
|
|
23
|
+
- **Full consent-gated shim** for `init` / `update` / `rebuild`: migration
|
|
24
|
+
explanation (what is preserved) + node/npm preflight + a **prose-only**,
|
|
25
|
+
consent-gated `npm i -g @entelligentsia/forgecli && 4ge init claude .` offer
|
|
26
|
+
(never auto-executed) + a print-only fallback.
|
|
27
|
+
- **Short redirect notice** for every other command ("retired; run
|
|
28
|
+
`/forge:init` to migrate").
|
|
29
|
+
The tool **refuses to apply without `--target release`** (mirrors the
|
|
30
|
+
`rewrite-plugin-urls` `--target` discipline) — guarding against a destructive
|
|
31
|
+
run on `main`.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- README and the skillforge marketplace listing read **CLI-first**; the
|
|
35
|
+
marketplace appears only as a deprecation / migration note naming v1.5.0 as the
|
|
36
|
+
shim and the following release as the dual-path strip.
|
|
37
|
+
- `forge-releaser` ritual wires `apply-plugin-shim` into Step 2 on the `release`
|
|
38
|
+
branch and makes the **build-payload-from-main** + `verify-publish` gate
|
|
39
|
+
explicit: the CLI npm payload is poured from **main** (real T03–T06 commands)
|
|
40
|
+
while the plugin carries the release-overlay shims. The channel divergence is
|
|
41
|
+
intentional and gated.
|
|
42
|
+
|
|
43
|
+
### Notes
|
|
44
|
+
- **Critical channel split:** the shim is a release-branch overlay **only**.
|
|
45
|
+
Main's `forge/forge/commands/` stays the real unified T06 tree because
|
|
46
|
+
`build-payload.cjs` copies it verbatim into the CLI bundle — shimming main would
|
|
47
|
+
poison the CLI payload. The canary `forge@forge` channel tracks main and is
|
|
48
|
+
intentionally **not** shimmed.
|
|
49
|
+
- The dual-path code strip and the retirement of `apply-plugin-shim.cjs` itself
|
|
50
|
+
are deferred to S34 (mechanical). Non-breaking; installed projects converge on
|
|
51
|
+
the next `4ge update` / re-bootstrap.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## [1.4.13] — 2026-06-11
|
|
56
|
+
|
|
57
|
+
Command-tree unification (FORGE-S32-T06). The two payload command trees
|
|
58
|
+
(`forge/forge/commands/` and `forge/forge/init/base-pack/commands/`) are
|
|
59
|
+
collapsed into one. `forge/forge/commands/` is now the single source of truth
|
|
60
|
+
for every `/forge:*` command — "which copy wins" is no longer a question.
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
- Materialized the union into `forge/forge/commands/`: folded in the 14
|
|
64
|
+
non-colliding base-pack sprint-workflow shims (`approve`, `collate`, `commit`,
|
|
65
|
+
`fix-bug`, `implement`, `new-sprint`, `plan`, `plan-sprint`, `retro`,
|
|
66
|
+
`review-code`, `review-plan`, `run-sprint`, `run-task`, `validate`) and
|
|
67
|
+
overwrote the three collisions (`init`, `check-agent`, `enhance`) with the
|
|
68
|
+
base-pack winner bytes. Installed `.claude/commands/forge/` is byte-for-byte
|
|
69
|
+
identical to the prior union output.
|
|
70
|
+
- `payload-manifest.json` carries a single `commands` entry (the
|
|
71
|
+
`init/base-pack/commands` entry is removed); `bootstrap` copies one directory
|
|
72
|
+
with no union/collision ordering.
|
|
73
|
+
- Plugin-channel semantic delta: the plugin-served `init`/`check-agent`/
|
|
74
|
+
`enhance` bytes now match the base-pack winners. The plugin channel is retired
|
|
75
|
+
at T07.
|
|
76
|
+
|
|
77
|
+
### Removed
|
|
78
|
+
- Deleted `forge/forge/init/base-pack/commands/` (17 files). `build-base-pack.cjs`
|
|
79
|
+
no longer regenerates it — the Section-5 command-generation loop and the
|
|
80
|
+
`expectedFiles` "Commands (16)" block were removed.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## [1.4.7] — 2026-06-10
|
|
85
|
+
|
|
86
|
+
Declarative payload manifest + source-drift check (FORGE-S32-T02). A new
|
|
87
|
+
`payload-manifest.json` at the payload root names every shipped artifact —
|
|
88
|
+
source path (under `forge/forge/`) → bundle path (`dist/forge-payload/`) →
|
|
89
|
+
install destination (bootstrapped project root) → removal owner (uninstall
|
|
90
|
+
grouping) — spec'd by the sibling `schemas/payload-manifest.schema.json`. This
|
|
91
|
+
replaces the implicit contract previously spread across `build-payload.cjs`,
|
|
92
|
+
`bootstrap.ts`, and `uninstall.ts` hand-maintained copy lists that caused the
|
|
93
|
+
FORGE-BUG-030 / FORGE-BUG-036 `MODULE_NOT_FOUND` class.
|
|
94
|
+
|
|
95
|
+
### Added
|
|
96
|
+
- `tools/check-payload-manifest.cjs` — deterministic, CI-only source-drift
|
|
97
|
+
check. Exits non-zero on a manifest entry pointing at a missing source, or a
|
|
98
|
+
file under a recursively-copied payload tree that no manifest entry claims.
|
|
99
|
+
Wired into `plugin-ci.yml`. Not vendored into project instances
|
|
100
|
+
(`build-manifest.cjs` `DEV_ONLY_TOOLS` excludes it).
|
|
101
|
+
|
|
102
|
+
The three forge-cli consumers are rewired to read the manifest in FORGE-S32-T03.
|
|
103
|
+
|
|
104
|
+
**Regenerate:** none (build/bootstrap infrastructure; not a materialized
|
|
105
|
+
instance artifact).
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## [1.4.5] — 2026-06-09
|
|
110
|
+
|
|
111
|
+
Collate-workflow KB-link refresh is orchestrator-owned under forge-cli. The
|
|
112
|
+
generated collate workflow no longer instructs the collator subagent to invoke
|
|
113
|
+
the `forge:refresh-kb-links` Skill tool — forge-cli subagents run via the Pi
|
|
114
|
+
runtime, which has no Skill tool, so the instruction triggered a multi-call
|
|
115
|
+
bash-probe loop before falling back. The Claude Code TUI standalone path still
|
|
116
|
+
uses the Skill tool; under forge-cli the run-task orchestrator owns the KB
|
|
117
|
+
refresh after the writeback phase. Prose-only change to `collator_agent.md`
|
|
118
|
+
(base-pack) and `meta-collate.md`.
|
|
119
|
+
|
|
120
|
+
**Regenerate:** workflows:collator_agent
|
|
121
|
+
|
|
122
|
+
> Manual: run `/forge:update` (or `/forge:rebuild`) to regenerate the collate workflow.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## [1.4.4] — 2026-06-07
|
|
127
|
+
|
|
128
|
+
First full CLI-first field test (git.git, ~500 source files) — `/forge:init`
|
|
129
|
+
passed all phases; gap analysis surfaced three config/manifest defects.
|
|
130
|
+
|
|
131
|
+
### Fixed
|
|
132
|
+
|
|
133
|
+
- **`paths.commands` config drift** — `phase-1-collect.md` still carried a
|
|
134
|
+
prefix-derived instruction ("if prefix is `HELLO`, write
|
|
135
|
+
`.claude/commands/hello`") that survived the 1.4.0 namespace redesign; the
|
|
136
|
+
config-writer followed it and check-structure reported commands 0/14. The
|
|
137
|
+
path is ALWAYS `.claude/commands/forge`.
|
|
138
|
+
- **`paths.forgeRoot` written as an absolute npm-global payload path** — no
|
|
139
|
+
rulebook said what to write, so the register agent improvised. New explicit
|
|
140
|
+
`generate-tools.md` step: `paths.forgeRoot = ".forge"` (the vendored
|
|
141
|
+
`.forge/` IS the Forge root; absolute paths break on upgrades/nvm switches).
|
|
142
|
+
- **False "missing tools" gaps (49/59)** — `build-manifest.cjs` now excludes
|
|
143
|
+
the 10 plugin-development tools (`build-manifest`, `gen-integrity`,
|
|
144
|
+
`token-forensics`, …) from the `tools` namespace: the structure manifest
|
|
145
|
+
describes project instances, and dev tools are never vendored.
|
|
146
|
+
`structure-manifest.json` regenerated; instance expectation is now 49/49.
|
|
147
|
+
|
|
148
|
+
## [1.4.3] — 2026-06-07
|
|
149
|
+
|
|
150
|
+
### Fixed
|
|
151
|
+
|
|
152
|
+
- **`wfl-init.js` Phase 2 verify invocations matched the tool's real CLI**
|
|
153
|
+
([forge#112](https://github.com/Entelligentsia/forge/issues/112) follow-up).
|
|
154
|
+
Prompts said `verify-phase.cjs --phase 2` bare; the tool requires
|
|
155
|
+
`--phase 2 --kb-path <path>` and exits 2 without it. Both invocations now
|
|
156
|
+
pass `--kb-path "${kbFolder}"`. Contract gates added: every driver
|
|
157
|
+
verify-phase invocation must use a supported phase (1–3) and `--phase 2`
|
|
158
|
+
must carry `--kb-path`.
|
|
159
|
+
|
|
160
|
+
## [1.4.2] — 2026-06-07
|
|
161
|
+
|
|
162
|
+
### Fixed
|
|
163
|
+
|
|
164
|
+
- **`wfl-init.js` ran zero agents but reported fabricated success
|
|
165
|
+
([forge#112](https://github.com/Entelligentsia/forge/issues/112)).** Four
|
|
166
|
+
Workflow-API misuses: `phase(title, callback)` callbacks (containing every
|
|
167
|
+
phase body) were silently discarded by the harness; `parallel()` received
|
|
168
|
+
in-flight promises instead of thunks; `agent()` got the model tier as first
|
|
169
|
+
arg instead of `opts.model`; structured results lacked `opts.schema` so
|
|
170
|
+
`.ok` reads were undefined. `/forge:init` "completed" in ~3 ms with 0 agents
|
|
171
|
+
and hardcoded `ok: true`. Phase bodies now run inline, fan-outs use thunks,
|
|
172
|
+
every agent call is `agent(prompt, { model, label, phase, schema })`, and
|
|
173
|
+
the final report reflects real phase results (halts return `ok: false` with
|
|
174
|
+
the failure reason). Rulebook reads use vendored `.forge/init/...` paths
|
|
175
|
+
with a direct-analysis fallback for absent prompt files. Fix ported from
|
|
176
|
+
the field-validated patch authored against the live testbench run.
|
|
177
|
+
|
|
178
|
+
### Added
|
|
179
|
+
|
|
180
|
+
- **`wfl-drivers-parse.test.cjs` API-contract gates** — all drivers checked
|
|
181
|
+
for phase-callback misuse, promise-instead-of-thunk `parallel()` calls,
|
|
182
|
+
reversed `agent()` args, and dead `init/**.md` rulebook references.
|
|
183
|
+
|
|
184
|
+
## [1.4.1] — 2026-06-07
|
|
185
|
+
|
|
186
|
+
### Fixed
|
|
187
|
+
|
|
188
|
+
- **`wfl-init.js` failed to launch — "SyntaxError: Unexpected keyword 'export'".**
|
|
189
|
+
The driver shipped wrapped in `export default async function wflInit(args)`,
|
|
190
|
+
but the Workflow harness permits exactly one export (the leading `meta`
|
|
191
|
+
literal) and evaluates the remainder as an async function body. The body now
|
|
192
|
+
runs at top level reading the `args` global, matching the other three
|
|
193
|
+
drivers. Every `/forge:init` → `workflow('wfl:init')` dispatch was dead on
|
|
194
|
+
arrival before this fix.
|
|
195
|
+
|
|
196
|
+
### Added
|
|
197
|
+
|
|
198
|
+
- **`wfl-drivers-parse.test.cjs`** — regression gate that parses all base-pack
|
|
199
|
+
`wfl-*.js` drivers exactly the way the Workflow harness does (single meta
|
|
200
|
+
export, body as async function body with workflow globals in scope).
|
|
201
|
+
|
|
202
|
+
## [1.4.0] — 2026-06-07
|
|
203
|
+
|
|
204
|
+
### Changed — △ Breaking
|
|
205
|
+
|
|
206
|
+
- **Fixed `/forge:*` command namespace (CLI-first redesign).** Project-prefix
|
|
207
|
+
command namespaces (`/acme:*`, `/hello:*`) are retired — every project gets
|
|
208
|
+
the same `/forge:*` surface, with full parity between Claude Code and the
|
|
209
|
+
pure CLI (`4ge`):
|
|
210
|
+
- `tools/lib/paths.cjs` — `getCommandsSubdir()` returns `'forge'`
|
|
211
|
+
unconditionally (prefix arg is vestigial, kept for caller compat).
|
|
212
|
+
- `init/base-pack/commands/*.md` — `/{{PREFIX}}:` → literal `/forge:`
|
|
213
|
+
(26 occurrences, 17 files). Command templates are now fully static.
|
|
214
|
+
- `tools/substitute-placeholders.cjs` — materializes commands to
|
|
215
|
+
`.claude/commands/forge/` regardless of project prefix.
|
|
216
|
+
- Rulebooks updated: `generate-commands.md`, `phase-3-materialize.md`,
|
|
217
|
+
`phase-1-collect.md` (config `paths.commands` example), `meta-migrate.md`,
|
|
218
|
+
`migrate_structural.md`, `commands/add-task.md` next-steps text.
|
|
219
|
+
- The prefix-derived namespace existed to avoid collisions with the Forge
|
|
220
|
+
*plugin's* own `/forge:*` commands — moot now that the plugin mechanism
|
|
221
|
+
is retired in favour of project-vendored commands.
|
|
222
|
+
- **Migration:** existing projects keep working with their old
|
|
223
|
+
`.claude/commands/<prefix>/` files; re-materialize to get
|
|
224
|
+
`.claude/commands/forge/`, then delete the prefix directory.
|
|
225
|
+
|
|
226
|
+
- **`FORGE_ROOT` vendored fallback in every command.** All 33 resolution
|
|
227
|
+
lines across `commands/*.md` and `init/base-pack/commands/*.md` change from
|
|
228
|
+
`${CLAUDE_PLUGIN_ROOT}` to `${CLAUDE_PLUGIN_ROOT:-$(pwd)/.forge}` — in a
|
|
229
|
+
plugin-installed session the plugin root still wins; in a plugin-less
|
|
230
|
+
project bootstrapped by `4ge init claude` the vendored `.forge/` (tools,
|
|
231
|
+
schemas, hooks, init, meta) serves as the Forge root.
|
|
232
|
+
|
|
233
|
+
## [1.3.0] — 2026-06-07
|
|
234
|
+
|
|
235
|
+
### Added
|
|
236
|
+
|
|
237
|
+
- **`init/base-pack/commands/init.md`** — new project-local command wrapper
|
|
238
|
+
installed by `4ge init claude .` into `.claude/commands/forge/`. Contains
|
|
239
|
+
the full hoisted-prompt flow (KB folder prompt, CLAUDE.md offer, timestamp
|
|
240
|
+
minting), dispatches `workflow('wfl:init', args)`, handles the
|
|
241
|
+
Workflow-tool-missing error explicitly, presents the marketplace-skills offer
|
|
242
|
+
from `result.skillMatches` post-workflow, invokes `forge:refresh-kb-links`
|
|
243
|
+
via the Skill tool, and emits the final report (KB doc count, workflow count,
|
|
244
|
+
command count, accepted/skipped skills). Uses vendored `.forge/tools/` paths
|
|
245
|
+
only — no `$FORGE_ROOT` / `${CLAUDE_PLUGIN_ROOT}` references.
|
|
246
|
+
|
|
247
|
+
### Changed
|
|
248
|
+
|
|
249
|
+
- **`commands/init.md` (plugin-side)** — Execute section rewritten to dispatch
|
|
250
|
+
`workflow('wfl:init', args)` with hoisted interactive prompts (KB folder
|
|
251
|
+
prompt, CLAUDE.md offer, timestamp minting). Replaces the previous
|
|
252
|
+
`Read $FORGE_ROOT/init/sdlc-init.md` instruction. Includes the explicit
|
|
253
|
+
Workflow-tool-missing error halt (Iron Law 5 — no silent degradation or
|
|
254
|
+
fallback to `sdlc-init.md`).
|
|
255
|
+
|
|
256
|
+
- **`init/phases/phase-1-collect.md`** — Pre-flight Knowledge Base Folder block
|
|
257
|
+
and Step 5 (Marketplace Skills) annotated as orchestrator-owned when the
|
|
258
|
+
orchestrator pre-supplies the values. Annotations are informational — no step
|
|
259
|
+
renames or renumbers (forge-cli `run-phases.ts` glob freeze maintained).
|
|
260
|
+
|
|
261
|
+
- **`init/phases/phase-4-register.md`** — Step 11 (Tomoshibi/refresh-kb-links)
|
|
262
|
+
and Step 13 (CLAUDE.md prompt) annotated as orchestrator-owned. Same
|
|
263
|
+
semantics-preserving annotation policy.
|
|
264
|
+
|
|
265
|
+
- **`init/sdlc-init.md`** — Body reduced to a spec-pointer paragraph: points
|
|
266
|
+
to `wfl-init.js` (orchestration), `commands/init.md` (dispatch surface), and
|
|
267
|
+
`init/phases/` (canonical per-phase contracts). Phase/verify table preserved
|
|
268
|
+
for human readers. File not deleted.
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
8
272
|
## [1.2.21] — 2026-06-06
|
|
9
273
|
|
|
10
274
|
### Fixed
|