@openrig/cli 0.5.1 → 0.5.3
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/daemon/assets/guidance/openrig-start.md +21 -64
- package/daemon/assets/plugins/openrig-core/hooks/claude.json +36 -0
- package/daemon/assets/plugins/openrig-core/hooks/codex.json +27 -0
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +132 -0
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +35 -3
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +8 -95
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +63 -20
- package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +6 -2
- package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +28 -2
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +42 -52
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +23 -1
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +7 -2
- package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +64 -0
- package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/SKILL.md +235 -0
- package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +31 -1
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +48 -0
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +211 -0
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +8 -0
- package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +28 -1
- package/daemon/context-packs/skills/core/agent-starters/SKILL.md +132 -0
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +112 -0
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/attention-queue/SKILL.md +264 -0
- package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +195 -0
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/human-in-the-loop/SKILL.md +104 -0
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +378 -0
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-cmux/SKILL.md +81 -0
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-herdr/SKILL.md +153 -0
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +460 -0
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/rig-lifecycle/SKILL.md +127 -0
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +160 -0
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/specification-system/SKILL.md +103 -0
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/watchdog/SKILL.md +126 -0
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/backlog-capture/SKILL.md +43 -0
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/context-builder/SKILL.md +87 -0
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/exec-summary/SKILL.md +84 -0
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/office-hours/SKILL.md +129 -0
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/plan-review/SKILL.md +98 -0
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +113 -0
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/ui-mockup/SKILL.md +76 -0
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/development-team/SKILL.md +156 -0
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +307 -0
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/oversight-team/SKILL.md +106 -0
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/review-team/SKILL.md +213 -0
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/agent-browser/LOCAL-INSIGHTS.md +189 -0
- package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +40 -0
- package/daemon/context-packs/skills/process/agent-browser/SKILL.md +427 -0
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +13 -0
- package/daemon/context-packs/skills/process/brainstorming/OPENRIG.md +48 -0
- package/daemon/context-packs/skills/process/brainstorming/SKILL.md +107 -0
- package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/context-engineering/SKILL.md +479 -0
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/dogfood/SKILL.md +225 -0
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +13 -0
- package/daemon/context-packs/skills/process/dogfood/references/issue-taxonomy.md +109 -0
- package/daemon/context-packs/skills/process/dogfood/templates/dogfood-report-template.md +53 -0
- package/daemon/context-packs/skills/process/executing-plans/OPENRIG.md +56 -0
- package/daemon/context-packs/skills/process/executing-plans/SKILL.md +94 -0
- package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/frontend-design/LICENSE.txt +177 -0
- package/daemon/context-packs/skills/process/frontend-design/SKILL.md +50 -0
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +301 -0
- package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting.md +115 -0
- package/daemon/context-packs/skills/process/systematic-debugging/defense-in-depth.md +122 -0
- package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +63 -0
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +19 -0
- package/daemon/context-packs/skills/process/systematic-debugging/root-cause-tracing.md +169 -0
- package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +385 -0
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/test-driven-development/testing-anti-patterns.md +299 -0
- package/daemon/context-packs/skills/process/using-superpowers/OPENRIG.md +48 -0
- package/daemon/context-packs/skills/process/using-superpowers/SKILL.md +106 -0
- package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +155 -0
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/writing-plans/OPENRIG.md +52 -0
- package/daemon/context-packs/skills/process/writing-plans/SKILL.md +126 -0
- package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +11 -0
- package/daemon/context-packs/world/install/01-world-from-primitives.md +97 -0
- package/daemon/context-packs/world/install/02-permission-self-sleep.md +141 -0
- package/daemon/context-packs/world/install/03-what-this-is-for.md +86 -0
- package/daemon/context-packs/world/install/04-ontology.md +790 -0
- package/daemon/context-packs/world/install/05-harness-power-use.md +355 -0
- package/daemon/context-packs/world/install/06-a-competent-turn.md +225 -0
- package/daemon/context-packs/world/install/manifest.yaml +125 -0
- package/daemon/context-packs/world/install/reference-material.md +125 -0
- package/daemon/context-packs/world/install/what-you-can-do.md +416 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +7 -4
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/claude-resume.js +2 -2
- package/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +11 -2
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +18 -10
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts +10 -2
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +27 -7
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/adapters/yolo-mode.d.ts +18 -0
- package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
- package/daemon/dist/adapters/yolo-mode.js +21 -0
- package/daemon/dist/adapters/yolo-mode.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/domain/codex-thread-id.d.ts +100 -2
- package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/daemon/dist/domain/codex-thread-id.js +180 -6
- package/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
- package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
- package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
- package/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
- package/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/profile-composer.js +125 -0
- package/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
- package/daemon/dist/domain/crash-cart-conductor.d.ts +173 -0
- package/daemon/dist/domain/crash-cart-conductor.d.ts.map +1 -0
- package/daemon/dist/domain/crash-cart-conductor.js +233 -0
- package/daemon/dist/domain/crash-cart-conductor.js.map +1 -0
- package/daemon/dist/domain/crash-cart-probes.d.ts +7 -6
- package/daemon/dist/domain/crash-cart-probes.d.ts.map +1 -1
- package/daemon/dist/domain/crash-cart-probes.js +57 -7
- package/daemon/dist/domain/crash-cart-probes.js.map +1 -1
- package/daemon/dist/domain/hosts/fanout-contract.d.ts +4 -0
- package/daemon/dist/domain/hosts/fanout-contract.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/fanout-contract.js +15 -0
- package/daemon/dist/domain/hosts/fanout-contract.js.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +11 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.js +34 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
- package/daemon/dist/domain/markdown-address.d.ts +56 -0
- package/daemon/dist/domain/markdown-address.d.ts.map +1 -0
- package/daemon/dist/domain/markdown-address.js +188 -0
- package/daemon/dist/domain/markdown-address.js.map +1 -0
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +73 -0
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -0
- package/daemon/dist/domain/model-divergence/current-generation-record.js +204 -0
- package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -0
- package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +13 -0
- package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -0
- package/daemon/dist/domain/model-divergence/effective-model-readers.js +163 -0
- package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -0
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +125 -0
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -0
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +199 -0
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -0
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
- package/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
- package/daemon/dist/domain/permission-drift-observer.js +6 -1
- package/daemon/dist/domain/permission-drift-observer.js.map +1 -1
- package/daemon/dist/domain/predecessor-recap-resolver.d.ts +10 -3
- package/daemon/dist/domain/predecessor-recap-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/predecessor-recap-resolver.js +61 -14
- package/daemon/dist/domain/predecessor-recap-resolver.js.map +1 -1
- package/daemon/dist/domain/process-census.d.ts +25 -0
- package/daemon/dist/domain/process-census.d.ts.map +1 -0
- package/daemon/dist/domain/process-census.js +47 -0
- package/daemon/dist/domain/process-census.js.map +1 -0
- package/daemon/dist/domain/resume-metadata-refresher.d.ts +41 -3
- package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.js +74 -31
- package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/daemon/dist/domain/review/compose.d.ts +5 -26
- package/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/compose.js +31 -57
- package/daemon/dist/domain/review/compose.js.map +1 -1
- package/daemon/dist/domain/review/gather.d.ts.map +1 -1
- package/daemon/dist/domain/review/gather.js +3 -2
- package/daemon/dist/domain/review/gather.js.map +1 -1
- package/daemon/dist/domain/{rig-policy/rig-policy-defaults.d.ts → rig-mode/rig-mode-defaults.d.ts} +2 -2
- package/daemon/dist/domain/rig-mode/rig-mode-defaults.d.ts.map +1 -0
- package/daemon/dist/domain/{rig-policy/rig-policy-defaults.js → rig-mode/rig-mode-defaults.js} +1 -1
- package/daemon/dist/domain/rig-mode/rig-mode-defaults.js.map +1 -0
- package/{node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-store.d.ts → daemon/dist/domain/rig-mode/rig-mode-store.d.ts} +6 -6
- package/daemon/dist/domain/rig-mode/rig-mode-store.d.ts.map +1 -0
- package/daemon/dist/domain/{rig-policy/rig-policy-store.js → rig-mode/rig-mode-store.js} +5 -5
- package/daemon/dist/domain/rig-mode/rig-mode-store.js.map +1 -0
- package/daemon/dist/domain/{rig-policy/rig-policy-types.d.ts → rig-mode/rig-mode-types.d.ts} +1 -1
- package/daemon/dist/domain/rig-mode/rig-mode-types.d.ts.map +1 -0
- package/{node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-types.js → daemon/dist/domain/rig-mode/rig-mode-types.js} +1 -1
- package/daemon/dist/domain/rig-mode/rig-mode-types.js.map +1 -0
- package/{node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-validator.d.ts → daemon/dist/domain/rig-mode/rig-mode-validator.d.ts} +2 -2
- package/daemon/dist/domain/rig-mode/rig-mode-validator.d.ts.map +1 -0
- package/daemon/dist/domain/{rig-policy/rig-policy-validator.js → rig-mode/rig-mode-validator.js} +3 -3
- package/daemon/dist/domain/rig-mode/rig-mode-validator.js.map +1 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +39 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts +7 -0
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +25 -2
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
- package/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
- package/daemon/dist/domain/scope/logical-checkbox.js +65 -0
- package/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
- package/daemon/dist/domain/scope/node-file.d.ts +37 -0
- package/daemon/dist/domain/scope/node-file.d.ts.map +1 -0
- package/daemon/dist/domain/scope/node-file.js +55 -0
- package/daemon/dist/domain/scope/node-file.js.map +1 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +12 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.js +42 -2
- package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
- package/daemon/dist/domain/scope/scope-approve.d.ts +4 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-approve.js +56 -7
- package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.d.ts +1 -1
- package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.js +5 -2
- package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
- package/daemon/dist/domain/seat-activity-service.d.ts +1 -0
- package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-activity-service.js +39 -23
- package/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +54 -15
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +74 -19
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/seat-identity-reconciler.d.ts +17 -0
- package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-identity-reconciler.js +22 -0
- package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
- package/daemon/dist/domain/session-jsonl.js +1 -1
- package/daemon/dist/domain/session-jsonl.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +8 -0
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +116 -0
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/shell-classifier.d.ts +23 -0
- package/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
- package/daemon/dist/domain/shell-classifier.js +36 -0
- package/daemon/dist/domain/shell-classifier.js.map +1 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js +24 -3
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-indexer.js +16 -3
- package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
- package/daemon/dist/domain/spec-live-conformance.d.ts +22 -0
- package/daemon/dist/domain/spec-live-conformance.d.ts.map +1 -1
- package/daemon/dist/domain/spec-live-conformance.js +35 -0
- package/daemon/dist/domain/spec-live-conformance.js.map +1 -1
- package/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
- package/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
- package/daemon/dist/domain/spec-validation-advisory.js +38 -0
- package/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +38 -1
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/sync-site-wrap.d.ts +9 -0
- package/daemon/dist/domain/sync-site-wrap.d.ts.map +1 -1
- package/daemon/dist/domain/sync-site-wrap.js +11 -0
- package/daemon/dist/domain/sync-site-wrap.js.map +1 -1
- package/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
- package/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
- package/daemon/dist/domain/topology-defaults-installer.js +92 -0
- package/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
- package/daemon/dist/domain/transcript-rotation.d.ts +4 -0
- package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-rotation.js +61 -3
- package/daemon/dist/domain/transcript-rotation.js.map +1 -1
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +9 -2
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +18 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +59 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/watchdog-auto-registration.d.ts +7 -0
- package/daemon/dist/domain/watchdog-auto-registration.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-auto-registration.js +27 -0
- package/daemon/dist/domain/watchdog-auto-registration.js.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.js +4 -3
- package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
- package/daemon/dist/routes/activity.js +11 -2
- package/daemon/dist/routes/activity.js.map +1 -1
- package/daemon/dist/routes/bundles.d.ts +27 -0
- package/daemon/dist/routes/bundles.d.ts.map +1 -1
- package/daemon/dist/routes/bundles.js +107 -26
- package/daemon/dist/routes/bundles.js.map +1 -1
- package/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/daemon/dist/routes/context-packs.js +205 -0
- package/daemon/dist/routes/context-packs.js.map +1 -1
- package/daemon/dist/routes/crash-cart.d.ts +4 -0
- package/daemon/dist/routes/crash-cart.d.ts.map +1 -0
- package/daemon/dist/routes/crash-cart.js +144 -0
- package/daemon/dist/routes/crash-cart.js.map +1 -0
- package/daemon/dist/routes/missions.d.ts.map +1 -1
- package/daemon/dist/routes/missions.js +10 -6
- package/daemon/dist/routes/missions.js.map +1 -1
- package/daemon/dist/routes/{rig-policy.d.ts → rig-mode.d.ts} +3 -3
- package/daemon/dist/routes/rig-mode.d.ts.map +1 -0
- package/{node_modules/@openrig/daemon/dist/routes/rig-policy.js → daemon/dist/routes/rig-mode.js} +13 -13
- package/daemon/dist/routes/rig-mode.js.map +1 -0
- package/daemon/dist/routes/scope-approve.d.ts.map +1 -1
- package/daemon/dist/routes/scope-approve.js +4 -0
- package/daemon/dist/routes/scope-approve.js.map +1 -1
- package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/daemon/dist/routes/scope-audit.js +29 -2
- package/daemon/dist/routes/scope-audit.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +18 -2
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/daemon/dist/routes/sessions.js +66 -1
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +12 -3
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/seat-recap-store-surface.d.ts +2 -0
- package/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
- package/daemon/dist/seat-recap-store-surface.js +6 -0
- package/daemon/dist/seat-recap-store-surface.js.map +1 -0
- package/daemon/dist/server.d.ts +3 -1
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +15 -5
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +166 -6
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/chain-file-convention.md +115 -0
- package/daemon/docs/reference/legacy-topology-migration.md +53 -0
- package/daemon/docs/reference/refocus-channel.md +80 -0
- package/daemon/docs/reference/sdlc-conventions.md +24 -0
- package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +4 -4
- package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +8 -0
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +72 -31
- package/daemon/specs/agents/shared/skills/pods/oversight-team/SKILL.md +106 -0
- package/daemon/specs/agents/shared/skills/process/context-engineering/SKILL.md +479 -0
- package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +9 -0
- package/daemon/specs/rigs/launch/demo/project-example/README.md +25 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +19 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +6 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +7 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +31 -0
- package/daemon/specs/rigs/preview/product-team/topology/instance/CRAFT.md +24 -0
- package/daemon/specs/rigs/preview/product-team/topology/rig/CRAFT.md +21 -0
- package/daemon/specs/rigs/preview/product-team/topology/rig/ORCHESTRATION-CRAFT.md +50 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/dev1-qa/CRAFT.md +13 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/orch1-lead/CRAFT.md +17 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r1/CRAFT.md +17 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r2/CRAFT.md +15 -0
- package/dist/build-info.js +3 -3
- package/dist/commands/bundle.d.ts.map +1 -1
- package/dist/commands/bundle.js +6 -0
- package/dist/commands/bundle.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +2 -0
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +8 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +353 -48
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/crash-cart.d.ts.map +1 -1
- package/dist/commands/crash-cart.js.map +1 -1
- package/dist/commands/host.d.ts +5 -0
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +59 -3
- package/dist/commands/host.js.map +1 -1
- package/dist/commands/policy.d.ts +5 -0
- package/dist/commands/policy.d.ts.map +1 -0
- package/dist/commands/policy.js +307 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/commands/proof.d.ts.map +1 -1
- package/dist/commands/proof.js +70 -12
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/ps.d.ts +4 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +4 -0
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/{rig-policy.d.ts → rig-mode.d.ts} +3 -3
- package/dist/commands/rig-mode.d.ts.map +1 -0
- package/dist/commands/{rig-policy.js → rig-mode.js} +17 -17
- package/dist/commands/rig-mode.js.map +1 -0
- package/dist/commands/rig.d.ts.map +1 -1
- package/dist/commands/rig.js +5 -0
- package/dist/commands/rig.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +58 -16
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +2 -0
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.d.ts +13 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +3 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/transcript.d.ts.map +1 -1
- package/dist/commands/transcript.js +27 -1
- package/dist/commands/transcript.js.map +1 -1
- package/dist/commands/walk.d.ts.map +1 -1
- package/dist/commands/walk.js +279 -26
- package/dist/commands/walk.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +11 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config-store.d.ts +17 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +53 -1
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-target.d.ts +8 -1
- package/dist/cross-host-target.d.ts.map +1 -1
- package/dist/cross-host-target.js +23 -4
- package/dist/cross-host-target.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +10 -1
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +26 -1
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/front-door.d.ts.map +1 -1
- package/dist/front-door.js +11 -1
- package/dist/front-door.js.map +1 -1
- package/dist/host-bindings.d.ts +62 -0
- package/dist/host-bindings.d.ts.map +1 -0
- package/dist/host-bindings.js +147 -0
- package/dist/host-bindings.js.map +1 -0
- package/dist/host-registry.d.ts +14 -1
- package/dist/host-registry.d.ts.map +1 -1
- package/dist/host-registry.js +30 -2
- package/dist/host-registry.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/hosts/fanout-contract.d.ts +4 -0
- package/dist/lib/hosts/fanout-contract.d.ts.map +1 -1
- package/dist/lib/hosts/fanout-contract.js +15 -0
- package/dist/lib/hosts/fanout-contract.js.map +1 -1
- package/dist/lib/path-safety.d.ts +8 -0
- package/dist/lib/path-safety.d.ts.map +1 -0
- package/dist/lib/path-safety.js +24 -0
- package/dist/lib/path-safety.js.map +1 -0
- package/dist/lib/permission-policy/policy-ref.d.ts +89 -0
- package/dist/lib/permission-policy/policy-ref.d.ts.map +1 -0
- package/dist/lib/permission-policy/policy-ref.js +171 -0
- package/dist/lib/permission-policy/policy-ref.js.map +1 -0
- package/dist/lib/permission-policy/policy-spec.d.ts +34 -0
- package/dist/lib/permission-policy/policy-spec.d.ts.map +1 -0
- package/dist/lib/permission-policy/policy-spec.js +106 -0
- package/dist/lib/permission-policy/policy-spec.js.map +1 -0
- package/dist/lib/scope/logical-checkbox.d.ts +26 -0
- package/dist/lib/scope/logical-checkbox.d.ts.map +1 -0
- package/dist/lib/scope/logical-checkbox.js +65 -0
- package/dist/lib/scope/logical-checkbox.js.map +1 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts +22 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
- package/dist/lib/scope/scaffold-placeholder.js +24 -0
- package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
- package/dist/lib/scope/scope-audit.d.ts +1 -1
- package/dist/lib/scope/scope-audit.d.ts.map +1 -1
- package/dist/lib/scope/scope-audit.js.map +1 -1
- package/dist/lib/scope/scope-fs.d.ts +19 -3
- package/dist/lib/scope/scope-fs.d.ts.map +1 -1
- package/dist/lib/scope/scope-fs.js +37 -17
- package/dist/lib/scope/scope-fs.js.map +1 -1
- package/dist/lib/topology-trace.d.ts +36 -0
- package/dist/lib/topology-trace.d.ts.map +1 -0
- package/dist/lib/topology-trace.js +91 -0
- package/dist/lib/topology-trace.js.map +1 -0
- package/dist/release-surface/extract-surface.js +1 -1
- package/dist/release-surface/extract-surface.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +7 -4
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js +2 -2
- package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts +11 -2
- package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js +18 -10
- package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +10 -2
- package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/tmux.js +27 -7
- package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts +18 -0
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js +21 -0
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +100 -2
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js +180 -6
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js +125 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.d.ts +173 -0
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js +233 -0
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-probes.d.ts +7 -6
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-probes.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-probes.js +57 -7
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-probes.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/hosts/fanout-contract.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/hosts/fanout-contract.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/hosts/fanout-contract.js +15 -0
- package/node_modules/@openrig/daemon/dist/domain/hosts/fanout-contract.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +11 -0
- package/node_modules/@openrig/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/hosts/hosts-registry-reader.js +34 -1
- package/node_modules/@openrig/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts +56 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.js +188 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts +73 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js +204 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +13 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.js +163 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +125 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js +199 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js +6 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/predecessor-recap-resolver.d.ts +10 -3
- package/node_modules/@openrig/daemon/dist/domain/predecessor-recap-resolver.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/predecessor-recap-resolver.js +61 -14
- package/node_modules/@openrig/daemon/dist/domain/predecessor-recap-resolver.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts +25 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.js +47 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts +41 -3
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js +74 -31
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +5 -26
- package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/compose.js +31 -57
- package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/gather.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/gather.js +3 -2
- package/node_modules/@openrig/daemon/dist/domain/review/gather.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-defaults.d.ts → rig-mode/rig-mode-defaults.d.ts} +2 -2
- package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-defaults.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-defaults.js → rig-mode/rig-mode-defaults.js} +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-defaults.js.map +1 -0
- package/{daemon/dist/domain/rig-policy/rig-policy-store.d.ts → node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.d.ts} +6 -6
- package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-store.js → rig-mode/rig-mode-store.js} +5 -5
- package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-types.d.ts → rig-mode/rig-mode-types.d.ts} +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.d.ts.map +1 -0
- package/{daemon/dist/domain/rig-policy/rig-policy-types.js → node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.js} +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.js.map +1 -0
- package/{daemon/dist/domain/rig-policy/rig-policy-validator.d.ts → node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-validator.d.ts} +2 -2
- package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-validator.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-validator.js → rig-mode/rig-mode-validator.js} +3 -3
- package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-validator.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +39 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts +7 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +25 -2
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js +65 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/node-file.d.ts +37 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/node-file.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/node-file.js +55 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/node-file.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +12 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +42 -2
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js +56 -7
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +5 -2
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +39 -23
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +54 -15
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +74 -19
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts +17 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js +22 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-jsonl.js +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-jsonl.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts +8 -0
- package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-transport.js +116 -0
- package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts +23 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js +36 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js +24 -3
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.js +16 -3
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/spec-live-conformance.d.ts +22 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-live-conformance.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/spec-live-conformance.js +35 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-live-conformance.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js +38 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +38 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/sync-site-wrap.d.ts +9 -0
- package/node_modules/@openrig/daemon/dist/domain/sync-site-wrap.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/sync-site-wrap.js +11 -0
- package/node_modules/@openrig/daemon/dist/domain/sync-site-wrap.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js +92 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js +61 -3
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.js +9 -2
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts +18 -0
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +59 -0
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/watchdog-auto-registration.d.ts +7 -0
- package/node_modules/@openrig/daemon/dist/domain/watchdog-auto-registration.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/watchdog-auto-registration.js +27 -0
- package/node_modules/@openrig/daemon/dist/domain/watchdog-auto-registration.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js +4 -3
- package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/activity.js +11 -2
- package/node_modules/@openrig/daemon/dist/routes/activity.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/bundles.d.ts +27 -0
- package/node_modules/@openrig/daemon/dist/routes/bundles.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/bundles.js +107 -26
- package/node_modules/@openrig/daemon/dist/routes/bundles.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/context-packs.js +205 -0
- package/node_modules/@openrig/daemon/dist/routes/context-packs.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/crash-cart.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/routes/crash-cart.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/crash-cart.js +144 -0
- package/node_modules/@openrig/daemon/dist/routes/crash-cart.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/missions.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/missions.js +10 -6
- package/node_modules/@openrig/daemon/dist/routes/missions.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/{rig-policy.d.ts → rig-mode.d.ts} +3 -3
- package/node_modules/@openrig/daemon/dist/routes/rig-mode.d.ts.map +1 -0
- package/{daemon/dist/routes/rig-policy.js → node_modules/@openrig/daemon/dist/routes/rig-mode.js} +13 -13
- package/node_modules/@openrig/daemon/dist/routes/rig-mode.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/scope-approve.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/scope-approve.js +4 -0
- package/node_modules/@openrig/daemon/dist/routes/scope-approve.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/scope-audit.js +29 -2
- package/node_modules/@openrig/daemon/dist/routes/scope-audit.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/seat.js +18 -2
- package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.js +66 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/transport.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/transport.js +12 -3
- package/node_modules/@openrig/daemon/dist/routes/transport.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js +6 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/server.d.ts +3 -1
- package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/server.js +15 -5
- package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.js +166 -6
- package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
- package/node_modules/@openrig/daemon/package.json +6 -1
- package/package.json +1 -1
- package/tui/dist/crash-cart/from-emit.d.ts +9 -0
- package/tui/dist/crash-cart/from-emit.d.ts.map +1 -1
- package/tui/dist/crash-cart/from-emit.js.map +1 -1
- package/tui/dist/crash-cart/keys.d.ts +1 -1
- package/tui/dist/crash-cart/keys.d.ts.map +1 -1
- package/tui/dist/crash-cart/keys.js +13 -2
- package/tui/dist/crash-cart/keys.js.map +1 -1
- package/tui/dist/crash-cart/one-click-gate.d.ts +5 -0
- package/tui/dist/crash-cart/one-click-gate.d.ts.map +1 -1
- package/tui/dist/crash-cart/one-click-gate.js +8 -0
- package/tui/dist/crash-cart/one-click-gate.js.map +1 -1
- package/tui/dist/crash-cart/render-crash-cart.d.ts +11 -0
- package/tui/dist/crash-cart/render-crash-cart.d.ts.map +1 -1
- package/tui/dist/crash-cart/render-crash-cart.js +113 -0
- package/tui/dist/crash-cart/render-crash-cart.js.map +1 -1
- package/tui/dist/crash-cart/restore-input.d.ts +32 -0
- package/tui/dist/crash-cart/restore-input.d.ts.map +1 -0
- package/tui/dist/crash-cart/restore-input.js +37 -0
- package/tui/dist/crash-cart/restore-input.js.map +1 -0
- package/tui/dist/crash-cart/restore-lifecycle.d.ts +66 -0
- package/tui/dist/crash-cart/restore-lifecycle.d.ts.map +1 -0
- package/tui/dist/crash-cart/restore-lifecycle.js +96 -0
- package/tui/dist/crash-cart/restore-lifecycle.js.map +1 -0
- package/tui/dist/crash-cart/restore-scroll.d.ts +14 -0
- package/tui/dist/crash-cart/restore-scroll.d.ts.map +1 -0
- package/tui/dist/crash-cart/restore-scroll.js +27 -0
- package/tui/dist/crash-cart/restore-scroll.js.map +1 -0
- package/tui/dist/daemon-client.d.ts +38 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js +15 -0
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/main.js +146 -2
- package/tui/dist/main.js.map +1 -1
- package/tui/dist/render.d.ts +10 -0
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +63 -10
- package/tui/dist/render.js.map +1 -1
- package/daemon/dist/domain/rig-policy/rig-policy-defaults.d.ts.map +0 -1
- package/daemon/dist/domain/rig-policy/rig-policy-defaults.js.map +0 -1
- package/daemon/dist/domain/rig-policy/rig-policy-store.d.ts.map +0 -1
- package/daemon/dist/domain/rig-policy/rig-policy-store.js.map +0 -1
- package/daemon/dist/domain/rig-policy/rig-policy-types.d.ts.map +0 -1
- package/daemon/dist/domain/rig-policy/rig-policy-types.js.map +0 -1
- package/daemon/dist/domain/rig-policy/rig-policy-validator.d.ts.map +0 -1
- package/daemon/dist/domain/rig-policy/rig-policy-validator.js.map +0 -1
- package/daemon/dist/routes/rig-policy.d.ts.map +0 -1
- package/daemon/dist/routes/rig-policy.js.map +0 -1
- package/dist/commands/rig-policy.d.ts.map +0 -1
- package/dist/commands/rig-policy.js.map +0 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-defaults.d.ts.map +0 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-defaults.js.map +0 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-store.d.ts.map +0 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-store.js.map +0 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-types.d.ts.map +0 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-types.js.map +0 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-validator.d.ts.map +0 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-validator.js.map +0 -1
- package/node_modules/@openrig/daemon/dist/routes/rig-policy.d.ts.map +0 -1
- package/node_modules/@openrig/daemon/dist/routes/rig-policy.js.map +0 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates that a path is safe: relative, no traversal, no absolute.
|
|
3
|
+
* @param path - the path to validate
|
|
4
|
+
* @param label - human-readable label for error messages
|
|
5
|
+
* @returns error string or null if valid
|
|
6
|
+
*/
|
|
7
|
+
export function validateSafePath(path, label) {
|
|
8
|
+
if (!path || typeof path !== "string")
|
|
9
|
+
return `${label}: path is required`;
|
|
10
|
+
// Windows drive letter absolute
|
|
11
|
+
if (/^[A-Za-z]:[/\\]/.test(path))
|
|
12
|
+
return `${label}: absolute paths are not allowed (got "${path}")`;
|
|
13
|
+
// Normalize backslashes for traversal check
|
|
14
|
+
const normalized = path.replace(/\\/g, "/");
|
|
15
|
+
// Absolute path
|
|
16
|
+
if (normalized.startsWith("/"))
|
|
17
|
+
return `${label}: absolute paths are not allowed (got "${path}")`;
|
|
18
|
+
// Traversal
|
|
19
|
+
const segments = normalized.split("/");
|
|
20
|
+
if (segments.some((s) => s === ".."))
|
|
21
|
+
return `${label}: path traversal (..) is not allowed (got "${path}")`;
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=path-safety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-safety.js","sourceRoot":"","sources":["../../src/lib/path-safety.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa;IAC1D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,oBAAoB,CAAC;IAC3E,gCAAgC;IAChC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,KAAK,0CAA0C,IAAI,IAAI,CAAC;IACpG,4CAA4C;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,gBAAgB;IAChB,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,KAAK,0CAA0C,IAAI,IAAI,CAAC;IAClG,YAAY;IACZ,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;QAAE,OAAO,GAAG,KAAK,8CAA8C,IAAI,IAAI,CAAC;IAC5G,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { LaunchPosture, PolicySurface } from "./policy-spec.js";
|
|
2
|
+
/** The packaged read-only built-in policy set (README v4: 3 Policy-Mode specs + Operator/YOLO). */
|
|
3
|
+
export declare const BUILTIN_POLICY_NAMES: readonly ["locked", "standard", "open", "yolo"];
|
|
4
|
+
export type BuiltinPolicyName = (typeof BUILTIN_POLICY_NAMES)[number];
|
|
5
|
+
/** deliberate_none: the ruled amendment 5f37e40f — the recorded choice; never file-backed. */
|
|
6
|
+
export type PolicyRefOrigin = "builtin" | "custom" | "deliberate_none";
|
|
7
|
+
export interface ResolvedPolicyRef {
|
|
8
|
+
/** The ref string, preserved verbatim (travels with the spec through the state). */
|
|
9
|
+
ref: string;
|
|
10
|
+
origin: PolicyRefOrigin;
|
|
11
|
+
/** Present when origin === "builtin": the validated built-in name. */
|
|
12
|
+
builtinName?: BuiltinPolicyName;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validate + classify a permission_policy REF. Returns a STRUCTURED error string for an invalid ref
|
|
16
|
+
* (an invalid ref is a spec DEFECT, never a silent floor fallback), or null when valid. ABSENT is the
|
|
17
|
+
* caller's concern (only pass a present value here). `label` prefixes the error for the surfacing
|
|
18
|
+
* layer (matches the RigSpec validate convention, e.g. "permission_policy" / "pods[0].members[1].
|
|
19
|
+
* permission_policy").
|
|
20
|
+
*/
|
|
21
|
+
export declare function validatePermissionPolicyRef(value: unknown, label: string): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Classify a VALID ref (call validatePermissionPolicyRef first). Preserves + surfaces origin, never
|
|
24
|
+
* silently reclassifies (origin honesty). Never throws on a validated ref.
|
|
25
|
+
*/
|
|
26
|
+
export declare function classifyPermissionPolicyRef(value: string): ResolvedPolicyRef;
|
|
27
|
+
/**
|
|
28
|
+
* A restart-stable resolved attachment (dev-guard early ruling, 2026-08-04): persisting only the raw
|
|
29
|
+
* relative ref is NOT restart-complete. We carry the raw `ref` (for export truth + later skill apply)
|
|
30
|
+
* PLUS `resolvedTarget` (canonical package identifier for built-ins; the absolute resolved path for
|
|
31
|
+
* custom) + `declaringDir` (custom) + `origin`, so a restore can reopen/validate the custom policy
|
|
32
|
+
* and re-derive surface + launch_posture without the original in-memory RigSpec.
|
|
33
|
+
*/
|
|
34
|
+
export interface ResolvedPolicyAttachment {
|
|
35
|
+
/** Raw ref, preserved verbatim for export + skill apply. */
|
|
36
|
+
ref: string;
|
|
37
|
+
origin: PolicyRefOrigin;
|
|
38
|
+
/** origin=builtin: the validated built-in name. */
|
|
39
|
+
builtinName?: BuiltinPolicyName;
|
|
40
|
+
/** custom: the absolute resolved path. builtin: the canonical shipped package-copy path once the
|
|
41
|
+
* packaging leg rules it (PM lane c76c7153) — ABSENT until then; NEVER a `builtin:<name>` echo of
|
|
42
|
+
* the raw ref (dev-guard correction 2: the ref is persisted separately for export; duplicating it
|
|
43
|
+
* here is not restart-stable provenance). */
|
|
44
|
+
resolvedTarget?: string;
|
|
45
|
+
/** origin=custom: the canonical (absolute) declaring RigSpec directory — restart-stable provenance. */
|
|
46
|
+
declaringDir?: string;
|
|
47
|
+
/** The resolved policy surface, when content was resolvable (custom) or known (built-in). */
|
|
48
|
+
surface?: PolicySurface;
|
|
49
|
+
/** Flag-surface launch posture for per-seat binding (floor | full_bypass). */
|
|
50
|
+
launchPosture: LaunchPosture;
|
|
51
|
+
/** Guard round-2 (8232199a): TRUE only when custom CONTENT resolution genuinely
|
|
52
|
+
* succeeded with USABLE semantics — parse OK + known surface + (flag ⇒ a valid
|
|
53
|
+
* launch_posture). Restore trusts a re-derivation ONLY when this is true; otherwise
|
|
54
|
+
* the PERSISTED posture carries. Builtins: always true (name-derived semantics). */
|
|
55
|
+
contentResolved: boolean;
|
|
56
|
+
}
|
|
57
|
+
/** Injected reader so resolution is testable + does not hard-couple the module to fs. Throws when
|
|
58
|
+
* the target is missing/unreadable (resolver treats that as an advisory floor, provenance kept). */
|
|
59
|
+
export interface PolicyResolveDeps {
|
|
60
|
+
readFile: (absolutePath: string) => string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The SINGLE mapping point for the built-in policies' canonical shipped package-copy path —
|
|
64
|
+
* PM-RULED (inline ruling via dev-guard NOT-CLEAR at 9e94c274, lane c76c7153):
|
|
65
|
+
* repo source (future): packages/daemon/policies/builtin/<name>.policy.md
|
|
66
|
+
* provenance target: policies/builtin/<name>.policy.md (package-relative;
|
|
67
|
+
* module-relative at runtime)
|
|
68
|
+
* The raw `builtin:<name>` ref stays separate (export truth); this target is the restart-
|
|
69
|
+
* stable provenance. Built-in CONTENT stays a later leg — no asset read or copy here.
|
|
70
|
+
*/
|
|
71
|
+
export declare function builtinPackageTarget(name: BuiltinPolicyName): string;
|
|
72
|
+
/**
|
|
73
|
+
* Resolve a VALIDATED, present ref (call validatePermissionPolicyRef first) into a restart-stable
|
|
74
|
+
* attachment. `declaringDir` is the canonical directory of the RigSpec that declared the ref (custom
|
|
75
|
+
* refs resolve relative to it — README v4 A2). Flag-surface CONTENT resolution is CORE-owned (guard
|
|
76
|
+
* ruling): a custom `surface: flag` policy's `launch_posture` (floor|full_bypass) is read here.
|
|
77
|
+
* - built-in: name-derived posture bounded to the locked set (yolo → full_bypass, else floor);
|
|
78
|
+
* origin + canonical `builtin:<name>` target preserved. Package ASSET existence is a later leg.
|
|
79
|
+
* - custom: resolve relative to declaringDir, read + parse (Seam A), derive surface; flag →
|
|
80
|
+
* its launch_posture; config → floor (config-surface CONTENT application is deferred to the
|
|
81
|
+
* skill; no config write here). Unreadable/invalid → advisory floor, provenance still preserved.
|
|
82
|
+
*/
|
|
83
|
+
export declare function resolvePermissionPolicyAttachment(ref: string, declaringDir: string, deps: PolicyResolveDeps): ResolvedPolicyAttachment;
|
|
84
|
+
/**
|
|
85
|
+
* Precedence: a per-member ref overrides the rig-level ref; absence at both is undefined (= floor).
|
|
86
|
+
* member > rig > floor (README v4 + IMPL-PLAN). No pod level exists in the spec surface.
|
|
87
|
+
*/
|
|
88
|
+
export declare function resolvePermissionPolicyRefValue(memberRef: string | null | undefined, rigRef: string | null | undefined): string | undefined;
|
|
89
|
+
//# sourceMappingURL=policy-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-ref.d.ts","sourceRoot":"","sources":["../../../src/lib/permission-policy/policy-ref.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE,mGAAmG;AACnG,eAAO,MAAM,oBAAoB,iDAAkD,CAAC;AACpF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,8FAA8F;AAC9F,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAIvE,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,eAAe,CAAC;IACxB,sEAAsE;IACtE,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAMD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsCxF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAK5E;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,eAAe,CAAC;IACxB,mDAAmD;IACnD,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;iDAG6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uGAAuG;IACvG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,8EAA8E;IAC9E,aAAa,EAAE,aAAa,CAAC;IAC7B;;;yFAGqF;IACrF,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;qGACqG;AACrG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAEpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,iBAAiB,GACtB,wBAAwB,CAuD1B;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,MAAM,GAAG,SAAS,CAEpB"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// Slice-03 (OPR.0.4.8.3) Seam B — permission_policy REF resolution + precedence + launch-posture.
|
|
2
|
+
// The `permission_policy` value attached to a rig or a seat is a REF (not a policy body). Semantics
|
|
3
|
+
// are grounded in Slice03 README v4 (sha256-8 d65afe67), rulings A1/A2/A3 + the Policy/YOLO framing:
|
|
4
|
+
// - `builtin:<name>`, <name> ∈ {locked, standard, open, yolo} (A1): resolves into the packaged
|
|
5
|
+
// read-only built-in set (origin=builtin). Unknown name = STRUCTURED error listing the known
|
|
6
|
+
// set. The `builtin:` prefix is MANDATORY — bare canonical names never resolve (no shadowing).
|
|
7
|
+
// - a RELATIVE custom path (A2), resolved relative to the DECLARING RigSpec dir (origin=custom);
|
|
8
|
+
// absolute / `..` traversal / empty segments = STRUCTURED error (a spec defect, NOT a floor
|
|
9
|
+
// fallback). Reuses the established safe-path discipline (path-safety.validateSafePath).
|
|
10
|
+
// - `none` = the RECORDED DELIBERATE choice (RULED-FORM-deliberate-none-2026-08-04,
|
|
11
|
+
// sha256 5f37e40f — the A3 reservation ACTIVATED by its own amendment): third origin
|
|
12
|
+
// deliberate_none, never resolves to any file, posture identical to absent (floor).
|
|
13
|
+
// - ABSENT (no value) = the floor (honest absence) — the CALLER passes undefined; not an error.
|
|
14
|
+
// Built-in ASSET packaging is a LATER leg: builtin resolution here is REF-SEMANTICS (prefix→origin),
|
|
15
|
+
// it does NOT read or require the asset file to exist.
|
|
16
|
+
import * as path from "node:path";
|
|
17
|
+
import { validateSafePath } from "../path-safety.js";
|
|
18
|
+
import { parsePolicySpec, validatePolicySpec } from "./policy-spec.js";
|
|
19
|
+
/** The packaged read-only built-in policy set (README v4: 3 Policy-Mode specs + Operator/YOLO). */
|
|
20
|
+
export const BUILTIN_POLICY_NAMES = ["locked", "standard", "open", "yolo"];
|
|
21
|
+
const BUILTIN_PREFIX = "builtin:";
|
|
22
|
+
function isBuiltinName(name) {
|
|
23
|
+
return BUILTIN_POLICY_NAMES.includes(name);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Validate + classify a permission_policy REF. Returns a STRUCTURED error string for an invalid ref
|
|
27
|
+
* (an invalid ref is a spec DEFECT, never a silent floor fallback), or null when valid. ABSENT is the
|
|
28
|
+
* caller's concern (only pass a present value here). `label` prefixes the error for the surfacing
|
|
29
|
+
* layer (matches the RigSpec validate convention, e.g. "permission_policy" / "pods[0].members[1].
|
|
30
|
+
* permission_policy").
|
|
31
|
+
*/
|
|
32
|
+
export function validatePermissionPolicyRef(value, label) {
|
|
33
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
34
|
+
return `${label}: permission_policy must be a non-empty string ref`;
|
|
35
|
+
}
|
|
36
|
+
if (value === "none") {
|
|
37
|
+
// RULED amendment (5f37e40f): the A3-reserved literal IS the recorded
|
|
38
|
+
// deliberate choice — valid; classification/resolution handle it below.
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (value.startsWith(BUILTIN_PREFIX)) {
|
|
42
|
+
const name = value.slice(BUILTIN_PREFIX.length);
|
|
43
|
+
if (!isBuiltinName(name)) {
|
|
44
|
+
return `${label}: unknown built-in policy '${name}' (known: ${BUILTIN_POLICY_NAMES.join(", ")})`;
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
// Anti-shadowing (A1: "no canonical-name shadowing, ever"): a BARE canonical name must NOT
|
|
49
|
+
// masquerade as a custom ref — that would silently mis-resolve origin (and, for `yolo`, silently
|
|
50
|
+
// downgrade full_bypass→floor). Require the explicit builtin: prefix.
|
|
51
|
+
if (isBuiltinName(value)) {
|
|
52
|
+
return `${label}: '${value}' is a built-in policy name — use 'builtin:${value}' (the builtin: prefix is mandatory; bare names never resolve, no shadowing)`;
|
|
53
|
+
}
|
|
54
|
+
// Custom relative ref — the established safe-path discipline (absolute / .. rejected)…
|
|
55
|
+
const pathErr = validateSafePath(value, label);
|
|
56
|
+
if (pathErr)
|
|
57
|
+
return pathErr;
|
|
58
|
+
// …plus the explicit empty-segment rejection (README v4 A2) that validateSafePath does not cover.
|
|
59
|
+
const segments = value.replace(/\\/g, "/").split("/");
|
|
60
|
+
if (segments.some((seg) => seg.length === 0)) {
|
|
61
|
+
return `${label}: empty path segments are not allowed (got "${value}")`;
|
|
62
|
+
}
|
|
63
|
+
// README v4 A2 per-segment charset (the established ref discipline — same class as the
|
|
64
|
+
// rig-context day-one contract): every segment is a single safe path component.
|
|
65
|
+
for (const seg of segments) {
|
|
66
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(seg)) {
|
|
67
|
+
return `${label}: path segment "${seg}" violates the ref charset (each segment must match [A-Za-z0-9][A-Za-z0-9._-]*)`;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Classify a VALID ref (call validatePermissionPolicyRef first). Preserves + surfaces origin, never
|
|
74
|
+
* silently reclassifies (origin honesty). Never throws on a validated ref.
|
|
75
|
+
*/
|
|
76
|
+
export function classifyPermissionPolicyRef(value) {
|
|
77
|
+
if (value.startsWith(BUILTIN_PREFIX)) {
|
|
78
|
+
return { ref: value, origin: "builtin", builtinName: value.slice(BUILTIN_PREFIX.length) };
|
|
79
|
+
}
|
|
80
|
+
return { ref: value, origin: "custom" };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The SINGLE mapping point for the built-in policies' canonical shipped package-copy path —
|
|
84
|
+
* PM-RULED (inline ruling via dev-guard NOT-CLEAR at 9e94c274, lane c76c7153):
|
|
85
|
+
* repo source (future): packages/daemon/policies/builtin/<name>.policy.md
|
|
86
|
+
* provenance target: policies/builtin/<name>.policy.md (package-relative;
|
|
87
|
+
* module-relative at runtime)
|
|
88
|
+
* The raw `builtin:<name>` ref stays separate (export truth); this target is the restart-
|
|
89
|
+
* stable provenance. Built-in CONTENT stays a later leg — no asset read or copy here.
|
|
90
|
+
*/
|
|
91
|
+
export function builtinPackageTarget(name) {
|
|
92
|
+
return `policies/builtin/${name}.policy.md`;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Resolve a VALIDATED, present ref (call validatePermissionPolicyRef first) into a restart-stable
|
|
96
|
+
* attachment. `declaringDir` is the canonical directory of the RigSpec that declared the ref (custom
|
|
97
|
+
* refs resolve relative to it — README v4 A2). Flag-surface CONTENT resolution is CORE-owned (guard
|
|
98
|
+
* ruling): a custom `surface: flag` policy's `launch_posture` (floor|full_bypass) is read here.
|
|
99
|
+
* - built-in: name-derived posture bounded to the locked set (yolo → full_bypass, else floor);
|
|
100
|
+
* origin + canonical `builtin:<name>` target preserved. Package ASSET existence is a later leg.
|
|
101
|
+
* - custom: resolve relative to declaringDir, read + parse (Seam A), derive surface; flag →
|
|
102
|
+
* its launch_posture; config → floor (config-surface CONTENT application is deferred to the
|
|
103
|
+
* skill; no config write here). Unreadable/invalid → advisory floor, provenance still preserved.
|
|
104
|
+
*/
|
|
105
|
+
export function resolvePermissionPolicyAttachment(ref, declaringDir, deps) {
|
|
106
|
+
if (ref === "none") {
|
|
107
|
+
// RULED amendment (5f37e40f): recorded deliberate choice. NEVER resolves to
|
|
108
|
+
// any file (no resolvedTarget/declaringDir — the A3 no-squatting fence
|
|
109
|
+
// holds because 'none' stays unreferenceable); posture IDENTICAL to absent
|
|
110
|
+
// (zero privilege delta — the entire change is record/provenance).
|
|
111
|
+
return {
|
|
112
|
+
ref,
|
|
113
|
+
origin: "deliberate_none",
|
|
114
|
+
launchPosture: "floor",
|
|
115
|
+
contentResolved: true, // semantics fully known by construction (like builtins)
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (ref.startsWith(BUILTIN_PREFIX)) {
|
|
119
|
+
const builtinName = ref.slice(BUILTIN_PREFIX.length);
|
|
120
|
+
return {
|
|
121
|
+
ref,
|
|
122
|
+
origin: "builtin",
|
|
123
|
+
builtinName,
|
|
124
|
+
resolvedTarget: builtinPackageTarget(builtinName),
|
|
125
|
+
surface: builtinName === "yolo" ? "flag" : undefined,
|
|
126
|
+
launchPosture: builtinName === "yolo" ? "full_bypass" : "floor",
|
|
127
|
+
contentResolved: true,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
// Custom ref: resolve relative to the declaring RigSpec directory (never cwd/workspace root).
|
|
131
|
+
const resolvedTarget = path.resolve(declaringDir, ref);
|
|
132
|
+
let surface;
|
|
133
|
+
let launchPosture = "floor";
|
|
134
|
+
let contentResolved = false;
|
|
135
|
+
try {
|
|
136
|
+
const parsed = parsePolicySpec(deps.readFile(resolvedTarget));
|
|
137
|
+
if (!("error" in parsed)) {
|
|
138
|
+
const s = parsed.frontmatter["surface"];
|
|
139
|
+
if (s === "flag" || s === "config")
|
|
140
|
+
surface = s;
|
|
141
|
+
// R2 HIGH-2: content is RESOLVED only when the COMPLETE sealed Seam-A frontmatter
|
|
142
|
+
// contract validates (validatePolicySpec: surface-appropriate required fields,
|
|
143
|
+
// action-list shapes, schema version, description, …) — parseable-but-invalid
|
|
144
|
+
// content must NOT be trusted over persisted posture. Advisory read only.
|
|
145
|
+
const contract = validatePolicySpec(parsed.frontmatter);
|
|
146
|
+
if (contract.ok && surface === "flag") {
|
|
147
|
+
const lp = parsed.frontmatter["launch_posture"];
|
|
148
|
+
if (lp === "floor" || lp === "full_bypass") {
|
|
149
|
+
launchPosture = lp;
|
|
150
|
+
contentResolved = true;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if (contract.ok && surface === "config") {
|
|
154
|
+
contentResolved = true; // valid config semantics; posture floor is genuine
|
|
155
|
+
}
|
|
156
|
+
// invalid contract or unknown surface → NOT resolved (advisory floor, provenance kept)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Unreadable/unresolvable at resolve time → advisory floor; ref + provenance still preserved.
|
|
161
|
+
}
|
|
162
|
+
return { ref, origin: "custom", resolvedTarget, declaringDir, surface, launchPosture, contentResolved };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Precedence: a per-member ref overrides the rig-level ref; absence at both is undefined (= floor).
|
|
166
|
+
* member > rig > floor (README v4 + IMPL-PLAN). No pod level exists in the spec surface.
|
|
167
|
+
*/
|
|
168
|
+
export function resolvePermissionPolicyRefValue(memberRef, rigRef) {
|
|
169
|
+
return (memberRef ?? undefined) ?? (rigRef ?? undefined);
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=policy-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-ref.js","sourceRoot":"","sources":["../../../src/lib/permission-policy/policy-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type PolicySurface = "flag" | "config";
|
|
2
|
+
export type PolicySource = "builtin" | "custom";
|
|
3
|
+
export type LaunchPosture = "floor" | "full_bypass";
|
|
4
|
+
export type DefaultPosture = "allow" | "ask" | "deny";
|
|
5
|
+
/** A parsed policy spec: the raw frontmatter object + the preserved Markdown body. */
|
|
6
|
+
export interface ParsedPolicySpec {
|
|
7
|
+
frontmatter: Record<string, unknown>;
|
|
8
|
+
/** The Markdown body after the frontmatter block — preserved verbatim (human prose, not contract). */
|
|
9
|
+
body: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ParseError {
|
|
12
|
+
error: string;
|
|
13
|
+
}
|
|
14
|
+
/** Parse a policy spec into its frontmatter contract + preserved body. Never throws. */
|
|
15
|
+
export declare function parsePolicySpec(raw: string): ParsedPolicySpec | ParseError;
|
|
16
|
+
export interface ValidationResult {
|
|
17
|
+
ok: boolean;
|
|
18
|
+
errors: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validate-by-convention: required scalars, enum membership, surface-appropriate EXCLUSIVITY, and
|
|
22
|
+
* scalar/list SHAPES. ADVISORY + fail-open — returns {ok, errors[]}, never throws, never enforces.
|
|
23
|
+
* Does NOT validate the semantic-action vocabulary (taxonomy 668bb0d2 owns it) nor resolve to any
|
|
24
|
+
* harness format.
|
|
25
|
+
*/
|
|
26
|
+
export declare function validatePolicySpec(fm: Record<string, unknown>): ValidationResult;
|
|
27
|
+
/**
|
|
28
|
+
* Deterministic CANONICAL serialization: frontmatter re-emitted in canonical field order (unknown
|
|
29
|
+
* keys preserved, appended stably) + the body verbatim. Round-trip contract = serialize is STABLE
|
|
30
|
+
* (serialize∘parse is idempotent) + SEMANTIC equality (frontmatter deep-equal) + BODY preserved —
|
|
31
|
+
* NOT original-input byte identity.
|
|
32
|
+
*/
|
|
33
|
+
export declare function serializePolicySpec(parsed: ParsedPolicySpec): string;
|
|
34
|
+
//# sourceMappingURL=policy-spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-spec.d.ts","sourceRoot":"","sources":["../../../src/lib/permission-policy/policy-spec.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtD,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,UAAU,CAa1E;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAYD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CA8BhF;AAQD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAOpE"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// Slice-03 (OPR.0.4.8.3) Seam A — the permission-policy SPEC primitive: parse + validate-by-convention.
|
|
2
|
+
// A policy spec is a Markdown file with a leading YAML FRONTMATTER contract + an explanatory body.
|
|
3
|
+
// This module PARSES the whole contract from frontmatter (preserving the body verbatim) and
|
|
4
|
+
// VALIDATES it by convention — ADVISORY + fail-open (mirrors `rig scope audit`), never enforcement.
|
|
5
|
+
// It NEVER validates the semantic-action vocabulary (the taxonomy 668bb0d2 owns that) and NEVER
|
|
6
|
+
// resolves intent to a harness format (flag surface = deterministic code elsewhere; config surface =
|
|
7
|
+
// the skill). Schema authority: ARCH-POLICY-SPEC-SCHEMA sha256-8 92409094.
|
|
8
|
+
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
|
9
|
+
// Leading `---\n<yaml>\n---\n<body>` frontmatter block. Non-greedy YAML capture so the FIRST closing
|
|
10
|
+
// `---` ends the frontmatter; everything after is the body (preserved exactly).
|
|
11
|
+
const FRONTMATTER_RE = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/;
|
|
12
|
+
/** Parse a policy spec into its frontmatter contract + preserved body. Never throws. */
|
|
13
|
+
export function parsePolicySpec(raw) {
|
|
14
|
+
const m = FRONTMATTER_RE.exec(raw);
|
|
15
|
+
if (!m)
|
|
16
|
+
return { error: "policy spec must open with a '---' YAML frontmatter block" };
|
|
17
|
+
let frontmatter;
|
|
18
|
+
try {
|
|
19
|
+
frontmatter = parseYaml(m[1]);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
return { error: `frontmatter is not valid YAML: ${e.message}` };
|
|
23
|
+
}
|
|
24
|
+
if (!frontmatter || typeof frontmatter !== "object" || Array.isArray(frontmatter)) {
|
|
25
|
+
return { error: "frontmatter must be a YAML object at the root" };
|
|
26
|
+
}
|
|
27
|
+
return { frontmatter: frontmatter, body: m[2] ?? "" };
|
|
28
|
+
}
|
|
29
|
+
const SOURCES = new Set(["builtin", "custom"]);
|
|
30
|
+
const SURFACES = new Set(["flag", "config"]);
|
|
31
|
+
const LAUNCH_POSTURES = new Set(["floor", "full_bypass"]);
|
|
32
|
+
const DEFAULT_POSTURES = new Set(["allow", "ask", "deny"]);
|
|
33
|
+
const ACTION_LIST_FIELDS = ["allow", "ask", "deny", "destructive_class"];
|
|
34
|
+
function isStringList(v) {
|
|
35
|
+
return Array.isArray(v) && v.every((x) => typeof x === "string");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validate-by-convention: required scalars, enum membership, surface-appropriate EXCLUSIVITY, and
|
|
39
|
+
* scalar/list SHAPES. ADVISORY + fail-open — returns {ok, errors[]}, never throws, never enforces.
|
|
40
|
+
* Does NOT validate the semantic-action vocabulary (taxonomy 668bb0d2 owns it) nor resolve to any
|
|
41
|
+
* harness format.
|
|
42
|
+
*/
|
|
43
|
+
export function validatePolicySpec(fm) {
|
|
44
|
+
const errors = [];
|
|
45
|
+
if (fm["policy_schema_version"] !== 1)
|
|
46
|
+
errors.push("policy_schema_version must be the number 1");
|
|
47
|
+
if (typeof fm["name"] !== "string" || fm["name"].length === 0)
|
|
48
|
+
errors.push("name must be a non-empty string");
|
|
49
|
+
if (typeof fm["source"] !== "string" || !SOURCES.has(fm["source"]))
|
|
50
|
+
errors.push("source must be 'builtin' or 'custom'");
|
|
51
|
+
if (typeof fm["description"] !== "string" || fm["description"].length === 0)
|
|
52
|
+
errors.push("description must be a non-empty string");
|
|
53
|
+
const surface = fm["surface"];
|
|
54
|
+
if (typeof surface !== "string" || !SURFACES.has(surface)) {
|
|
55
|
+
errors.push("surface must be 'flag' or 'config'");
|
|
56
|
+
return { ok: errors.length === 0, errors }; // can't check surface-appropriate fields without a valid surface
|
|
57
|
+
}
|
|
58
|
+
if (surface === "flag") {
|
|
59
|
+
if (!LAUNCH_POSTURES.has(fm["launch_posture"]))
|
|
60
|
+
errors.push("flag-surface policy requires launch_posture ('floor' or 'full_bypass')");
|
|
61
|
+
if (fm["default_posture"] !== undefined)
|
|
62
|
+
errors.push("flag-surface policy must NOT carry default_posture (config-surface field)");
|
|
63
|
+
for (const f of ACTION_LIST_FIELDS)
|
|
64
|
+
if (fm[f] !== undefined)
|
|
65
|
+
errors.push(`flag-surface policy must NOT carry '${f}' (config-surface field)`);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// config
|
|
69
|
+
if (fm["launch_posture"] !== undefined)
|
|
70
|
+
errors.push("config-surface policy must NOT carry launch_posture (flag-surface field)");
|
|
71
|
+
if (!DEFAULT_POSTURES.has(fm["default_posture"]))
|
|
72
|
+
errors.push("config-surface policy requires default_posture ('allow', 'ask' or 'deny')");
|
|
73
|
+
// The schema requires all four action-list fields present (use [] for none) — not optional.
|
|
74
|
+
for (const f of ACTION_LIST_FIELDS) {
|
|
75
|
+
if (fm[f] === undefined)
|
|
76
|
+
errors.push(`config-surface policy requires '${f}' (a list of strings; use [] for none)`);
|
|
77
|
+
else if (!isStringList(fm[f]))
|
|
78
|
+
errors.push(`${f} must be a list of strings`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { ok: errors.length === 0, errors };
|
|
82
|
+
}
|
|
83
|
+
// Canonical field order for deterministic serialization (unknown keys appended stably after).
|
|
84
|
+
const CANONICAL_ORDER = [
|
|
85
|
+
"source", "name", "surface", "launch_posture", "policy_schema_version", "description",
|
|
86
|
+
"default_posture", "allow", "ask", "deny", "destructive_class",
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* Deterministic CANONICAL serialization: frontmatter re-emitted in canonical field order (unknown
|
|
90
|
+
* keys preserved, appended stably) + the body verbatim. Round-trip contract = serialize is STABLE
|
|
91
|
+
* (serialize∘parse is idempotent) + SEMANTIC equality (frontmatter deep-equal) + BODY preserved —
|
|
92
|
+
* NOT original-input byte identity.
|
|
93
|
+
*/
|
|
94
|
+
export function serializePolicySpec(parsed) {
|
|
95
|
+
const fm = parsed.frontmatter;
|
|
96
|
+
const ordered = {};
|
|
97
|
+
for (const k of CANONICAL_ORDER)
|
|
98
|
+
if (fm[k] !== undefined)
|
|
99
|
+
ordered[k] = fm[k];
|
|
100
|
+
for (const k of Object.keys(fm))
|
|
101
|
+
if (!(k in ordered))
|
|
102
|
+
ordered[k] = fm[k];
|
|
103
|
+
const yamlBlock = stringifyYaml(ordered).replace(/\n+$/, "");
|
|
104
|
+
return `---\n${yamlBlock}\n---\n${parsed.body}`;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=policy-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-spec.js","sourceRoot":"","sources":["../../../src/lib/permission-policy/policy-spec.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,mGAAmG;AACnG,4FAA4F;AAC5F,oGAAoG;AACpG,gGAAgG;AAChG,qGAAqG;AACrG,2EAA2E;AAE3E,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAkBtE,qGAAqG;AACrG,gFAAgF;AAChF,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAE5D,wFAAwF;AACxF,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,2DAA2D,EAAE,CAAC;IACtF,IAAI,WAAoB,CAAC;IACzB,IAAI,CAAC;QACH,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,KAAK,EAAE,kCAAmC,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAClF,OAAO,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,WAAsC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACnF,CAAC;AAOD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3D,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,CAAU,CAAC;AAElF,SAAS,YAAY,CAAC,CAAU;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAA2B;IAC5D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACjG,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAK,EAAE,CAAC,MAAM,CAAY,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC1H,IAAI,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAW,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClI,IAAI,OAAO,EAAE,CAAC,aAAa,CAAC,KAAK,QAAQ,IAAK,EAAE,CAAC,aAAa,CAAY,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAE/I,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,iEAAiE;IAC/G,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAW,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QAChJ,IAAI,EAAE,CAAC,iBAAiB,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAClI,KAAK,MAAM,CAAC,IAAI,kBAAkB;YAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,0BAA0B,CAAC,CAAC;IAC/I,CAAC;SAAM,CAAC;QACN,SAAS;QACT,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QAChI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAW,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QACrJ,4FAA4F;QAC5F,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,wCAAwC,CAAC,CAAC;iBAC9G,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,8FAA8F;AAC9F,MAAM,eAAe,GAAG;IACtB,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,aAAa;IACrF,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB;CAC/D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IAC1D,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAC9B,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,eAAe;QAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7D,OAAO,QAAQ,SAAS,UAAU,MAAM,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** qitem-render-driver B — the ONE logical-checkbox record, shared by every
|
|
2
|
+
* reader of an authored checkbox list (Review's proof contract, the
|
|
3
|
+
* slice-detail projector's acceptance rows, and the CLI proof-add index).
|
|
4
|
+
*
|
|
5
|
+
* `rawText` is the COMPLETE logical item — a checkbox line plus any eligible
|
|
6
|
+
* indented continuation, joined with exactly one U+0020 — and it IS the
|
|
7
|
+
* VM-006 join key (textKey = trim + casefold over these bytes). Every reader
|
|
8
|
+
* MUST consume this record so promise, acceptance, dedup and the QA-verdict
|
|
9
|
+
* lift key off identical bytes by construction; a second parser would silently
|
|
10
|
+
* desynchronize the join. */
|
|
11
|
+
export interface LogicalCheckboxItem {
|
|
12
|
+
/** The author's tick state (`- [x]`). */
|
|
13
|
+
checked: boolean;
|
|
14
|
+
/** The complete logical item text (continuations joined), trim-only. */
|
|
15
|
+
rawText: string;
|
|
16
|
+
/** 1-based line of the CHECKBOX itself — never a continuation line. */
|
|
17
|
+
sourceLine: number;
|
|
18
|
+
}
|
|
19
|
+
/** Parse an authored checkbox block into logical items.
|
|
20
|
+
*
|
|
21
|
+
* Continuation eligibility (pinned by test): a line is a continuation of the
|
|
22
|
+
* preceding checkbox when it is NONBLANK, NOT itself a checkbox, and its
|
|
23
|
+
* indentation is STRICTLY DEEPER than the checkbox line's. A next checkbox, a
|
|
24
|
+
* blank line, or same/shallower prose terminates the item. */
|
|
25
|
+
export declare function parseLogicalCheckboxes(block: string | null): LogicalCheckboxItem[];
|
|
26
|
+
//# sourceMappingURL=logical-checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logical-checkbox.d.ts","sourceRoot":"","sources":["../../../src/lib/scope/logical-checkbox.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;8BAS8B;AAC9B,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;CACpB;AAID;;;;;+DAK+D;AAC/D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,mBAAmB,EAAE,CAoClF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// KI-5.3-2 — the ONE logical-checkbox item grammar: parse an authored
|
|
2
|
+
// `## Proof contract` (or acceptance) checkbox block into logical items.
|
|
3
|
+
//
|
|
4
|
+
// PARITY CONTRACT (arch ruling 2026-07-11 twin-plus-parity, extended KI-5.3-2):
|
|
5
|
+
// this file is a BYTE-EQUIVALENT TWIN — it exists identically at
|
|
6
|
+
// packages/cli/src/lib/scope/logical-checkbox.ts
|
|
7
|
+
// packages/daemon/src/domain/scope/logical-checkbox.ts
|
|
8
|
+
// and byte-equivalence is CI-enforced by scope-audit-parity CLASSIFIER_FILES.
|
|
9
|
+
// Do NOT diverge the copies, and do NOT "deduplicate" them into one file — a
|
|
10
|
+
// true shared module importable by both packages does not exist in this layout,
|
|
11
|
+
// so the twin-plus-parity arrangement IS the single-grammar guarantee. The
|
|
12
|
+
// review composer, the slice-detail acceptance projector, and the CLI
|
|
13
|
+
// `rig proof add` evidence-index validator ALL parse through this one grammar,
|
|
14
|
+
// so a 1-based byIndex evidence ref names the SAME promised item on every side
|
|
15
|
+
// (no silent one-position mispair). If the layout ever gains a real shared
|
|
16
|
+
// package, the twins collapse into it then — not before.
|
|
17
|
+
const CHECKBOX_LINE = /^(\s*)-?\s*\[(\s|x|X)\]\s+(.+)$/;
|
|
18
|
+
/** Parse an authored checkbox block into logical items.
|
|
19
|
+
*
|
|
20
|
+
* Continuation eligibility (pinned by test): a line is a continuation of the
|
|
21
|
+
* preceding checkbox when it is NONBLANK, NOT itself a checkbox, and its
|
|
22
|
+
* indentation is STRICTLY DEEPER than the checkbox line's. A next checkbox, a
|
|
23
|
+
* blank line, or same/shallower prose terminates the item. */
|
|
24
|
+
export function parseLogicalCheckboxes(block) {
|
|
25
|
+
if (!block)
|
|
26
|
+
return [];
|
|
27
|
+
const lines = block.split("\n");
|
|
28
|
+
const out = [];
|
|
29
|
+
let current = null;
|
|
30
|
+
const flush = () => {
|
|
31
|
+
if (!current)
|
|
32
|
+
return;
|
|
33
|
+
out.push({ checked: current.checked, rawText: current.parts.join(" ").trim(), sourceLine: current.sourceLine });
|
|
34
|
+
current = null;
|
|
35
|
+
};
|
|
36
|
+
for (let i = 0; i < lines.length; i++) {
|
|
37
|
+
const line = lines[i];
|
|
38
|
+
const m = line.match(CHECKBOX_LINE);
|
|
39
|
+
if (m) {
|
|
40
|
+
flush();
|
|
41
|
+
current = {
|
|
42
|
+
checked: m[2].toLowerCase() === "x",
|
|
43
|
+
parts: [m[3].trim()],
|
|
44
|
+
indent: m[1].length,
|
|
45
|
+
sourceLine: i + 1,
|
|
46
|
+
};
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (!current)
|
|
50
|
+
continue;
|
|
51
|
+
if (line.trim().length === 0) {
|
|
52
|
+
flush();
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const indent = line.length - line.trimStart().length;
|
|
56
|
+
if (indent > current.indent) {
|
|
57
|
+
current.parts.push(line.trim());
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
flush();
|
|
61
|
+
}
|
|
62
|
+
flush();
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=logical-checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logical-checkbox.js","sourceRoot":"","sources":["../../../src/lib/scope/logical-checkbox.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,yEAAyE;AACzE,EAAE;AACF,gFAAgF;AAChF,iEAAiE;AACjE,mDAAmD;AACnD,yDAAyD;AACzD,8EAA8E;AAC9E,6EAA6E;AAC7E,gFAAgF;AAChF,2EAA2E;AAC3E,sEAAsE;AACtE,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,yDAAyD;AAqBzD,MAAM,aAAa,GAAG,iCAAiC,CAAC;AAExD;;;;;+DAK+D;AAC/D,MAAM,UAAU,sBAAsB,CAAC,KAAoB;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,IAAI,OAAO,GAAqF,IAAI,CAAC;IAErG,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAChH,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC;YACN,KAAK,EAAE,CAAC;YACR,OAAO,GAAG;gBACR,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,KAAK,GAAG;gBACpC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM;gBACpB,UAAU,EAAE,CAAC,GAAG,CAAC;aAClB,CAAC;YACF,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QACrD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -35,4 +35,26 @@ export declare function isPristineScaffoldSection(body: string | null): boolean;
|
|
|
35
35
|
* literals, sync-tested against the shipped template so constant/template
|
|
36
36
|
* drift fails CI instead of silently reviving the bogus pristine count. */
|
|
37
37
|
export declare const GENERIC_SCAFFOLD_ACCEPTANCE: readonly string[];
|
|
38
|
+
/** KI-5.3-2 second-face follow-up (row e69daaef; r1 A3 confirmed) — the ONE
|
|
39
|
+
* proof-contract SOURCE-SELECTION home. Three readers (proof-add, review
|
|
40
|
+
* compose DELIVERED pairing, both scope-audit twins) previously derived the
|
|
41
|
+
* fallback target independently and DIVERGED: proof-add derived from SPEC
|
|
42
|
+
* while compose/audit fell back to README with no SPEC path — evidence
|
|
43
|
+
* recorded against one contract, displayed against another. Selection order
|
|
44
|
+
* over SECTION BODIES (each reader keeps its own extractor):
|
|
45
|
+
* authored PRD -> "prd" (canonical, the first-face ruling)
|
|
46
|
+
* pristine PRD -> authored SPEC -> "spec"
|
|
47
|
+
* -> else authored README -> "readme"
|
|
48
|
+
* -> else null (nothing authored; never the placeholder)
|
|
49
|
+
* absent PRD -> authored SPEC -> authored README -> null
|
|
50
|
+
* "Authored" = present and NOT isPristineScaffoldSection. Consumers parse
|
|
51
|
+
* items from the SELECTED source's body with their shipped parsers. */
|
|
52
|
+
export declare function selectProofContractBody(args: {
|
|
53
|
+
prdBody: string | null;
|
|
54
|
+
specBody: string | null;
|
|
55
|
+
readmeBody: string | null;
|
|
56
|
+
}): {
|
|
57
|
+
source: "prd" | "spec" | "readme" | null;
|
|
58
|
+
body: string | null;
|
|
59
|
+
};
|
|
38
60
|
//# sourceMappingURL=scaffold-placeholder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-placeholder.d.ts","sourceRoot":"","sources":["../../../src/lib/scope/scaffold-placeholder.ts"],"names":[],"mappings":"AAuBA;+EAC+E;AAC/E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;;;;;;;0CAQ0C;AAC1C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAOpE;AAED;;;;;;oCAMoC;AACpC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAQpE;AAED;;;;;;;;;6DAS6D;AAC7D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAWtE;AAED;;;4EAG4E;AAC5E,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAC"}
|
|
1
|
+
{"version":3,"file":"scaffold-placeholder.d.ts","sourceRoot":"","sources":["../../../src/lib/scope/scaffold-placeholder.ts"],"names":[],"mappings":"AAuBA;+EAC+E;AAC/E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;;;;;;;0CAQ0C;AAC1C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAOpE;AAED;;;;;;oCAMoC;AACpC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAQpE;AAED;;;;;;;;;6DAS6D;AAC7D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAWtE;AAED;;;4EAG4E;AAC5E,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAC;AAEF;;;;;;;;;;;;;wEAawE;AACxE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG;IAAE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAMpE"}
|
|
@@ -95,4 +95,28 @@ export const GENERIC_SCAFFOLD_ACCEPTANCE = [
|
|
|
95
95
|
"Tests passing",
|
|
96
96
|
"Review approved",
|
|
97
97
|
];
|
|
98
|
+
/** KI-5.3-2 second-face follow-up (row e69daaef; r1 A3 confirmed) — the ONE
|
|
99
|
+
* proof-contract SOURCE-SELECTION home. Three readers (proof-add, review
|
|
100
|
+
* compose DELIVERED pairing, both scope-audit twins) previously derived the
|
|
101
|
+
* fallback target independently and DIVERGED: proof-add derived from SPEC
|
|
102
|
+
* while compose/audit fell back to README with no SPEC path — evidence
|
|
103
|
+
* recorded against one contract, displayed against another. Selection order
|
|
104
|
+
* over SECTION BODIES (each reader keeps its own extractor):
|
|
105
|
+
* authored PRD -> "prd" (canonical, the first-face ruling)
|
|
106
|
+
* pristine PRD -> authored SPEC -> "spec"
|
|
107
|
+
* -> else authored README -> "readme"
|
|
108
|
+
* -> else null (nothing authored; never the placeholder)
|
|
109
|
+
* absent PRD -> authored SPEC -> authored README -> null
|
|
110
|
+
* "Authored" = present and NOT isPristineScaffoldSection. Consumers parse
|
|
111
|
+
* items from the SELECTED source's body with their shipped parsers. */
|
|
112
|
+
export function selectProofContractBody(args) {
|
|
113
|
+
const authored = (b) => b !== null && !isPristineScaffoldSection(b);
|
|
114
|
+
if (authored(args.prdBody))
|
|
115
|
+
return { source: "prd", body: args.prdBody };
|
|
116
|
+
if (authored(args.specBody))
|
|
117
|
+
return { source: "spec", body: args.specBody };
|
|
118
|
+
if (authored(args.readmeBody))
|
|
119
|
+
return { source: "readme", body: args.readmeBody };
|
|
120
|
+
return { source: null, body: null };
|
|
121
|
+
}
|
|
98
122
|
//# sourceMappingURL=scaffold-placeholder.js.map
|