@warpgogol/forge 4.2.4 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +14 -6
- package/CHANGELOG.md +72 -0
- package/README.md +8 -8
- package/README.uk.md +5 -5
- package/dist/os/adr/handlers/list-create.d.ts.map +1 -1
- package/dist/os/adr/handlers/list-create.js +4 -1
- package/dist/os/adr/handlers/list-create.js.map +1 -1
- package/dist/os/adr/handlers/validate.d.ts.map +1 -1
- package/dist/os/adr/handlers/validate.js +6 -1
- package/dist/os/adr/handlers/validate.js.map +1 -1
- package/dist/os/adr/types.d.ts.map +1 -1
- package/dist/os/adr/types.js +7 -3
- package/dist/os/adr/types.js.map +1 -1
- package/dist/os/compass/compass.module.d.ts.map +1 -1
- package/dist/os/compass/compass.module.js +76 -10
- 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 +7 -3
- package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -1
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +1 -9
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-change-summary-handler.js +44 -186
- package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -1
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts +2 -0
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-inventory-handler.js +24 -12
- package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -1
- package/dist/os/compass/handlers/compass-inventory.d.ts +7 -5
- package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-inventory.js +84 -241
- package/dist/os/compass/handlers/compass-inventory.js.map +1 -1
- package/dist/os/compass/handlers/compass-migrate-handler.d.ts +4 -0
- package/dist/os/compass/handlers/compass-migrate-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-migrate-handler.js +100 -0
- package/dist/os/compass/handlers/compass-migrate-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-migrate.d.ts +34 -0
- package/dist/os/compass/handlers/compass-migrate.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-migrate.js +273 -0
- package/dist/os/compass/handlers/compass-migrate.js.map +1 -0
- package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +1 -1
- package/dist/os/compass/handlers/resolve-scan-root.js +15 -8
- package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -1
- package/dist/os/compass/handlers/summary-record.d.ts +46 -0
- package/dist/os/compass/handlers/summary-record.d.ts.map +1 -0
- package/dist/os/compass/handlers/summary-record.js +233 -0
- package/dist/os/compass/handlers/summary-record.js.map +1 -0
- package/dist/os/compass/index.d.ts +4 -1
- package/dist/os/compass/index.d.ts.map +1 -1
- package/dist/os/compass/index.js +9 -1
- package/dist/os/compass/index.js.map +1 -1
- package/dist/os/compass/policy.d.ts +65 -0
- package/dist/os/compass/policy.d.ts.map +1 -0
- package/dist/os/compass/policy.js +241 -0
- package/dist/os/compass/policy.js.map +1 -0
- package/dist/os/core/core.module.d.ts.map +1 -1
- package/dist/os/core/core.module.js +11 -23
- package/dist/os/core/core.module.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 +7 -1
- package/dist/os/core/handlers/forge-autonomy-validate.js.map +1 -1
- package/dist/os/core/handlers/package-health.d.ts.map +1 -1
- package/dist/os/core/handlers/package-health.js +6 -1
- package/dist/os/core/handlers/package-health.js.map +1 -1
- package/dist/os/core/handlers/pinned-check.d.ts.map +1 -1
- package/dist/os/core/handlers/pinned-check.js +6 -1
- package/dist/os/core/handlers/pinned-check.js.map +1 -1
- package/dist/os/core/handlers/pinned-validate.d.ts.map +1 -1
- package/dist/os/core/handlers/pinned-validate.js +6 -1
- package/dist/os/core/handlers/pinned-validate.js.map +1 -1
- package/dist/os/core/handlers/validate.d.ts.map +1 -1
- package/dist/os/core/handlers/validate.js +6 -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 +6 -4
- package/dist/os/exploration/exploration.module.js.map +1 -1
- package/dist/os/exploration/handlers/list.d.ts.map +1 -1
- package/dist/os/exploration/handlers/list.js +4 -1
- package/dist/os/exploration/handlers/list.js.map +1 -1
- package/dist/os/mission/handlers/archive.d.ts.map +1 -1
- package/dist/os/mission/handlers/archive.js +7 -3
- package/dist/os/mission/handlers/archive.js.map +1 -1
- package/dist/os/mission/index.d.ts.map +1 -1
- package/dist/os/mission/index.js +13 -0
- package/dist/os/mission/index.js.map +1 -1
- package/dist/os/notes/index.d.ts.map +1 -1
- package/dist/os/notes/index.js +7 -1
- package/dist/os/notes/index.js.map +1 -1
- package/dist/os/rfc/frontmatter-io.d.ts.map +1 -1
- package/dist/os/rfc/frontmatter-io.js +6 -1
- 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 +6 -1
- package/dist/os/rfc/handlers/archive.js.map +1 -1
- package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -1
- package/dist/os/rfc/handlers/implement-stamp.js +7 -3
- package/dist/os/rfc/handlers/implement-stamp.js.map +1 -1
- package/dist/os/rfc/handlers/index-graph.d.ts.map +1 -1
- package/dist/os/rfc/handlers/index-graph.js +6 -1
- 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 -1
- 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 +6 -1
- package/dist/os/rfc/handlers/list-create.js.map +1 -1
- package/dist/os/rfc/handlers/pipeline-status.d.ts.map +1 -1
- package/dist/os/rfc/handlers/pipeline-status.js +6 -1
- package/dist/os/rfc/handlers/pipeline-status.js.map +1 -1
- package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -1
- package/dist/os/rfc/handlers/supersede-propose.js +6 -1
- 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 +7 -3
- 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/index.d.ts.map +1 -1
- package/dist/os/rfc/index.js +6 -1
- package/dist/os/rfc/index.js.map +1 -1
- package/dist/os/rfc/rfc.module.d.ts.map +1 -1
- package/dist/os/rfc/rfc.module.js +6 -1
- package/dist/os/rfc/rfc.module.js.map +1 -1
- package/dist/os/rfc/types.d.ts +7 -4
- package/dist/os/rfc/types.d.ts.map +1 -1
- package/dist/os/rfc/types.js +7 -4
- package/dist/os/rfc/types.js.map +1 -1
- package/dist/os/session/handlers/save.d.ts.map +1 -1
- package/dist/os/session/handlers/save.js +6 -1
- package/dist/os/session/handlers/save.js.map +1 -1
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +1 -1
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +6 -1
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -1
- package/dist/os/werkstatt/handlers/workspace-deps.js +3 -3
- package/dist/os/werkstatt/handlers/workspace-deps.js.map +1 -1
- package/dist/os/workflow/index.d.ts.map +1 -1
- package/dist/os/workflow/index.js +6 -1
- package/dist/os/workflow/index.js.map +1 -1
- package/dist/src/config/forge-config.d.ts +62 -4
- package/dist/src/config/forge-config.d.ts.map +1 -1
- package/dist/src/config/forge-config.js +35 -19
- package/dist/src/config/forge-config.js.map +1 -1
- package/dist/src/forge-module.d.ts.map +1 -1
- package/dist/src/forge-module.js +6 -1
- package/dist/src/forge-module.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/migration-adapters/git-utils.d.ts.map +1 -1
- package/dist/src/migration-adapters/git-utils.js +6 -2
- package/dist/src/migration-adapters/git-utils.js.map +1 -1
- package/dist/src/migration-adapters/ignored-files.d.ts.map +1 -1
- package/dist/src/migration-adapters/ignored-files.js +6 -1
- package/dist/src/migration-adapters/ignored-files.js.map +1 -1
- package/dist/src/migration-adapters/index.d.ts.map +1 -1
- package/dist/src/migration-adapters/index.js +4 -1
- package/dist/src/migration-adapters/index.js.map +1 -1
- package/dist/src/migration-adapters/types.d.ts.map +1 -1
- package/dist/src/migration-adapters/types.js +6 -2
- package/dist/src/migration-adapters/types.js.map +1 -1
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -1
- package/dist/src/onboarding/agents-generate.js +18 -14
- 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 +7 -6
- 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 +7 -13
- 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 +7 -12
- package/dist/src/onboarding/init.js.map +1 -1
- package/dist/src/onboarding/invariant-engine.d.ts.map +1 -1
- package/dist/src/onboarding/invariant-engine.js +7 -2
- package/dist/src/onboarding/invariant-engine.js.map +1 -1
- package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -1
- package/dist/src/onboarding/nested-agents-generate.js +7 -2
- 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 +11 -3
- package/dist/src/onboarding/nested-agents-templates.js.map +1 -1
- package/dist/src/onboarding/scaffold-project.d.ts.map +1 -1
- package/dist/src/onboarding/scaffold-project.js +6 -1
- package/dist/src/onboarding/scaffold-project.js.map +1 -1
- package/dist/src/onboarding/upgrade.d.ts.map +1 -1
- package/dist/src/onboarding/upgrade.js +7 -3
- package/dist/src/onboarding/upgrade.js.map +1 -1
- package/dist/src/profiles/profile-schema.d.ts +54 -4
- package/dist/src/profiles/profile-schema.d.ts.map +1 -1
- package/dist/src/profiles/profile-schema.js +34 -14
- package/dist/src/profiles/profile-schema.js.map +1 -1
- package/dist/src/profiles/stack-profile.d.ts +24 -0
- package/dist/src/profiles/stack-profile.d.ts.map +1 -1
- package/dist/src/profiles/stack-profile.js +7 -3
- package/dist/src/profiles/stack-profile.js.map +1 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +7 -9
- package/dist/src/registry.js.map +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +6 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/fs-atomic.d.ts.map +1 -1
- package/dist/src/utils/fs-atomic.js +13 -1
- package/dist/src/utils/fs-atomic.js.map +1 -1
- package/dist/src/utils/fs-idempotent.d.ts.map +1 -1
- package/dist/src/utils/fs-idempotent.js +13 -0
- package/dist/src/utils/fs-idempotent.js.map +1 -1
- package/dist/src/utils/fs-trash-sync.d.ts.map +1 -1
- package/dist/src/utils/fs-trash-sync.js +13 -1
- package/dist/src/utils/fs-trash-sync.js.map +1 -1
- package/dist/src/utils/fs-trash.d.ts.map +1 -1
- package/dist/src/utils/fs-trash.js +13 -1
- package/dist/src/utils/fs-trash.js.map +1 -1
- package/dist/src/utils/fs.d.ts.map +1 -1
- package/dist/src/utils/fs.js +14 -3
- package/dist/src/utils/fs.js.map +1 -1
- package/dist/src/utils/hash.d.ts.map +1 -1
- package/dist/src/utils/hash.js +12 -1
- package/dist/src/utils/hash.js.map +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +13 -2
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/string-utils.d.ts.map +1 -1
- package/dist/src/utils/string-utils.js +12 -1
- package/dist/src/utils/string-utils.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 +7 -8
- package/dist/src/validators/skill-validate.js.map +1 -1
- package/docs/getting-started.md +1 -1
- package/docs/reference/forge-yaml.md +38 -9
- package/docs/reference/profiles.md +8 -8
- package/os/adr/handlers/list-create.ts +4 -1
- package/os/adr/handlers/validate.ts +6 -1
- package/os/adr/types.ts +7 -3
- package/os/compass/compass.module.ts +79 -13
- package/os/compass/handlers/compass-audit-handler.ts +22 -3
- package/os/compass/handlers/compass-change-summary-handler.ts +55 -227
- package/os/compass/handlers/compass-inventory-handler.ts +30 -12
- package/os/compass/handlers/compass-inventory.ts +103 -240
- package/os/compass/handlers/compass-migrate-handler.ts +122 -0
- package/os/compass/handlers/compass-migrate.ts +361 -0
- package/os/compass/handlers/resolve-scan-root-package.test.ts +70 -0
- package/os/compass/handlers/resolve-scan-root.ts +15 -8
- package/os/compass/handlers/summary-record.ts +313 -0
- package/os/compass/handlers/tests/compass-migrate.test.ts +291 -0
- package/os/compass/handlers/tests/compass-policy.test.ts +249 -0
- package/os/compass/handlers/tests/compass-v2-contract.test.ts +9 -9
- package/os/compass/handlers/tests/summary-record.test.ts +224 -0
- package/os/compass/index.ts +23 -5
- package/os/compass/policy.ts +350 -0
- package/os/core/core.module.ts +11 -23
- package/os/core/handlers/forge-autonomy-validate.ts +7 -1
- package/os/core/handlers/package-health.ts +6 -1
- package/os/core/handlers/pinned-check.ts +6 -1
- package/os/core/handlers/pinned-validate.ts +6 -1
- package/os/core/handlers/validate.ts +6 -1
- package/os/exploration/exploration.module.ts +72 -71
- package/os/exploration/handlers/list.ts +4 -1
- package/os/mission/handlers/archive.ts +7 -3
- package/os/mission/index.ts +14 -0
- package/os/notes/index.ts +7 -1
- package/os/rfc/frontmatter-io.ts +6 -1
- package/os/rfc/handlers/archive.ts +6 -1
- package/os/rfc/handlers/implement-stamp.ts +7 -3
- package/os/rfc/handlers/index-graph.ts +6 -1
- package/os/rfc/handlers/lifecycle.ts +6 -1
- package/os/rfc/handlers/list-create.ts +6 -1
- package/os/rfc/handlers/pipeline-status.ts +6 -1
- package/os/rfc/handlers/supersede-propose.ts +6 -1
- package/os/rfc/handlers/validate-rules.ts +7 -3
- package/os/rfc/handlers/validate.ts +6 -1
- package/os/rfc/index.ts +6 -1
- package/os/rfc/rfc.module.ts +6 -1
- package/os/rfc/types.ts +7 -4
- package/os/session/handlers/save.ts +6 -1
- package/os/werkstatt/handlers/werkstatt-lock-recover.ts +6 -1
- package/os/werkstatt/handlers/workspace-deps.ts +3 -3
- package/os/workflow/index.ts +6 -1
- package/package.json +1 -1
- package/profiles/{godot-csharp.yaml → godot-game.yaml} +2 -2
- package/profiles/{knowledge-typescript-turborepo.yaml → knowledge.yaml} +1 -1
- package/profiles/{phaser-turborepo.yaml → phaser-game.yaml} +2 -2
- package/profiles/{typescript-turborepo.yaml → typescript.yaml} +2 -2
- package/skills/fo/fo-add-tests/SKILL.md +14 -0
- package/skills/fo/fo-architecture/SKILL.md +14 -0
- package/skills/fo/fo-compass-annotate/SKILL.md +14 -0
- package/skills/fo/fo-design-summit/SKILL.md +14 -0
- package/skills/fo/fo-doc-audit/SKILL.md +14 -0
- package/skills/fo/fo-explore/SKILL.md +14 -0
- package/skills/fo/fo-extract-dna/SKILL.md +14 -0
- package/skills/fo/fo-fix/SKILL.md +14 -0
- package/skills/fo/fo-handoff/SKILL.md +14 -0
- package/skills/fo/fo-harvest/SKILL.md +14 -0
- package/skills/fo/fo-idea/SKILL.md +14 -0
- package/skills/fo/fo-idea-audit/SKILL.md +14 -0
- package/skills/fo/fo-idea-create-adr/SKILL.md +14 -0
- package/skills/fo/fo-idea-create-rfc/SKILL.md +14 -0
- package/skills/fo/fo-idea-enhance/SKILL.md +14 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +14 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +14 -0
- package/skills/fo/fo-idea-implement/SKILL.md +14 -0
- package/skills/fo/fo-idea-plan/SKILL.md +14 -0
- package/skills/fo/fo-idea-status/SKILL.md +14 -0
- package/skills/fo/fo-knowledge-distill/SKILL.md +14 -0
- package/skills/fo/fo-memory-sync/SKILL.md +14 -0
- package/skills/fo/fo-qa/SKILL.md +14 -0
- package/skills/fo/fo-review/SKILL.md +14 -0
- package/skills/fo/fo-session-retro/SKILL.md +14 -0
- package/skills/fo/fo-session-save/SKILL.md +14 -0
- package/skills/fo/fo-spec-ingest/SKILL.md +14 -0
- package/skills/fo/fo-step-commit/SKILL.md +14 -0
- package/skills/fo/fo-triage/SKILL.md +14 -0
- package/skills/meta/forge-bootstrap/SKILL.md +14 -0
- package/skills/meta/port-to-forge/SKILL.md +14 -0
- package/skills/meta/skill-create/SKILL.md +14 -0
- package/skills/shared/grilling/SKILL.md +14 -0
- package/skills/shared/my-preferences/SKILL.md +14 -0
- package/skills/shared/windows-ai-tooling/SKILL.md +14 -0
- package/skills/shared/writing-great-skills/SKILL.md +14 -0
- package/src/config/forge-config.ts +40 -23
- package/src/forge-module.ts +6 -1
- package/src/index.ts +10 -2
- package/src/migration-adapters/git-utils.ts +6 -2
- package/src/migration-adapters/ignored-files.ts +6 -1
- package/src/migration-adapters/index.ts +4 -1
- package/src/migration-adapters/types.ts +6 -2
- package/src/onboarding/agents-generate.ts +23 -14
- package/src/onboarding/create.ts +7 -6
- package/src/onboarding/doctor.ts +7 -13
- package/src/onboarding/init.ts +7 -12
- package/src/onboarding/invariant-engine.ts +7 -2
- package/src/onboarding/nested-agents-generate.ts +7 -2
- package/src/onboarding/nested-agents-templates.ts +11 -3
- package/src/onboarding/scaffold-project.ts +6 -1
- package/src/onboarding/upgrade.ts +7 -3
- package/src/profiles/profile-schema.ts +42 -18
- package/src/profiles/stack-profile.ts +7 -3
- package/src/registry.ts +7 -9
- package/src/tests/agents-generate-domain.test.ts +3 -3
- package/src/tests/agents-generate.test.ts +2 -2
- package/src/tests/create.test.ts +4 -4
- package/src/tests/forge-autonomy-validate.test.ts +1 -1
- package/src/tests/package-files.test.ts +53 -1
- package/src/tests/profile-schema.test.ts +4 -4
- package/src/tests/scaffold-project.test.ts +3 -3
- package/src/tests/stack-profile.test.ts +12 -12
- package/src/types.ts +6 -1
- package/src/utils/fs-atomic.ts +13 -1
- package/src/utils/fs-idempotent.ts +13 -0
- package/src/utils/fs-trash-sync.ts +13 -1
- package/src/utils/fs-trash.ts +13 -1
- package/src/utils/fs.ts +14 -3
- package/src/utils/hash.ts +12 -1
- package/src/utils/index.ts +13 -2
- package/src/utils/string-utils.ts +12 -1
- package/src/validators/port-validate.ts +1 -1
- package/src/validators/skill-validate.ts +7 -8
- package/skills/shared/extension-e2e-mitm/SKILL.md +0 -53
- package/skills/shared/extension-e2e-mitm/fixture-proxy.ts +0 -113
- package/src/types/werkstatt-engine-shims.d.ts +0 -1416
- package/src/types/werkstatt-shared-shims.d.ts +0 -5686
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type CompassPolicy } from "../policy.ts";
|
|
2
|
+
import type { ForgeCommandInput, ForgeCommandResult, ForgeRuntimeContext } from "../../../src/types.ts";
|
|
3
|
+
export declare const CHANGE_SUMMARY_WINDOW = 5;
|
|
4
|
+
export interface SummaryRecordInput {
|
|
5
|
+
id: string;
|
|
6
|
+
files: string[];
|
|
7
|
+
text?: string;
|
|
8
|
+
workpiece?: string;
|
|
9
|
+
}
|
|
10
|
+
export type SummaryRecordSkipReason = "no-block" | "duplicate" | "unparseable";
|
|
11
|
+
export interface SummaryRecordResult {
|
|
12
|
+
command: "compass.summary.record";
|
|
13
|
+
status: "pass";
|
|
14
|
+
recorded: string[];
|
|
15
|
+
collapsed: string[];
|
|
16
|
+
skipped: Array<{
|
|
17
|
+
file: string;
|
|
18
|
+
reason: SummaryRecordSkipReason;
|
|
19
|
+
}>;
|
|
20
|
+
keyDecisionsReminders: string[];
|
|
21
|
+
}
|
|
22
|
+
interface ParsedChangeSummary {
|
|
23
|
+
items: string[];
|
|
24
|
+
historyIds: string[];
|
|
25
|
+
}
|
|
26
|
+
export declare function parseChangeSummary(block: string): ParsedChangeSummary;
|
|
27
|
+
/** Merge existing + new history IDs: dedupe, per-namespace ascending numeric order. */
|
|
28
|
+
export declare function mergeHistoryIds(existing: string[], incoming: string[], policy: CompassPolicy): string[];
|
|
29
|
+
export declare function getLineCommentPrefix(filePath: string): string | null;
|
|
30
|
+
export declare function buildChangeSummaryBlock(items: string[], historyIds: string[], filePath: string): string;
|
|
31
|
+
export declare function stripConventionalPrefix(subject: string): string;
|
|
32
|
+
export declare function sanitizeItemText(text: string): string;
|
|
33
|
+
export declare function isValidGovernanceId(id: string, policy: CompassPolicy): boolean;
|
|
34
|
+
interface RecordOutcome {
|
|
35
|
+
recorded: boolean;
|
|
36
|
+
collapsed: boolean;
|
|
37
|
+
skipReason?: SummaryRecordSkipReason;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Append `ID: text` to one file's CHANGE_SUMMARY and collapse the window.
|
|
41
|
+
* Returns the outcome; writes the file only when mutated and not dry-run.
|
|
42
|
+
*/
|
|
43
|
+
export declare function recordSummaryItem(absPath: string, relPath: string, id: string, text: string, dryRun: boolean, policy: CompassPolicy): Promise<RecordOutcome>;
|
|
44
|
+
export declare function runCompassSummaryRecord(input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<SummaryRecordResult>>;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=summary-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-record.d.ts","sourceRoot":"","sources":["../../../../os/compass/handlers/summary-record.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAgD,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhG,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAO/B,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAOvC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,wBAAwB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAA;KAAE,CAAC,CAAC;IAClE,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAerE;AAWD,uFAAuF;AACvF,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,aAAa,GACpB,MAAM,EAAE,CAUV;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIpE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAcR;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAQD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAE9E;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CA8CxB;AASD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAoElD"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>compass.summary.record — commit-time append of governance-referencing
|
|
4
|
+
items to CHANGE_SUMMARY blocks per RFC-1095. Collapses the 5-item window into
|
|
5
|
+
<history>, dedupes by ID+text, and reminds about KEY_DECISIONS on risk files.</purpose>
|
|
6
|
+
<non-goals>
|
|
7
|
+
<item>Do not create CHANGE_SUMMARY blocks — headers are authored by fo-compass-annotate.</item>
|
|
8
|
+
<item>Do not validate semantic quality of item text — record writes what the commit declares.</item>
|
|
9
|
+
<item>Do not import @warpgogol/* packages — this handler is autonomous (FORGE-AUTONOMY-01).</item>
|
|
10
|
+
</non-goals>
|
|
11
|
+
</MODULE_CONTRACT>
|
|
12
|
+
<KEY_DECISIONS>
|
|
13
|
+
<item>The 5-item window collapses oldest-first into history — history holds IDs only, never prose.</item>
|
|
14
|
+
<item>Recording is header-region guarded — a CHANGE_SUMMARY deeper than 120 lines is a doc example, not a header.</item>
|
|
15
|
+
<item>Item text is sanitized on record — literal Compass tags would corrupt history parsing.</item>
|
|
16
|
+
</KEY_DECISIONS>
|
|
17
|
+
<CHANGE_SUMMARY>
|
|
18
|
+
<item>RFC-1095: header-region guard in summary.record, restore test fixture with dynamic tags</item>
|
|
19
|
+
<item>RFC-1097: steps 1-4 — compass.migrate codemod
|
|
20
|
+
|
|
21
|
+
Add the v1 to v2 Compass header codemod: migrateFile pure transform (collapse, strip, seed, reorder, purpose-flag actions), migrateWorkspace walker, runCompassMigrate handler with dirty-tree refusal and --force/--files/--dry-run flags, module registration, and 15 unit tests.</item>
|
|
22
|
+
<item>RFC-1097: sweep — packages/forge + services clean
|
|
23
|
+
|
|
24
|
+
Sweep batch 2: real KEY_DECISIONS on 10 files, expanded purposes (CONTRACT-02/PURPOSE-02), headers on mission/index + gen-upstreams, sanitizeItemText in summary.record (literal Compass tags corrupted history), excludedPaths for wrangler types, test-fixtures testPattern. forge+services now 0 diagnostics under --mode error.</item>
|
|
25
|
+
<item>RFC-1097: sweep — engine package clean
|
|
26
|
+
|
|
27
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. engine package now 0 diagnostics.</item>
|
|
28
|
+
<item>RFC-1097: AC-4 banned literal in os/compass handlers
|
|
29
|
+
|
|
30
|
+
compass-migrate-handler hint used a consumer-specific run command — switched to generic 'pnpm exec forge run' convention. Reworded recorded CHANGE_SUMMARY items in 3 handlers to drop the consumer-specific literal. compass-policy AC-4 test green (65/65).</item>
|
|
31
|
+
<history>RFC-1095</history>
|
|
32
|
+
</CHANGE_SUMMARY>
|
|
33
|
+
*/
|
|
34
|
+
import { existsSync } from "node:fs";
|
|
35
|
+
import { readFile } from "node:fs/promises";
|
|
36
|
+
import { resolve, relative } from "node:path";
|
|
37
|
+
import { detectRiskClass, getWorkspaceRelativeSegments } from "./compass-inventory.js";
|
|
38
|
+
import { parseGovernanceIdParts, resolveCompassPolicy } from "../policy.js";
|
|
39
|
+
import { resolveCompassScanRoot } from "./resolve-scan-root.js";
|
|
40
|
+
import { writeFileIfChanged } from "../../../src/utils/fs-idempotent.js";
|
|
41
|
+
const CHANGE_SUMMARY_BLOCK_RE = /<CHANGE_SUMMARY>[\s\S]*?<\/CHANGE_SUMMARY>/;
|
|
42
|
+
const ITEM_RE = /<item>([\s\S]*?)<\/item>/g;
|
|
43
|
+
const HISTORY_RE = /<history>([\s\S]*?)<\/history>/;
|
|
44
|
+
const CONVENTIONAL_PREFIX_RE = /^[a-z]+(\([^)]*\))?!?:\s*/i;
|
|
45
|
+
export const CHANGE_SUMMARY_WINDOW = 5;
|
|
46
|
+
// A CHANGE_SUMMARY block is a file header only when it starts within this many
|
|
47
|
+
// lines from the top. Deeper matches are examples inside template literals or
|
|
48
|
+
// fenced doc sections, not headers.
|
|
49
|
+
const HEADER_SCAN_LINES = 120;
|
|
50
|
+
export function parseChangeSummary(block) {
|
|
51
|
+
const items = [];
|
|
52
|
+
let m;
|
|
53
|
+
const re = new RegExp(ITEM_RE.source, "g");
|
|
54
|
+
while ((m = re.exec(block)) !== null) {
|
|
55
|
+
items.push(m[1].trim());
|
|
56
|
+
}
|
|
57
|
+
const historyMatch = block.match(HISTORY_RE);
|
|
58
|
+
const historyIds = historyMatch
|
|
59
|
+
? historyMatch[1]
|
|
60
|
+
.split(",")
|
|
61
|
+
.map((t) => t.trim())
|
|
62
|
+
.filter(Boolean)
|
|
63
|
+
: [];
|
|
64
|
+
return { items, historyIds };
|
|
65
|
+
}
|
|
66
|
+
function normalizeItemText(text) {
|
|
67
|
+
return text.trim().replace(/\s+/g, " ");
|
|
68
|
+
}
|
|
69
|
+
function leadingGovernanceId(item, policy) {
|
|
70
|
+
const match = item.match(policy.idPattern);
|
|
71
|
+
return match && match.index === 0 ? match[0] : null;
|
|
72
|
+
}
|
|
73
|
+
/** Merge existing + new history IDs: dedupe, per-namespace ascending numeric order. */
|
|
74
|
+
export function mergeHistoryIds(existing, incoming, policy) {
|
|
75
|
+
const all = [...new Set([...existing, ...incoming])].filter((id) => policy.idPatternFull.test(id));
|
|
76
|
+
return all.sort((a, b) => {
|
|
77
|
+
const pa = parseGovernanceIdParts(a);
|
|
78
|
+
const pb = parseGovernanceIdParts(b);
|
|
79
|
+
const ns = pa.namespace.localeCompare(pb.namespace);
|
|
80
|
+
return ns !== 0 ? ns : pa.numeric - pb.numeric;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export function getLineCommentPrefix(filePath) {
|
|
84
|
+
if (filePath.endsWith(".gd"))
|
|
85
|
+
return "# ";
|
|
86
|
+
if (filePath.endsWith(".tscn") || filePath.endsWith(".tres"))
|
|
87
|
+
return "; ";
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
export function buildChangeSummaryBlock(items, historyIds, filePath) {
|
|
91
|
+
const prefix = getLineCommentPrefix(filePath);
|
|
92
|
+
const lines = ["<CHANGE_SUMMARY>"];
|
|
93
|
+
for (const item of items) {
|
|
94
|
+
lines.push(` <item>${item}</item>`);
|
|
95
|
+
}
|
|
96
|
+
if (historyIds.length > 0) {
|
|
97
|
+
lines.push(` <history>${historyIds.join(", ")}</history>`);
|
|
98
|
+
}
|
|
99
|
+
lines.push("</CHANGE_SUMMARY>");
|
|
100
|
+
if (prefix) {
|
|
101
|
+
return lines.map((line, i) => (i === 0 ? line : prefix + line)).join("\n");
|
|
102
|
+
}
|
|
103
|
+
return lines.join("\n");
|
|
104
|
+
}
|
|
105
|
+
export function stripConventionalPrefix(subject) {
|
|
106
|
+
return subject.replace(CONVENTIONAL_PREFIX_RE, "").trim();
|
|
107
|
+
}
|
|
108
|
+
// Literal Compass block tags inside an item corrupt block parsing — a commit
|
|
109
|
+
// message saying "collapsed into history" would be matched by HISTORY_RE and
|
|
110
|
+
// produce phantom non-ID tokens (CS-07). Strip the angle brackets on record.
|
|
111
|
+
const COMPASS_TAG_LITERAL_RE = /<\/?(?:CHANGE_SUMMARY|MODULE_CONTRACT|KEY_DECISIONS|history|item|purpose|non-goals)>/g;
|
|
112
|
+
export function sanitizeItemText(text) {
|
|
113
|
+
return text.replace(COMPASS_TAG_LITERAL_RE, (tag) => tag.replace(/[<>]/g, ""));
|
|
114
|
+
}
|
|
115
|
+
export function isValidGovernanceId(id, policy) {
|
|
116
|
+
return policy.idPatternFull.test(id);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Append `ID: text` to one file's CHANGE_SUMMARY and collapse the window.
|
|
120
|
+
* Returns the outcome; writes the file only when mutated and not dry-run.
|
|
121
|
+
*/
|
|
122
|
+
export async function recordSummaryItem(absPath, relPath, id, text, dryRun, policy) {
|
|
123
|
+
const source = await readFile(absPath, "utf8");
|
|
124
|
+
const blockMatch = source.match(CHANGE_SUMMARY_BLOCK_RE);
|
|
125
|
+
// Header-region guard: a CHANGE_SUMMARY is a header only when it sits at the
|
|
126
|
+
// top of the file. Blocks deeper in the source are examples inside template
|
|
127
|
+
// literals or fenced doc sections — recording into them corrupts the file.
|
|
128
|
+
const inHeaderRegion = blockMatch !== null &&
|
|
129
|
+
blockMatch.index !== undefined &&
|
|
130
|
+
source.slice(0, blockMatch.index).split("\n").length <= HEADER_SCAN_LINES;
|
|
131
|
+
if (!blockMatch || !inHeaderRegion) {
|
|
132
|
+
return {
|
|
133
|
+
recorded: false,
|
|
134
|
+
collapsed: false,
|
|
135
|
+
skipReason: source.includes("<CHANGE_SUMMARY>") ? "unparseable" : "no-block",
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const { items, historyIds } = parseChangeSummary(blockMatch[0]);
|
|
139
|
+
// Avoid "RFC-1095: RFC-1095 ..." when the text already leads with the same ID;
|
|
140
|
+
// a text equal to the bare ID collapses to the bare-ID item form.
|
|
141
|
+
const strippedText = text.startsWith(id)
|
|
142
|
+
? text.slice(id.length).replace(/^\s*[:—-]?\s*/, "")
|
|
143
|
+
: text;
|
|
144
|
+
const newItem = strippedText.length > 0 ? `${id}: ${sanitizeItemText(strippedText)}` : id;
|
|
145
|
+
const normalizedNew = normalizeItemText(newItem);
|
|
146
|
+
if (items.some((item) => normalizeItemText(item) === normalizedNew)) {
|
|
147
|
+
return { recorded: false, collapsed: false, skipReason: "duplicate" };
|
|
148
|
+
}
|
|
149
|
+
const nextItems = [...items, newItem];
|
|
150
|
+
const collapsedIds = [];
|
|
151
|
+
while (nextItems.length > CHANGE_SUMMARY_WINDOW) {
|
|
152
|
+
const oldest = nextItems.shift();
|
|
153
|
+
const oldId = leadingGovernanceId(oldest, policy);
|
|
154
|
+
if (oldId)
|
|
155
|
+
collapsedIds.push(oldId);
|
|
156
|
+
}
|
|
157
|
+
const collapsed = collapsedIds.length > 0;
|
|
158
|
+
const nextHistory = mergeHistoryIds(historyIds, collapsedIds, policy);
|
|
159
|
+
const newBlock = buildChangeSummaryBlock(nextItems, nextHistory, relPath);
|
|
160
|
+
const transformed = source.replace(CHANGE_SUMMARY_BLOCK_RE, newBlock);
|
|
161
|
+
if (!dryRun && transformed !== source) {
|
|
162
|
+
await writeFileIfChanged(absPath, transformed);
|
|
163
|
+
}
|
|
164
|
+
return { recorded: true, collapsed };
|
|
165
|
+
}
|
|
166
|
+
function riskReminderNeeded(relPath, source, policy) {
|
|
167
|
+
const segments = relPath.split("/").filter(Boolean);
|
|
168
|
+
const workspaceRel = getWorkspaceRelativeSegments(segments, policy).join("/");
|
|
169
|
+
const risk = detectRiskClass(relPath, workspaceRel, policy);
|
|
170
|
+
return risk === "medium" || risk === "high" || source.includes("<KEY_DECISIONS>");
|
|
171
|
+
}
|
|
172
|
+
export async function runCompassSummaryRecord(input, context) {
|
|
173
|
+
const scanRoot = resolveCompassScanRoot(input, context);
|
|
174
|
+
const baseRoot = scanRoot ?? context.workspaceRoot;
|
|
175
|
+
const policy = resolveCompassPolicy(baseRoot, context.forgeRoot);
|
|
176
|
+
const id = input.flags["id"];
|
|
177
|
+
if (typeof id !== "string" || !isValidGovernanceId(id, policy)) {
|
|
178
|
+
context.logger.error(`[compass.summary.record] --id is required and must be a governance ID (e.g. RFC-1095), got: ${String(id)}`);
|
|
179
|
+
return { exitCode: 1, summary: "invalid or missing --id" };
|
|
180
|
+
}
|
|
181
|
+
const rawFiles = input.flags["files"];
|
|
182
|
+
const files = Array.isArray(rawFiles)
|
|
183
|
+
? rawFiles
|
|
184
|
+
: typeof rawFiles === "string"
|
|
185
|
+
? rawFiles.split(/\s+/).filter(Boolean)
|
|
186
|
+
: [];
|
|
187
|
+
const rawText = input.flags["text"];
|
|
188
|
+
const text = typeof rawText === "string" && rawText.trim().length > 0 ? rawText.trim() : id;
|
|
189
|
+
const result = {
|
|
190
|
+
command: "compass.summary.record",
|
|
191
|
+
status: "pass",
|
|
192
|
+
recorded: [],
|
|
193
|
+
collapsed: [],
|
|
194
|
+
skipped: [],
|
|
195
|
+
keyDecisionsReminders: [],
|
|
196
|
+
};
|
|
197
|
+
for (const file of files) {
|
|
198
|
+
const absPath = resolve(baseRoot, file);
|
|
199
|
+
const relPath = relative(baseRoot, absPath).replace(/\\/g, "/");
|
|
200
|
+
if (!existsSync(absPath)) {
|
|
201
|
+
result.skipped.push({ file, reason: "unparseable" });
|
|
202
|
+
context.logger.warn(`[compass.summary.record] skipped ${file}: file not found`);
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
try {
|
|
206
|
+
const outcome = await recordSummaryItem(absPath, relPath, id, text, context.dryRun, policy);
|
|
207
|
+
if (outcome.skipReason) {
|
|
208
|
+
result.skipped.push({ file, reason: outcome.skipReason });
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (outcome.recorded) {
|
|
212
|
+
result.recorded.push(relPath);
|
|
213
|
+
if (outcome.collapsed)
|
|
214
|
+
result.collapsed.push(relPath);
|
|
215
|
+
const source = await readFile(absPath, "utf8");
|
|
216
|
+
if (riskReminderNeeded(relPath, source, policy)) {
|
|
217
|
+
result.keyDecisionsReminders.push(relPath);
|
|
218
|
+
context.logger.warn(`[compass.summary.record] review KEY_DECISIONS in ${relPath}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
result.skipped.push({ file, reason: "unparseable" });
|
|
224
|
+
context.logger.warn(`[compass.summary.record] skipped ${file}: ${err instanceof Error ? err.message : String(err)}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
data: result,
|
|
229
|
+
exitCode: 0,
|
|
230
|
+
summary: `[compass.summary.record] recorded=${result.recorded.length}, collapsed=${result.collapsed.length}, skipped=${result.skipped.length}`,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=summary-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-record.js","sourceRoot":"","sources":["../../../../os/compass/handlers/summary-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,8 @@ export { resolveCompassScanRoot } from "./handlers/resolve-scan-root.ts";
|
|
|
4
4
|
export { getRevisionByPath, type RevisionByPathResult } from "./handlers/git-revision.ts";
|
|
5
5
|
export { runCompassInventory, runCompassValidation } from "./handlers/compass-inventory-handler.ts";
|
|
6
6
|
export { runCompassAuditPlan, runCompassAuditRecord, runCompassAuditBaseline, runCompassAuditValidate, isAuditDue, } from "./handlers/compass-audit-handler.ts";
|
|
7
|
-
export {
|
|
7
|
+
export { runCompassSummaryTrim } from "./handlers/compass-change-summary-handler.ts";
|
|
8
|
+
export { runCompassMigrate } from "./handlers/compass-migrate-handler.ts";
|
|
9
|
+
export { migrateFile, migrateWorkspace, type MigrateAction, type MigrateResult, } from "./handlers/compass-migrate.ts";
|
|
10
|
+
export { runCompassSummaryRecord, parseChangeSummary, mergeHistoryIds, buildChangeSummaryBlock, stripConventionalPrefix, isValidGovernanceId, CHANGE_SUMMARY_WINDOW, type SummaryRecordResult, type SummaryRecordSkipReason, } from "./handlers/summary-record.ts";
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../os/compass/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../os/compass/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,6BAA6B,EAC7B,KAAK,qBAAqB,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpG,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,8BAA8B,CAAC"}
|
package/dist/os/compass/index.js
CHANGED
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
</MODULE_CONTRACT>
|
|
8
8
|
<CHANGE_SUMMARY>
|
|
9
9
|
<item>RFC-0374: initial compass module barrel.</item>
|
|
10
|
+
<item>RFC-1095: compass.summary.record, trim repair rewrite, commit integration</item>
|
|
11
|
+
<item>RFC-1095: review findings: execFileSync git add, drop speculative barrel exports</item>
|
|
12
|
+
<item>RFC-1097: steps 1-4 — compass.migrate codemod
|
|
13
|
+
|
|
14
|
+
Add the v1 to v2 Compass header codemod: migrateFile pure transform (collapse, strip, seed, reorder, purpose-flag actions), migrateWorkspace walker, runCompassMigrate handler with dirty-tree refusal and --force/--files/--dry-run flags, module registration, and 15 unit tests.</item>
|
|
10
15
|
</CHANGE_SUMMARY>
|
|
11
16
|
*/
|
|
12
17
|
export { forgeCompassModule } from "./compass.module.js";
|
|
@@ -15,5 +20,8 @@ export { resolveCompassScanRoot } from "./handlers/resolve-scan-root.js";
|
|
|
15
20
|
export { getRevisionByPath } from "./handlers/git-revision.js";
|
|
16
21
|
export { runCompassInventory, runCompassValidation } from "./handlers/compass-inventory-handler.js";
|
|
17
22
|
export { runCompassAuditPlan, runCompassAuditRecord, runCompassAuditBaseline, runCompassAuditValidate, isAuditDue, } from "./handlers/compass-audit-handler.js";
|
|
18
|
-
export {
|
|
23
|
+
export { runCompassSummaryTrim } from "./handlers/compass-change-summary-handler.js";
|
|
24
|
+
export { runCompassMigrate } from "./handlers/compass-migrate-handler.js";
|
|
25
|
+
export { migrateFile, migrateWorkspace, } from "./handlers/compass-migrate.js";
|
|
26
|
+
export { runCompassSummaryRecord, parseChangeSummary, mergeHistoryIds, buildChangeSummaryBlock, stripConventionalPrefix, isValidGovernanceId, CHANGE_SUMMARY_WINDOW, } from "./handlers/summary-record.js";
|
|
19
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../os/compass/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../os/compass/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;EAeE;AAEF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,6BAA6B,GAE9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAA6B,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpG,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,gBAAgB,GAGjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export type CompassRiskClass = "high" | "medium" | "low";
|
|
2
|
+
export type CompassWorkspaceKind = "app" | "package" | "service";
|
|
3
|
+
export interface CompassLayerRule {
|
|
4
|
+
pattern: string;
|
|
5
|
+
layer: string;
|
|
6
|
+
risk: CompassRiskClass;
|
|
7
|
+
}
|
|
8
|
+
export interface CompassExcludedPath {
|
|
9
|
+
pattern: string;
|
|
10
|
+
reason: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CompassPolicySource {
|
|
13
|
+
/** Stack profile id that contributed a `compass:` section, or null. */
|
|
14
|
+
profile: string | null;
|
|
15
|
+
/** Keys the consumer's bindings.compass overrode. */
|
|
16
|
+
overriddenKeys: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface CompassPolicy {
|
|
19
|
+
fileExtensions: ReadonlySet<string>;
|
|
20
|
+
testPatterns: readonly string[];
|
|
21
|
+
scanRoots: readonly string[];
|
|
22
|
+
ignoredDirs: ReadonlySet<string>;
|
|
23
|
+
ignoredDirPrefixes: readonly string[];
|
|
24
|
+
/** picomatch globs on the root-relative path that force riskClass=high. */
|
|
25
|
+
highRiskPaths: readonly string[];
|
|
26
|
+
/** Governance-ID detection pattern (unanchored, as configured). */
|
|
27
|
+
idPattern: RegExp;
|
|
28
|
+
/** `^(?:idPattern)$` — full-string governance-ID match. */
|
|
29
|
+
idPatternFull: RegExp;
|
|
30
|
+
/** `^(?:idPattern)` — leading governance-ID match. */
|
|
31
|
+
idPatternPrefix: RegExp;
|
|
32
|
+
purposeBoilerplatePatterns: readonly RegExp[];
|
|
33
|
+
/** Ordered first-match layer rules on the workspace-relative path. */
|
|
34
|
+
layerRules: readonly CompassLayerRule[];
|
|
35
|
+
workspaceKinds: Readonly<Record<string, CompassWorkspaceKind>>;
|
|
36
|
+
/** Workspace-relative globs that mark a file excluded with a reason. */
|
|
37
|
+
excludedPaths: readonly CompassExcludedPath[];
|
|
38
|
+
source: CompassPolicySource;
|
|
39
|
+
/** First-match layer rule for a workspace-relative path. */
|
|
40
|
+
matchLayer(workspaceRelativePath: string): CompassLayerRule | undefined;
|
|
41
|
+
/** Whether a root-relative path is forced high-risk. */
|
|
42
|
+
isHighRisk(pathFromRoot: string): boolean;
|
|
43
|
+
/** Whether a workspace-relative path is a test file. */
|
|
44
|
+
isTestPath(workspaceRelativePath: string): boolean;
|
|
45
|
+
/** Exclusion reason for a workspace-relative path, if any. */
|
|
46
|
+
excludedReason(workspaceRelativePath: string): string | undefined;
|
|
47
|
+
}
|
|
48
|
+
export declare class CompassPolicyConfigError extends Error {
|
|
49
|
+
readonly key: string;
|
|
50
|
+
constructor(key: string, detail: string);
|
|
51
|
+
}
|
|
52
|
+
/** Split a `NAMESPACE-NUMBER` governance ID on its last dash. */
|
|
53
|
+
export declare function parseGovernanceIdParts(id: string): {
|
|
54
|
+
namespace: string;
|
|
55
|
+
numeric: number;
|
|
56
|
+
} | null;
|
|
57
|
+
/**
|
|
58
|
+
* Resolve the effective Compass policy for a workspace: generic defaults,
|
|
59
|
+
* overlaid by the stack profile `compass:` section (when forge.yaml declares
|
|
60
|
+
* `profile`), then by `bindings.compass`. Missing or unreadable forge.yaml
|
|
61
|
+
* yields the generic policy. Invalid regexes throw CompassPolicyConfigError
|
|
62
|
+
* naming the offending key.
|
|
63
|
+
*/
|
|
64
|
+
export declare function resolveCompassPolicy(workspaceRoot: string, forgeRoot?: string): CompassPolicy;
|
|
65
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../os/compass/policy.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qDAAqD;IACrD,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,2EAA2E;IAC3E,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,0BAA0B,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,sEAAsE;IACtE,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACxC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC/D,wEAAwE;IACxE,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,4DAA4D;IAC5D,UAAU,CAAC,qBAAqB,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACxE,wDAAwD;IACxD,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,wDAAwD;IACxD,UAAU,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC;IACnD,8DAA8D;IAC9D,cAAc,CAAC,qBAAqB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnE;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKxC;AAsID,iEAAiE;AACjE,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIhG;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAyH7F"}
|