@warpgogol/forge 4.1.6 → 4.2.2
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 +130 -534
- package/README.uk.md +146 -553
- 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/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,19 @@
|
|
|
2
2
|
|
|
3
3
|
[Українська](README.uk.md) | English
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**AI can write the code. Forge keeps the project engineered.**
|
|
6
|
+
|
|
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.
|
|
6
8
|
|
|
7
9
|
> Engineered at [Warpgogol](https://warpgogol.com) · Released as open source.
|
|
8
10
|
|
|
11
|
+
[](https://www.npmjs.com/package/@warpgogol/forge) [](https://www.npmjs.com/package/@warpgogol/forge) [](https://github.com/syrokomskyi/forge/actions) [](https://nodejs.org) [](LICENSE)
|
|
12
|
+
|
|
9
13
|
---
|
|
10
14
|
|
|
11
15
|
## Start right now
|
|
12
16
|
|
|
13
|
-
Create a new folder, open it in your AI IDE (Windsurf, Cursor, or any IDE that supports AI agents), and paste this:
|
|
17
|
+
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
18
|
|
|
15
19
|
```
|
|
16
20
|
Install https://npmjs.com/package/@warpgogol/forge in this folder and set up my project. I want to build: [describe your project]
|
|
@@ -32,323 +36,133 @@ The skill asks a few simple questions in the chat, then sets everything up. Afte
|
|
|
32
36
|
|
|
33
37
|
---
|
|
34
38
|
|
|
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
|
|
39
|
+
## Quick start (terminal)
|
|
72
40
|
|
|
73
41
|
```sh
|
|
74
|
-
|
|
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
|
-
```
|
|
83
|
-
|
|
84
|
-
```sh
|
|
85
|
-
# TypeScript TurboRepo project
|
|
86
|
-
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-typescript
|
|
42
|
+
pnpm dlx @warpgogol/forge@latest create --in-place --profile typescript-turborepo
|
|
87
43
|
```
|
|
88
44
|
|
|
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
|
|
45
|
+
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
46
|
|
|
108
|
-
|
|
47
|
+
One bootstrap command. After that, work through your coding agent.
|
|
109
48
|
|
|
110
|
-
|
|
49
|
+
### Stack profiles
|
|
111
50
|
|
|
112
|
-
|
|
51
|
+
Forge is project-agnostic. Stack profiles provide ready-made starting points.
|
|
113
52
|
|
|
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:
|
|
53
|
+
| Profile | Use case |
|
|
54
|
+
| -------------------------------- | ----------------------------------------------------- |
|
|
55
|
+
| `forge-shell` | Governance-only projects, libraries, non-web projects |
|
|
56
|
+
| `typescript-turborepo` | TypeScript monorepo with best-practice validators |
|
|
57
|
+
| `phaser-turborepo` | Browser games, interactive experiences |
|
|
58
|
+
| `godot-csharp` | Desktop/mobile games with Godot 4.x + C# |
|
|
59
|
+
| `knowledge-typescript-turborepo` | Evidence-backed knowledge bases |
|
|
137
60
|
|
|
138
61
|
```sh
|
|
139
|
-
|
|
62
|
+
# List available profiles
|
|
63
|
+
pnpm exec forge profile.validate
|
|
140
64
|
```
|
|
141
65
|
|
|
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
|
|
66
|
+
---
|
|
171
67
|
|
|
172
|
-
|
|
68
|
+
## Architecture
|
|
173
69
|
|
|
174
|
-
```sh
|
|
175
|
-
corepack enable pnpm
|
|
176
70
|
```
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
71
|
+
IDE / AGENT / MODEL
|
|
72
|
+
↓
|
|
73
|
+
┌──────────────────────────────────┐
|
|
74
|
+
│ FORGE │
|
|
75
|
+
│ │
|
|
76
|
+
│ Project contract forge.yaml │
|
|
77
|
+
│ Decisions RFC / ADR │
|
|
78
|
+
│ Agent workflows Skills │
|
|
79
|
+
│ Verification Validators │
|
|
80
|
+
│ Evolution Upgrade │
|
|
81
|
+
└──────────────────────────────────┘
|
|
82
|
+
↓
|
|
83
|
+
YOUR REPOSITORY
|
|
182
84
|
```
|
|
183
85
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
#### Step 3 — Install an AI-powered IDE
|
|
187
|
-
|
|
188
|
-
Forge works through conversation with an AI agent. You need an IDE that supports AI agents. We recommend **Windsurf** (tested with Forge):
|
|
189
|
-
|
|
190
|
-
1. Go to [windsurf.com](https://windsurf.com) and download the Windows version.
|
|
191
|
-
2. Run the downloaded installer and follow the setup wizard.
|
|
192
|
-
3. Launch Windsurf.
|
|
193
|
-
|
|
194
|
-
You can also use **Cursor** ([cursor.com](https://cursor.com)) or any IDE that supports AI agent skills.
|
|
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
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Troubleshooting
|
|
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.
|
|
86
|
+
Agents can change. Models can change. IDEs can change. Engineering rules stay with the project.
|
|
215
87
|
|
|
216
88
|
---
|
|
217
89
|
|
|
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
|
|
90
|
+
## What Forge controls
|
|
263
91
|
|
|
264
|
-
|
|
92
|
+
| Plane | What it governs |
|
|
93
|
+
| ------------------ | -------------------------------------------------- |
|
|
94
|
+
| **Intent** | RFCs, architectural DNA, acceptance criteria |
|
|
95
|
+
| **Decisions** | ADRs, decision logs, traceability |
|
|
96
|
+
| **Agent behavior** | Repository-local skills and workflows |
|
|
97
|
+
| **Verification** | Doctor, validators, contracts, deterministic gates |
|
|
98
|
+
| **Evolution** | Profiles, vendored specs, additive upgrades |
|
|
265
99
|
|
|
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:
|
|
100
|
+
---
|
|
273
101
|
|
|
274
|
-
|
|
102
|
+
## Without Forge / With Forge
|
|
275
103
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
104
|
+
| AI development without Forge | With Forge |
|
|
105
|
+
| ------------------------------------- | ------------------------------------------------ |
|
|
106
|
+
| Rules live in prompts | Rules live in the repository |
|
|
107
|
+
| Architecture is implicit | Decisions become RFCs and ADRs |
|
|
108
|
+
| Agent behavior depends on the session | Project-local skills define repeatable workflows |
|
|
109
|
+
| "Done" means the agent says so | Validators provide deterministic checks |
|
|
110
|
+
| New agent starts from zero | Project contract travels with the code |
|
|
111
|
+
| Upgrades risk overwriting decisions | Upgrade is additive and idempotent |
|
|
112
|
+
| Tool-specific conventions | Agent- and IDE-independent project layer |
|
|
281
113
|
|
|
282
|
-
|
|
114
|
+
---
|
|
283
115
|
|
|
284
|
-
|
|
116
|
+
## Forge IS / Forge IS NOT
|
|
285
117
|
|
|
286
|
-
|
|
118
|
+
**Forge IS**
|
|
287
119
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
- Verify everything builds correctly
|
|
293
|
-
- Start a live preview (for visual project types)
|
|
120
|
+
- A repository-native governance layer
|
|
121
|
+
- Agent-independent project infrastructure
|
|
122
|
+
- A deterministic complement to probabilistic AI agents
|
|
123
|
+
- A portable project contract
|
|
294
124
|
|
|
295
|
-
|
|
125
|
+
**Forge IS NOT**
|
|
296
126
|
|
|
297
|
-
|
|
127
|
+
- Another AI model
|
|
128
|
+
- Another coding agent
|
|
129
|
+
- An IDE
|
|
130
|
+
- A hosted platform
|
|
131
|
+
- A replacement for Git
|
|
132
|
+
- A magic "vibe coding" wrapper
|
|
298
133
|
|
|
299
134
|
---
|
|
300
135
|
|
|
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
|
|
136
|
+
## What you get
|
|
311
137
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
138
|
+
- **37 skills** — idea-to-RFC pipeline, grilling, preferences, skill authoring
|
|
139
|
+
- **RFC workflow** — create, validate, list, graph, archive, acceptance probes
|
|
140
|
+
- **ADR workflow** — lightweight architectural decision records
|
|
141
|
+
- **Spec vendoring** — vendor external specs as immutable snapshots
|
|
142
|
+
- **Naming conventions** — kebab-case linting
|
|
143
|
+
- **Workflow linting** — validate `.agents/workflows/` frontmatter
|
|
144
|
+
- **Stack scaffolding** — pnpm + Turborepo monorepo from a profile
|
|
145
|
+
- **Bindings contract** — de-hardcode project-specific commands via `forge.yaml`
|
|
146
|
+
- **Doctor** — project health check
|
|
147
|
+
- **Upgrade** — additive, idempotent skill and config sync
|
|
315
148
|
|
|
316
|
-
|
|
317
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile godot-csharp
|
|
149
|
+
---
|
|
318
150
|
|
|
319
|
-
|
|
320
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile knowledge-typescript-turborepo
|
|
151
|
+
## Working with your AI agent
|
|
321
152
|
|
|
322
|
-
|
|
323
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile typescript-turborepo
|
|
153
|
+
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
154
|
|
|
325
|
-
|
|
326
|
-
pnpm dlx @warpgogol/forge@latest create --in-place --profile forge-shell --name my-custom-name
|
|
327
|
-
```
|
|
155
|
+
**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
156
|
|
|
329
|
-
|
|
157
|
+
**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
158
|
|
|
331
|
-
|
|
159
|
+
**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
160
|
|
|
333
|
-
|
|
161
|
+
**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
162
|
|
|
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
|
-
```
|
|
163
|
+
---
|
|
350
164
|
|
|
351
|
-
|
|
165
|
+
## CLI
|
|
352
166
|
|
|
353
167
|
```sh
|
|
354
168
|
# Check project health
|
|
@@ -359,250 +173,21 @@ pnpm exec forge rfc.validate
|
|
|
359
173
|
|
|
360
174
|
# List available skills
|
|
361
175
|
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
176
|
|
|
384
|
-
|
|
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
|
-
|
|
572
|
-
# 2. Sync skills and binding defaults from the installed version
|
|
177
|
+
# Sync skills and config from installed version
|
|
573
178
|
pnpm exec forge upgrade
|
|
574
179
|
|
|
575
|
-
#
|
|
576
|
-
pnpm exec forge
|
|
180
|
+
# Validate public surface consistency
|
|
181
|
+
pnpm exec forge public-surface.validate
|
|
577
182
|
```
|
|
578
183
|
|
|
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:
|
|
184
|
+
Full CLI reference: [docs/reference/cli.md](docs/reference/cli.md)
|
|
595
185
|
|
|
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
|
|
186
|
+
---
|
|
602
187
|
|
|
603
188
|
## forge.yaml
|
|
604
189
|
|
|
605
|
-
The single source of truth for project configuration
|
|
190
|
+
The single source of truth for project configuration:
|
|
606
191
|
|
|
607
192
|
```yaml
|
|
608
193
|
schema: forge/config@1
|
|
@@ -626,6 +211,10 @@ bindings:
|
|
|
626
211
|
invariants: DNA
|
|
627
212
|
```
|
|
628
213
|
|
|
214
|
+
Full reference: [docs/reference/forge-yaml.md](docs/reference/forge-yaml.md)
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
629
218
|
## Programmatic API
|
|
630
219
|
|
|
631
220
|
```ts
|
|
@@ -637,52 +226,59 @@ import {
|
|
|
637
226
|
FORGE_SKILLS,
|
|
638
227
|
} from "@warpgogol/forge";
|
|
639
228
|
|
|
640
|
-
// Load config
|
|
641
229
|
const config = loadForgeConfig(process.cwd());
|
|
642
|
-
|
|
643
|
-
// Resolve a binding
|
|
644
230
|
const cmd = resolveBinding(config, "commands.validateRfc", { id: "RFC-0001" });
|
|
645
231
|
|
|
646
|
-
// Register modules in your own registry
|
|
647
232
|
const registry = /* your ForgeModuleRegistry */;
|
|
648
233
|
await forgeCoreModule.register(registry);
|
|
649
234
|
await forgeRfcModule.register(registry);
|
|
650
235
|
```
|
|
651
236
|
|
|
237
|
+
Full API reference: [docs/reference/programmatic-api.md](docs/reference/programmatic-api.md)
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
652
241
|
## Architecture
|
|
653
242
|
|
|
654
243
|
| Directory | Purpose |
|
|
655
244
|
| --- | --- |
|
|
656
245
|
| `src/` | Portable core — types, config, skills registry, validators, onboarding. Zero `@warpgogol/*` imports. |
|
|
657
|
-
| `os/` | ForgeModule registrations. `compass` and `werkstatt` are fully autonomous
|
|
246
|
+
| `os/` | ForgeModule registrations. `compass` and `werkstatt` are fully autonomous — all handlers inlined. |
|
|
658
247
|
| `bin/` | CLI entrypoint (`forge` command). |
|
|
659
248
|
| `skills/` | 37 skill definitions (29 fo + 5 shared + 3 meta) with SKILL.md frontmatter. |
|
|
660
249
|
| `profiles/` | Stack profiles for `scaffold`. |
|
|
661
250
|
|
|
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
|
|
251
|
+
---
|
|
667
252
|
|
|
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).
|
|
253
|
+
## Upgrade flow
|
|
672
254
|
|
|
673
|
-
|
|
255
|
+
```sh
|
|
256
|
+
pnpm update @warpgogol/forge
|
|
257
|
+
pnpm exec forge upgrade
|
|
258
|
+
pnpm exec forge doctor
|
|
259
|
+
```
|
|
674
260
|
|
|
675
|
-
|
|
261
|
+
`forge upgrade` is additive — it never overwrites operator-set bindings, never deletes files, and is idempotent. Use `--dry-run` to preview changes.
|
|
676
262
|
|
|
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
|
|
263
|
+
---
|
|
681
264
|
|
|
682
|
-
|
|
683
|
-
|
|
265
|
+
## Documentation
|
|
266
|
+
|
|
267
|
+
- [Getting started](docs/getting-started.md)
|
|
268
|
+
- [Why Forge?](docs/concepts/why-forge.md)
|
|
269
|
+
- [Project contract](docs/concepts/project-contract.md)
|
|
270
|
+
- [Governance model](docs/concepts/governance-model.md)
|
|
271
|
+
- [Bring an existing project](docs/guides/existing-project.md)
|
|
272
|
+
- [Upgrading](docs/guides/upgrading.md)
|
|
273
|
+
- [Skills](docs/guides/skills.md)
|
|
274
|
+
- [RFC and ADR workflows](docs/guides/rfc-adr.md)
|
|
275
|
+
- [CLI reference](docs/reference/cli.md)
|
|
276
|
+
- [forge.yaml reference](docs/reference/forge-yaml.md)
|
|
277
|
+
- [Profiles](docs/reference/profiles.md)
|
|
278
|
+
- [Programmatic API](docs/reference/programmatic-api.md)
|
|
279
|
+
- [Publishing](docs/maintainers/publishing.md)
|
|
684
280
|
|
|
685
|
-
|
|
281
|
+
---
|
|
686
282
|
|
|
687
283
|
## License
|
|
688
284
|
|