@openrig/cli 0.6.5 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +151 -63
- package/daemon/assets/claude-team-permissions.cjs +262 -0
- package/daemon/assets/onboarding/02-self-and-competent-action.md +46 -2
- package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus-health.cjs +41 -0
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +69 -12
- package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +41 -21
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +24 -7
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +4 -0
- package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +1 -1
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +4 -5
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +9 -4
- package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +31 -4
- package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +24 -13
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -0
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +42 -0
- package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +6 -0
- package/daemon/assets/skills/rigs/SKILL.md +133 -0
- package/daemon/context-packs/help/help.md +66 -12
- package/daemon/context-packs/help/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +218 -38
- package/daemon/context-packs/reference/getting-started.md +593 -139
- package/daemon/context-packs/reference/manifest.yaml +4 -1
- package/daemon/context-packs/reference/rig-spec.md +175 -26
- package/daemon/context-packs/reference/whats-new.md +134 -0
- package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
- package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
- package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +41 -21
- package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +24 -7
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/scripts/precompact-hook.mjs +4 -0
- package/daemon/context-packs/skills/core/agent-starters/SKILL.md +0 -6
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -8
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +5 -5
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +3 -3
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +4 -5
- package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +31 -21
- package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +31 -31
- package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +2 -0
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +0 -1
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +0 -5
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
- package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +1 -1
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
- package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-user/SKILL.md +9 -4
- package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +1 -1
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +0 -2
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/SKILL.md +31 -4
- package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +24 -13
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -0
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +42 -0
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
- package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +6 -0
- package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
- package/daemon/context-packs/world-example/manifest.yaml +1 -1
- package/daemon/context-packs/world-public/manifest.yaml +1 -1
- package/daemon/dist/adapters/claude-code-adapter.d.ts +2 -2
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +48 -26
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/claude-resume.d.ts +1 -1
- package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-resume.js +7 -4
- package/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-resume.d.ts +3 -1
- package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-resume.js +27 -4
- package/daemon/dist/adapters/codex-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +3 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +61 -63
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/compose-services-adapter.js +1 -1
- package/daemon/dist/adapters/compose-services-adapter.js.map +1 -1
- package/daemon/dist/adapters/kernel-authority.d.ts +10 -0
- package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -0
- package/daemon/dist/adapters/kernel-authority.js +71 -0
- package/daemon/dist/adapters/kernel-authority.js.map +1 -0
- package/daemon/dist/adapters/non-interruptive.d.ts +14 -0
- package/daemon/dist/adapters/non-interruptive.d.ts.map +1 -0
- package/daemon/dist/adapters/non-interruptive.js +38 -0
- package/daemon/dist/adapters/non-interruptive.js.map +1 -0
- package/daemon/dist/adapters/pi-readiness.d.ts +15 -0
- package/daemon/dist/adapters/pi-readiness.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-readiness.js +90 -0
- package/daemon/dist/adapters/pi-readiness.js.map +1 -0
- package/daemon/dist/adapters/pi-resume.d.ts +3 -1
- package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-resume.js +8 -1
- package/daemon/dist/adapters/pi-resume.js.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.d.ts +15 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.js +28 -0
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
- package/daemon/dist/adapters/pi-runner.d.ts +3 -0
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner.js +92 -15
- package/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts +8 -0
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.js +37 -9
- package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/stub-runner-protocol.d.ts +1 -1
- package/daemon/dist/adapters/stub-runner-protocol.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-runner.d.ts +1 -1
- package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-runtime-adapter.js +10 -7
- package/daemon/dist/adapters/stub-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts +7 -3
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +20 -12
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/adapters/yolo-mode.d.ts +1 -1
- package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
- package/daemon/dist/adapters/yolo-mode.js +3 -0
- package/daemon/dist/adapters/yolo-mode.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/bundle-behaviour-surface.d.ts +2 -0
- package/daemon/dist/bundle-behaviour-surface.d.ts.map +1 -0
- package/daemon/dist/bundle-behaviour-surface.js +2 -0
- package/daemon/dist/bundle-behaviour-surface.js.map +1 -0
- package/daemon/dist/bundle-identity-surface.d.ts +2 -0
- package/daemon/dist/bundle-identity-surface.d.ts.map +1 -0
- package/daemon/dist/bundle-identity-surface.js +4 -0
- package/daemon/dist/bundle-identity-surface.js.map +1 -0
- package/daemon/dist/daemon-shutdown.d.ts +1 -1
- package/daemon/dist/daemon-shutdown.d.ts.map +1 -1
- package/daemon/dist/daemon-shutdown.js +5 -1
- package/daemon/dist/daemon-shutdown.js.map +1 -1
- package/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/daemon/dist/db/all-migrations.js +6 -0
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/095_rig_non_interruptive.d.ts +3 -0
- package/daemon/dist/db/migrations/095_rig_non_interruptive.d.ts.map +1 -0
- package/daemon/dist/db/migrations/095_rig_non_interruptive.js +5 -0
- package/daemon/dist/db/migrations/095_rig_non_interruptive.js.map +1 -0
- package/daemon/dist/db/migrations/096_rig_install_root.d.ts +3 -0
- package/daemon/dist/db/migrations/096_rig_install_root.d.ts.map +1 -0
- package/daemon/dist/db/migrations/096_rig_install_root.js +5 -0
- package/daemon/dist/db/migrations/096_rig_install_root.js.map +1 -0
- package/daemon/dist/db/migrations/097_thread_part_map.d.ts +3 -0
- package/daemon/dist/db/migrations/097_thread_part_map.d.ts.map +1 -0
- package/daemon/dist/db/migrations/097_thread_part_map.js +20 -0
- package/daemon/dist/db/migrations/097_thread_part_map.js.map +1 -0
- package/daemon/dist/domain/activity-taxonomy.d.ts +7 -0
- package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -1
- package/daemon/dist/domain/activity-taxonomy.js.map +1 -1
- package/daemon/dist/domain/agent-activity-store.d.ts +12 -0
- package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
- package/daemon/dist/domain/agent-activity-store.js +55 -30
- package/daemon/dist/domain/agent-activity-store.js.map +1 -1
- package/daemon/dist/domain/agent-images/agent-image-types.d.ts +1 -1
- package/daemon/dist/domain/agent-images/agent-image-types.d.ts.map +1 -1
- package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
- package/daemon/dist/domain/agent-manifest.js +4 -2
- package/daemon/dist/domain/agent-manifest.js.map +1 -1
- package/daemon/dist/domain/bootstrap-orchestrator.d.ts +10 -0
- package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/bootstrap-orchestrator.js +136 -32
- package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
- package/daemon/dist/domain/builtin-policy-reference.d.ts +1 -1
- package/daemon/dist/domain/builtin-policy-reference.d.ts.map +1 -1
- package/daemon/dist/domain/builtin-policy-reference.js +2 -2
- package/daemon/dist/domain/builtin-policy-reference.js.map +1 -1
- package/daemon/dist/domain/bundle-archive.d.ts +24 -0
- package/daemon/dist/domain/bundle-archive.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-archive.js +52 -27
- package/daemon/dist/domain/bundle-archive.js.map +1 -1
- package/daemon/dist/domain/bundle-audit.d.ts +5 -0
- package/daemon/dist/domain/bundle-audit.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-audit.js.map +1 -1
- package/daemon/dist/domain/bundle-behaviour-inspect.d.ts +4 -0
- package/daemon/dist/domain/bundle-behaviour-inspect.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-behaviour-inspect.js +56 -0
- package/daemon/dist/domain/bundle-behaviour-inspect.js.map +1 -0
- package/daemon/dist/domain/bundle-behaviour.d.ts +118 -0
- package/daemon/dist/domain/bundle-behaviour.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-behaviour.js +364 -0
- package/daemon/dist/domain/bundle-behaviour.js.map +1 -0
- package/daemon/dist/domain/bundle-carried-context-pack.d.ts +16 -0
- package/daemon/dist/domain/bundle-carried-context-pack.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-carried-context-pack.js +67 -0
- package/daemon/dist/domain/bundle-carried-context-pack.js.map +1 -0
- package/daemon/dist/domain/bundle-carried-project.d.ts +13 -0
- package/daemon/dist/domain/bundle-carried-project.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-carried-project.js +71 -0
- package/daemon/dist/domain/bundle-carried-project.js.map +1 -0
- package/daemon/dist/domain/bundle-conflict-detector.js +3 -3
- package/daemon/dist/domain/bundle-conflict-detector.js.map +1 -1
- package/daemon/dist/domain/bundle-content-routing.d.ts +49 -0
- package/daemon/dist/domain/bundle-content-routing.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-content-routing.js +246 -0
- package/daemon/dist/domain/bundle-content-routing.js.map +1 -0
- package/daemon/dist/domain/bundle-context-packs-router.d.ts +7 -2
- package/daemon/dist/domain/bundle-context-packs-router.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-context-packs-router.js +19 -0
- package/daemon/dist/domain/bundle-context-packs-router.js.map +1 -1
- package/daemon/dist/domain/bundle-identity.d.ts +27 -0
- package/daemon/dist/domain/bundle-identity.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-identity.js +34 -0
- package/daemon/dist/domain/bundle-identity.js.map +1 -0
- package/daemon/dist/domain/bundle-install-context.d.ts +22 -0
- package/daemon/dist/domain/bundle-install-context.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-install-context.js +64 -0
- package/daemon/dist/domain/bundle-install-context.js.map +1 -0
- package/daemon/dist/domain/bundle-integrity.d.ts +1 -0
- package/daemon/dist/domain/bundle-integrity.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-integrity.js +1 -1
- package/daemon/dist/domain/bundle-integrity.js.map +1 -1
- package/daemon/dist/domain/bundle-source-resolver.d.ts +4 -1
- package/daemon/dist/domain/bundle-source-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-source-resolver.js +73 -19
- package/daemon/dist/domain/bundle-source-resolver.js.map +1 -1
- package/daemon/dist/domain/bundle-types.d.ts +38 -1
- package/daemon/dist/domain/bundle-types.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-types.js +78 -0
- package/daemon/dist/domain/bundle-types.js.map +1 -1
- package/daemon/dist/domain/chat-repository.d.ts +5 -0
- package/daemon/dist/domain/chat-repository.d.ts.map +1 -1
- package/daemon/dist/domain/chat-repository.js +8 -0
- package/daemon/dist/domain/chat-repository.js.map +1 -1
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +5 -4
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.d.ts +3 -0
- package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.js +8 -1
- package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +15 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +87 -23
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/codex-team-workspace.d.ts +8 -0
- package/daemon/dist/domain/codex-team-workspace.d.ts.map +1 -0
- package/daemon/dist/domain/codex-team-workspace.js +54 -0
- package/daemon/dist/domain/codex-team-workspace.js.map +1 -0
- package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/daemon/dist/domain/codex-thread-id.js +4 -2
- package/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/context-monitor.js +9 -1
- package/daemon/dist/domain/context-monitor.js.map +1 -1
- package/daemon/dist/domain/daemon-version.d.ts +3 -1
- package/daemon/dist/domain/daemon-version.d.ts.map +1 -1
- package/daemon/dist/domain/daemon-version.js +6 -1
- package/daemon/dist/domain/daemon-version.js.map +1 -1
- package/daemon/dist/domain/event-loop-monitor.d.ts +6 -0
- package/daemon/dist/domain/event-loop-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/event-loop-monitor.js +13 -0
- package/daemon/dist/domain/event-loop-monitor.js.map +1 -1
- package/daemon/dist/domain/execution-view.d.ts.map +1 -1
- package/daemon/dist/domain/execution-view.js +57 -11
- package/daemon/dist/domain/execution-view.js.map +1 -1
- package/daemon/dist/domain/finite-telemetry.d.ts +74 -0
- package/daemon/dist/domain/finite-telemetry.d.ts.map +1 -0
- package/daemon/dist/domain/finite-telemetry.js +236 -0
- package/daemon/dist/domain/finite-telemetry.js.map +1 -0
- package/daemon/dist/domain/gateway/connections-projection.d.ts +5 -1
- package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/connections-projection.js +2 -0
- package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
- package/daemon/dist/domain/gateway/destination-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/destination-resolver.js +7 -4
- package/daemon/dist/domain/gateway/destination-resolver.js.map +1 -1
- package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +2 -0
- package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/gateway-subsystem.js +4 -0
- package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
- package/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-readiness.js +23 -6
- package/daemon/dist/domain/gateway/human-readiness.js.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.d.ts +2 -2
- package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.js +2 -2
- package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/capabilities.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/capabilities.js +3 -1
- package/daemon/dist/domain/gateway/slack/capabilities.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/channel-map.d.ts +39 -0
- package/daemon/dist/domain/gateway/slack/channel-map.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/channel-map.js +114 -0
- package/daemon/dist/domain/gateway/slack/channel-map.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +45 -0
- package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/channel-recovery.js +176 -0
- package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/config.d.ts +7 -0
- package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/config.js +19 -2
- package/daemon/dist/domain/gateway/slack/config.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts +27 -2
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.js +123 -11
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.d.ts +7 -0
- package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.js +36 -0
- package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-api.d.ts +1 -0
- package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-api.js +3 -1
- package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +30 -7
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.js +253 -51
- package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +97 -11
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +6 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.js +51 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/state-store.d.ts +24 -0
- package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/state-store.js +84 -1
- package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.js +22 -2
- package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +14 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js +27 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
- package/daemon/dist/domain/generated-file-hygiene.d.ts +3 -0
- package/daemon/dist/domain/generated-file-hygiene.d.ts.map +1 -0
- package/daemon/dist/domain/generated-file-hygiene.js +145 -0
- package/daemon/dist/domain/generated-file-hygiene.js.map +1 -0
- package/daemon/dist/domain/install-planner.d.ts.map +1 -1
- package/daemon/dist/domain/install-planner.js +17 -0
- package/daemon/dist/domain/install-planner.js.map +1 -1
- package/daemon/dist/domain/managed-blocks.d.ts +1 -0
- package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
- package/daemon/dist/domain/managed-blocks.js +8 -2
- package/daemon/dist/domain/managed-blocks.js.map +1 -1
- package/daemon/dist/domain/markdown-address.d.ts.map +1 -1
- package/daemon/dist/domain/markdown-address.js +23 -6
- package/daemon/dist/domain/markdown-address.js.map +1 -1
- package/daemon/dist/domain/native-permission-store.d.ts +14 -0
- package/daemon/dist/domain/native-permission-store.d.ts.map +1 -1
- package/daemon/dist/domain/native-permission-store.js +168 -4
- package/daemon/dist/domain/native-permission-store.js.map +1 -1
- package/daemon/dist/domain/native-process-executable.d.ts +4 -0
- package/daemon/dist/domain/native-process-executable.d.ts.map +1 -0
- package/daemon/dist/domain/native-process-executable.js +53 -0
- package/daemon/dist/domain/native-process-executable.js.map +1 -0
- package/daemon/dist/domain/native-process-lineage.d.ts +2 -0
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +70 -8
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/native-resume-probe.d.ts +3 -1
- package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
- package/daemon/dist/domain/native-resume-probe.js +38 -7
- package/daemon/dist/domain/native-resume-probe.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +2 -2
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +30 -4
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/node-launcher.js +1 -0
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/pane-binding-observation.d.ts +1 -0
- package/daemon/dist/domain/pane-binding-observation.d.ts.map +1 -1
- package/daemon/dist/domain/pane-binding-observation.js +3 -1
- package/daemon/dist/domain/pane-binding-observation.js.map +1 -1
- package/daemon/dist/domain/permission-policy/policy-ref.d.ts +6 -1
- package/daemon/dist/domain/permission-policy/policy-ref.d.ts.map +1 -1
- package/daemon/dist/domain/permission-policy/policy-ref.js +16 -4
- package/daemon/dist/domain/permission-policy/policy-ref.js.map +1 -1
- package/daemon/dist/domain/permission-policy/policy-spec.d.ts +1 -1
- package/daemon/dist/domain/permission-policy/policy-spec.d.ts.map +1 -1
- package/daemon/dist/domain/permission-policy/policy-spec.js +2 -2
- package/daemon/dist/domain/permission-policy/policy-spec.js.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.d.ts +6 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.js +12 -0
- package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
- package/daemon/dist/domain/profile-resolver.d.ts +3 -2
- package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/profile-resolver.js +71 -9
- package/daemon/dist/domain/profile-resolver.js.map +1 -1
- package/daemon/dist/domain/projection-planner.d.ts +11 -0
- package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
- package/daemon/dist/domain/projection-planner.js +1 -1
- package/daemon/dist/domain/projection-planner.js.map +1 -1
- package/daemon/dist/domain/ps-projection.d.ts +11 -9
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +15 -12
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +2 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +75 -24
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-retention.d.ts +2 -2
- package/daemon/dist/domain/queue-retention.js +4 -4
- package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
- package/daemon/dist/domain/queue-transition-log.js +12 -10
- package/daemon/dist/domain/queue-transition-log.js.map +1 -1
- package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wait-backoff.js +6 -2
- package/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
- package/daemon/dist/domain/queue-waiting.d.ts.map +1 -1
- package/daemon/dist/domain/queue-waiting.js +7 -2
- package/daemon/dist/domain/queue-waiting.js.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.d.ts +15 -2
- package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.js +29 -6
- package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
- package/daemon/dist/domain/readiness-timeout.d.ts +7 -0
- package/daemon/dist/domain/readiness-timeout.d.ts.map +1 -0
- package/daemon/dist/domain/readiness-timeout.js +19 -0
- package/daemon/dist/domain/readiness-timeout.js.map +1 -0
- package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
- package/daemon/dist/domain/rehydrate-eligibility.js +5 -2
- package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
- package/daemon/dist/domain/reply-to-choice.d.ts +6 -2
- package/daemon/dist/domain/reply-to-choice.d.ts.map +1 -1
- package/daemon/dist/domain/reply-to-choice.js +9 -6
- package/daemon/dist/domain/reply-to-choice.js.map +1 -1
- package/daemon/dist/domain/request-phase-observer.d.ts +69 -0
- package/daemon/dist/domain/request-phase-observer.d.ts.map +1 -0
- package/daemon/dist/domain/request-phase-observer.js +206 -0
- package/daemon/dist/domain/request-phase-observer.js.map +1 -0
- package/daemon/dist/domain/restore-check-service.d.ts +5 -1
- package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
- package/daemon/dist/domain/restore-check-service.js +17 -3
- package/daemon/dist/domain/restore-check-service.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts +2 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +58 -12
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/rig-mode/operating-posture.d.ts +17 -1
- package/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -1
- package/daemon/dist/domain/rig-mode/operating-posture.js +53 -15
- package/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +15 -6
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +62 -10
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
- package/daemon/dist/domain/rig-teardown.js +12 -3
- package/daemon/dist/domain/rig-teardown.js.map +1 -1
- package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-codec.js +2 -0
- package/daemon/dist/domain/rigspec-codec.js.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.js +1 -0
- package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +9 -3
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +46 -13
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +3 -2
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +24 -12
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +24 -5
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/route-timing-recorder.d.ts.map +1 -1
- package/daemon/dist/domain/route-timing-recorder.js +2 -0
- package/daemon/dist/domain/route-timing-recorder.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +12 -3
- package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-adapter.js +1 -0
- package/daemon/dist/domain/runtime-adapter.js.map +1 -1
- package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-activity-service.js +16 -6
- package/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.js +10 -4
- package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +2 -0
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +14 -8
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/seat-launch-environment.d.ts.map +1 -1
- package/daemon/dist/domain/seat-launch-environment.js +4 -0
- package/daemon/dist/domain/seat-launch-environment.js.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.d.ts +4 -0
- package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.js +4 -0
- package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/daemon/dist/domain/seat-status-service.d.ts +2 -1
- package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-status-service.js +6 -4
- package/daemon/dist/domain/seat-status-service.js.map +1 -1
- package/daemon/dist/domain/service-orchestrator.d.ts +1 -0
- package/daemon/dist/domain/service-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/service-orchestrator.js +4 -0
- package/daemon/dist/domain/service-orchestrator.js.map +1 -1
- package/daemon/dist/domain/session-jsonl.d.ts.map +1 -1
- package/daemon/dist/domain/session-jsonl.js +10 -4
- package/daemon/dist/domain/session-jsonl.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +9 -20
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +198 -44
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/skill-audit.d.ts +19 -0
- package/daemon/dist/domain/skill-audit.d.ts.map +1 -1
- package/daemon/dist/domain/skill-audit.js +97 -5
- package/daemon/dist/domain/skill-audit.js.map +1 -1
- package/daemon/dist/domain/skill-catalog.d.ts +19 -0
- package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
- package/daemon/dist/domain/skill-catalog.js +175 -17
- package/daemon/dist/domain/skill-catalog.js.map +1 -1
- package/daemon/dist/domain/skill-discovery.d.ts +1 -1
- package/daemon/dist/domain/skill-discovery.d.ts.map +1 -1
- package/daemon/dist/domain/skill-discovery.js +6 -0
- package/daemon/dist/domain/skill-discovery.js.map +1 -1
- package/daemon/dist/domain/skill-mirror-drift.d.ts +6 -1
- package/daemon/dist/domain/skill-mirror-drift.d.ts.map +1 -1
- package/daemon/dist/domain/skill-mirror-drift.js +23 -12
- package/daemon/dist/domain/skill-mirror-drift.js.map +1 -1
- package/daemon/dist/domain/slow-op-recorder.d.ts +5 -0
- package/daemon/dist/domain/slow-op-recorder.d.ts.map +1 -1
- package/daemon/dist/domain/slow-op-recorder.js +34 -1
- package/daemon/dist/domain/slow-op-recorder.js.map +1 -1
- package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
- package/daemon/dist/domain/snapshot-repository.js +12 -32
- package/daemon/dist/domain/snapshot-repository.js.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.d.ts +30 -5
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +143 -43
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/daemon/dist/domain/startup-proof.d.ts +7 -0
- package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
- package/daemon/dist/domain/startup-proof.js +7 -0
- package/daemon/dist/domain/startup-proof.js.map +1 -1
- package/daemon/dist/domain/startup-submission-evidence.d.ts +5 -1
- package/daemon/dist/domain/startup-submission-evidence.d.ts.map +1 -1
- package/daemon/dist/domain/startup-submission-evidence.js +19 -2
- package/daemon/dist/domain/startup-submission-evidence.js.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.d.ts +9 -3
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +12 -4
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/system-world.d.ts +3 -0
- package/daemon/dist/domain/system-world.d.ts.map +1 -1
- package/daemon/dist/domain/system-world.js +24 -21
- package/daemon/dist/domain/system-world.js.map +1 -1
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js +2 -3
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +23 -5
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.js +116 -15
- package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
- package/daemon/dist/domain/terminal/terminal-provider.d.ts +11 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.d.ts +14 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.js +91 -10
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
- package/daemon/dist/domain/terminal/view-composer.d.ts +6 -0
- package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/view-composer.js +4 -2
- package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
- package/daemon/dist/domain/topology/remote-up-leaf.d.ts +1 -0
- package/daemon/dist/domain/topology/remote-up-leaf.d.ts.map +1 -1
- package/daemon/dist/domain/topology/remote-up-leaf.js.map +1 -1
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +24 -11
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +8 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/usage-samples-store.js +2 -2
- package/daemon/dist/domain/usage-samples-store.js.map +1 -1
- package/daemon/dist/domain/usage-series.d.ts.map +1 -1
- package/daemon/dist/domain/usage-series.js +42 -10
- package/daemon/dist/domain/usage-series.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-browser.js +2 -0
- package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +14 -1
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/watchdog-due.d.ts +17 -0
- package/daemon/dist/domain/watchdog-due.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-due.js +45 -0
- package/daemon/dist/domain/watchdog-due.js.map +1 -0
- package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-scheduler.js +3 -7
- package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +15 -5
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-runtime.d.ts +1 -1
- package/daemon/dist/domain/workflow-runtime.js +1 -1
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-step-trail-log.d.ts +6 -0
- package/daemon/dist/domain/workflow-step-trail-log.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-step-trail-log.js +11 -0
- package/daemon/dist/domain/workflow-step-trail-log.js.map +1 -1
- package/daemon/dist/domain/workspace/project-catalog.d.ts +20 -0
- package/daemon/dist/domain/workspace/project-catalog.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/project-catalog.js +92 -0
- package/daemon/dist/domain/workspace/project-catalog.js.map +1 -1
- package/daemon/dist/domain/workspace/project-registration.d.ts +49 -0
- package/daemon/dist/domain/workspace/project-registration.d.ts.map +1 -0
- package/daemon/dist/domain/workspace/project-registration.js +251 -0
- package/daemon/dist/domain/workspace/project-registration.js.map +1 -0
- package/daemon/dist/gateway-slack-surface.d.ts +1 -0
- package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
- package/daemon/dist/gateway-slack-surface.js +2 -1
- package/daemon/dist/gateway-slack-surface.js.map +1 -1
- package/daemon/dist/index.d.ts +1 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +9 -8
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/project-catalog-surface.d.ts +2 -1
- package/daemon/dist/project-catalog-surface.d.ts.map +1 -1
- package/daemon/dist/project-catalog-surface.js +1 -1
- package/daemon/dist/project-catalog-surface.js.map +1 -1
- package/daemon/dist/routes/agent-images.js +5 -5
- package/daemon/dist/routes/agent-images.js.map +1 -1
- package/daemon/dist/routes/bootstrap-failure-response.d.ts +13 -0
- package/daemon/dist/routes/bootstrap-failure-response.d.ts.map +1 -0
- package/daemon/dist/routes/bootstrap-failure-response.js +52 -0
- package/daemon/dist/routes/bootstrap-failure-response.js.map +1 -0
- package/daemon/dist/routes/bundles.d.ts.map +1 -1
- package/daemon/dist/routes/bundles.js +197 -449
- package/daemon/dist/routes/bundles.js.map +1 -1
- package/daemon/dist/routes/chat.d.ts.map +1 -1
- package/daemon/dist/routes/chat.js +16 -1
- package/daemon/dist/routes/chat.js.map +1 -1
- package/daemon/dist/routes/compaction.d.ts.map +1 -1
- package/daemon/dist/routes/compaction.js +14 -2
- package/daemon/dist/routes/compaction.js.map +1 -1
- package/daemon/dist/routes/env.d.ts.map +1 -1
- package/daemon/dist/routes/env.js +14 -4
- package/daemon/dist/routes/env.js.map +1 -1
- package/daemon/dist/routes/gateway.d.ts.map +1 -1
- package/daemon/dist/routes/gateway.js +5 -0
- package/daemon/dist/routes/gateway.js.map +1 -1
- package/daemon/dist/routes/projects.d.ts.map +1 -1
- package/daemon/dist/routes/projects.js +4 -2
- package/daemon/dist/routes/projects.js.map +1 -1
- package/daemon/dist/routes/restore-check.d.ts.map +1 -1
- package/daemon/dist/routes/restore-check.js +2 -0
- package/daemon/dist/routes/restore-check.js.map +1 -1
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +5 -4
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/rigspec.js +4 -2
- package/daemon/dist/routes/rigspec.js.map +1 -1
- package/daemon/dist/routes/seat.js +23 -16
- 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 +12 -11
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/skills.d.ts.map +1 -1
- package/daemon/dist/routes/skills.js +15 -7
- package/daemon/dist/routes/skills.js.map +1 -1
- package/daemon/dist/routes/telemetry.d.ts +2 -0
- package/daemon/dist/routes/telemetry.d.ts.map +1 -1
- package/daemon/dist/routes/telemetry.js +16 -0
- package/daemon/dist/routes/telemetry.js.map +1 -1
- package/daemon/dist/routes/terminal-ws.js +15 -2
- package/daemon/dist/routes/terminal-ws.js.map +1 -1
- package/daemon/dist/routes/terminal.d.ts.map +1 -1
- package/daemon/dist/routes/terminal.js +6 -4
- package/daemon/dist/routes/terminal.js.map +1 -1
- package/daemon/dist/routes/up.d.ts.map +1 -1
- package/daemon/dist/routes/up.js +12 -59
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/server.d.ts +1 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +4 -1
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/spec-validation-surface.d.ts +2 -0
- package/daemon/dist/spec-validation-surface.d.ts.map +1 -1
- package/daemon/dist/spec-validation-surface.js +2 -0
- package/daemon/dist/spec-validation-surface.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +65 -18
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/dist/system-world-surface.d.ts +1 -1
- package/daemon/dist/system-world-surface.d.ts.map +1 -1
- package/daemon/dist/system-world-surface.js +1 -1
- package/daemon/dist/system-world-surface.js.map +1 -1
- package/daemon/dist/terminal/TerminalSessionBroker.d.ts.map +1 -1
- package/daemon/dist/terminal/TerminalSessionBroker.js +9 -1
- package/daemon/dist/terminal/TerminalSessionBroker.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +114 -68
- package/daemon/docs/reference/agent-startup-guide.md +111 -33
- package/daemon/docs/reference/agent-state-taxonomy.md +44 -13
- package/daemon/docs/reference/browser-access.md +8 -7
- package/daemon/docs/reference/bundle-formats.md +209 -0
- package/daemon/docs/reference/chain-file-convention.md +18 -9
- package/daemon/docs/reference/developing.md +8 -1
- package/daemon/docs/reference/edge-types.md +18 -10
- package/daemon/docs/reference/getting-started.md +593 -139
- package/daemon/docs/reference/health-diagnosis.md +14 -6
- package/daemon/docs/reference/help.md +66 -12
- package/daemon/docs/reference/host-resources.md +3 -2
- package/daemon/docs/reference/inventory-request-diagnostics.md +75 -0
- package/daemon/docs/reference/knowledge-maturity.md +3 -1
- package/daemon/docs/reference/legacy-topology-migration.md +4 -2
- package/daemon/docs/reference/lore-routing.md +3 -1
- package/daemon/docs/reference/mission-install.md +3 -1
- package/daemon/docs/reference/non-interruptive-mode.md +63 -0
- package/daemon/docs/reference/planning-dial.md +2 -1
- package/daemon/docs/reference/product-journey-sdlc.md +11 -6
- package/daemon/docs/reference/product-management-pass.md +3 -1
- package/daemon/docs/reference/project-workspace.md +81 -4
- package/daemon/docs/reference/publishing-a-rig-bundle.md +147 -0
- package/daemon/docs/reference/refocus-channel.md +28 -7
- package/daemon/docs/reference/release-boundary.md +7 -3
- package/daemon/docs/reference/rig-bundle.md +292 -43
- package/daemon/docs/reference/rig-spec.md +175 -26
- package/daemon/docs/reference/rosters.md +61 -0
- package/daemon/docs/reference/schemas/bundle-behaviour.v1.schema.json +546 -0
- package/daemon/docs/reference/schemas/bundle-common.v1.schema.json +110 -0
- package/daemon/docs/reference/schemas/bundle-configurations.v1.schema.json +67 -0
- package/daemon/docs/reference/schemas/bundle-status.v1.schema.json +323 -0
- package/daemon/docs/reference/schemas/fixtures/identity-vectors.json +80 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/behaviour/not-generated-with-sections.json +60 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/configurations/spaced-member.configurations.yaml +6 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/registry/listed-with-withdrawn-on.yaml +21 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/registry/missing-source.yaml +16 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/registry/parent-folder.yaml +20 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/registry/short-commit.yaml +20 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/registry/withdrawn-without-date.yaml +20 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/run-record/harness-check-with-configuration.json +75 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/run-record/unlabelable-platform.json +97 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/status/hand-edited-notice.json +61 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/status/tested-with-assistance.json +62 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/status/tested-without-records.json +59 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/status/unavailable-harness-with-result.json +61 -0
- package/daemon/docs/reference/schemas/fixtures/invalid/status/unavailable-listing-with-label.json +61 -0
- package/daemon/docs/reference/schemas/fixtures/valid/behaviour/custom-not-generated.json +22 -0
- package/daemon/docs/reference/schemas/fixtures/valid/behaviour/legacy-archive-unknown-identity.json +53 -0
- package/daemon/docs/reference/schemas/fixtures/valid/behaviour/mixed-runtimes-default.json +101 -0
- package/daemon/docs/reference/schemas/fixtures/valid/behaviour/mixed-runtimes-yolo.json +102 -0
- package/daemon/docs/reference/schemas/fixtures/valid/behaviour/openrig-dev.recommended.json +258 -0
- package/daemon/docs/reference/schemas/fixtures/valid/configurations/openrig-dev.configurations.yaml +12 -0
- package/daemon/docs/reference/schemas/fixtures/valid/registry/openrig-dev.yaml +20 -0
- package/daemon/docs/reference/schemas/fixtures/valid/registry/withdrawn.yaml +21 -0
- package/daemon/docs/reference/schemas/fixtures/valid/run-record/pi-harness-check-blocked.json +74 -0
- package/daemon/docs/reference/schemas/fixtures/valid/run-record/team-assisted-pass.json +97 -0
- package/daemon/docs/reference/schemas/fixtures/valid/run-record/team-pass.json +97 -0
- package/daemon/docs/reference/schemas/fixtures/valid/run-record/withdraws-earlier.json +99 -0
- package/daemon/docs/reference/schemas/fixtures/valid/status/status.json +61 -0
- package/daemon/docs/reference/schemas/registry-entry.v1.schema.json +139 -0
- package/daemon/docs/reference/schemas/run-record.v1.schema.json +315 -0
- package/daemon/docs/reference/scoped-operating-posture.md +17 -9
- package/daemon/docs/reference/sdlc-conventions.md +46 -28
- package/daemon/docs/reference/slack-app-setup.md +112 -11
- package/daemon/docs/reference/stream-classifier-worker.md +21 -8
- package/daemon/docs/reference/telemetry.md +114 -0
- package/daemon/docs/reference/whats-new.md +134 -0
- package/daemon/docs/reference/worktree-builds.md +12 -6
- package/daemon/policies/builtin/auto.policy.md +24 -0
- package/daemon/specs/agents/development/implementer/agent.yaml +2 -2
- package/daemon/specs/agents/development/qa/agent.yaml +1 -1
- package/daemon/specs/agents/product-management/pm/agent.yaml +10 -0
- package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +0 -6
- package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -8
- package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +5 -5
- package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +4 -5
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +31 -21
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +31 -31
- package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +2 -0
- package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +0 -1
- package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +0 -5
- package/daemon/specs/agents/shared/skills/process/agent-browser/OPENRIG.md +1 -1
- package/daemon/specs/agents/shared/skills/process/systematic-debugging/SKILL.md +0 -2
- package/daemon/specs/rigs/focused/{adversarial-review → code-review}/rig.yaml +1 -1
- package/daemon/specs/rigs/focused/pm/CULTURE.md +21 -0
- package/daemon/specs/rigs/focused/{pm-team → pm}/rig.yaml +5 -5
- package/daemon/specs/rigs/focused/{research-team → research}/rig.yaml +1 -1
- package/daemon/specs/rigs/launch/factory/CULTURE.md +96 -0
- package/daemon/specs/rigs/launch/factory/guidance/advisor-role.md +10 -0
- package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +83 -0
- package/daemon/specs/rigs/launch/{demo → factory}/rig.yaml +46 -35
- package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/instance/CRAFT.md +1 -1
- package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/rig/CRAFT.md +2 -2
- package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/rig/ORCHESTRATION-CRAFT.md +2 -2
- package/daemon/specs/rigs/{preview/product-team/topology/seats/dev1-qa → launch/factory/topology/seats/dev-qa}/CRAFT.md +1 -1
- package/daemon/specs/rigs/{preview/product-team/topology/seats/orch1-lead → launch/factory/topology/seats/orch-lead}/CRAFT.md +1 -1
- package/daemon/specs/rigs/{preview/product-team/topology/seats/rev1-r1 → launch/factory/topology/seats/review-r1}/CRAFT.md +1 -1
- package/daemon/specs/rigs/{preview/product-team/topology/seats/rev1-r2 → launch/factory/topology/seats/review-r2}/CRAFT.md +1 -1
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +37 -0
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +12 -13
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +258 -9
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +30 -7
- package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +37 -0
- package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +46 -2
- package/daemon/specs/rigs/launch/starter/CULTURE.md +39 -0
- package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +67 -0
- package/daemon/specs/rigs/launch/{first-project-mixed → starter}/rig.yaml +11 -8
- package/dist/build-info.js +3 -3
- package/dist/bundle-behaviour.d.ts +10 -0
- package/dist/bundle-behaviour.d.ts.map +1 -0
- package/dist/bundle-behaviour.js +72 -0
- package/dist/bundle-behaviour.js.map +1 -0
- package/dist/cli-error.d.ts.map +1 -1
- package/dist/cli-error.js +11 -3
- package/dist/cli-error.js.map +1 -1
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/agent-image.js +2 -2
- package/dist/commands/agent-image.js.map +1 -1
- package/dist/commands/bootstrap.d.ts.map +1 -1
- package/dist/commands/bootstrap.js +30 -5
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/bundle.d.ts +12 -0
- package/dist/commands/bundle.d.ts.map +1 -1
- package/dist/commands/bundle.js +288 -22
- package/dist/commands/bundle.js.map +1 -1
- package/dist/commands/capture.js +4 -4
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/chatroom.d.ts.map +1 -1
- package/dist/commands/chatroom.js +21 -1
- package/dist/commands/chatroom.js.map +1 -1
- package/dist/commands/compact-plan.js +2 -2
- package/dist/commands/compact-plan.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +3 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts +3 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +70 -20
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/daemon.js +1 -1
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +17 -5
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +49 -1
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/env.js +1 -1
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +4 -3
- package/dist/commands/gateway.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +4 -1
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/host.d.ts +11 -0
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +25 -1
- package/dist/commands/host.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +2 -0
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +25 -12
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/package.d.ts.map +1 -1
- package/dist/commands/package.js +6 -3
- package/dist/commands/package.js.map +1 -1
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +9 -7
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/project-jev.js +1 -1
- package/dist/commands/project-jev.js.map +1 -1
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +5 -3
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/ps.d.ts +1 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +12 -2
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +10 -5
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/restore-packet.d.ts.map +1 -1
- package/dist/commands/restore-packet.js +6 -4
- package/dist/commands/restore-packet.js.map +1 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +5 -0
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/roster.d.ts +63 -0
- package/dist/commands/roster.d.ts.map +1 -0
- package/dist/commands/roster.js +169 -0
- package/dist/commands/roster.js.map +1 -0
- package/dist/commands/scope.js +5 -5
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/seat.d.ts.map +1 -1
- package/dist/commands/seat.js +57 -8
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +20 -6
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.d.ts +7 -16
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +174 -338
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +6 -1
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/slack.d.ts +6 -2
- package/dist/commands/slack.d.ts.map +1 -1
- package/dist/commands/slack.js +192 -10
- package/dist/commands/slack.js.map +1 -1
- package/dist/commands/specs.d.ts.map +1 -1
- package/dist/commands/specs.js +19 -2
- package/dist/commands/specs.js.map +1 -1
- package/dist/commands/start.js +1 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stream.js +1 -1
- package/dist/commands/stream.js.map +1 -1
- package/dist/commands/telemetry.d.ts +5 -0
- package/dist/commands/telemetry.d.ts.map +1 -0
- package/dist/commands/telemetry.js +58 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/commands/terminal.d.ts +33 -0
- package/dist/commands/terminal.d.ts.map +1 -1
- package/dist/commands/terminal.js +30 -12
- package/dist/commands/terminal.js.map +1 -1
- package/dist/commands/tui.js +4 -4
- package/dist/commands/tui.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +115 -68
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.d.ts +3 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +29 -2
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/workflow-follow.d.ts +1 -1
- package/dist/commands/workflow-follow.d.ts.map +1 -1
- package/dist/commands/workflow-follow.js +4 -3
- package/dist/commands/workflow-follow.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +30 -18
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.d.ts +5 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +17 -2
- package/dist/config-store.js.map +1 -1
- package/dist/daemon-auto-start.d.ts +8 -0
- package/dist/daemon-auto-start.d.ts.map +1 -0
- package/dist/daemon-auto-start.js +39 -0
- package/dist/daemon-auto-start.js.map +1 -0
- package/dist/front-door.d.ts.map +1 -1
- package/dist/front-door.js +5 -2
- package/dist/front-door.js.map +1 -1
- package/dist/herdr-launch-config.d.ts +3 -0
- package/dist/herdr-launch-config.d.ts.map +1 -0
- package/dist/herdr-launch-config.js +37 -0
- package/dist/herdr-launch-config.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/bundle-check.d.ts +13 -0
- package/dist/lib/bundle-check.d.ts.map +1 -0
- package/dist/lib/bundle-check.js +191 -0
- package/dist/lib/bundle-check.js.map +1 -0
- package/dist/lib/bundle-configuration.d.ts +60 -0
- package/dist/lib/bundle-configuration.d.ts.map +1 -0
- package/dist/lib/bundle-configuration.js +198 -0
- package/dist/lib/bundle-configuration.js.map +1 -0
- package/dist/lib/bundle-source.d.ts +59 -0
- package/dist/lib/bundle-source.d.ts.map +1 -0
- package/dist/lib/bundle-source.js +366 -0
- package/dist/lib/bundle-source.js.map +1 -0
- package/dist/lib/context-git.d.ts +2 -0
- package/dist/lib/context-git.d.ts.map +1 -1
- package/dist/lib/context-git.js +55 -5
- package/dist/lib/context-git.js.map +1 -1
- package/dist/lib/context-install.d.ts.map +1 -1
- package/dist/lib/context-install.js +2 -3
- package/dist/lib/context-install.js.map +1 -1
- package/dist/lib/permission-policy/policy-ref.d.ts +6 -1
- package/dist/lib/permission-policy/policy-ref.d.ts.map +1 -1
- package/dist/lib/permission-policy/policy-ref.js +16 -4
- package/dist/lib/permission-policy/policy-ref.js.map +1 -1
- package/dist/lib/permission-policy/policy-spec.d.ts +1 -1
- package/dist/lib/permission-policy/policy-spec.d.ts.map +1 -1
- package/dist/lib/permission-policy/policy-spec.js +2 -2
- package/dist/lib/permission-policy/policy-spec.js.map +1 -1
- package/dist/lib/scope/scope-fs.d.ts +3 -2
- package/dist/lib/scope/scope-fs.d.ts.map +1 -1
- package/dist/lib/scope/scope-fs.js +97 -9
- package/dist/lib/scope/scope-fs.js.map +1 -1
- package/dist/lib/scope/templates.d.ts.map +1 -1
- package/dist/lib/scope/templates.js +28 -23
- package/dist/lib/scope/templates.js.map +1 -1
- package/dist/lib/scope-templates/notes.md +1 -1
- package/dist/lib/work-install.d.ts +12 -0
- package/dist/lib/work-install.d.ts.map +1 -1
- package/dist/lib/work-install.js +55 -4
- package/dist/lib/work-install.js.map +1 -1
- package/dist/provider-auth.d.ts +32 -0
- package/dist/provider-auth.d.ts.map +1 -0
- package/dist/provider-auth.js +128 -0
- package/dist/provider-auth.js.map +1 -0
- package/dist/terminal-window.d.ts +19 -0
- package/dist/terminal-window.d.ts.map +1 -0
- package/dist/terminal-window.js +513 -0
- package/dist/terminal-window.js.map +1 -0
- package/package.json +1 -1
- package/tui/dist/commands/registry.d.ts.map +1 -1
- package/tui/dist/commands/registry.js +9 -4
- package/tui/dist/commands/registry.js.map +1 -1
- package/tui/dist/config/config-model.d.ts.map +1 -1
- package/tui/dist/config/config-model.js +1 -0
- package/tui/dist/config/config-model.js.map +1 -1
- package/tui/dist/connections/connections-model.d.ts +5 -0
- package/tui/dist/connections/connections-model.d.ts.map +1 -1
- package/tui/dist/connections/connections-model.js +1 -1
- package/tui/dist/connections/connections-model.js.map +1 -1
- package/tui/dist/daemon-client.d.ts +6 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js +5 -2
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/execution/workflow-model.d.ts.map +1 -1
- package/tui/dist/execution/workflow-model.js +3 -1
- package/tui/dist/execution/workflow-model.js.map +1 -1
- package/tui/dist/hydrate.d.ts +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +3 -1
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/main.js +53 -14
- package/tui/dist/main.js.map +1 -1
- package/tui/dist/page-read.js +1 -1
- package/tui/dist/page-read.js.map +1 -1
- package/tui/dist/pending-address.d.ts +7 -0
- package/tui/dist/pending-address.d.ts.map +1 -0
- package/tui/dist/pending-address.js +11 -0
- package/tui/dist/pending-address.js.map +1 -0
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +74 -23
- package/tui/dist/render.js.map +1 -1
- package/tui/dist/socket-server.d.ts +3 -1
- package/tui/dist/socket-server.d.ts.map +1 -1
- package/tui/dist/socket-server.js +6 -0
- package/tui/dist/socket-server.js.map +1 -1
- package/tui/dist/specs/graph.d.ts +5 -0
- package/tui/dist/specs/graph.d.ts.map +1 -0
- package/tui/dist/specs/graph.js +16 -0
- package/tui/dist/specs/graph.js.map +1 -0
- package/tui/dist/specs/launch.d.ts +29 -0
- package/tui/dist/specs/launch.d.ts.map +1 -0
- package/tui/dist/specs/launch.js +64 -0
- package/tui/dist/specs/launch.js.map +1 -0
- package/tui/dist/startup.d.ts.map +1 -1
- package/tui/dist/startup.js +15 -6
- package/tui/dist/startup.js.map +1 -1
- package/tui/dist/state.d.ts +2 -2
- package/tui/dist/state.d.ts.map +1 -1
- package/tui/dist/state.js +77 -27
- package/tui/dist/state.js.map +1 -1
- package/tui/dist/stylize.js +1 -1
- package/tui/dist/stylize.js.map +1 -1
- package/tui/dist/terminals/open-window.d.ts +5 -0
- package/tui/dist/terminals/open-window.d.ts.map +1 -0
- package/tui/dist/terminals/open-window.js +55 -0
- package/tui/dist/terminals/open-window.js.map +1 -0
- package/tui/dist/terminals/terminal-model.d.ts +1 -0
- package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
- package/tui/dist/terminals/terminal-model.js +21 -5
- package/tui/dist/terminals/terminal-model.js.map +1 -1
- package/tui/dist/types.d.ts +32 -0
- package/tui/dist/types.d.ts.map +1 -1
- package/ui/dist/assets/{index-HHSvwF97.js → index-D5n8EwkG.js} +1 -1
- package/ui/dist/index.html +1 -1
- package/daemon/specs/rigs/launch/conveyor/README.md +0 -33
- package/daemon/specs/rigs/launch/conveyor/rig.yaml +0 -72
- package/daemon/specs/rigs/launch/demo/project-example/README.md +0 -25
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +0 -19
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +0 -6
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +0 -7
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +0 -31
- package/daemon/specs/rigs/launch/first-project/rig.yaml +0 -31
- package/daemon/specs/rigs/launch/first-project-claude/rig.yaml +0 -30
- package/daemon/specs/rigs/launch/implementation-pair/rig.yaml +0 -27
- package/daemon/specs/rigs/preview/product-team/rig.yaml +0 -90
- /package/daemon/specs/rigs/launch/factory-rsi/{rig.yaml → world-bundle.yaml} +0 -0
|
@@ -2,26 +2,28 @@ import fs from "node:fs";
|
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import nodePath from "node:path";
|
|
4
4
|
import { Hono } from "hono";
|
|
5
|
+
import { bootstrapFailureResponse } from "./bootstrap-failure-response.js";
|
|
5
6
|
import { LegacyBundleAssembler as BundleAssembler } from "../domain/bundle-assembler.js";
|
|
6
7
|
import { PodBundleAssembler } from "../domain/pod-bundle-assembler.js";
|
|
7
8
|
import { computeIntegrity, writeIntegrity, verifyIntegrity } from "../domain/bundle-integrity.js";
|
|
8
|
-
import { pack, unpack, verifyArchiveDigest } from "../domain/bundle-archive.js";
|
|
9
|
+
import { pack, unpack, verifyArchiveDigest, collectUnsafeArchiveEntries, unsafeArchiveEntryReason } from "../domain/bundle-archive.js";
|
|
9
10
|
import { resolvePackage } from "../domain/package-resolve-helper.js";
|
|
10
11
|
import { compareSpecToLive, topologyFromRigSpec, topologyFromLiveLogicalIds, bundleExportWarning, topologyFromLegacyRigSpec, topologyFromLiveNodeIds, } from "../domain/spec-live-conformance.js";
|
|
11
12
|
import { LegacyRigSpecSchema } from "../domain/rigspec-schema.js";
|
|
12
13
|
import { RigSpecCodec } from "../domain/rigspec-codec.js";
|
|
13
14
|
import { RigSpecSchema } from "../domain/rigspec-schema.js";
|
|
14
|
-
import { parseLegacyBundleManifest as parseBundleManifest, normalizeLegacyBundleManifest as normalizeBundleManifest, serializePodBundleManifest, parsePodBundleManifest, validatePodBundleManifest, validateLegacyBundleManifest, normalizeProvenanceBlock, normalizeCompatibilityBlock, isRelativeSafePath } from "../domain/bundle-types.js";
|
|
15
|
+
import { parseLegacyBundleManifest as parseBundleManifest, normalizeLegacyBundleManifest as normalizeBundleManifest, serializePodBundleManifest, parsePodBundleManifest, validatePodBundleManifest, validateLegacyBundleManifest, normalizeProvenanceBlock, normalizeBundleSource, normalizeCompatibilityBlock, isRelativeSafePath } from "../domain/bundle-types.js";
|
|
15
16
|
import { detectBundleConflicts } from "../domain/bundle-conflict-detector.js";
|
|
17
|
+
import { bundleInstallContext, bundleInstallContextLines } from "../domain/bundle-install-context.js";
|
|
16
18
|
import { BundleAuditReader, BundleAuditWriter } from "../domain/bundle-audit.js";
|
|
17
19
|
import { getDefaultOpenRigPath } from "../openrig-compat.js";
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import { routeAgentImages } from "../domain/bundle-agent-images-router.js";
|
|
23
|
-
import { SettingsStore as ContextPackSettingsStore } from "../domain/user-settings/settings-store.js";
|
|
20
|
+
import { routingFailureWarnings } from "../domain/bundle-content-routing.js";
|
|
21
|
+
import { configurationId, packageDigest } from "../domain/bundle-identity.js";
|
|
22
|
+
import { vendorContextPackDir } from "../domain/bundle-carried-context-pack.js";
|
|
23
|
+
import { vendorProjectDir } from "../domain/bundle-carried-project.js";
|
|
24
24
|
import { getDaemonVersion } from "../domain/daemon-version.js";
|
|
25
|
+
import { inspectBundleBehaviour } from "../domain/bundle-behaviour-inspect.js";
|
|
26
|
+
import { normalizePreconditionsBlock } from "../domain/bundle-types.js";
|
|
25
27
|
import { assertShippableSubstance } from "../domain/agent-resolver.js";
|
|
26
28
|
/**
|
|
27
29
|
* Compare two dotted numeric version strings (semver-ish). Returns -1 if
|
|
@@ -181,6 +183,9 @@ function provenanceFromRequestBody(raw) {
|
|
|
181
183
|
return undefined;
|
|
182
184
|
const p = raw;
|
|
183
185
|
const result = {};
|
|
186
|
+
const source = normalizeBundleSource(p["source"]);
|
|
187
|
+
if (source)
|
|
188
|
+
result.source = source;
|
|
184
189
|
if (typeof p["sourceHost"] === "string")
|
|
185
190
|
result.sourceHost = p["sourceHost"];
|
|
186
191
|
if (typeof p["authorSession"] === "string")
|
|
@@ -361,314 +366,6 @@ function podAssemblerFsOps() {
|
|
|
361
366
|
},
|
|
362
367
|
};
|
|
363
368
|
}
|
|
364
|
-
/** Item 6 / slice-05 Checkpoint 7.3d: real PluginsRouterFsOps backed by node:fs. */
|
|
365
|
-
function pluginsRouterFsOps() {
|
|
366
|
-
return {
|
|
367
|
-
exists: (p) => fs.existsSync(p),
|
|
368
|
-
isDirectory: (p) => { try {
|
|
369
|
-
return fs.statSync(p).isDirectory();
|
|
370
|
-
}
|
|
371
|
-
catch {
|
|
372
|
-
return false;
|
|
373
|
-
} },
|
|
374
|
-
mkdirp: (p) => fs.mkdirSync(p, { recursive: true }),
|
|
375
|
-
copyDir: (s, d) => fs.cpSync(s, d, { recursive: true }),
|
|
376
|
-
};
|
|
377
|
-
}
|
|
378
|
-
/** Item 6 / slice-05 Checkpoint 7.3e step 3: real WorkflowSpecsRouterFsOps backed by node:fs. */
|
|
379
|
-
function workflowSpecsRouterFsOps() {
|
|
380
|
-
return {
|
|
381
|
-
exists: (p) => fs.existsSync(p),
|
|
382
|
-
copyFile: (s, d) => fs.copyFileSync(s, d),
|
|
383
|
-
mkdirp: (p) => fs.mkdirSync(p, { recursive: true }),
|
|
384
|
-
};
|
|
385
|
-
}
|
|
386
|
-
/** Item 6 / slice-05 Checkpoint 7.3f step 3: real ContextPacksRouterFsOps backed by node:fs. */
|
|
387
|
-
function contextPacksRouterFsOps() {
|
|
388
|
-
return {
|
|
389
|
-
exists: (p) => fs.existsSync(p),
|
|
390
|
-
isDirectory: (p) => { try {
|
|
391
|
-
return fs.statSync(p).isDirectory();
|
|
392
|
-
}
|
|
393
|
-
catch {
|
|
394
|
-
return false;
|
|
395
|
-
} },
|
|
396
|
-
readFile: (p) => fs.readFileSync(p, "utf8"),
|
|
397
|
-
listFiles: (dir) => {
|
|
398
|
-
const files = [];
|
|
399
|
-
const walk = (current, prefix) => {
|
|
400
|
-
for (const entry of fs.readdirSync(current, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {
|
|
401
|
-
const child = nodePath.join(current, entry.name);
|
|
402
|
-
const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
403
|
-
if (entry.isDirectory())
|
|
404
|
-
walk(child, relativePath);
|
|
405
|
-
else if (entry.isFile())
|
|
406
|
-
files.push(relativePath);
|
|
407
|
-
}
|
|
408
|
-
};
|
|
409
|
-
walk(dir, "");
|
|
410
|
-
return files;
|
|
411
|
-
},
|
|
412
|
-
mkdirp: (p) => fs.mkdirSync(p, { recursive: true }),
|
|
413
|
-
copyDir: (s, d) => fs.cpSync(s, d, { recursive: true }),
|
|
414
|
-
};
|
|
415
|
-
}
|
|
416
|
-
/** Item 6 / slice-05 Checkpoint 7.3g step 3: real AgentImagesRouterFsOps backed by node:fs. */
|
|
417
|
-
function agentImagesRouterFsOps() {
|
|
418
|
-
return {
|
|
419
|
-
exists: (p) => fs.existsSync(p),
|
|
420
|
-
isDirectory: (p) => { try {
|
|
421
|
-
return fs.statSync(p).isDirectory();
|
|
422
|
-
}
|
|
423
|
-
catch {
|
|
424
|
-
return false;
|
|
425
|
-
} },
|
|
426
|
-
mkdirp: (p) => fs.mkdirSync(p, { recursive: true }),
|
|
427
|
-
copyDir: (s, d) => fs.cpSync(s, d, { recursive: true }),
|
|
428
|
-
};
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* Item 6 / slice-05 Checkpoint 7.3g step 3: extract the bundle safely
|
|
432
|
-
* (banked unpack trust boundary) and route any declared agent_images to
|
|
433
|
-
* the operator agent-images library. Returns null when bundle has no
|
|
434
|
-
* agent_images[] (no-op).
|
|
435
|
-
*
|
|
436
|
-
* Target resolution: <openrigHome>/agent-images — per startup.ts:523
|
|
437
|
-
* (the user-file root the live AgentImageLibraryService is constructed
|
|
438
|
-
* against). No SettingsStore complexity; canonical path is OPENRIG_HOME-
|
|
439
|
-
* rooted per agent-image-types.ts:9-10.
|
|
440
|
-
*
|
|
441
|
-
* Per the e7a0b253 PRD-coherent contract: agent_images entries are paths
|
|
442
|
-
* to image DIRECTORIES (not manifest paths — distinct shape from
|
|
443
|
-
* context_packs). The router enforces sourceAbs isDirectory + manifest.yaml
|
|
444
|
-
* inside the dir is a file before copying the whole image dir.
|
|
445
|
-
*
|
|
446
|
-
* Mirror of routeContextPacksAfterBootstrap pattern with the dir-path
|
|
447
|
-
* contract adaptation. bundlePath-only signature per 5f410eee B1 lesson.
|
|
448
|
-
*/
|
|
449
|
-
async function routeAgentImagesAfterBootstrap(bundlePath) {
|
|
450
|
-
const targetAgentImagesDir = getDefaultOpenRigPath("agent-images");
|
|
451
|
-
const tmpDir = fs.mkdtempSync(nodePath.join(os.tmpdir(), "bundle-agent-images-route-"));
|
|
452
|
-
try {
|
|
453
|
-
await unpack(bundlePath, tmpDir);
|
|
454
|
-
const manifestPath = nodePath.join(tmpDir, "bundle.yaml");
|
|
455
|
-
if (!fs.existsSync(manifestPath))
|
|
456
|
-
return null;
|
|
457
|
-
const manifestYaml = fs.readFileSync(manifestPath, "utf-8");
|
|
458
|
-
const manifest = parsePodBundleManifest(manifestYaml);
|
|
459
|
-
const rawAgentImages = manifest["agent_images"];
|
|
460
|
-
if (!Array.isArray(rawAgentImages) || rawAgentImages.length === 0)
|
|
461
|
-
return null;
|
|
462
|
-
const declaredAgentImages = rawAgentImages.filter((s) => typeof s === "string" && s.length > 0);
|
|
463
|
-
if (declaredAgentImages.length === 0)
|
|
464
|
-
return null;
|
|
465
|
-
return routeAgentImages({
|
|
466
|
-
bundleRoot: tmpDir,
|
|
467
|
-
declaredAgentImages,
|
|
468
|
-
targetAgentImagesDir,
|
|
469
|
-
}, agentImagesRouterFsOps());
|
|
470
|
-
}
|
|
471
|
-
finally {
|
|
472
|
-
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Item 6 / slice-05 Checkpoint 7.3f step 3: extract the bundle safely
|
|
477
|
-
* (banked unpack trust boundary) and route any declared context_packs to
|
|
478
|
-
* the operator context-packs library. Returns null when bundle has no
|
|
479
|
-
* context_packs[] (no-op).
|
|
480
|
-
*
|
|
481
|
-
* Target resolution uses context.root, exactly like the live
|
|
482
|
-
* ContextPackLibraryService. A configured root replaces the default; bundle
|
|
483
|
-
* routing must not silently create a second writable library.
|
|
484
|
-
*
|
|
485
|
-
* Mirror of routeSkillsAfterBootstrap / routePluginsAfterBootstrap /
|
|
486
|
-
* routeWorkflowSpecsAfterBootstrap pattern: takes bundlePath only
|
|
487
|
-
* (decoupled from installMeta per the 5f410eee B1 lesson; routing must
|
|
488
|
-
* fire on the dual-override path too).
|
|
489
|
-
*/
|
|
490
|
-
async function routeContextPacksAfterBootstrap(bundlePath) {
|
|
491
|
-
const targetContextPacksDir = new ContextPackSettingsStore().resolveOne("context.root").value;
|
|
492
|
-
const tmpDir = fs.mkdtempSync(nodePath.join(os.tmpdir(), "bundle-context-packs-route-"));
|
|
493
|
-
try {
|
|
494
|
-
await unpack(bundlePath, tmpDir);
|
|
495
|
-
const manifestPath = nodePath.join(tmpDir, "bundle.yaml");
|
|
496
|
-
if (!fs.existsSync(manifestPath))
|
|
497
|
-
return null;
|
|
498
|
-
const manifestYaml = fs.readFileSync(manifestPath, "utf-8");
|
|
499
|
-
const manifest = parsePodBundleManifest(manifestYaml);
|
|
500
|
-
const rawContextPacks = manifest["context_packs"];
|
|
501
|
-
if (!Array.isArray(rawContextPacks) || rawContextPacks.length === 0)
|
|
502
|
-
return null;
|
|
503
|
-
const declaredContextPacks = rawContextPacks.filter((s) => typeof s === "string" && s.length > 0);
|
|
504
|
-
if (declaredContextPacks.length === 0)
|
|
505
|
-
return null;
|
|
506
|
-
return routeContextPacks({
|
|
507
|
-
bundleRoot: tmpDir,
|
|
508
|
-
declaredContextPacks,
|
|
509
|
-
targetContextPacksDir,
|
|
510
|
-
}, contextPacksRouterFsOps());
|
|
511
|
-
}
|
|
512
|
-
finally {
|
|
513
|
-
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
/**
|
|
517
|
-
* Item 6 / slice-05 Checkpoint 7.3e step 3: extract the bundle safely
|
|
518
|
-
* (banked unpack trust boundary) and route any declared workflow_specs to
|
|
519
|
-
* the operator workflow-specs library. Returns null when bundle has no
|
|
520
|
-
* workflow_specs[] (no-op), no manifest, or workspaceSpecsRoot unresolved.
|
|
521
|
-
*
|
|
522
|
-
* Target resolution per the CALLER CONTRACT in
|
|
523
|
-
* bundle-workflow-specs-router.ts: SettingsStore is the sole authority.
|
|
524
|
-
* Resolved as nodePath.join(workspaceSpecsRoot, "workflows") — the path
|
|
525
|
-
* that spec-library-workflow-scanner actually reads (startup.ts:903-916).
|
|
526
|
-
* If SettingsStore cannot resolve workspaceSpecsRoot (settings not yet
|
|
527
|
-
* initialized / config error), we return null and the install lifecycle
|
|
528
|
-
* proceeds without workflow_specs routing — mirror of startup.ts:910-916
|
|
529
|
-
* try/catch posture.
|
|
530
|
-
*
|
|
531
|
-
* Mirror of routeSkillsAfterBootstrap / routePluginsAfterBootstrap pattern:
|
|
532
|
-
* takes bundlePath only (decoupled from installMeta per the 5f410eee B1
|
|
533
|
-
* lesson; routing must fire on the dual-override path too).
|
|
534
|
-
*/
|
|
535
|
-
async function routeWorkflowSpecsAfterBootstrap(bundlePath) {
|
|
536
|
-
let workspaceSpecsRoot;
|
|
537
|
-
try {
|
|
538
|
-
const settingsStore = new ContextPackSettingsStore();
|
|
539
|
-
workspaceSpecsRoot = settingsStore.resolveConfig().workspaceSpecsRoot;
|
|
540
|
-
}
|
|
541
|
-
catch {
|
|
542
|
-
return null; // settings unresolvable; no-op routing
|
|
543
|
-
}
|
|
544
|
-
if (!workspaceSpecsRoot)
|
|
545
|
-
return null;
|
|
546
|
-
const targetWorkflowSpecsDir = nodePath.join(workspaceSpecsRoot, "workflows");
|
|
547
|
-
const tmpDir = fs.mkdtempSync(nodePath.join(os.tmpdir(), "bundle-workflow-specs-route-"));
|
|
548
|
-
try {
|
|
549
|
-
await unpack(bundlePath, tmpDir);
|
|
550
|
-
const manifestPath = nodePath.join(tmpDir, "bundle.yaml");
|
|
551
|
-
if (!fs.existsSync(manifestPath))
|
|
552
|
-
return null;
|
|
553
|
-
const manifestYaml = fs.readFileSync(manifestPath, "utf-8");
|
|
554
|
-
const manifest = parsePodBundleManifest(manifestYaml);
|
|
555
|
-
const rawWorkflowSpecs = manifest["workflow_specs"];
|
|
556
|
-
if (!Array.isArray(rawWorkflowSpecs) || rawWorkflowSpecs.length === 0)
|
|
557
|
-
return null;
|
|
558
|
-
const declaredWorkflowSpecs = rawWorkflowSpecs.filter((s) => typeof s === "string" && s.length > 0);
|
|
559
|
-
if (declaredWorkflowSpecs.length === 0)
|
|
560
|
-
return null;
|
|
561
|
-
return routeWorkflowSpecs({
|
|
562
|
-
bundleRoot: tmpDir,
|
|
563
|
-
declaredWorkflowSpecs,
|
|
564
|
-
targetWorkflowSpecsDir,
|
|
565
|
-
}, workflowSpecsRouterFsOps());
|
|
566
|
-
}
|
|
567
|
-
finally {
|
|
568
|
-
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
/**
|
|
572
|
-
* Item 6 / slice-05 Checkpoint 7.3d: extract the bundle safely (banked unpack
|
|
573
|
-
* trust boundary) and route any declared plugin references to the operator
|
|
574
|
-
* plugins library (<OPENRIG_HOME>/plugins/<id>/). Returns null when bundle
|
|
575
|
-
* has no plugins[] (no-op). Mirror of routeSkillsAfterBootstrap pattern —
|
|
576
|
-
* takes bundlePath only (decoupled from installMeta per the 5f410eee B1
|
|
577
|
-
* lesson; routing must fire on the dual-override path too).
|
|
578
|
-
*/
|
|
579
|
-
async function routePluginsAfterBootstrap(bundlePath) {
|
|
580
|
-
const tmpDir = fs.mkdtempSync(nodePath.join(os.tmpdir(), "bundle-plugins-route-"));
|
|
581
|
-
try {
|
|
582
|
-
await unpack(bundlePath, tmpDir);
|
|
583
|
-
const manifestPath = nodePath.join(tmpDir, "bundle.yaml");
|
|
584
|
-
if (!fs.existsSync(manifestPath))
|
|
585
|
-
return null;
|
|
586
|
-
const manifestYaml = fs.readFileSync(manifestPath, "utf-8");
|
|
587
|
-
const manifest = parsePodBundleManifest(manifestYaml);
|
|
588
|
-
const rawPlugins = manifest["plugins"];
|
|
589
|
-
if (!Array.isArray(rawPlugins) || rawPlugins.length === 0)
|
|
590
|
-
return null;
|
|
591
|
-
const declaredPlugins = [];
|
|
592
|
-
for (const entry of rawPlugins) {
|
|
593
|
-
if (!entry || typeof entry !== "object" || Array.isArray(entry))
|
|
594
|
-
continue;
|
|
595
|
-
const p = entry;
|
|
596
|
-
const s = p["source"];
|
|
597
|
-
if (typeof p["id"] !== "string" || !p["id"])
|
|
598
|
-
continue;
|
|
599
|
-
if (!s || typeof s !== "object" || Array.isArray(s))
|
|
600
|
-
continue;
|
|
601
|
-
const src = s;
|
|
602
|
-
if (src["kind"] !== "local" || typeof src["path"] !== "string" || !src["path"])
|
|
603
|
-
continue;
|
|
604
|
-
declaredPlugins.push({ id: p["id"], source: { kind: "local", path: src["path"] } });
|
|
605
|
-
}
|
|
606
|
-
if (declaredPlugins.length === 0)
|
|
607
|
-
return null;
|
|
608
|
-
return routePlugins({
|
|
609
|
-
bundleRoot: tmpDir,
|
|
610
|
-
declaredPlugins,
|
|
611
|
-
targetPluginsDir: getDefaultOpenRigPath("plugins"),
|
|
612
|
-
}, pluginsRouterFsOps());
|
|
613
|
-
}
|
|
614
|
-
finally {
|
|
615
|
-
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
/** Item 6 / slice-05 Checkpoint 7.3: real SkillsRouterFsOps backed by node:fs. */
|
|
619
|
-
function skillsRouterFsOps() {
|
|
620
|
-
return {
|
|
621
|
-
exists: (p) => fs.existsSync(p),
|
|
622
|
-
copyFile: (s, d) => fs.copyFileSync(s, d),
|
|
623
|
-
mkdirp: (p) => fs.mkdirSync(p, { recursive: true }),
|
|
624
|
-
};
|
|
625
|
-
}
|
|
626
|
-
/**
|
|
627
|
-
* Item 6 / slice-05 Checkpoint 7.3: extract the bundle safely (banked unpack
|
|
628
|
-
* trust boundary) and route legacy declared skill files to the package cache.
|
|
629
|
-
* S04 keeps this package-shaped payload out of the managed skill catalog;
|
|
630
|
-
* importing a complete harness skill into the catalog is a separate action.
|
|
631
|
-
* Returns null when bundle has no skills[] (no-op).
|
|
632
|
-
*
|
|
633
|
-
* B1 repair (qitem-20260518220247-22f5257a): takes bundlePath only and does
|
|
634
|
-
* its own safe unpack + parse. Previously coupled to installMeta from the
|
|
635
|
-
* pre-check extraction, which is null when operator passes --skip-version-
|
|
636
|
-
* check AND --force together; that incorrectly suppressed post-install
|
|
637
|
-
* skills routing on the dual-override path. Skills routing is independent
|
|
638
|
-
* of the pre-check decisions and should fire whenever an install completes
|
|
639
|
-
* successfully with a bundle that declares skills.
|
|
640
|
-
*
|
|
641
|
-
* Best-effort: returns null on any extract/parse failure (caller has the
|
|
642
|
-
* outer try/catch). Single unpack call per invocation; the manifest re-parse
|
|
643
|
-
* is cheap vs. the unpack cost which is required either way to access the
|
|
644
|
-
* skill source files for routing.
|
|
645
|
-
*/
|
|
646
|
-
async function routeSkillsAfterBootstrap(bundlePath) {
|
|
647
|
-
const tmpDir = fs.mkdtempSync(nodePath.join(os.tmpdir(), "bundle-skills-route-"));
|
|
648
|
-
try {
|
|
649
|
-
await unpack(bundlePath, tmpDir);
|
|
650
|
-
const manifestPath = nodePath.join(tmpDir, "bundle.yaml");
|
|
651
|
-
if (!fs.existsSync(manifestPath))
|
|
652
|
-
return null;
|
|
653
|
-
const manifestYaml = fs.readFileSync(manifestPath, "utf-8");
|
|
654
|
-
const manifest = parsePodBundleManifest(manifestYaml);
|
|
655
|
-
const rawSkills = manifest["skills"];
|
|
656
|
-
if (!Array.isArray(rawSkills) || rawSkills.length === 0)
|
|
657
|
-
return null;
|
|
658
|
-
const declaredSkills = rawSkills.filter((s) => typeof s === "string" && s.length > 0);
|
|
659
|
-
if (declaredSkills.length === 0)
|
|
660
|
-
return null;
|
|
661
|
-
return routeSkills({
|
|
662
|
-
bundleRoot: tmpDir,
|
|
663
|
-
declaredSkills,
|
|
664
|
-
targetSkillsDir: getDefaultOpenRigPath("packages"),
|
|
665
|
-
targetPrefixToStrip: "packages/",
|
|
666
|
-
}, skillsRouterFsOps());
|
|
667
|
-
}
|
|
668
|
-
finally {
|
|
669
|
-
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
369
|
/** Item 4 / slice-05 Checkpoint 5.2: real BundleAuditFsOps backed by node:fs. */
|
|
673
370
|
function auditFsOps() {
|
|
674
371
|
return {
|
|
@@ -714,6 +411,8 @@ function writeInstallAudit(opts) {
|
|
|
714
411
|
record.daemonVersion = getDaemonVersion();
|
|
715
412
|
if (provenance?.sourceHost)
|
|
716
413
|
record.sourceHost = provenance.sourceHost;
|
|
414
|
+
if (opts.routingFailures?.length)
|
|
415
|
+
record.routingFailures = opts.routingFailures;
|
|
717
416
|
writer.append(record);
|
|
718
417
|
}
|
|
719
418
|
catch {
|
|
@@ -797,6 +496,14 @@ function consumeAuthorBundleYaml(sourceRoot, staging) {
|
|
|
797
496
|
const authorYaml = fs.readFileSync(authorBundlePath, "utf-8");
|
|
798
497
|
const authorParsed = parsePodBundleManifest(authorYaml);
|
|
799
498
|
const result = {};
|
|
499
|
+
result.preconditions = normalizePreconditionsBlock(authorParsed["preconditions"], reason => {
|
|
500
|
+
(result.warnings ??= []).push(`Ignored author bundle preconditions: ${reason}; the whole block was omitted.`);
|
|
501
|
+
});
|
|
502
|
+
for (const [index, precondition] of (result.preconditions ?? []).entries()) {
|
|
503
|
+
if (precondition.commands?.some(command => /[;|`<>]|&&|\$\(/.test(command))) {
|
|
504
|
+
(result.warnings ??= []).push(`preconditions[${index}].commands contains shell operators; retained as data, but a site may omit setup commands that fail its plain-command rule.`);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
800
507
|
const vendorFile = (declared, kindLabel) => {
|
|
801
508
|
if (!isRelativeSafePath(declared))
|
|
802
509
|
throw new Error(`author bundle ${kindLabel} path '${declared}' is not safe`);
|
|
@@ -859,12 +566,16 @@ function consumeAuthorBundleYaml(sourceRoot, staging) {
|
|
|
859
566
|
// written as regular files for tar safety
|
|
860
567
|
fs.cpSync(sourceAbs, targetAbs, { recursive: true, dereference: true });
|
|
861
568
|
};
|
|
862
|
-
//
|
|
569
|
+
// A portable skill includes its helpers/references. Retain the legacy
|
|
570
|
+
// single-file payload contract outside the discovered skills/<name> tree.
|
|
863
571
|
const rawSkills = authorParsed["skills"];
|
|
864
572
|
if (Array.isArray(rawSkills) && rawSkills.length > 0) {
|
|
865
573
|
const skills = rawSkills.filter((s) => typeof s === "string" && s.length > 0);
|
|
866
|
-
for (const declared of skills)
|
|
574
|
+
for (const declared of skills) {
|
|
867
575
|
vendorFile(declared, "skill");
|
|
576
|
+
if (/^skills\/[^/]+\/SKILL\.md$/.test(declared))
|
|
577
|
+
vendorDir(nodePath.dirname(declared), "skill");
|
|
578
|
+
}
|
|
868
579
|
if (skills.length > 0)
|
|
869
580
|
result.skills = skills;
|
|
870
581
|
}
|
|
@@ -946,6 +657,16 @@ function assertShippableStagingTree(staging) {
|
|
|
946
657
|
walk(staging);
|
|
947
658
|
assertShippableSubstance(sources);
|
|
948
659
|
}
|
|
660
|
+
/** Describe this artifact; inspecting an older archive never substitutes the current daemon's version. */
|
|
661
|
+
function bundleBuildIdentity(manifest, archiveHash) {
|
|
662
|
+
return {
|
|
663
|
+
source: manifest.provenance?.source ?? null,
|
|
664
|
+
configurationId: manifest.configuration?.id ?? null,
|
|
665
|
+
packageDigest: manifest.integrity ? packageDigest(manifest.integrity.files) : null,
|
|
666
|
+
archiveHash,
|
|
667
|
+
assembler: manifest.assembler ?? null,
|
|
668
|
+
};
|
|
669
|
+
}
|
|
949
670
|
// POST /api/bundles/create
|
|
950
671
|
bundleRoutes.post("/create", async (c) => {
|
|
951
672
|
const { eventBus } = getDeps(c);
|
|
@@ -956,9 +677,23 @@ bundleRoutes.post("/create", async (c) => {
|
|
|
956
677
|
const outputPath = typeof body["outputPath"] === "string" ? body["outputPath"] : "";
|
|
957
678
|
const rigRoot = typeof body["rigRoot"] === "string" ? body["rigRoot"] : undefined;
|
|
958
679
|
const includePackages = Array.isArray(body["includePackages"]) ? body["includePackages"] : undefined;
|
|
680
|
+
// `rig bundle create --context-pack <dir>`: packs to carry from anywhere the author names, by manifest name
|
|
681
|
+
const contextPackDirs = Array.isArray(body["contextPackDirs"])
|
|
682
|
+
? body["contextPackDirs"].filter((d) => typeof d === "string" && d.length > 0)
|
|
683
|
+
: [];
|
|
684
|
+
// `rig bundle create --project-dir <dir>`: the project this rig works in (project.yaml and its files)
|
|
685
|
+
const projectDir = typeof body["projectDir"] === "string" && body["projectDir"] ? body["projectDir"] : undefined;
|
|
686
|
+
// `rig bundle create --preset/--seat`: the configuration the CLI staged, recorded in the manifest (outside the package digest)
|
|
687
|
+
const rawConfiguration = body["configuration"];
|
|
688
|
+
const configuration = rawConfiguration && typeof rawConfiguration.id === "string"
|
|
689
|
+
? { id: rawConfiguration.id, ...(typeof rawConfiguration.preset === "string" ? { preset: rawConfiguration.preset } : {}) }
|
|
690
|
+
: undefined;
|
|
959
691
|
const allowDrift = body["allowDrift"] === true;
|
|
960
692
|
// Item 1 / slice-05: build provenance from request body + inject daemonVersion server-side
|
|
961
|
-
const
|
|
693
|
+
const rawProvenance = body["provenance"];
|
|
694
|
+
if (rawProvenance?.source !== undefined && !normalizeBundleSource(rawProvenance.source))
|
|
695
|
+
return c.json({ error: "Invalid GitHub bundle source identity" }, 400);
|
|
696
|
+
const clientProvenance = provenanceFromRequestBody(rawProvenance);
|
|
962
697
|
let provenance = clientProvenance
|
|
963
698
|
? { ...clientProvenance, daemonVersion: getDaemonVersion() }
|
|
964
699
|
: undefined;
|
|
@@ -1025,6 +760,8 @@ bundleRoutes.post("/create", async (c) => {
|
|
|
1025
760
|
// cross-primitive content into staging + carry the fields onto
|
|
1026
761
|
// the manifest. computeIntegrity below covers the vendored content.
|
|
1027
762
|
const authorPrimitives = consumeAuthorBundleYaml(effectiveRigRoot, tmpStaging);
|
|
763
|
+
if (authorPrimitives.preconditions)
|
|
764
|
+
result.manifest.preconditions = authorPrimitives.preconditions;
|
|
1028
765
|
if (authorPrimitives.skills)
|
|
1029
766
|
result.manifest.skills = authorPrimitives.skills;
|
|
1030
767
|
if (authorPrimitives.plugins)
|
|
@@ -1035,14 +772,29 @@ bundleRoutes.post("/create", async (c) => {
|
|
|
1035
772
|
result.manifest.contextPacks = authorPrimitives.contextPacks;
|
|
1036
773
|
if (authorPrimitives.agentImages)
|
|
1037
774
|
result.manifest.agentImages = authorPrimitives.agentImages;
|
|
775
|
+
const actualMapping = {};
|
|
776
|
+
for (const pod of RigSpecSchema.normalize(rawParsed).pods) {
|
|
777
|
+
for (const member of pod.members)
|
|
778
|
+
actualMapping[`${pod.id}.${member.id}`] = member.runtime;
|
|
779
|
+
}
|
|
780
|
+
const actualConfigurationId = configurationId(actualMapping);
|
|
781
|
+
if (configuration && configuration.id !== actualConfigurationId)
|
|
782
|
+
return c.json({ error: "Configuration ID does not match the packaged rig spec" }, 400);
|
|
783
|
+
result.manifest.configuration = { id: actualConfigurationId, ...(configuration?.preset ? { preset: configuration.preset } : {}) };
|
|
784
|
+
result.manifest.assembler = { openrigVersion: getDaemonVersion() };
|
|
785
|
+
const carriedPacks = contextPackDirs.map((dir) => vendorContextPackDir(nodePath.resolve(dir), tmpStaging));
|
|
786
|
+
if (carriedPacks.length > 0)
|
|
787
|
+
result.manifest.contextPacks = [...(result.manifest.contextPacks ?? []), ...carriedPacks];
|
|
788
|
+
if (projectDir)
|
|
789
|
+
result.manifest.project = vendorProjectDir(nodePath.resolve(projectDir), tmpStaging);
|
|
1038
790
|
const integrity = computeIntegrity(tmpStaging, integrityFsOps());
|
|
1039
791
|
result.manifest.integrity = integrity;
|
|
1040
792
|
fs.writeFileSync(nodePath.join(tmpStaging, "bundle.yaml"), serializePodBundleManifest(result.manifest), "utf-8");
|
|
1041
793
|
assertShippableStagingTree(tmpStaging);
|
|
1042
794
|
const archiveHash = await pack(tmpStaging, nodePath.resolve(outputPath));
|
|
1043
795
|
eventBus.emit({ type: "bundle.created", bundleName, bundleVersion, archiveHash });
|
|
1044
|
-
const warning = [driftWarning, ...(result.warnings ?? [])].filter(Boolean).join("; ");
|
|
1045
|
-
return c.json({ bundleName, bundleVersion, archiveHash, schemaVersion: 2, agents: result.manifest.agents.length, ...(warning ? { warning } : {}) }, 201);
|
|
796
|
+
const warning = [driftWarning, ...(result.warnings ?? []), ...(authorPrimitives.warnings ?? [])].filter(Boolean).join("; ");
|
|
797
|
+
return c.json({ ...bundleBuildIdentity(result.manifest, archiveHash), bundleName, bundleVersion, archiveHash, schemaVersion: 2, agents: result.manifest.agents.length, ...(warning ? { warning } : {}) }, 201);
|
|
1046
798
|
}
|
|
1047
799
|
finally {
|
|
1048
800
|
fs.rmSync(tmpStaging, { recursive: true, force: true });
|
|
@@ -1050,6 +802,12 @@ bundleRoutes.post("/create", async (c) => {
|
|
|
1050
802
|
}
|
|
1051
803
|
// Legacy bundle creation
|
|
1052
804
|
// Validated above, before the drift guard ran.
|
|
805
|
+
if (contextPackDirs.length > 0) {
|
|
806
|
+
return c.json({ error: "--context-pack needs a pod-aware rig spec (one with pods:)" }, 400);
|
|
807
|
+
}
|
|
808
|
+
if (projectDir) {
|
|
809
|
+
return c.json({ error: "--project-dir needs a pod-aware rig spec (one with pods:)" }, 400);
|
|
810
|
+
}
|
|
1053
811
|
const spec = LegacyRigSpecSchema.normalize(rawParsed);
|
|
1054
812
|
const specDir = nodePath.dirname(nodePath.resolve(specPath));
|
|
1055
813
|
const allRefs = new Set();
|
|
@@ -1089,14 +847,17 @@ bundleRoutes.post("/create", async (c) => {
|
|
|
1089
847
|
const manifest = assembler.assemble({
|
|
1090
848
|
specPath: nodePath.resolve(specPath), packages, outputDir: tmpStaging, bundleName, bundleVersion, provenance, compatibility,
|
|
1091
849
|
});
|
|
850
|
+
manifest.assembler = { openrigVersion: getDaemonVersion() };
|
|
1092
851
|
// Item 6 / Checkpoint 7.5 (QA-20260601 A2 repair, legacy path mirror):
|
|
1093
852
|
// auto-detect author bundle.yaml in source dir; vendor + carry
|
|
1094
853
|
// cross-primitive fields before integrity. Re-serialize bundle.yaml
|
|
1095
854
|
// since the assembler already wrote one without these fields.
|
|
1096
855
|
const legacyAuthorPrimitives = consumeAuthorBundleYaml(specDir, tmpStaging);
|
|
1097
856
|
const hasLegacyPrimitives = legacyAuthorPrimitives.skills || legacyAuthorPrimitives.plugins ||
|
|
1098
|
-
legacyAuthorPrimitives.workflowSpecs || legacyAuthorPrimitives.contextPacks || legacyAuthorPrimitives.agentImages;
|
|
1099
|
-
if (hasLegacyPrimitives) {
|
|
857
|
+
legacyAuthorPrimitives.workflowSpecs || legacyAuthorPrimitives.contextPacks || legacyAuthorPrimitives.agentImages || legacyAuthorPrimitives.preconditions;
|
|
858
|
+
if (hasLegacyPrimitives || manifest.assembler) {
|
|
859
|
+
if (legacyAuthorPrimitives.preconditions)
|
|
860
|
+
manifest.preconditions = legacyAuthorPrimitives.preconditions;
|
|
1100
861
|
if (legacyAuthorPrimitives.skills)
|
|
1101
862
|
manifest.skills = legacyAuthorPrimitives.skills;
|
|
1102
863
|
if (legacyAuthorPrimitives.plugins)
|
|
@@ -1112,10 +873,12 @@ bundleRoutes.post("/create", async (c) => {
|
|
|
1112
873
|
}
|
|
1113
874
|
const integrity = computeIntegrity(tmpStaging, integrityFsOps());
|
|
1114
875
|
writeIntegrity(tmpStaging, integrity, integrityFsOps());
|
|
876
|
+
manifest.integrity = integrity;
|
|
1115
877
|
assertShippableStagingTree(tmpStaging);
|
|
1116
878
|
const archiveHash = await pack(tmpStaging, nodePath.resolve(outputPath));
|
|
1117
879
|
eventBus.emit({ type: "bundle.created", bundleName, bundleVersion, archiveHash });
|
|
1118
|
-
|
|
880
|
+
const warning = [driftWarning, ...(legacyAuthorPrimitives.warnings ?? [])].filter(Boolean).join("; ");
|
|
881
|
+
return c.json({ ...bundleBuildIdentity(manifest, archiveHash), bundleName, bundleVersion, archiveHash, packages: manifest.packages.length, ...(warning ? { warning } : {}) }, 201);
|
|
1119
882
|
}
|
|
1120
883
|
finally {
|
|
1121
884
|
fs.rmSync(tmpStaging, { recursive: true, force: true });
|
|
@@ -1132,39 +895,59 @@ bundleRoutes.post("/inspect", async (c) => {
|
|
|
1132
895
|
if (!bundlePath)
|
|
1133
896
|
return c.json({ error: "bundlePath is required" }, 400);
|
|
1134
897
|
let digestValid = false;
|
|
898
|
+
let archiveHash = null;
|
|
1135
899
|
try {
|
|
1136
900
|
const dr = verifyArchiveDigest(bundlePath);
|
|
1137
901
|
digestValid = dr.valid;
|
|
902
|
+
archiveHash = dr.actual;
|
|
1138
903
|
}
|
|
1139
904
|
catch { /* missing digest = invalid */ }
|
|
1140
905
|
const tmpDir = fs.mkdtempSync(nodePath.join(os.tmpdir(), "bundle-inspect-"));
|
|
1141
906
|
try {
|
|
1142
|
-
// Extract with safety pre-scan
|
|
907
|
+
// Extract with the SAME shared safety pre-scan that unpack() uses, but without
|
|
908
|
+
// content integrity verification (inspect must be able to REPORT a broken
|
|
909
|
+
// bundle rather than refuse it). One source of truth: collectUnsafeArchiveEntries
|
|
910
|
+
// rejects symlinks/hardlinks, POSIX-absolute and Windows drive-absolute paths,
|
|
911
|
+
// and dot-dot traversal (POSIX or backslash). Previously this route hand-rolled a
|
|
912
|
+
// weaker scan that missed drive-letter and backslash-traversal entries, so an
|
|
913
|
+
// archive unpack() refuses could be reported safe by inspect.
|
|
914
|
+
const unsafeEntries = await collectUnsafeArchiveEntries(bundlePath);
|
|
915
|
+
if (unsafeEntries.length > 0) {
|
|
916
|
+
return c.json({ error: `Unsafe archive entries: ${unsafeEntries.join("; ")}`, digestValid }, 200);
|
|
917
|
+
}
|
|
1143
918
|
const tar = await import("tar");
|
|
1144
|
-
|
|
1145
|
-
await tar.list({
|
|
919
|
+
await tar.extract({
|
|
1146
920
|
file: bundlePath,
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
unsafeEntries.push(`traversal: ${p}`);
|
|
921
|
+
cwd: tmpDir,
|
|
922
|
+
// Same defensive filter unpack() applies: even if the pre-scan above were
|
|
923
|
+
// bypassed, no unsafe entry is written.
|
|
924
|
+
filter: (p, entry) => {
|
|
925
|
+
if ("isSymbolicLink" in entry && typeof entry.isSymbolicLink === "function" && entry.isSymbolicLink())
|
|
926
|
+
return false;
|
|
927
|
+
const type = "type" in entry ? entry.type : undefined;
|
|
928
|
+
return unsafeArchiveEntryReason(p, type) === null;
|
|
1156
929
|
},
|
|
1157
930
|
});
|
|
1158
|
-
if (unsafeEntries.length > 0) {
|
|
1159
|
-
return c.json({ error: `Unsafe archive entries: ${unsafeEntries.join("; ")}`, digestValid }, 200);
|
|
1160
|
-
}
|
|
1161
|
-
await tar.extract({ file: bundlePath, cwd: tmpDir });
|
|
1162
931
|
const manifestPath = nodePath.join(tmpDir, "bundle.yaml");
|
|
1163
932
|
if (!fs.existsSync(manifestPath)) {
|
|
1164
933
|
return c.json({ error: "Bundle missing bundle.yaml", digestValid }, 200);
|
|
1165
934
|
}
|
|
1166
935
|
const manifestYaml = fs.readFileSync(manifestPath, "utf-8");
|
|
1167
936
|
const rawParsed = parsePodBundleManifest(manifestYaml);
|
|
937
|
+
const describeBehaviour = (identity, filesVerified) => {
|
|
938
|
+
const generator = { openrigVersion: getDaemonVersion() };
|
|
939
|
+
const source = identity.source ? { ...identity.source } : null;
|
|
940
|
+
try {
|
|
941
|
+
return inspectBundleBehaviour(tmpDir, { manifest: rawParsed, ...identity, source, generator, digestValid, filesVerified });
|
|
942
|
+
}
|
|
943
|
+
catch {
|
|
944
|
+
return {
|
|
945
|
+
schema: "openrig.bundle-behaviour/v1", state: "not_generated",
|
|
946
|
+
identity: { source, configurationId: identity.configurationId, packageDigest: identity.packageDigest, assembler: identity.assembler, generator, integrity: { digestValid, filesVerified } },
|
|
947
|
+
reason: "The archive's behaviour could not be described.", localInspectCommand: "rig bundle inspect <archive> --json",
|
|
948
|
+
};
|
|
949
|
+
}
|
|
950
|
+
};
|
|
1168
951
|
// Detect v2 (pod-aware) vs v1 (legacy)
|
|
1169
952
|
if (rawParsed && rawParsed["schema_version"] === 2) {
|
|
1170
953
|
const validation = validatePodBundleManifest(rawParsed);
|
|
@@ -1194,10 +977,15 @@ bundleRoutes.post("/inspect", async (c) => {
|
|
|
1194
977
|
// (v1 path normalizes through normalizeLegacyBundleManifest below).
|
|
1195
978
|
// Field is optional; undefined when bundle has no provenance.
|
|
1196
979
|
provenance: normalizeProvenanceBlock(rawParsed["provenance"]),
|
|
980
|
+
configuration: typeof rawParsed["configuration"]?.id === "string"
|
|
981
|
+
? rawParsed["configuration"] : undefined,
|
|
982
|
+
assembler: typeof rawParsed["assembler"]?.openrigVersion === "string"
|
|
983
|
+
? rawParsed["assembler"] : undefined,
|
|
1197
984
|
// Item 2 / slice-05: surface compatibility normalized to camelCase
|
|
1198
985
|
// (same single-contract reason as provenance above). v1 already
|
|
1199
986
|
// surfaces via the normalizer at the end of this handler.
|
|
1200
987
|
compatibility: normalizeCompatibilityBlock(rawParsed["compatibility"]),
|
|
988
|
+
preconditions: normalizePreconditionsBlock(rawParsed["preconditions"]),
|
|
1201
989
|
// Item 6 / Checkpoint 7.5 / QA-20260601 C1 repair: surface the 5
|
|
1202
990
|
// cross-primitive blocks normalized to camelCase so /inspect's
|
|
1203
991
|
// contract carries the same shape v1's normalizer already
|
|
@@ -1218,6 +1006,9 @@ bundleRoutes.post("/inspect", async (c) => {
|
|
|
1218
1006
|
agentImages: Array.isArray(rawParsed["agent_images"])
|
|
1219
1007
|
? rawParsed["agent_images"].filter((s) => typeof s === "string")
|
|
1220
1008
|
: undefined,
|
|
1009
|
+
project: rawParsed["project"] && typeof rawParsed["project"] === "object" && !Array.isArray(rawParsed["project"])
|
|
1010
|
+
? rawParsed["project"]
|
|
1011
|
+
: undefined,
|
|
1221
1012
|
};
|
|
1222
1013
|
const integrityCompat = integritySection ? {
|
|
1223
1014
|
schemaVersion: 2,
|
|
@@ -1231,13 +1022,17 @@ bundleRoutes.post("/inspect", async (c) => {
|
|
|
1231
1022
|
const integrityResult = integrityCompat
|
|
1232
1023
|
? verifyIntegrity(tmpDir, integrityCompat, integrityFsOps())
|
|
1233
1024
|
: { passed: false, mismatches: [], missing: [], extra: [], errors: ["no integrity section"] };
|
|
1234
|
-
|
|
1025
|
+
const identity = bundleBuildIdentity(podManifest, archiveHash);
|
|
1026
|
+
const behaviour = describeBehaviour(identity, integrityResult.passed);
|
|
1027
|
+
return c.json({ ...identity, manifest: podManifest, digestValid, integrityResult, behaviour }, 200);
|
|
1235
1028
|
}
|
|
1236
1029
|
const manifest = normalizeBundleManifest(parseBundleManifest(manifestYaml));
|
|
1237
1030
|
const integrityResult = manifest.integrity
|
|
1238
1031
|
? verifyIntegrity(tmpDir, manifest, integrityFsOps())
|
|
1239
1032
|
: { passed: false, mismatches: [], missing: [], extra: [], errors: ["no integrity section"] };
|
|
1240
|
-
|
|
1033
|
+
const identity = bundleBuildIdentity(manifest, archiveHash);
|
|
1034
|
+
const behaviour = describeBehaviour(identity, integrityResult.passed);
|
|
1035
|
+
return c.json({ ...identity, manifest, digestValid, integrityResult, behaviour }, 200);
|
|
1241
1036
|
}
|
|
1242
1037
|
catch (err) {
|
|
1243
1038
|
return c.json({ error: err.message }, 500);
|
|
@@ -1271,7 +1066,9 @@ bundleRoutes.post("/install", async (c) => {
|
|
|
1271
1066
|
const bundlePath = typeof body["bundlePath"] === "string" ? body["bundlePath"] : "";
|
|
1272
1067
|
const plan = body["plan"] === true;
|
|
1273
1068
|
const autoApprove = body["autoApprove"] === true;
|
|
1069
|
+
const nonInterruptive = typeof body["nonInterruptive"] === "boolean" ? body["nonInterruptive"] : undefined;
|
|
1274
1070
|
const targetRoot = typeof body["targetRoot"] === "string" ? body["targetRoot"] : undefined;
|
|
1071
|
+
const cwdOverride = typeof body["cwdOverride"] === "string" ? body["cwdOverride"] : undefined;
|
|
1275
1072
|
// Item 2 / slice-05 Checkpoint 3.3: install-time compatibility check inputs
|
|
1276
1073
|
const skipVersionCheck = body["skipVersionCheck"] === true;
|
|
1277
1074
|
const clientCliVersion = typeof body["cliVersion"] === "string" ? body["cliVersion"] : undefined;
|
|
@@ -1287,30 +1084,26 @@ bundleRoutes.post("/install", async (c) => {
|
|
|
1287
1084
|
return c.json({ error: "Bundle install already in progress", code: "conflict" }, 409);
|
|
1288
1085
|
}
|
|
1289
1086
|
try {
|
|
1290
|
-
// Item 2 / slice-05 Checkpoint 3.3: install-time compatibility check
|
|
1291
|
-
// Runs AFTER the lock + BEFORE bootstrap delegation. Mismatch returns a
|
|
1292
|
-
// 3-part error and exits the lifecycle (lock releases via the outer
|
|
1293
|
-
// finally). Operator override via --skip-version-check (request body
|
|
1294
|
-
// skipVersionCheck=true).
|
|
1295
1087
|
// Item 2 + Item 3 / slice-05: single safe extract pass yields both the
|
|
1296
1088
|
// bundle manifest (for compat check) and the rig name (for conflict check).
|
|
1297
|
-
//
|
|
1298
|
-
//
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1089
|
+
// This pass also runs the manifest SAFETY validation — the first place
|
|
1090
|
+
// rig_spec/project fields are validated on the install path; the bundle
|
|
1091
|
+
// source resolver validates them again later — so it runs unconditionally:
|
|
1092
|
+
// --skip-version-check and --force override the Item-2 compat check and
|
|
1093
|
+
// the Item-3 conflict check, not the safety validation.
|
|
1094
|
+
let installMeta;
|
|
1095
|
+
try {
|
|
1096
|
+
installMeta = await extractInstallTimeMetadata(bundlePath);
|
|
1097
|
+
}
|
|
1098
|
+
catch (err) {
|
|
1099
|
+
return c.json({
|
|
1100
|
+
error: "Bundle install pre-check could not run (extraction failed)",
|
|
1101
|
+
detail: err.message,
|
|
1102
|
+
resolutions: [
|
|
1103
|
+
"confirm the bundle path is correct and the archive is readable",
|
|
1104
|
+
"--skip-version-check and --force skip the compatibility and conflict checks; the manifest safety check always runs",
|
|
1105
|
+
],
|
|
1106
|
+
}, 400);
|
|
1314
1107
|
}
|
|
1315
1108
|
if (!skipVersionCheck && installMeta) {
|
|
1316
1109
|
const compatibility = normalizeCompatibilityBlock(installMeta.bundleManifest["compatibility"]);
|
|
@@ -1334,7 +1127,12 @@ bundleRoutes.post("/install", async (c) => {
|
|
|
1334
1127
|
// The check fails CLOSED on extraction failure (handled above) and
|
|
1335
1128
|
// fail-OPEN on missing rig name in the bundle (no rig name to compare).
|
|
1336
1129
|
if (!force && installMeta && rigRepo) {
|
|
1337
|
-
const
|
|
1130
|
+
const context = bundleInstallContext(rigRepo.db, installMeta.rigName ?? "", {
|
|
1131
|
+
name: String(installMeta.bundleManifest.name ?? installMeta.rigName ?? ""),
|
|
1132
|
+
version: typeof installMeta.bundleManifest.version === "string" ? installMeta.bundleManifest.version : null,
|
|
1133
|
+
source: bundlePath,
|
|
1134
|
+
});
|
|
1135
|
+
const runningRigs = context.existing.filter(rig => rig.state === "running");
|
|
1338
1136
|
const report = detectBundleConflicts({
|
|
1339
1137
|
bundleRigName: installMeta.rigName ?? "",
|
|
1340
1138
|
runningRigs,
|
|
@@ -1342,11 +1140,11 @@ bundleRoutes.post("/install", async (c) => {
|
|
|
1342
1140
|
if (report.hasConflicts) {
|
|
1343
1141
|
return c.json({
|
|
1344
1142
|
error: "Bundle install conflict check failed",
|
|
1143
|
+
status: "not_attempted",
|
|
1144
|
+
detail: bundleInstallContextLines(context).slice(0, context.existing.length + 1).join("\n"),
|
|
1145
|
+
bundleInstall: context,
|
|
1345
1146
|
conflicts: report.conflicts,
|
|
1346
|
-
resolutions:
|
|
1347
|
-
"stop the conflicting running rig and re-attempt install",
|
|
1348
|
-
"use --force to bypass for an operator-explicit override (NOT recommended for routine use; conflicts may produce partial install state)",
|
|
1349
|
-
],
|
|
1147
|
+
resolutions: context.resolutions,
|
|
1350
1148
|
}, 400);
|
|
1351
1149
|
}
|
|
1352
1150
|
}
|
|
@@ -1354,7 +1152,7 @@ bundleRoutes.post("/install", async (c) => {
|
|
|
1354
1152
|
// Plan mode: no run lifecycle
|
|
1355
1153
|
try {
|
|
1356
1154
|
const result = await bootstrapOrchestrator.bootstrap({
|
|
1357
|
-
mode: "plan", sourceRef: bundlePath, sourceKind: "rig_bundle",
|
|
1155
|
+
mode: "plan", sourceRef: bundlePath, sourceKind: "rig_bundle", cwdOverride,
|
|
1358
1156
|
});
|
|
1359
1157
|
if (result.status === "planned") {
|
|
1360
1158
|
eventBus.emit({ type: "bootstrap.planned", runId: result.runId, sourceRef: bundlePath, stages: result.stages.length });
|
|
@@ -1362,18 +1160,8 @@ bundleRoutes.post("/install", async (c) => {
|
|
|
1362
1160
|
}
|
|
1363
1161
|
// Plan failed — structured mapping (same as bootstrap plan route)
|
|
1364
1162
|
eventBus.emit({ type: "bootstrap.failed", runId: result.runId, sourceRef: bundlePath, error: result.errors[0] ?? "plan failed" });
|
|
1365
|
-
const
|
|
1366
|
-
|
|
1367
|
-
if (failedStage) {
|
|
1368
|
-
if (failedStage.status === "blocked")
|
|
1369
|
-
httpStatus = 409;
|
|
1370
|
-
else if (failedStage.stage === "resolve_spec") {
|
|
1371
|
-
const detail = failedStage.detail;
|
|
1372
|
-
if (detail?.code === "file_not_found" || detail?.code === "parse_error" || detail?.code === "validation_failed" || detail?.code === "bundle_error")
|
|
1373
|
-
httpStatus = 400;
|
|
1374
|
-
}
|
|
1375
|
-
}
|
|
1376
|
-
return c.json(result, httpStatus);
|
|
1163
|
+
const failure = bootstrapFailureResponse(result, "plan");
|
|
1164
|
+
return c.json(failure.body, failure.status);
|
|
1377
1165
|
}
|
|
1378
1166
|
catch (err) {
|
|
1379
1167
|
return c.json({ error: err.message }, 500);
|
|
@@ -1386,87 +1174,47 @@ bundleRoutes.post("/install", async (c) => {
|
|
|
1386
1174
|
try {
|
|
1387
1175
|
const result = await bootstrapOrchestrator.bootstrap({
|
|
1388
1176
|
mode: "apply", sourceRef: bundlePath, sourceKind: "rig_bundle",
|
|
1389
|
-
autoApprove, targetRoot, runId: run.id,
|
|
1177
|
+
autoApprove, nonInterruptive, targetRoot, cwdOverride, runId: run.id,
|
|
1390
1178
|
});
|
|
1391
|
-
if (result.status === "completed") {
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
//
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
let contextPacksRouting = null;
|
|
1407
|
-
let agentImagesRouting = null;
|
|
1408
|
-
try {
|
|
1409
|
-
skillsRouting = await routeSkillsAfterBootstrap(bundlePath);
|
|
1410
|
-
}
|
|
1411
|
-
catch {
|
|
1412
|
-
// Side-channel failure; install already succeeded
|
|
1413
|
-
}
|
|
1414
|
-
try {
|
|
1415
|
-
pluginsRouting = await routePluginsAfterBootstrap(bundlePath);
|
|
1416
|
-
}
|
|
1417
|
-
catch {
|
|
1418
|
-
// Side-channel failure; install already succeeded
|
|
1419
|
-
}
|
|
1420
|
-
try {
|
|
1421
|
-
workflowSpecsRouting = await routeWorkflowSpecsAfterBootstrap(bundlePath);
|
|
1422
|
-
}
|
|
1423
|
-
catch {
|
|
1424
|
-
// Side-channel failure; install already succeeded
|
|
1179
|
+
if (result.status === "completed" || result.status === "partial") {
|
|
1180
|
+
// A pod-aware (v2) bundle routes its declared skills, plugins, workflow
|
|
1181
|
+
// specs, context packs and agent images in bootstrap's pre-launch hook,
|
|
1182
|
+
// before any seat launches, and reports the outcome on the result. A
|
|
1183
|
+
// legacy v1 bundle has no hook, so it keeps routing after a completed
|
|
1184
|
+
// install. Routing never fails the install; failures are reported in
|
|
1185
|
+
// routingFailures and the audit.
|
|
1186
|
+
const { bundleRouting, ...bootstrapResult } = result;
|
|
1187
|
+
const routing = bundleRouting
|
|
1188
|
+
?? (result.status === "completed" ? await bootstrapOrchestrator.routeBundleContents(bundlePath) : undefined);
|
|
1189
|
+
// The hook already put its failures in warnings; the legacy fallback adds its own here.
|
|
1190
|
+
const warnings = bundleRouting ? (result.warnings ?? []) : [...(result.warnings ?? []), ...routingFailureWarnings(routing)];
|
|
1191
|
+
const responseBody = routing ? { ...bootstrapResult, ...routing, warnings } : { ...bootstrapResult, warnings };
|
|
1192
|
+
if (result.status === "completed") {
|
|
1193
|
+
eventBus.emit({ type: "bootstrap.completed", runId: result.runId, rigId: result.rigId, sourceRef: bundlePath });
|
|
1425
1194
|
}
|
|
1426
|
-
|
|
1427
|
-
|
|
1195
|
+
else {
|
|
1196
|
+
const ok = result.stages.filter((s) => s.status === "ok").length;
|
|
1197
|
+
const fail = result.stages.filter((s) => s.status === "failed" || s.status === "blocked").length;
|
|
1198
|
+
eventBus.emit({ type: "bootstrap.partial", runId: result.runId, sourceRef: bundlePath, rigId: result.rigId, completed: ok, failed: fail });
|
|
1428
1199
|
}
|
|
1429
|
-
catch {
|
|
1430
|
-
// Side-channel failure; install already succeeded
|
|
1431
|
-
}
|
|
1432
|
-
try {
|
|
1433
|
-
agentImagesRouting = await routeAgentImagesAfterBootstrap(bundlePath);
|
|
1434
|
-
}
|
|
1435
|
-
catch {
|
|
1436
|
-
// Side-channel failure; install already succeeded
|
|
1437
|
-
}
|
|
1438
|
-
const extras = {};
|
|
1439
|
-
if (skillsRouting)
|
|
1440
|
-
extras.skillsRouting = skillsRouting;
|
|
1441
|
-
if (pluginsRouting)
|
|
1442
|
-
extras.pluginsRouting = pluginsRouting;
|
|
1443
|
-
if (workflowSpecsRouting)
|
|
1444
|
-
extras.workflowSpecsRouting = workflowSpecsRouting;
|
|
1445
|
-
if (contextPacksRouting)
|
|
1446
|
-
extras.contextPacksRouting = contextPacksRouting;
|
|
1447
|
-
if (agentImagesRouting)
|
|
1448
|
-
extras.agentImagesRouting = agentImagesRouting;
|
|
1449
|
-
return c.json(Object.keys(extras).length > 0 ? { ...result, ...extras } : result, 201);
|
|
1450
|
-
}
|
|
1451
|
-
if (result.status === "partial") {
|
|
1452
|
-
const ok = result.stages.filter((s) => s.status === "ok").length;
|
|
1453
|
-
const fail = result.stages.filter((s) => s.status === "failed" || s.status === "blocked").length;
|
|
1454
|
-
eventBus.emit({ type: "bootstrap.partial", runId: result.runId, sourceRef: bundlePath, rigId: result.rigId, completed: ok, failed: fail });
|
|
1455
1200
|
writeInstallAudit({
|
|
1456
|
-
bundlePath, outcome: "partial", targetRigId: result.rigId,
|
|
1201
|
+
bundlePath, outcome: result.status === "completed" ? "success" : "partial", targetRigId: result.rigId,
|
|
1457
1202
|
targetRigName: installMeta?.rigName, cliVersion: clientCliVersion,
|
|
1458
1203
|
bundleManifest: installMeta?.bundleManifest,
|
|
1204
|
+
routingFailures: routing?.routingFailures,
|
|
1459
1205
|
});
|
|
1460
|
-
return c.json(
|
|
1206
|
+
return c.json(responseBody, result.status === "completed" ? 201 : 200);
|
|
1461
1207
|
}
|
|
1462
1208
|
eventBus.emit({ type: "bootstrap.failed", runId: result.runId, sourceRef: bundlePath, error: result.errors[0] ?? "failed" });
|
|
1209
|
+
// The pre-launch hook may have routed contents before a later failure; the result carries what it did.
|
|
1463
1210
|
writeInstallAudit({
|
|
1464
1211
|
bundlePath, outcome: "failed",
|
|
1465
1212
|
targetRigName: installMeta?.rigName, cliVersion: clientCliVersion,
|
|
1466
1213
|
bundleManifest: installMeta?.bundleManifest,
|
|
1214
|
+
routingFailures: result.bundleRouting?.routingFailures,
|
|
1467
1215
|
});
|
|
1468
|
-
const
|
|
1469
|
-
return c.json(
|
|
1216
|
+
const failure = bootstrapFailureResponse(result, "apply");
|
|
1217
|
+
return c.json(failure.body, failure.status);
|
|
1470
1218
|
}
|
|
1471
1219
|
catch (err) {
|
|
1472
1220
|
bootstrapRepo.updateRunStatus(run.id, "failed");
|