@openrig/cli 0.5.4 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/daemon/assets/guidance/openrig-start.md +7 -0
- package/daemon/assets/onboarding/01-world-and-purpose.md +52 -0
- package/daemon/assets/onboarding/02-self-and-competent-action.md +57 -0
- package/daemon/assets/plugins/openrig-core/README.md +5 -2
- package/daemon/assets/plugins/openrig-core/hooks/claude.json +3 -12
- package/daemon/assets/plugins/openrig-core/hooks/codex.json +5 -12
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +194 -124
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +18 -23
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/CHANGELOG.md +92 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/REVISION-GUIDE.md +34 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROADMAP.md +23 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROLLOUT.md +234 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +404 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/compose.py +653 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/scaffold.sh +34 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trace-due.sh +32 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trace-stamp.sh +5 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trunk-diff.sh +18 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/LEARNED.md +40 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/NOTES.md +9 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/PLAYBOOK.md +5 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SOP.md +24 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SPEC.md +54 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +2 -0
- package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +31 -0
- package/daemon/assets/plugins/openrig-core/skills/refocusing/references/refocus.md +22 -0
- package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +221 -0
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -3
- package/daemon/context-packs/onboarding-width/manifest.yaml +11 -0
- package/daemon/context-packs/{world/install/reference-material.md → onboarding-width/public-reference-material.md} +4 -26
- package/daemon/context-packs/{world/install/what-you-can-do.md → onboarding-width/public-what-you-can-do.md} +13 -9
- 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 -1
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/attention-queue/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/openrig-architect/manifest.yaml +1 -1
- 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-upgrade/manifest.yaml +1 -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/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/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/SKILL.md +21 -15
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +3 -3
- 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/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/brainstorming/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/executing-plans/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
- 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/using-superpowers/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +1 -1
- package/daemon/context-packs/world-example/manifest.yaml +8 -0
- package/daemon/context-packs/world-example/your-world.md +37 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts +15 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +57 -0
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/daemon/dist/db/all-migrations.js +4 -0
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/072_thread_seat_map.d.ts +3 -0
- package/daemon/dist/db/migrations/072_thread_seat_map.d.ts.map +1 -0
- package/daemon/dist/db/migrations/072_thread_seat_map.js +22 -0
- package/daemon/dist/db/migrations/072_thread_seat_map.js.map +1 -0
- package/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts +3 -0
- package/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts.map +1 -0
- package/daemon/dist/db/migrations/073_queue_transition_wakes.js +21 -0
- package/daemon/dist/db/migrations/073_queue_transition_wakes.js.map +1 -0
- package/daemon/dist/domain/activity-taxonomy.d.ts +112 -0
- package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -0
- package/daemon/dist/domain/activity-taxonomy.js +99 -0
- package/daemon/dist/domain/activity-taxonomy.js.map +1 -0
- package/daemon/dist/domain/bind-plan.d.ts +19 -0
- package/daemon/dist/domain/bind-plan.d.ts.map +1 -0
- package/daemon/dist/domain/bind-plan.js +25 -0
- package/daemon/dist/domain/bind-plan.js.map +1 -0
- package/daemon/dist/domain/event-bus.d.ts +6 -0
- package/daemon/dist/domain/event-bus.d.ts.map +1 -1
- package/daemon/dist/domain/event-bus.js +15 -5
- package/daemon/dist/domain/event-bus.js.map +1 -1
- package/daemon/dist/domain/gateway/gateway-process-main.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/gateway-process-main.js +9 -0
- package/daemon/dist/domain/gateway/gateway-process-main.js.map +1 -1
- package/daemon/dist/domain/gateway/gateway-process.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/gateway-process.js +9 -0
- package/daemon/dist/domain/gateway/gateway-process.js.map +1 -1
- package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +80 -0
- package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/gateway-subsystem.js +149 -0
- package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -0
- package/daemon/dist/domain/gateway/human-registry.d.ts +109 -0
- package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.js +250 -0
- package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/{dist → daemon/dist/domain/gateway}/slack/config.d.ts +8 -5
- package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -0
- package/{dist → daemon/dist/domain/gateway}/slack/config.js +8 -6
- package/daemon/dist/domain/gateway/slack/config.js.map +1 -0
- package/{dist → daemon/dist/domain/gateway}/slack/inbound-admission.d.ts +1 -1
- package/daemon/dist/domain/gateway/slack/inbound-admission.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/inbound-admission.js.map +1 -0
- package/{dist → daemon/dist/domain/gateway}/slack/inbound.d.ts +14 -3
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -0
- package/{dist → daemon/dist/domain/gateway}/slack/inbound.js +6 -5
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/message.d.ts +80 -0
- package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/message.js +164 -0
- package/daemon/dist/domain/gateway/slack/message.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +54 -0
- package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/outbound-driver.js +96 -0
- package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/queue-access.d.ts +53 -0
- package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/queue-access.js +72 -0
- package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/secrets.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-api.d.ts +106 -0
- package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-api.js +198 -0
- package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +47 -0
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-delivery.js +147 -0
- package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +21 -0
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +198 -0
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +30 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.js +99 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/thread-routing.d.ts +17 -0
- package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/thread-routing.js +35 -0
- package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +56 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js +103 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -0
- package/daemon/dist/domain/gateway/spawn-gateway.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/spawn-gateway.js +9 -0
- package/daemon/dist/domain/gateway/spawn-gateway.js.map +1 -1
- package/daemon/dist/domain/gateway/transport.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/transport.js +9 -0
- package/daemon/dist/domain/gateway/transport.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +20 -0
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/parked-query.d.ts +81 -0
- package/daemon/dist/domain/parked-query.d.ts.map +1 -0
- package/daemon/dist/domain/parked-query.js +126 -0
- package/daemon/dist/domain/parked-query.js.map +1 -0
- package/daemon/dist/domain/queue-pickup.d.ts +38 -0
- package/daemon/dist/domain/queue-pickup.d.ts.map +1 -0
- package/daemon/dist/domain/queue-pickup.js +67 -0
- package/daemon/dist/domain/queue-pickup.js.map +1 -0
- package/daemon/dist/domain/queue-repository.d.ts +38 -10
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +267 -35
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.d.ts +77 -0
- package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -0
- package/daemon/dist/domain/queue-stuck-sweep.js +348 -0
- package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -0
- package/daemon/dist/domain/queue-wake-ladder.d.ts +96 -0
- package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -0
- package/daemon/dist/domain/queue-wake-ladder.js +533 -0
- package/daemon/dist/domain/queue-wake-ladder.js.map +1 -0
- package/daemon/dist/domain/queue-wake-repository.d.ts +37 -0
- package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -0
- package/daemon/dist/domain/queue-wake-repository.js +80 -0
- package/daemon/dist/domain/queue-wake-repository.js.map +1 -0
- package/daemon/dist/domain/rebuild-priming-chain.d.ts +28 -0
- package/daemon/dist/domain/rebuild-priming-chain.d.ts.map +1 -0
- package/daemon/dist/domain/rebuild-priming-chain.js +71 -0
- package/daemon/dist/domain/rebuild-priming-chain.js.map +1 -0
- package/daemon/dist/domain/review/compose.d.ts +3 -1
- package/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/compose.js +14 -8
- package/daemon/dist/domain/review/compose.js.map +1 -1
- package/daemon/dist/domain/review/gather.d.ts.map +1 -1
- package/daemon/dist/domain/review/gather.js +3 -1
- package/daemon/dist/domain/review/gather.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +3 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +18 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +6 -5
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.js +23 -20
- package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -5
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scaffold-placeholder.js +6 -7
- package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
- package/daemon/dist/domain/scope/scope-approve.d.ts +1 -1
- package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-approve.js +5 -4
- package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.d.ts +42 -3
- package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.js +78 -93
- package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.js +7 -2
- package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
- package/daemon/dist/domain/seat-activity-service.d.ts +91 -0
- package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-activity-service.js +416 -1
- package/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-handover-planner.d.ts +14 -0
- package/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-planner.js +14 -1
- package/daemon/dist/domain/seat-handover-planner.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +54 -1
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +162 -19
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/session-transport.js +1 -2
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.d.ts +6 -1
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +3 -3
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +33 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +48 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/view-projector.d.ts +1 -1
- package/daemon/dist/domain/view-projector.d.ts.map +1 -1
- package/daemon/dist/domain/view-projector.js +41 -2
- package/daemon/dist/domain/view-projector.js.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
- package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.js +3 -0
- package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +4 -3
- package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js +56 -196
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
- package/daemon/dist/domain/workspace/getting-started-narrative.js +1 -1
- package/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.d.ts +8 -11
- package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.js +23 -25
- package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
- package/daemon/dist/gateway-slack-surface.d.ts +4 -0
- package/daemon/dist/gateway-slack-surface.d.ts.map +1 -0
- package/daemon/dist/gateway-slack-surface.js +8 -0
- package/daemon/dist/gateway-slack-surface.js.map +1 -0
- package/daemon/dist/index.d.ts +29 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +99 -4
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/lib/pane-envelope.d.ts +1 -1
- package/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
- package/daemon/dist/lib/pane-envelope.js +8 -14
- package/daemon/dist/lib/pane-envelope.js.map +1 -1
- package/daemon/dist/routes/activity.d.ts +13 -0
- package/daemon/dist/routes/activity.d.ts.map +1 -1
- package/daemon/dist/routes/activity.js +186 -0
- package/daemon/dist/routes/activity.js.map +1 -1
- package/daemon/dist/routes/config.js +2 -2
- package/daemon/dist/routes/config.js.map +1 -1
- package/daemon/dist/routes/gateway.d.ts +3 -0
- package/daemon/dist/routes/gateway.d.ts.map +1 -0
- package/daemon/dist/routes/gateway.js +46 -0
- package/daemon/dist/routes/gateway.js.map +1 -0
- package/daemon/dist/routes/health-summary.d.ts.map +1 -1
- package/daemon/dist/routes/health-summary.js +8 -0
- package/daemon/dist/routes/health-summary.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +3 -1
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/daemon/dist/routes/scope-audit.js +72 -13
- package/daemon/dist/routes/scope-audit.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +15 -0
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/server.d.ts +17 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +25 -4
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts +4 -0
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +33 -0
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-state-taxonomy.md +106 -0
- package/daemon/docs/reference/project-workspace.md +22 -14
- package/daemon/docs/reference/refocus-channel.md +27 -14
- package/daemon/docs/reference/sdlc-conventions.md +24 -13
- package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +21 -15
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +1 -1
- package/dist/build-info.js +3 -3
- package/dist/commands/config-init-workspace.d.ts.map +1 -1
- package/dist/commands/config-init-workspace.js +32 -57
- package/dist/commands/config-init-workspace.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +5 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +14 -4
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/gateway.d.ts +19 -1
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +157 -33
- package/dist/commands/gateway.js.map +1 -1
- package/dist/commands/parked.d.ts +3 -0
- package/dist/commands/parked.d.ts.map +1 -0
- package/dist/commands/parked.js +83 -0
- package/dist/commands/parked.js.map +1 -0
- package/dist/commands/proof.d.ts +2 -1
- package/dist/commands/proof.d.ts.map +1 -1
- package/dist/commands/proof.js +8 -8
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/ps.d.ts +10 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +14 -3
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +31 -3
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +255 -136
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/seat.d.ts.map +1 -1
- package/dist/commands/seat.js +40 -10
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/send.d.ts +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +13 -14
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/slack.d.ts +14 -28
- package/dist/commands/slack.d.ts.map +1 -1
- package/dist/commands/slack.js +73 -187
- package/dist/commands/slack.js.map +1 -1
- package/dist/commands/start.d.ts +3 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +12 -5
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +11 -4
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/view.d.ts +4 -2
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +1 -1
- package/dist/commands/view.js.map +1 -1
- package/dist/commands/watchdog.d.ts.map +1 -1
- package/dist/commands/watchdog.js +2 -1
- package/dist/commands/watchdog.js.map +1 -1
- package/dist/commands/workspace.js +1 -1
- package/dist/config-store.d.ts +15 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +60 -0
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-target.d.ts.map +1 -1
- package/dist/cross-host-target.js +5 -4
- package/dist/cross-host-target.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +45 -3
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +126 -0
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/scope/capability-delta.d.ts +9 -0
- package/dist/lib/scope/capability-delta.d.ts.map +1 -0
- package/dist/lib/scope/capability-delta.js +73 -0
- package/dist/lib/scope/capability-delta.js.map +1 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts +4 -5
- package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
- package/dist/lib/scope/scaffold-placeholder.js +6 -7
- package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
- package/dist/lib/scope/scope-audit.d.ts +42 -3
- package/dist/lib/scope/scope-audit.d.ts.map +1 -1
- package/dist/lib/scope/scope-audit.js +78 -93
- package/dist/lib/scope/scope-audit.js.map +1 -1
- package/dist/lib/scope/scope-fs.d.ts +18 -14
- package/dist/lib/scope/scope-fs.d.ts.map +1 -1
- package/dist/lib/scope/scope-fs.js +60 -29
- package/dist/lib/scope/scope-fs.js.map +1 -1
- package/dist/lib/scope/templates.d.ts +17 -17
- package/dist/lib/scope/templates.d.ts.map +1 -1
- package/dist/lib/scope/templates.js +35 -39
- package/dist/lib/scope/templates.js.map +1 -1
- package/dist/lib/scope-templates/backlog-deprecation.md +3 -1
- package/dist/lib/scope-templates/backlog-tech-debt.md +3 -1
- package/dist/lib/scope-templates/bug-fix.md +3 -1
- package/dist/lib/scope-templates/capability-delta.md +60 -0
- package/dist/lib/scope-templates/mission-placeholder.md +9 -40
- package/dist/lib/scope-templates/mission-progress.md +5 -6
- package/dist/lib/scope-templates/mission-release.md +9 -40
- package/dist/lib/scope-templates/notes.md +14 -0
- package/dist/lib/scope-templates/placeholder.md +3 -1
- package/dist/lib/scope-templates/proof.md +1 -1
- package/dist/lib/scope-templates/release-feature.md +3 -1
- package/dist/lib/scope-templates/research.md +3 -1
- package/dist/lib/scope-templates/slice-progress.md +4 -5
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts +15 -0
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +57 -0
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
- package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/db/all-migrations.js +4 -0
- package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.js +22 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.js +21 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.d.ts +112 -0
- package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.js +99 -0
- package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/bind-plan.d.ts +19 -0
- package/node_modules/@openrig/daemon/dist/domain/bind-plan.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/bind-plan.js +25 -0
- package/node_modules/@openrig/daemon/dist/domain/bind-plan.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/event-bus.d.ts +6 -0
- package/node_modules/@openrig/daemon/dist/domain/event-bus.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/event-bus.js +15 -5
- package/node_modules/@openrig/daemon/dist/domain/event-bus.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.js +9 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.js +9 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +80 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +149 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +109 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +250 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts +44 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js +62 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.d.ts +8 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.js +20 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +113 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +146 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts +80 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js +164 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +54 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js +96 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +53 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +72 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.d.ts +21 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.js +73 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts +106 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js +198 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +47 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js +147 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +21 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +198 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +30 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js +99 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts +62 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js +132 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts +17 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js +35 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +56 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js +103 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.js +9 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/transport.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/transport.js +9 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/transport.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +20 -0
- package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts +81 -0
- package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/parked-query.js +126 -0
- package/node_modules/@openrig/daemon/dist/domain/parked-query.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts +38 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js +67 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +38 -10
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +267 -35
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts +77 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +348 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts +96 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js +533 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +37 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +80 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.d.ts +28 -0
- package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.js +71 -0
- package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +3 -1
- package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/compose.js +14 -8
- package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/gather.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/gather.js +3 -1
- package/node_modules/@openrig/daemon/dist/domain/review/gather.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +18 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +6 -5
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +23 -20
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -5
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +6 -7
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js +5 -4
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts +42 -3
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js +78 -93
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +7 -2
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +91 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +416 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.d.ts +14 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.js +14 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +54 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +162 -19
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-transport.js +1 -2
- package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +6 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +3 -3
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts +33 -0
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +48 -0
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/view-projector.js +41 -2
- package/node_modules/@openrig/daemon/dist/domain/view-projector.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
- package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js +3 -0
- package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +4 -3
- package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js +56 -196
- package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/getting-started-narrative.js +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts +8 -11
- package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js +23 -25
- package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js +8 -0
- package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/index.d.ts +29 -0
- package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/index.js +99 -4
- package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js +8 -14
- package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/activity.d.ts +13 -0
- package/node_modules/@openrig/daemon/dist/routes/activity.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/activity.js +186 -0
- package/node_modules/@openrig/daemon/dist/routes/activity.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/config.js +2 -2
- package/node_modules/@openrig/daemon/dist/routes/config.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/gateway.js +46 -0
- package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/health-summary.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/health-summary.js +8 -0
- package/node_modules/@openrig/daemon/dist/routes/health-summary.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/queue.js +3 -1
- package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/scope-audit.js +72 -13
- package/node_modules/@openrig/daemon/dist/routes/scope-audit.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/seat.js +15 -0
- package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/server.d.ts +17 -0
- package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/server.js +25 -4
- package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.js +33 -0
- package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
- package/node_modules/@openrig/daemon/package.json +5 -1
- package/package.json +1 -1
- package/tui/dist/daemon-client.d.ts +5 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js +17 -0
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +12 -4
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/live-events.d.ts +21 -0
- package/tui/dist/live-events.d.ts.map +1 -0
- package/tui/dist/live-events.js +88 -0
- package/tui/dist/live-events.js.map +1 -0
- package/tui/dist/live.js +1 -1
- package/tui/dist/main.js +27 -8
- package/tui/dist/main.js.map +1 -1
- package/tui/dist/refresh.d.ts +10 -1
- package/tui/dist/refresh.d.ts.map +1 -1
- package/tui/dist/refresh.js +22 -2
- package/tui/dist/refresh.js.map +1 -1
- package/daemon/context-packs/world/install/01-world-from-primitives.md +0 -97
- package/daemon/context-packs/world/install/02-permission-self-sleep.md +0 -141
- package/daemon/context-packs/world/install/03-what-this-is-for.md +0 -86
- package/daemon/context-packs/world/install/04-ontology.md +0 -790
- package/daemon/context-packs/world/install/05-harness-power-use.md +0 -355
- package/daemon/context-packs/world/install/06-a-competent-turn.md +0 -225
- package/daemon/context-packs/world/install/manifest.yaml +0 -125
- package/dist/lib/scope-templates/mission-brief.md +0 -20
- package/dist/lib/scope-templates/mission-notes.md +0 -102
- package/dist/slack/config.d.ts.map +0 -1
- package/dist/slack/config.js.map +0 -1
- package/dist/slack/connector-server.d.ts +0 -31
- package/dist/slack/connector-server.d.ts.map +0 -1
- package/dist/slack/connector-server.js +0 -108
- package/dist/slack/connector-server.js.map +0 -1
- package/dist/slack/inbound-admission.d.ts.map +0 -1
- package/dist/slack/inbound-admission.js.map +0 -1
- package/dist/slack/inbound.d.ts.map +0 -1
- package/dist/slack/inbound.js.map +0 -1
- package/dist/slack/message.d.ts +0 -39
- package/dist/slack/message.d.ts.map +0 -1
- package/dist/slack/message.js +0 -88
- package/dist/slack/message.js.map +0 -1
- package/dist/slack/outbound.d.ts +0 -39
- package/dist/slack/outbound.d.ts.map +0 -1
- package/dist/slack/outbound.js +0 -63
- package/dist/slack/outbound.js.map +0 -1
- package/dist/slack/queue-bridge.d.ts +0 -61
- package/dist/slack/queue-bridge.d.ts.map +0 -1
- package/dist/slack/queue-bridge.js +0 -114
- package/dist/slack/queue-bridge.js.map +0 -1
- package/dist/slack/secrets.d.ts.map +0 -1
- package/dist/slack/secrets.js.map +0 -1
- package/dist/slack/slack-api.d.ts +0 -49
- package/dist/slack/slack-api.d.ts.map +0 -1
- package/dist/slack/slack-api.js +0 -110
- package/dist/slack/slack-api.js.map +0 -1
- package/dist/slack/slack-delivery.d.ts +0 -14
- package/dist/slack/slack-delivery.d.ts.map +0 -1
- package/dist/slack/slack-delivery.js +0 -28
- package/dist/slack/slack-delivery.js.map +0 -1
- package/dist/slack/state-store.d.ts.map +0 -1
- package/dist/slack/state-store.js.map +0 -1
- /package/{dist → daemon/dist/domain/gateway}/slack/inbound-admission.js +0 -0
- /package/{dist → daemon/dist/domain/gateway}/slack/secrets.d.ts +0 -0
- /package/{dist → daemon/dist/domain/gateway}/slack/secrets.js +0 -0
- /package/{dist → daemon/dist/domain/gateway}/slack/state-store.d.ts +0 -0
- /package/{dist → daemon/dist/domain/gateway}/slack/state-store.js +0 -0
|
@@ -3,11 +3,14 @@ import { loadHumanRegistry } from "./gateway/human-registry.js";
|
|
|
3
3
|
import { resolveExternal } from "./gateway/external-admission.js";
|
|
4
4
|
import { QueueTransitionLog } from "./queue-transition-log.js";
|
|
5
5
|
import { WAKE_INTENT_PREFIX } from "./outbox-handler.js";
|
|
6
|
+
import { derivePickup } from "./queue-pickup.js";
|
|
6
7
|
import { wrapPaneEnvelope } from "../lib/pane-envelope.js";
|
|
7
8
|
import { getSelfHostId } from "./hosts/fanout-contract.js";
|
|
8
9
|
import { parseSessionName } from "./session-name.js";
|
|
9
10
|
import { computeClosureRequiredAt, validateClosure, } from "./hot-potato-enforcer.js";
|
|
10
11
|
import { isHumanSeatSession, validateHumanPark, validateHumanRoute } from "./human-route-enforcer.js";
|
|
12
|
+
import { QueueWakeRepository } from "./queue-wake-repository.js";
|
|
13
|
+
import { WatchdogJobsRepository } from "./watchdog-jobs-repository.js";
|
|
11
14
|
export const QUEUE_STATES = [
|
|
12
15
|
"pending",
|
|
13
16
|
"in-progress",
|
|
@@ -37,6 +40,8 @@ export const ACTIVE_QUEUE_STATES = ["pending", "in-progress", "blocked"];
|
|
|
37
40
|
export function isBlockerLive(state) {
|
|
38
41
|
return ACTIVE_QUEUE_STATES.includes(state);
|
|
39
42
|
}
|
|
43
|
+
const AUTO_UNPARK_WAKE_TAG = "queue:auto-unpark:blocker";
|
|
44
|
+
const AUTO_UNPARK_BLOCKER_TAG_PREFIX = "queue:auto-unpark:blocker-ref:";
|
|
40
45
|
/** 0.5.1-53 Atom 1a — typed non-qitem gate blocker prefixes. A park may be gated on a fold / auth /
|
|
41
46
|
* external condition that is NOT a qitem and NOT a human seat; these prefixes make such a gate a
|
|
42
47
|
* first-class, compact-visible, downstream-classifiable blocker (the ruling detail rides a transition). */
|
|
@@ -267,6 +272,8 @@ export class QueueRepository {
|
|
|
267
272
|
* fallback real code rather than a promise in a comment). */
|
|
268
273
|
outbox;
|
|
269
274
|
resolveOccupantGeneration;
|
|
275
|
+
wakeRepo;
|
|
276
|
+
watchdogJobsRepo;
|
|
270
277
|
/** PL-007 Workspace Primitive — true when migration 038 has applied the
|
|
271
278
|
* queue_items.target_repo column. Older test fixtures that bypass the
|
|
272
279
|
* canonical migration list don't have the column; INSERTs degrade to
|
|
@@ -284,6 +291,7 @@ export class QueueRepository {
|
|
|
284
291
|
this.db = db;
|
|
285
292
|
this.eventBus = eventBus;
|
|
286
293
|
this.transitionLog = new QueueTransitionLog(db);
|
|
294
|
+
this.wakeRepo = new QueueWakeRepository(db);
|
|
287
295
|
this.validateRig = opts?.validateRig ?? (() => true);
|
|
288
296
|
this.transport = opts?.transport;
|
|
289
297
|
this.workflowFrontierPredicate = opts?.workflowFrontierPredicate;
|
|
@@ -308,6 +316,11 @@ export class QueueRepository {
|
|
|
308
316
|
// checks cannot drift.
|
|
309
317
|
db.function("is_human_seat_session", { deterministic: true }, (value) => isHumanSeatSession(value) ? 1 : 0);
|
|
310
318
|
}
|
|
319
|
+
/** Startup attaches the generation-aware shared repository. Isolated domain
|
|
320
|
+
* fixtures fall back to a repository on this same SQLite connection. */
|
|
321
|
+
attachWatchdogJobsRepository(repo) {
|
|
322
|
+
this.watchdogJobsRepo = repo;
|
|
323
|
+
}
|
|
311
324
|
/**
|
|
312
325
|
* Attach the wake-path transport AFTER construction. Used by daemon
|
|
313
326
|
* startup, where SessionTransport is constructed later in the dep graph
|
|
@@ -358,24 +371,50 @@ export class QueueRepository {
|
|
|
358
371
|
// defect only when a wake WAS intended.
|
|
359
372
|
if (nudge === false)
|
|
360
373
|
return;
|
|
374
|
+
this.recordWakeIntent({
|
|
375
|
+
outboxId: `${WAKE_INTENT_PREFIX}${successorQitemId}`,
|
|
376
|
+
auditPointer: successorQitemId,
|
|
377
|
+
fromSession,
|
|
378
|
+
toSession,
|
|
379
|
+
identityProvenance,
|
|
380
|
+
bareBody: `Queue handoff: ${successorQitemId} - check your queue.`,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
recordWakeIntent(input) {
|
|
361
384
|
if (!this.outbox)
|
|
362
|
-
return;
|
|
363
|
-
// MF4:
|
|
364
|
-
//
|
|
365
|
-
// intent body. Delivery (immediate or crash-recovery) replays this exact text,
|
|
366
|
-
// so a recovery after a tenure swap can never relabel the wake with the CURRENT
|
|
367
|
-
// occupant's generation — it carries the generation that actually emitted it.
|
|
368
|
-
const bareBody = `Queue handoff: ${successorQitemId} - check your queue.`;
|
|
385
|
+
return null;
|
|
386
|
+
// MF4: freeze the emitting envelope at stage time. Delivery and crash
|
|
387
|
+
// recovery replay these exact bytes without re-resolving the occupant.
|
|
369
388
|
const stampISO = new Date().toISOString();
|
|
370
|
-
const genUuid = this.resolveOccupantGeneration?.(fromSession) ?? undefined;
|
|
371
|
-
const frozenEnvelope = wrapPaneEnvelope(fromSession, toSession, bareBody,
|
|
389
|
+
const genUuid = this.resolveOccupantGeneration?.(input.fromSession) ?? undefined;
|
|
390
|
+
const frozenEnvelope = wrapPaneEnvelope(input.fromSession, input.toSession, input.bareBody, { stampISO, genUuid });
|
|
372
391
|
this.outbox.record({
|
|
373
|
-
outboxId:
|
|
374
|
-
senderSession: fromSession,
|
|
375
|
-
destinationSession: toSession,
|
|
392
|
+
outboxId: input.outboxId,
|
|
393
|
+
senderSession: input.fromSession,
|
|
394
|
+
destinationSession: input.toSession,
|
|
376
395
|
body: frozenEnvelope,
|
|
377
|
-
|
|
378
|
-
|
|
396
|
+
tags: input.tags,
|
|
397
|
+
auditPointer: input.auditPointer,
|
|
398
|
+
identityProvenance: input.identityProvenance,
|
|
399
|
+
});
|
|
400
|
+
return input.outboxId;
|
|
401
|
+
}
|
|
402
|
+
stageAutoUnparkWakeIntent(input) {
|
|
403
|
+
return this.recordWakeIntent({
|
|
404
|
+
outboxId: `${WAKE_INTENT_PREFIX}blocker-${input.resumeTransitionId}`,
|
|
405
|
+
auditPointer: input.qitemId,
|
|
406
|
+
fromSession: input.fromSession,
|
|
407
|
+
toSession: input.destinationSession,
|
|
408
|
+
identityProvenance: input.identityProvenance,
|
|
409
|
+
bareBody: `Blocker ${input.blockerQitemId} resolved; parked qitem ${input.qitemId} is pending. Resume the recorded continuation and update the row.`,
|
|
410
|
+
tags: [AUTO_UNPARK_WAKE_TAG, `${AUTO_UNPARK_BLOCKER_TAG_PREFIX}${input.blockerQitemId}`],
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
deliverWakeIntentAfterCommit(outboxId) {
|
|
414
|
+
queueMicrotask(() => {
|
|
415
|
+
void this.deliverWakeIntent(outboxId).catch((err) => {
|
|
416
|
+
console.error(`Auto-unpark wake delivery failed for ${outboxId}:`, err);
|
|
417
|
+
});
|
|
379
418
|
});
|
|
380
419
|
}
|
|
381
420
|
/**
|
|
@@ -448,9 +487,45 @@ export class QueueRepository {
|
|
|
448
487
|
const qitemId = intent.auditPointer ?? outboxId;
|
|
449
488
|
// MF4: send the FROZEN envelope stored on the intent verbatim (no re-resolution).
|
|
450
489
|
const outcome = await this.performWakeSend(qitemId, intent.destinationSession, intent.senderSession, undefined, intent.body);
|
|
451
|
-
this.recordNudgeAttempt(qitemId, outcome.nudgeResult);
|
|
452
490
|
const finalState = outcome.classified === "verified" ? "delivered" : outcome.classified;
|
|
453
|
-
|
|
491
|
+
const blockerRef = intent.tags?.includes(AUTO_UNPARK_WAKE_TAG)
|
|
492
|
+
? intent.tags
|
|
493
|
+
.find((tag) => tag.startsWith(AUTO_UNPARK_BLOCKER_TAG_PREFIX))
|
|
494
|
+
?.slice(AUTO_UNPARK_BLOCKER_TAG_PREFIX.length)
|
|
495
|
+
: undefined;
|
|
496
|
+
const wakeEvent = this.db.transaction(() => {
|
|
497
|
+
this.recordNudgeAttempt(qitemId, outcome.nudgeResult);
|
|
498
|
+
this.outbox.finalizeDelivery(outboxId, finalState);
|
|
499
|
+
if (!blockerRef)
|
|
500
|
+
return null;
|
|
501
|
+
const item = this.getByIdOrThrow(qitemId);
|
|
502
|
+
const transition = this.transitionLog.append({
|
|
503
|
+
qitemId,
|
|
504
|
+
state: item.state,
|
|
505
|
+
actorSession: "queue@system",
|
|
506
|
+
transitionNote: `blocker ${blockerRef} wake attempted; delivery=${outcome.nudgeResult}`,
|
|
507
|
+
});
|
|
508
|
+
this.wakeRepo.record({
|
|
509
|
+
transitionId: transition.transitionId,
|
|
510
|
+
qitemId,
|
|
511
|
+
phase: "fired",
|
|
512
|
+
kind: "blocker",
|
|
513
|
+
ref: blockerRef,
|
|
514
|
+
deliveryStatus: outcome.nudgeResult,
|
|
515
|
+
});
|
|
516
|
+
return this.eventBus.persistWithinTransaction({
|
|
517
|
+
type: "queue.updated",
|
|
518
|
+
qitemId,
|
|
519
|
+
fromState: item.state,
|
|
520
|
+
toState: item.state,
|
|
521
|
+
closureReason: null,
|
|
522
|
+
closureTarget: null,
|
|
523
|
+
actorSession: "queue@system",
|
|
524
|
+
summary: item.summary ?? null,
|
|
525
|
+
});
|
|
526
|
+
})();
|
|
527
|
+
if (wakeEvent)
|
|
528
|
+
this.eventBus.notifySubscribers(wakeEvent);
|
|
454
529
|
return finalState;
|
|
455
530
|
}
|
|
456
531
|
/**
|
|
@@ -597,6 +672,23 @@ export class QueueRepository {
|
|
|
597
672
|
* delivered nor demoted to failed.
|
|
598
673
|
*/
|
|
599
674
|
async performWakeSend(qitemId, destinationSession, sourceSession, bodyOverride, prebuiltText) {
|
|
675
|
+
// DEFECT FIX qitem-20260827065907-b9ae334c (S1-class, 3 live specimens): a virtual
|
|
676
|
+
// @external destination has NO pane — the queue row ITSELF is the gateway
|
|
677
|
+
// subsystem's input (the Slack connector polls human-destined rows and its own
|
|
678
|
+
// ledger is the delivery record). Falling through to tmux here recorded
|
|
679
|
+
// "failed: … tmux reports no session" while the founder verifiably received the
|
|
680
|
+
// message, and that failed: literal poisoned the undelivered surface. So: the
|
|
681
|
+
// wake for this class is GATEWAY-OWNED — tmux is never consulted, and the
|
|
682
|
+
// recorded wording claims exactly what was (and was not) checked. Classified
|
|
683
|
+
// indeterminate (landed with the owning subsystem; render unconfirmable here) —
|
|
684
|
+
// never verified, never failed. Human-CLASS seats with real panes
|
|
685
|
+
// (human-*@kernel) are NOT this class and keep tmux transport.
|
|
686
|
+
if (parseSessionName(destinationSession).kind === "external") {
|
|
687
|
+
return {
|
|
688
|
+
classified: "indeterminate",
|
|
689
|
+
nudgeResult: `gateway-owned: '${destinationSession}' is a virtual @external destination — delivery rides the gateway subsystem (Slack connector), whose own ledger is the delivery record; tmux was not consulted (it can never hold this address class)`,
|
|
690
|
+
};
|
|
691
|
+
}
|
|
600
692
|
const stampISO = new Date().toISOString();
|
|
601
693
|
let text;
|
|
602
694
|
if (prebuiltText !== undefined) {
|
|
@@ -617,7 +709,7 @@ export class QueueRepository {
|
|
|
617
709
|
const genUuid = sourceSession
|
|
618
710
|
? (this.resolveOccupantGeneration?.(sourceSession) ?? undefined)
|
|
619
711
|
: undefined;
|
|
620
|
-
text = wrapPaneEnvelope(sourceSession, destinationSession, bareBody,
|
|
712
|
+
text = wrapPaneEnvelope(sourceSession, destinationSession, bareBody, { stampISO, genUuid });
|
|
621
713
|
}
|
|
622
714
|
try {
|
|
623
715
|
const res = await this.transport.send(destinationSession, text, { verify: true, stampISO });
|
|
@@ -653,10 +745,11 @@ export class QueueRepository {
|
|
|
653
745
|
}
|
|
654
746
|
}
|
|
655
747
|
async create(input) {
|
|
656
|
-
// 51-09 incr 4
|
|
657
|
-
//
|
|
658
|
-
//
|
|
659
|
-
|
|
748
|
+
// FOUNDER ROOT INVARIANT (2026-08-27, supersedes 51-09 incr 4 / ruling cb19867f Q2):
|
|
749
|
+
// a LOCAL write stores the bare transport identity — no self-host suffix inside one
|
|
750
|
+
// instance. Host identity is added only at the cross-host forwarding boundary
|
|
751
|
+
// (routes/queue.ts stamp-at-FORWARD), and a genuine origin triple arriving from a
|
|
752
|
+
// forward is stored verbatim (never re-stamped, never stripped).
|
|
660
753
|
if (!this.validateRig(input.destinationSession)) {
|
|
661
754
|
throw new QueueRepositoryError("unknown_destination_rig", `destination_session ${input.destinationSession} references an unknown rig`, destinationRefusalTeaching(input.destinationSession));
|
|
662
755
|
}
|
|
@@ -1273,8 +1366,9 @@ export class QueueRepository {
|
|
|
1273
1366
|
*/
|
|
1274
1367
|
update(input) {
|
|
1275
1368
|
const txn = this.db.transaction(() => this.updateInTransactionalContext(input));
|
|
1276
|
-
const
|
|
1277
|
-
|
|
1369
|
+
const result = txn();
|
|
1370
|
+
for (const event of result.persistedEvents)
|
|
1371
|
+
this.eventBus.notifySubscribers(event);
|
|
1278
1372
|
return this.getByIdOrThrow(input.qitemId);
|
|
1279
1373
|
}
|
|
1280
1374
|
/**
|
|
@@ -1298,8 +1392,8 @@ export class QueueRepository {
|
|
|
1298
1392
|
* therefore applies to workflow projection unchanged.
|
|
1299
1393
|
*/
|
|
1300
1394
|
updateWithinTransaction(input) {
|
|
1301
|
-
const
|
|
1302
|
-
return { qitemId: input.qitemId,
|
|
1395
|
+
const result = this.updateInTransactionalContext(input);
|
|
1396
|
+
return { qitemId: input.qitemId, ...result };
|
|
1303
1397
|
}
|
|
1304
1398
|
/**
|
|
1305
1399
|
* Internal: closure validation + UPDATE + transition log + emit
|
|
@@ -1324,6 +1418,8 @@ export class QueueRepository {
|
|
|
1324
1418
|
|| input.closureTarget != null
|
|
1325
1419
|
|| input.handedOffTo != null
|
|
1326
1420
|
|| input.blockedOn != null
|
|
1421
|
+
|| input.wakeWatchdogId != null
|
|
1422
|
+
|| input.wakeAfterSeconds != null
|
|
1327
1423
|
|| input.summary != null
|
|
1328
1424
|
|| input.evidenceRef != null;
|
|
1329
1425
|
if (disallowed) {
|
|
@@ -1336,7 +1432,7 @@ export class QueueRepository {
|
|
|
1336
1432
|
transitionNote: input.transitionNote,
|
|
1337
1433
|
identityProvenance: input.identityProvenance ?? null,
|
|
1338
1434
|
});
|
|
1339
|
-
|
|
1435
|
+
const persistedEvent = this.eventBus.persistWithinTransaction({
|
|
1340
1436
|
type: "queue.updated",
|
|
1341
1437
|
qitemId: input.qitemId,
|
|
1342
1438
|
fromState: qitem.state,
|
|
@@ -1346,10 +1442,20 @@ export class QueueRepository {
|
|
|
1346
1442
|
actorSession: input.actorSession,
|
|
1347
1443
|
summary: qitem.summary ?? null,
|
|
1348
1444
|
});
|
|
1445
|
+
return { persistedEvent, persistedEvents: [persistedEvent] };
|
|
1349
1446
|
}
|
|
1350
1447
|
if (!isQueueState(input.state)) {
|
|
1351
1448
|
throw new QueueRepositoryError("invalid_state", `state=${input.state} not valid; valid: ${QUEUE_STATES.join(", ")}`);
|
|
1352
1449
|
}
|
|
1450
|
+
if ((input.wakeWatchdogId != null || input.wakeAfterSeconds != null) && input.state !== "blocked") {
|
|
1451
|
+
throw new QueueRepositoryError("wake_not_admitted", "a park wake persists only with state=blocked; park the row or drop the wake option");
|
|
1452
|
+
}
|
|
1453
|
+
if (input.wakeWatchdogId != null && input.wakeAfterSeconds != null) {
|
|
1454
|
+
throw new QueueRepositoryError("wake_ambiguous", "choose one explicit park wake: an existing watchdog id or an atomic timer");
|
|
1455
|
+
}
|
|
1456
|
+
if (input.wakeAfterSeconds != null && (!Number.isInteger(input.wakeAfterSeconds) || input.wakeAfterSeconds <= 0)) {
|
|
1457
|
+
throw new QueueRepositoryError("wake_after_invalid", `wakeAfterSeconds must be a positive integer (got ${input.wakeAfterSeconds})`);
|
|
1458
|
+
}
|
|
1353
1459
|
const isReopen = isGuardedTerminal && input.state !== qitem.state;
|
|
1354
1460
|
if (isReopen && !input.reopen) {
|
|
1355
1461
|
throw new QueueRepositoryError("terminal_reopen_requires_ack", `qitem ${input.qitemId} is currently '${qitem.state}'; state='${input.state}' would reopen a terminal row. Re-run deliberately with --reopen --note <reason>.`, { currentState: qitem.state, requestedState: input.state });
|
|
@@ -1451,16 +1557,19 @@ export class QueueRepository {
|
|
|
1451
1557
|
if (effectiveBlockedOn.startsWith("qitem-")) {
|
|
1452
1558
|
const blocker = this.getById(effectiveBlockedOn);
|
|
1453
1559
|
if (!blocker) {
|
|
1454
|
-
throw new QueueRepositoryError("blocker_not_found", `blocked_on names a qitem that does not exist: ${effectiveBlockedOn}. A park must name a real, live blocker — a nonexistent blocker can never complete, so the row could never unpark.`,
|
|
1560
|
+
throw new QueueRepositoryError("blocker_not_found", `blocked_on names a qitem that does not exist: ${effectiveBlockedOn}. A park must name a real, live blocker — a nonexistent blocker can never complete, so the row could never unpark.`,
|
|
1561
|
+
// F1 (error-honesty): the rejected value is named rejectedBlocker — an error payload
|
|
1562
|
+
// never carries the success-shaped blockedOn field (the field-filtered-misread class).
|
|
1563
|
+
{ rejectedBlocker: effectiveBlockedOn });
|
|
1455
1564
|
}
|
|
1456
1565
|
if (!isBlockerLive(blocker.state)) {
|
|
1457
|
-
throw new QueueRepositoryError("blocker_not_live", `blocked_on names a resolved qitem: ${effectiveBlockedOn} is '${blocker.state}'. A park must name a LIVE blocker — parking on a completed/closed row is a dead-blocker park that never self-clears.`, {
|
|
1566
|
+
throw new QueueRepositoryError("blocker_not_live", `blocked_on names a resolved qitem: ${effectiveBlockedOn} is '${blocker.state}'. A park must name a LIVE blocker — parking on a completed/closed row is a dead-blocker park that never self-clears.`, { rejectedBlocker: effectiveBlockedOn, blockerState: blocker.state });
|
|
1458
1567
|
}
|
|
1459
1568
|
}
|
|
1460
1569
|
else {
|
|
1461
1570
|
const typedPrefix = typedGateBlockerPrefix(effectiveBlockedOn);
|
|
1462
1571
|
if (typedPrefix && !isTypedGateBlocker(effectiveBlockedOn)) {
|
|
1463
|
-
throw new QueueRepositoryError("blocker_malformed", `blocked_on '${effectiveBlockedOn}' is a bare '${typedPrefix}' prefix with no gate body. A typed gate blocker must name its gate (e.g. fold:one-home+attestation).`, {
|
|
1572
|
+
throw new QueueRepositoryError("blocker_malformed", `blocked_on '${effectiveBlockedOn}' is a bare '${typedPrefix}' prefix with no gate body. A typed gate blocker must name its gate (e.g. fold:one-home+attestation).`, { rejectedBlocker: effectiveBlockedOn });
|
|
1464
1573
|
}
|
|
1465
1574
|
}
|
|
1466
1575
|
}
|
|
@@ -1480,6 +1589,37 @@ export class QueueRepository {
|
|
|
1480
1589
|
});
|
|
1481
1590
|
}
|
|
1482
1591
|
}
|
|
1592
|
+
let parkWake = null;
|
|
1593
|
+
const jobsRepo = this.watchdogJobsRepo ?? new WatchdogJobsRepository(this.db);
|
|
1594
|
+
if (input.wakeWatchdogId != null) {
|
|
1595
|
+
const job = jobsRepo.getById(input.wakeWatchdogId);
|
|
1596
|
+
if (!job || job.state !== "active") {
|
|
1597
|
+
throw new QueueRepositoryError("wake_watchdog_not_live", `watchdog ${input.wakeWatchdogId} is not an active job; attach a live watchdog or arm an atomic timer`, { wakeWatchdogId: input.wakeWatchdogId });
|
|
1598
|
+
}
|
|
1599
|
+
if (job.targetSession !== qitem.destinationSession) {
|
|
1600
|
+
throw new QueueRepositoryError("wake_watchdog_target_mismatch", `watchdog ${job.jobId} targets ${job.targetSession}, not parked owner ${qitem.destinationSession}`, { wakeWatchdogId: job.jobId, targetSession: job.targetSession, destinationSession: qitem.destinationSession });
|
|
1601
|
+
}
|
|
1602
|
+
parkWake = { kind: "watchdog", ref: job.jobId };
|
|
1603
|
+
}
|
|
1604
|
+
else if (input.wakeAfterSeconds != null) {
|
|
1605
|
+
const job = jobsRepo.register({
|
|
1606
|
+
policy: "periodic-reminder",
|
|
1607
|
+
specYaml: [
|
|
1608
|
+
"policy: periodic-reminder",
|
|
1609
|
+
"target:",
|
|
1610
|
+
` session: ${JSON.stringify(qitem.destinationSession)}`,
|
|
1611
|
+
`message: ${JSON.stringify(`Wake timer fired for parked qitem ${qitem.qitemId}. Resume the recorded continuation and update the row.`)}`,
|
|
1612
|
+
"",
|
|
1613
|
+
].join("\n"),
|
|
1614
|
+
targetSession: qitem.destinationSession,
|
|
1615
|
+
intervalSeconds: input.wakeAfterSeconds,
|
|
1616
|
+
registeredBySession: input.actorSession,
|
|
1617
|
+
});
|
|
1618
|
+
parkWake = { kind: "timer", ref: job.jobId };
|
|
1619
|
+
}
|
|
1620
|
+
else if (input.state === "blocked" && effectiveBlockedOn?.startsWith("qitem-")) {
|
|
1621
|
+
parkWake = { kind: "blocker", ref: effectiveBlockedOn };
|
|
1622
|
+
}
|
|
1483
1623
|
const ts = new Date().toISOString();
|
|
1484
1624
|
const fromState = qitem.state;
|
|
1485
1625
|
// 0.5.1-53 Atom 1b(i) — clear-on-exit. blocked_on is set EXPLICITLY, not COALESCE'd:
|
|
@@ -1505,7 +1645,7 @@ export class QueueRepository {
|
|
|
1505
1645
|
this.persistSummary(input.qitemId, input.summary ?? null);
|
|
1506
1646
|
this.persistEvidenceRef(input.qitemId, input.evidenceRef ?? null);
|
|
1507
1647
|
}
|
|
1508
|
-
this.transitionLog.append({
|
|
1648
|
+
const transition = this.transitionLog.append({
|
|
1509
1649
|
qitemId: input.qitemId,
|
|
1510
1650
|
state: input.state,
|
|
1511
1651
|
actorSession: input.actorSession,
|
|
@@ -1514,26 +1654,47 @@ export class QueueRepository {
|
|
|
1514
1654
|
closureTarget: validation.closureTarget ?? undefined,
|
|
1515
1655
|
identityProvenance: input.identityProvenance ?? null, // P21 §4 era-stamp
|
|
1516
1656
|
});
|
|
1657
|
+
if (parkWake) {
|
|
1658
|
+
this.wakeRepo.record({
|
|
1659
|
+
transitionId: transition.transitionId,
|
|
1660
|
+
qitemId: input.qitemId,
|
|
1661
|
+
phase: "armed",
|
|
1662
|
+
kind: parkWake.kind,
|
|
1663
|
+
ref: parkWake.ref,
|
|
1664
|
+
deliveryStatus: null,
|
|
1665
|
+
});
|
|
1666
|
+
}
|
|
1517
1667
|
// 0.5.1-53 Atom 1b(iii) — propagate-completion. blocked_on PROMISES "A waits until B completes";
|
|
1518
1668
|
// that promise never fired on this runtime (rows sat blocked on done/canceled blockers for days).
|
|
1519
1669
|
// When THIS qitem reaches a terminal state, auto-unpark every row parked on it (blocked_on = this,
|
|
1520
1670
|
// state='blocked') to pending, clear its (now-resolved) blocker, log the transition, and emit an
|
|
1521
1671
|
// event so watchers/sweeps see the unblock without a fetch.
|
|
1672
|
+
const dependentEvents = [];
|
|
1522
1673
|
if (!isBlockerLive(input.state)) {
|
|
1523
1674
|
const blockedRows = this.db
|
|
1524
|
-
.prepare("SELECT qitem_id FROM queue_items WHERE blocked_on = ? AND state = 'blocked'")
|
|
1675
|
+
.prepare("SELECT qitem_id, destination_session FROM queue_items WHERE blocked_on = ? AND state = 'blocked'")
|
|
1525
1676
|
.all(input.qitemId);
|
|
1526
1677
|
for (const r of blockedRows) {
|
|
1527
1678
|
this.db
|
|
1528
1679
|
.prepare("UPDATE queue_items SET state = 'pending', blocked_on = NULL, ts_updated = ? WHERE qitem_id = ?")
|
|
1529
1680
|
.run(ts, r.qitem_id);
|
|
1530
|
-
this.transitionLog.append({
|
|
1681
|
+
const resumeTransition = this.transitionLog.append({
|
|
1531
1682
|
qitemId: r.qitem_id,
|
|
1532
1683
|
state: "pending",
|
|
1533
1684
|
actorSession: input.actorSession,
|
|
1534
1685
|
transitionNote: `auto-unparked: blocker ${input.qitemId} reached terminal state '${input.state}'`,
|
|
1535
1686
|
});
|
|
1536
|
-
this.
|
|
1687
|
+
const wakeIntentId = this.stageAutoUnparkWakeIntent({
|
|
1688
|
+
qitemId: r.qitem_id,
|
|
1689
|
+
destinationSession: r.destination_session,
|
|
1690
|
+
fromSession: input.actorSession,
|
|
1691
|
+
identityProvenance: input.identityProvenance ?? null,
|
|
1692
|
+
blockerQitemId: input.qitemId,
|
|
1693
|
+
resumeTransitionId: resumeTransition.transitionId,
|
|
1694
|
+
});
|
|
1695
|
+
if (wakeIntentId)
|
|
1696
|
+
this.deliverWakeIntentAfterCommit(wakeIntentId);
|
|
1697
|
+
const dependentEvent = this.eventBus.persistWithinTransaction({
|
|
1537
1698
|
type: "queue.updated",
|
|
1538
1699
|
qitemId: r.qitem_id,
|
|
1539
1700
|
fromState: "blocked",
|
|
@@ -1541,11 +1702,13 @@ export class QueueRepository {
|
|
|
1541
1702
|
closureReason: null,
|
|
1542
1703
|
closureTarget: null,
|
|
1543
1704
|
actorSession: input.actorSession,
|
|
1544
|
-
summary: null,
|
|
1705
|
+
summary: this.getById(r.qitem_id)?.summary ?? null,
|
|
1545
1706
|
});
|
|
1707
|
+
this.eventBus.registerPersistedWithinActiveEnvelope(dependentEvent);
|
|
1708
|
+
dependentEvents.push(dependentEvent);
|
|
1546
1709
|
}
|
|
1547
1710
|
}
|
|
1548
|
-
|
|
1711
|
+
const persistedEvent = this.eventBus.persistWithinTransaction({
|
|
1549
1712
|
type: "queue.updated",
|
|
1550
1713
|
qitemId: input.qitemId,
|
|
1551
1714
|
fromState,
|
|
@@ -1557,6 +1720,52 @@ export class QueueRepository {
|
|
|
1557
1720
|
// (park-time summary included) so surfaces refresh without a fetch.
|
|
1558
1721
|
summary: effectiveSummary ?? null,
|
|
1559
1722
|
});
|
|
1723
|
+
return { persistedEvent, persistedEvents: [...dependentEvents, persistedEvent] };
|
|
1724
|
+
}
|
|
1725
|
+
getParkWakeStatus(qitemId) {
|
|
1726
|
+
return this.wakeRepo.getStatus(qitemId);
|
|
1727
|
+
}
|
|
1728
|
+
listTransitions(qitemId) {
|
|
1729
|
+
return this.transitionLog.listForQitem(qitemId).map((transition) => {
|
|
1730
|
+
const wake = this.wakeRepo.getForTransition(transition.transitionId);
|
|
1731
|
+
return wake ? { ...transition, wake } : transition;
|
|
1732
|
+
});
|
|
1733
|
+
}
|
|
1734
|
+
/** Called by the watchdog engine after the delivery attempt is durably
|
|
1735
|
+
* audited. The queue transition records that attempt independently of
|
|
1736
|
+
* whether the HELD row's owner consumed it. */
|
|
1737
|
+
recordWatchdogWakeAttempt(jobId, deliveryStatus) {
|
|
1738
|
+
const targets = this.wakeRepo.findBlockedQitemsByWatchdog(jobId);
|
|
1739
|
+
if (targets.length === 0)
|
|
1740
|
+
return;
|
|
1741
|
+
const events = this.db.transaction(() => targets.map(({ qitemId, kind }) => {
|
|
1742
|
+
const transition = this.transitionLog.append({
|
|
1743
|
+
qitemId,
|
|
1744
|
+
state: "blocked",
|
|
1745
|
+
actorSession: "watchdog@system",
|
|
1746
|
+
transitionNote: `park wake fired: watchdog ${jobId}; delivery=${deliveryStatus}; awaiting owner consumption`,
|
|
1747
|
+
});
|
|
1748
|
+
this.wakeRepo.record({
|
|
1749
|
+
transitionId: transition.transitionId,
|
|
1750
|
+
qitemId,
|
|
1751
|
+
phase: "fired",
|
|
1752
|
+
kind,
|
|
1753
|
+
ref: jobId,
|
|
1754
|
+
deliveryStatus,
|
|
1755
|
+
});
|
|
1756
|
+
return this.eventBus.persistWithinTransaction({
|
|
1757
|
+
type: "queue.updated",
|
|
1758
|
+
qitemId,
|
|
1759
|
+
fromState: "blocked",
|
|
1760
|
+
toState: "blocked",
|
|
1761
|
+
closureReason: null,
|
|
1762
|
+
closureTarget: null,
|
|
1763
|
+
actorSession: "watchdog@system",
|
|
1764
|
+
summary: this.getById(qitemId)?.summary ?? null,
|
|
1765
|
+
});
|
|
1766
|
+
}))();
|
|
1767
|
+
for (const event of events)
|
|
1768
|
+
this.eventBus.notifySubscribers(event);
|
|
1560
1769
|
}
|
|
1561
1770
|
getById(qitemId) {
|
|
1562
1771
|
const row = this.db
|
|
@@ -1881,8 +2090,31 @@ export class QueueRepository {
|
|
|
1881
2090
|
txn();
|
|
1882
2091
|
return rows.length;
|
|
1883
2092
|
}
|
|
2093
|
+
/** S04 — substantive post-claim motion: transitions strictly after the claim, excluding the
|
|
2094
|
+
* claim's own 'claimed' transition. Lazily prepared; indexed on qitem_id. */
|
|
2095
|
+
postClaimMotionStmt;
|
|
2096
|
+
postClaimMotionCount(qitemId, claimedAt) {
|
|
2097
|
+
this.postClaimMotionStmt ??= this.db.prepare("SELECT COUNT(*) AS n FROM queue_transitions WHERE qitem_id = ? AND ts > ? AND transition_note IS NOT 'claimed'");
|
|
2098
|
+
try {
|
|
2099
|
+
return this.postClaimMotionStmt.get(qitemId, claimedAt).n;
|
|
2100
|
+
}
|
|
2101
|
+
catch {
|
|
2102
|
+
return 0; // minimal fixture DBs without the transitions table: degrade, never throw
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
1884
2105
|
rowToItem(row) {
|
|
2106
|
+
// S04 — derive the pickup receipt at the ONE shared projection point (list/show/overdue
|
|
2107
|
+
// all flow through here), so the park-vs-strand question is answered by the row face.
|
|
2108
|
+
const pickup = derivePickup({
|
|
2109
|
+
state: row.state,
|
|
2110
|
+
claimedAt: row.claimed_at,
|
|
2111
|
+
lastHeartbeat: row.last_heartbeat,
|
|
2112
|
+
postClaimMotionCount: row.claimed_at && row.state !== "blocked"
|
|
2113
|
+
? this.postClaimMotionCount(row.qitem_id, row.claimed_at)
|
|
2114
|
+
: 0,
|
|
2115
|
+
});
|
|
1885
2116
|
return {
|
|
2117
|
+
pickup,
|
|
1886
2118
|
qitemId: row.qitem_id,
|
|
1887
2119
|
tsCreated: row.ts_created,
|
|
1888
2120
|
tsUpdated: row.ts_updated,
|