@warpgogol/forge 0.3.1
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/AGENTS.md +149 -0
- package/README.md +164 -0
- package/bin/cli.js +16 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +265 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/os/adr/adr.module.d.ts +3 -0
- package/dist/os/adr/adr.module.d.ts.map +1 -0
- package/dist/os/adr/adr.module.js +112 -0
- package/dist/os/adr/adr.module.js.map +1 -0
- package/dist/os/adr/frontmatter-io.d.ts +11 -0
- package/dist/os/adr/frontmatter-io.d.ts.map +1 -0
- package/dist/os/adr/frontmatter-io.js +64 -0
- package/dist/os/adr/frontmatter-io.js.map +1 -0
- package/dist/os/adr/handlers/archive.d.ts +24 -0
- package/dist/os/adr/handlers/archive.d.ts.map +1 -0
- package/dist/os/adr/handlers/archive.js +162 -0
- package/dist/os/adr/handlers/archive.js.map +1 -0
- package/dist/os/adr/handlers/list-create.d.ts +5 -0
- package/dist/os/adr/handlers/list-create.d.ts.map +1 -0
- package/dist/os/adr/handlers/list-create.js +165 -0
- package/dist/os/adr/handlers/list-create.js.map +1 -0
- package/dist/os/adr/handlers/validate.d.ts +4 -0
- package/dist/os/adr/handlers/validate.d.ts.map +1 -0
- package/dist/os/adr/handlers/validate.js +219 -0
- package/dist/os/adr/handlers/validate.js.map +1 -0
- package/dist/os/adr/index.d.ts +8 -0
- package/dist/os/adr/index.d.ts.map +1 -0
- package/dist/os/adr/index.js +18 -0
- package/dist/os/adr/index.js.map +1 -0
- package/dist/os/adr/types.d.ts +59 -0
- package/dist/os/adr/types.d.ts.map +1 -0
- package/dist/os/adr/types.js +54 -0
- package/dist/os/adr/types.js.map +1 -0
- package/dist/os/audit/audit.module.d.ts +3 -0
- package/dist/os/audit/audit.module.d.ts.map +1 -0
- package/dist/os/audit/audit.module.js +44 -0
- package/dist/os/audit/audit.module.js.map +1 -0
- package/dist/os/audit/frontmatter-io.d.ts +12 -0
- package/dist/os/audit/frontmatter-io.d.ts.map +1 -0
- package/dist/os/audit/frontmatter-io.js +73 -0
- package/dist/os/audit/frontmatter-io.js.map +1 -0
- package/dist/os/audit/handlers/archive.d.ts +4 -0
- package/dist/os/audit/handlers/archive.d.ts.map +1 -0
- package/dist/os/audit/handlers/archive.js +167 -0
- package/dist/os/audit/handlers/archive.js.map +1 -0
- package/dist/os/audit/index.d.ts +6 -0
- package/dist/os/audit/index.d.ts.map +1 -0
- package/dist/os/audit/index.js +16 -0
- package/dist/os/audit/index.js.map +1 -0
- package/dist/os/audit/types.d.ts +12 -0
- package/dist/os/audit/types.d.ts.map +1 -0
- package/dist/os/audit/types.js +17 -0
- package/dist/os/audit/types.js.map +1 -0
- package/dist/os/compass/compass.module.d.ts +3 -0
- package/dist/os/compass/compass.module.d.ts.map +1 -0
- package/dist/os/compass/compass.module.js +162 -0
- package/dist/os/compass/compass.module.js.map +1 -0
- package/dist/os/compass/handlers/compass-audit-handler.d.ts +36 -0
- package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-audit-handler.js +238 -0
- package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +19 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.js +205 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts +28 -0
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-inventory-handler.js +213 -0
- package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-inventory.d.ts +30 -0
- package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-inventory.js +418 -0
- package/dist/os/compass/handlers/compass-inventory.js.map +1 -0
- package/dist/os/compass/handlers/git-revision.d.ts +8 -0
- package/dist/os/compass/handlers/git-revision.d.ts.map +1 -0
- package/dist/os/compass/handlers/git-revision.js +99 -0
- package/dist/os/compass/handlers/git-revision.js.map +1 -0
- package/dist/os/compass/handlers/resolve-scan-root.d.ts +3 -0
- package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +1 -0
- package/dist/os/compass/handlers/resolve-scan-root.js +41 -0
- package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -0
- package/dist/os/compass/index.d.ts +8 -0
- package/dist/os/compass/index.d.ts.map +1 -0
- package/dist/os/compass/index.js +19 -0
- package/dist/os/compass/index.js.map +1 -0
- package/dist/os/core/core.module.d.ts +3 -0
- package/dist/os/core/core.module.d.ts.map +1 -0
- package/dist/os/core/core.module.js +318 -0
- package/dist/os/core/core.module.js.map +1 -0
- package/dist/os/core/index.d.ts +2 -0
- package/dist/os/core/index.d.ts.map +1 -0
- package/dist/os/core/index.js +13 -0
- package/dist/os/core/index.js.map +1 -0
- package/dist/os/mission/handlers/archive.d.ts +4 -0
- package/dist/os/mission/handlers/archive.d.ts.map +1 -0
- package/dist/os/mission/handlers/archive.js +209 -0
- package/dist/os/mission/handlers/archive.js.map +1 -0
- package/dist/os/mission/index.d.ts +2 -0
- package/dist/os/mission/index.d.ts.map +1 -0
- package/dist/os/mission/index.js +2 -0
- package/dist/os/mission/index.js.map +1 -0
- package/dist/os/mission/mission.module.d.ts +3 -0
- package/dist/os/mission/mission.module.d.ts.map +1 -0
- package/dist/os/mission/mission.module.js +44 -0
- package/dist/os/mission/mission.module.js.map +1 -0
- package/dist/os/mission/types.d.ts +23 -0
- package/dist/os/mission/types.d.ts.map +1 -0
- package/dist/os/mission/types.js +18 -0
- package/dist/os/mission/types.js.map +1 -0
- package/dist/os/naming/index.d.ts +3 -0
- package/dist/os/naming/index.d.ts.map +1 -0
- package/dist/os/naming/index.js +14 -0
- package/dist/os/naming/index.js.map +1 -0
- package/dist/os/naming/naming-convention.d.ts +25 -0
- package/dist/os/naming/naming-convention.d.ts.map +1 -0
- package/dist/os/naming/naming-convention.js +324 -0
- package/dist/os/naming/naming-convention.js.map +1 -0
- package/dist/os/naming/naming.module.d.ts +3 -0
- package/dist/os/naming/naming.module.d.ts.map +1 -0
- package/dist/os/naming/naming.module.js +33 -0
- package/dist/os/naming/naming.module.js.map +1 -0
- package/dist/os/plan/frontmatter-io.d.ts +12 -0
- package/dist/os/plan/frontmatter-io.d.ts.map +1 -0
- package/dist/os/plan/frontmatter-io.js +71 -0
- package/dist/os/plan/frontmatter-io.js.map +1 -0
- package/dist/os/plan/handlers/archive.d.ts +4 -0
- package/dist/os/plan/handlers/archive.d.ts.map +1 -0
- package/dist/os/plan/handlers/archive.js +166 -0
- package/dist/os/plan/handlers/archive.js.map +1 -0
- package/dist/os/plan/index.d.ts +6 -0
- package/dist/os/plan/index.d.ts.map +1 -0
- package/dist/os/plan/index.js +16 -0
- package/dist/os/plan/index.js.map +1 -0
- package/dist/os/plan/plan.module.d.ts +3 -0
- package/dist/os/plan/plan.module.d.ts.map +1 -0
- package/dist/os/plan/plan.module.js +44 -0
- package/dist/os/plan/plan.module.js.map +1 -0
- package/dist/os/plan/types.d.ts +12 -0
- package/dist/os/plan/types.d.ts.map +1 -0
- package/dist/os/plan/types.js +17 -0
- package/dist/os/plan/types.js.map +1 -0
- package/dist/os/rfc/acceptance.d.ts +15 -0
- package/dist/os/rfc/acceptance.d.ts.map +1 -0
- package/dist/os/rfc/acceptance.js +290 -0
- package/dist/os/rfc/acceptance.js.map +1 -0
- package/dist/os/rfc/decision-log.d.ts +6 -0
- package/dist/os/rfc/decision-log.d.ts.map +1 -0
- package/dist/os/rfc/decision-log.js +269 -0
- package/dist/os/rfc/decision-log.js.map +1 -0
- package/dist/os/rfc/dna-trace.d.ts +27 -0
- package/dist/os/rfc/dna-trace.d.ts.map +1 -0
- package/dist/os/rfc/dna-trace.js +214 -0
- package/dist/os/rfc/dna-trace.js.map +1 -0
- package/dist/os/rfc/frontmatter-io.d.ts +14 -0
- package/dist/os/rfc/frontmatter-io.d.ts.map +1 -0
- package/dist/os/rfc/frontmatter-io.js +98 -0
- package/dist/os/rfc/frontmatter-io.js.map +1 -0
- package/dist/os/rfc/handlers/archive.d.ts +24 -0
- package/dist/os/rfc/handlers/archive.d.ts.map +1 -0
- package/dist/os/rfc/handlers/archive.js +161 -0
- package/dist/os/rfc/handlers/archive.js.map +1 -0
- package/dist/os/rfc/handlers/check.d.ts +4 -0
- package/dist/os/rfc/handlers/check.d.ts.map +1 -0
- package/dist/os/rfc/handlers/check.js +195 -0
- package/dist/os/rfc/handlers/check.js.map +1 -0
- package/dist/os/rfc/handlers/implement-stamp.d.ts +4 -0
- package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -0
- package/dist/os/rfc/handlers/implement-stamp.js +334 -0
- package/dist/os/rfc/handlers/implement-stamp.js.map +1 -0
- package/dist/os/rfc/handlers/index-graph.d.ts +13 -0
- package/dist/os/rfc/handlers/index-graph.d.ts.map +1 -0
- package/dist/os/rfc/handlers/index-graph.js +189 -0
- package/dist/os/rfc/handlers/index-graph.js.map +1 -0
- package/dist/os/rfc/handlers/lifecycle.d.ts +13 -0
- package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -0
- package/dist/os/rfc/handlers/lifecycle.js +150 -0
- package/dist/os/rfc/handlers/lifecycle.js.map +1 -0
- package/dist/os/rfc/handlers/list-create.d.ts +6 -0
- package/dist/os/rfc/handlers/list-create.d.ts.map +1 -0
- package/dist/os/rfc/handlers/list-create.js +235 -0
- package/dist/os/rfc/handlers/list-create.js.map +1 -0
- package/dist/os/rfc/handlers/pipeline-status.d.ts +26 -0
- package/dist/os/rfc/handlers/pipeline-status.d.ts.map +1 -0
- package/dist/os/rfc/handlers/pipeline-status.js +124 -0
- package/dist/os/rfc/handlers/pipeline-status.js.map +1 -0
- package/dist/os/rfc/handlers/shared.d.ts +22 -0
- package/dist/os/rfc/handlers/shared.d.ts.map +1 -0
- package/dist/os/rfc/handlers/shared.js +99 -0
- package/dist/os/rfc/handlers/shared.js.map +1 -0
- package/dist/os/rfc/handlers/supersede-propose.d.ts +4 -0
- package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -0
- package/dist/os/rfc/handlers/supersede-propose.js +200 -0
- package/dist/os/rfc/handlers/supersede-propose.js.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts +29 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.js +461 -0
- package/dist/os/rfc/handlers/validate-rules.js.map +1 -0
- package/dist/os/rfc/handlers/validate.d.ts +4 -0
- package/dist/os/rfc/handlers/validate.d.ts.map +1 -0
- package/dist/os/rfc/handlers/validate.js +101 -0
- package/dist/os/rfc/handlers/validate.js.map +1 -0
- package/dist/os/rfc/handlers.d.ts +7 -0
- package/dist/os/rfc/handlers.d.ts.map +1 -0
- package/dist/os/rfc/handlers.js +19 -0
- package/dist/os/rfc/handlers.js.map +1 -0
- package/dist/os/rfc/index.d.ts +18 -0
- package/dist/os/rfc/index.d.ts.map +1 -0
- package/dist/os/rfc/index.js +24 -0
- package/dist/os/rfc/index.js.map +1 -0
- package/dist/os/rfc/rfc.module.d.ts +3 -0
- package/dist/os/rfc/rfc.module.d.ts.map +1 -0
- package/dist/os/rfc/rfc.module.js +355 -0
- package/dist/os/rfc/rfc.module.js.map +1 -0
- package/dist/os/rfc/types.d.ts +448 -0
- package/dist/os/rfc/types.d.ts.map +1 -0
- package/dist/os/rfc/types.js +95 -0
- package/dist/os/rfc/types.js.map +1 -0
- package/dist/os/rfc/verification-evidence.d.ts +8 -0
- package/dist/os/rfc/verification-evidence.d.ts.map +1 -0
- package/dist/os/rfc/verification-evidence.js +182 -0
- package/dist/os/rfc/verification-evidence.js.map +1 -0
- package/dist/os/session/atif-parser.d.ts +29 -0
- package/dist/os/session/atif-parser.d.ts.map +1 -0
- package/dist/os/session/atif-parser.js +138 -0
- package/dist/os/session/atif-parser.js.map +1 -0
- package/dist/os/session/frontmatter-io.d.ts +31 -0
- package/dist/os/session/frontmatter-io.d.ts.map +1 -0
- package/dist/os/session/frontmatter-io.js +146 -0
- package/dist/os/session/frontmatter-io.js.map +1 -0
- package/dist/os/session/handlers/archive.d.ts +4 -0
- package/dist/os/session/handlers/archive.d.ts.map +1 -0
- package/dist/os/session/handlers/archive.js +209 -0
- package/dist/os/session/handlers/archive.js.map +1 -0
- package/dist/os/session/handlers/list.d.ts +4 -0
- package/dist/os/session/handlers/list.d.ts.map +1 -0
- package/dist/os/session/handlers/list.js +147 -0
- package/dist/os/session/handlers/list.js.map +1 -0
- package/dist/os/session/handlers/save.d.ts +6 -0
- package/dist/os/session/handlers/save.d.ts.map +1 -0
- package/dist/os/session/handlers/save.js +285 -0
- package/dist/os/session/handlers/save.js.map +1 -0
- package/dist/os/session/handlers/validate.d.ts +4 -0
- package/dist/os/session/handlers/validate.d.ts.map +1 -0
- package/dist/os/session/handlers/validate.js +188 -0
- package/dist/os/session/handlers/validate.js.map +1 -0
- package/dist/os/session/index.d.ts +9 -0
- package/dist/os/session/index.d.ts.map +1 -0
- package/dist/os/session/index.js +20 -0
- package/dist/os/session/index.js.map +1 -0
- package/dist/os/session/session.module.d.ts +3 -0
- package/dist/os/session/session.module.d.ts.map +1 -0
- package/dist/os/session/session.module.js +113 -0
- package/dist/os/session/session.module.js.map +1 -0
- package/dist/os/session/types.d.ts +101 -0
- package/dist/os/session/types.d.ts.map +1 -0
- package/dist/os/session/types.js +52 -0
- package/dist/os/session/types.js.map +1 -0
- package/dist/os/spec/spec-materialize.d.ts +21 -0
- package/dist/os/spec/spec-materialize.d.ts.map +1 -0
- package/dist/os/spec/spec-materialize.js +342 -0
- package/dist/os/spec/spec-materialize.js.map +1 -0
- package/dist/os/spec/spec-schema.d.ts +132 -0
- package/dist/os/spec/spec-schema.d.ts.map +1 -0
- package/dist/os/spec/spec-schema.js +118 -0
- package/dist/os/spec/spec-schema.js.map +1 -0
- package/dist/os/spec/spec-status.d.ts +33 -0
- package/dist/os/spec/spec-status.d.ts.map +1 -0
- package/dist/os/spec/spec-status.js +222 -0
- package/dist/os/spec/spec-status.js.map +1 -0
- package/dist/os/spec/spec-validate.d.ts +4 -0
- package/dist/os/spec/spec-validate.d.ts.map +1 -0
- package/dist/os/spec/spec-validate.js +435 -0
- package/dist/os/spec/spec-validate.js.map +1 -0
- package/dist/os/spec/spec.module.d.ts +3 -0
- package/dist/os/spec/spec.module.d.ts.map +1 -0
- package/dist/os/spec/spec.module.js +67 -0
- package/dist/os/spec/spec.module.js.map +1 -0
- package/dist/os/werkstatt/handlers/lock.d.ts +10 -0
- package/dist/os/werkstatt/handlers/lock.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/lock.js +127 -0
- package/dist/os/werkstatt/handlers/lock.js.map +1 -0
- package/dist/os/werkstatt/handlers/schema.d.ts +32 -0
- package/dist/os/werkstatt/handlers/schema.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/schema.js +41 -0
- package/dist/os/werkstatt/handlers/schema.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts +15 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +142 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts +18 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.js +43 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts +11 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +79 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +1 -0
- package/dist/os/werkstatt/index.d.ts +7 -0
- package/dist/os/werkstatt/index.d.ts.map +1 -0
- package/dist/os/werkstatt/index.js +18 -0
- package/dist/os/werkstatt/index.js.map +1 -0
- package/dist/os/werkstatt/werkstatt.module.d.ts +3 -0
- package/dist/os/werkstatt/werkstatt.module.d.ts.map +1 -0
- package/dist/os/werkstatt/werkstatt.module.js +58 -0
- package/dist/os/werkstatt/werkstatt.module.js.map +1 -0
- package/dist/os/workflow/handlers.d.ts +12 -0
- package/dist/os/workflow/handlers.d.ts.map +1 -0
- package/dist/os/workflow/handlers.js +254 -0
- package/dist/os/workflow/handlers.js.map +1 -0
- package/dist/os/workflow/index.d.ts +4 -0
- package/dist/os/workflow/index.d.ts.map +1 -0
- package/dist/os/workflow/index.js +18 -0
- package/dist/os/workflow/index.js.map +1 -0
- package/dist/os/workflow/types.d.ts +69 -0
- package/dist/os/workflow/types.d.ts.map +1 -0
- package/dist/os/workflow/types.js +23 -0
- package/dist/os/workflow/types.js.map +1 -0
- package/dist/os/workflow/workflow.module.d.ts +3 -0
- package/dist/os/workflow/workflow.module.d.ts.map +1 -0
- package/dist/os/workflow/workflow.module.js +48 -0
- package/dist/os/workflow/workflow.module.js.map +1 -0
- package/dist/src/cli-output.d.ts +5 -0
- package/dist/src/cli-output.d.ts.map +1 -0
- package/dist/src/cli-output.js +52 -0
- package/dist/src/cli-output.js.map +1 -0
- package/dist/src/config/forge-config.d.ts +170 -0
- package/dist/src/config/forge-config.d.ts.map +1 -0
- package/dist/src/config/forge-config.js +259 -0
- package/dist/src/config/forge-config.js.map +1 -0
- package/dist/src/forge-module.d.ts +16 -0
- package/dist/src/forge-module.d.ts.map +1 -0
- package/dist/src/forge-module.js +15 -0
- package/dist/src/forge-module.js.map +1 -0
- package/dist/src/index.d.ts +30 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +48 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/migration-adapters/git-utils.d.ts +3 -0
- package/dist/src/migration-adapters/git-utils.d.ts.map +1 -0
- package/dist/src/migration-adapters/git-utils.js +46 -0
- package/dist/src/migration-adapters/git-utils.js.map +1 -0
- package/dist/src/migration-adapters/ignored-files.d.ts +12 -0
- package/dist/src/migration-adapters/ignored-files.d.ts.map +1 -0
- package/dist/src/migration-adapters/ignored-files.js +190 -0
- package/dist/src/migration-adapters/ignored-files.js.map +1 -0
- package/dist/src/migration-adapters/index.d.ts +8 -0
- package/dist/src/migration-adapters/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/index.js +17 -0
- package/dist/src/migration-adapters/index.js.map +1 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts +3 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js +141 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +1 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.d.ts +3 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.js +142 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.js.map +1 -0
- package/dist/src/migration-adapters/registry.d.ts +6 -0
- package/dist/src/migration-adapters/registry.d.ts.map +1 -0
- package/dist/src/migration-adapters/registry.js +58 -0
- package/dist/src/migration-adapters/registry.js.map +1 -0
- package/dist/src/migration-adapters/types.d.ts +35 -0
- package/dist/src/migration-adapters/types.d.ts.map +1 -0
- package/dist/src/migration-adapters/types.js +31 -0
- package/dist/src/migration-adapters/types.js.map +1 -0
- package/dist/src/onboarding/agents-generate.d.ts +11 -0
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -0
- package/dist/src/onboarding/agents-generate.js +415 -0
- package/dist/src/onboarding/agents-generate.js.map +1 -0
- package/dist/src/onboarding/create.d.ts +12 -0
- package/dist/src/onboarding/create.d.ts.map +1 -0
- package/dist/src/onboarding/create.js +232 -0
- package/dist/src/onboarding/create.js.map +1 -0
- package/dist/src/onboarding/doctor.d.ts +30 -0
- package/dist/src/onboarding/doctor.d.ts.map +1 -0
- package/dist/src/onboarding/doctor.js +380 -0
- package/dist/src/onboarding/doctor.js.map +1 -0
- package/dist/src/onboarding/extended-behavioral-layer.d.ts +10 -0
- package/dist/src/onboarding/extended-behavioral-layer.d.ts.map +1 -0
- package/dist/src/onboarding/extended-behavioral-layer.js +82 -0
- package/dist/src/onboarding/extended-behavioral-layer.js.map +1 -0
- package/dist/src/onboarding/init.d.ts +25 -0
- package/dist/src/onboarding/init.d.ts.map +1 -0
- package/dist/src/onboarding/init.js +260 -0
- package/dist/src/onboarding/init.js.map +1 -0
- package/dist/src/onboarding/scaffold-project.d.ts +12 -0
- package/dist/src/onboarding/scaffold-project.d.ts.map +1 -0
- package/dist/src/onboarding/scaffold-project.js +167 -0
- package/dist/src/onboarding/scaffold-project.js.map +1 -0
- package/dist/src/onboarding/scaffold.d.ts +15 -0
- package/dist/src/onboarding/scaffold.d.ts.map +1 -0
- package/dist/src/onboarding/scaffold.js +120 -0
- package/dist/src/onboarding/scaffold.js.map +1 -0
- package/dist/src/onboarding/upgrade.d.ts +17 -0
- package/dist/src/onboarding/upgrade.d.ts.map +1 -0
- package/dist/src/onboarding/upgrade.js +293 -0
- package/dist/src/onboarding/upgrade.js.map +1 -0
- package/dist/src/profiles/stack-profile.d.ts +51 -0
- package/dist/src/profiles/stack-profile.d.ts.map +1 -0
- package/dist/src/profiles/stack-profile.js +119 -0
- package/dist/src/profiles/stack-profile.js.map +1 -0
- package/dist/src/registry.d.ts +38 -0
- package/dist/src/registry.d.ts.map +1 -0
- package/dist/src/registry.js +135 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/skill-schema.d.ts +30 -0
- package/dist/src/skill-schema.d.ts.map +1 -0
- package/dist/src/skill-schema.js +34 -0
- package/dist/src/skill-schema.js.map +1 -0
- package/dist/src/types.d.ts +153 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +17 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/fs-atomic.d.ts +7 -0
- package/dist/src/utils/fs-atomic.d.ts.map +1 -0
- package/dist/src/utils/fs-atomic.js +81 -0
- package/dist/src/utils/fs-atomic.js.map +1 -0
- package/dist/src/utils/fs-idempotent.d.ts +2 -0
- package/dist/src/utils/fs-idempotent.d.ts.map +1 -0
- package/dist/src/utils/fs-idempotent.js +30 -0
- package/dist/src/utils/fs-idempotent.js.map +1 -0
- package/dist/src/utils/fs.d.ts +8 -0
- package/dist/src/utils/fs.d.ts.map +1 -0
- package/dist/src/utils/fs.js +60 -0
- package/dist/src/utils/fs.js.map +1 -0
- package/dist/src/utils/generated-marker.d.ts +21 -0
- package/dist/src/utils/generated-marker.d.ts.map +1 -0
- package/dist/src/utils/generated-marker.js +128 -0
- package/dist/src/utils/generated-marker.js.map +1 -0
- package/dist/src/utils/hash.d.ts +2 -0
- package/dist/src/utils/hash.d.ts.map +1 -0
- package/dist/src/utils/hash.js +18 -0
- package/dist/src/utils/hash.js.map +1 -0
- package/dist/src/utils/index.d.ts +7 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/string-utils.d.ts +2 -0
- package/dist/src/utils/string-utils.d.ts.map +1 -0
- package/dist/src/utils/string-utils.js +19 -0
- package/dist/src/utils/string-utils.js.map +1 -0
- package/dist/src/validators/port-validate.d.ts +12 -0
- package/dist/src/validators/port-validate.d.ts.map +1 -0
- package/dist/src/validators/port-validate.js +73 -0
- package/dist/src/validators/port-validate.js.map +1 -0
- package/dist/src/validators/skill-validate.d.ts +14 -0
- package/dist/src/validators/skill-validate.d.ts.map +1 -0
- package/dist/src/validators/skill-validate.js +487 -0
- package/dist/src/validators/skill-validate.js.map +1 -0
- package/os/rfc/rfc-0000-template.md +222 -0
- package/package.json +262 -0
- package/profiles/astro-typescript-turborepo.yaml +144 -0
- package/profiles/forge-shell.yaml +77 -0
- package/profiles/phaser-turborepo.yaml +144 -0
- package/skills/_shared/fo-pipeline-conventions.md +119 -0
- package/skills/_shared/fo-session-summary.md +95 -0
- package/skills/fo/fo-add-tests/SKILL.md +166 -0
- package/skills/fo/fo-add-tests/mocking.md +60 -0
- package/skills/fo/fo-add-tests/pbt-guide.md +193 -0
- package/skills/fo/fo-add-tests/tests-reference.md +92 -0
- package/skills/fo/fo-architecture/SKILL.md +83 -0
- package/skills/fo/fo-architecture/architecture-vocabulary.md +104 -0
- package/skills/fo/fo-architecture/deepening.md +37 -0
- package/skills/fo/fo-architecture/design-it-twice.md +44 -0
- package/skills/fo/fo-architecture/html-report.md +104 -0
- package/skills/fo/fo-compass-annotate/SKILL.md +128 -0
- package/skills/fo/fo-compass-annotate/reference/comment-styles.md +25 -0
- package/skills/fo/fo-compass-annotate/reference/learned-principles.md +12 -0
- package/skills/fo/fo-compass-annotate/reference/risk-patterns.md +23 -0
- package/skills/fo/fo-compass-annotate/templates/audit-prompt.md +36 -0
- package/skills/fo/fo-compass-annotate/templates/header-format.md +57 -0
- package/skills/fo/fo-compass-annotate/templates/header-prompt.md +35 -0
- package/skills/fo/fo-doc-audit/SKILL.md +264 -0
- package/skills/fo/fo-extract-dna/SKILL.md +248 -0
- package/skills/fo/fo-fix/SKILL.md +152 -0
- package/skills/fo/fo-fix/bug-diagnosis.md +128 -0
- package/skills/fo/fo-handoff/SKILL.md +58 -0
- package/skills/fo/fo-harvest/SKILL.md +80 -0
- package/skills/fo/fo-idea/SKILL.md +242 -0
- package/skills/fo/fo-idea-audit/SKILL.md +248 -0
- package/skills/fo/fo-idea-create-adr/SKILL.md +130 -0
- package/skills/fo/fo-idea-create-rfc/SKILL.md +130 -0
- package/skills/fo/fo-idea-enhance/SKILL.md +218 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +36 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +167 -0
- package/skills/fo/fo-idea-implement/SKILL.md +463 -0
- package/skills/fo/fo-idea-plan/SKILL.md +230 -0
- package/skills/fo/fo-idea-status/SKILL.md +103 -0
- package/skills/fo/fo-memory-sync/SKILL.md +204 -0
- package/skills/fo/fo-memory-sync/fix-patterns.md +24 -0
- package/skills/fo/fo-memory-sync/learned-principles.md +6 -0
- package/skills/fo/fo-memory-sync/qa-log.md +5 -0
- package/skills/fo/fo-qa/SKILL.md +142 -0
- package/skills/fo/fo-review/SKILL.md +273 -0
- package/skills/fo/fo-session-retro/SKILL.md +276 -0
- package/skills/fo/fo-session-save/SKILL.md +71 -0
- package/skills/fo/fo-session-save/fix-patterns.md +33 -0
- package/skills/fo/fo-session-save/learned-principles.md +19 -0
- package/skills/fo/fo-session-save/qa-log.md +11 -0
- package/skills/fo/fo-spec-ingest/SKILL.md +127 -0
- package/skills/fo/fo-triage/SKILL.md +97 -0
- package/skills/meta/forge-bootstrap/SKILL.md +335 -0
- package/skills/meta/forge-bootstrap/forge-about.md +35 -0
- package/skills/meta/forge-bootstrap/milestone-gallery/.gitkeep +0 -0
- package/skills/meta/forge-bootstrap/operator-profile-template.md +53 -0
- package/skills/meta/forge-bootstrap/project-narrative-template.md +31 -0
- package/skills/meta/port-to-forge/SKILL.md +65 -0
- package/skills/meta/skill-create/SKILL.md +73 -0
- package/skills/shared/grilling/SKILL.md +28 -0
- package/skills/shared/grilling/learned-principles.md +12 -0
- package/skills/shared/grilling/qa-log.md +10 -0
- package/skills/shared/my-preferences/SKILL.md +77 -0
- package/skills/shared/windows-ai-tooling/SKILL.md +200 -0
- package/skills/shared/writing-great-skills/SKILL.md +132 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# @warpgogol/forge Agent Guide
|
|
2
|
+
|
|
3
|
+
Portable governance skills and command modules extracted from site-kernel (RFC-0374).
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
- `src/` — portable, no kernel imports. Contains skill schema, registry, validators, onboarding handlers, config module, canonical types, and utilities.
|
|
8
|
+
- `os/` — ForgeModule registrations. RFC-0556: `os/compass/` and `os/werkstatt/` are fully autonomous — all command handlers are inlined in `os/*/handlers/` and no longer dynamically import `@warpgogol/*` packages. Other `os/` modules may still use dynamic imports where kernel integration is needed.
|
|
9
|
+
- `bin/` — CLI entrypoint (`forge` command) for autonomous usage without `@warpgogol/site-kernel`.
|
|
10
|
+
- `skills/` — forge-managed skill definitions (22 fo skills + 4 shared + 3 meta = 29 skills). Project-declared skill packs (RFC-0539) live outside forge and are discovered via `discoverPackSkills` from `forge.yaml` `skillPacks` config.
|
|
11
|
+
|
|
12
|
+
## OS modules
|
|
13
|
+
|
|
14
|
+
| Module | Commands | Source |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| `forgeCoreModule` | `forge.create`, `forge.doctor`, `forge.upgrade`, `forge.agents.generate`, `forge.scaffold`, `forge.port.scaffold`, `forge.skill.validate`, `forge.skill.list`, `forge.port.validate`, `docs.archive` | `os/core/` |
|
|
17
|
+
| `forgeRfcModule` | `rfc.list`, `rfc.validate`, `rfc.create`, etc. | `os/rfc/` |
|
|
18
|
+
| `forgeWorkflowModule` | `workflow.lint`, `workflow.list`, `workflow.amend.list` | `os/workflow/` |
|
|
19
|
+
| `forgeNamingModule` | `naming.convention.lint` | `os/naming/` |
|
|
20
|
+
| `forgeCompassModule` | `compass.inventory`, `compass.validate`, `compass.summary.trim`, etc. (8 commands) | `os/compass/` |
|
|
21
|
+
| `forgeWerkstattModule` | `werkstatt.lock.status`, `werkstatt.lock.recover`, `werkstatt.operation.validate` | `os/werkstatt/` |
|
|
22
|
+
| `forgeSpecModule` | `spec.validate`, `spec.status`, `spec.materialize` | `os/spec/` |
|
|
23
|
+
| `forgeAdrModule` | `adr.list`, `adr.create`, `adr.validate`, `adr.archive` | `os/adr/` |
|
|
24
|
+
| `forgePlanModule` | `plan.archive` | `os/plan/` |
|
|
25
|
+
| `forgeAuditModule` | `audit.archive` | `os/audit/` |
|
|
26
|
+
| `forgeSessionModule` | `session.save`, `session.archive`, `session.validate`, `session.list` | `os/session/` |
|
|
27
|
+
| `forgeMissionModule` | `mission.archive` | `os/mission/` |
|
|
28
|
+
|
|
29
|
+
## Archive convention
|
|
30
|
+
|
|
31
|
+
When archiving terminal artifacts, prefer the `docs.archive` umbrella command over individual `rfc.archive`, `adr.archive`, `plan.archive`, `audit.archive`, `session.archive`, `mission.archive` commands. The umbrella command runs all six in sequence and prevents leaving audits/plans/sessions/missions unarchived when the operator's intent is to clean up all terminal artifacts. Use individual commands only when the operator explicitly asks for a single domain (e.g. "archive only RFCs").
|
|
32
|
+
|
|
33
|
+
## Skills
|
|
34
|
+
|
|
35
|
+
Skills live in `skills/` and are synced to `.agents/skills/` by `forge.create`. Each skill has a `SKILL.md` with standardized frontmatter (name, description, category, concerns, dependsOn).
|
|
36
|
+
|
|
37
|
+
The `concerns` field uses a four-level taxonomy (RFC-0523): `read-only` (no file modifications), `document-only` (modifies `.md` files only), `content-mutation` (modifies content `.md`/`.yaml` but not executable code), `code-mutation` (modifies `.ts`/`.astro` code). `forge.skill.validate` enforces this via SKILL-12.
|
|
38
|
+
|
|
39
|
+
The optional `knowledge` field (RFC-0524) declares cumulative knowledge files as an array of file names relative to the SKILL.md directory (e.g. `knowledge: [qa-log.md, learned-principles.md]`). `forge.skill.validate` enforces SKILL-13: declared knowledge files must exist. `forge.create` syncs them to `.agents/skills/`. `forge.doctor` detects stale copies. See `writing-great-skills` § Cumulative knowledge pattern for the three-layer reference pattern and mutation contract.
|
|
40
|
+
|
|
41
|
+
### Skill packs (RFC-0539)
|
|
42
|
+
|
|
43
|
+
Project-declared skill packs allow projects to manage their own skills under a project-specific prefix, separate from forge's portable `fo-` skills. Packs are declared in `forge.yaml` under `skillPacks`:
|
|
44
|
+
|
|
45
|
+
```yaml
|
|
46
|
+
skillPacks:
|
|
47
|
+
- prefix: wg
|
|
48
|
+
dir: packages/warpgogol-skills/skills
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
- `forge.create` syncs pack skills alongside forge skills into `.agents/skills/`.
|
|
52
|
+
- `forge.skill.validate` validates pack skills with SKILL-01..13 plus SKILL-14 (pack skill name must start with pack prefix), SKILL-15 (non-forge skill may not use `fo-` prefix), and SKILL-17 (no platform RFC/ADR ids or platform names).
|
|
53
|
+
- SKILL-07 enforces asymmetric dependency direction: pack skills may depend on forge skills, but forge skills may not depend on pack skills (breaks portability).
|
|
54
|
+
- `forge.skill.list` includes pack skills with `pack:<prefix>` annotation.
|
|
55
|
+
- `forge.doctor` checks for stale/missing pack skill copies and validates `skillPacks` config (unique prefixes, unique dirs, no `fo` prefix, dir exists).
|
|
56
|
+
- **RFC-0552:** `forge.create` (via `runInit`) and `forge.upgrade` (via `syncPackSkills`) detect pack skills whose name conflicts with a Forge skill name. Conflicting pack skills are skipped (not copied to `.agents/skills/`) and reported in `skippedSkills` on `InitResult` and `UpgradeResult`. The `forge-bootstrap` skill reports skipped skills to the operator during onboarding. The `forge-bootstrap` skill also runs `git init` for greenfield projects without a `.git` directory and commits synced skills to git.
|
|
57
|
+
|
|
58
|
+
## Import rules
|
|
59
|
+
|
|
60
|
+
- `src/` must NOT import from `@warpgogol/site-kernel` or any kernel package.
|
|
61
|
+
- `os/compass/` and `os/werkstatt/` are fully autonomous (RFC-0556) — all handlers are inlined in `os/*/handlers/` and must NOT import from `@warpgogol/*` packages.
|
|
62
|
+
- Other `os/` modules MAY dynamically import `@warpgogol/*` packages where kernel integration is needed.
|
|
63
|
+
- Apps import forge modules from `@warpgogol/forge` (the package entrypoint re-exports all OS modules).
|
|
64
|
+
|
|
65
|
+
## forge.yaml (RFC-0391)
|
|
66
|
+
|
|
67
|
+
`forge.yaml` is the machine-readable project configuration file at the project root. It records project name, stack, package manager, and docs paths. `forge.create` creates it; `forge.doctor` checks for it; `forge.agents.generate` reads it to produce `AGENTS.md`.
|
|
68
|
+
|
|
69
|
+
- **MUST NOT** run `forge.agents.generate` against this monorepo's root `AGENTS.md` — it is hand-written and carries no generated marker; the edit guard enforces this, do not bypass it.
|
|
70
|
+
- **MUST NOT** re-add any `@warpgogol/*` import to `packages/forge` source — `forge.doctor` autonomy guard will fail.
|
|
71
|
+
- **MUST NOT** hand-edit a generated `AGENTS.md` in bootstrapped projects — edit `forge.yaml` and regenerate.
|
|
72
|
+
|
|
73
|
+
## Stack profiles (RFC-0392)
|
|
74
|
+
|
|
75
|
+
Stack profiles are YAML documents under `profiles/` describing a supported stack (detection markers, workspace layout, install steps, baseline files). `forge.scaffold` creates a working pnpm + Turborepo monorepo from a chosen profile in an empty directory. The migration-adapter registry (RFC-0546) detects the stack of an existing project during `forge-bootstrap` transplant mode.
|
|
76
|
+
|
|
77
|
+
- **MUST NOT** scaffold into a non-empty directory — no `--force` flag.
|
|
78
|
+
- **MUST NOT** add stack profiles for stacks forge cannot scaffold end-to-end.
|
|
79
|
+
- Shipped profiles: `astro-typescript-turborepo`, `phaser-turborepo`, `forge-shell` (minimal — default for `forge.create`).
|
|
80
|
+
|
|
81
|
+
## Bindings contract (RFC-0393)
|
|
82
|
+
|
|
83
|
+
The `bindings` section in `forge.yaml` de-hardcodes project-specific values from fo-skills. Skills reference bindings by key (e.g. `ref(forge.yaml bindings.commands.validateRfc)`) instead of hardcoding commands, paths, or terminology.
|
|
84
|
+
|
|
85
|
+
- `forgeBindingsSchema` + `resolveBinding(config, key, placeholders?)` are exported from `@warpgogol/forge`.
|
|
86
|
+
- `forge.doctor` validates bindings: checks path existence, reports resolved/absent/invalid, and emits `defaultable-binding-null` notices for forge-CLI-backed bindings that are null (RFC-0540).
|
|
87
|
+
- `forge.create` writes forge-CLI-backed defaults for commands forge provides (`validateRfc`, `validateAdr`, `implementStamp`, `specValidate`) and null for stack-dependent commands (`typecheck`, `test`, `scopedBuild`). The package manager from `forge.yaml` determines the runner prefix (`pnpm exec`, `npx`, `yarn exec`, `bunx`).
|
|
88
|
+
- `forge.skill.validate` enforces SKILL-11: canonical skill bodies must not contain hardcoded `pnpm exec site-kernel run` or `docs/architecture-dna.md` in instruction lines (code blocks and `run:` directives). Supports `<!-- skill-lint-disable SKILL-11 -->` escape hatch.
|
|
89
|
+
- `forge.skill.validate` enforces SKILL-17: skill files must not contain specific platform RFC/ADR ids (`RFC-\d{4}`, `ADR-\d{4}`) or platform names ("Warpgogol", "Warpgogol", "WarpGogol"). Generic "RFC"/"ADR" terms, generic placeholder ids (`RFC-XXXX`), file paths (`adr-0000-template.md`), and binding key names (`validateRfc`) are allowed. The `@warpgogol/forge` npm package name is excluded from the platform name check. Supports `<!-- skill-lint-disable SKILL-17 -->` escape hatch.
|
|
90
|
+
- Skills declare binding requirements in frontmatter: `bindings: { requires: [...], optional: [...] }`.
|
|
91
|
+
- Degradation contract: required binding unresolvable → skill refuses to start; optional binding absent → step skipped with `Degraded:` line in report.
|
|
92
|
+
|
|
93
|
+
## Output contract (RFC-0542)
|
|
94
|
+
|
|
95
|
+
Every forge CLI command's output ends with a **Next steps** block in pretty mode and a `nextSteps` array in `--json` mode. Each entry is `{ action: string, kind: "required" | "optional" }`.
|
|
96
|
+
|
|
97
|
+
- `renderNextSteps`, `renderIdeRecommendation`, and `generateHelp` are pure functions in `src/cli-output.ts` — importable by `bin/cli.ts` and unit tests.
|
|
98
|
+
- `forge.create` prints an IDE recommendation (Windsurf tested, alternatives without guarantee) after the Next steps block in pretty mode.
|
|
99
|
+
- All forge CLI natural-language output is English regardless of `PREFERENCES.md` — `aiLanguage` governs agent chat, not the forge binary.
|
|
100
|
+
- `printHelp` is generated from the registry via `generateHelp` — no hand-maintained command list. `--help <command>` prints per-command flags and description.
|
|
101
|
+
- `ForgeNextStep` type and `nextSteps?` field are on `ForgeCommandResult` directly (cross-cutting), not inside command-specific `data`.
|
|
102
|
+
- Lifecycle commands (`forge.create`, `forge.scaffold`, `forge.doctor`, `forge.port.scaffold`) MUST populate `nextSteps`. Pass-state validators MAY leave the array empty.
|
|
103
|
+
- Future commands (`forge.create`, `forge.upgrade`) MUST conform to the `nextSteps` contract from day one.
|
|
104
|
+
- Skill reports (agent chat output) use the operator's `aiLanguage` and contain zero CLI commands, guides, or format references in user-facing text. The system hides all complexity from the operator. CLI output remains English per RFC-0542; only the skill (agent chat) uses `aiLanguage`. The `forge-bootstrap` welcoming report is the canonical example of this contract.
|
|
105
|
+
|
|
106
|
+
## Silent upgrade trigger (RFC-0554)
|
|
107
|
+
|
|
108
|
+
The `forge-bootstrap` skill step 0 silently checks `forge.syncedVersion` against the installed `@warpgogol/forge` version. If they differ, it runs `forge upgrade` invisibly — the operator is never informed about migration, version numbers, or upgrade mechanics. The `forge.upgrade` CLI command remains available for manual sync. This is not a dual-path: it is a single upgrade mechanism (`runUpgrade`) with two entry points (CLI and `forge-bootstrap`).
|
|
109
|
+
|
|
110
|
+
## Core behavioral layer (RFC-0548)
|
|
111
|
+
|
|
112
|
+
`forge.agents.generate` now includes a **Core behavioral layer** section in generated `AGENTS.md` files. This section is wrapped in `<!-- forge:begin behavioral-layer -->` / `<!-- forge:end behavioral-layer -->` markers and contains:
|
|
113
|
+
|
|
114
|
+
- **Intent-to-skill routing table** — generated from `triggers` fields in fo-skill frontmatter. Each row maps natural-language trigger phrases to the corresponding skill.
|
|
115
|
+
- **Fixed policy text** for 20 core behavioral areas: auto-grilling, auto-session-save, auto-review, context awareness, creator-facing communication, adaptive learning, proactive guidance, live operator feedback, register parameter, pushback policy, external capabilities (MCP), safety net, invisible quality, first creation moment, creative health, sharing and feedback, cultural awareness, indirect teaching, ownership, and commit policy (RFC-0551).
|
|
116
|
+
- **Conditional extended behavioral layer** (RFC-0549) — included only when the register is `creative` (read from `PREFERENCES.md` `register` field). Contains ten sections: personal connection, creative memory, emotional rhythm (questions not declarations), gentle accountability, creative partnership, visual thinking, audience empathy, creative companion (companion mode, `saveCompanionSessions` flag, pull-only inspiration feed), creative confidence (outcome-based praise, never refuse creative direction), and always-next-step (RFC-0551, supersedes the "at most one per session" anticipatory suggestion limit). Content is built by `src/onboarding/extended-behavioral-layer.ts`.
|
|
117
|
+
|
|
118
|
+
`forge.create` auto-runs `forge.agents.generate` after `forge.init`, so newly created projects get the behavioral layer from day one. If generation fails, a warning is logged but the create command continues.
|
|
119
|
+
|
|
120
|
+
The `triggers` field in skill frontmatter is validated by SKILL-16: optional array of 1-5 natural-language strings (each 5-100 characters), only allowed on fo-category skills. Pack skills may not declare triggers.
|
|
121
|
+
|
|
122
|
+
## Extended behavioral layer (RFC-0549)
|
|
123
|
+
|
|
124
|
+
The extended behavioral layer is conditionally included in generated `AGENTS.md` files when the operator's register is `creative`. It adds ten behavioral policies additive to the core layer:
|
|
125
|
+
|
|
126
|
+
1. **Personal connection** — operator name at key moments, project story, deep purpose as compass.
|
|
127
|
+
2. **Creative memory** — unimplemented ideas, aesthetic preferences, creative influences.
|
|
128
|
+
3. **Emotional rhythm** — session mood via questions (not declarations), return after break, progress celebration.
|
|
129
|
+
4. **Gentle accountability** — unfinished intentions, deep purpose checks.
|
|
130
|
+
5. **Creative partnership** — sounding board (2-3 alternatives), creative constraints, anticipatory suggestions.
|
|
131
|
+
6. **Visual thinking** — visual previews, visual diffs, milestone gallery, voice consistency, tone matching.
|
|
132
|
+
7. **Audience empathy** — audience perspective, first-visitor test, emotional memory, project narrative.
|
|
133
|
+
8. **Creative companion** — companion mode (`saveCompanionSessions` flag), creative blocks, inspiration feed (pull-only MVP, `inspirationFeed: on|off`).
|
|
134
|
+
9. **Creative confidence** — outcome-based praise (not effort-based), gentle purpose-drift pushback (never refuse creative direction).
|
|
135
|
+
10. **Always-next-step** (RFC-0551) — the agent MUST always propose a concrete next step after any pause point. Supersedes the "at most one anticipatory suggestion per session" limit from Creative partnership (section 5).
|
|
136
|
+
|
|
137
|
+
Three surrogate-relationship mitigations: questions instead of declarations, outcome-based praise, and 90-day entry expiry for emotional observations in `operator-profile.md`.
|
|
138
|
+
|
|
139
|
+
`fo-session-retro` routes extended-layer insights to `operator-profile.md` with Zugangsstufen tags: emotional rhythm → `[Vertraulich]` with 90-day expiry, aesthetic preferences → `[Öffentlich]`.
|
|
140
|
+
|
|
141
|
+
## Spec vendoring (RFC-0394..0397)
|
|
142
|
+
|
|
143
|
+
External specification packages are vendored as immutable snapshots under `docs/specs/<spec-id>/` with an integrity manifest and `forge-spec.yaml` projection.
|
|
144
|
+
|
|
145
|
+
- `forgeSpecModule` (in `os/spec/`) registers `spec.validate`, `spec.status`, `spec.materialize`.
|
|
146
|
+
- `spec.validate` enforces SPEC-01..07: integrity, schema, cycles, references, waves, duplicates, materializedAs.
|
|
147
|
+
- `spec.materialize` scaffolds RFC files for front nodes with `specRef` traceability and writes `materializedAs` back to `forge-spec.yaml`.
|
|
148
|
+
- `spec.status` projects per-node states, blockers, and progress.
|
|
149
|
+
- Spec amendments (`docs/specs/<id>/amendments/amd-NNN-*.md`) are the only correction channel — snapshot files are never modified.
|
package/README.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# @warpgogol/forge
|
|
2
|
+
|
|
3
|
+
Portable governance engine for AI-assisted project development. Provides skills, RFC/ADR workflows, naming conventions, spec vendoring, and a CLI — all framework-agnostic and dependency-free (only `yaml` + `zod`).
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install @warpgogol/forge
|
|
9
|
+
# or
|
|
10
|
+
pnpm add @warpgogol/forge
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick start
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
# Create a new project with forge (scaffold + init in one command)
|
|
17
|
+
npx forge create my-project
|
|
18
|
+
|
|
19
|
+
# Diagnose your setup
|
|
20
|
+
npx forge doctor
|
|
21
|
+
|
|
22
|
+
# Validate RFCs
|
|
23
|
+
npx forge rfc.validate
|
|
24
|
+
|
|
25
|
+
# List available skills
|
|
26
|
+
npx forge skill.list
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Upgrade flow
|
|
30
|
+
|
|
31
|
+
When a new version of `@warpgogol/forge` is published, consumers upgrade additively:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
# 1. Install the latest version
|
|
35
|
+
npm install @warpgogol/forge@latest
|
|
36
|
+
|
|
37
|
+
# 2. Sync skills and binding defaults from the installed version
|
|
38
|
+
npx forge upgrade
|
|
39
|
+
|
|
40
|
+
# 3. Check project health
|
|
41
|
+
npx forge doctor
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`forge upgrade` is additive — it never overwrites operator-set bindings, never deletes files, and is idempotent. It updates `forge.syncedVersion` in `forge.yaml` to track the last synced version. Use `--dry-run` to preview changes.
|
|
45
|
+
|
|
46
|
+
## What forge gives you
|
|
47
|
+
|
|
48
|
+
- **27 skills** (fo-pipeline, grilling, preferences, skill authoring) — deployed to `.agents/skills/` by `forge create`
|
|
49
|
+
- **RFC workflow** — create, validate, list, graph, archive, acceptance probes, decision logs, DNA trace
|
|
50
|
+
- **ADR workflow** — lightweight architectural decision records
|
|
51
|
+
- **Spec vendoring** — vendor external spec packages as immutable snapshots with integrity manifests
|
|
52
|
+
- **Naming conventions** — kebab-case linting
|
|
53
|
+
- **Workflow linting** — validate `.agents/workflows/` frontmatter and references
|
|
54
|
+
- **Stack scaffolding** — scaffold a new pnpm + Turborepo monorepo from a profile
|
|
55
|
+
- **Bindings contract** — de-hardcode project-specific commands/paths from skills via `forge.yaml`
|
|
56
|
+
|
|
57
|
+
## Lifecycle
|
|
58
|
+
|
|
59
|
+
The typical forge project lifecycle:
|
|
60
|
+
|
|
61
|
+
1. **Create** — `forge create` bootstraps a new project with forge.yaml, skills, and docs directories
|
|
62
|
+
2. **IDE** — open the project in Windsurf (tested with forge) or your preferred IDE
|
|
63
|
+
3. **Bootstrap** — run `/forge-bootstrap` to configure the project (greenfield interview or transplant from an existing codebase)
|
|
64
|
+
4. **Upgrade** — when a new `@warpgogol/forge` version is published, run `forge upgrade` to sync skills and binding defaults additively
|
|
65
|
+
|
|
66
|
+
## forge.yaml
|
|
67
|
+
|
|
68
|
+
The single source of truth for project configuration. Created by `forge create`:
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
schema: forge/config@1
|
|
72
|
+
project:
|
|
73
|
+
name: my-project
|
|
74
|
+
stack: [typescript]
|
|
75
|
+
packageManager: pnpm
|
|
76
|
+
paths:
|
|
77
|
+
rfcsDir: docs/rfcs
|
|
78
|
+
adrsDir: docs/adrs
|
|
79
|
+
skillsDir: .agents/skills
|
|
80
|
+
bindings:
|
|
81
|
+
schema: forge/bindings@1
|
|
82
|
+
commands:
|
|
83
|
+
validateRfc: "forge rfc.validate {id} --json"
|
|
84
|
+
typecheck: "pnpm run build:check"
|
|
85
|
+
test: "pnpm test"
|
|
86
|
+
paths:
|
|
87
|
+
invariantsFile: docs/architecture-dna.md
|
|
88
|
+
terminology:
|
|
89
|
+
invariants: DNA
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Programmatic API
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
import {
|
|
96
|
+
forgeCoreModule,
|
|
97
|
+
forgeRfcModule,
|
|
98
|
+
loadForgeConfig,
|
|
99
|
+
resolveBinding,
|
|
100
|
+
FORGE_SKILLS,
|
|
101
|
+
} from "@warpgogol/forge";
|
|
102
|
+
|
|
103
|
+
// Load config
|
|
104
|
+
const config = loadForgeConfig(process.cwd());
|
|
105
|
+
|
|
106
|
+
// Resolve a binding
|
|
107
|
+
const cmd = resolveBinding(config, "commands.validateRfc", { id: "RFC-0001" });
|
|
108
|
+
|
|
109
|
+
// Register modules in your own registry
|
|
110
|
+
const registry = /* your ForgeModuleRegistry */;
|
|
111
|
+
await forgeCoreModule.register(registry);
|
|
112
|
+
await forgeRfcModule.register(registry);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Architecture
|
|
116
|
+
|
|
117
|
+
| Directory | Purpose |
|
|
118
|
+
| --- | --- |
|
|
119
|
+
| `src/` | Portable core — types, config, skills registry, validators, onboarding. Zero `@warpgogol/*` imports. |
|
|
120
|
+
| `os/` | ForgeModule registrations. `compass` and `werkstatt` dynamically import `@warpgogol/site-kernel-*` (graceful degradation in autonomous mode). |
|
|
121
|
+
| `bin/` | CLI entrypoint (`forge` command). |
|
|
122
|
+
| `skills/` | 27 skill definitions (SKILL.md with frontmatter). |
|
|
123
|
+
| `scripts/` | Publication hygiene check (`publish-check.mjs`) run by `prepublishOnly`. |
|
|
124
|
+
| `profiles/` | Stack profiles for `forge.scaffold`. |
|
|
125
|
+
|
|
126
|
+
## Publishing to npm
|
|
127
|
+
|
|
128
|
+
This package is published to the npm registry as `@warpgogol/forge`. The steps below describe how to publish a new version.
|
|
129
|
+
|
|
130
|
+
### Prerequisites
|
|
131
|
+
|
|
132
|
+
- An npm account with publish access to the `@warpgogol` organization.
|
|
133
|
+
- Node.js and npm installed locally.
|
|
134
|
+
|
|
135
|
+
### Creating an access token
|
|
136
|
+
|
|
137
|
+
1. Log in to [npmjs.com](https://www.npmjs.com/).
|
|
138
|
+
2. Go to **Access Tokens** (avatar → Access Tokens).
|
|
139
|
+
3. Click **Generate New Token** → select **Classic Token** → type **Publish**.
|
|
140
|
+
4. Copy the generated token — it is shown only once.
|
|
141
|
+
|
|
142
|
+
### Publishing a new version
|
|
143
|
+
|
|
144
|
+
Run the following commands from the `packages/forge` directory:
|
|
145
|
+
|
|
146
|
+
```sh
|
|
147
|
+
# 1. Authenticate with npm (interactive — prompts for username, password, OTP)
|
|
148
|
+
npm login
|
|
149
|
+
|
|
150
|
+
# 2. Store the auth token for the registry (use the token from the previous step)
|
|
151
|
+
npm config set //registry.npmjs.org/:_authToken=<TOKEN>
|
|
152
|
+
|
|
153
|
+
# 3. Bump the patch version (updates package.json + creates a git commit + tag)
|
|
154
|
+
npm version patch
|
|
155
|
+
|
|
156
|
+
# 4. Publish the package publicly
|
|
157
|
+
npm publish --access public
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
After publishing, verify the new version on [npmjs.com/package/@warpgogol/forge](https://www.npmjs.com/package/@warpgogol/forge).
|
|
161
|
+
|
|
162
|
+
## License
|
|
163
|
+
|
|
164
|
+
MIT
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
|
|
5
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const distEntry = resolve(__dirname, "..", "dist", "bin", "cli.js");
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
await import(distEntry);
|
|
10
|
+
} catch (err) {
|
|
11
|
+
if (err && err.code === "ERR_MODULE_NOT_FOUND") {
|
|
12
|
+
console.error("forge: dist/ not found. Run 'pnpm run build' first.");
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
throw err;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":""}
|
package/dist/bin/cli.js
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*
|
|
3
|
+
<MODULE_CONTRACT>
|
|
4
|
+
<purpose>CLI bin entrypoint for @warpgogol/forge — minimal command runner that
|
|
5
|
+
registers forge modules and dispatches commands. Works autonomously without
|
|
6
|
+
@warpgogol/site-kernel.</purpose>
|
|
7
|
+
<non-goals>
|
|
8
|
+
<item>Do not implement command logic — delegate to forge os/ modules and src/ handlers.</item>
|
|
9
|
+
<item>Do not replicate the full kernel runtime — minimal dispatch only.</item>
|
|
10
|
+
</non-goals>
|
|
11
|
+
</MODULE_CONTRACT>
|
|
12
|
+
<CHANGE_SUMMARY>
|
|
13
|
+
<item>Initial CLI bin entrypoint for forge autonomy refactor.</item>
|
|
14
|
+
<item>RFC-0542: self-documenting output contract — renderNextSteps, renderIdeRecommendation, generateHelp, --help <command> flag.</item>
|
|
15
|
+
<item>RFC-0543: source VERSION from package.json at runtime instead of hardcoded constant.</item>
|
|
16
|
+
</CHANGE_SUMMARY>
|
|
17
|
+
*/
|
|
18
|
+
import { resolve, dirname, join } from "node:path";
|
|
19
|
+
import { fileURLToPath } from "node:url";
|
|
20
|
+
import { readFileSync } from "node:fs";
|
|
21
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Logger
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
const logger = {
|
|
26
|
+
section(msg, details) {
|
|
27
|
+
console.log(`\n■ ${msg}`);
|
|
28
|
+
if (details)
|
|
29
|
+
console.log(details);
|
|
30
|
+
},
|
|
31
|
+
info(msg, details) {
|
|
32
|
+
console.log(` ${msg}`);
|
|
33
|
+
if (details)
|
|
34
|
+
console.log(details);
|
|
35
|
+
},
|
|
36
|
+
warn(msg, details) {
|
|
37
|
+
console.warn(` ⚠ ${msg}`);
|
|
38
|
+
if (details)
|
|
39
|
+
console.warn(details);
|
|
40
|
+
},
|
|
41
|
+
error(msg, details) {
|
|
42
|
+
console.error(` ✖ ${msg}`);
|
|
43
|
+
if (details)
|
|
44
|
+
console.error(details);
|
|
45
|
+
},
|
|
46
|
+
success(msg, details) {
|
|
47
|
+
console.log(` ✓ ${msg}`);
|
|
48
|
+
if (details)
|
|
49
|
+
console.log(details);
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
import { renderNextSteps, renderIdeRecommendation, generateHelp } from "../src/cli-output.js";
|
|
53
|
+
class ForgeCliRegistry {
|
|
54
|
+
commands = new Map();
|
|
55
|
+
registerCommand(command) {
|
|
56
|
+
this.commands.set(command.name, command);
|
|
57
|
+
}
|
|
58
|
+
registerPipeline(_name, _steps) {
|
|
59
|
+
// CLI mode: pipelines not supported — no-op
|
|
60
|
+
}
|
|
61
|
+
listCommandNames() {
|
|
62
|
+
return [...this.commands.keys()].sort();
|
|
63
|
+
}
|
|
64
|
+
listCommands() {
|
|
65
|
+
return [...this.commands.values()].map((c) => ({
|
|
66
|
+
name: c.name,
|
|
67
|
+
description: c.description,
|
|
68
|
+
scope: c.scope,
|
|
69
|
+
provider: "workspace",
|
|
70
|
+
mutatesState: c.mutatesState,
|
|
71
|
+
requiresNetwork: c.requiresNetwork,
|
|
72
|
+
supportsAllSites: c.supportsAllSites,
|
|
73
|
+
timeoutMs: c.timeoutMs,
|
|
74
|
+
expectedDurationMs: c.expectedDurationMs,
|
|
75
|
+
longRunning: c.longRunning,
|
|
76
|
+
flags: c.flags,
|
|
77
|
+
reads: c.reads,
|
|
78
|
+
writes: c.writes,
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
getCommand(name) {
|
|
82
|
+
return this.commands.get(name);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// Flag parsing
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
function parseArgs(argv) {
|
|
89
|
+
const args = [];
|
|
90
|
+
const flags = {};
|
|
91
|
+
for (let i = 0; i < argv.length; i++) {
|
|
92
|
+
const arg = argv[i];
|
|
93
|
+
if (arg.startsWith("--")) {
|
|
94
|
+
const eqIndex = arg.indexOf("=");
|
|
95
|
+
if (eqIndex > 0) {
|
|
96
|
+
const key = arg.slice(2, eqIndex);
|
|
97
|
+
const value = arg.slice(eqIndex + 1);
|
|
98
|
+
flags[key] = value;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
const key = arg.slice(2);
|
|
102
|
+
const next = argv[i + 1];
|
|
103
|
+
if (next && !next.startsWith("--")) {
|
|
104
|
+
flags[key] = next;
|
|
105
|
+
i++;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
flags[key] = true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
args.push(arg);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return { args, flags };
|
|
117
|
+
}
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
// Module registration
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
async function buildRegistry() {
|
|
122
|
+
const registry = new ForgeCliRegistry();
|
|
123
|
+
const modules = [
|
|
124
|
+
await import("../os/core/core.module.js").then((m) => m.forgeCoreModule),
|
|
125
|
+
await import("../os/rfc/rfc.module.js").then((m) => m.forgeRfcModule),
|
|
126
|
+
await import("../os/workflow/workflow.module.js").then((m) => m.forgeWorkflowModule),
|
|
127
|
+
await import("../os/naming/naming.module.js").then((m) => m.forgeNamingModule),
|
|
128
|
+
await import("../os/compass/compass.module.js").then((m) => m.forgeCompassModule),
|
|
129
|
+
await import("../os/werkstatt/werkstatt.module.js").then((m) => m.forgeWerkstattModule),
|
|
130
|
+
await import("../os/session/session.module.js").then((m) => m.forgeSessionModule),
|
|
131
|
+
].filter((m) => m !== null);
|
|
132
|
+
for (const mod of modules) {
|
|
133
|
+
await mod.register(registry);
|
|
134
|
+
}
|
|
135
|
+
return registry;
|
|
136
|
+
}
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// Output rendering (RFC-0542: self-documenting forge command output contract)
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// Version — sourced from package.json at runtime (RFC-0543)
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
function readVersion() {
|
|
144
|
+
// Source: packages/forge/bin/cli.ts → packages/forge/package.json (one up)
|
|
145
|
+
// Compiled: dist/bin/cli.js → package.json (two up)
|
|
146
|
+
for (const up of ["..", "../.."]) {
|
|
147
|
+
const pkgPath = join(__dirname, up, "package.json");
|
|
148
|
+
try {
|
|
149
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
150
|
+
if (pkg.version)
|
|
151
|
+
return pkg.version;
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// try next candidate
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return "0.0.0-unknown";
|
|
158
|
+
}
|
|
159
|
+
const VERSION = readVersion();
|
|
160
|
+
function resolveForgeRootFromCli() {
|
|
161
|
+
// Source: packages/forge/bin/cli.ts → packages/forge/ (one up)
|
|
162
|
+
// Compiled: dist/bin/cli.js → packages/forge/ (two up)
|
|
163
|
+
for (const up of ["..", "../.."]) {
|
|
164
|
+
const pkgPath = join(__dirname, up, "package.json");
|
|
165
|
+
try {
|
|
166
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
167
|
+
if (pkg.name === "@warpgogol/forge")
|
|
168
|
+
return join(__dirname, up);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// try next candidate
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
function printCommandHelp(registry, commandName) {
|
|
177
|
+
const cmd = registry.getCommand(commandName);
|
|
178
|
+
if (!cmd) {
|
|
179
|
+
logger.error(`Unknown command: ${commandName}`);
|
|
180
|
+
logger.info(`Run 'forge --help' for available commands.`);
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
console.log(`forge ${cmd.name}`);
|
|
184
|
+
console.log(`\n ${cmd.description}`);
|
|
185
|
+
if (cmd.flags && Object.keys(cmd.flags).length > 0) {
|
|
186
|
+
console.log("\nFlags:");
|
|
187
|
+
for (const [flagName, flagSpec] of Object.entries(cmd.flags)) {
|
|
188
|
+
const required = flagSpec.required ? " (required)" : "";
|
|
189
|
+
console.log(` --${flagName}${required} ${flagSpec.description}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
process.exit(0);
|
|
193
|
+
}
|
|
194
|
+
// ---------------------------------------------------------------------------
|
|
195
|
+
// Main
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
async function main() {
|
|
198
|
+
const argv = process.argv.slice(2);
|
|
199
|
+
if (argv.length === 0 || (argv[0] === "--help" && argv.length === 1) || argv[0] === "-h") {
|
|
200
|
+
const registry = await buildRegistry();
|
|
201
|
+
console.log(generateHelp(registry));
|
|
202
|
+
process.exit(0);
|
|
203
|
+
}
|
|
204
|
+
if (argv[0] === "--help" && argv.length >= 2) {
|
|
205
|
+
const registry = await buildRegistry();
|
|
206
|
+
printCommandHelp(registry, argv[1]);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (argv[0] === "--version" || argv[0] === "-v") {
|
|
210
|
+
console.log(`forge ${VERSION}`);
|
|
211
|
+
process.exit(0);
|
|
212
|
+
}
|
|
213
|
+
const commandName = argv[0];
|
|
214
|
+
const rest = argv.slice(1);
|
|
215
|
+
const { args, flags } = parseArgs(rest);
|
|
216
|
+
const registry = await buildRegistry();
|
|
217
|
+
const command = registry.getCommand(commandName);
|
|
218
|
+
if (!command) {
|
|
219
|
+
logger.error(`Unknown command: ${commandName}`);
|
|
220
|
+
logger.info(`Run 'forge --help' for available commands.`);
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
const workspaceRoot = resolve(process.cwd());
|
|
224
|
+
const outputFormat = flags["json"] === true ? "json" : "pretty";
|
|
225
|
+
const dryRun = flags["dry-run"] === true;
|
|
226
|
+
const input = { argv: rest, args, flags };
|
|
227
|
+
const context = {
|
|
228
|
+
workspaceRoot,
|
|
229
|
+
forgeRoot: resolveForgeRootFromCli(),
|
|
230
|
+
logger,
|
|
231
|
+
dryRun,
|
|
232
|
+
outputFormat,
|
|
233
|
+
commandRegistry: registry,
|
|
234
|
+
};
|
|
235
|
+
try {
|
|
236
|
+
const result = (await command.execute(input, context));
|
|
237
|
+
if (result && outputFormat === "json") {
|
|
238
|
+
const output = { ...(result.data ?? {}), nextSteps: result.nextSteps ?? [] };
|
|
239
|
+
console.log(JSON.stringify(output, null, 2));
|
|
240
|
+
}
|
|
241
|
+
else if (result && outputFormat === "pretty") {
|
|
242
|
+
if (result.summary) {
|
|
243
|
+
console.log(result.summary);
|
|
244
|
+
}
|
|
245
|
+
const nextStepsText = renderNextSteps(result.nextSteps);
|
|
246
|
+
if (nextStepsText) {
|
|
247
|
+
console.log(nextStepsText);
|
|
248
|
+
}
|
|
249
|
+
if (commandName === "forge.create") {
|
|
250
|
+
console.log(renderIdeRecommendation());
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
const exitCode = result?.exitCode ?? 0;
|
|
254
|
+
process.exit(exitCode);
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
logger.error(error instanceof Error ? error.message : String(error), error instanceof Error && error.stack ? error.stack : undefined);
|
|
258
|
+
process.exit(1);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
main().catch((error) => {
|
|
262
|
+
logger.error(error instanceof Error ? error.message : String(error), error instanceof Error && error.stack ? error.stack : undefined);
|
|
263
|
+
process.exit(1);
|
|
264
|
+
});
|
|
265
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adr.module.d.ts","sourceRoot":"","sources":["../../../os/adr/adr.module.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,eAAO,MAAM,cAAc,EAAE,WA2G5B,CAAC"}
|