@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
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Discovery: Stack
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Detect the project's programming languages, frameworks, versions, and runtime.
|
|
6
|
+
|
|
7
|
+
## Scan Targets
|
|
8
|
+
|
|
9
|
+
| File | What It Reveals |
|
|
10
|
+
|------|----------------|
|
|
11
|
+
| `package.json` | Node.js, npm dependencies, scripts |
|
|
12
|
+
| `requirements.txt` / `Pipfile` / `pyproject.toml` | Python, pip dependencies |
|
|
13
|
+
| `go.mod` | Go, module dependencies |
|
|
14
|
+
| `Cargo.toml` | Rust, crate dependencies |
|
|
15
|
+
| `Gemfile` | Ruby, gem dependencies |
|
|
16
|
+
| `Dockerfile` | Runtime, base image, build steps |
|
|
17
|
+
| `Makefile` | Build commands, task aliases |
|
|
18
|
+
| `*.sln` / `*.csproj` | .NET, C# |
|
|
19
|
+
|
|
20
|
+
## Tools
|
|
21
|
+
|
|
22
|
+
Use Glob to find these files, Read to parse them.
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
|
|
26
|
+
Structured report:
|
|
27
|
+
- Primary language(s)
|
|
28
|
+
- Framework(s) with versions
|
|
29
|
+
- Frontend framework (if any)
|
|
30
|
+
- Database (if detectable from dependencies)
|
|
31
|
+
- Task queue (if any)
|
|
32
|
+
- Containerisation (if any)
|
|
33
|
+
- Runtime version constraints
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Discovery: Testing
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Detect the project's test framework, test commands, build commands,
|
|
6
|
+
and lint configuration.
|
|
7
|
+
|
|
8
|
+
## Scan Targets
|
|
9
|
+
|
|
10
|
+
| Pattern | What It Reveals |
|
|
11
|
+
|---------|----------------|
|
|
12
|
+
| `test/` / `tests/` / `__tests__/` / `*_test.go` | Test directory structure |
|
|
13
|
+
| `jest.config.*` / `vitest.config.*` | JS test framework config |
|
|
14
|
+
| `pytest.ini` / `setup.cfg` / `pyproject.toml [tool.pytest]` | Python test config |
|
|
15
|
+
| `package.json scripts.test` | Test command |
|
|
16
|
+
| `.eslintrc*` / `ruff.toml` / `.golangci.yml` | Lint configuration |
|
|
17
|
+
| `.github/workflows/*.yml` | CI test/build/lint commands |
|
|
18
|
+
| `coverage/` / `.coveragerc` / `lcov.info` | Coverage configuration |
|
|
19
|
+
|
|
20
|
+
## Tools
|
|
21
|
+
|
|
22
|
+
Use Glob to find config files, Read to parse them. Use Bash to verify
|
|
23
|
+
commands work (e.g., `npm test --help` or `pytest --co -q | head`).
|
|
24
|
+
|
|
25
|
+
## Output
|
|
26
|
+
|
|
27
|
+
Structured report:
|
|
28
|
+
- Test framework(s) and version
|
|
29
|
+
- Test command (exact command to run tests)
|
|
30
|
+
- Build command (exact command to build)
|
|
31
|
+
- Lint command (exact command to lint)
|
|
32
|
+
- Syntax check command per language
|
|
33
|
+
- Coverage tooling (if any)
|
|
34
|
+
- Approximate test count
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Generation: Commands
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Generate standalone slash commands in `.claude/commands/forge/` that serve as
|
|
6
|
+
entry points to the generated workflows. The namespace is FIXED to `forge`
|
|
7
|
+
(CLI-first redesign): every project gets the same `/forge:*` surface, matching
|
|
8
|
+
what the `4ge` bootstrap vendors. Project-prefix namespaces (`/acme:*`,
|
|
9
|
+
`/ember:*`) are retired — they existed to avoid collisions with the Forge
|
|
10
|
+
*plugin's* own commands, moot now that the plugin mechanism is retired.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
- Generated workflows (from Phase 5) — their exact filenames and paths
|
|
15
|
+
- `.forge/config.json` — paths (project prefix no longer affects the command namespace)
|
|
16
|
+
|
|
17
|
+
## Outputs
|
|
18
|
+
|
|
19
|
+
`.claude/commands/forge/` with the fixed-namespace commands:
|
|
20
|
+
- `new-sprint.md` → `/forge:new-sprint`
|
|
21
|
+
- `plan.md` → `/forge:plan {TASK_ID}`
|
|
22
|
+
- `review-plan.md` → `/forge:review-plan {TASK_ID}`
|
|
23
|
+
- `implement.md` → `/forge:implement {TASK_ID}`
|
|
24
|
+
- `review-code.md` → `/forge:review-code {TASK_ID}`
|
|
25
|
+
- `fix-bug.md` → `/forge:fix-bug {BUG_ID}`
|
|
26
|
+
- `plan-sprint.md` → `/forge:plan-sprint`
|
|
27
|
+
- `run-task.md` → `/forge:run-task {TASK_ID}`
|
|
28
|
+
- `run-sprint.md` → `/forge:run-sprint {SPRINT_ID} [--parallel]`
|
|
29
|
+
- `collate.md` → `/forge:collate [SPRINT_ID]`
|
|
30
|
+
- `retro.md` → `/forge:retro {SPRINT_ID}`
|
|
31
|
+
- `approve.md` → `/forge:approve {TASK_ID}`
|
|
32
|
+
- `commit.md` → `/forge:commit {TASK_ID}`
|
|
33
|
+
- `check-agent.md` → `/forge:check-agent $ARGUMENTS`
|
|
34
|
+
- `enhance.md` → `/forge:enhance $ARGUMENTS`
|
|
35
|
+
- `validate.md` → `/forge:validate {TASK_ID}`
|
|
36
|
+
|
|
37
|
+
## Instructions
|
|
38
|
+
|
|
39
|
+
**Scope boundary:** Only ever read, write, or delete files in the explicit output list above (16 files).
|
|
40
|
+
Never touch any other file in `.claude/commands/` — custom commands, project-specific
|
|
41
|
+
wrappers, and unrecognised files must be left completely untouched.
|
|
42
|
+
|
|
43
|
+
**Pre-generation check (idempotency):** For each command file listed above, before writing:
|
|
44
|
+
1. Check first whether the file exists at the **flat path** `.claude/commands/{filename}.md`
|
|
45
|
+
(old non-namespaced location). If it does, treat it as non-conformant — overwrite into
|
|
46
|
+
the namespaced path and log: `Replaced flat command (now namespaced): <filename>`.
|
|
47
|
+
2. If the file does not exist at either path — write it fresh to the namespaced path.
|
|
48
|
+
3. If the file exists at the namespaced path `.claude/commands/forge/{filename}.md` — read it
|
|
49
|
+
and extract the workflow path it references (the `.forge/workflows/` path).
|
|
50
|
+
- If it does NOT reference `.forge/workflows/` — overwrite and log: `Replaced stale command: <filename>`.
|
|
51
|
+
- If it references `.forge/workflows/` but that workflow file **does not exist on disk** — overwrite and log: `Replaced command pointing to missing workflow: <filename>`.
|
|
52
|
+
- If it references `.forge/workflows/` and the workflow file exists — check whether the file matches the template format. If it is missing `effort:` frontmatter, contains `model:` frontmatter, contains a MASTER_INDEX read line, or uses old workflow naming (`engineer_*`, `supervisor_*`) — overwrite and log: `Replaced non-conformant command: <filename>`.
|
|
53
|
+
- **wfl: dispatch rung (scoped to three filenames only):** If the filename is one of `run-task.md`, `run-sprint.md`, or `fix-bug.md` — and the file body contains `Read .forge/workflows/` — it is non-conformant (it should use `wfl:` dispatch instead). Overwrite it with the `workflow('wfl:run-task'|'wfl:run-sprint'|'wfl:fix-bug', $ARGUMENTS)` body and log: `Replaced non-conformant command: <filename>`. Do NOT apply this rung to any other command — the other 13 commands legitimately use `Read .forge/workflows/` and must not be flagged.
|
|
54
|
+
- If it matches the template format and the workflow exists — skip it (already up to date).
|
|
55
|
+
|
|
56
|
+
This ensures any workflow that has been renamed or replaced causes its command wrapper to be regenerated rather than silently left pointing at a missing file.
|
|
57
|
+
|
|
58
|
+
Each command file MUST follow this exact template — no variations, no additions:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
---
|
|
62
|
+
description: {{description}}
|
|
63
|
+
effort: {{effort}}
|
|
64
|
+
---
|
|
65
|
+
Read `.forge/workflows/{{workflow}}.md` and follow it exactly.
|
|
66
|
+
{{argument_line}}
|
|
67
|
+
<!-- AUTO-GENERATED by /forge:init -->
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Where:
|
|
71
|
+
- `{{description}}` — from the descriptions table below (fixed, not model-generated)
|
|
72
|
+
- `{{effort}}` — from the effort table below (fixed mapping, not model choice)
|
|
73
|
+
- `{{workflow}}` — the exact filename of the generated workflow (no path prefix, no `engineer_`/`supervisor_` role prefix)
|
|
74
|
+
- `{{argument_line}}` — one of: `Task ID: $ARGUMENTS`, `Sprint ID: $ARGUMENTS`, `Bug ID: $ARGUMENTS`, or `Arguments: $ARGUMENTS`
|
|
75
|
+
|
|
76
|
+
**Do NOT deviate from this template.** Specifically:
|
|
77
|
+
- Do NOT include a `Read {KB_PATH}/MASTER_INDEX.md` line. The workflow loads MASTER_INDEX as its first step — pre-loading it gives the model enough context to rationalise skipping the workflow entirely and doing the work inline. Workflow first, always.
|
|
78
|
+
- Do NOT include `model:` frontmatter (use `effort:` instead — model-agnostic).
|
|
79
|
+
- Do NOT add numbered step lists, explanations, or any content beyond the template.
|
|
80
|
+
- Do NOT add a `Also read` line for any file — the workflow controls all context loading.
|
|
81
|
+
|
|
82
|
+
**Per-command descriptions** (fixed, not model-generated):
|
|
83
|
+
|
|
84
|
+
| Command | description |
|
|
85
|
+
|---|---|
|
|
86
|
+
| `plan.md` | Design and document the implementation plan for a task |
|
|
87
|
+
| `review-plan.md` | Architectural review of a task implementation plan |
|
|
88
|
+
| `implement.md` | Execute the approved implementation plan for a task |
|
|
89
|
+
| `review-code.md` | Code quality review of a completed task implementation |
|
|
90
|
+
| `fix-bug.md` | Triage, diagnose, and fix a bug |
|
|
91
|
+
| `approve.md` | Final architect approval gate for a completed task |
|
|
92
|
+
| `commit.md` | Stage and commit completed task artifacts |
|
|
93
|
+
| `run-task.md` | Orchestrate the full plan→implement→review→approve pipeline for a task |
|
|
94
|
+
| `run-sprint.md` | Execute all tasks in a sprint (sequential or parallel) |
|
|
95
|
+
| `new-sprint.md` | Elicit and structure requirements for a new sprint |
|
|
96
|
+
| `plan-sprint.md` | Decompose sprint requirements into tasks with dependencies |
|
|
97
|
+
| `collate.md` | Regenerate KB documents from the JSON store |
|
|
98
|
+
| `retro.md` | Produce sprint retrospective and lessons-learned document |
|
|
99
|
+
| `check-agent.md` | Verify an agent has read and understood the project KB before high-stakes tasks |
|
|
100
|
+
| `enhance.md` | Progressive project-specific enrichment of structural elements |
|
|
101
|
+
| `validate.md` | Validate that a task implementation satisfies acceptance criteria |
|
|
102
|
+
|
|
103
|
+
**Effort levels** — use `effort:` frontmatter (capability request, model-agnostic):
|
|
104
|
+
|
|
105
|
+
| Command | effort | Rationale |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| `review-plan.md` | `max` | Architectural gate — needs deepest reasoning |
|
|
108
|
+
| `review-code.md` | `max` | Quality gate — needs deepest reasoning |
|
|
109
|
+
| `approve.md` | `max` | Final approval gate |
|
|
110
|
+
| `plan.md` | `high` | Design work with broad codebase context |
|
|
111
|
+
| `implement.md` | `high` | Non-trivial code generation |
|
|
112
|
+
| `fix-bug.md` | `high` | Diagnosis + fix |
|
|
113
|
+
| `plan-sprint.md` | `high` | Decomposition and dependency analysis |
|
|
114
|
+
| `run-task.md` | `high` | Full task orchestration |
|
|
115
|
+
| `run-sprint.md` | `high` | Multi-task orchestration |
|
|
116
|
+
| `new-sprint.md` | `high` | Structured requirements elicitation |
|
|
117
|
+
| `retro.md` | `medium` | Reflection and summary |
|
|
118
|
+
| `collate.md` | `low` | Mechanical markdown regeneration |
|
|
119
|
+
| `commit.md` | `low` | Staging and committing completed work |
|
|
120
|
+
| `check-agent.md` | `medium` | Short factual quiz — moderate reasoning, no deep codebase traversal |
|
|
121
|
+
| `enhance.md` | `high` | Enhancement agent — broad structural enrichment |
|
|
122
|
+
| `validate.md` | `max` | Validation gate — needs deepest reasoning |
|
|
123
|
+
|
|
124
|
+
Do **not** include `model:` frontmatter — that directive pins a specific model and is
|
|
125
|
+
not appropriate for user command files.
|
|
126
|
+
|
|
127
|
+
After writing each command file, record it in the generation manifest:
|
|
128
|
+
```sh
|
|
129
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record {paths.commands}/forge/{filename}.md
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
(`FORGE_ROOT` is available from the parent init flow; tool invocations use `$FORGE_ROOT/tools/` throughout.)
|
|
133
|
+
|
|
134
|
+
## Post-generation: flat-file cleanup
|
|
135
|
+
|
|
136
|
+
After all 16 command files have been written and recorded, scan for pre-v0.13.0
|
|
137
|
+
flat command files that were never namespaced. These are the **13 known flat filenames**:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
new-sprint.md plan-sprint.md run-task.md run-sprint.md plan.md
|
|
141
|
+
review-plan.md implement.md review-code.md fix-bug.md approve.md
|
|
142
|
+
commit.md collate.md retro.md
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Check for each at `.claude/commands/{filename}.md` (the flat path, NOT the namespaced
|
|
146
|
+
subdirectory).
|
|
147
|
+
|
|
148
|
+
**Logic:**
|
|
149
|
+
|
|
150
|
+
- If **none** of the 13 files exist at the flat path — skip silently. No prompt.
|
|
151
|
+
|
|
152
|
+
- If **one or more** exist, display the list:
|
|
153
|
+
```
|
|
154
|
+
Found pre-v0.13.0 flat command files that are no longer used:
|
|
155
|
+
.claude/commands/plan.md
|
|
156
|
+
.claude/commands/implement.md
|
|
157
|
+
... (list each found file)
|
|
158
|
+
|
|
159
|
+
These have been replaced by namespaced commands under .claude/commands/forge/.
|
|
160
|
+
Remove them now? (yes / skip)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
- **On `yes`:** Delete each found file. For each deletion, print:
|
|
164
|
+
`Removed: .claude/commands/{filename}.md`
|
|
165
|
+
When done: `Flat command cleanup complete.`
|
|
166
|
+
|
|
167
|
+
- **On `skip`:** Print:
|
|
168
|
+
`Skipped. Remember to delete these files manually to avoid command name collisions.`
|
|
169
|
+
|
|
170
|
+
**Do NOT delete any file that is not in the 13-filename list above.** Custom commands,
|
|
171
|
+
project-specific wrappers, and unrecognised files are strictly off-limits.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Knowledge Base Doc Generation — Per-Subagent Instructions
|
|
2
|
+
|
|
3
|
+
You are generating **ONE** knowledge base document. You have been given:
|
|
4
|
+
|
|
5
|
+
1. A **discovery context** — the raw findings from Phase 1 discovery scans,
|
|
6
|
+
passed inline in your prompt
|
|
7
|
+
2. A **doc spec** — which file to write and what it should contain
|
|
8
|
+
3. A **project brief** (`.forge/init-context.md`) — for names and paths
|
|
9
|
+
|
|
10
|
+
Your job is to produce exactly one file and return a one-line status.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Rules
|
|
15
|
+
|
|
16
|
+
1. **Write EXACTLY ONE file** at the path specified in your doc spec.
|
|
17
|
+
|
|
18
|
+
2. **Confidence header** — every generated doc must open with:
|
|
19
|
+
```
|
|
20
|
+
<!-- AUTO-GENERATED by /forge:init — confidence: N% -->
|
|
21
|
+
```
|
|
22
|
+
Set N% based on how much evidence the discovery context provided:
|
|
23
|
+
- 90–100%: directly observed in code/config
|
|
24
|
+
- 70–89%: inferred from conventions or partial evidence
|
|
25
|
+
- below 70%: limited evidence, many `[?]` markers expected
|
|
26
|
+
|
|
27
|
+
3. **Uncertainty markers** — any fact not directly observed in the discovery
|
|
28
|
+
context must be marked with `[?]`. Do not invent values.
|
|
29
|
+
|
|
30
|
+
4. **Entity names** — use entity names exactly as they appear in the brief's
|
|
31
|
+
`## Domain Entities` section. Do not rename or abbreviate.
|
|
32
|
+
|
|
33
|
+
5. **Scope discipline** — generate only what the doc spec prescribes.
|
|
34
|
+
Do not add sections not listed in the spec. Do not cross-reference
|
|
35
|
+
other KB docs that do not yet exist.
|
|
36
|
+
|
|
37
|
+
6. **`architecture/INDEX.md` and `business-domain/INDEX.md`** — if your
|
|
38
|
+
assigned doc is an INDEX file, link only to docs that exist on disk at
|
|
39
|
+
the time you write. Do not anticipate files that may not have been written.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Self-check (mandatory last step)
|
|
44
|
+
|
|
45
|
+
After writing the file, verify before returning:
|
|
46
|
+
|
|
47
|
+
1. Read back the written file
|
|
48
|
+
2. Confirm the confidence header is present on the first line
|
|
49
|
+
3. Confirm no `{placeholder}` tokens remain
|
|
50
|
+
4. Record in the manifest:
|
|
51
|
+
```sh
|
|
52
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record "{output_path}"
|
|
53
|
+
```
|
|
54
|
+
(If generation-manifest.cjs is not yet installed, skip silently.)
|
|
55
|
+
|
|
56
|
+
5. Return **exactly one line**:
|
|
57
|
+
- `done: <first 80 chars of the written file>` — on success
|
|
58
|
+
- `FAILED: <reason>` — if any step above failed or the file could not be written
|
|
59
|
+
|
|
60
|
+
Do not output anything else after the status line.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Persona Generation — Per-Subagent Instructions
|
|
2
|
+
|
|
3
|
+
You are generating **ONE** persona file. You have been given two inputs:
|
|
4
|
+
|
|
5
|
+
1. A **project brief** (`.forge/init-context.md`) — authoritative for all names,
|
|
6
|
+
paths, command values, and installed-skill wiring
|
|
7
|
+
2. A **meta-persona source** — the role definition and Generation Instructions
|
|
8
|
+
|
|
9
|
+
Your job is to produce exactly one file and return a one-line status.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Inputs
|
|
14
|
+
|
|
15
|
+
Read these two sources before writing anything:
|
|
16
|
+
|
|
17
|
+
- `$FORGE_ROOT/meta/personas/{meta}` — the meta-persona for your assigned role
|
|
18
|
+
- `.forge/init-context.md` — the project brief (passed inline in your prompt)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Rules
|
|
23
|
+
|
|
24
|
+
1. **Write EXACTLY ONE file:** `.forge/personas/{role}.md`
|
|
25
|
+
|
|
26
|
+
2. **Opening line** — the first non-blank line must be the persona's symbol
|
|
27
|
+
(emoji from the meta-persona's `## Symbol` section) followed by a brief
|
|
28
|
+
first-person announcement in this exact format:
|
|
29
|
+
```
|
|
30
|
+
{symbol} **{Project} {Role Name}** — {quiet first-person voice, present-tense}
|
|
31
|
+
```
|
|
32
|
+
Do not use `symbol:` YAML frontmatter. The symbol must appear as the first
|
|
33
|
+
non-blank line of the file.
|
|
34
|
+
|
|
35
|
+
3. **Project substitution** — replace every `{Project}` placeholder with the
|
|
36
|
+
project name from the brief's `## Commands` / `## Paths` header line.
|
|
37
|
+
All entity names, architecture doc names, persona names, and command values
|
|
38
|
+
MUST come from the brief. Do not invent values.
|
|
39
|
+
|
|
40
|
+
4. **Stack wiring** — substitute actual commands from the brief's `## Commands`
|
|
41
|
+
section wherever the meta-persona references test/build/lint/syntax-check.
|
|
42
|
+
|
|
43
|
+
5. **Skill invocation wiring** — read `## Installed Skill Wiring` from the
|
|
44
|
+
brief. For each skill that maps to this persona's role, add an explicit
|
|
45
|
+
YOU MUST directive. Follow the wiring pattern in the meta-persona's
|
|
46
|
+
Generation Instructions exactly.
|
|
47
|
+
|
|
48
|
+
6. **Follow Generation Instructions** — each meta-persona has a
|
|
49
|
+
`## Generation Instructions` section (or equivalent). Follow it fully.
|
|
50
|
+
Do not add sections, steps, or notes beyond what it prescribes.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Self-check (mandatory last step)
|
|
55
|
+
|
|
56
|
+
After writing the file, verify before returning:
|
|
57
|
+
|
|
58
|
+
1. Read back `.forge/personas/{role}.md`
|
|
59
|
+
2. Confirm the **first non-blank line** starts with the persona's symbol emoji
|
|
60
|
+
3. Confirm **no unsubstituted `{Project}` placeholders** remain
|
|
61
|
+
4. Confirm **no literal `{TEST_COMMAND}`, `{BUILD_COMMAND}`, `{SYNTAX_CHECK}`,
|
|
62
|
+
or `{LINT_COMMAND}`** remain
|
|
63
|
+
5. Record in the manifest:
|
|
64
|
+
```sh
|
|
65
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record ".forge/personas/{role}.md"
|
|
66
|
+
```
|
|
67
|
+
(If generation-manifest.cjs is not yet installed, skip silently.)
|
|
68
|
+
|
|
69
|
+
6. Return **exactly one line**:
|
|
70
|
+
- `done: <first 80 chars of the written file>` — on success
|
|
71
|
+
- `FAILED: <reason>` — if any step above failed or the file could not be written
|
|
72
|
+
|
|
73
|
+
Do not output anything else after the status line.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Skill Generation — Per-Subagent Instructions
|
|
2
|
+
|
|
3
|
+
You are generating **ONE** skill file. You have been given two inputs:
|
|
4
|
+
|
|
5
|
+
1. A **project brief** (`.forge/init-context.md`) — authoritative for all names,
|
|
6
|
+
paths, command values, and installed-skill wiring
|
|
7
|
+
2. A **meta-skill source** — the role's universal capability set and Generation Instructions
|
|
8
|
+
|
|
9
|
+
Your job is to produce exactly one file and return a one-line status.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Inputs
|
|
14
|
+
|
|
15
|
+
Read these two sources before writing anything:
|
|
16
|
+
|
|
17
|
+
- `$FORGE_ROOT/meta/skills/{meta}` — the meta-skill for your assigned role
|
|
18
|
+
- `.forge/init-context.md` — the project brief (passed inline in your prompt)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Rules
|
|
23
|
+
|
|
24
|
+
1. **Write EXACTLY ONE file:** `.forge/skills/{role}-skills.md`
|
|
25
|
+
|
|
26
|
+
2. **Project interpolation** — replace every generic placeholder with the
|
|
27
|
+
project's actual tools, libraries, paths, and conventions from the brief.
|
|
28
|
+
All entity names, stack names, and command values MUST come from the brief.
|
|
29
|
+
Do not invent values.
|
|
30
|
+
|
|
31
|
+
3. **Stack specificity** — replace abstract references (e.g. "your test runner",
|
|
32
|
+
"your ORM") with the actual tools discovered for this project. Substitute
|
|
33
|
+
actual command values from the brief's `## Commands` section.
|
|
34
|
+
|
|
35
|
+
4. **Installed skill integration** — read `## Installed Skill Wiring` from the
|
|
36
|
+
brief. For each skill that maps to this role, add an explicit reference
|
|
37
|
+
explaining how the persona should combine the marketplace skill with this
|
|
38
|
+
project-specific skill set.
|
|
39
|
+
|
|
40
|
+
5. **Follow Generation Instructions** — each meta-skill has a
|
|
41
|
+
`## Generation Instructions` section. Follow it fully. Do not add sections,
|
|
42
|
+
steps, or notes beyond what it prescribes.
|
|
43
|
+
|
|
44
|
+
6. **No free-form additions** — produce only the sections the meta-skill defines.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Self-check (mandatory last step)
|
|
49
|
+
|
|
50
|
+
After writing the file, verify before returning:
|
|
51
|
+
|
|
52
|
+
1. Read back `.forge/skills/{role}-skills.md`
|
|
53
|
+
2. Confirm **no unsubstituted placeholders** remain
|
|
54
|
+
3. Confirm **no abstract project references** remain (e.g. "your framework",
|
|
55
|
+
"your ORM" — these must be replaced with the actual project values)
|
|
56
|
+
4. Record in the manifest:
|
|
57
|
+
```sh
|
|
58
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record ".forge/skills/{role}-skills.md"
|
|
59
|
+
```
|
|
60
|
+
(If generation-manifest.cjs is not yet installed, skip silently.)
|
|
61
|
+
|
|
62
|
+
5. Return **exactly one line**:
|
|
63
|
+
- `done: <first 80 chars of the written file>` — on success
|
|
64
|
+
- `FAILED: <reason>` — if any step above failed or the file could not be written
|
|
65
|
+
|
|
66
|
+
Do not output anything else after the status line.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Template Generation — Per-Subagent Instructions
|
|
2
|
+
|
|
3
|
+
You are generating **ONE** template file. You have been given two inputs:
|
|
4
|
+
|
|
5
|
+
1. A **project brief** (`.forge/init-context.md`) — authoritative for all names,
|
|
6
|
+
paths, command values, and entity names
|
|
7
|
+
2. A **meta-template source** — the document structure and Generation Instructions
|
|
8
|
+
|
|
9
|
+
Your job is to produce exactly one file and return a one-line status.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Inputs
|
|
14
|
+
|
|
15
|
+
Read these two sources before writing anything:
|
|
16
|
+
|
|
17
|
+
- `$FORGE_ROOT/meta/templates/{meta}` — the meta-template for your assigned document
|
|
18
|
+
- `.forge/init-context.md` — the project brief (passed inline in your prompt)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Rules
|
|
23
|
+
|
|
24
|
+
1. **Write EXACTLY ONE file:** `.forge/templates/{filename}.md`
|
|
25
|
+
|
|
26
|
+
2. **Stack-specific sections** — add framework-specific subsections based on the
|
|
27
|
+
stack information in the brief. Use the detected languages and frameworks to
|
|
28
|
+
decide which optional sections to include.
|
|
29
|
+
|
|
30
|
+
3. **Project substitution** — replace all `{Project}`, `{PREFIX}`, entity name
|
|
31
|
+
placeholders, and ID format examples with actual values from the brief.
|
|
32
|
+
All entity names and command values MUST come from the brief. Do not invent.
|
|
33
|
+
|
|
34
|
+
4. **Test output formats** — reference the project's actual test runner output
|
|
35
|
+
format in any template sections that involve test results.
|
|
36
|
+
|
|
37
|
+
5. **Follow Generation Instructions** — each meta-template has a
|
|
38
|
+
`## Generation Instructions` section. Follow it fully. Do not add sections
|
|
39
|
+
or notes beyond what it prescribes.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Self-check (mandatory last step)
|
|
44
|
+
|
|
45
|
+
After writing the file, verify before returning:
|
|
46
|
+
|
|
47
|
+
1. Read back `.forge/templates/{filename}.md`
|
|
48
|
+
2. Confirm **no unsubstituted placeholders** remain (no literal `{Project}`,
|
|
49
|
+
`{PREFIX}`, `{TEST_COMMAND}`, etc.)
|
|
50
|
+
3. Record in the manifest:
|
|
51
|
+
```sh
|
|
52
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record ".forge/templates/{filename}.md"
|
|
53
|
+
```
|
|
54
|
+
(If generation-manifest.cjs is not yet installed, skip silently.)
|
|
55
|
+
|
|
56
|
+
4. Return **exactly one line**:
|
|
57
|
+
- `done: <first 80 chars of the written file>` — on success
|
|
58
|
+
- `FAILED: <reason>` — if any step above failed or the file could not be written
|
|
59
|
+
|
|
60
|
+
Do not output anything else after the status line.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Generation: Tools
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Vendor the plugin tools closure and validation schemas into the project so
|
|
6
|
+
generated workflows can invoke tools via `node .forge/tools/<tool>.cjs` from
|
|
7
|
+
the project root without resolving `$FORGE_ROOT` at runtime.
|
|
8
|
+
|
|
9
|
+
Store validation schemas are loaded at runtime from `.forge/schemas/`
|
|
10
|
+
(project-installed), `forge/schemas/` (in-tree fallback), or
|
|
11
|
+
`$FORGE_ROOT/schemas/` (plugin-installed fallback). During init, schemas
|
|
12
|
+
are copied to `.forge/schemas/` so that validation works without relying
|
|
13
|
+
on fallback paths.
|
|
14
|
+
|
|
15
|
+
## Inputs
|
|
16
|
+
|
|
17
|
+
- `.forge/config.json` — target paths
|
|
18
|
+
|
|
19
|
+
## Outputs
|
|
20
|
+
|
|
21
|
+
- `.forge/tools/` — vendored plugin tools closure
|
|
22
|
+
- `.forge/tools/.forge-tools-version` — version marker for `/forge:health` staleness check
|
|
23
|
+
- `.forge/schemas/` — JSON Schema copies from the installed plugin
|
|
24
|
+
|
|
25
|
+
## Instructions
|
|
26
|
+
|
|
27
|
+
Read `.forge/config.json` for:
|
|
28
|
+
- `paths.store` (default: `.forge/store`)
|
|
29
|
+
|
|
30
|
+
### Step 1 — Copy validation schemas
|
|
31
|
+
|
|
32
|
+
Copy all JSON Schema files from the installed plugin to the project:
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
mkdir -p .forge/schemas
|
|
36
|
+
cp "$FORGE_ROOT/schemas/"*.schema.json .forge/schemas/
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
This ensures `store-cli.cjs` and `validate-store.cjs` can validate records
|
|
40
|
+
using the full schema (not the minimal fallback) even when the project is
|
|
41
|
+
not inside the Forge source tree.
|
|
42
|
+
|
|
43
|
+
### Step 2 — Vendor plugin tools
|
|
44
|
+
|
|
45
|
+
Copy the plugin tools closure into the project's `.forge/tools/` so that
|
|
46
|
+
generated artifacts can invoke `node .forge/tools/<tool>.cjs` from the
|
|
47
|
+
project root without resolving `$FORGE_ROOT`:
|
|
48
|
+
|
|
49
|
+
Copy BOTH `.cjs` and `.js` files. Some tools require `.js` helpers at load
|
|
50
|
+
time — e.g. `store-cli.cjs` does a top-level `require('./lib/validate.js')`
|
|
51
|
+
and `collate.cjs` requires `./lib/result.js` — so a `.cjs`-only copy leaves
|
|
52
|
+
`store-cli.cjs` dead-on-arrival and breaks KB collation. `-maxdepth 1`
|
|
53
|
+
excludes the `__tests__/` subtree without copying any `*.test.*` files.
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
mkdir -p .forge/tools/lib
|
|
57
|
+
|
|
58
|
+
# Copy top-level tool files (.cjs and .js — e.g. list-skills.js)
|
|
59
|
+
find "$FORGE_ROOT/tools" -maxdepth 1 -type f \( -name '*.cjs' -o -name '*.js' \) \
|
|
60
|
+
-exec cp {} .forge/tools/ \;
|
|
61
|
+
|
|
62
|
+
# Copy lib/ helper files (.cjs and .js — e.g. result.js, validate.js)
|
|
63
|
+
find "$FORGE_ROOT/tools/lib" -maxdepth 1 -type f \( -name '*.cjs' -o -name '*.js' \) \
|
|
64
|
+
-exec cp {} .forge/tools/lib/ \;
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
After copying, record each vendored file in the generation manifest so that
|
|
68
|
+
`/forge:health` can detect modifications or stale copies:
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
for f in $(find .forge/tools .forge/tools/lib -maxdepth 1 -type f \( -name '*.cjs' -o -name '*.js' \)); do
|
|
72
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record "$f"
|
|
73
|
+
done
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Step 2b — Write version marker
|
|
77
|
+
|
|
78
|
+
After the tool copy loop, write the version marker so `/forge:health` can
|
|
79
|
+
detect whether the vendored tools are stale relative to the active plugin:
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
ACTIVE_VERSION=$(node -e "console.log(require('$FORGE_ROOT/.claude-plugin/plugin.json').version)")
|
|
83
|
+
node -e "
|
|
84
|
+
const fs = require('fs');
|
|
85
|
+
fs.writeFileSync('.forge/tools/.forge-tools-version', JSON.stringify({ version: '${ACTIVE_VERSION}' }) + '\n');
|
|
86
|
+
"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Step 3 — Verify
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
node "$FORGE_ROOT/tools/validate-store.cjs" --dry-run
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
If it exits non-zero, report the error. Do not proceed to Phase 9 until this passes.
|
|
96
|
+
|
|
97
|
+
### Step 4 — Register the Forge root
|
|
98
|
+
|
|
99
|
+
Write the project-relative Forge root into config. In the CLI-first vendored
|
|
100
|
+
world the `.forge/` directory IS the Forge root (tools, schemas, hooks, init,
|
|
101
|
+
meta are all vendored there) — NEVER write an absolute path (plugin cache,
|
|
102
|
+
npm global payload, …): absolute paths break on version upgrades, nvm/node
|
|
103
|
+
switches, and machine moves.
|
|
104
|
+
|
|
105
|
+
```sh
|
|
106
|
+
node .forge/tools/manage-config.cjs set paths.forgeRoot '".forge"'
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Step 5 — Record hashes
|
|
110
|
+
|
|
111
|
+
Record all generated artifacts in the generation manifest so health checks
|
|
112
|
+
can detect later modifications:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
for f in .forge/schemas/*.schema.json; do
|
|
116
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record "$f"
|
|
117
|
+
done
|
|
118
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record .forge/config.json
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Notes
|
|
122
|
+
|
|
123
|
+
- `/forge:update` automatically refreshes schemas and re-vendors tools as part
|
|
124
|
+
of its normal flow — run it after upgrades to pick up any changed tools or
|
|
125
|
+
schema updates from the new version.
|
|
126
|
+
- Generated workflow files invoke tools using the vendored project-relative path:
|
|
127
|
+
```
|
|
128
|
+
node .forge/tools/<tool>.cjs
|
|
129
|
+
```
|
|
130
|
+
This works from the project root without resolving `$FORGE_ROOT` at runtime.
|
|
131
|
+
- `paths.forgeRef` in config records the plugin version the project was generated
|
|
132
|
+
against. `forge-preflight.cjs` uses it to resolve the plugin root via cache
|
|
133
|
+
lookup when runtime telemetry requires the original plugin path.
|