@warpgogol/forge 4.1.5 → 4.2.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 +2 -1
- package/CHANGELOG.md +33 -0
- package/CONTRIBUTING.md +36 -0
- package/README.md +129 -535
- package/README.uk.md +145 -554
- package/SECURITY.md +17 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +296 -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 +153 -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 +264 -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 +201 -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 +304 -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 +81 -0
- package/dist/os/adr/types.d.ts.map +1 -0
- package/dist/os/adr/types.js +62 -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 +50 -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 +191 -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 +260 -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 +222 -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 +387 -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 +472 -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 +855 -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/forge-autonomy-validate.d.ts +18 -0
- package/dist/os/core/handlers/forge-autonomy-validate.d.ts.map +1 -0
- package/dist/os/core/handlers/forge-autonomy-validate.js +115 -0
- package/dist/os/core/handlers/forge-autonomy-validate.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 +204 -0
- package/dist/os/core/handlers/knowledge-compact.js.map +1 -0
- package/dist/os/core/handlers/package-health.d.ts +17 -0
- package/dist/os/core/handlers/package-health.d.ts.map +1 -0
- package/dist/os/core/handlers/package-health.js +217 -0
- package/dist/os/core/handlers/package-health.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/public-surface.d.ts +13 -0
- package/dist/os/core/handlers/public-surface.d.ts.map +1 -0
- package/dist/os/core/handlers/public-surface.js +148 -0
- package/dist/os/core/handlers/public-surface.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 +39 -0
- package/dist/os/core/handlers/validate.d.ts.map +1 -0
- package/dist/os/core/handlers/validate.js +241 -0
- package/dist/os/core/handlers/validate.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 +88 -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 +141 -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 +64 -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 +97 -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 +454 -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 +55 -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 +19 -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 +334 -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 +41 -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 +93 -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 +50 -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/plugin/plugin.module.d.ts +25 -0
- package/dist/os/plugin/plugin.module.d.ts.map +1 -0
- package/dist/os/plugin/plugin.module.js +212 -0
- package/dist/os/plugin/plugin.module.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 +362 -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 +328 -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 +277 -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 +170 -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 +209 -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 +438 -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 +203 -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 +452 -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 +260 -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 +80 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.js +907 -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 +134 -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 +390 -0
- package/dist/os/rfc/rfc.module.js.map +1 -0
- package/dist/os/rfc/types.d.ts +559 -0
- package/dist/os/rfc/types.d.ts.map +1 -0
- package/dist/os/rfc/types.js +118 -0
- package/dist/os/rfc/types.js.map +1 -0
- package/dist/os/rfc/verification-evidence.d.ts +15 -0
- package/dist/os/rfc/verification-evidence.d.ts.map +1 -0
- package/dist/os/rfc/verification-evidence.js +185 -0
- package/dist/os/rfc/verification-evidence.js.map +1 -0
- package/dist/os/rfc/verification-refresh.d.ts +4 -0
- package/dist/os/rfc/verification-refresh.d.ts.map +1 -0
- package/dist/os/rfc/verification-refresh.js +160 -0
- package/dist/os/rfc/verification-refresh.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/metrics-aggregate.d.ts +4 -0
- package/dist/os/session/handlers/metrics-aggregate.d.ts.map +1 -0
- package/dist/os/session/handlers/metrics-aggregate.js +183 -0
- package/dist/os/session/handlers/metrics-aggregate.js.map +1 -0
- package/dist/os/session/handlers/metrics-rfc.d.ts +4 -0
- package/dist/os/session/handlers/metrics-rfc.d.ts.map +1 -0
- package/dist/os/session/handlers/metrics-rfc.js +272 -0
- package/dist/os/session/handlers/metrics-rfc.js.map +1 -0
- package/dist/os/session/handlers/metrics-session.d.ts +9 -0
- package/dist/os/session/handlers/metrics-session.d.ts.map +1 -0
- package/dist/os/session/handlers/metrics-session.js +167 -0
- package/dist/os/session/handlers/metrics-session.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 +319 -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 +224 -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 +21 -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 +147 -0
- package/dist/os/session/session.module.js.map +1 -0
- package/dist/os/session/types.d.ts +214 -0
- package/dist/os/session/types.d.ts.map +1 -0
- package/dist/os/session/types.js +61 -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 +72 -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 +316 -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 +105 -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 +342 -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 +228 -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 +438 -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 +129 -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 +152 -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 +51 -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/handlers/workspace-deps.d.ts +12 -0
- package/dist/os/werkstatt/handlers/workspace-deps.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/workspace-deps.js +42 -0
- package/dist/os/werkstatt/handlers/workspace-deps.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 +63 -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 +262 -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 +56 -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/compass/contract-registry.d.ts +7 -0
- package/dist/src/compass/contract-registry.d.ts.map +1 -0
- package/dist/src/compass/contract-registry.js +112 -0
- package/dist/src/compass/contract-registry.js.map +1 -0
- package/dist/src/compass/types.d.ts +28 -0
- package/dist/src/compass/types.d.ts.map +1 -0
- package/dist/src/compass/types.js +14 -0
- package/dist/src/compass/types.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 +363 -0
- package/dist/src/config/forge-config.js.map +1 -0
- package/dist/src/forge-module.d.ts +29 -0
- package/dist/src/forge-module.d.ts.map +1 -0
- package/dist/src/forge-module.js +16 -0
- package/dist/src/forge-module.js.map +1 -0
- package/dist/src/index.d.ts +39 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +59 -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 +65 -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 +31 -0
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -0
- package/dist/src/onboarding/agents-generate.js +373 -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 +408 -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 +1222 -0
- package/dist/src/onboarding/doctor.js.map +1 -0
- package/dist/src/onboarding/init.d.ts +36 -0
- package/dist/src/onboarding/init.d.ts.map +1 -0
- package/dist/src/onboarding/init.js +412 -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 +179 -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 +264 -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 +123 -0
- package/dist/src/onboarding/scaffold.js.map +1 -0
- package/dist/src/onboarding/upgrade.d.ts +27 -0
- package/dist/src/onboarding/upgrade.d.ts.map +1 -0
- package/dist/src/onboarding/upgrade.js +453 -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/plugin/forge-plugin-manifest.d.ts +38 -0
- package/dist/src/plugin/forge-plugin-manifest.d.ts.map +1 -0
- package/dist/src/plugin/forge-plugin-manifest.js +52 -0
- package/dist/src/plugin/forge-plugin-manifest.js.map +1 -0
- package/dist/src/profiles/profile-schema.d.ts +361 -0
- package/dist/src/profiles/profile-schema.d.ts.map +1 -0
- package/dist/src/profiles/profile-schema.js +208 -0
- package/dist/src/profiles/profile-schema.js.map +1 -0
- package/dist/src/profiles/stack-profile.d.ts +173 -0
- package/dist/src/profiles/stack-profile.d.ts.map +1 -0
- package/dist/src/profiles/stack-profile.js +148 -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 +174 -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 +158 -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 +28 -0
- package/dist/src/utils/generated-marker.d.ts.map +1 -0
- package/dist/src/utils/generated-marker.js +138 -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/docs/concepts/governance-model.md +33 -0
- package/docs/concepts/project-contract.md +61 -0
- package/docs/concepts/why-forge.md +46 -0
- package/docs/getting-started.md +44 -0
- package/docs/guides/existing-project.md +38 -0
- package/docs/guides/rfc-adr.md +61 -0
- package/docs/guides/skills.md +60 -0
- package/docs/guides/upgrading.md +35 -0
- package/docs/maintainers/publishing.md +34 -0
- package/docs/reference/cli.md +140 -0
- package/docs/reference/forge-yaml.md +114 -0
- package/docs/reference/profiles.md +37 -0
- package/docs/reference/programmatic-api.md +79 -0
- package/os/core/core.module.ts +15 -0
- package/os/core/handlers/public-surface.ts +189 -0
- package/os/rfc/handlers/validate-rules.ts +0 -1
- package/os/rfc/verification-refresh.test.ts +15 -14
- package/os/rfc/verification-refresh.ts +1 -7
- package/os/session/handlers/metrics-session.ts +10 -9
- package/package.json +15 -7
- package/skills/fo/fo-session-retro/SKILL.md +2 -1
- package/src/tests/metrics-rfc-1053.test.ts +14 -4
- package/src/tests/public-surface.test.ts +247 -0
package/README.md
CHANGED
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
[Українська](README.uk.md) | English
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**AI can write the code. Forge keeps the project engineered.**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
A repository-native control layer for AI-assisted development. Decisions, rules, skills and verification stay with the project — independent of the agent that works on it.
|
|
8
|
+
|
|
9
|
+
[](https://www.npmjs.com/package/@warpgogol/forge) [](https://www.npmjs.com/package/@warpgogol/forge) [](https://github.com/syrokomskyi/forge/actions) [](https://nodejs.org) [](LICENSE)
|
|
8
10
|
|
|
9
11
|
---
|
|
10
12
|
|
|
11
13
|
## Start right now
|
|
12
14
|
|
|
13
|
-
Create a new folder, open it in your AI IDE (Windsurf, Cursor, or any IDE that supports AI agents), and paste this:
|
|
15
|
+
Create a new folder, open it in your AI IDE (Windsurf, Cursor, Claude Code, Codex CLI, or any IDE that supports AI agents), and paste this:
|
|
14
16
|
|
|
15
17
|
```
|
|
16
18
|
Install https://npmjs.com/package/@warpgogol/forge in this folder and set up my project. I want to build: [describe your project]
|
|
@@ -32,323 +34,133 @@ The skill asks a few simple questions in the chat, then sets everything up. Afte
|
|
|
32
34
|
|
|
33
35
|
---
|
|
34
36
|
|
|
35
|
-
##
|
|
36
|
-
|
|
37
|
-
Forge supports five kinds of projects. You pick one when you start — everything else is automatic.
|
|
38
|
-
|
|
39
|
-
| Project type | What it is | Example ideas |
|
|
40
|
-
| --- | --- | --- |
|
|
41
|
-
| **Browser game** | An interactive game that runs in a web browser — 2D, arcade, puzzle, adventure | Catch falling stars, tile-matching puzzle, platformer |
|
|
42
|
-
| **Governance / library** | A code library or governance-only project — no website, no game, no video, just structure and documentation | npm package, internal toolkit, documentation hub |
|
|
43
|
-
| **Godot game** | A desktop or mobile game built with Godot 4.x and C# — 2D, 3D, platformer, RPG | Top-down adventure, 3D platformer, puzzle game |
|
|
44
|
-
| **Knowledge system** | An evidence-backed knowledge base — structured datasets where claims are backed by registered source provenance | Game knowledge base, domain ontology, curated reference dataset |
|
|
45
|
-
| **TypeScript library** | A generic TypeScript monorepo with best-practice validators — tsconfig, import boundaries, phantom deps, package exports, strict mode, barrel safety | Internal toolkit, shared library, TypeScript monorepo |
|
|
46
|
-
|
|
47
|
-
Each project type gets its own scaffold: the right folder structure, the right dependencies, the right tools. You don't need to know what any of those are — Forge sets them up for you.
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Forge and the Werkstatt engine
|
|
52
|
-
|
|
53
|
-
Forge is the **governance layer** — skills, RFC/ADR workflows, naming conventions, spec vendoring, and the CLI. It is framework-agnostic and has zero runtime dependencies (only `yaml` + `zod`).
|
|
54
|
-
|
|
55
|
-
For full project lifecycle management — missions, releases, deployment, certification, quality checks, content codegen — Forge connects to the **Werkstatt engine** and **stack-specific plugins**. These are separate npm packages installed alongside Forge when you need runtime capabilities beyond governance.
|
|
56
|
-
|
|
57
|
-
| Package | Purpose | Required for |
|
|
58
|
-
| --- | --- | --- |
|
|
59
|
-
| [`@warpgogol/werkstatt`](https://github.com/syrokomskyi/werkstatt) | Runtime engine — missions, releases, Leitstand deployment, certification, Bordbuch, artifact store | All project types with lifecycle management |
|
|
60
|
-
| [`@warpgogol/werkstatt-shared`](https://github.com/syrokomskyi/werkstatt-shared) | Shared infrastructure — checks, integration, ontology, passport | Installed automatically with the engine |
|
|
61
|
-
| [`@warpgogol/werkstatt-phaser-game`](https://github.com/syrokomskyi/werkstatt-phaser-game) | Phaser game plugin — phaser validators, Vite build, deploy adapters | Browser game projects (`phaser-turborepo`) |
|
|
62
|
-
| [`@warpgogol/werkstatt-godot-game`](https://github.com/syrokomskyi/werkstatt-godot-game) | Godot plugin — scene validators, dotnet build, itch.io deploy, Godot skills | Godot game projects (`godot-csharp`) |
|
|
63
|
-
| [`@warpgogol/werkstatt-knowledge`](https://github.com/syrokomskyi/werkstatt-knowledge) | Knowledge plugin — source binding, canonical verification, extraction, materialization, release checks | Knowledge system projects (`knowledge-typescript-turborepo`) |
|
|
64
|
-
| [`@warpgogol/werkstatt-typescript`](https://github.com/syrokomskyi/werkstatt-typescript) | TypeScript plugin — tsconfig, import boundaries, phantom deps, package exports, strict mode, barrel validators | TypeScript TurboRepo projects (`typescript-turborepo`) |
|
|
65
|
-
|
|
66
|
-
### When you need these packages
|
|
67
|
-
|
|
68
|
-
- **Governance-only projects** (RFCs, ADRs, skills, documentation hubs) — Forge alone is sufficient.
|
|
69
|
-
- **Games, Godot projects, Knowledge systems** — install `@warpgogol/werkstatt` (the engine) plus the matching stack plugin. The `forge-bootstrap` skill configures bindings automatically; the packages themselves must be installed as devDependencies.
|
|
70
|
-
|
|
71
|
-
### Installing engine packages
|
|
72
|
-
|
|
73
|
-
```sh
|
|
74
|
-
# Browser game project
|
|
75
|
-
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-phaser-game
|
|
76
|
-
|
|
77
|
-
# Godot game project
|
|
78
|
-
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-godot-game
|
|
79
|
-
|
|
80
|
-
# Knowledge system project
|
|
81
|
-
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-knowledge
|
|
82
|
-
```
|
|
37
|
+
## Quick start (terminal)
|
|
83
38
|
|
|
84
39
|
```sh
|
|
85
|
-
|
|
86
|
-
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-typescript
|
|
40
|
+
pnpm dlx @warpgogol/forge@latest create --in-place --profile typescript-turborepo
|
|
87
41
|
```
|
|
88
42
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## Complete installation guide (from zero)
|
|
94
|
-
|
|
95
|
-
If you've never programmed before, this section takes you from a completely empty computer to a working Forge setup. Follow the steps for your operating system.
|
|
96
|
-
|
|
97
|
-
### What you need
|
|
98
|
-
|
|
99
|
-
You need two free programs:
|
|
100
|
-
|
|
101
|
-
- **Node.js** (version 24 or newer) — lets your computer run JavaScript tools.
|
|
102
|
-
- **pnpm** — the package manager Forge uses to install dependencies. It's built into Node.js and just needs to be switched on.
|
|
103
|
-
|
|
104
|
-
Both are free. You install Node.js first, then enable pnpm with a single command.
|
|
105
|
-
|
|
106
|
-
### Ubuntu
|
|
43
|
+
Then open the project in your AI IDE (Windsurf, Cursor, Claude Code, Codex CLI, or any IDE that supports AI agents) and tell the agent what you want to build.
|
|
107
44
|
|
|
108
|
-
|
|
45
|
+
One bootstrap command. After that, work through your coding agent.
|
|
109
46
|
|
|
110
|
-
|
|
47
|
+
### Stack profiles
|
|
111
48
|
|
|
112
|
-
|
|
49
|
+
Forge is project-agnostic. Stack profiles provide ready-made starting points.
|
|
113
50
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
```sh
|
|
123
|
-
node --version
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
You should see a version number like `v22.x.x`, not an error message.
|
|
127
|
-
|
|
128
|
-
#### Step 2 — Enable pnpm
|
|
129
|
-
|
|
130
|
-
Node.js includes a tool called **Corepack** that manages package managers. Enable pnpm with:
|
|
131
|
-
|
|
132
|
-
```sh
|
|
133
|
-
corepack enable pnpm
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
Verify:
|
|
51
|
+
| Profile | Use case |
|
|
52
|
+
| -------------------------------- | ----------------------------------------------------- |
|
|
53
|
+
| `forge-shell` | Governance-only projects, libraries, non-web projects |
|
|
54
|
+
| `typescript-turborepo` | TypeScript monorepo with best-practice validators |
|
|
55
|
+
| `phaser-turborepo` | Browser games, interactive experiences |
|
|
56
|
+
| `godot-csharp` | Desktop/mobile games with Godot 4.x + C# |
|
|
57
|
+
| `knowledge-typescript-turborepo` | Evidence-backed knowledge bases |
|
|
137
58
|
|
|
138
59
|
```sh
|
|
139
|
-
|
|
60
|
+
# List available profiles
|
|
61
|
+
pnpm exec forge profile.validate
|
|
140
62
|
```
|
|
141
63
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
#### Step 3 — Install an AI-powered IDE
|
|
145
|
-
|
|
146
|
-
Forge works through conversation with an AI agent. You need an IDE that supports AI agents. We recommend **Windsurf** (tested with Forge):
|
|
147
|
-
|
|
148
|
-
1. Go to [windsurf.com](https://windsurf.com) and download the Linux version.
|
|
149
|
-
2. Open the downloaded file and follow the installer.
|
|
150
|
-
3. Launch Windsurf.
|
|
151
|
-
|
|
152
|
-
You can also use **Cursor** ([cursor.com](https://cursor.com)) or any IDE that supports AI agent skills.
|
|
153
|
-
|
|
154
|
-
### Windows
|
|
155
|
-
|
|
156
|
-
#### Step 1 — Install Node.js
|
|
157
|
-
|
|
158
|
-
1. Go to [nodejs.org](https://nodejs.org) in your web browser.
|
|
159
|
-
2. Download the **LTS version** (it will say "LTS" and "Recommended for Most Users"). It should be version 22.x or newer.
|
|
160
|
-
3. Run the downloaded installer (`.msi` file). Accept all default options by clicking **Next** through each screen, then **Install**. If Windows asks for permission, click **Yes**.
|
|
161
|
-
|
|
162
|
-
4. Verify it worked. Open **PowerShell** (search for "PowerShell" in the Start menu) and type:
|
|
163
|
-
|
|
164
|
-
```sh
|
|
165
|
-
node --version
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
You should see a version number like `v22.x.x`, not an error message.
|
|
169
|
-
|
|
170
|
-
#### Step 2 — Enable pnpm
|
|
171
|
-
|
|
172
|
-
Node.js includes a tool called **Corepack** that manages package managers. Enable pnpm with:
|
|
173
|
-
|
|
174
|
-
```sh
|
|
175
|
-
corepack enable pnpm
|
|
176
|
-
```
|
|
64
|
+
---
|
|
177
65
|
|
|
178
|
-
|
|
66
|
+
## Architecture
|
|
179
67
|
|
|
180
|
-
```sh
|
|
181
|
-
pnpm --version
|
|
182
68
|
```
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
### Optional — Install Godot and .NET (only for Godot game projects)
|
|
197
|
-
|
|
198
|
-
If you're planning to create **Godot game** projects (the `godot-csharp` profile), you need two additional tools:
|
|
199
|
-
|
|
200
|
-
- **Godot 4.x** (with .NET support) — the game engine. Download it from [godotengine.org/download](https://godotengine.org/download). Make sure to choose the ".NET" version (not the standard version).
|
|
201
|
-
- **.NET SDK 8+** — the C# runtime and build tools. Download it from [dotnet.microsoft.com/download](https://dotnet.microsoft.com/download).
|
|
202
|
-
|
|
203
|
-
Verify both are installed:
|
|
204
|
-
|
|
205
|
-
```sh
|
|
206
|
-
godot --version
|
|
207
|
-
dotnet --version
|
|
69
|
+
IDE / AGENT / MODEL
|
|
70
|
+
↓
|
|
71
|
+
┌──────────────────────────────────┐
|
|
72
|
+
│ FORGE │
|
|
73
|
+
│ │
|
|
74
|
+
│ Project contract forge.yaml │
|
|
75
|
+
│ Decisions RFC / ADR │
|
|
76
|
+
│ Agent workflows Skills │
|
|
77
|
+
│ Verification Validators │
|
|
78
|
+
│ Evolution Upgrade │
|
|
79
|
+
└──────────────────────────────────┘
|
|
80
|
+
↓
|
|
81
|
+
YOUR REPOSITORY
|
|
208
82
|
```
|
|
209
83
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
- **"command not found" after installing Node.js** — Close and reopen your terminal (Ubuntu) or PowerShell (Windows). The system needs to reload the list of available commands.
|
|
213
|
-
- **"corepack: command not found"** — Your Node.js version is too old. Install Node.js 24+ using the steps above.
|
|
214
|
-
- **AI agent doesn't know about Forge** — You opened an empty folder, but the AI agent has no Forge context. Run `pnpm dlx @warpgogol/forge@latest create --in-place --profile phaser-turborepo` (or the appropriate profile) in a terminal first, then open the folder in your IDE. The `forge create` command populates the current folder with skills, configuration, and `AGENTS.md` — without it, the AI agent can't discover Forge.
|
|
84
|
+
Agents can change. Models can change. IDEs can change. Engineering rules stay with the project.
|
|
215
85
|
|
|
216
86
|
---
|
|
217
87
|
|
|
218
|
-
##
|
|
219
|
-
|
|
220
|
-
### For creative operators — one command, then just talk
|
|
221
|
-
|
|
222
|
-
You need to run one command in the terminal to create your project. After that, everything works through conversation with an AI agent — no more commands.
|
|
223
|
-
|
|
224
|
-
#### Start a new project from scratch
|
|
225
|
-
|
|
226
|
-
1. **Create a project folder and scaffold Forge in-place.** Open a terminal (PowerShell on Windows, Terminal on Ubuntu) and run:
|
|
227
|
-
|
|
228
|
-
```sh
|
|
229
|
-
mkdir my-game
|
|
230
|
-
cd my-game
|
|
231
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile phaser-turborepo
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
The project name is derived from the folder name (`my-game` in this example). You can override it with `--name`. This populates the current folder with everything Forge needs — skills, configuration, and project structure. For other project types, use a different `--profile`:
|
|
235
|
-
|
|
236
|
-
| What you want to build | Profile flag |
|
|
237
|
-
| ----------------------------------- | ------------------------------------------ |
|
|
238
|
-
| Browser game (2D, arcade, puzzle) | `--profile phaser-turborepo` |
|
|
239
|
-
| Godot game (desktop, mobile, 2D/3D) | `--profile godot-csharp` |
|
|
240
|
-
| Knowledge system (evidence-backed) | `--profile knowledge-typescript-turborepo` |
|
|
241
|
-
| TypeScript library (monorepo) | `--profile typescript-turborepo` |
|
|
242
|
-
| Library or governance-only project | `--profile forge-shell` |
|
|
243
|
-
|
|
244
|
-
2. **Open the project folder in your AI IDE.** Open the folder from step 1 in Windsurf or your preferred IDE.
|
|
245
|
-
|
|
246
|
-
3. **Tell the AI agent what you want to build.** Just type it in the chat, in your own words. For example:
|
|
247
|
-
|
|
248
|
-
> I want to build a Godot game where you catch falling stars.
|
|
249
|
-
|
|
250
|
-
Or:
|
|
251
|
-
|
|
252
|
-
> I want to make a browser game where you catch falling stars.
|
|
253
|
-
|
|
254
|
-
Or:
|
|
255
|
-
|
|
256
|
-
> I want to create a TypeScript library for calculating astrology charts.
|
|
257
|
-
|
|
258
|
-
That's it. The AI agent will do everything else:
|
|
259
|
-
- Set up the project structure based on what you described (game, library, etc.)
|
|
260
|
-
- Configure language preferences and project settings
|
|
261
|
-
- Start a live preview so you can see your work (for games)
|
|
262
|
-
- Tell you the URL to open in your browser
|
|
88
|
+
## What Forge controls
|
|
263
89
|
|
|
264
|
-
|
|
90
|
+
| Plane | What it governs |
|
|
91
|
+
| ------------------ | -------------------------------------------------- |
|
|
92
|
+
| **Intent** | RFCs, architectural DNA, acceptance criteria |
|
|
93
|
+
| **Decisions** | ADRs, decision logs, traceability |
|
|
94
|
+
| **Agent behavior** | Repository-local skills and workflows |
|
|
95
|
+
| **Verification** | Doctor, validators, contracts, deterministic gates |
|
|
96
|
+
| **Evolution** | Profiles, vendored specs, additive upgrades |
|
|
265
97
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
5. **Create together.** From here on, you just talk. Want a different color? Want to add a scene? Want to add a new function to your library? Just say it. The agent handles all the technical work.
|
|
269
|
-
|
|
270
|
-
#### Bring an existing project into Forge
|
|
271
|
-
|
|
272
|
-
If you already have a project somewhere else and want to move it into Forge:
|
|
98
|
+
---
|
|
273
99
|
|
|
274
|
-
|
|
100
|
+
## Without Forge / With Forge
|
|
275
101
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
102
|
+
| AI development without Forge | With Forge |
|
|
103
|
+
| ------------------------------------- | ------------------------------------------------ |
|
|
104
|
+
| Rules live in prompts | Rules live in the repository |
|
|
105
|
+
| Architecture is implicit | Decisions become RFCs and ADRs |
|
|
106
|
+
| Agent behavior depends on the session | Project-local skills define repeatable workflows |
|
|
107
|
+
| "Done" means the agent says so | Validators provide deterministic checks |
|
|
108
|
+
| New agent starts from zero | Project contract travels with the code |
|
|
109
|
+
| Upgrades risk overwriting decisions | Upgrade is additive and idempotent |
|
|
110
|
+
| Tool-specific conventions | Agent- and IDE-independent project layer |
|
|
281
111
|
|
|
282
|
-
|
|
112
|
+
---
|
|
283
113
|
|
|
284
|
-
|
|
114
|
+
## Forge IS / Forge IS NOT
|
|
285
115
|
|
|
286
|
-
|
|
116
|
+
**Forge IS**
|
|
287
117
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
- Verify everything builds correctly
|
|
293
|
-
- Start a live preview (for visual project types)
|
|
118
|
+
- A repository-native governance layer
|
|
119
|
+
- Agent-independent project infrastructure
|
|
120
|
+
- A deterministic complement to probabilistic AI agents
|
|
121
|
+
- A portable project contract
|
|
294
122
|
|
|
295
|
-
|
|
123
|
+
**Forge IS NOT**
|
|
296
124
|
|
|
297
|
-
|
|
125
|
+
- Another AI model
|
|
126
|
+
- Another coding agent
|
|
127
|
+
- An IDE
|
|
128
|
+
- A hosted platform
|
|
129
|
+
- A replacement for Git
|
|
130
|
+
- A magic "vibe coding" wrapper
|
|
298
131
|
|
|
299
132
|
---
|
|
300
133
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
#### Create a new project (in-place)
|
|
304
|
-
|
|
305
|
-
```sh
|
|
306
|
-
# Create a project folder, then scaffold Forge in-place
|
|
307
|
-
# pnpm dlx downloads Forge temporarily — no global install needed
|
|
308
|
-
mkdir my-project
|
|
309
|
-
cd my-project
|
|
310
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile forge-shell
|
|
134
|
+
## What you get
|
|
311
135
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
136
|
+
- **37 skills** — idea-to-RFC pipeline, grilling, preferences, skill authoring
|
|
137
|
+
- **RFC workflow** — create, validate, list, graph, archive, acceptance probes
|
|
138
|
+
- **ADR workflow** — lightweight architectural decision records
|
|
139
|
+
- **Spec vendoring** — vendor external specs as immutable snapshots
|
|
140
|
+
- **Naming conventions** — kebab-case linting
|
|
141
|
+
- **Workflow linting** — validate `.agents/workflows/` frontmatter
|
|
142
|
+
- **Stack scaffolding** — pnpm + Turborepo monorepo from a profile
|
|
143
|
+
- **Bindings contract** — de-hardcode project-specific commands via `forge.yaml`
|
|
144
|
+
- **Doctor** — project health check
|
|
145
|
+
- **Upgrade** — additive, idempotent skill and config sync
|
|
315
146
|
|
|
316
|
-
|
|
317
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile godot-csharp
|
|
147
|
+
---
|
|
318
148
|
|
|
319
|
-
|
|
320
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile knowledge-typescript-turborepo
|
|
149
|
+
## Working with your AI agent
|
|
321
150
|
|
|
322
|
-
|
|
323
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile typescript-turborepo
|
|
151
|
+
Forge works with any AI agent — Windsurf, Cursor, Claude Code, Codex CLI, or any IDE that supports agent skills. The setup is the same; only the conversation matters.
|
|
324
152
|
|
|
325
|
-
|
|
326
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile forge-shell --name my-custom-name
|
|
327
|
-
```
|
|
153
|
+
**Start with questions, not commands.** Before asking the agent to write code, ask it about the codebase. The agent can read files, search git history, and run Forge CLI commands — let it explore first.
|
|
328
154
|
|
|
329
|
-
|
|
155
|
+
**Describe results, not steps.** Tell the agent what you want, not how to do it. For complex work, ask the agent to plan first and wait for your approval.
|
|
330
156
|
|
|
331
|
-
|
|
157
|
+
**Let the agent verify its own work.** Give criteria for "done" and let the agent check itself: "Run the tests after you're done." "Validate the RFC before committing." "Check project health with `forge doctor`."
|
|
332
158
|
|
|
333
|
-
|
|
159
|
+
**AGENTS.md is your project's persistent memory.** Forge generates `AGENTS.md` files that the agent reads at the start of every session. Put build commands, code style, architecture decisions, and "do X, not Y" rules there.
|
|
334
160
|
|
|
335
|
-
|
|
336
|
-
# 1. Create a new empty Forge project (in-place)
|
|
337
|
-
mkdir my-project && cd my-project
|
|
338
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile forge-shell
|
|
339
|
-
|
|
340
|
-
# 2. Open the project in Windsurf (tested with forge) or your preferred IDE
|
|
341
|
-
|
|
342
|
-
# 3. Run the /forge-bootstrap skill and choose "transplant" mode
|
|
343
|
-
# The skill will:
|
|
344
|
-
# - Ask for the path to your existing codebase
|
|
345
|
-
# - Detect the stack automatically (Phaser, Godot, etc.)
|
|
346
|
-
# - Migrate all files (including .env and git-ignored files)
|
|
347
|
-
# - Optionally transfer git history
|
|
348
|
-
# - Verify the build
|
|
349
|
-
```
|
|
161
|
+
---
|
|
350
162
|
|
|
351
|
-
|
|
163
|
+
## CLI
|
|
352
164
|
|
|
353
165
|
```sh
|
|
354
166
|
# Check project health
|
|
@@ -359,250 +171,21 @@ pnpm exec forge rfc.validate
|
|
|
359
171
|
|
|
360
172
|
# List available skills
|
|
361
173
|
pnpm exec forge skill.list
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
---
|
|
365
|
-
|
|
366
|
-
## Working with your AI agent
|
|
367
|
-
|
|
368
|
-
Forge works with any AI agent — Windsurf, Cursor, Claude Code, Codex CLI, or any IDE that supports agent skills. The setup is the same; only the conversation matters. Here are the patterns that make the biggest difference.
|
|
369
|
-
|
|
370
|
-
### Start with questions, not commands
|
|
371
|
-
|
|
372
|
-
The single most effective habit: before asking the agent to write code, ask it about the codebase. The agent can read files, search git history, and run Forge CLI commands — let it explore first.
|
|
373
|
-
|
|
374
|
-
Good questions to start a session:
|
|
375
|
-
|
|
376
|
-
- "How is this project structured?"
|
|
377
|
-
- "What skills are available and what do they do?"
|
|
378
|
-
- "Walk me through the RFC workflow in this project."
|
|
379
|
-
- "What did we change this week?" (the agent reads git log)
|
|
380
|
-
- "Why does this function have 15 parameters? Check git history."
|
|
381
|
-
|
|
382
|
-
This works for onboarding too — new team members can get up to speed by asking the agent questions instead of reading code manually. The agent reads everything locally; nothing is uploaded or trained on.
|
|
383
|
-
|
|
384
|
-
### AGENTS.md — your project's persistent memory
|
|
385
|
-
|
|
386
|
-
Forge generates `AGENTS.md` files at the project root and in each workspace directory. The agent reads them automatically at the start of every session — think of them as instructions that survive between conversations.
|
|
387
|
-
|
|
388
|
-
**What to put in AGENTS.md:**
|
|
389
|
-
|
|
390
|
-
- Build and test commands (`pnpm test`, `pnpm run build:check`)
|
|
391
|
-
- Code style conventions ("use 2 spaces, not tabs")
|
|
392
|
-
- Architecture decisions ("the game package owns all scene logic")
|
|
393
|
-
- "Do X, not Y" rules ("use `resolveImage()` for all image props, never raw `src`")
|
|
394
|
-
- Common mistakes to avoid
|
|
395
|
-
|
|
396
|
-
**When the agent makes a mistake**, tell it to update AGENTS.md so it doesn't repeat the error. Over time, AGENTS.md accumulates the team's hard-won knowledge.
|
|
397
|
-
|
|
398
|
-
Forge generates AGENTS.md from `forge.yaml` via `forge.agents.generate`. Hand-written AGENTS.md files (without the generated marker) are preserved. Generated ones are regenerated when you run `forge upgrade` or `forge.agents.generate` — so put your custom rules in `forge.yaml` or in a hand-written AGENTS.md, not in a generated one.
|
|
399
|
-
|
|
400
|
-
### Describe results, not steps
|
|
401
|
-
|
|
402
|
-
The agent is an autonomous worker, not a typewriter. Tell it what you want, not how to do it.
|
|
403
|
-
|
|
404
|
-
**Bad** (over-specified):
|
|
405
|
-
|
|
406
|
-
> Open src/game/player.ts, add a function called calculateScore that takes a number array, sum it, return the result. Then open src/game/player.test.ts and add a test.
|
|
407
|
-
|
|
408
|
-
**Good** (result-oriented):
|
|
409
|
-
|
|
410
|
-
> Add a scoring system that calculates total points from collected items.
|
|
411
|
-
|
|
412
|
-
For complex work, ask the agent to plan first:
|
|
413
|
-
|
|
414
|
-
> I want to add a multiplayer mode. Make a plan first, show it to me, and wait for my approval before implementing.
|
|
415
|
-
|
|
416
|
-
Forge's `/fo-idea` skill formalizes this: idea → audit → plan → implement → review. You can invoke it explicitly, or the agent will follow the pattern when the task is complex enough.
|
|
417
|
-
|
|
418
|
-
### Let the agent explore
|
|
419
|
-
|
|
420
|
-
Don't over-explain. The agent knows how to read files, search code, check git history, and run commands. Instead of pointing it to specific files, describe what you want to understand or change:
|
|
421
|
-
|
|
422
|
-
**Instead of:** "Look in the src/game folder for player.ts and check if it has a move function."
|
|
423
|
-
|
|
424
|
-
**Say:** "How does player movement work?"
|
|
425
|
-
|
|
426
|
-
The agent will find the relevant files, trace the call chain, and explain it back to you. If it needs more context, it will ask.
|
|
427
|
-
|
|
428
|
-
### Parallel work
|
|
429
|
-
|
|
430
|
-
You can run multiple agent sessions simultaneously — in separate IDE windows, terminal tabs, or git worktrees. Each session works independently.
|
|
431
|
-
|
|
432
|
-
This is useful for:
|
|
433
|
-
|
|
434
|
-
- Writing an RFC in one session while implementing a different feature in another
|
|
435
|
-
- Exploring two design approaches in parallel before committing to one
|
|
436
|
-
- Running a long validation in one session while continuing work in another
|
|
437
|
-
|
|
438
|
-
If you use the Werkstatt engine, its mission system keeps work isolated — each mission has its own workpiece directory, so parallel sessions don't conflict.
|
|
439
|
-
|
|
440
|
-
### Let the agent verify its own work
|
|
441
|
-
|
|
442
|
-
Give the agent criteria for "done" and let it check itself:
|
|
443
|
-
|
|
444
|
-
- "Run the tests after you're done."
|
|
445
|
-
- "Validate the RFC before committing."
|
|
446
|
-
- "Check project health with `forge doctor`."
|
|
447
|
-
|
|
448
|
-
Forge provides the tools — `forge doctor`, `forge rfc.validate`, `forge skill.list`, test runners. Tell the agent to use them. The agent can run commands, read the output, and fix issues without your intervention.
|
|
449
|
-
|
|
450
|
-
---
|
|
451
|
-
|
|
452
|
-
## Skill packs
|
|
453
|
-
|
|
454
|
-
Skill packs let you create project-local skills under your own prefix, separate from Forge's portable `fo-` skills. This is useful when your project has domain-specific workflows that don't belong in Forge's portable skill set.
|
|
455
|
-
|
|
456
|
-
### Declaring a pack
|
|
457
|
-
|
|
458
|
-
Add a `skillPacks` entry to `forge.yaml`:
|
|
459
|
-
|
|
460
|
-
```yaml
|
|
461
|
-
skillPacks:
|
|
462
|
-
- prefix: wg
|
|
463
|
-
dir: packages/my-skills/skills
|
|
464
|
-
```
|
|
465
|
-
|
|
466
|
-
- `prefix` — short identifier used as a skill name prefix (e.g. `wg-deploy`, `wg-content-check`). Cannot be `fo` (reserved for Forge).
|
|
467
|
-
- `dir` — directory containing your pack skills. Each skill is a subdirectory with a `SKILL.md` file.
|
|
468
|
-
|
|
469
|
-
### Pack manifest (`forge.plugin.yaml`)
|
|
470
|
-
|
|
471
|
-
Each pack directory must contain a `forge.plugin.yaml` manifest:
|
|
472
|
-
|
|
473
|
-
```yaml
|
|
474
|
-
id: my-pack
|
|
475
|
-
version: 1.0.0
|
|
476
|
-
```
|
|
477
|
-
|
|
478
|
-
- `id` — kebab-case identifier for the pack.
|
|
479
|
-
- `version` — semver version string.
|
|
480
|
-
|
|
481
|
-
`forge init` auto-creates this manifest if it's missing. You can also create it manually.
|
|
482
|
-
|
|
483
|
-
### Skill structure
|
|
484
|
-
|
|
485
|
-
Skills follow the same structure as Forge skills:
|
|
486
|
-
|
|
487
|
-
```
|
|
488
|
-
packages/my-skills/skills/
|
|
489
|
-
forge.plugin.yaml # pack manifest
|
|
490
|
-
wg-deploy/
|
|
491
|
-
SKILL.md # skill definition with frontmatter
|
|
492
|
-
wg-content-check/
|
|
493
|
-
SKILL.md
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
Each `SKILL.md` has standardized frontmatter (name, description, category, concerns, dependsOn) — the same format as Forge's `fo-` skills.
|
|
497
|
-
|
|
498
|
-
### Validation commands
|
|
499
|
-
|
|
500
|
-
```sh
|
|
501
|
-
# Validate all pack manifests
|
|
502
|
-
pnpm exec forge plugin.validate
|
|
503
|
-
|
|
504
|
-
# List discovered packs
|
|
505
|
-
pnpm exec forge plugin.discover
|
|
506
|
-
|
|
507
|
-
# Validate individual skills (including pack skills)
|
|
508
|
-
pnpm exec forge skill.validate
|
|
509
|
-
|
|
510
|
-
# List all skills (pack skills annotated with pack:<prefix>)
|
|
511
|
-
pnpm exec forge skill.list
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
### Extension points (Compass contract blocks)
|
|
515
|
-
|
|
516
|
-
Packs can declare custom Compass contract blocks — source-file markers that `compass.validate` enforces. This lets your pack define its own `<MY_CONTRACT>` blocks with required tags:
|
|
517
|
-
|
|
518
|
-
```yaml
|
|
519
|
-
id: my-pack
|
|
520
|
-
version: 1.0.0
|
|
521
|
-
extensionPoints:
|
|
522
|
-
compass:
|
|
523
|
-
contract:
|
|
524
|
-
blocks:
|
|
525
|
-
- blockId: api-contract
|
|
526
|
-
requiredFor:
|
|
527
|
-
- "packages/my-pack/**/*.ts"
|
|
528
|
-
requiredTags:
|
|
529
|
-
- name: purpose
|
|
530
|
-
minWords: 3
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
`compass.validate` will emit `COMPASS-PLUGIN-01` (missing block), `COMPASS-PLUGIN-02` (missing required tag), and `COMPASS-PLUGIN-03` (tag below minWords) for files matching `requiredFor` that don't carry the block.
|
|
534
|
-
|
|
535
|
-
### Rules
|
|
536
|
-
|
|
537
|
-
- Pack skill names must start with the pack prefix (e.g. `wg-deploy` for prefix `wg`).
|
|
538
|
-
- Pack skills cannot use the `fo-` prefix (reserved for Forge).
|
|
539
|
-
- Pack skills cannot reference platform RFC/ADR ids or platform names.
|
|
540
|
-
- Pack skills may depend on Forge skills, but Forge skills may not depend on pack skills (preserves portability).
|
|
541
|
-
- If a pack skill name conflicts with a Forge skill name, the pack skill is skipped during sync.
|
|
542
|
-
|
|
543
|
-
---
|
|
544
|
-
|
|
545
|
-
## Stack profiles
|
|
546
|
-
|
|
547
|
-
A stack profile defines the project scaffold: directory structure, dependencies, CI config, and first workspace. Choose a profile with `--profile` when creating a new project.
|
|
548
|
-
|
|
549
|
-
| Profile | Project type | Description | First workspace | Use case |
|
|
550
|
-
| --- | --- | --- | --- | --- |
|
|
551
|
-
| `forge-shell` | Governance / library | Minimal Forge shell (default) | — | Governance-only projects, libraries, non-web projects |
|
|
552
|
-
| `phaser-turborepo` | Browser game | Phaser + TypeScript + pnpm + Turborepo | `games/my-game` | Browser games, interactive experiences |
|
|
553
|
-
| `godot-csharp` | Godot game | Godot 4.x + C# + pnpm + Turborepo | `games/my-game` | Desktop/mobile games, Godot-based interactive projects |
|
|
554
|
-
| `knowledge-typescript-turborepo` | Knowledge system | TypeScript + pnpm + Turborepo | `knowledge/my-kb` | Evidence-backed knowledge bases, structured datasets with source provenance |
|
|
555
|
-
| `typescript-turborepo` | TypeScript library | TypeScript + pnpm + Turborepo | — | Generic TypeScript TurboRepo monorepo with best-practice validators |
|
|
556
|
-
|
|
557
|
-
```sh
|
|
558
|
-
# List available profiles (after install)
|
|
559
|
-
pnpm exec forge profile.validate
|
|
560
|
-
```
|
|
561
|
-
|
|
562
|
-
When you bring an existing project through the `/forge-bootstrap` transplant mode, Forge detects the matching profile automatically by checking for marker files (`phaser.config.*`, `project.godot`, etc.).
|
|
563
|
-
|
|
564
|
-
## Upgrade flow
|
|
565
|
-
|
|
566
|
-
When a new version of `@warpgogol/forge` is published, consumers upgrade additively:
|
|
567
|
-
|
|
568
|
-
```sh
|
|
569
|
-
# 1. Update Forge to the latest version (local devDependency)
|
|
570
|
-
pnpm update @warpgogol/forge
|
|
571
174
|
|
|
572
|
-
#
|
|
175
|
+
# Sync skills and config from installed version
|
|
573
176
|
pnpm exec forge upgrade
|
|
574
177
|
|
|
575
|
-
#
|
|
576
|
-
pnpm exec forge
|
|
178
|
+
# Validate public surface consistency
|
|
179
|
+
pnpm exec forge public-surface.validate
|
|
577
180
|
```
|
|
578
181
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
## What forge gives you
|
|
582
|
-
|
|
583
|
-
- **37 skills** (fo-pipeline, grilling, preferences, skill authoring) — deployed to `.agents/skills/` by `forge create`
|
|
584
|
-
- **RFC workflow** — create, validate, list, graph, archive, acceptance probes, decision logs, DNA trace
|
|
585
|
-
- **ADR workflow** — lightweight architectural decision records
|
|
586
|
-
- **Spec vendoring** — vendor external spec packages as immutable snapshots with integrity manifests
|
|
587
|
-
- **Naming conventions** — kebab-case linting
|
|
588
|
-
- **Workflow linting** — validate `.agents/workflows/` frontmatter and references
|
|
589
|
-
- **Stack scaffolding** — scaffold a new pnpm + Turborepo monorepo from a profile
|
|
590
|
-
- **Bindings contract** — de-hardcode project-specific commands/paths from skills via `forge.yaml`
|
|
591
|
-
|
|
592
|
-
## Lifecycle
|
|
593
|
-
|
|
594
|
-
The typical forge project lifecycle:
|
|
182
|
+
Full CLI reference: [docs/reference/cli.md](docs/reference/cli.md)
|
|
595
183
|
|
|
596
|
-
|
|
597
|
-
2. **IDE** — open the project in Windsurf (tested with forge) or your preferred IDE
|
|
598
|
-
3. **Bootstrap** — run `/forge-bootstrap` to configure the project interactively. The skill supports two modes:
|
|
599
|
-
- **Greenfield** — start a new project from scratch: pick a stack, fill in bindings, init git
|
|
600
|
-
- **Transplant** — bring an existing codebase into Forge: detect the stack, migrate code (including git-ignored files like `.env`), optionally transfer git history, verify the build
|
|
601
|
-
4. **Upgrade** — when a new `@warpgogol/forge` version is published, run `pnpm exec forge upgrade` to sync skills and binding defaults additively
|
|
184
|
+
---
|
|
602
185
|
|
|
603
186
|
## forge.yaml
|
|
604
187
|
|
|
605
|
-
The single source of truth for project configuration
|
|
188
|
+
The single source of truth for project configuration:
|
|
606
189
|
|
|
607
190
|
```yaml
|
|
608
191
|
schema: forge/config@1
|
|
@@ -626,6 +209,10 @@ bindings:
|
|
|
626
209
|
invariants: DNA
|
|
627
210
|
```
|
|
628
211
|
|
|
212
|
+
Full reference: [docs/reference/forge-yaml.md](docs/reference/forge-yaml.md)
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
629
216
|
## Programmatic API
|
|
630
217
|
|
|
631
218
|
```ts
|
|
@@ -637,52 +224,59 @@ import {
|
|
|
637
224
|
FORGE_SKILLS,
|
|
638
225
|
} from "@warpgogol/forge";
|
|
639
226
|
|
|
640
|
-
// Load config
|
|
641
227
|
const config = loadForgeConfig(process.cwd());
|
|
642
|
-
|
|
643
|
-
// Resolve a binding
|
|
644
228
|
const cmd = resolveBinding(config, "commands.validateRfc", { id: "RFC-0001" });
|
|
645
229
|
|
|
646
|
-
// Register modules in your own registry
|
|
647
230
|
const registry = /* your ForgeModuleRegistry */;
|
|
648
231
|
await forgeCoreModule.register(registry);
|
|
649
232
|
await forgeRfcModule.register(registry);
|
|
650
233
|
```
|
|
651
234
|
|
|
235
|
+
Full API reference: [docs/reference/programmatic-api.md](docs/reference/programmatic-api.md)
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
652
239
|
## Architecture
|
|
653
240
|
|
|
654
241
|
| Directory | Purpose |
|
|
655
242
|
| --- | --- |
|
|
656
243
|
| `src/` | Portable core — types, config, skills registry, validators, onboarding. Zero `@warpgogol/*` imports. |
|
|
657
|
-
| `os/` | ForgeModule registrations. `compass` and `werkstatt` are fully autonomous
|
|
244
|
+
| `os/` | ForgeModule registrations. `compass` and `werkstatt` are fully autonomous — all handlers inlined. |
|
|
658
245
|
| `bin/` | CLI entrypoint (`forge` command). |
|
|
659
246
|
| `skills/` | 37 skill definitions (29 fo + 5 shared + 3 meta) with SKILL.md frontmatter. |
|
|
660
247
|
| `profiles/` | Stack profiles for `scaffold`. |
|
|
661
248
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
This package is published to the npm registry as `@warpgogol/forge`. Publishing is automated via GitHub Actions CI.
|
|
665
|
-
|
|
666
|
-
### How it works
|
|
249
|
+
---
|
|
667
250
|
|
|
668
|
-
|
|
669
|
-
2. [`@warpgogol/repo-extract`](https://github.com/syrokomskyi/repo-extract) extracts the package into the standalone [syrokomskyi/forge](https://github.com/syrokomskyi/forge) repository, flattening it to repo root and stripping workspace dependencies.
|
|
670
|
-
3. The generated GitHub Actions CI workflow (`.github/workflows/ci.yml`) runs on every push to `main`: lint → typecheck → build → test → `npm publish --provenance --access public`.
|
|
671
|
-
4. The `NPM_TOKEN` secret must be set in the [repository settings](https://github.com/syrokomskyi/forge/settings/secrets/actions).
|
|
251
|
+
## Upgrade flow
|
|
672
252
|
|
|
673
|
-
|
|
253
|
+
```sh
|
|
254
|
+
pnpm update @warpgogol/forge
|
|
255
|
+
pnpm exec forge upgrade
|
|
256
|
+
pnpm exec forge doctor
|
|
257
|
+
```
|
|
674
258
|
|
|
675
|
-
|
|
259
|
+
`forge upgrade` is additive — it never overwrites operator-set bindings, never deletes files, and is idempotent. Use `--dry-run` to preview changes.
|
|
676
260
|
|
|
677
|
-
|
|
678
|
-
# 1. Bump the version in packages/forge/package.json
|
|
679
|
-
# 2. Run the extraction (extracts + commits + pushes to github.com:syrokomskyi/forge.git)
|
|
680
|
-
pnpm exec repo-extract --config packages/forge/extract.config.yaml --verbose
|
|
261
|
+
---
|
|
681
262
|
|
|
682
|
-
|
|
683
|
-
|
|
263
|
+
## Documentation
|
|
264
|
+
|
|
265
|
+
- [Getting started](docs/getting-started.md)
|
|
266
|
+
- [Why Forge?](docs/concepts/why-forge.md)
|
|
267
|
+
- [Project contract](docs/concepts/project-contract.md)
|
|
268
|
+
- [Governance model](docs/concepts/governance-model.md)
|
|
269
|
+
- [Bring an existing project](docs/guides/existing-project.md)
|
|
270
|
+
- [Upgrading](docs/guides/upgrading.md)
|
|
271
|
+
- [Skills](docs/guides/skills.md)
|
|
272
|
+
- [RFC and ADR workflows](docs/guides/rfc-adr.md)
|
|
273
|
+
- [CLI reference](docs/reference/cli.md)
|
|
274
|
+
- [forge.yaml reference](docs/reference/forge-yaml.md)
|
|
275
|
+
- [Profiles](docs/reference/profiles.md)
|
|
276
|
+
- [Programmatic API](docs/reference/programmatic-api.md)
|
|
277
|
+
- [Publishing](docs/maintainers/publishing.md)
|
|
684
278
|
|
|
685
|
-
|
|
279
|
+
---
|
|
686
280
|
|
|
687
281
|
## License
|
|
688
282
|
|