@warpgogol/forge 2.1.0 → 2.2.0
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 +1 -1
- package/README.md +39 -87
- package/README.uk.md +39 -87
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +292 -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 +145 -0
- package/dist/os/adr/adr.module.js.map +1 -0
- package/dist/os/adr/frontmatter-io.d.ts +12 -0
- package/dist/os/adr/frontmatter-io.d.ts.map +1 -0
- package/dist/os/adr/frontmatter-io.js +67 -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 +194 -0
- package/dist/os/adr/handlers/archive.js.map +1 -0
- package/dist/os/adr/handlers/implement-stamp.d.ts +4 -0
- package/dist/os/adr/handlers/implement-stamp.d.ts.map +1 -0
- package/dist/os/adr/handlers/implement-stamp.js +258 -0
- package/dist/os/adr/handlers/implement-stamp.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 +265 -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 +75 -0
- package/dist/os/adr/types.d.ts.map +1 -0
- package/dist/os/adr/types.js +55 -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 +71 -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 +207 -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 +166 -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 +57 -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 +758 -0
- package/dist/os/core/core.module.js.map +1 -0
- package/dist/os/core/handlers/assets-check.d.ts +19 -0
- package/dist/os/core/handlers/assets-check.d.ts.map +1 -0
- package/dist/os/core/handlers/assets-check.js +89 -0
- package/dist/os/core/handlers/assets-check.js.map +1 -0
- package/dist/os/core/handlers/assets-helpers.d.ts +28 -0
- package/dist/os/core/handlers/assets-helpers.d.ts.map +1 -0
- package/dist/os/core/handlers/assets-helpers.js +128 -0
- package/dist/os/core/handlers/assets-helpers.js.map +1 -0
- package/dist/os/core/handlers/assets-list.d.ts +9 -0
- package/dist/os/core/handlers/assets-list.d.ts.map +1 -0
- package/dist/os/core/handlers/assets-list.js +72 -0
- package/dist/os/core/handlers/assets-list.js.map +1 -0
- package/dist/os/core/handlers/build.d.ts +16 -0
- package/dist/os/core/handlers/build.d.ts.map +1 -0
- package/dist/os/core/handlers/build.js +123 -0
- package/dist/os/core/handlers/build.js.map +1 -0
- package/dist/os/core/handlers/determinism-check.d.ts +20 -0
- package/dist/os/core/handlers/determinism-check.d.ts.map +1 -0
- package/dist/os/core/handlers/determinism-check.js +289 -0
- package/dist/os/core/handlers/determinism-check.js.map +1 -0
- package/dist/os/core/handlers/dev.d.ts +10 -0
- package/dist/os/core/handlers/dev.d.ts.map +1 -0
- package/dist/os/core/handlers/dev.js +102 -0
- package/dist/os/core/handlers/dev.js.map +1 -0
- package/dist/os/core/handlers/knowledge-compact.d.ts +4 -0
- package/dist/os/core/handlers/knowledge-compact.d.ts.map +1 -0
- package/dist/os/core/handlers/knowledge-compact.js +198 -0
- package/dist/os/core/handlers/knowledge-compact.js.map +1 -0
- package/dist/os/core/handlers/pinned-check.d.ts +49 -0
- package/dist/os/core/handlers/pinned-check.d.ts.map +1 -0
- package/dist/os/core/handlers/pinned-check.js +159 -0
- package/dist/os/core/handlers/pinned-check.js.map +1 -0
- package/dist/os/core/handlers/pinned-init.d.ts +19 -0
- package/dist/os/core/handlers/pinned-init.d.ts.map +1 -0
- package/dist/os/core/handlers/pinned-init.js +283 -0
- package/dist/os/core/handlers/pinned-init.js.map +1 -0
- package/dist/os/core/handlers/pinned-types.d.ts +29 -0
- package/dist/os/core/handlers/pinned-types.d.ts.map +1 -0
- package/dist/os/core/handlers/pinned-types.js +16 -0
- package/dist/os/core/handlers/pinned-types.js.map +1 -0
- package/dist/os/core/handlers/pinned-validate.d.ts +4 -0
- package/dist/os/core/handlers/pinned-validate.d.ts.map +1 -0
- package/dist/os/core/handlers/pinned-validate.js +248 -0
- package/dist/os/core/handlers/pinned-validate.js.map +1 -0
- package/dist/os/core/handlers/profile-resolve.d.ts +13 -0
- package/dist/os/core/handlers/profile-resolve.d.ts.map +1 -0
- package/dist/os/core/handlers/profile-resolve.js +65 -0
- package/dist/os/core/handlers/profile-resolve.js.map +1 -0
- package/dist/os/core/handlers/release-prepare.d.ts +25 -0
- package/dist/os/core/handlers/release-prepare.d.ts.map +1 -0
- package/dist/os/core/handlers/release-prepare.js +228 -0
- package/dist/os/core/handlers/release-prepare.js.map +1 -0
- package/dist/os/core/handlers/release-publish.d.ts +13 -0
- package/dist/os/core/handlers/release-publish.d.ts.map +1 -0
- package/dist/os/core/handlers/release-publish.js +173 -0
- package/dist/os/core/handlers/release-publish.js.map +1 -0
- package/dist/os/core/handlers/validate.d.ts +26 -0
- package/dist/os/core/handlers/validate.d.ts.map +1 -0
- package/dist/os/core/handlers/validate.js +208 -0
- package/dist/os/core/handlers/validate.js.map +1 -0
- package/dist/os/core/handlers/workspace-deps.d.ts +12 -0
- package/dist/os/core/handlers/workspace-deps.d.ts.map +1 -0
- package/dist/os/core/handlers/workspace-deps.js +39 -0
- package/dist/os/core/handlers/workspace-deps.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/exploration/exploration.module.d.ts +3 -0
- package/dist/os/exploration/exploration.module.d.ts.map +1 -0
- package/dist/os/exploration/exploration.module.js +82 -0
- package/dist/os/exploration/exploration.module.js.map +1 -0
- package/dist/os/exploration/frontmatter-io.d.ts +13 -0
- package/dist/os/exploration/frontmatter-io.d.ts.map +1 -0
- package/dist/os/exploration/frontmatter-io.js +61 -0
- package/dist/os/exploration/frontmatter-io.js.map +1 -0
- package/dist/os/exploration/handlers/archive.d.ts +4 -0
- package/dist/os/exploration/handlers/archive.d.ts.map +1 -0
- package/dist/os/exploration/handlers/archive.js +135 -0
- package/dist/os/exploration/handlers/archive.js.map +1 -0
- package/dist/os/exploration/handlers/list.d.ts +4 -0
- package/dist/os/exploration/handlers/list.d.ts.map +1 -0
- package/dist/os/exploration/handlers/list.js +56 -0
- package/dist/os/exploration/handlers/list.js.map +1 -0
- package/dist/os/exploration/handlers/show.d.ts +4 -0
- package/dist/os/exploration/handlers/show.d.ts.map +1 -0
- package/dist/os/exploration/handlers/show.js +91 -0
- package/dist/os/exploration/handlers/show.js.map +1 -0
- package/dist/os/exploration/index.d.ts +7 -0
- package/dist/os/exploration/index.d.ts.map +1 -0
- package/dist/os/exploration/index.js +17 -0
- package/dist/os/exploration/index.js.map +1 -0
- package/dist/os/exploration/types.d.ts +38 -0
- package/dist/os/exploration/types.d.ts.map +1 -0
- package/dist/os/exploration/types.js +23 -0
- package/dist/os/exploration/types.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 +356 -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/notes/index.d.ts +2 -0
- package/dist/os/notes/index.d.ts.map +1 -0
- package/dist/os/notes/index.js +10 -0
- package/dist/os/notes/index.js.map +1 -0
- package/dist/os/notes/notes.module.d.ts +3 -0
- package/dist/os/notes/notes.module.d.ts.map +1 -0
- package/dist/os/notes/notes.module.js +83 -0
- package/dist/os/notes/notes.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 +69 -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 +206 -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/program/discovery.d.ts +61 -0
- package/dist/os/program/discovery.d.ts.map +1 -0
- package/dist/os/program/discovery.js +236 -0
- package/dist/os/program/discovery.js.map +1 -0
- package/dist/os/program/handlers/complete.d.ts +12 -0
- package/dist/os/program/handlers/complete.d.ts.map +1 -0
- package/dist/os/program/handlers/complete.js +344 -0
- package/dist/os/program/handlers/complete.js.map +1 -0
- package/dist/os/program/handlers/lease.d.ts +13 -0
- package/dist/os/program/handlers/lease.d.ts.map +1 -0
- package/dist/os/program/handlers/lease.js +322 -0
- package/dist/os/program/handlers/lease.js.map +1 -0
- package/dist/os/program/handlers/seal.d.ts +12 -0
- package/dist/os/program/handlers/seal.d.ts.map +1 -0
- package/dist/os/program/handlers/seal.js +265 -0
- package/dist/os/program/handlers/seal.js.map +1 -0
- package/dist/os/program/handlers/validate.d.ts +14 -0
- package/dist/os/program/handlers/validate.d.ts.map +1 -0
- package/dist/os/program/handlers/validate.js +164 -0
- package/dist/os/program/handlers/validate.js.map +1 -0
- package/dist/os/program/lease.d.ts +39 -0
- package/dist/os/program/lease.d.ts.map +1 -0
- package/dist/os/program/lease.js +129 -0
- package/dist/os/program/lease.js.map +1 -0
- package/dist/os/program/program.module.d.ts +3 -0
- package/dist/os/program/program.module.d.ts.map +1 -0
- package/dist/os/program/program.module.js +201 -0
- package/dist/os/program/program.module.js.map +1 -0
- package/dist/os/program/schemas.d.ts +225 -0
- package/dist/os/program/schemas.d.ts.map +1 -0
- package/dist/os/program/schemas.js +174 -0
- package/dist/os/program/schemas.js.map +1 -0
- package/dist/os/program/state.d.ts +38 -0
- package/dist/os/program/state.d.ts.map +1 -0
- package/dist/os/program/state.js +189 -0
- package/dist/os/program/state.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 +310 -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 +18 -0
- package/dist/os/rfc/frontmatter-io.d.ts.map +1 -0
- package/dist/os/rfc/frontmatter-io.js +110 -0
- package/dist/os/rfc/frontmatter-io.js.map +1 -0
- package/dist/os/rfc/handlers/archive.d.ts +25 -0
- package/dist/os/rfc/handlers/archive.d.ts.map +1 -0
- package/dist/os/rfc/handlers/archive.js +247 -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 +420 -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 +192 -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 +155 -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 +240 -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 +105 -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 +203 -0
- package/dist/os/rfc/handlers/supersede-propose.js.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts +32 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.js +590 -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 +108 -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 +366 -0
- package/dist/os/rfc/rfc.module.js.map +1 -0
- package/dist/os/rfc/types.d.ts +483 -0
- package/dist/os/rfc/types.d.ts.map +1 -0
- package/dist/os/rfc/types.js +100 -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 +184 -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 +140 -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 +241 -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 +297 -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 +115 -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/live-spec-list.d.ts +4 -0
- package/dist/os/spec/live-spec-list.d.ts.map +1 -0
- package/dist/os/spec/live-spec-list.js +64 -0
- package/dist/os/spec/live-spec-list.js.map +1 -0
- package/dist/os/spec/live-spec-merge.d.ts +4 -0
- package/dist/os/spec/live-spec-merge.d.ts.map +1 -0
- package/dist/os/spec/live-spec-merge.js +345 -0
- package/dist/os/spec/live-spec-merge.js.map +1 -0
- package/dist/os/spec/live-spec-show.d.ts +4 -0
- package/dist/os/spec/live-spec-show.d.ts.map +1 -0
- package/dist/os/spec/live-spec-show.js +99 -0
- package/dist/os/spec/live-spec-show.js.map +1 -0
- package/dist/os/spec/live-spec-types.d.ts +71 -0
- package/dist/os/spec/live-spec-types.d.ts.map +1 -0
- package/dist/os/spec/live-spec-types.js +14 -0
- package/dist/os/spec/live-spec-types.js.map +1 -0
- package/dist/os/spec/live-spec-validate.d.ts +4 -0
- package/dist/os/spec/live-spec-validate.d.ts.map +1 -0
- package/dist/os/spec/live-spec-validate.js +140 -0
- package/dist/os/spec/live-spec-validate.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 +336 -0
- package/dist/os/spec/spec-materialize.js.map +1 -0
- package/dist/os/spec/spec-schema.d.ts +126 -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 +119 -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 +153 -0
- package/dist/os/werkstatt/handlers/lock.js.map +1 -0
- package/dist/os/werkstatt/handlers/schema.d.ts +33 -0
- package/dist/os/werkstatt/handlers/schema.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/schema.js +42 -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 +144 -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 +53 -0
- package/dist/src/cli-output.js.map +1 -0
- package/dist/src/config/forge-config.d.ts +242 -0
- package/dist/src/config/forge-config.d.ts.map +1 -0
- package/dist/src/config/forge-config.js +359 -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 +36 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +56 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/knowledge/budgets.d.ts +38 -0
- package/dist/src/knowledge/budgets.d.ts.map +1 -0
- package/dist/src/knowledge/budgets.js +157 -0
- package/dist/src/knowledge/budgets.js.map +1 -0
- package/dist/src/knowledge/compact.d.ts +47 -0
- package/dist/src/knowledge/compact.d.ts.map +1 -0
- package/dist/src/knowledge/compact.js +320 -0
- package/dist/src/knowledge/compact.js.map +1 -0
- package/dist/src/knowledge/index.d.ts +7 -0
- package/dist/src/knowledge/index.d.ts.map +1 -0
- package/dist/src/knowledge/index.js +19 -0
- package/dist/src/knowledge/index.js.map +1 -0
- package/dist/src/knowledge/parse.d.ts +3 -0
- package/dist/src/knowledge/parse.d.ts.map +1 -0
- package/dist/src/knowledge/parse.js +205 -0
- package/dist/src/knowledge/parse.js.map +1 -0
- package/dist/src/knowledge/promote.d.ts +37 -0
- package/dist/src/knowledge/promote.d.ts.map +1 -0
- package/dist/src/knowledge/promote.js +120 -0
- package/dist/src/knowledge/promote.js.map +1 -0
- package/dist/src/knowledge/schema.d.ts +61 -0
- package/dist/src/knowledge/schema.d.ts.map +1 -0
- package/dist/src/knowledge/schema.js +64 -0
- package/dist/src/knowledge/schema.js.map +1 -0
- package/dist/src/knowledge/serialize.d.ts +3 -0
- package/dist/src/knowledge/serialize.d.ts.map +1 -0
- package/dist/src/knowledge/serialize.js +67 -0
- package/dist/src/knowledge/serialize.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 +56 -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 +55 -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 +30 -0
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -0
- package/dist/src/onboarding/agents-generate.js +352 -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 +318 -0
- package/dist/src/onboarding/create.js.map +1 -0
- package/dist/src/onboarding/doctor.d.ts +45 -0
- package/dist/src/onboarding/doctor.d.ts.map +1 -0
- package/dist/src/onboarding/doctor.js +1108 -0
- package/dist/src/onboarding/doctor.js.map +1 -0
- package/dist/src/onboarding/init.d.ts +32 -0
- package/dist/src/onboarding/init.d.ts.map +1 -0
- package/dist/src/onboarding/init.js +291 -0
- package/dist/src/onboarding/init.js.map +1 -0
- package/dist/src/onboarding/invariant-engine.d.ts +17 -0
- package/dist/src/onboarding/invariant-engine.d.ts.map +1 -0
- package/dist/src/onboarding/invariant-engine.js +416 -0
- package/dist/src/onboarding/invariant-engine.js.map +1 -0
- package/dist/src/onboarding/memory-scaffold.d.ts +18 -0
- package/dist/src/onboarding/memory-scaffold.d.ts.map +1 -0
- package/dist/src/onboarding/memory-scaffold.js +151 -0
- package/dist/src/onboarding/memory-scaffold.js.map +1 -0
- package/dist/src/onboarding/nested-agents-generate.d.ts +18 -0
- package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -0
- package/dist/src/onboarding/nested-agents-generate.js +69 -0
- package/dist/src/onboarding/nested-agents-generate.js.map +1 -0
- package/dist/src/onboarding/nested-agents-templates.d.ts +26 -0
- package/dist/src/onboarding/nested-agents-templates.d.ts.map +1 -0
- package/dist/src/onboarding/nested-agents-templates.js +178 -0
- package/dist/src/onboarding/nested-agents-templates.js.map +1 -0
- package/dist/src/onboarding/profile-validate.d.ts +13 -0
- package/dist/src/onboarding/profile-validate.d.ts.map +1 -0
- package/dist/src/onboarding/profile-validate.js +109 -0
- package/dist/src/onboarding/profile-validate.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 +248 -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 +25 -0
- package/dist/src/onboarding/upgrade.d.ts.map +1 -0
- package/dist/src/onboarding/upgrade.js +391 -0
- package/dist/src/onboarding/upgrade.js.map +1 -0
- package/dist/src/onboarding/workspace-discovery.d.ts +11 -0
- package/dist/src/onboarding/workspace-discovery.d.ts.map +1 -0
- package/dist/src/onboarding/workspace-discovery.js +138 -0
- package/dist/src/onboarding/workspace-discovery.js.map +1 -0
- package/dist/src/profiles/profile-schema.d.ts +351 -0
- package/dist/src/profiles/profile-schema.d.ts.map +1 -0
- package/dist/src/profiles/profile-schema.js +201 -0
- package/dist/src/profiles/profile-schema.js.map +1 -0
- package/dist/src/profiles/stack-profile.d.ts +168 -0
- package/dist/src/profiles/stack-profile.d.ts.map +1 -0
- package/dist/src/profiles/stack-profile.js +144 -0
- package/dist/src/profiles/stack-profile.js.map +1 -0
- package/dist/src/profiles/terminology-utils.d.ts +8 -0
- package/dist/src/profiles/terminology-utils.d.ts.map +1 -0
- package/dist/src/profiles/terminology-utils.js +31 -0
- package/dist/src/profiles/terminology-utils.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 +152 -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 +39 -0
- package/dist/src/utils/fs-idempotent.js.map +1 -0
- package/dist/src/utils/fs-trash-sync.d.ts +2 -0
- package/dist/src/utils/fs-trash-sync.d.ts.map +1 -0
- package/dist/src/utils/fs-trash-sync.js +34 -0
- package/dist/src/utils/fs-trash-sync.js.map +1 -0
- package/dist/src/utils/fs-trash.d.ts +2 -0
- package/dist/src/utils/fs-trash.d.ts.map +1 -0
- package/dist/src/utils/fs-trash.js +24 -0
- package/dist/src/utils/fs-trash.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 +9 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +21 -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/note-frontmatter-validate.d.ts +20 -0
- package/dist/src/validators/note-frontmatter-validate.d.ts.map +1 -0
- package/dist/src/validators/note-frontmatter-validate.js +117 -0
- package/dist/src/validators/note-frontmatter-validate.js.map +1 -0
- package/dist/src/validators/note-link-validate.d.ts +21 -0
- package/dist/src/validators/note-link-validate.d.ts.map +1 -0
- package/dist/src/validators/note-link-validate.js +121 -0
- package/dist/src/validators/note-link-validate.js.map +1 -0
- package/dist/src/validators/note-orphan-detect.d.ts +19 -0
- package/dist/src/validators/note-orphan-detect.d.ts.map +1 -0
- package/dist/src/validators/note-orphan-detect.js +123 -0
- package/dist/src/validators/note-orphan-detect.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 +78 -0
- package/dist/src/validators/port-validate.js.map +1 -0
- package/dist/src/validators/skill-validate.d.ts +29 -0
- package/dist/src/validators/skill-validate.d.ts.map +1 -0
- package/dist/src/validators/skill-validate.js +689 -0
- package/dist/src/validators/skill-validate.js.map +1 -0
- package/package.json +1 -1
- package/profiles/forge-shell.yaml +2 -0
- package/profiles/godot-csharp.yaml +192 -9
- package/profiles/phaser-turborepo.yaml +5 -3
- package/src/onboarding/templates/behavioral-layer-core.md +4 -5
- package/src/onboarding/templates/root-agents-business.md +1 -1
- package/src/onboarding/templates/root-agents-creative.md +1 -1
- package/profiles/astro-typescript-turborepo.yaml +0 -378
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type StackProfileDomainFields } from "./profile-schema.ts";
|
|
3
|
+
export declare const stackProfileSchema: z.ZodObject<{
|
|
4
|
+
schema: z.ZodLiteral<"forge/stack-profile@1">;
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
displayName: z.ZodString;
|
|
7
|
+
detect: z.ZodObject<{
|
|
8
|
+
anyOf: z.ZodArray<z.ZodString>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
workspace: z.ZodObject<{
|
|
11
|
+
dirs: z.ZodArray<z.ZodString>;
|
|
12
|
+
files: z.ZodArray<z.ZodObject<{
|
|
13
|
+
path: z.ZodString;
|
|
14
|
+
content: z.ZodString;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
install: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
18
|
+
firstWorkspace: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
path: z.ZodString;
|
|
20
|
+
files: z.ZodArray<z.ZodObject<{
|
|
21
|
+
path: z.ZodString;
|
|
22
|
+
content: z.ZodString;
|
|
23
|
+
}, z.core.$strip>>;
|
|
24
|
+
install: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
25
|
+
}, z.core.$strip>>;
|
|
26
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
27
|
+
terminology: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
28
|
+
artifacts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
29
|
+
id: z.ZodString;
|
|
30
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
31
|
+
produce: z.ZodOptional<z.ZodObject<{
|
|
32
|
+
command: z.ZodString;
|
|
33
|
+
output: z.ZodOptional<z.ZodString>;
|
|
34
|
+
}, z.core.$strip>>;
|
|
35
|
+
validate: z.ZodOptional<z.ZodObject<{
|
|
36
|
+
command: z.ZodString;
|
|
37
|
+
outputFormat: z.ZodOptional<z.ZodEnum<{
|
|
38
|
+
json: "json";
|
|
39
|
+
plain: "plain";
|
|
40
|
+
}>>;
|
|
41
|
+
violationPattern: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}, z.core.$strip>>;
|
|
43
|
+
determinism: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
hashable: z.ZodBoolean;
|
|
45
|
+
inputs: z.ZodArray<z.ZodString>;
|
|
46
|
+
}, z.core.$strip>>;
|
|
47
|
+
}, z.core.$strip>>>;
|
|
48
|
+
workspaceTypes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
49
|
+
id: z.ZodString;
|
|
50
|
+
detect: z.ZodObject<{
|
|
51
|
+
glob: z.ZodOptional<z.ZodString>;
|
|
52
|
+
contains: z.ZodOptional<z.ZodString>;
|
|
53
|
+
packageJsonDep: z.ZodOptional<z.ZodString>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
56
|
+
agentsMdTemplate: z.ZodOptional<z.ZodString>;
|
|
57
|
+
}, z.core.$strip>>>;
|
|
58
|
+
invariants: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
59
|
+
id: z.ZodString;
|
|
60
|
+
rule: z.ZodString;
|
|
61
|
+
severity: z.ZodEnum<{
|
|
62
|
+
error: "error";
|
|
63
|
+
warning: "warning";
|
|
64
|
+
}>;
|
|
65
|
+
check: z.ZodOptional<z.ZodObject<{
|
|
66
|
+
kind: z.ZodEnum<{
|
|
67
|
+
"filename-pattern": "filename-pattern";
|
|
68
|
+
"file-contains": "file-contains";
|
|
69
|
+
"file-not-contains": "file-not-contains";
|
|
70
|
+
"attribute-pattern": "attribute-pattern";
|
|
71
|
+
"link-resolution": "link-resolution";
|
|
72
|
+
"frontmatter-required": "frontmatter-required";
|
|
73
|
+
"path-exclusion": "path-exclusion";
|
|
74
|
+
"gitignore-entry": "gitignore-entry";
|
|
75
|
+
"secret-scan": "secret-scan";
|
|
76
|
+
}>;
|
|
77
|
+
glob: z.ZodOptional<z.ZodString>;
|
|
78
|
+
pattern: z.ZodOptional<z.ZodString>;
|
|
79
|
+
negatedPattern: z.ZodOptional<z.ZodString>;
|
|
80
|
+
elements: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
81
|
+
attribute: z.ZodOptional<z.ZodString>;
|
|
82
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
83
|
+
}, z.core.$strip>>;
|
|
84
|
+
}, z.core.$strip>>>;
|
|
85
|
+
register: z.ZodOptional<z.ZodEnum<{
|
|
86
|
+
business: "business";
|
|
87
|
+
creative: "creative";
|
|
88
|
+
}>>;
|
|
89
|
+
devServer: z.ZodOptional<z.ZodObject<{
|
|
90
|
+
command: z.ZodString;
|
|
91
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
92
|
+
readinessTimeout: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
}, z.core.$strip>>;
|
|
94
|
+
assets: z.ZodOptional<z.ZodObject<{
|
|
95
|
+
dir: z.ZodString;
|
|
96
|
+
types: z.ZodArray<z.ZodObject<{
|
|
97
|
+
id: z.ZodString;
|
|
98
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
99
|
+
referencePattern: z.ZodOptional<z.ZodString>;
|
|
100
|
+
}, z.core.$strip>>;
|
|
101
|
+
}, z.core.$strip>>;
|
|
102
|
+
release: z.ZodOptional<z.ZodObject<{
|
|
103
|
+
target: z.ZodEnum<{
|
|
104
|
+
local: "local";
|
|
105
|
+
r2: "r2";
|
|
106
|
+
s3: "s3";
|
|
107
|
+
}>;
|
|
108
|
+
outputDir: z.ZodString;
|
|
109
|
+
manifestName: z.ZodDefault<z.ZodString>;
|
|
110
|
+
includeArtifacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
111
|
+
r2: z.ZodOptional<z.ZodObject<{
|
|
112
|
+
bucket: z.ZodString;
|
|
113
|
+
accountId: z.ZodString;
|
|
114
|
+
prefix: z.ZodDefault<z.ZodString>;
|
|
115
|
+
}, z.core.$strip>>;
|
|
116
|
+
}, z.core.$strip>>;
|
|
117
|
+
prerequisites: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
118
|
+
id: z.ZodString;
|
|
119
|
+
name: z.ZodString;
|
|
120
|
+
check: z.ZodString;
|
|
121
|
+
installHint: z.ZodOptional<z.ZodString>;
|
|
122
|
+
severity: z.ZodDefault<z.ZodEnum<{
|
|
123
|
+
error: "error";
|
|
124
|
+
warning: "warning";
|
|
125
|
+
}>>;
|
|
126
|
+
}, z.core.$strip>>>;
|
|
127
|
+
templates: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
128
|
+
id: z.ZodString;
|
|
129
|
+
default: z.ZodOptional<z.ZodBoolean>;
|
|
130
|
+
firstWorkspace: z.ZodObject<{
|
|
131
|
+
path: z.ZodString;
|
|
132
|
+
files: z.ZodArray<z.ZodObject<{
|
|
133
|
+
path: z.ZodString;
|
|
134
|
+
content: z.ZodString;
|
|
135
|
+
}, z.core.$strip>>;
|
|
136
|
+
install: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
137
|
+
}, z.core.$strip>;
|
|
138
|
+
}, z.core.$strip>>>;
|
|
139
|
+
scriptDir: z.ZodOptional<z.ZodString>;
|
|
140
|
+
}, z.core.$strip>;
|
|
141
|
+
export interface ProfileFile {
|
|
142
|
+
path: string;
|
|
143
|
+
content: string;
|
|
144
|
+
}
|
|
145
|
+
export interface StackProfile extends StackProfileDomainFields {
|
|
146
|
+
schema: "forge/stack-profile@1";
|
|
147
|
+
id: string;
|
|
148
|
+
displayName: string;
|
|
149
|
+
detect: {
|
|
150
|
+
anyOf: string[];
|
|
151
|
+
};
|
|
152
|
+
workspace: {
|
|
153
|
+
dirs: string[];
|
|
154
|
+
files: ProfileFile[];
|
|
155
|
+
};
|
|
156
|
+
install: string[];
|
|
157
|
+
firstWorkspace?: {
|
|
158
|
+
path: string;
|
|
159
|
+
files: ProfileFile[];
|
|
160
|
+
install: string[];
|
|
161
|
+
};
|
|
162
|
+
prerequisites?: import("./profile-schema.ts").ProfilePrerequisite[];
|
|
163
|
+
templates?: import("./profile-schema.ts").ProfileTemplate[];
|
|
164
|
+
}
|
|
165
|
+
export declare function loadStackProfile(profilePath: string): StackProfile;
|
|
166
|
+
export declare function listStackProfiles(forgeRoot: string): StackProfile[];
|
|
167
|
+
export declare function detectStack(projectRoot: string, profiles: StackProfile[]): StackProfile | null;
|
|
168
|
+
//# sourceMappingURL=stack-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-profile.d.ts","sourceRoot":"","sources":["../../../src/profiles/stack-profile.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkC,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAMpG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgD7B,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,wBAAwB;IAC5D,MAAM,EAAE,uBAAuB,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5B,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,WAAW,EAAE,CAAC;KACtB,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,WAAW,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,EAAE,OAAO,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IACpE,SAAS,CAAC,EAAE,OAAO,qBAAqB,EAAE,eAAe,EAAE,CAAC;CAC7D;AAMD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAkBlE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAiBnE;AAMD,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,GAAG,IAAI,CAO9F"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Stack profile schema, loader, and detector. Defines what a supported stack looks like and how to detect it in an existing project.</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not scaffold projects — that is scaffold-project.ts.</item>
|
|
6
|
+
<item>Do not import from @warpgogol/* — this module is portable.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0392: initial stack profile module with zod schema, listStackProfiles, detectStack.</item>
|
|
11
|
+
<item>RFC-0638: extended stackProfileSchema with optional domain-neutral fields (domain, terminology, artifacts, workspaceTypes, invariants, register).</item>
|
|
12
|
+
<item>RFC-0674: add devServer field to stackProfileSchema for lifecycle commands.</item>
|
|
13
|
+
<item>RFC-0679: add assets field to stackProfileSchema for asset management commands.</item>
|
|
14
|
+
<item>RFC-0680: add release field to stackProfileSchema for release lifecycle commands.</item>
|
|
15
|
+
<item>ADR-0043: add scriptDir field for agent-generated script directory convention.</item>
|
|
16
|
+
</CHANGE_SUMMARY>
|
|
17
|
+
*/
|
|
18
|
+
import fs from "node:fs";
|
|
19
|
+
import path from "node:path";
|
|
20
|
+
import { z } from "zod";
|
|
21
|
+
import { parse as parseYaml } from "yaml";
|
|
22
|
+
import { stackProfileDomainFieldsSchema } from "./profile-schema.js";
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Schema (forge/stack-profile@1)
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
export const stackProfileSchema = z.object({
|
|
27
|
+
schema: z.literal("forge/stack-profile@1"),
|
|
28
|
+
id: z.string().min(1),
|
|
29
|
+
displayName: z.string().min(1),
|
|
30
|
+
detect: z.object({
|
|
31
|
+
anyOf: z.array(z.string()).min(1),
|
|
32
|
+
}),
|
|
33
|
+
workspace: z.object({
|
|
34
|
+
dirs: z.array(z.string()).min(1),
|
|
35
|
+
files: z.array(z.object({
|
|
36
|
+
path: z.string().min(1),
|
|
37
|
+
content: z.string(),
|
|
38
|
+
})),
|
|
39
|
+
}),
|
|
40
|
+
install: z.array(z.string()).default([]),
|
|
41
|
+
firstWorkspace: z
|
|
42
|
+
.object({
|
|
43
|
+
path: z.string().min(1),
|
|
44
|
+
files: z.array(z.object({
|
|
45
|
+
path: z.string().min(1),
|
|
46
|
+
content: z.string(),
|
|
47
|
+
})),
|
|
48
|
+
install: z.array(z.string()).default([]),
|
|
49
|
+
})
|
|
50
|
+
.optional(),
|
|
51
|
+
// RFC-0638: Domain-neutral optional fields
|
|
52
|
+
domain: stackProfileDomainFieldsSchema.shape.domain,
|
|
53
|
+
terminology: stackProfileDomainFieldsSchema.shape.terminology,
|
|
54
|
+
artifacts: stackProfileDomainFieldsSchema.shape.artifacts,
|
|
55
|
+
workspaceTypes: stackProfileDomainFieldsSchema.shape.workspaceTypes,
|
|
56
|
+
invariants: stackProfileDomainFieldsSchema.shape.invariants,
|
|
57
|
+
register: stackProfileDomainFieldsSchema.shape.register,
|
|
58
|
+
// RFC-0674: Dev server declaration for lifecycle commands
|
|
59
|
+
devServer: stackProfileDomainFieldsSchema.shape.devServer,
|
|
60
|
+
// RFC-0679: Asset management declaration
|
|
61
|
+
assets: stackProfileDomainFieldsSchema.shape.assets,
|
|
62
|
+
// RFC-0680: Release lifecycle declaration
|
|
63
|
+
release: stackProfileDomainFieldsSchema.shape.release,
|
|
64
|
+
// Prerequisites: system-level dependency checks (e.g. FFmpeg)
|
|
65
|
+
prerequisites: stackProfileDomainFieldsSchema.shape.prerequisites,
|
|
66
|
+
// Templates: multi-template profiles (e.g. React + HTML)
|
|
67
|
+
templates: stackProfileDomainFieldsSchema.shape.templates,
|
|
68
|
+
// ADR-0043: Agent-generated script directory override
|
|
69
|
+
scriptDir: stackProfileDomainFieldsSchema.shape.scriptDir,
|
|
70
|
+
});
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// Loader
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
export function loadStackProfile(profilePath) {
|
|
75
|
+
const raw = fs.readFileSync(profilePath, "utf8");
|
|
76
|
+
let parsed;
|
|
77
|
+
try {
|
|
78
|
+
parsed = parseYaml(raw);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
throw new Error(`Stack profile at ${profilePath} is not valid YAML: ${err.message}`);
|
|
82
|
+
}
|
|
83
|
+
const result = stackProfileSchema.safeParse(parsed);
|
|
84
|
+
if (!result.success) {
|
|
85
|
+
const issues = result.error.issues
|
|
86
|
+
.map((i) => ` - ${i.path.join(".")}: ${i.message}`)
|
|
87
|
+
.join("\n");
|
|
88
|
+
throw new Error(`Stack profile at ${profilePath} failed schema validation:\n${issues}`);
|
|
89
|
+
}
|
|
90
|
+
return result.data;
|
|
91
|
+
}
|
|
92
|
+
export function listStackProfiles(forgeRoot) {
|
|
93
|
+
const profilesDir = path.join(forgeRoot, "profiles");
|
|
94
|
+
if (!fs.existsSync(profilesDir)) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
const entries = fs.readdirSync(profilesDir);
|
|
98
|
+
const profiles = [];
|
|
99
|
+
for (const entry of entries) {
|
|
100
|
+
if (entry.endsWith(".yaml") && !entry.startsWith(".")) {
|
|
101
|
+
const profilePath = path.join(profilesDir, entry);
|
|
102
|
+
profiles.push(loadStackProfile(profilePath));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return profiles;
|
|
106
|
+
}
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
// Detector
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
export function detectStack(projectRoot, profiles) {
|
|
111
|
+
for (const profile of profiles) {
|
|
112
|
+
if (matchesAnyOf(projectRoot, profile.detect.anyOf)) {
|
|
113
|
+
return profile;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
function matchesAnyOf(projectRoot, patterns) {
|
|
119
|
+
for (const pattern of patterns) {
|
|
120
|
+
if (globExists(projectRoot, pattern)) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
function globExists(dir, pattern) {
|
|
127
|
+
// Simple glob: support * and *.ext patterns at the root level
|
|
128
|
+
if (!pattern.includes("*")) {
|
|
129
|
+
return fs.existsSync(path.join(dir, pattern));
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
const entries = fs.readdirSync(dir);
|
|
133
|
+
const regex = globToRegex(pattern);
|
|
134
|
+
return entries.some((e) => regex.test(e));
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function globToRegex(pattern) {
|
|
141
|
+
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
|
|
142
|
+
return new RegExp(`^${escaped}$`);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=stack-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-profile.js","sourceRoot":"","sources":["../../../src/profiles/stack-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ForgeConfig } from "../config/forge-config.ts";
|
|
2
|
+
import type { StackProfile } from "./stack-profile.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve all terminology keys (universal + profile-specific) from config and profile.
|
|
5
|
+
* Used by both root AGENTS.md generation and nested AGENTS.md generation.
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolveAllTerminology(config: ForgeConfig, profile: StackProfile | undefined): Record<string, string>;
|
|
8
|
+
//# sourceMappingURL=terminology-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminology-utils.d.ts","sourceRoot":"","sources":["../../../src/profiles/terminology-utils.ts"],"names":[],"mappings":"AAcA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Shared terminology resolution utility (RFC-0643). Resolves all terminology keys
|
|
4
|
+
from config + profile, used by both root and nested AGENTS.md generation.</purpose>
|
|
5
|
+
<non-goals>
|
|
6
|
+
<item>Do not import from @warpgogol/* — this module is portable.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0643: extracted resolveAllTerminology from agents-generate.ts and nested-agents-generate.ts to eliminate duplication.</item>
|
|
11
|
+
</CHANGE_SUMMARY>
|
|
12
|
+
*/
|
|
13
|
+
import { UNIVERSAL_TERMINOLOGY_KEYS } from "./profile-schema.js";
|
|
14
|
+
import { resolveTerminology } from "../config/forge-config.js";
|
|
15
|
+
/**
|
|
16
|
+
* Resolve all terminology keys (universal + profile-specific) from config and profile.
|
|
17
|
+
* Used by both root AGENTS.md generation and nested AGENTS.md generation.
|
|
18
|
+
*/
|
|
19
|
+
export function resolveAllTerminology(config, profile) {
|
|
20
|
+
const terminology = {};
|
|
21
|
+
for (const key of UNIVERSAL_TERMINOLOGY_KEYS) {
|
|
22
|
+
terminology[key] = resolveTerminology(config, profile?.terminology, key);
|
|
23
|
+
}
|
|
24
|
+
if (profile?.terminology) {
|
|
25
|
+
for (const key of Object.keys(profile.terminology)) {
|
|
26
|
+
terminology[key] = resolveTerminology(config, profile.terminology, key);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return terminology;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=terminology-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminology-utils.js","sourceRoot":"","sources":["../../../src/profiles/terminology-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AAEF,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAoB,MAAM,2BAA2B,CAAC;AAGjF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAmB,EACnB,OAAiC;IAEjC,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7C,WAAW,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,WAAW,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ForgeConfig } from "./config/forge-config.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Every entry MUST be portable — it runs in any forge-bootstrapped project
|
|
4
|
+
* using only forge commands, forge bindings, and standard project files.
|
|
5
|
+
* Ecosystem-bound skills belong in project skill packs (RFC-0539), not here.
|
|
6
|
+
*/
|
|
7
|
+
export interface ForgeSkillEntry {
|
|
8
|
+
name: string;
|
|
9
|
+
category: "fo" | "shared" | "meta";
|
|
10
|
+
invocation: "user" | "model";
|
|
11
|
+
concerns: "read-only" | "document-only" | "content-mutation" | "code-mutation";
|
|
12
|
+
dependsOn: string[];
|
|
13
|
+
path: string;
|
|
14
|
+
knowledge?: string[];
|
|
15
|
+
triggers?: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A skill discovered in a project-declared skill pack (RFC-0539).
|
|
19
|
+
* Unlike ForgeSkillEntry, pack skills are discovered at runtime by scanning
|
|
20
|
+
* the pack directory rather than being statically registered.
|
|
21
|
+
*/
|
|
22
|
+
export interface PackSkillEntry {
|
|
23
|
+
name: string;
|
|
24
|
+
pack: string;
|
|
25
|
+
dir: string;
|
|
26
|
+
path: string;
|
|
27
|
+
knowledge?: string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Discover skills in project-declared skill packs by scanning each pack's
|
|
31
|
+
* directory for `<prefix>-<name>/SKILL.md` entries (RFC-0539).
|
|
32
|
+
*
|
|
33
|
+
* This is the single source of truth for pack skill discovery — used by
|
|
34
|
+
* forge.create, forge.skill.validate, forge.doctor, and forge.skill.list.
|
|
35
|
+
*/
|
|
36
|
+
export declare function discoverPackSkills(workspaceRoot: string, config: ForgeConfig): PackSkillEntry[];
|
|
37
|
+
export declare const FORGE_SKILLS: ForgeSkillEntry[];
|
|
38
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,QAAQ,EAAE,WAAW,GAAG,eAAe,GAAG,kBAAkB,GAAG,eAAe,CAAC;IAC/E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,cAAc,EAAE,CA6C/F;AAkED,eAAO,MAAM,YAAY,EAAE,eAAe,EAAqC,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Skill registry — machine-readable array of all forge skills, used by forge.skill.validate and forge.create. Also provides discoverPackSkills helper for project-declared skill packs (RFC-0539).</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not include third-party skills — only forge-managed skills belong here.</item>
|
|
6
|
+
</non-goals>
|
|
7
|
+
</MODULE_CONTRACT>
|
|
8
|
+
<CHANGE_SUMMARY>
|
|
9
|
+
<item>RFC-0374: initial ForgeSkillEntry interface and FORGE_SKILLS registry (17 migrated + 3 meta = 20).</item>
|
|
10
|
+
<item>Added fo-add-tests skill (11th fo skill) — absorbs tdd + PBT conventions from RFC-0347.</item>
|
|
11
|
+
<item>Skill consolidation: added fo-architecture, fo-handoff, fo-triage, fo-qa (15 fo skills). Removed handoff, improve-codebase-architecture, to-spec from shared (absorbed into fo-). Shared skills reduced to 4 (grilling, my-preferences, windows-ai-tooling, writing-great-skills).</item>
|
|
12
|
+
<item>Renamed skill prefix wg- → fo- across all skills, paths, and categories. Added fo-idea-status, fo-idea-i-just-want-to-see-the-plan, fo-idea-i-just-want-to-see-the-result (18 fo skills total).</item>
|
|
13
|
+
<item>Added fo-doc-audit skill (19th fo skill) — centralized documentation audit replacing inline AGENTS/README update steps in fo-fix and fo-idea-implement.</item>
|
|
14
|
+
<item>RFC-0395: added fo-spec-ingest skill (20th fo skill) — spec package ingest/authoring with validation, grilling, and acceptance gate.</item>
|
|
15
|
+
<item>Added fo-session-retro skill (21st fo skill) — session-end insight triage, categorizes discoveries and routes to AGENTS.md / ADR / DNA / forge / memory.</item>
|
|
16
|
+
<item>RFC-0523: expanded concerns enum from binary (document-only | implementation) to four-level taxonomy (read-only | document-only | content-mutation | code-mutation). All 30 skills reclassified.</item>
|
|
17
|
+
<item>RFC-0524: added optional knowledge?: string[] field for cumulative knowledge system. Added knowledge arrays to fo-site-scan and grilling.</item>
|
|
18
|
+
<item>RFC-0538: added fo-compass-annotate skill (22nd fo skill) — full-lifecycle Compass header management replacing removed compass.annotate, compass.clear, compass.markup.migrate, compass.invariant.add kernel commands.</item>
|
|
19
|
+
<item>RFC-0539: added discoverPackSkills helper and PackSkillEntry interface for project-declared skill packs. Removed mission-complete and fo-site-scan entries (relocated to warpgogol-skills as wg- pack skills).</item>
|
|
20
|
+
</CHANGE_SUMMARY>
|
|
21
|
+
*/
|
|
22
|
+
import fs from "node:fs";
|
|
23
|
+
import path from "node:path";
|
|
24
|
+
import { parse as parseYaml } from "yaml";
|
|
25
|
+
/**
|
|
26
|
+
* Discover skills in project-declared skill packs by scanning each pack's
|
|
27
|
+
* directory for `<prefix>-<name>/SKILL.md` entries (RFC-0539).
|
|
28
|
+
*
|
|
29
|
+
* This is the single source of truth for pack skill discovery — used by
|
|
30
|
+
* forge.create, forge.skill.validate, forge.doctor, and forge.skill.list.
|
|
31
|
+
*/
|
|
32
|
+
export function discoverPackSkills(workspaceRoot, config) {
|
|
33
|
+
const result = [];
|
|
34
|
+
if (!config.skillPacks)
|
|
35
|
+
return result;
|
|
36
|
+
for (const pack of config.skillPacks) {
|
|
37
|
+
const packDir = path.resolve(workspaceRoot, pack.dir);
|
|
38
|
+
if (!fs.existsSync(packDir))
|
|
39
|
+
continue;
|
|
40
|
+
const entries = fs.readdirSync(packDir, { withFileTypes: true });
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
if (!entry.isDirectory())
|
|
43
|
+
continue;
|
|
44
|
+
if (!entry.name.startsWith(`${pack.prefix}-`))
|
|
45
|
+
continue;
|
|
46
|
+
const skillMdPath = path.join(packDir, entry.name, "SKILL.md");
|
|
47
|
+
if (!fs.existsSync(skillMdPath))
|
|
48
|
+
continue;
|
|
49
|
+
const relPath = path.relative(packDir, skillMdPath).replace(/\\/g, "/");
|
|
50
|
+
const skillEntry = {
|
|
51
|
+
name: entry.name,
|
|
52
|
+
pack: pack.prefix,
|
|
53
|
+
dir: pack.dir,
|
|
54
|
+
path: relPath,
|
|
55
|
+
};
|
|
56
|
+
// Extract knowledge files from frontmatter if present
|
|
57
|
+
const content = fs.readFileSync(skillMdPath, "utf8");
|
|
58
|
+
const fmMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
59
|
+
if (fmMatch) {
|
|
60
|
+
try {
|
|
61
|
+
const fm = parseYaml(fmMatch[1]);
|
|
62
|
+
if (Array.isArray(fm["knowledge"])) {
|
|
63
|
+
skillEntry.knowledge = fm["knowledge"].filter((v) => typeof v === "string");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Frontmatter parse error — SKILL-01 will catch this in validation
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
result.push(skillEntry);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Auto-discover forge skills by scanning the skills/ directory for SKILL.md
|
|
77
|
+
* files and parsing their frontmatter. This replaces the hand-maintained
|
|
78
|
+
* FORGE_SKILLS array — the frontmatter is the single source of truth.
|
|
79
|
+
*
|
|
80
|
+
* Skills are organized as skills/{category}/{name}/SKILL.md.
|
|
81
|
+
*/
|
|
82
|
+
function discoverForgeSkills(skillsRoot) {
|
|
83
|
+
const result = [];
|
|
84
|
+
if (!fs.existsSync(skillsRoot))
|
|
85
|
+
return result;
|
|
86
|
+
for (const categoryDir of fs.readdirSync(skillsRoot, { withFileTypes: true })) {
|
|
87
|
+
if (!categoryDir.isDirectory())
|
|
88
|
+
continue;
|
|
89
|
+
const category = categoryDir.name;
|
|
90
|
+
const catDirPath = path.join(skillsRoot, category);
|
|
91
|
+
for (const skillDir of fs.readdirSync(catDirPath, { withFileTypes: true })) {
|
|
92
|
+
if (!skillDir.isDirectory())
|
|
93
|
+
continue;
|
|
94
|
+
const skillMdPath = path.join(catDirPath, skillDir.name, "SKILL.md");
|
|
95
|
+
if (!fs.existsSync(skillMdPath))
|
|
96
|
+
continue;
|
|
97
|
+
const content = fs.readFileSync(skillMdPath, "utf8");
|
|
98
|
+
const fmMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
99
|
+
if (!fmMatch)
|
|
100
|
+
continue;
|
|
101
|
+
let fm;
|
|
102
|
+
try {
|
|
103
|
+
fm = parseYaml(fmMatch[1]);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const relPath = path.relative(skillsRoot, skillMdPath).replace(/\\/g, "/");
|
|
109
|
+
result.push({
|
|
110
|
+
name: fm["name"],
|
|
111
|
+
category: fm["category"],
|
|
112
|
+
invocation: fm["invocation"],
|
|
113
|
+
concerns: fm["concerns"],
|
|
114
|
+
dependsOn: Array.isArray(fm["dependsOn"])
|
|
115
|
+
? fm["dependsOn"].filter((v) => typeof v === "string")
|
|
116
|
+
: [],
|
|
117
|
+
path: `skills/${relPath}`,
|
|
118
|
+
...(Array.isArray(fm["knowledge"])
|
|
119
|
+
? {
|
|
120
|
+
knowledge: fm["knowledge"].filter((v) => typeof v === "string"),
|
|
121
|
+
}
|
|
122
|
+
: {}),
|
|
123
|
+
...(Array.isArray(fm["triggers"])
|
|
124
|
+
? {
|
|
125
|
+
triggers: fm["triggers"].filter((v) => typeof v === "string"),
|
|
126
|
+
}
|
|
127
|
+
: {}),
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return result.sort((a, b) => a.name.localeCompare(b.name));
|
|
132
|
+
}
|
|
133
|
+
const SKILLS_ROOT = path.resolve(import.meta.dirname, "..", "skills");
|
|
134
|
+
export const FORGE_SKILLS = discoverForgeSkills(SKILLS_ROOT);
|
|
135
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const skillFrontmatterSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
description: z.ZodString;
|
|
5
|
+
invocation: z.ZodEnum<{
|
|
6
|
+
user: "user";
|
|
7
|
+
model: "model";
|
|
8
|
+
}>;
|
|
9
|
+
category: z.ZodEnum<{
|
|
10
|
+
fo: "fo";
|
|
11
|
+
shared: "shared";
|
|
12
|
+
meta: "meta";
|
|
13
|
+
}>;
|
|
14
|
+
concerns: z.ZodEnum<{
|
|
15
|
+
"read-only": "read-only";
|
|
16
|
+
"document-only": "document-only";
|
|
17
|
+
"content-mutation": "content-mutation";
|
|
18
|
+
"code-mutation": "code-mutation";
|
|
19
|
+
}>;
|
|
20
|
+
dependsOn: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
21
|
+
languagePolicy: z.ZodLiteral<"ref(PREFERENCES.md)">;
|
|
22
|
+
bindings: z.ZodOptional<z.ZodObject<{
|
|
23
|
+
requires: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
24
|
+
optional: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
25
|
+
}, z.core.$strip>>;
|
|
26
|
+
knowledge: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
27
|
+
triggers: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
export type SkillFrontmatter = z.infer<typeof skillFrontmatterSchema>;
|
|
30
|
+
//# sourceMappingURL=skill-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-schema.d.ts","sourceRoot":"","sources":["../../src/skill-schema.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Define the Zod frontmatter schema used by forge skill validation commands.</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not validate SKILL.md body content — that is handled by pattern matching in the validator.</item>
|
|
6
|
+
</non-goals>
|
|
7
|
+
</MODULE_CONTRACT>
|
|
8
|
+
<CHANGE_SUMMARY>
|
|
9
|
+
<item>RFC-0374: initial skillFrontmatterSchema with name, description, invocation, category, concerns, dependsOn, languagePolicy.</item>
|
|
10
|
+
<item>RFC-0393: added optional bindings field (requires/optional arrays of binding keys).</item>
|
|
11
|
+
<item>RFC-0523: expanded concerns enum from binary to four-level taxonomy (read-only | document-only | content-mutation | code-mutation).</item>
|
|
12
|
+
<item>RFC-0524: added optional knowledge field (array of file names relative to SKILL.md directory).</item>
|
|
13
|
+
<item>RFC-0548: added optional triggers field (array of natural-language trigger phrases, max 5 entries, each 5-100 chars) for intent-to-skill routing.</item>
|
|
14
|
+
</CHANGE_SUMMARY>
|
|
15
|
+
*/
|
|
16
|
+
import { z } from "zod";
|
|
17
|
+
export const skillFrontmatterSchema = z.object({
|
|
18
|
+
name: z.string().min(1),
|
|
19
|
+
description: z.string().min(1).max(200),
|
|
20
|
+
invocation: z.enum(["user", "model"]),
|
|
21
|
+
category: z.enum(["fo", "shared", "meta"]),
|
|
22
|
+
concerns: z.enum(["read-only", "document-only", "content-mutation", "code-mutation"]),
|
|
23
|
+
dependsOn: z.array(z.string()).default([]),
|
|
24
|
+
languagePolicy: z.literal("ref(PREFERENCES.md)"),
|
|
25
|
+
bindings: z
|
|
26
|
+
.object({
|
|
27
|
+
requires: z.array(z.string()).default([]),
|
|
28
|
+
optional: z.array(z.string()).default([]),
|
|
29
|
+
})
|
|
30
|
+
.optional(),
|
|
31
|
+
knowledge: z.array(z.string()).optional(),
|
|
32
|
+
triggers: z.array(z.string().min(5).max(100)).max(5).optional(),
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=skill-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-schema.js","sourceRoot":"","sources":["../../src/skill-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;EAcE;AAEF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;IACrF,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;IAChD,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;KAC1C,CAAC;SACD,QAAQ,EAAE;IACb,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC"}
|