@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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Migration-adapter registry — built-in adapters + config-discovered external adapters (RFC-0546).</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not import from @warpgogol/* — this module is portable.</item>
|
|
6
|
+
<item>Do not apply migration here — selection only.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0546: initial migration-adapter registry with built-in adapters.</item>
|
|
11
|
+
</CHANGE_SUMMARY>
|
|
12
|
+
*/
|
|
13
|
+
import { nodeTypescriptPnpmAdapter } from "./node-typescript-pnpm/index.js";
|
|
14
|
+
import { phaserPnpmAdapter } from "./phaser-pnpm/index.js";
|
|
15
|
+
const BUILT_IN_ADAPTERS = [
|
|
16
|
+
nodeTypescriptPnpmAdapter,
|
|
17
|
+
phaserPnpmAdapter,
|
|
18
|
+
];
|
|
19
|
+
export function getAdapters(config) {
|
|
20
|
+
const adapters = [...BUILT_IN_ADAPTERS];
|
|
21
|
+
const configAdapters = config?.migrationAdapters ?? [];
|
|
22
|
+
for (const entry of configAdapters) {
|
|
23
|
+
if (entry.module) {
|
|
24
|
+
// External adapter — would require dynamic import at runtime.
|
|
25
|
+
// The skill handles dynamic import; registry returns built-ins only for now.
|
|
26
|
+
// External adapters with module field are resolved by the skill at runtime.
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
// Built-in adapter referenced by id only — already in BUILT_IN_ADAPTERS
|
|
30
|
+
}
|
|
31
|
+
return adapters;
|
|
32
|
+
}
|
|
33
|
+
export function detectAdapter(sourceDir, config) {
|
|
34
|
+
const adapters = getAdapters(config);
|
|
35
|
+
const matches = adapters.filter((a) => {
|
|
36
|
+
try {
|
|
37
|
+
return a.detect(sourceDir);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
if (matches.length === 0)
|
|
44
|
+
return null;
|
|
45
|
+
return matches[0];
|
|
46
|
+
}
|
|
47
|
+
export function detectAdapters(sourceDir, config) {
|
|
48
|
+
const adapters = getAdapters(config);
|
|
49
|
+
return adapters.filter((a) => {
|
|
50
|
+
try {
|
|
51
|
+
return a.detect(sourceDir);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/migration-adapters/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AAGF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,iBAAiB,GAAuB;IAC5C,yBAAyB;IACzB,iBAAiB;CAClB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,MAAoB;IAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAExC,MAAM,cAAc,GAAG,MAAM,EAAE,iBAAiB,IAAI,EAAE,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,8DAA8D;YAC9D,6EAA6E;YAC7E,4EAA4E;YAC5E,SAAS;QACX,CAAC;QACD,wEAAwE;IAC1E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,MAAoB;IACnE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,MAAoB;IACpE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface MigrationAdapter {
|
|
2
|
+
id: string;
|
|
3
|
+
detect(sourceDir: string): boolean;
|
|
4
|
+
analyze(sourceDir: string): AdapterAnalysis;
|
|
5
|
+
migrate(sourceDir: string, targetDir: string, analysis: AdapterAnalysis): MigrationResult;
|
|
6
|
+
postSetup(sourceDir: string, targetDir: string, analysis: AdapterAnalysis): void;
|
|
7
|
+
}
|
|
8
|
+
export interface AdapterAnalysis {
|
|
9
|
+
stack: string[];
|
|
10
|
+
packageManager: string;
|
|
11
|
+
bindings: {
|
|
12
|
+
typecheck: string | null;
|
|
13
|
+
test: string | null;
|
|
14
|
+
scopedBuild: string | null;
|
|
15
|
+
};
|
|
16
|
+
placement: "apps" | "packages";
|
|
17
|
+
appName: string;
|
|
18
|
+
excludePatterns: string[];
|
|
19
|
+
gitHistory: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface MigrationResult {
|
|
22
|
+
filesCopied: string[];
|
|
23
|
+
filesSkipped: string[];
|
|
24
|
+
conflicts: Conflict[];
|
|
25
|
+
workspaceUpdated: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface Conflict {
|
|
28
|
+
path: string;
|
|
29
|
+
sourceExists: boolean;
|
|
30
|
+
forgeExists: boolean;
|
|
31
|
+
resolution: "forge-wins" | "source-wins";
|
|
32
|
+
}
|
|
33
|
+
export declare const FORGE_PROTECTED_PATHS: readonly ["forge.yaml", ".agents", "docs/rfcs", "docs/adrs", "PREFERENCES.md"];
|
|
34
|
+
export declare const DEFAULT_EXCLUDE_PATTERNS: readonly ["node_modules", "dist", ".next", ".cache", ".turbo", ".git"];
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/migration-adapters/types.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;IAC5C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,eAAe,CAAC;IAC1F,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAClF;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,YAAY,GAAG,aAAa,CAAC;CAC1C;AAED,eAAO,MAAM,qBAAqB,gFAMxB,CAAC;AAEX,eAAO,MAAM,wBAAwB,wEAO3B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Migration-adapter type contracts — interfaces for stack-specific code migration into forge projects (RFC-0546).</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not import from @warpgogol/* — this module is portable.</item>
|
|
6
|
+
<item>Do not implement adapter logic here — only type definitions.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0546: initial migration-adapter type contracts (MigrationAdapter, AdapterAnalysis, MigrationResult, Conflict).</item>
|
|
11
|
+
<item>RFC-0547: remove .git from DEFAULT_EXCLUDE_PATTERNS — git history handled by postSetup via format-patch + git am.</item>
|
|
12
|
+
<item>Re-add .git to DEFAULT_EXCLUDE_PATTERNS — copyDirectory copies into apps/<appName>/, not the project root; copying .git there creates a nested repo. Git history is handled by postSetup at the project root.</item>
|
|
13
|
+
<item>Add .env* to untracked-file transfer guarantee — the adapter copies ALL files on disk (including git-ignored), not just git-tracked files.</item>
|
|
14
|
+
</CHANGE_SUMMARY>
|
|
15
|
+
*/
|
|
16
|
+
export const FORGE_PROTECTED_PATHS = [
|
|
17
|
+
"forge.yaml",
|
|
18
|
+
".agents",
|
|
19
|
+
"docs/rfcs",
|
|
20
|
+
"docs/adrs",
|
|
21
|
+
"PREFERENCES.md",
|
|
22
|
+
];
|
|
23
|
+
export const DEFAULT_EXCLUDE_PATTERNS = [
|
|
24
|
+
"node_modules",
|
|
25
|
+
"dist",
|
|
26
|
+
".next",
|
|
27
|
+
".cache",
|
|
28
|
+
".turbo",
|
|
29
|
+
".git",
|
|
30
|
+
];
|
|
31
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/migration-adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;EAcE;AAsCF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY;IACZ,SAAS;IACT,WAAW;IACX,WAAW;IACX,gBAAgB;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc;IACd,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;CACE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ForgeCommandInput, ForgeCommandResult, ForgeRuntimeContext } from "../types.ts";
|
|
2
|
+
interface AgentsGenerateResult {
|
|
3
|
+
command: string;
|
|
4
|
+
status: "pass" | "fail";
|
|
5
|
+
configPath: string;
|
|
6
|
+
generated: string[];
|
|
7
|
+
errors: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare function runAgentsGenerate(_input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<AgentsGenerateResult>>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=agents-generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-generate.d.ts","sourceRoot":"","sources":["../../../src/onboarding/agents-generate.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAqQrB,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,CA+KnD"}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>forge.agents.generate — regenerates AGENTS.md deterministically from forge.yaml + skill registry. Carries the standard generated-file marker.</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not overwrite a hand-written AGENTS.md (no generated marker) — refuse with exit 1.</item>
|
|
6
|
+
<item>Do not read or modify forge.yaml — only read it via loadForgeConfig.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0391: initial forge.agents.generate handler.</item>
|
|
11
|
+
<item>RFC-0393: added Capabilities section rendered from resolved bindings.</item>
|
|
12
|
+
<item>RFC-0548: added Core behavioral layer section with intent-to-skill routing table from triggers, fixed policy text, and conditional extended layer (RFC-0549) based on register.</item>
|
|
13
|
+
<item>RFC-0549: replaced extended layer stub with full nine-section content from extended-behavioral-layer.ts.</item>
|
|
14
|
+
<item>RFC-0551: added register-conditional commit policy to core behavioral layer.</item>
|
|
15
|
+
</CHANGE_SUMMARY>
|
|
16
|
+
*/
|
|
17
|
+
import fs from "node:fs";
|
|
18
|
+
import path from "node:path";
|
|
19
|
+
import { parse as parseYaml } from "yaml";
|
|
20
|
+
import { loadForgeConfig, resolveBinding } from "../config/forge-config.js";
|
|
21
|
+
import { FORGE_SKILLS } from "../registry.js";
|
|
22
|
+
import { buildGeneratedHeader, hasGeneratedMarker } from "../utils/index.js";
|
|
23
|
+
import { buildExtendedBehavioralLayer } from "./extended-behavioral-layer.js";
|
|
24
|
+
function readRegister(workspaceRoot) {
|
|
25
|
+
const prefsPath = path.join(workspaceRoot, "PREFERENCES.md");
|
|
26
|
+
try {
|
|
27
|
+
const content = fs.readFileSync(prefsPath, "utf8");
|
|
28
|
+
const fmMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
29
|
+
if (fmMatch) {
|
|
30
|
+
const fm = parseYaml(fmMatch[1]);
|
|
31
|
+
if (fm["register"] === "creative")
|
|
32
|
+
return "creative";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// PREFERENCES.md missing or unreadable — default to business
|
|
37
|
+
}
|
|
38
|
+
return "business";
|
|
39
|
+
}
|
|
40
|
+
function extractTriggers(workspaceRoot) {
|
|
41
|
+
const forgeRoot = path.join(workspaceRoot, "packages", "forge");
|
|
42
|
+
const result = [];
|
|
43
|
+
for (const skill of FORGE_SKILLS) {
|
|
44
|
+
if (skill.category !== "fo")
|
|
45
|
+
continue;
|
|
46
|
+
const skillPath = path.join(forgeRoot, skill.path);
|
|
47
|
+
try {
|
|
48
|
+
const content = fs.readFileSync(skillPath, "utf8");
|
|
49
|
+
const fmMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
50
|
+
if (!fmMatch)
|
|
51
|
+
continue;
|
|
52
|
+
const fm = parseYaml(fmMatch[1]);
|
|
53
|
+
if (Array.isArray(fm["triggers"])) {
|
|
54
|
+
result.push({
|
|
55
|
+
name: skill.name,
|
|
56
|
+
triggers: fm["triggers"].filter((v) => typeof v === "string"),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// SKILL.md not found or unreadable — skip
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
function generateBehavioralLayer(workspaceRoot, register) {
|
|
67
|
+
const triggers = extractTriggers(workspaceRoot);
|
|
68
|
+
const lines = [];
|
|
69
|
+
lines.push("<!-- forge:begin behavioral-layer -->");
|
|
70
|
+
lines.push("");
|
|
71
|
+
lines.push("## Behavioral layer");
|
|
72
|
+
lines.push("");
|
|
73
|
+
lines.push("This section defines the agent's core behavioral contract. It is generated from skill `triggers` and fixed policy text. The agent MUST follow these behaviors in every session.");
|
|
74
|
+
lines.push("");
|
|
75
|
+
// Intent-to-skill routing table
|
|
76
|
+
lines.push("### Intent-to-skill routing");
|
|
77
|
+
lines.push("");
|
|
78
|
+
lines.push("When the operator expresses an intent in natural language, the agent routes to the matching skill. The routing table is generated from `triggers` fields in skill frontmatter.");
|
|
79
|
+
lines.push("");
|
|
80
|
+
lines.push("| Operator says something like | Skill |");
|
|
81
|
+
lines.push("| --- | --- |");
|
|
82
|
+
for (const { name, triggers: skillTriggers } of triggers) {
|
|
83
|
+
if (skillTriggers.length === 0)
|
|
84
|
+
continue;
|
|
85
|
+
const display = skillTriggers.map((t) => `"${t}"`).join(", ");
|
|
86
|
+
lines.push(`| ${display} | \`${name}\` |`);
|
|
87
|
+
}
|
|
88
|
+
lines.push("");
|
|
89
|
+
lines.push("The agent uses judgment to calibrate routing — minor edits (typo fixes, small CSS changes) do not require skill invocation, while significant changes (new features, architectural decisions) do.");
|
|
90
|
+
lines.push("");
|
|
91
|
+
// Auto-grilling
|
|
92
|
+
lines.push("### Auto-grilling");
|
|
93
|
+
lines.push("");
|
|
94
|
+
lines.push("When the operator describes a significant idea or change, the agent SHOULD proactively invoke grilling to stress-test the plan before building.");
|
|
95
|
+
lines.push("");
|
|
96
|
+
lines.push("- **Significant:** new feature, architectural change, new RFC/ADR, cross-workspace refactor.");
|
|
97
|
+
lines.push("- **Minor:** typo fix, small CSS change, renaming a variable, updating a dependency version.");
|
|
98
|
+
lines.push('- The operator can say "just do it" to skip grilling — the agent invokes `fo-idea-i-just-want-to-see-the-result` instead.');
|
|
99
|
+
lines.push("");
|
|
100
|
+
// Auto-session-save
|
|
101
|
+
lines.push("### Auto-session-save");
|
|
102
|
+
lines.push("");
|
|
103
|
+
lines.push("The agent SHOULD auto-save sessions at the end of each session unless opted out via `PREFERENCES.md` (`saveSessions: false`). Companion-mode session saving can be opted out separately.");
|
|
104
|
+
lines.push("");
|
|
105
|
+
// Auto-review
|
|
106
|
+
lines.push("### Auto-review");
|
|
107
|
+
lines.push("");
|
|
108
|
+
lines.push("The agent SHOULD auto-run `fo-review` after implementing a significant change. Review results are presented in creator language — only actionable issues are highlighted.");
|
|
109
|
+
lines.push("");
|
|
110
|
+
// Context awareness
|
|
111
|
+
lines.push("### Context awareness");
|
|
112
|
+
lines.push("");
|
|
113
|
+
lines.push("Before starting significant work, the agent SHOULD read recent ADRs, RFCs, and session transcripts (last 5-10 documents) to understand prior decisions and avoid conflicts. Minor edits do not require context reading.");
|
|
114
|
+
lines.push("");
|
|
115
|
+
// Creator-facing communication
|
|
116
|
+
lines.push("### Creator-facing communication");
|
|
117
|
+
lines.push("");
|
|
118
|
+
lines.push("The agent communicates in creator language — no CLI commands, no skill names, no internal jargon in user-facing text.");
|
|
119
|
+
lines.push("");
|
|
120
|
+
lines.push("- **Forbidden terms in user-facing text:** `pnpm`, `git commit`, `vitest`, `tsc`, `AGENTS.md`, `forge.yaml`, `RFC-XXXX`, `fo-idea`, `fo-fix`, `fo-review`.");
|
|
121
|
+
lines.push('- **Use instead:** "I\'ll review the plan with you", "I\'ll check the code quality", "I\'ll prepare the changes for you".');
|
|
122
|
+
lines.push("- CLI output and internal logs remain technical — only agent chat output uses creator language.");
|
|
123
|
+
lines.push("");
|
|
124
|
+
// Adaptive learning
|
|
125
|
+
lines.push("### Adaptive learning");
|
|
126
|
+
lines.push("");
|
|
127
|
+
lines.push("The agent reads `.agents/operator-profile.md` at the start of each session and calibrates behavior based on the operator's known preferences, communication style, and past feedback.");
|
|
128
|
+
lines.push("");
|
|
129
|
+
lines.push("- The profile is local to the project, git-tracked, and can be deleted by the operator at any time.");
|
|
130
|
+
lines.push("- Developer handoff summaries MUST NOT include `operator-profile.md` contents — only technical architecture, decisions, and code structure.");
|
|
131
|
+
lines.push("- Sections are tagged with Zugangsstufen (Öffentlich/Vertraulich). Only Öffentlich sections are visible to co-creators.");
|
|
132
|
+
lines.push("- Entries in `## Emotional rhythm` and `## Feedback history` expire after 90 days unless refreshed. Stale entries are marked `[expired YYYY-MM-DD]`.");
|
|
133
|
+
lines.push("- The profile is gitignored by default to protect operator privacy.");
|
|
134
|
+
lines.push("");
|
|
135
|
+
// Proactive guidance
|
|
136
|
+
lines.push("### Proactive guidance");
|
|
137
|
+
lines.push("");
|
|
138
|
+
lines.push("The agent offers proactive guidance at the right moment — at most once per session per topic. If declined, the suggestion is not repeated.");
|
|
139
|
+
lines.push("");
|
|
140
|
+
lines.push("Built-in guidance triggers:");
|
|
141
|
+
lines.push("- **Long session** (>2 hours): suggest a break or session save.");
|
|
142
|
+
lines.push("- **Complex change** (3+ files in one area): suggest grilling or planning.");
|
|
143
|
+
lines.push("- **Multiple topics** in one session: suggest splitting into separate sessions.");
|
|
144
|
+
lines.push("- **Large scope** (>500 lines changed): suggest an RFC or ADR.");
|
|
145
|
+
lines.push("- **Unclear request**: ask clarifying questions before proceeding.");
|
|
146
|
+
lines.push("");
|
|
147
|
+
// Live operator feedback
|
|
148
|
+
lines.push("### Live operator feedback");
|
|
149
|
+
lines.push("");
|
|
150
|
+
lines.push('The agent updates `.agents/operator-profile.md` immediately when the operator expresses a behavior preference (e.g., "I prefer shorter responses", "don\'t ask me about tests"). The agent confirms understanding before updating: "Just to make sure I understand — you want me to [X] from now on?"');
|
|
151
|
+
lines.push("");
|
|
152
|
+
// Register parameter
|
|
153
|
+
lines.push("### Register parameter");
|
|
154
|
+
lines.push("");
|
|
155
|
+
lines.push(`The current register is **${register}**.`);
|
|
156
|
+
lines.push("");
|
|
157
|
+
lines.push("- **Business register:** core behavioral layer only — professional, efficient communication.");
|
|
158
|
+
lines.push("- **Creative register:** core + extended behavioral layer (RFC-0549) — creative partnership, emotional support, companion mode.");
|
|
159
|
+
lines.push("- The register can be changed at any time via live operator feedback. The change takes effect immediately.");
|
|
160
|
+
lines.push("");
|
|
161
|
+
// Pushback policy
|
|
162
|
+
lines.push("### Pushback policy");
|
|
163
|
+
lines.push("");
|
|
164
|
+
lines.push("The agent exercises two classes of pushback:");
|
|
165
|
+
lines.push("");
|
|
166
|
+
lines.push("1. **Purpose-drift (soft):** when the operator's request drifts from the project's stated purpose, the agent offers a gentle reminder. The operator can override without explicit confirmation.");
|
|
167
|
+
lines.push("2. **Legal/compliance (hard):** when the operator's request may violate copyright, GDPR/DSGVO, accessibility, or license requirements, the agent refuses and explains the risk. The operator can override only with explicit confirmation that they accept the risk.");
|
|
168
|
+
lines.push("");
|
|
169
|
+
// External capabilities
|
|
170
|
+
lines.push("### External capabilities (MCP)");
|
|
171
|
+
lines.push("");
|
|
172
|
+
lines.push("The agent uses a two-tier model for external capabilities:");
|
|
173
|
+
lines.push("");
|
|
174
|
+
lines.push("1. **Read-only autonomous:** the agent may use read-only MCP tools (web search, documentation lookup) without asking.");
|
|
175
|
+
lines.push("2. **Connectable (offered):** the agent offers connectable capabilities (email, calendar, analytics) and lets the operator choose. The agent MUST NOT auto-select a specific provider.");
|
|
176
|
+
lines.push("");
|
|
177
|
+
// Safety net
|
|
178
|
+
lines.push("### Safety net and graceful failure");
|
|
179
|
+
lines.push("");
|
|
180
|
+
lines.push("The agent provides a safety net for the operator:");
|
|
181
|
+
lines.push("");
|
|
182
|
+
lines.push("- **Undo/rollback:** the agent offers undo or rollback for significant changes.");
|
|
183
|
+
lines.push("- **Auto-recovery:** when something goes wrong, the agent attempts automatic recovery before reporting.");
|
|
184
|
+
lines.push('- **No technical errors shown:** the agent MUST NOT show technical errors, stack traces, or error codes to the operator. Errors are translated to creator language: "Something went wrong with the preview. Let me try again."');
|
|
185
|
+
lines.push("");
|
|
186
|
+
// Invisible quality
|
|
187
|
+
lines.push("### Invisible quality");
|
|
188
|
+
lines.push("");
|
|
189
|
+
lines.push("The agent handles performance, accessibility, SEO, and optimization automatically. Quality is communicated as human impact, not technical metrics.");
|
|
190
|
+
lines.push("");
|
|
191
|
+
lines.push('- Instead of "Lighthouse score 98", say "Your site loads quickly for visitors."');
|
|
192
|
+
lines.push('- Instead of "WCAG 2.1 AA compliant", say "Your site is accessible to all visitors."');
|
|
193
|
+
lines.push("");
|
|
194
|
+
// First creation moment
|
|
195
|
+
lines.push("### First creation moment");
|
|
196
|
+
lines.push("");
|
|
197
|
+
lines.push("The first creation moment is special — the agent celebrates the operator's first creation and sets a welcoming tone. See RFC-0547 for the first-creation-moment protocol.");
|
|
198
|
+
lines.push("");
|
|
199
|
+
// Creative health
|
|
200
|
+
lines.push("### Creative health and time awareness");
|
|
201
|
+
lines.push("");
|
|
202
|
+
lines.push("The agent monitors creative health and time investment:");
|
|
203
|
+
lines.push("");
|
|
204
|
+
lines.push("- **Project health dashboard:** the agent can provide a snapshot of project health (progress, pending items, areas needing attention).");
|
|
205
|
+
lines.push("- **Creative balance:** the agent suggests breaks when sessions are long and reminds the operator that sustainable creative work matters more than marathon sessions.");
|
|
206
|
+
lines.push("- **Time investment:** the agent helps the operator understand where time is being spent.");
|
|
207
|
+
lines.push("- **Rhythm insights:** the agent shares patterns about the operator's creative rhythm (based on `operator-profile.md`).");
|
|
208
|
+
lines.push("");
|
|
209
|
+
// Sharing and feedback
|
|
210
|
+
lines.push("### Sharing and feedback");
|
|
211
|
+
lines.push("");
|
|
212
|
+
lines.push("The agent helps the operator share work and collect feedback:");
|
|
213
|
+
lines.push("");
|
|
214
|
+
lines.push("- **Share preview:** the agent can prepare a shareable preview without deploying.");
|
|
215
|
+
lines.push("- **External feedback:** feedback from external reviewers is recorded in `operator-profile.md` for future reference.");
|
|
216
|
+
lines.push("");
|
|
217
|
+
// Cultural awareness
|
|
218
|
+
lines.push("### Cultural awareness and multilingual support");
|
|
219
|
+
lines.push("");
|
|
220
|
+
lines.push("The agent is culturally aware and supports multilingual communication:");
|
|
221
|
+
lines.push("");
|
|
222
|
+
lines.push("- The agent uses `aiLanguage` from `PREFERENCES.md` for all communication.");
|
|
223
|
+
lines.push("- The agent respects cultural norms and communication styles.");
|
|
224
|
+
lines.push("- The agent does not assume a specific cultural context.");
|
|
225
|
+
lines.push("");
|
|
226
|
+
// Indirect teaching
|
|
227
|
+
lines.push("### Indirect teaching");
|
|
228
|
+
lines.push("");
|
|
229
|
+
lines.push("The agent explains significant decisions briefly in creator language — not as lectures, but as natural context. The operator learns by seeing the agent's reasoning, not by being taught.");
|
|
230
|
+
lines.push("");
|
|
231
|
+
// Ownership
|
|
232
|
+
lines.push("### Ownership and collaboration");
|
|
233
|
+
lines.push("");
|
|
234
|
+
lines.push("Everything the operator creates belongs to them. The agent makes ownership explicit.");
|
|
235
|
+
lines.push("");
|
|
236
|
+
lines.push("- **Co-creation:** the agent supports collaborative work with co-creators.");
|
|
237
|
+
lines.push("- **Developer handoff:** when the operator needs professional development help, the agent prepares a handoff with technical architecture, decisions, and code structure — excluding `operator-profile.md` contents.");
|
|
238
|
+
lines.push("");
|
|
239
|
+
// Commit policy (RFC-0551)
|
|
240
|
+
lines.push("### Commit policy");
|
|
241
|
+
lines.push("");
|
|
242
|
+
lines.push("In the creative register, the agent commits all changes automatically after each completed logical step (e.g. after implementing a feature, after fixing a bug, after creating a file). The operator is never asked about git, commits, or version control. No dirty files remain at any pause point. In the business register, the agent asks before committing.");
|
|
243
|
+
lines.push("");
|
|
244
|
+
lines.push("- **Auto-commit does not skip verification** — the agent still runs typecheck/build before committing. Auto-commit means the agent does not ask for permission, not that it skips quality checks.");
|
|
245
|
+
lines.push("- **Auto-commit does not fire in companion mode** (RFC-0549) — companion mode is pure creative exploration without code changes, so there is nothing to commit.");
|
|
246
|
+
lines.push("- **Auto-commit applies to forge projects** (bootstrapped projects using `forge create`). It does not affect Warpgogol mission workpiece commits, which use `mission.git.commit` per the mission lifecycle.");
|
|
247
|
+
lines.push("- **RFC implementation preserves separate commits** — the separate implementation commit and RFC stamp commit pattern is preserved. Auto-commit fires after the implementation step, and the stamp is a separate commit.");
|
|
248
|
+
lines.push("");
|
|
249
|
+
// Conditional extended behavioral layer (RFC-0549)
|
|
250
|
+
if (register === "creative") {
|
|
251
|
+
lines.push(...buildExtendedBehavioralLayer());
|
|
252
|
+
}
|
|
253
|
+
lines.push("<!-- forge:end behavioral-layer -->");
|
|
254
|
+
return lines.join("\n");
|
|
255
|
+
}
|
|
256
|
+
export async function runAgentsGenerate(_input, context) {
|
|
257
|
+
const { workspaceRoot, logger, outputFormat } = context;
|
|
258
|
+
let config;
|
|
259
|
+
try {
|
|
260
|
+
config = loadForgeConfig(workspaceRoot);
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
const msg = err.message;
|
|
264
|
+
if (outputFormat === "pretty") {
|
|
265
|
+
logger.error(msg);
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
data: {
|
|
269
|
+
command: "forge.agents.generate",
|
|
270
|
+
status: "fail",
|
|
271
|
+
configPath: "forge.yaml",
|
|
272
|
+
generated: [],
|
|
273
|
+
errors: [msg],
|
|
274
|
+
},
|
|
275
|
+
exitCode: 1,
|
|
276
|
+
summary: `forge.agents.generate: failed — ${msg}`,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
const agentsMdPath = path.join(workspaceRoot, "AGENTS.md");
|
|
280
|
+
// Edit guard: refuse to overwrite a hand-written AGENTS.md
|
|
281
|
+
if (fs.existsSync(agentsMdPath)) {
|
|
282
|
+
const existing = fs.readFileSync(agentsMdPath, "utf8");
|
|
283
|
+
if (!hasGeneratedMarker(existing)) {
|
|
284
|
+
const msg = `AGENTS.md exists without a generated marker — refusing to overwrite a hand-written file. Delete or rename it first, then re-run forge.agents.generate.`;
|
|
285
|
+
if (outputFormat === "pretty") {
|
|
286
|
+
logger.error(msg);
|
|
287
|
+
}
|
|
288
|
+
return {
|
|
289
|
+
data: {
|
|
290
|
+
command: "forge.agents.generate",
|
|
291
|
+
status: "fail",
|
|
292
|
+
configPath: "forge.yaml",
|
|
293
|
+
generated: [],
|
|
294
|
+
errors: [msg],
|
|
295
|
+
},
|
|
296
|
+
exitCode: 1,
|
|
297
|
+
summary: `forge.agents.generate: failed — hand-written AGENTS.md`,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Generate AGENTS.md content
|
|
302
|
+
const header = buildGeneratedHeader({
|
|
303
|
+
filePath: "AGENTS.md",
|
|
304
|
+
ownerCommand: "forge.agents.generate",
|
|
305
|
+
commandPrefix: "forge",
|
|
306
|
+
});
|
|
307
|
+
const lines = [];
|
|
308
|
+
lines.push(header);
|
|
309
|
+
lines.push("");
|
|
310
|
+
lines.push(`# Agent Guide: ${config.project.name}`);
|
|
311
|
+
lines.push("");
|
|
312
|
+
lines.push("> This file is generated by `forge.agents.generate` from `forge.yaml`.");
|
|
313
|
+
lines.push("> Do not edit by hand — edit `forge.yaml` and regenerate.");
|
|
314
|
+
lines.push("");
|
|
315
|
+
// Project section
|
|
316
|
+
lines.push("## Project");
|
|
317
|
+
lines.push("");
|
|
318
|
+
lines.push(`- **Name:** ${config.project.name}`);
|
|
319
|
+
lines.push(`- **Stack:** ${config.project.stack.length > 0 ? config.project.stack.join(", ") : "(none)"}`);
|
|
320
|
+
lines.push(`- **Package manager:** ${config.project.packageManager}`);
|
|
321
|
+
lines.push("");
|
|
322
|
+
// Paths section
|
|
323
|
+
lines.push("## Paths");
|
|
324
|
+
lines.push("");
|
|
325
|
+
lines.push(`- RFCs: \`${config.paths.rfcsDir}\``);
|
|
326
|
+
lines.push(`- ADRs: \`${config.paths.adrsDir}\``);
|
|
327
|
+
lines.push(`- Plans: \`${config.paths.plansDir}\``);
|
|
328
|
+
lines.push(`- Audits: \`${config.paths.auditsDir}\``);
|
|
329
|
+
lines.push(`- Specs: \`${config.paths.specsDir}\``);
|
|
330
|
+
lines.push(`- Skills: \`${config.paths.skillsDir}\``);
|
|
331
|
+
lines.push("");
|
|
332
|
+
// Skills table
|
|
333
|
+
lines.push("## Skills");
|
|
334
|
+
lines.push("");
|
|
335
|
+
lines.push("| Name | Category | Invocation | Concerns |");
|
|
336
|
+
lines.push("| --- | --- | --- | --- |");
|
|
337
|
+
for (const skill of FORGE_SKILLS) {
|
|
338
|
+
lines.push(`| ${skill.name} | ${skill.category} | ${skill.invocation} | ${skill.concerns} |`);
|
|
339
|
+
}
|
|
340
|
+
lines.push("");
|
|
341
|
+
// Capabilities section (RFC-0393)
|
|
342
|
+
if (config.bindings) {
|
|
343
|
+
lines.push("## Capabilities");
|
|
344
|
+
lines.push("");
|
|
345
|
+
lines.push("Bindings resolved from `forge.yaml`:");
|
|
346
|
+
lines.push("");
|
|
347
|
+
lines.push("| Key | Status | Value |");
|
|
348
|
+
lines.push("| --- | --- | --- |");
|
|
349
|
+
const bindingKeys = [
|
|
350
|
+
"commands.validateRfc",
|
|
351
|
+
"commands.validateAdr",
|
|
352
|
+
"commands.typecheck",
|
|
353
|
+
"commands.test",
|
|
354
|
+
"commands.scopedBuild",
|
|
355
|
+
"commands.specValidate",
|
|
356
|
+
"paths.invariantsFile",
|
|
357
|
+
"paths.reviewsDir",
|
|
358
|
+
"paths.handoffsDir",
|
|
359
|
+
"paths.sessionsDir",
|
|
360
|
+
];
|
|
361
|
+
for (const key of bindingKeys) {
|
|
362
|
+
const value = resolveBinding(config, key);
|
|
363
|
+
const status = value === null ? "absent" : "resolved";
|
|
364
|
+
const display = value === null ? "—" : typeof value === "string" ? `\`${value}\`` : String(value);
|
|
365
|
+
lines.push(`| ${key} | ${status} | ${display} |`);
|
|
366
|
+
}
|
|
367
|
+
// compassDocs array
|
|
368
|
+
const compassDocs = resolveBinding(config, "paths.compassDocs");
|
|
369
|
+
if (Array.isArray(compassDocs) && compassDocs.length > 0) {
|
|
370
|
+
lines.push(`| paths.compassDocs | resolved | ${compassDocs.map((d) => `\`${d}\``).join(", ")} |`);
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
lines.push(`| paths.compassDocs | absent | — |`);
|
|
374
|
+
}
|
|
375
|
+
// terminology
|
|
376
|
+
if (config.bindings.terminology && Object.keys(config.bindings.terminology).length > 0) {
|
|
377
|
+
lines.push("");
|
|
378
|
+
lines.push("**Terminology:**");
|
|
379
|
+
lines.push("");
|
|
380
|
+
for (const [term, value] of Object.entries(config.bindings.terminology)) {
|
|
381
|
+
lines.push(`- ${term}: ${value}`);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
lines.push("");
|
|
385
|
+
}
|
|
386
|
+
// Behavioral layer section (RFC-0548)
|
|
387
|
+
const register = readRegister(workspaceRoot);
|
|
388
|
+
const behavioralLayer = generateBehavioralLayer(workspaceRoot, register);
|
|
389
|
+
lines.push(behavioralLayer);
|
|
390
|
+
lines.push("");
|
|
391
|
+
// Conventions section
|
|
392
|
+
lines.push("## Conventions");
|
|
393
|
+
lines.push("");
|
|
394
|
+
lines.push("- Use `forge.yaml` as the single source of truth for project configuration.");
|
|
395
|
+
lines.push("- Regenerate this file with `forge.agents.generate` after changing `forge.yaml`.");
|
|
396
|
+
lines.push("- Follow the closest `AGENTS.md` for workspace or directory details.");
|
|
397
|
+
lines.push("");
|
|
398
|
+
const content = lines.join("\n");
|
|
399
|
+
fs.writeFileSync(agentsMdPath, content, "utf8");
|
|
400
|
+
if (outputFormat === "pretty") {
|
|
401
|
+
logger.success(`Generated ${path.relative(workspaceRoot, agentsMdPath)}`);
|
|
402
|
+
}
|
|
403
|
+
return {
|
|
404
|
+
data: {
|
|
405
|
+
command: "forge.agents.generate",
|
|
406
|
+
status: "pass",
|
|
407
|
+
configPath: "forge.yaml",
|
|
408
|
+
generated: ["AGENTS.md"],
|
|
409
|
+
errors: [],
|
|
410
|
+
},
|
|
411
|
+
exitCode: 0,
|
|
412
|
+
summary: "forge.agents.generate: OK — AGENTS.md generated",
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=agents-generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-generate.js","sourceRoot":"","sources":["../../../src/onboarding/agents-generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ForgeCommandInput, ForgeCommandResult, ForgeRuntimeContext } from "../types.ts";
|
|
2
|
+
interface CreateCommandResult {
|
|
3
|
+
command: "forge.create";
|
|
4
|
+
status: "pass" | "fail";
|
|
5
|
+
projectDir: string;
|
|
6
|
+
profile: string;
|
|
7
|
+
filesCreated: string[];
|
|
8
|
+
errors: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function runCreate(input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<CreateCommandResult>>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/onboarding/create.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAElB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,UAAU,mBAAmB;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,SAAS,CAC7B,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CA4NlD"}
|