@warpgogol/forge 5.2.4 → 5.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.uk.md +8 -8
- package/bin/cli.ts +25 -33
- package/dist/bin/cli.js +21 -32
- package/dist/bin/cli.js.map +1 -1
- package/dist/os/adr/adr.module.d.ts.map +1 -1
- package/dist/os/adr/adr.module.js +8 -3
- package/dist/os/adr/adr.module.js.map +1 -1
- package/dist/os/adr/frontmatter-io.js +5 -5
- package/dist/os/adr/frontmatter-io.js.map +1 -1
- package/dist/os/adr/handlers/archive.d.ts.map +1 -1
- package/dist/os/adr/handlers/archive.js +10 -4
- package/dist/os/adr/handlers/archive.js.map +1 -1
- package/dist/os/adr/handlers/implement-stamp.d.ts.map +1 -1
- package/dist/os/adr/handlers/implement-stamp.js +10 -10
- package/dist/os/adr/handlers/implement-stamp.js.map +1 -1
- package/dist/os/adr/handlers/list-create.js +5 -5
- package/dist/os/adr/handlers/list-create.js.map +1 -1
- package/dist/os/adr/handlers/validate.js +1 -1
- package/dist/os/adr/handlers/validate.js.map +1 -1
- package/dist/os/audit/audit.module.js +3 -3
- package/dist/os/audit/audit.module.js.map +1 -1
- package/dist/os/audit/frontmatter-io.js +5 -5
- package/dist/os/audit/frontmatter-io.js.map +1 -1
- package/dist/os/audit/handlers/archive.d.ts.map +1 -1
- package/dist/os/audit/handlers/archive.js +10 -4
- package/dist/os/audit/handlers/archive.js.map +1 -1
- package/dist/os/compass/compass.module.d.ts.map +1 -1
- package/dist/os/compass/compass.module.js +17 -1
- package/dist/os/compass/compass.module.js.map +1 -1
- package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-audit-handler.js +12 -5
- package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -1
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-change-summary-handler.js +3 -2
- package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -1
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-inventory-handler.js +6 -4
- package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -1
- package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-inventory.js +10 -8
- package/dist/os/compass/handlers/compass-inventory.js.map +1 -1
- package/dist/os/compass/handlers/compass-migrate-handler.js +1 -1
- package/dist/os/compass/handlers/compass-migrate-handler.js.map +1 -1
- package/dist/os/compass/handlers/compass-migrate.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-migrate.js +6 -3
- package/dist/os/compass/handlers/compass-migrate.js.map +1 -1
- package/dist/os/compass/handlers/git-revision.d.ts.map +1 -1
- package/dist/os/compass/handlers/git-revision.js +9 -6
- package/dist/os/compass/handlers/git-revision.js.map +1 -1
- package/dist/os/compass/handlers/resolve-scan-root.js +1 -1
- package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -1
- package/dist/os/compass/handlers/summary-record.d.ts.map +1 -1
- package/dist/os/compass/handlers/summary-record.js +8 -4
- package/dist/os/compass/handlers/summary-record.js.map +1 -1
- package/dist/os/core/core.module.d.ts.map +1 -1
- package/dist/os/core/core.module.js +43 -4
- package/dist/os/core/core.module.js.map +1 -1
- package/dist/os/core/handlers/assets-helpers.d.ts.map +1 -1
- package/dist/os/core/handlers/assets-helpers.js +6 -3
- package/dist/os/core/handlers/assets-helpers.js.map +1 -1
- package/dist/os/core/handlers/build.js +1 -1
- package/dist/os/core/handlers/build.js.map +1 -1
- package/dist/os/core/handlers/determinism-check.d.ts.map +1 -1
- package/dist/os/core/handlers/determinism-check.js +10 -6
- package/dist/os/core/handlers/determinism-check.js.map +1 -1
- package/dist/os/core/handlers/dev.js +1 -1
- package/dist/os/core/handlers/dev.js.map +1 -1
- package/dist/os/core/handlers/file-size-lint.d.ts.map +1 -1
- package/dist/os/core/handlers/file-size-lint.js +11 -7
- package/dist/os/core/handlers/file-size-lint.js.map +1 -1
- package/dist/os/core/handlers/forge-autonomy-validate.d.ts.map +1 -1
- package/dist/os/core/handlers/forge-autonomy-validate.js +9 -5
- package/dist/os/core/handlers/forge-autonomy-validate.js.map +1 -1
- package/dist/os/core/handlers/knowledge-compact.js +1 -1
- package/dist/os/core/handlers/knowledge-compact.js.map +1 -1
- package/dist/os/core/handlers/package-health.js +1 -1
- package/dist/os/core/handlers/package-health.js.map +1 -1
- package/dist/os/core/handlers/pinned-check.js +2 -2
- package/dist/os/core/handlers/pinned-check.js.map +1 -1
- package/dist/os/core/handlers/pinned-init.d.ts.map +1 -1
- package/dist/os/core/handlers/pinned-init.js +9 -8
- package/dist/os/core/handlers/pinned-init.js.map +1 -1
- package/dist/os/core/handlers/pinned-validate.js +3 -3
- package/dist/os/core/handlers/pinned-validate.js.map +1 -1
- package/dist/os/core/handlers/profile-resolve.js +1 -1
- package/dist/os/core/handlers/profile-resolve.js.map +1 -1
- package/dist/os/core/handlers/public-surface.js +1 -1
- package/dist/os/core/handlers/public-surface.js.map +1 -1
- package/dist/os/core/handlers/release-prepare.d.ts.map +1 -1
- package/dist/os/core/handlers/release-prepare.js +10 -6
- package/dist/os/core/handlers/release-prepare.js.map +1 -1
- package/dist/os/core/handlers/release-publish.js +6 -6
- package/dist/os/core/handlers/release-publish.js.map +1 -1
- package/dist/os/core/handlers/validate.js +1 -1
- package/dist/os/core/handlers/validate.js.map +1 -1
- package/dist/os/exploration/exploration.module.d.ts.map +1 -1
- package/dist/os/exploration/exploration.module.js +1 -0
- package/dist/os/exploration/exploration.module.js.map +1 -1
- package/dist/os/exploration/frontmatter-io.js +4 -4
- package/dist/os/exploration/frontmatter-io.js.map +1 -1
- package/dist/os/exploration/handlers/archive.js +3 -3
- package/dist/os/exploration/handlers/archive.js.map +1 -1
- package/dist/os/mission/handlers/archive.d.ts.map +1 -1
- package/dist/os/mission/handlers/archive.js +44 -23
- package/dist/os/mission/handlers/archive.js.map +1 -1
- package/dist/os/mission/mission.module.js +3 -3
- package/dist/os/mission/mission.module.js.map +1 -1
- package/dist/os/naming/naming-convention.d.ts.map +1 -1
- package/dist/os/naming/naming-convention.js +7 -3
- package/dist/os/naming/naming-convention.js.map +1 -1
- package/dist/os/naming/naming.module.d.ts.map +1 -1
- package/dist/os/naming/naming.module.js +4 -3
- package/dist/os/naming/naming.module.js.map +1 -1
- package/dist/os/notes/notes.module.d.ts.map +1 -1
- package/dist/os/notes/notes.module.js +6 -3
- package/dist/os/notes/notes.module.js.map +1 -1
- package/dist/os/plan/frontmatter-io.js +5 -5
- package/dist/os/plan/frontmatter-io.js.map +1 -1
- package/dist/os/plan/handlers/archive.d.ts.map +1 -1
- package/dist/os/plan/handlers/archive.js +10 -4
- package/dist/os/plan/handlers/archive.js.map +1 -1
- package/dist/os/plan/plan.module.js +3 -3
- package/dist/os/plan/plan.module.js.map +1 -1
- package/dist/os/plugin/plugin.module.d.ts.map +1 -1
- package/dist/os/plugin/plugin.module.js +6 -3
- package/dist/os/plugin/plugin.module.js.map +1 -1
- package/dist/os/program/discovery.js +2 -2
- package/dist/os/program/discovery.js.map +1 -1
- package/dist/os/program/handlers/complete.js +1 -1
- package/dist/os/program/handlers/complete.js.map +1 -1
- package/dist/os/program/handlers/lease.js +1 -1
- package/dist/os/program/handlers/lease.js.map +1 -1
- package/dist/os/program/handlers/seal.js +1 -1
- package/dist/os/program/handlers/seal.js.map +1 -1
- package/dist/os/program/lease.js +1 -1
- package/dist/os/program/lease.js.map +1 -1
- package/dist/os/program/program.module.d.ts.map +1 -1
- package/dist/os/program/program.module.js +9 -3
- package/dist/os/program/program.module.js.map +1 -1
- package/dist/os/queue/index.js +1 -1
- package/dist/os/queue/manifest.d.ts.map +1 -1
- package/dist/os/queue/manifest.js +4 -8
- package/dist/os/queue/manifest.js.map +1 -1
- package/dist/os/rfc/acceptance.d.ts.map +1 -1
- package/dist/os/rfc/acceptance.js +10 -6
- package/dist/os/rfc/acceptance.js.map +1 -1
- package/dist/os/rfc/decision-log.d.ts.map +1 -1
- package/dist/os/rfc/decision-log.js +4 -3
- package/dist/os/rfc/decision-log.js.map +1 -1
- package/dist/os/rfc/dna-trace.d.ts.map +1 -1
- package/dist/os/rfc/dna-trace.js +7 -2
- package/dist/os/rfc/dna-trace.js.map +1 -1
- package/dist/os/rfc/frontmatter-io.js +5 -5
- package/dist/os/rfc/frontmatter-io.js.map +1 -1
- package/dist/os/rfc/handlers/archive.d.ts.map +1 -1
- package/dist/os/rfc/handlers/archive.js +11 -5
- package/dist/os/rfc/handlers/archive.js.map +1 -1
- package/dist/os/rfc/handlers/check.d.ts.map +1 -1
- package/dist/os/rfc/handlers/check.js +6 -3
- package/dist/os/rfc/handlers/check.js.map +1 -1
- package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -1
- package/dist/os/rfc/handlers/implement-stamp.js +11 -10
- package/dist/os/rfc/handlers/implement-stamp.js.map +1 -1
- package/dist/os/rfc/handlers/index-graph.js +3 -3
- package/dist/os/rfc/handlers/index-graph.js.map +1 -1
- package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -1
- package/dist/os/rfc/handlers/lifecycle.js +6 -2
- package/dist/os/rfc/handlers/lifecycle.js.map +1 -1
- package/dist/os/rfc/handlers/list-create.d.ts.map +1 -1
- package/dist/os/rfc/handlers/list-create.js +7 -6
- package/dist/os/rfc/handlers/list-create.js.map +1 -1
- package/dist/os/rfc/handlers/shared.js +3 -3
- package/dist/os/rfc/handlers/shared.js.map +1 -1
- package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -1
- package/dist/os/rfc/handlers/supersede-propose.js +7 -3
- package/dist/os/rfc/handlers/supersede-propose.js.map +1 -1
- package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -1
- package/dist/os/rfc/handlers/validate-rules.js +8 -5
- package/dist/os/rfc/handlers/validate-rules.js.map +1 -1
- package/dist/os/rfc/handlers/validate.d.ts.map +1 -1
- package/dist/os/rfc/handlers/validate.js +6 -1
- package/dist/os/rfc/handlers/validate.js.map +1 -1
- package/dist/os/rfc/rfc.module.d.ts.map +1 -1
- package/dist/os/rfc/rfc.module.js +44 -4
- package/dist/os/rfc/rfc.module.js.map +1 -1
- package/dist/os/rfc/verification-evidence.d.ts.map +1 -1
- package/dist/os/rfc/verification-evidence.js +9 -5
- package/dist/os/rfc/verification-evidence.js.map +1 -1
- package/dist/os/rfc/verification-refresh.d.ts.map +1 -1
- package/dist/os/rfc/verification-refresh.js +4 -3
- package/dist/os/rfc/verification-refresh.js.map +1 -1
- package/dist/os/session/frontmatter-io.js +12 -12
- package/dist/os/session/frontmatter-io.js.map +1 -1
- package/dist/os/session/handlers/archive.d.ts.map +1 -1
- package/dist/os/session/handlers/archive.js +10 -4
- package/dist/os/session/handlers/archive.js.map +1 -1
- package/dist/os/session/handlers/metrics-aggregate.d.ts.map +1 -1
- package/dist/os/session/handlers/metrics-aggregate.js +9 -5
- package/dist/os/session/handlers/metrics-aggregate.js.map +1 -1
- package/dist/os/session/handlers/metrics-rfc.d.ts.map +1 -1
- package/dist/os/session/handlers/metrics-rfc.js +11 -8
- package/dist/os/session/handlers/metrics-rfc.js.map +1 -1
- package/dist/os/session/handlers/metrics-session.d.ts.map +1 -1
- package/dist/os/session/handlers/metrics-session.js +6 -3
- package/dist/os/session/handlers/metrics-session.js.map +1 -1
- package/dist/os/session/handlers/save.d.ts.map +1 -1
- package/dist/os/session/handlers/save.js +14 -8
- package/dist/os/session/handlers/save.js.map +1 -1
- package/dist/os/session/session.module.d.ts.map +1 -1
- package/dist/os/session/session.module.js +6 -0
- package/dist/os/session/session.module.js.map +1 -1
- package/dist/os/spec/live-spec-list.js +4 -4
- package/dist/os/spec/live-spec-list.js.map +1 -1
- package/dist/os/spec/live-spec-merge.js +5 -5
- package/dist/os/spec/live-spec-merge.js.map +1 -1
- package/dist/os/spec/live-spec-show.js +3 -3
- package/dist/os/spec/live-spec-show.js.map +1 -1
- package/dist/os/spec/live-spec-validate.js +4 -4
- package/dist/os/spec/live-spec-validate.js.map +1 -1
- package/dist/os/spec/spec-materialize.js +9 -9
- package/dist/os/spec/spec-materialize.js.map +1 -1
- package/dist/os/spec/spec-status.js +9 -9
- package/dist/os/spec/spec-status.js.map +1 -1
- package/dist/os/spec/spec-validate.js +7 -7
- package/dist/os/spec/spec-validate.js.map +1 -1
- package/dist/os/spec/spec.module.d.ts.map +1 -1
- package/dist/os/spec/spec.module.js +8 -0
- package/dist/os/spec/spec.module.js.map +1 -1
- package/dist/os/werkstatt/handlers/lock.js +16 -16
- package/dist/os/werkstatt/handlers/lock.js.map +1 -1
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +3 -3
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -1
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +1 -1
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +3 -2
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +1 -1
- package/dist/os/werkstatt/handlers/workspace-deps.d.ts.map +1 -1
- package/dist/os/werkstatt/handlers/workspace-deps.js +0 -1
- package/dist/os/werkstatt/handlers/workspace-deps.js.map +1 -1
- package/dist/os/werkstatt/werkstatt.module.d.ts.map +1 -1
- package/dist/os/werkstatt/werkstatt.module.js +6 -2
- package/dist/os/werkstatt/werkstatt.module.js.map +1 -1
- package/dist/os/workflow/handlers.d.ts.map +1 -1
- package/dist/os/workflow/handlers.js +8 -5
- package/dist/os/workflow/handlers.js.map +1 -1
- package/dist/os/workflow/workflow.module.d.ts.map +1 -1
- package/dist/os/workflow/workflow.module.js +6 -3
- package/dist/os/workflow/workflow.module.js.map +1 -1
- package/dist/src/cli-flags.d.ts +28 -0
- package/dist/src/cli-flags.d.ts.map +1 -0
- package/dist/src/cli-flags.js +232 -0
- package/dist/src/cli-flags.js.map +1 -0
- package/dist/src/compass/contract-registry.js +1 -1
- package/dist/src/compass/contract-registry.js.map +1 -1
- package/dist/src/config/forge-config.d.ts +1 -1
- package/dist/src/config/forge-config.js +1 -1
- package/dist/src/config/forge-config.js.map +1 -1
- package/dist/src/knowledge/budgets.js +1 -1
- package/dist/src/knowledge/budgets.js.map +1 -1
- package/dist/src/knowledge/compact.js +1 -1
- package/dist/src/knowledge/compact.js.map +1 -1
- package/dist/src/knowledge/parse.js +1 -1
- package/dist/src/knowledge/parse.js.map +1 -1
- package/dist/src/knowledge/sync.d.ts.map +1 -1
- package/dist/src/knowledge/sync.js +3 -5
- package/dist/src/knowledge/sync.js.map +1 -1
- package/dist/src/migration-adapters/git-utils.js +2 -2
- package/dist/src/migration-adapters/git-utils.js.map +1 -1
- package/dist/src/migration-adapters/ignored-files.js +2 -2
- package/dist/src/migration-adapters/ignored-files.js.map +1 -1
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js +1 -1
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +1 -1
- package/dist/src/migration-adapters/phaser-pnpm/index.js +1 -1
- package/dist/src/migration-adapters/phaser-pnpm/index.js.map +1 -1
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -1
- package/dist/src/onboarding/agents-generate.js +76 -34
- package/dist/src/onboarding/agents-generate.js.map +1 -1
- package/dist/src/onboarding/create.d.ts.map +1 -1
- package/dist/src/onboarding/create.js +10 -10
- package/dist/src/onboarding/create.js.map +1 -1
- package/dist/src/onboarding/doctor.d.ts.map +1 -1
- package/dist/src/onboarding/doctor.js +68 -59
- package/dist/src/onboarding/doctor.js.map +1 -1
- package/dist/src/onboarding/init.d.ts.map +1 -1
- package/dist/src/onboarding/init.js +30 -1
- package/dist/src/onboarding/init.js.map +1 -1
- package/dist/src/onboarding/invariant-engine.js +1 -1
- package/dist/src/onboarding/invariant-engine.js.map +1 -1
- package/dist/src/onboarding/memory-compact.d.ts.map +1 -1
- package/dist/src/onboarding/memory-compact.js +5 -4
- package/dist/src/onboarding/memory-compact.js.map +1 -1
- package/dist/src/onboarding/memory-scaffold.js +1 -1
- package/dist/src/onboarding/memory-scaffold.js.map +1 -1
- package/dist/src/onboarding/nested-agents-generate.d.ts +4 -1
- package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -1
- package/dist/src/onboarding/nested-agents-generate.js +34 -5
- package/dist/src/onboarding/nested-agents-generate.js.map +1 -1
- package/dist/src/onboarding/nested-agents-templates.d.ts.map +1 -1
- package/dist/src/onboarding/nested-agents-templates.js +8 -12
- package/dist/src/onboarding/nested-agents-templates.js.map +1 -1
- package/dist/src/onboarding/npm-token-check.js +2 -2
- package/dist/src/onboarding/npm-token-check.js.map +1 -1
- package/dist/src/onboarding/prettierignore.d.ts +29 -0
- package/dist/src/onboarding/prettierignore.d.ts.map +1 -0
- package/dist/src/onboarding/prettierignore.js +231 -0
- package/dist/src/onboarding/prettierignore.js.map +1 -0
- package/dist/src/onboarding/profile-validate.d.ts.map +1 -1
- package/dist/src/onboarding/profile-validate.js +5 -4
- package/dist/src/onboarding/profile-validate.js.map +1 -1
- package/dist/src/onboarding/scaffold-project.d.ts.map +1 -1
- package/dist/src/onboarding/scaffold-project.js +35 -27
- package/dist/src/onboarding/scaffold-project.js.map +1 -1
- package/dist/src/onboarding/scaffold.js +1 -1
- package/dist/src/onboarding/scaffold.js.map +1 -1
- package/dist/src/onboarding/skill-markers.d.ts +27 -0
- package/dist/src/onboarding/skill-markers.d.ts.map +1 -0
- package/dist/src/onboarding/skill-markers.js +131 -0
- package/dist/src/onboarding/skill-markers.js.map +1 -0
- package/dist/src/onboarding/upgrade.d.ts +10 -0
- package/dist/src/onboarding/upgrade.d.ts.map +1 -1
- package/dist/src/onboarding/upgrade.js +215 -74
- package/dist/src/onboarding/upgrade.js.map +1 -1
- package/dist/src/onboarding/workspace-discovery.js +1 -1
- package/dist/src/onboarding/workspace-discovery.js.map +1 -1
- package/dist/src/pipeline-status.d.ts +6 -5
- package/dist/src/pipeline-status.d.ts.map +1 -1
- package/dist/src/pipeline-status.js +24 -19
- package/dist/src/pipeline-status.js.map +1 -1
- package/dist/src/profiles/stack-profile.js +1 -1
- package/dist/src/profiles/stack-profile.js.map +1 -1
- package/dist/src/registry.d.ts +1 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +3 -3
- package/dist/src/registry.js.map +1 -1
- package/dist/src/skill-schema.d.ts +1 -1
- package/dist/src/skill-schema.d.ts.map +1 -1
- package/dist/src/skill-schema.js +4 -1
- package/dist/src/skill-schema.js.map +1 -1
- package/dist/src/types.d.ts +116 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/editable-region.d.ts +46 -0
- package/dist/src/utils/editable-region.d.ts.map +1 -0
- package/dist/src/utils/editable-region.js +125 -0
- package/dist/src/utils/editable-region.js.map +1 -0
- package/dist/src/utils/fs-idempotent.d.ts +2 -1
- package/dist/src/utils/fs-idempotent.d.ts.map +1 -1
- package/dist/src/utils/fs-idempotent.js +11 -7
- package/dist/src/utils/fs-idempotent.js.map +1 -1
- package/dist/src/utils/generated-marker.d.ts +17 -0
- package/dist/src/utils/generated-marker.d.ts.map +1 -1
- package/dist/src/utils/generated-marker.js +29 -1
- package/dist/src/utils/generated-marker.js.map +1 -1
- package/dist/src/utils/index.d.ts +3 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +3 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/io.d.ts +9 -0
- package/dist/src/utils/io.d.ts.map +1 -0
- package/dist/src/utils/io.js +130 -0
- package/dist/src/utils/io.js.map +1 -0
- package/dist/src/utils/markdown-table.d.ts +21 -0
- package/dist/src/utils/markdown-table.d.ts.map +1 -0
- package/dist/src/utils/markdown-table.js +116 -0
- package/dist/src/utils/markdown-table.js.map +1 -0
- package/dist/src/utils/sync-fs.d.ts +5 -0
- package/dist/src/utils/sync-fs.d.ts.map +1 -0
- package/dist/src/utils/sync-fs.js +26 -0
- package/dist/src/utils/sync-fs.js.map +1 -0
- package/dist/src/validators/note-frontmatter-validate.js +1 -1
- package/dist/src/validators/note-frontmatter-validate.js.map +1 -1
- package/dist/src/validators/note-link-validate.js +1 -1
- package/dist/src/validators/note-link-validate.js.map +1 -1
- package/dist/src/validators/note-orphan-detect.js +1 -1
- package/dist/src/validators/note-orphan-detect.js.map +1 -1
- package/dist/src/validators/port-validate.js +1 -1
- package/dist/src/validators/port-validate.js.map +1 -1
- package/dist/src/validators/skill-validate.d.ts.map +1 -1
- package/dist/src/validators/skill-validate.js +34 -13
- package/dist/src/validators/skill-validate.js.map +1 -1
- package/os/adr/adr.module.ts +136 -132
- package/os/adr/frontmatter-io.ts +5 -5
- package/os/adr/handlers/archive.ts +8 -4
- package/os/adr/handlers/implement-stamp.ts +14 -10
- package/os/adr/handlers/list-create.ts +5 -5
- package/os/adr/handlers/validate.ts +1 -1
- package/os/audit/audit.module.ts +33 -34
- package/os/audit/frontmatter-io.ts +5 -5
- package/os/audit/handlers/archive.ts +8 -4
- package/os/compass/compass.module.ts +17 -1
- package/os/compass/handlers/compass-audit-handler.ts +13 -5
- package/os/compass/handlers/compass-change-summary-handler.ts +4 -2
- package/os/compass/handlers/compass-inventory-handler.ts +7 -4
- package/os/compass/handlers/compass-inventory.ts +11 -8
- package/os/compass/handlers/compass-migrate-handler.ts +1 -1
- package/os/compass/handlers/compass-migrate.ts +7 -3
- package/os/compass/handlers/git-revision.ts +11 -6
- package/os/compass/handlers/resolve-scan-root.ts +1 -1
- package/os/compass/handlers/summary-record.ts +10 -4
- package/os/compass/handlers/tests/compass-audit-plan.test.ts +2 -1
- package/os/core/core.module.ts +43 -4
- package/os/core/handlers/assets-helpers.ts +7 -3
- package/os/core/handlers/build.ts +1 -1
- package/os/core/handlers/determinism-check.ts +12 -6
- package/os/core/handlers/dev.ts +1 -1
- package/os/core/handlers/file-size-lint.ts +16 -9
- package/os/core/handlers/forge-autonomy-validate.ts +10 -5
- package/os/core/handlers/knowledge-compact.ts +1 -1
- package/os/core/handlers/package-health.ts +1 -1
- package/os/core/handlers/pinned-check.ts +2 -2
- package/os/core/handlers/pinned-init.ts +9 -8
- package/os/core/handlers/pinned-validate.ts +3 -3
- package/os/core/handlers/profile-resolve.ts +1 -1
- package/os/core/handlers/public-surface.ts +1 -1
- package/os/core/handlers/release-prepare.ts +11 -6
- package/os/core/handlers/release-publish.ts +6 -6
- package/os/core/handlers/validate.ts +1 -1
- package/os/exploration/exploration.module.ts +1 -0
- package/os/exploration/frontmatter-io.ts +4 -4
- package/os/exploration/handlers/archive.ts +3 -3
- package/os/mission/handlers/archive.test.ts +38 -1
- package/os/mission/handlers/archive.ts +54 -23
- package/os/mission/mission.module.ts +38 -39
- package/os/naming/naming-convention.ts +9 -3
- package/os/naming/naming.module.ts +25 -25
- package/os/notes/notes.module.ts +87 -85
- package/os/plan/frontmatter-io.ts +5 -5
- package/os/plan/handlers/archive.ts +8 -4
- package/os/plan/plan.module.ts +33 -34
- package/os/plugin/plugin.module.ts +8 -6
- package/os/program/discovery.ts +2 -2
- package/os/program/handlers/complete.ts +1 -1
- package/os/program/handlers/lease.ts +1 -1
- package/os/program/handlers/seal.ts +1 -1
- package/os/program/lease.ts +1 -1
- package/os/program/program.module.ts +198 -193
- package/os/queue/index.ts +1 -1
- package/os/queue/manifest.ts +10 -9
- package/os/queue/queue-validate.test.ts +6 -15
- package/os/rfc/acceptance.ts +12 -6
- package/os/rfc/decision-log.ts +4 -3
- package/os/rfc/dna-trace.ts +8 -2
- package/os/rfc/frontmatter-io.ts +5 -5
- package/os/rfc/handlers/archive.ts +9 -5
- package/os/rfc/handlers/check.ts +5 -3
- package/os/rfc/handlers/implement-stamp.ts +15 -10
- package/os/rfc/handlers/index-graph.ts +3 -3
- package/os/rfc/handlers/lifecycle.ts +7 -2
- package/os/rfc/handlers/list-create.ts +7 -6
- package/os/rfc/handlers/shared.ts +3 -3
- package/os/rfc/handlers/supersede-propose.ts +8 -3
- package/os/rfc/handlers/validate-rules-rfc1006.test.ts +18 -6
- package/os/rfc/handlers/validate-rules.ts +10 -5
- package/os/rfc/handlers/validate.test.ts +71 -0
- package/os/rfc/handlers/validate.ts +6 -1
- package/os/rfc/rfc-create-concurrent.test.ts +11 -3
- package/os/rfc/rfc.module.ts +413 -374
- package/os/rfc/verification-evidence.ts +11 -5
- package/os/rfc/verification-refresh.ts +4 -3
- package/os/session/frontmatter-io.ts +14 -14
- package/os/session/handlers/archive.ts +8 -4
- package/os/session/handlers/metrics-aggregate.ts +34 -13
- package/os/session/handlers/metrics-rfc.ts +13 -8
- package/os/session/handlers/metrics-session.ts +7 -3
- package/os/session/handlers/save.ts +12 -8
- package/os/session/session.module.ts +6 -0
- package/os/spec/live-spec-list.ts +4 -4
- package/os/spec/live-spec-merge.ts +5 -5
- package/os/spec/live-spec-show.ts +3 -3
- package/os/spec/live-spec-validate.ts +4 -4
- package/os/spec/spec-materialize.ts +9 -9
- package/os/spec/spec-status.ts +9 -9
- package/os/spec/spec-validate.ts +7 -7
- package/os/spec/spec.module.ts +8 -0
- package/os/werkstatt/handlers/lock.ts +16 -16
- package/os/werkstatt/handlers/werkstatt-lock-recover.ts +3 -3
- package/os/werkstatt/handlers/werkstatt-operation-validate.ts +4 -2
- package/os/werkstatt/handlers/workspace-deps.ts +0 -1
- package/os/werkstatt/werkstatt.module.ts +8 -5
- package/os/workflow/handlers.ts +7 -5
- package/os/workflow/workflow.module.ts +45 -44
- package/package.json +1 -1
- package/profiles/forge-shell.yaml +1 -1
- package/profiles/godot-game.yaml +1 -1
- package/profiles/knowledge.yaml +1 -1
- package/profiles/phaser-game.yaml +1 -1
- package/profiles/site-workshop.yaml +1 -1
- package/profiles/typescript.yaml +1 -1
- package/skills/fo/fo-add-tests/SKILL.md +2 -2
- package/skills/fo/fo-architecture/SKILL.md +2 -2
- package/skills/fo/fo-compass-annotate/SKILL.md +2 -2
- package/skills/fo/fo-design-summit/SKILL.md +2 -2
- package/skills/fo/fo-doc-audit/SKILL.md +2 -2
- package/skills/fo/fo-explore/SKILL.md +2 -2
- package/skills/fo/fo-extract-dna/SKILL.md +2 -2
- package/skills/fo/fo-fix/SKILL.md +2 -2
- package/skills/fo/fo-handoff/SKILL.md +2 -2
- package/skills/fo/fo-harvest/SKILL.md +2 -2
- package/skills/fo/fo-idea/SKILL.md +2 -2
- package/skills/fo/fo-idea-audit/SKILL.md +2 -2
- package/skills/fo/fo-idea-create-adr/SKILL.md +3 -3
- package/skills/fo/fo-idea-create-rfc/SKILL.md +3 -3
- package/skills/fo/fo-idea-enhance/SKILL.md +2 -2
- package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +2 -2
- package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +1 -1
- package/skills/fo/fo-idea-implement/SKILL.md +2 -2
- package/skills/fo/fo-idea-plan/SKILL.md +2 -2
- package/skills/fo/fo-idea-status/SKILL.md +2 -2
- package/skills/fo/fo-knowledge-distill/SKILL.md +2 -2
- package/skills/fo/fo-memory-sync/SKILL.md +2 -2
- package/skills/fo/fo-qa/SKILL.md +2 -2
- package/skills/fo/fo-review/SKILL.md +2 -2
- package/skills/fo/fo-session-retro/SKILL.md +2 -2
- package/skills/fo/fo-session-save/SKILL.md +2 -2
- package/skills/fo/fo-spec-ingest/SKILL.md +2 -2
- package/skills/fo/fo-step-commit/SKILL.md +1 -1
- package/skills/fo/fo-triage/SKILL.md +2 -2
- package/skills/meta/forge-bootstrap/SKILL.md +1 -1
- package/skills/meta/port-to-forge/SKILL.md +1 -1
- package/skills/meta/skill-create/SKILL.md +1 -1
- package/skills/shared/grilling/SKILL.md +1 -1
- package/skills/shared/grilling/learned-principles.archive.md +17 -0
- package/skills/shared/grilling/learned-principles.md +0 -1
- package/skills/shared/knowledge/learned-principles.md +6 -0
- package/skills/shared/my-preferences/SKILL.md +1 -1
- package/skills/shared/windows-ai-tooling/SKILL.md +1 -1
- package/skills/shared/writing-great-skills/SKILL.md +1 -1
- package/src/cli-flags.ts +285 -0
- package/src/compass/contract-registry.ts +1 -1
- package/src/config/forge-config.ts +1 -1
- package/src/knowledge/__tests__/sync.test.ts +2 -7
- package/src/knowledge/budgets.ts +1 -1
- package/src/knowledge/compact.ts +1 -1
- package/src/knowledge/parse.ts +1 -1
- package/src/knowledge/sync.ts +3 -5
- package/src/migration-adapters/git-utils.ts +2 -2
- package/src/migration-adapters/ignored-files.ts +2 -2
- package/src/migration-adapters/node-typescript-pnpm/index.ts +1 -1
- package/src/migration-adapters/phaser-pnpm/index.ts +1 -1
- package/src/onboarding/agents-generate.ts +92 -36
- package/src/onboarding/create.ts +10 -10
- package/src/onboarding/doctor.ts +70 -55
- package/src/onboarding/init.ts +38 -1
- package/src/onboarding/invariant-engine.ts +1 -1
- package/src/onboarding/memory-compact.ts +5 -4
- package/src/onboarding/memory-scaffold.ts +1 -1
- package/src/onboarding/nested-agents-generate.ts +45 -4
- package/src/onboarding/nested-agents-templates.ts +19 -13
- package/src/onboarding/npm-token-check.ts +2 -2
- package/src/onboarding/prettierignore.ts +263 -0
- package/src/onboarding/profile-validate.ts +5 -4
- package/src/onboarding/scaffold-project.ts +38 -27
- package/src/onboarding/scaffold.ts +1 -1
- package/src/onboarding/skill-markers.ts +162 -0
- package/src/onboarding/templates/behavioral-layer-core.md +2 -4
- package/src/onboarding/upgrade.ts +285 -89
- package/src/onboarding/workspace-discovery.ts +1 -1
- package/src/pipeline-status.test.ts +1 -4
- package/src/pipeline-status.ts +30 -13
- package/src/profiles/stack-profile.ts +1 -1
- package/src/registry.ts +4 -4
- package/src/skill-schema.ts +4 -1
- package/src/tests/acceptance-probe-kinds.test.ts +5 -15
- package/src/tests/agents-generate.test.ts +28 -5
- package/src/tests/cli-flags.test.ts +169 -0
- package/src/tests/contract-registry.test.ts +12 -6
- package/src/tests/doctor-fix.test.ts +1 -4
- package/src/tests/doctor-nested-agents.test.ts +53 -1
- package/src/tests/editable-generated-region.test.ts +231 -0
- package/src/tests/file-size-lint.test.ts +8 -12
- package/src/tests/fixtures/agents-generate-business-before.txt +85 -56
- package/src/tests/markdown-table.test.ts +107 -0
- package/src/tests/prettierignore-manage.test.ts +134 -0
- package/src/tests/skill-agents-sync.test.ts +168 -0
- package/src/tests/skill-sync-marker.test.ts +134 -0
- package/src/tests/skill-validate.test.ts +12 -5
- package/src/tests/upgrade.test.ts +87 -41
- package/src/types.ts +123 -0
- package/src/utils/editable-region.ts +156 -0
- package/src/utils/fs-idempotent.ts +12 -6
- package/src/utils/generated-marker.ts +36 -2
- package/src/utils/index.ts +17 -0
- package/src/utils/io.ts +143 -0
- package/src/utils/markdown-table.ts +121 -0
- package/src/utils/sync-fs.ts +43 -0
- package/src/validators/note-frontmatter-validate.ts +1 -1
- package/src/validators/note-link-validate.ts +1 -1
- package/src/validators/note-orphan-detect.ts +1 -1
- package/src/validators/port-validate.ts +1 -1
- package/src/validators/skill-validate.ts +38 -13
- package/AGENTS.md +0 -502
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
</CHANGE_SUMMARY>
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import fs from "
|
|
15
|
-
import { existsSync } from "
|
|
14
|
+
import { ambientIo as fs } from "../../src/utils/io.ts";
|
|
15
|
+
import { existsSync } from "../../src/utils/sync-fs.ts";
|
|
16
16
|
import path from "node:path";
|
|
17
17
|
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
|
18
18
|
import { toKebabCase } from "../../src/utils/string-utils.ts";
|
|
@@ -63,7 +63,7 @@ interface SpecMaterializeResult {
|
|
|
63
63
|
|
|
64
64
|
async function readYaml<T>(filePath: string): Promise<T | null> {
|
|
65
65
|
try {
|
|
66
|
-
const content = await fs.readFile(filePath
|
|
66
|
+
const content = await fs.readFile(filePath);
|
|
67
67
|
return parseYaml(content) as T;
|
|
68
68
|
} catch {
|
|
69
69
|
return null;
|
|
@@ -163,11 +163,11 @@ export async function runSpecMaterialize(
|
|
|
163
163
|
const amendmentsDir = path.join(specDir, "amendments");
|
|
164
164
|
const amendments: SpecAmendment[] = [];
|
|
165
165
|
if (existsSync(amendmentsDir)) {
|
|
166
|
-
const amdEntries = await fs.readdir(amendmentsDir);
|
|
166
|
+
const amdEntries = (await fs.readdir(amendmentsDir)).map((e) => e.name);
|
|
167
167
|
for (const entry of amdEntries) {
|
|
168
168
|
if (!entry.endsWith(".md")) continue;
|
|
169
169
|
try {
|
|
170
|
-
const content = await fs.readFile(path.join(amendmentsDir, entry)
|
|
170
|
+
const content = await fs.readFile(path.join(amendmentsDir, entry));
|
|
171
171
|
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
172
172
|
if (!fmMatch) continue;
|
|
173
173
|
const raw = parseYaml(fmMatch[1]) as unknown;
|
|
@@ -197,7 +197,7 @@ export async function runSpecMaterialize(
|
|
|
197
197
|
const rfcStatuses = new Map<string, string>();
|
|
198
198
|
for (const file of rfcFiles) {
|
|
199
199
|
try {
|
|
200
|
-
const content = await fs.readFile(path.join(rfcDir, file)
|
|
200
|
+
const content = await fs.readFile(path.join(rfcDir, file));
|
|
201
201
|
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
202
202
|
if (!fmMatch) continue;
|
|
203
203
|
const fm = parseYaml(fmMatch[1]) as Record<string, unknown>;
|
|
@@ -283,7 +283,7 @@ export async function runSpecMaterialize(
|
|
|
283
283
|
const templatePath = resolveRfcTemplate(workspaceRoot);
|
|
284
284
|
let templateContent: string;
|
|
285
285
|
try {
|
|
286
|
-
templateContent = await fs.readFile(templatePath
|
|
286
|
+
templateContent = await fs.readFile(templatePath);
|
|
287
287
|
} catch {
|
|
288
288
|
return {
|
|
289
289
|
data: {
|
|
@@ -335,7 +335,7 @@ export async function runSpecMaterialize(
|
|
|
335
335
|
content = content.replace(/^---\n\n# /m, `---\n${designSection}\n# `);
|
|
336
336
|
|
|
337
337
|
const targetPath = path.join(rfcDir, fileName);
|
|
338
|
-
await fs.writeFile(targetPath, content
|
|
338
|
+
await fs.writeFile(targetPath, content);
|
|
339
339
|
maxId = nextNum;
|
|
340
340
|
|
|
341
341
|
created.push({
|
|
@@ -355,7 +355,7 @@ export async function runSpecMaterialize(
|
|
|
355
355
|
}),
|
|
356
356
|
};
|
|
357
357
|
const yamlContent = stringifyYaml(updatedSpec);
|
|
358
|
-
await fs.writeFile(forgeSpecPath, yamlContent
|
|
358
|
+
await fs.writeFile(forgeSpecPath, yamlContent);
|
|
359
359
|
}
|
|
360
360
|
|
|
361
361
|
// Report skipped front nodes (beyond the materialized batch)
|
package/os/spec/spec-status.ts
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
</CHANGE_SUMMARY>
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import fs from "
|
|
14
|
-
import { existsSync } from "
|
|
13
|
+
import { ambientIo as fs } from "../../src/utils/io.ts";
|
|
14
|
+
import { existsSync } from "../../src/utils/sync-fs.ts";
|
|
15
15
|
import path from "node:path";
|
|
16
16
|
import { parse as parseYaml } from "yaml";
|
|
17
17
|
import { loadForgeConfig } from "../../src/config/forge-config.ts";
|
|
@@ -70,7 +70,7 @@ interface SpecStatusResult {
|
|
|
70
70
|
|
|
71
71
|
async function readYaml<T>(filePath: string): Promise<T | null> {
|
|
72
72
|
try {
|
|
73
|
-
const content = await fs.readFile(filePath
|
|
73
|
+
const content = await fs.readFile(filePath);
|
|
74
74
|
return parseYaml(content) as T;
|
|
75
75
|
} catch {
|
|
76
76
|
return null;
|
|
@@ -79,8 +79,8 @@ async function readYaml<T>(filePath: string): Promise<T | null> {
|
|
|
79
79
|
|
|
80
80
|
async function listSpecDirs(specsDir: string): Promise<string[]> {
|
|
81
81
|
if (!existsSync(specsDir)) return [];
|
|
82
|
-
const entries = await fs.readdir(specsDir
|
|
83
|
-
return entries.filter((e) => e.isDirectory
|
|
82
|
+
const entries = await fs.readdir(specsDir);
|
|
83
|
+
return entries.filter((e) => e.isDirectory).map((e) => e.name);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
async function loadRfcStatuses(
|
|
@@ -88,11 +88,11 @@ async function loadRfcStatuses(
|
|
|
88
88
|
): Promise<Map<string, string>> {
|
|
89
89
|
const statuses = new Map<string, string>();
|
|
90
90
|
if (!existsSync(rfcDir)) return statuses;
|
|
91
|
-
const files = await fs.readdir(rfcDir);
|
|
91
|
+
const files = (await fs.readdir(rfcDir)).map((e) => e.name);
|
|
92
92
|
for (const file of files) {
|
|
93
93
|
if (!file.endsWith(".md") || file.startsWith("rfc-0000")) continue;
|
|
94
94
|
try {
|
|
95
|
-
const content = await fs.readFile(path.join(rfcDir, file)
|
|
95
|
+
const content = await fs.readFile(path.join(rfcDir, file));
|
|
96
96
|
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
97
97
|
if (!fmMatch) continue;
|
|
98
98
|
const fm = parseYaml(fmMatch[1]) as Record<string, unknown>;
|
|
@@ -110,13 +110,13 @@ async function loadAmendments(specDir: string): Promise<SpecAmendment[]> {
|
|
|
110
110
|
const amendmentsDir = path.join(specDir, "amendments");
|
|
111
111
|
if (!existsSync(amendmentsDir)) return [];
|
|
112
112
|
|
|
113
|
-
const entries = await fs.readdir(amendmentsDir);
|
|
113
|
+
const entries = (await fs.readdir(amendmentsDir)).map((e) => e.name);
|
|
114
114
|
const amendments: SpecAmendment[] = [];
|
|
115
115
|
|
|
116
116
|
for (const entry of entries) {
|
|
117
117
|
if (!entry.endsWith(".md")) continue;
|
|
118
118
|
try {
|
|
119
|
-
const content = await fs.readFile(path.join(amendmentsDir, entry)
|
|
119
|
+
const content = await fs.readFile(path.join(amendmentsDir, entry));
|
|
120
120
|
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
121
121
|
if (!fmMatch) continue;
|
|
122
122
|
const raw = parseYaml(fmMatch[1]) as unknown;
|
package/os/spec/spec-validate.ts
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
</CHANGE_SUMMARY>
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import fs from "
|
|
17
|
-
import { existsSync } from "
|
|
16
|
+
import { ambientIo as fs } from "../../src/utils/io.ts";
|
|
17
|
+
import { existsSync } from "../../src/utils/sync-fs.ts";
|
|
18
18
|
import path from "node:path";
|
|
19
19
|
import { parse as parseYaml } from "yaml";
|
|
20
20
|
import { byteHash } from "../../src/utils/hash.ts";
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
|
|
44
44
|
async function readYaml<T>(filePath: string): Promise<T | null> {
|
|
45
45
|
try {
|
|
46
|
-
const content = await fs.readFile(filePath
|
|
46
|
+
const content = await fs.readFile(filePath);
|
|
47
47
|
return parseYaml(content) as T;
|
|
48
48
|
} catch {
|
|
49
49
|
return null;
|
|
@@ -52,8 +52,8 @@ async function readYaml<T>(filePath: string): Promise<T | null> {
|
|
|
52
52
|
|
|
53
53
|
async function listSpecDirs(specsDir: string): Promise<string[]> {
|
|
54
54
|
if (!existsSync(specsDir)) return [];
|
|
55
|
-
const entries = await fs.readdir(specsDir
|
|
56
|
-
return entries.filter((e) => e.isDirectory
|
|
55
|
+
const entries = await fs.readdir(specsDir);
|
|
56
|
+
return entries.filter((e) => e.isDirectory).map((e) => e.name);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
async function listSnapshotFiles(
|
|
@@ -288,13 +288,13 @@ async function loadAmendments(specDir: string): Promise<SpecAmendment[]> {
|
|
|
288
288
|
const amendmentsDir = path.join(specDir, "amendments");
|
|
289
289
|
if (!existsSync(amendmentsDir)) return [];
|
|
290
290
|
|
|
291
|
-
const entries = await fs.readdir(amendmentsDir);
|
|
291
|
+
const entries = (await fs.readdir(amendmentsDir)).map((e) => e.name);
|
|
292
292
|
const amendments: SpecAmendment[] = [];
|
|
293
293
|
|
|
294
294
|
for (const entry of entries) {
|
|
295
295
|
if (!entry.endsWith(".md")) continue;
|
|
296
296
|
try {
|
|
297
|
-
const content = await fs.readFile(path.join(amendmentsDir, entry)
|
|
297
|
+
const content = await fs.readFile(path.join(amendmentsDir, entry));
|
|
298
298
|
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
299
299
|
if (!fmMatch) continue;
|
|
300
300
|
const raw = parseYaml(fmMatch[1]) as unknown;
|
package/os/spec/spec.module.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
<item>RFC-0394: initial forgeSpecModule registering spec.validate.</item>
|
|
10
10
|
<item>RFC-0396: added spec.status and spec.materialize commands.</item>
|
|
11
11
|
<item>RFC-0711: added spec.live.merge, spec.live.list, spec.live.show, spec.live.validate commands.</item>
|
|
12
|
+
<item>RFC-1173: declare mutatesState on all kernel commands — collectDeclarationDiagnostics emits error-severity MUTATES-STATE-DECLARED, command.manifest.validate is the blocking consumer in packages.check, sweep declares the flag on every command definition (factories hardcode false for read-only check specs)</item>
|
|
12
13
|
</CHANGE_SUMMARY>
|
|
13
14
|
*/
|
|
14
15
|
|
|
@@ -30,6 +31,7 @@ const { runSpecValidate } = await import("./spec-validate.ts");
|
|
|
30
31
|
commands: [
|
|
31
32
|
{
|
|
32
33
|
name: "spec.validate",
|
|
34
|
+
mutatesState: false,
|
|
33
35
|
contract: "spec",
|
|
34
36
|
rules: [],
|
|
35
37
|
description:
|
|
@@ -49,6 +51,7 @@ const { runSpecValidate } = await import("./spec-validate.ts");
|
|
|
49
51
|
},
|
|
50
52
|
{
|
|
51
53
|
name: "spec.status",
|
|
54
|
+
mutatesState: false,
|
|
52
55
|
description:
|
|
53
56
|
"Show roadmap progress for vendored specs. " +
|
|
54
57
|
"Without --spec, summarizes all specs; with it, full per-node table + computed front.",
|
|
@@ -70,6 +73,7 @@ const { runSpecValidate } = await import("./spec-validate.ts");
|
|
|
70
73
|
scope: "workspace",
|
|
71
74
|
mutatesState: true,
|
|
72
75
|
writes: ["docs/rfcs/rfc-*.md", "docs/specs/*/forge-spec.yaml"],
|
|
76
|
+
generates: [],
|
|
73
77
|
reads: ["docs/specs/**/*", "docs/rfcs/**/*.md"],
|
|
74
78
|
flags: {
|
|
75
79
|
spec: { kind: "string", required: true, description: "Spec id to materialize from." },
|
|
@@ -90,6 +94,7 @@ const { runSpecValidate } = await import("./spec-validate.ts");
|
|
|
90
94
|
scope: "workspace",
|
|
91
95
|
mutatesState: true,
|
|
92
96
|
writes: ["docs/specs/live/*.md"],
|
|
97
|
+
generates: [],
|
|
93
98
|
reads: ["docs/rfcs/**/*.md", "docs/specs/live/*.md"],
|
|
94
99
|
flags: {
|
|
95
100
|
id: { kind: "string", required: true, description: "RFC id to merge (e.g. RFC-0711)." },
|
|
@@ -99,6 +104,7 @@ const { runSpecValidate } = await import("./spec-validate.ts");
|
|
|
99
104
|
},
|
|
100
105
|
{
|
|
101
106
|
name: "spec.live.list",
|
|
107
|
+
mutatesState: false,
|
|
102
108
|
description:
|
|
103
109
|
"List all living feature specs in docs/specs/live/. " +
|
|
104
110
|
"Returns domain, title, lastMergedRfc, updatedAt, and historyCount for each spec.",
|
|
@@ -109,6 +115,7 @@ const { runSpecValidate } = await import("./spec-validate.ts");
|
|
|
109
115
|
},
|
|
110
116
|
{
|
|
111
117
|
name: "spec.live.show",
|
|
118
|
+
mutatesState: false,
|
|
112
119
|
description:
|
|
113
120
|
"Show a single living feature spec by domain. " +
|
|
114
121
|
"Requires --domain=<name>. Returns full frontmatter and body content.",
|
|
@@ -121,6 +128,7 @@ const { runSpecValidate } = await import("./spec-validate.ts");
|
|
|
121
128
|
},
|
|
122
129
|
{
|
|
123
130
|
name: "spec.live.validate",
|
|
131
|
+
mutatesState: false,
|
|
124
132
|
contract: "spec",
|
|
125
133
|
rules: [],
|
|
126
134
|
description:
|
|
@@ -13,8 +13,8 @@ heartbeat, status, and stale-lock removal.</purpose>
|
|
|
13
13
|
</CHANGE_SUMMARY>
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import fs from "
|
|
17
|
-
import { existsSync } from "
|
|
16
|
+
import { ambientIo as fs } from "../../../src/utils/io.ts";
|
|
17
|
+
import { existsSync } from "../../../src/utils/sync-fs.ts";
|
|
18
18
|
import path from "node:path";
|
|
19
19
|
import { werkstattLockSchema, type WerkstattLock } from "./schema.ts";
|
|
20
20
|
|
|
@@ -57,11 +57,11 @@ export async function acquireLock(
|
|
|
57
57
|
const locksDir = resolveLocksDir(workspaceRoot);
|
|
58
58
|
|
|
59
59
|
if (!existsSync(locksDir)) {
|
|
60
|
-
await fs.mkdir(locksDir
|
|
60
|
+
await fs.mkdir(locksDir);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
if (existsSync(lockPath)) {
|
|
64
|
-
const raw = await fs.readFile(lockPath
|
|
64
|
+
const raw = await fs.readFile(lockPath);
|
|
65
65
|
try {
|
|
66
66
|
const existing = werkstattLockSchema.parse(JSON.parse(raw));
|
|
67
67
|
if (existing.pid === process.pid && !isLockStale(existing)) {
|
|
@@ -71,7 +71,7 @@ export async function acquireLock(
|
|
|
71
71
|
heartbeatAt: new Date().toISOString(),
|
|
72
72
|
};
|
|
73
73
|
werkstattLockSchema.parse(updated);
|
|
74
|
-
await fs.writeFile(lockPath, JSON.stringify(updated, null, 2) + "\n"
|
|
74
|
+
await fs.writeFile(lockPath, JSON.stringify(updated, null, 2) + "\n");
|
|
75
75
|
return updated;
|
|
76
76
|
}
|
|
77
77
|
if (!isLockStale(existing)) {
|
|
@@ -98,7 +98,7 @@ export async function acquireLock(
|
|
|
98
98
|
};
|
|
99
99
|
|
|
100
100
|
werkstattLockSchema.parse(lock);
|
|
101
|
-
await fs.writeFile(lockPath, JSON.stringify(lock, null, 2) + "\n"
|
|
101
|
+
await fs.writeFile(lockPath, JSON.stringify(lock, null, 2) + "\n");
|
|
102
102
|
return lock;
|
|
103
103
|
}
|
|
104
104
|
|
|
@@ -106,19 +106,19 @@ export async function releaseLock(workspaceRoot: string, scope: string): Promise
|
|
|
106
106
|
const lockPath = resolveLockPath(workspaceRoot, scope);
|
|
107
107
|
if (!existsSync(lockPath)) return;
|
|
108
108
|
try {
|
|
109
|
-
const raw = await fs.readFile(lockPath
|
|
109
|
+
const raw = await fs.readFile(lockPath);
|
|
110
110
|
const lock = werkstattLockSchema.parse(JSON.parse(raw));
|
|
111
111
|
if (lock.pid === process.pid && (lock.depth ?? 1) > 1) {
|
|
112
112
|
const decremented = { ...lock, depth: (lock.depth ?? 1) - 1 };
|
|
113
113
|
werkstattLockSchema.parse(decremented);
|
|
114
|
-
await fs.writeFile(lockPath, JSON.stringify(decremented, null, 2) + "\n"
|
|
114
|
+
await fs.writeFile(lockPath, JSON.stringify(decremented, null, 2) + "\n");
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
|
-
await fs.
|
|
117
|
+
await fs.rm(lockPath);
|
|
118
118
|
} catch {
|
|
119
119
|
// corrupt or missing — try direct delete
|
|
120
120
|
try {
|
|
121
|
-
await fs.
|
|
121
|
+
await fs.rm(lockPath);
|
|
122
122
|
} catch {
|
|
123
123
|
/* already gone */
|
|
124
124
|
}
|
|
@@ -128,10 +128,10 @@ export async function releaseLock(workspaceRoot: string, scope: string): Promise
|
|
|
128
128
|
export async function heartbeatLock(workspaceRoot: string, scope: string): Promise<void> {
|
|
129
129
|
const lockPath = resolveLockPath(workspaceRoot, scope);
|
|
130
130
|
if (!existsSync(lockPath)) return;
|
|
131
|
-
const raw = await fs.readFile(lockPath
|
|
131
|
+
const raw = await fs.readFile(lockPath);
|
|
132
132
|
const lock = werkstattLockSchema.parse(JSON.parse(raw));
|
|
133
133
|
lock.heartbeatAt = new Date().toISOString();
|
|
134
|
-
await fs.writeFile(lockPath, JSON.stringify(lock, null, 2) + "\n"
|
|
134
|
+
await fs.writeFile(lockPath, JSON.stringify(lock, null, 2) + "\n");
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
export async function readAllLocks(
|
|
@@ -140,12 +140,12 @@ export async function readAllLocks(
|
|
|
140
140
|
const locksDir = resolveLocksDir(workspaceRoot);
|
|
141
141
|
if (!existsSync(locksDir)) return [];
|
|
142
142
|
|
|
143
|
-
const files = await fs.readdir(locksDir);
|
|
143
|
+
const files = (await fs.readdir(locksDir)).map((e) => e.name);
|
|
144
144
|
const locks: Array<WerkstattLock & { stale: boolean }> = [];
|
|
145
145
|
|
|
146
146
|
for (const file of files) {
|
|
147
147
|
if (!file.endsWith(".lock.json")) continue;
|
|
148
|
-
const raw = await fs.readFile(path.join(locksDir, file)
|
|
148
|
+
const raw = await fs.readFile(path.join(locksDir, file));
|
|
149
149
|
try {
|
|
150
150
|
const lock = werkstattLockSchema.parse(JSON.parse(raw));
|
|
151
151
|
locks.push({ ...lock, stale: isLockStale(lock) });
|
|
@@ -160,9 +160,9 @@ export async function readAllLocks(
|
|
|
160
160
|
export async function removeStaleLock(workspaceRoot: string, scope: string): Promise<boolean> {
|
|
161
161
|
const lockPath = resolveLockPath(workspaceRoot, scope);
|
|
162
162
|
if (!existsSync(lockPath)) return false;
|
|
163
|
-
const raw = await fs.readFile(lockPath
|
|
163
|
+
const raw = await fs.readFile(lockPath);
|
|
164
164
|
const lock = werkstattLockSchema.parse(JSON.parse(raw));
|
|
165
165
|
if (!isLockStale(lock)) return false;
|
|
166
|
-
await fs.
|
|
166
|
+
await fs.rm(lockPath);
|
|
167
167
|
return true;
|
|
168
168
|
}
|
|
@@ -19,8 +19,8 @@ Sweep batch 4: 73 Compass headers on headerless engine files (certification, com
|
|
|
19
19
|
</CHANGE_SUMMARY>
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
import fs from "
|
|
23
|
-
import { existsSync } from "
|
|
22
|
+
import { ambientIo as fs } from "../../../src/utils/io.ts";
|
|
23
|
+
import { existsSync } from "../../../src/utils/sync-fs.ts";
|
|
24
24
|
import path from "node:path";
|
|
25
25
|
import type {
|
|
26
26
|
ForgeCommandInput,
|
|
@@ -57,7 +57,7 @@ async function classifyArtifacts(
|
|
|
57
57
|
|
|
58
58
|
let entries: string[];
|
|
59
59
|
try {
|
|
60
|
-
entries = await fs.readdir(rootPath);
|
|
60
|
+
entries = (await fs.readdir(rootPath)).map((e) => e.name);
|
|
61
61
|
} catch {
|
|
62
62
|
continue;
|
|
63
63
|
}
|
|
@@ -16,7 +16,8 @@ helper module (RFC-0362 §6).</purpose>
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import { basename, join, relative } from "node:path";
|
|
19
|
-
import {
|
|
19
|
+
import { resolveIo } from "../../../src/utils/io.ts";
|
|
20
|
+
|
|
20
21
|
import { collectFiles } from "../../../src/utils/fs.ts";
|
|
21
22
|
import type {
|
|
22
23
|
ForgeCommandInput,
|
|
@@ -43,6 +44,7 @@ export async function runWerkstattOperationValidate(
|
|
|
43
44
|
_input: ForgeCommandInput,
|
|
44
45
|
context: ForgeRuntimeContext,
|
|
45
46
|
): Promise<ForgeCommandResult<WerkstattOperationValidateData>> {
|
|
47
|
+
const io = resolveIo(context.io);
|
|
46
48
|
const { workspaceRoot, logger } = context;
|
|
47
49
|
const scanPath = join(workspaceRoot, SCAN_DIR);
|
|
48
50
|
const allowlistPath = join(workspaceRoot, ALLOWLIST_DIR);
|
|
@@ -67,7 +69,7 @@ export async function runWerkstattOperationValidate(
|
|
|
67
69
|
|
|
68
70
|
let content: string;
|
|
69
71
|
try {
|
|
70
|
-
content = await readFile(filePath
|
|
72
|
+
content = await io.readFile(filePath);
|
|
71
73
|
} catch {
|
|
72
74
|
continue;
|
|
73
75
|
}
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
<CHANGE_SUMMARY>
|
|
10
10
|
<item>RFC-0682: extract dynamic-import helper so forge publishes without workspace:* deps.</item>
|
|
11
11
|
<item>RFC-0940: moved from os/core/handlers/ to os/werkstatt/handlers/ — this module imports @warpgogol/werkstatt-engine and belongs in the adapter directory.</item>
|
|
12
|
-
<item>2026-09-22: fingerprint import switched from @warpgogol/werkstatt-engine/fingerprint to @warpgogol/werkstatt-shared/fingerprint (canonical home since RFC-1104) — breaks the forge↔engine package cycle reported by turbo.</item>
|
|
13
12
|
</CHANGE_SUMMARY>
|
|
14
13
|
*/
|
|
15
14
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
<CHANGE_SUMMARY>
|
|
9
9
|
<item>RFC-0374: initial forgeWerkstattModule registering 3 werkstatt commands.</item>
|
|
10
10
|
<item>RFC-0556: removed dynamic imports of @warpgogol/site-kernel-handoff and @warpgogol/site-kernel-checks, all handlers now inlined in forge/os/werkstatt/handlers/.</item>
|
|
11
|
+
<item>RFC-1173: declare mutatesState on all kernel commands — collectDeclarationDiagnostics emits error-severity MUTATES-STATE-DECLARED, command.manifest.validate is the blocking consumer in packages.check, sweep declares the flag on every command definition (factories hardcode false for read-only check specs)</item>
|
|
11
12
|
</CHANGE_SUMMARY>
|
|
12
13
|
*/
|
|
13
14
|
|
|
@@ -20,10 +21,11 @@ export const forgeWerkstattModule: ForgeModule = {
|
|
|
20
21
|
name: "forge-werkstatt",
|
|
21
22
|
version: "0.1.0",
|
|
22
23
|
runtime: "werkstatt-adapter",
|
|
23
|
-
|
|
24
|
+
declarations: [],
|
|
24
25
|
commands: [
|
|
25
26
|
{
|
|
26
27
|
name: "werkstatt.lock.status",
|
|
28
|
+
mutatesState: false,
|
|
27
29
|
description: "Report all Werkstatt locks, their age, owner, and staleness (RFC-0362).",
|
|
28
30
|
scope: "workspace",
|
|
29
31
|
supportsAllSites: false,
|
|
@@ -46,12 +48,14 @@ export const forgeWerkstattModule: ForgeModule = {
|
|
|
46
48
|
},
|
|
47
49
|
},
|
|
48
50
|
writes: [".werkstatt/locks/**", "systems/**", "missions/**", "releases/**"],
|
|
51
|
+
generates: [],
|
|
49
52
|
reads: [".werkstatt/locks/**"],
|
|
50
53
|
cacheable: false,
|
|
51
54
|
execute: runWerkstattLockRecover,
|
|
52
55
|
},
|
|
53
56
|
{
|
|
54
57
|
name: "werkstatt.operation.validate",
|
|
58
|
+
mutatesState: false,
|
|
55
59
|
contract: "werkstatt",
|
|
56
60
|
rules: [],
|
|
57
61
|
description:
|
|
@@ -61,8 +65,7 @@ export const forgeWerkstattModule: ForgeModule = {
|
|
|
61
65
|
flags: {},
|
|
62
66
|
reads: ["packages/os/site-kernel-handoff/src/**/*.ts"],
|
|
63
67
|
execute: runWerkstattOperationValidate,
|
|
64
|
-
}
|
|
68
|
+
},
|
|
65
69
|
],
|
|
66
|
-
pipelines: [
|
|
67
|
-
|
|
68
|
-
]};
|
|
70
|
+
pipelines: [],
|
|
71
|
+
};
|
package/os/workflow/handlers.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
</CHANGE_SUMMARY>
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import fs from "
|
|
15
|
+
import { ambientIo as fs } from "../../src/utils/io.ts";
|
|
16
16
|
import path from "node:path";
|
|
17
17
|
import YAML from "yaml";
|
|
18
18
|
import type {
|
|
@@ -82,7 +82,9 @@ const PENDING_ACCEPTED_RFC_COMMANDS = new Set([
|
|
|
82
82
|
|
|
83
83
|
async function pathExists(target: string): Promise<boolean> {
|
|
84
84
|
try {
|
|
85
|
-
await fs.
|
|
85
|
+
await fs.exists(target).then((ok) => {
|
|
86
|
+
if (!ok) throw Object.assign(new Error("ENOENT"), { code: "ENOENT" });
|
|
87
|
+
});
|
|
86
88
|
return true;
|
|
87
89
|
} catch {
|
|
88
90
|
return false;
|
|
@@ -91,9 +93,9 @@ async function pathExists(target: string): Promise<boolean> {
|
|
|
91
93
|
|
|
92
94
|
async function readWorkflowFiles(workspaceRoot: string, dir: string) {
|
|
93
95
|
const directory = path.join(workspaceRoot, dir);
|
|
94
|
-
const entries = await fs.readdir(directory
|
|
96
|
+
const entries = await fs.readdir(directory).catch(() => []);
|
|
95
97
|
return entries
|
|
96
|
-
.filter((entry) => entry.isFile
|
|
98
|
+
.filter((entry) => entry.isFile && entry.name.endsWith(".md") && entry.name !== "README.md")
|
|
97
99
|
.map((entry) => path.join(directory, entry.name))
|
|
98
100
|
.sort();
|
|
99
101
|
}
|
|
@@ -160,7 +162,7 @@ async function loadWorkflows(workspaceRoot: string, chain: WorkflowChain = "gree
|
|
|
160
162
|
for (const file of files) {
|
|
161
163
|
const relativeFile = path.relative(workspaceRoot, file).replace(/\\/g, "/");
|
|
162
164
|
try {
|
|
163
|
-
const source = await fs.readFile(file
|
|
165
|
+
const source = await fs.readFile(file);
|
|
164
166
|
workflows.push({
|
|
165
167
|
relativeFile,
|
|
166
168
|
chain,
|
|
@@ -8,56 +8,57 @@
|
|
|
8
8
|
<CHANGE_SUMMARY>
|
|
9
9
|
<item>RFC-0075: Add workflow command module.</item>
|
|
10
10
|
<item>RFC-0374: Migrated from packages/os/site-kernel/src/workflow/ to packages/forge/os/workflow/.</item>
|
|
11
|
+
<item>RFC-1173: declare mutatesState on all kernel commands — collectDeclarationDiagnostics emits error-severity MUTATES-STATE-DECLARED, command.manifest.validate is the blocking consumer in packages.check, sweep declares the flag on every command definition (factories hardcode false for read-only check specs)</item>
|
|
11
12
|
</CHANGE_SUMMARY>
|
|
12
13
|
*/
|
|
13
14
|
|
|
14
15
|
import type { ForgeModule } from "../../src/forge-module.ts";
|
|
15
16
|
|
|
16
17
|
export async function createForgeWorkflowModule(): Promise<ForgeModule> {
|
|
17
|
-
const { runWorkflowLint, runWorkflowList, runWorkflowAmendList } =
|
|
18
|
-
await import("./handlers.ts");
|
|
18
|
+
const { runWorkflowLint, runWorkflowList, runWorkflowAmendList } = await import("./handlers.ts");
|
|
19
19
|
return {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
name: "workflow",
|
|
21
|
+
version: "0.1.0",
|
|
22
|
+
runtime: "autonomous",
|
|
23
23
|
declarations: [],
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
24
|
+
commands: [
|
|
25
|
+
{
|
|
26
|
+
name: "workflow.lint",
|
|
27
|
+
mutatesState: false,
|
|
28
|
+
contract: "workflow",
|
|
29
|
+
rules: [],
|
|
30
|
+
description:
|
|
31
|
+
"Validate .agents/workflows AND .agents/workflows-amend markdown frontmatter, command references, " +
|
|
32
|
+
"and per-chain phase links (RFC-0075 + RFC-0136).",
|
|
33
|
+
scope: "workspace",
|
|
34
|
+
flags: {},
|
|
35
|
+
supportsAllSites: true,
|
|
36
|
+
reads: [".agents/workflows/**/*.md", ".windsurf/workflows/**/*.md"],
|
|
37
|
+
execute: runWorkflowLint,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "workflow.list",
|
|
41
|
+
mutatesState: false,
|
|
42
|
+
description:
|
|
43
|
+
"List .agents/workflows entries with phase, IO summary, and next workflow (RFC-0075).",
|
|
44
|
+
scope: "workspace",
|
|
45
|
+
flags: {},
|
|
46
|
+
supportsAllSites: true,
|
|
47
|
+
reads: [".agents/workflows/**/*.md", ".windsurf/workflows/**/*.md"],
|
|
48
|
+
execute: runWorkflowList,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "workflow-amend.list",
|
|
52
|
+
mutatesState: false,
|
|
53
|
+
description:
|
|
54
|
+
"List .agents/workflows-amend entries with phase, IO summary, and next workflow (RFC-0136).",
|
|
55
|
+
scope: "workspace",
|
|
56
|
+
flags: {},
|
|
57
|
+
supportsAllSites: true,
|
|
58
|
+
reads: [".agents/workflows-amend/**/*.md"],
|
|
59
|
+
execute: runWorkflowAmendList,
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
pipelines: [],
|
|
63
|
+
};
|
|
62
64
|
}
|
|
63
|
-
;
|
package/package.json
CHANGED
|
@@ -525,7 +525,7 @@ workspace:
|
|
|
525
525
|
"hooks": {
|
|
526
526
|
"pre_user_prompt": [
|
|
527
527
|
{
|
|
528
|
-
"command": "node $ROOT_WORKSPACE_PATH/hooks/pre-user-prompt-wrapper.mjs",
|
|
528
|
+
"command": "node \"${ROOT_WORKSPACE_PATH:-$PWD}/hooks/pre-user-prompt-wrapper.mjs\"",
|
|
529
529
|
"show_output": true
|
|
530
530
|
}
|
|
531
531
|
]
|
package/profiles/godot-game.yaml
CHANGED
|
@@ -1002,7 +1002,7 @@ workspace:
|
|
|
1002
1002
|
"hooks": {
|
|
1003
1003
|
"pre_user_prompt": [
|
|
1004
1004
|
{
|
|
1005
|
-
"command": "node $ROOT_WORKSPACE_PATH/hooks/pre-user-prompt-wrapper.mjs",
|
|
1005
|
+
"command": "node \"${ROOT_WORKSPACE_PATH:-$PWD}/hooks/pre-user-prompt-wrapper.mjs\"",
|
|
1006
1006
|
"show_output": true
|
|
1007
1007
|
}
|
|
1008
1008
|
]
|
package/profiles/knowledge.yaml
CHANGED
|
@@ -378,7 +378,7 @@ workspace:
|
|
|
378
378
|
"hooks": {
|
|
379
379
|
"pre_user_prompt": [
|
|
380
380
|
{
|
|
381
|
-
"command": "node $ROOT_WORKSPACE_PATH/hooks/pre-user-prompt-wrapper.mjs",
|
|
381
|
+
"command": "node \"${ROOT_WORKSPACE_PATH:-$PWD}/hooks/pre-user-prompt-wrapper.mjs\"",
|
|
382
382
|
"show_output": true
|
|
383
383
|
}
|
|
384
384
|
]
|
|
@@ -605,7 +605,7 @@ workspace:
|
|
|
605
605
|
"hooks": {
|
|
606
606
|
"pre_user_prompt": [
|
|
607
607
|
{
|
|
608
|
-
"command": "node $ROOT_WORKSPACE_PATH/hooks/pre-user-prompt-wrapper.mjs",
|
|
608
|
+
"command": "node \"${ROOT_WORKSPACE_PATH:-$PWD}/hooks/pre-user-prompt-wrapper.mjs\"",
|
|
609
609
|
"show_output": true
|
|
610
610
|
}
|
|
611
611
|
]
|
|
@@ -516,7 +516,7 @@ workspace:
|
|
|
516
516
|
"hooks": {
|
|
517
517
|
"pre_user_prompt": [
|
|
518
518
|
{
|
|
519
|
-
"command": "node $ROOT_WORKSPACE_PATH/hooks/pre-user-prompt-wrapper.mjs",
|
|
519
|
+
"command": "node \"${ROOT_WORKSPACE_PATH:-$PWD}/hooks/pre-user-prompt-wrapper.mjs\"",
|
|
520
520
|
"show_output": true
|
|
521
521
|
}
|
|
522
522
|
]
|