@openrig/cli 0.4.4 → 0.4.6
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/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +6 -8
- package/daemon/assets/plugins/openrig-core/skills/openrig-cmux/SKILL.md +86 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-herdr/SKILL.md +158 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +744 -96
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +12 -8
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/pi-resume.d.ts +32 -0
- package/daemon/dist/adapters/pi-resume.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-resume.js +125 -0
- package/daemon/dist/adapters/pi-resume.js.map +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts +88 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.js +153 -0
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -0
- package/daemon/dist/adapters/pi-runner.d.ts +99 -0
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runner.js +519 -0
- package/daemon/dist/adapters/pi-runner.js.map +1 -0
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts +61 -0
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runtime-adapter.js +356 -0
- package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -0
- package/daemon/dist/adapters/tmux.d.ts +22 -1
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +40 -1
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/builtins/workflow-specs/branched-remediation.yaml +31 -0
- package/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +152 -0
- package/daemon/dist/builtins/workflow-specs/gated-release.yaml +26 -0
- package/daemon/dist/builtins/workflow-specs/linear-build.yaml +21 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts +20 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts.map +1 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.js +24 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.js.map +1 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts +22 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts.map +1 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.js +26 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.js.map +1 -0
- package/daemon/dist/db/migrations/051_workflow_resume.d.ts +22 -0
- package/daemon/dist/db/migrations/051_workflow_resume.d.ts.map +1 -0
- package/daemon/dist/db/migrations/051_workflow_resume.js +27 -0
- package/daemon/dist/db/migrations/051_workflow_resume.js.map +1 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts +26 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts.map +1 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js +30 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js.map +1 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts +48 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts.map +1 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.js +53 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.js.map +1 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts +34 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts.map +1 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.js +49 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.js.map +1 -0
- package/daemon/dist/domain/claim-service.d.ts +11 -0
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +3 -1
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/discovery-types.d.ts +1 -1
- package/daemon/dist/domain/discovery-types.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.js +19 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts +11 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.js +54 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -0
- package/daemon/dist/domain/hosts/read-through.d.ts +28 -0
- package/daemon/dist/domain/hosts/read-through.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/read-through.js +139 -0
- package/daemon/dist/domain/hosts/read-through.js.map +1 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +21 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/remote-daemon-http.js +49 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +18 -0
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +206 -95
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/node-launcher.d.ts +11 -0
- package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/node-launcher.js +10 -0
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.js +93 -13
- package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +37 -26
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +105 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +193 -4
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-retention.d.ts +130 -0
- package/daemon/dist/domain/queue-retention.d.ts.map +1 -0
- package/daemon/dist/domain/queue-retention.js +224 -0
- package/daemon/dist/domain/queue-retention.js.map +1 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts +5 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +29 -2
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/resume-token-capture.d.ts +13 -0
- package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -1
- package/daemon/dist/domain/resume-token-capture.js +14 -1
- package/daemon/dist/domain/resume-token-capture.js.map +1 -1
- package/daemon/dist/domain/resume-token-validation.d.ts +1 -1
- package/daemon/dist/domain/resume-token-validation.d.ts.map +1 -1
- package/daemon/dist/domain/resume-token-validation.js +58 -10
- package/daemon/dist/domain/resume-token-validation.js.map +1 -1
- package/daemon/dist/domain/review/compose.d.ts +50 -1
- package/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/compose.js +92 -3
- package/daemon/dist/domain/review/compose.js.map +1 -1
- package/daemon/dist/domain/review/fleet-compose.d.ts +52 -0
- package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -0
- package/daemon/dist/domain/review/fleet-compose.js +294 -0
- package/daemon/dist/domain/review/fleet-compose.js.map +1 -0
- package/daemon/dist/domain/review/gather.d.ts +16 -1
- package/daemon/dist/domain/review/gather.d.ts.map +1 -1
- package/daemon/dist/domain/review/gather.js +177 -41
- package/daemon/dist/domain/review/gather.js.map +1 -1
- package/daemon/dist/domain/review/types.d.ts +104 -1
- package/daemon/dist/domain/review/types.d.ts.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.js +3 -0
- package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +7 -6
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +33 -11
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-codec.js +3 -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 +4 -0
- package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +11 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +6 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +26 -1
- 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 +20 -1
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/runtime-verifier.d.ts +7 -1
- package/daemon/dist/domain/runtime-verifier.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-verifier.js +39 -1
- package/daemon/dist/domain/runtime-verifier.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +9 -0
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +2 -0
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/seat-identity-store.d.ts +7 -0
- package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
- package/daemon/dist/domain/seat-identity-store.js +27 -0
- package/daemon/dist/domain/seat-identity-store.js.map +1 -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/session-name.d.ts +22 -0
- package/daemon/dist/domain/session-name.d.ts.map +1 -1
- package/daemon/dist/domain/session-name.js +29 -0
- package/daemon/dist/domain/session-name.js.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js +4 -5
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +18 -2
- package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.js +23 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -1
- package/daemon/dist/domain/startup-proof.d.ts +10 -6
- package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
- package/daemon/dist/domain/startup-proof.js +35 -7
- package/daemon/dist/domain/startup-proof.js.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.d.ts +16 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +13 -0
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +27 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js +67 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +77 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/herdr-adapter.js +266 -0
- package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -0
- package/daemon/dist/domain/terminal/herdr-transport.d.ts +50 -0
- package/daemon/dist/domain/terminal/herdr-transport.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/herdr-transport.js +145 -0
- package/daemon/dist/domain/terminal/herdr-transport.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts +88 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-provider.js +17 -0
- package/daemon/dist/domain/terminal/terminal-provider.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts +60 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-service.js +174 -0
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-views-store.d.ts +77 -0
- package/daemon/dist/domain/terminal/terminal-views-store.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-views-store.js +146 -0
- package/daemon/dist/domain/terminal/terminal-views-store.js.map +1 -0
- package/daemon/dist/domain/terminal/view-composer.d.ts +42 -0
- package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/view-composer.js +137 -0
- package/daemon/dist/domain/terminal/view-composer.js.map +1 -0
- package/daemon/dist/domain/tmux-option-defaults.d.ts +89 -0
- package/daemon/dist/domain/tmux-option-defaults.d.ts.map +1 -0
- package/daemon/dist/domain/tmux-option-defaults.js +132 -0
- package/daemon/dist/domain/tmux-option-defaults.js.map +1 -0
- package/daemon/dist/domain/types.d.ts +34 -1
- 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 +92 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -1
- package/daemon/dist/domain/workflow/slice-workflow-projection.js +6 -2
- package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -1
- package/daemon/dist/domain/workflow-boot-sweep.d.ts +28 -0
- package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-boot-sweep.js +102 -0
- package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -0
- package/daemon/dist/domain/workflow-deadline.d.ts +74 -0
- package/daemon/dist/domain/workflow-deadline.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-deadline.js +165 -0
- package/daemon/dist/domain/workflow-deadline.js.map +1 -0
- package/daemon/dist/domain/workflow-exception-escalation.d.ts +33 -0
- package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception-escalation.js +104 -0
- package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -0
- package/daemon/dist/domain/workflow-exception-router.d.ts +33 -0
- package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception-router.js +96 -0
- package/daemon/dist/domain/workflow-exception-router.js.map +1 -0
- package/daemon/dist/domain/workflow-exception.d.ts +90 -0
- package/daemon/dist/domain/workflow-exception.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception.js +122 -0
- package/daemon/dist/domain/workflow-exception.js.map +1 -0
- package/daemon/dist/domain/workflow-frontier-guard.d.ts +24 -0
- package/daemon/dist/domain/workflow-frontier-guard.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-frontier-guard.js +30 -0
- package/daemon/dist/domain/workflow-frontier-guard.js.map +1 -0
- package/daemon/dist/domain/workflow-instance-store.d.ts +28 -0
- package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-instance-store.js +66 -10
- package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
- package/daemon/dist/domain/workflow-keepalive-arming.d.ts +35 -0
- package/daemon/dist/domain/workflow-keepalive-arming.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-keepalive-arming.js +87 -0
- package/daemon/dist/domain/workflow-keepalive-arming.js.map +1 -0
- package/daemon/dist/domain/workflow-projector.d.ts +117 -2
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +672 -41
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-role-context.d.ts +57 -0
- package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-role-context.js +120 -0
- package/daemon/dist/domain/workflow-role-context.js.map +1 -0
- package/daemon/dist/domain/workflow-role-resolver.d.ts +65 -0
- package/daemon/dist/domain/workflow-role-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-role-resolver.js +108 -0
- package/daemon/dist/domain/workflow-role-resolver.js.map +1 -0
- package/daemon/dist/domain/workflow-runtime.d.ts +157 -1
- package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +718 -11
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts +26 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.js +327 -13
- package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
- package/daemon/dist/domain/workflow-types.d.ts +143 -8
- package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-types.js +14 -1
- package/daemon/dist/domain/workflow-types.js.map +1 -1
- package/daemon/dist/domain/workflow-validator.d.ts +11 -1
- package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-validator.js +246 -1
- package/daemon/dist/domain/workflow-validator.js.map +1 -1
- package/daemon/dist/index.d.ts +17 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +44 -0
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/routes/activity.js +22 -0
- package/daemon/dist/routes/activity.js.map +1 -1
- package/daemon/dist/routes/hosts.d.ts +5 -0
- package/daemon/dist/routes/hosts.d.ts.map +1 -0
- package/daemon/dist/routes/hosts.js +346 -0
- package/daemon/dist/routes/hosts.js.map +1 -0
- package/daemon/dist/routes/queue.d.ts +2 -7
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +264 -9
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/review.d.ts.map +1 -1
- package/daemon/dist/routes/review.js +26 -0
- package/daemon/dist/routes/review.js.map +1 -1
- package/daemon/dist/routes/seat.js +13 -0
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/terminal.d.ts +11 -0
- package/daemon/dist/routes/terminal.d.ts.map +1 -0
- package/daemon/dist/routes/terminal.js +104 -0
- package/daemon/dist/routes/terminal.js.map +1 -0
- package/daemon/dist/routes/workflow.d.ts.map +1 -1
- package/daemon/dist/routes/workflow.js +102 -10
- package/daemon/dist/routes/workflow.js.map +1 -1
- package/daemon/dist/server.d.ts +5 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +22 -0
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +221 -12
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +29 -0
- package/daemon/specs/agents/factory-rsi/dogfood/guidance/role.md +37 -0
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +29 -0
- package/daemon/specs/agents/factory-rsi/release-manager/guidance/role.md +40 -0
- package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +6 -8
- package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +86 -0
- package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +158 -0
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +6 -6
- package/daemon/specs/rigs/launch/factory-rsi/CULTURE.md +47 -0
- package/daemon/specs/rigs/launch/factory-rsi/rig.yaml +115 -0
- package/dist/build-info.js +3 -3
- package/dist/commands/broadcast.d.ts +6 -1
- package/dist/commands/broadcast.d.ts.map +1 -1
- package/dist/commands/broadcast.js +101 -15
- package/dist/commands/broadcast.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +99 -8
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +4 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +5 -0
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/host.d.ts +14 -0
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +338 -14
- package/dist/commands/host.js.map +1 -1
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +5 -0
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +10 -4
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +36 -0
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +73 -7
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/restore-packet.d.ts.map +1 -1
- package/dist/commands/restore-packet.js +13 -2
- package/dist/commands/restore-packet.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +114 -9
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/terminal.d.ts +6 -0
- package/dist/commands/terminal.d.ts.map +1 -0
- package/dist/commands/terminal.js +116 -0
- package/dist/commands/terminal.js.map +1 -0
- package/dist/commands/transcript.d.ts +6 -1
- package/dist/commands/transcript.d.ts.map +1 -1
- package/dist/commands/transcript.js +113 -30
- package/dist/commands/transcript.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +9 -0
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +11 -0
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/workflow-errors.d.ts +23 -0
- package/dist/commands/workflow-errors.d.ts.map +1 -0
- package/dist/commands/workflow-errors.js +100 -0
- package/dist/commands/workflow-errors.js.map +1 -0
- package/dist/commands/workflow-follow.d.ts +71 -0
- package/dist/commands/workflow-follow.d.ts.map +1 -0
- package/dist/commands/workflow-follow.js +259 -0
- package/dist/commands/workflow-follow.js.map +1 -0
- package/dist/commands/workflow-render.d.ts +114 -0
- package/dist/commands/workflow-render.d.ts.map +1 -0
- package/dist/commands/workflow-render.js +223 -0
- package/dist/commands/workflow-render.js.map +1 -0
- package/dist/commands/workflow.d.ts +1 -0
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +278 -14
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.d.ts +15 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +103 -0
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-cli-helpers.d.ts +13 -0
- package/dist/cross-host-cli-helpers.d.ts.map +1 -1
- package/dist/cross-host-cli-helpers.js +27 -0
- package/dist/cross-host-cli-helpers.js.map +1 -1
- package/dist/cross-host-target.d.ts +49 -0
- package/dist/cross-host-target.d.ts.map +1 -0
- package/dist/cross-host-target.js +35 -0
- package/dist/cross-host-target.js.map +1 -0
- package/dist/host-registry.d.ts +8 -0
- package/dist/host-registry.d.ts.map +1 -1
- package/dist/host-registry.js +32 -0
- package/dist/host-registry.js.map +1 -1
- package/dist/host-selection.d.ts +13 -0
- package/dist/host-selection.d.ts.map +1 -0
- package/dist/host-selection.js +54 -0
- package/dist/host-selection.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/remote-host-ops.d.ts +1 -0
- package/dist/remote-host-ops.d.ts.map +1 -1
- package/dist/remote-host-ops.js +11 -4
- package/dist/remote-host-ops.js.map +1 -1
- package/dist/session-name.d.ts +23 -0
- package/dist/session-name.d.ts.map +1 -0
- package/dist/session-name.js +61 -0
- package/dist/session-name.js.map +1 -0
- package/package.json +1 -1
- package/ui/dist/assets/index-CFqxa0zW.css +32 -0
- package/ui/dist/assets/index-zrFqS7gL.js +623 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/index-D69ZhNIr.js +0 -598
- package/ui/dist/assets/index-DJYun-8d.css +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-launcher.d.ts","sourceRoot":"","sources":["../../src/domain/node-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"node-launcher.d.ts","sourceRoot":"","sources":["../../src/domain/node-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1F;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,UAAU,gBAAgB;IACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD;;yCAEqC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CAChD;AAED,qBAAa,YAAY;IACvB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,2BAA2B,CAAS;IAC5C,OAAO,CAAC,kBAAkB,CAAmC;gBAEjD,IAAI,EAAE,gBAAgB;IAwB5B,UAAU,CACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,YAAY,CAAC;CAsHzB"}
|
|
@@ -9,6 +9,7 @@ export class NodeLauncher {
|
|
|
9
9
|
transcriptStore;
|
|
10
10
|
sessionEnv;
|
|
11
11
|
defaultSilenceWindowSeconds;
|
|
12
|
+
tmuxOptionDefaults;
|
|
12
13
|
constructor(deps) {
|
|
13
14
|
// Hard runtime invariant: all domain services must share the same db handle.
|
|
14
15
|
// Without this, db.transaction() in launchNode cannot span all writes atomically.
|
|
@@ -29,6 +30,7 @@ export class NodeLauncher {
|
|
|
29
30
|
this.transcriptStore = deps.transcriptStore ?? null;
|
|
30
31
|
this.sessionEnv = compactEnv(deps.sessionEnv ?? {});
|
|
31
32
|
this.defaultSilenceWindowSeconds = deps.defaultSilenceWindowSeconds ?? 3;
|
|
33
|
+
this.tmuxOptionDefaults = deps.tmuxOptionDefaults ?? null;
|
|
32
34
|
}
|
|
33
35
|
async launchNode(rigId, logicalId, opts) {
|
|
34
36
|
// 1. Validate node exists and is unbound
|
|
@@ -69,6 +71,14 @@ export class NodeLauncher {
|
|
|
69
71
|
return { ok: false, code: tmuxResult.code, message: tmuxResult.message };
|
|
70
72
|
}
|
|
71
73
|
const launchWarnings = [];
|
|
74
|
+
// 3a2. OPR.0.4.6.02 S1 — apply the daemon's tmux option defaults to the
|
|
75
|
+
// JUST-CREATED session via the shared applier (mouse/status session-scope
|
|
76
|
+
// + set-clipboard/copy-command server-scope). Touches only this new
|
|
77
|
+
// session, never an existing one (BR-1 never-retro). Option-set failures
|
|
78
|
+
// come back as non-fatal launch warnings.
|
|
79
|
+
if (this.tmuxOptionDefaults) {
|
|
80
|
+
launchWarnings.push(...(await this.tmuxOptionDefaults.applyToFreshSession(sessionName)));
|
|
81
|
+
}
|
|
72
82
|
// 3b. Start transcript rotation (V1 pre-release CLI/daemon Item 1:
|
|
73
83
|
// bounded capture-pane overwrite replaces the unbounded pipe-pane
|
|
74
84
|
// mechanism). Failures inside individual rotation ticks are silent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-launcher.js","sourceRoot":"","sources":["../../src/domain/node-launcher.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EACL,uBAAuB,EACvB,mCAAmC,GACpC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"node-launcher.js","sourceRoot":"","sources":["../../src/domain/node-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,13 @@ import type Database from "better-sqlite3";
|
|
|
2
2
|
import type { Policy } from "./types.js";
|
|
3
3
|
export interface WorkflowKeepaliveDeps {
|
|
4
4
|
db: Database.Database;
|
|
5
|
+
/** OPR.0.4.6.WF5 FR-2 class (b): when supplied, a non-healthy deadline
|
|
6
|
+
* verdict ENSURES the durable exception item at detection time as a
|
|
7
|
+
* side effect of this evaluation. The PolicyEvaluation SHAPE is
|
|
8
|
+
* untouched (send|skip|terminal stands — X5); the item is the
|
|
9
|
+
* injected helper's concern, dedup by occurrence. Failures are
|
|
10
|
+
* non-fatal to the evaluation. */
|
|
11
|
+
ensureStuckExceptionItem?: import("../workflow-exception-escalation.js").EnsureStuckExceptionItem;
|
|
5
12
|
}
|
|
6
13
|
export declare function makeWorkflowKeepalivePolicy(deps: WorkflowKeepaliveDeps): Policy;
|
|
7
14
|
//# sourceMappingURL=workflow-keepalive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-keepalive.d.ts","sourceRoot":"","sources":["../../../src/domain/policies/workflow-keepalive.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAA+B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-keepalive.d.ts","sourceRoot":"","sources":["../../../src/domain/policies/workflow-keepalive.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAA+B,MAAM,YAAY,CAAC;AAyCtE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB;;;;;uCAKmC;IACnC,wBAAwB,CAAC,EAAE,OAAO,qCAAqC,EAAE,wBAAwB,CAAC;CACnG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAwK/E"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
// additional resolved owners listed in the message for routing.
|
|
24
24
|
// POC's send_many is deferred (Phase C engine's PolicyEvaluation
|
|
25
25
|
// contract is single-target).
|
|
26
|
+
import { evaluateStepDeadline, } from "../workflow-deadline.js";
|
|
26
27
|
export function makeWorkflowKeepalivePolicy(deps) {
|
|
27
28
|
const { db } = deps;
|
|
28
29
|
return {
|
|
@@ -40,7 +41,7 @@ export function makeWorkflowKeepalivePolicy(deps) {
|
|
|
40
41
|
// Audit-row-18 critical assertion: read from SQLite only.
|
|
41
42
|
const instance = db
|
|
42
43
|
.prepare(`SELECT instance_id, workflow_name, workflow_version, created_by_session,
|
|
43
|
-
status, current_frontier_json
|
|
44
|
+
status, current_frontier_json, current_step_id
|
|
44
45
|
FROM workflow_instances WHERE instance_id = ?`)
|
|
45
46
|
.get(instanceId);
|
|
46
47
|
if (!instance) {
|
|
@@ -59,16 +60,40 @@ export function makeWorkflowKeepalivePolicy(deps) {
|
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
const frontier = JSON.parse(instance.current_frontier_json) ?? [];
|
|
62
|
-
// Resolve frontier qitem owners from queue_items.
|
|
63
|
+
// Resolve frontier qitem owners (+ FR-2 anchor fields) from queue_items.
|
|
63
64
|
const resolvedFrontierOwners = [];
|
|
65
|
+
let frontierRows = [];
|
|
64
66
|
if (frontier.length > 0) {
|
|
65
67
|
const placeholders = frontier.map(() => "?").join(",");
|
|
66
|
-
|
|
67
|
-
.prepare(`SELECT qitem_id, destination_session
|
|
68
|
+
frontierRows = db
|
|
69
|
+
.prepare(`SELECT qitem_id, destination_session, state, ts_created, claimed_at, closure_required_at
|
|
70
|
+
FROM queue_items WHERE qitem_id IN (${placeholders})`)
|
|
68
71
|
.all(...frontier);
|
|
69
|
-
for (const r of
|
|
72
|
+
for (const r of frontierRows)
|
|
70
73
|
resolvedFrontierOwners.push(r.destination_session);
|
|
71
74
|
}
|
|
75
|
+
// OPR.0.4.6.WF1 FR-2+FR-3: evaluate the step deadline (derived,
|
|
76
|
+
// never stored). Deadline-gated (auto-armed) jobs stay quiet
|
|
77
|
+
// while healthy; ANY job's send message carries the stuck
|
|
78
|
+
// evidence + re-project steering when overdue.
|
|
79
|
+
const verdict = evaluateStepDeadline({
|
|
80
|
+
instanceId: instance.instance_id,
|
|
81
|
+
status: instance.status,
|
|
82
|
+
currentFrontier: frontier,
|
|
83
|
+
currentStepId: instance.current_step_id,
|
|
84
|
+
}, frontierRows.map((r) => ({
|
|
85
|
+
qitemId: r.qitem_id,
|
|
86
|
+
state: r.state,
|
|
87
|
+
destinationSession: r.destination_session,
|
|
88
|
+
tsCreated: r.ts_created,
|
|
89
|
+
claimedAt: r.claimed_at,
|
|
90
|
+
closureRequiredAt: r.closure_required_at,
|
|
91
|
+
})), new Date());
|
|
92
|
+
if (context.deadline_gated === true && verdict.state === "healthy") {
|
|
93
|
+
// Quiet skip — not recorded in watchdog history (POC parity for
|
|
94
|
+
// quiet reasons); zero noise on the happy path.
|
|
95
|
+
return { action: "skip", reason: "workflow_healthy_deadline_gated" };
|
|
96
|
+
}
|
|
72
97
|
// Combine with explicit additional targets.
|
|
73
98
|
const additionalTargets = [
|
|
74
99
|
instance.created_by_session,
|
|
@@ -81,16 +106,55 @@ export function makeWorkflowKeepalivePolicy(deps) {
|
|
|
81
106
|
// POC line 113-118: skip with empty_frontier when nothing resolves.
|
|
82
107
|
return { action: "skip", reason: "empty_frontier" };
|
|
83
108
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
109
|
+
// Deadline-gated (auto-armed) jobs past the deadline steer the
|
|
110
|
+
// nudge at the OVERDUE packet's owner with the stuck evidence —
|
|
111
|
+
// a restored or replacement agent reads the steering and
|
|
112
|
+
// re-projects; the stuck marker self-clears on recomposition
|
|
113
|
+
// (FR-2 AC). Operator-registered jobs (no flag) keep the shipped
|
|
114
|
+
// POC message + first-resolved-target parity EXACTLY, even when
|
|
115
|
+
// a packet is overdue — their contract predates the deadline
|
|
116
|
+
// model and is pinned by the shipped policy tests.
|
|
117
|
+
const stuck = context.deadline_gated === true && verdict.state !== "healthy" && verdict.evidence
|
|
118
|
+
? verdict.evidence
|
|
119
|
+
: null;
|
|
120
|
+
// OPR.0.4.6.WF5 FR-2 class (b): detection-time exception item —
|
|
121
|
+
// fires on ANY non-healthy verdict (gated or operator-registered
|
|
122
|
+
// jobs; the operator-job MESSAGE contract below stays pinned and
|
|
123
|
+
// untouched). Dedup by occurrence keeps this idempotent across
|
|
124
|
+
// every keepalive cadence tick.
|
|
125
|
+
if (deps.ensureStuckExceptionItem && verdict.state !== "healthy" && verdict.evidence) {
|
|
126
|
+
try {
|
|
127
|
+
await deps.ensureStuckExceptionItem({
|
|
128
|
+
workflowName: instance.workflow_name,
|
|
129
|
+
workflowVersion: instance.workflow_version,
|
|
130
|
+
createdBySession: instance.created_by_session,
|
|
131
|
+
verdict,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// Non-fatal: the nudge below still fires; the sweep/next tick
|
|
136
|
+
// re-detects (the crash-surviving guarantee).
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const primary = stuck ? stuck.ownerSession : allSessions[0];
|
|
140
|
+
const others = stuck
|
|
141
|
+
? allSessions.filter((s) => s !== primary)
|
|
142
|
+
: allSessions.slice(1);
|
|
143
|
+
const message = stuck
|
|
144
|
+
? buildStuckNudgeMessage({
|
|
88
145
|
workflowName: instance.workflow_name,
|
|
89
146
|
workflowVersion: instance.workflow_version,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
147
|
+
verdictState: verdict.state,
|
|
148
|
+
evidence: stuck,
|
|
149
|
+
})
|
|
150
|
+
: (job.message ??
|
|
151
|
+
buildKeepaliveMessage({
|
|
152
|
+
workflowName: instance.workflow_name,
|
|
153
|
+
workflowVersion: instance.workflow_version,
|
|
154
|
+
instanceId: instance.instance_id,
|
|
155
|
+
status: instance.status,
|
|
156
|
+
allSessions,
|
|
157
|
+
}));
|
|
94
158
|
return {
|
|
95
159
|
action: "send",
|
|
96
160
|
target: { session: primary },
|
|
@@ -101,6 +165,7 @@ export function makeWorkflowKeepalivePolicy(deps) {
|
|
|
101
165
|
workflowStatus: instance.status,
|
|
102
166
|
frontierLength: frontier.length,
|
|
103
167
|
additionalRoutingTargets: others,
|
|
168
|
+
...(stuck ? { deadline: { state: verdict.state, ...stuck } } : {}),
|
|
104
169
|
},
|
|
105
170
|
};
|
|
106
171
|
},
|
|
@@ -110,6 +175,21 @@ const POC_KEEPALIVE_TRAILER = "Continue the current step. If the run has ended,
|
|
|
110
175
|
"If you think you need approval, first ask whether there is real product ambiguity or only approval theater. " +
|
|
111
176
|
"Keep communications bridged, name exact blockers, and self-scout deterministic bias: " +
|
|
112
177
|
"add only the minimum deterministic code required for reliable agent operation, then rely on agent judgment for routing, adaptation, and edge handling.";
|
|
178
|
+
/**
|
|
179
|
+
* OPR.0.4.6.WF1 FR-2: the overdue re-nudge. Written for a RESTORED or
|
|
180
|
+
* REPLACEMENT agent with no conversational memory of the step: it names
|
|
181
|
+
* the instance, the step, the packet, the anchor evidence, and the
|
|
182
|
+
* exact re-project move.
|
|
183
|
+
*/
|
|
184
|
+
function buildStuckNudgeMessage(input) {
|
|
185
|
+
const e = input.evidence;
|
|
186
|
+
return [
|
|
187
|
+
`Workflow STUCK (${input.verdictState}): ${input.workflowName}@${input.workflowVersion} instance ${e.instanceId} step ${e.stepId ?? "(unknown)"} is overdue by ${Math.floor(e.overdueBySeconds / 60)}m (anchor: ${e.anchor} @ ${e.anchorAt}; packet age ${Math.floor(e.ageSeconds / 60)}m).`,
|
|
188
|
+
`You own frontier packet ${e.packetId}. If you lost context: run 'rig whoami --json', read the packet with 'rig queue show ${e.packetId}', do (or verify) the step's work, then close it truthfully via 'rig workflow project --instance ${e.instanceId} --current-packet ${e.packetId} --exit <handoff|waiting|done|failed> --actor-session ${e.ownerSession}'.`,
|
|
189
|
+
"Projecting normally clears the stuck state automatically - do not hand-edit any workflow state.",
|
|
190
|
+
POC_KEEPALIVE_TRAILER,
|
|
191
|
+
].join("\n");
|
|
192
|
+
}
|
|
113
193
|
function buildKeepaliveMessage(input) {
|
|
114
194
|
const lines = [
|
|
115
195
|
`Workflow keepalive: ${input.workflowName}@${input.workflowVersion} / ${input.instanceId} is still live (status: ${input.status}).`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-keepalive.js","sourceRoot":"","sources":["../../../src/domain/policies/workflow-keepalive.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,gEAAgE;AAChE,iDAAiD;AACjD,EAAE;AACF,6DAA6D;AAC7D,gEAAgE;AAChE,+DAA+D;AAC/D,EAAE;AACF,qEAAqE;AACrE,kCAAkC;AAClC,gEAAgE;AAChE,qEAAqE;AACrE,+DAA+D;AAC/D,4CAA4C;AAC5C,8EAA8E;AAC9E,mEAAmE;AACnE,sDAAsD;AACtD,sCAAsC;AACtC,sCAAsC;AACtC,mCAAmC;AACnC,iEAAiE;AACjE,gEAAgE;AAChE,oEAAoE;AACpE,qEAAqE;AACrE,kCAAkC;
|
|
1
|
+
{"version":3,"file":"workflow-keepalive.js","sourceRoot":"","sources":["../../../src/domain/policies/workflow-keepalive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps-projection.d.ts","sourceRoot":"","sources":["../../src/domain/ps-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3G,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C;+DAC2D;IAC3D,cAAc,EAAE,iBAAiB,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iFAAiF;IACjF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uEAAuE;IACvE,UAAU,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,sBAAsB,EAAE,OAAO,CAAC;IAChC,2EAA2E;IAC3E,+BAA+B,EAAE,MAAM,CAAC;IACxC,mEAAmE;IACnE,yBAAyB,EAAE,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAOrG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,CAa3F;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D;;6DAEyD;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,+BAA+B,CAAK;gBAEhC,IAAI,EAAE;QAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;QAAC,aAAa,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAMnH,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAKxE,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"ps-projection.d.ts","sourceRoot":"","sources":["../../src/domain/ps-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3G,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C;+DAC2D;IAC3D,cAAc,EAAE,iBAAiB,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iFAAiF;IACjF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uEAAuE;IACvE,UAAU,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,sBAAsB,EAAE,OAAO,CAAC;IAChC,2EAA2E;IAC3E,+BAA+B,EAAE,MAAM,CAAC;IACxC,mEAAmE;IACnE,yBAAyB,EAAE,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAOrG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,CAa3F;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D;;6DAEyD;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,+BAA+B,CAAK;gBAEhC,IAAI,EAAE;QAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;QAAC,aAAa,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAMnH,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAKxE,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,EAAE;CAuIjD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAMtG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getNodeInventoryForAllRigs, readPendingWorkBySession } from "./node-inventory.js";
|
|
2
2
|
import { archiveWhereClause } from "./rig-repository.js";
|
|
3
3
|
/**
|
|
4
4
|
* OPR.0.4.4.21 — THE rig-rollup attention predicate (one predicate, one
|
|
@@ -99,14 +99,23 @@ export class PsProjectionService {
|
|
|
99
99
|
ORDER BY r.name
|
|
100
100
|
`).all();
|
|
101
101
|
const now = Date.now();
|
|
102
|
+
// FS-1 W1.2 (rig-level N+1 collapse): the pending-work map is host-global and
|
|
103
|
+
// bounded by distinct destination sessions (seat count), so read it ONCE here
|
|
104
|
+
// instead of one countNodesWithPendingWork query per rig. Per-rig hasWorkCount
|
|
105
|
+
// is then a pure JS derivation over the already-fetched inventory below.
|
|
106
|
+
const pendingByDest = readPendingWorkBySession(this.db);
|
|
107
|
+
// FS-1 W1.2: node inventory for ALL rigs built in ONE batched pass (was one
|
|
108
|
+
// getNodeInventory query-set PER RIG — the rig-level N+1); indexed per rig below.
|
|
109
|
+
const inventoryByRig = getNodeInventoryForAllRigs(this.db);
|
|
102
110
|
return rows.map((r) => {
|
|
103
111
|
const status = r.node_count === 0 ? "stopped"
|
|
104
112
|
: r.running_count === r.node_count ? "running"
|
|
105
113
|
: r.running_count > 0 ? "partial"
|
|
106
114
|
: "stopped";
|
|
107
|
-
// Derive rig-level lifecycleState by folding per-node states.
|
|
108
|
-
//
|
|
109
|
-
|
|
115
|
+
// Derive rig-level lifecycleState by folding per-node states. FS-1 W1.2:
|
|
116
|
+
// inventory for ALL rigs was built in ONE batched pass above (previously one
|
|
117
|
+
// getNodeInventory query-set per rig — the rig-level N+1); index it here.
|
|
118
|
+
const inventory = inventoryByRig.get(r.rig_id) ?? [];
|
|
110
119
|
const lifecycleState = deriveRigLifecycleState(inventory.map((e) => e.lifecycleState));
|
|
111
120
|
// Slice 15 — `terminal-active` count. Subset of running tmux-bound
|
|
112
121
|
// seats whose latest SeatActivity observation says
|
|
@@ -128,7 +137,30 @@ export class PsProjectionService {
|
|
|
128
137
|
// least one pending qitem whose `destination_session` matches the
|
|
129
138
|
// node's `canonicalSessionName`. Sourced ONLY from the queue
|
|
130
139
|
// projection; never from tmux output.
|
|
131
|
-
|
|
140
|
+
// FS-1 W1.2: derived in JS from the single global `pendingByDest` map,
|
|
141
|
+
// byte-identical to the deleted per-rig `countNodesWithPendingWork` query.
|
|
142
|
+
// That query matched `q.destination_session = s.session_name` (SINGLE-KEY)
|
|
143
|
+
// where `s` is the node's latest session; `canonicalSessionName` IS that
|
|
144
|
+
// latest `session_name` (node-inventory.ts return), and the map is
|
|
145
|
+
// `destination_session -> pending count`, so `> 0` reproduces its `EXISTS`.
|
|
146
|
+
// NAMED DIVERGENCE (arch pin, FS-1): this derivation DELIBERATELY keeps the
|
|
147
|
+
// legacy rollup's SINGLE-KEY match (canonicalSessionName == the latest
|
|
148
|
+
// session_name) and does NOT use the per-node DUAL-KEY sibling
|
|
149
|
+
// `countPendingForEntry` (node-inventory.ts) — the canonical + derived
|
|
150
|
+
// `{pod}-{member}@{rig}` match that is the BLOCKING-A2 adopted-seat fix.
|
|
151
|
+
// The rollup and the per-node enrichment already diverged here BEFORE FS-1;
|
|
152
|
+
// FS-1 is a perf slice whose proof spine is byte-identity, so it preserves
|
|
153
|
+
// the rollup's exact prior semantics on purpose — this is preserved, not a
|
|
154
|
+
// bug. KNOWN CONSEQUENCE: the rollup undercounts pending work for adopted
|
|
155
|
+
// seats. The future correctness fix now sits ONE LINE away — swap this loop
|
|
156
|
+
// for the shared dual-key `countPendingForEntry` derivation + update the
|
|
157
|
+
// byte-identity harness. Arch-routed to pm as a named small correctness
|
|
158
|
+
// candidate (a glance-layer undercount).
|
|
159
|
+
let hasWorkCount = 0;
|
|
160
|
+
for (const node of inventory) {
|
|
161
|
+
if (node.canonicalSessionName && (pendingByDest.get(node.canonicalSessionName) ?? 0) > 0)
|
|
162
|
+
hasWorkCount++;
|
|
163
|
+
}
|
|
132
164
|
// OPR.0.4.4.21 — attention fold, same inventory pass. Hook activity
|
|
133
165
|
// is a synchronous events lookup by session name (NodeInventoryEntry
|
|
134
166
|
// carries canonicalSessionName, not nodeId); `now` makes staleness
|
|
@@ -164,27 +196,6 @@ export class PsProjectionService {
|
|
|
164
196
|
});
|
|
165
197
|
}
|
|
166
198
|
}
|
|
167
|
-
/**
|
|
168
|
-
* Slice 15 — count nodes in this rig that have at least one pending
|
|
169
|
-
* qitem assigned to them (queue.destination_session matches a node's
|
|
170
|
-
* latest session_name). Pure SQL query — does NOT consult tmux output
|
|
171
|
-
* or SeatActivity (non-inference contract).
|
|
172
|
-
*/
|
|
173
|
-
function countNodesWithPendingWork(db, rigId) {
|
|
174
|
-
const row = db.prepare(`
|
|
175
|
-
SELECT COUNT(DISTINCT n.id) as c
|
|
176
|
-
FROM nodes n
|
|
177
|
-
JOIN sessions s ON s.node_id = n.id
|
|
178
|
-
AND s.id = (SELECT s2.id FROM sessions s2 WHERE s2.node_id = n.id ORDER BY s2.id DESC LIMIT 1)
|
|
179
|
-
WHERE n.rig_id = ?
|
|
180
|
-
AND EXISTS (
|
|
181
|
-
SELECT 1 FROM queue_items q
|
|
182
|
-
WHERE q.destination_session = s.session_name
|
|
183
|
-
AND q.state = 'pending'
|
|
184
|
-
)
|
|
185
|
-
`).get(rigId);
|
|
186
|
-
return row?.c ?? 0;
|
|
187
|
-
}
|
|
188
199
|
/**
|
|
189
200
|
* Slice 15 — count of pending qitems assigned to a specific canonical
|
|
190
201
|
* session name. Exposed for per-node enrichment in node-inventory.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps-projection.js","sourceRoot":"","sources":["../../src/domain/ps-projection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ps-projection.js","sourceRoot":"","sources":["../../src/domain/ps-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,15 @@ import { QueueTransitionLog } from "./queue-transition-log.js";
|
|
|
5
5
|
import { type ClosureReason } from "./hot-potato-enforcer.js";
|
|
6
6
|
export declare const QUEUE_STATES: readonly ["pending", "in-progress", "done", "blocked", "failed", "denied", "canceled", "handed-off"];
|
|
7
7
|
export type QueueState = (typeof QUEUE_STATES)[number];
|
|
8
|
+
/** OPR.0.4.6.FS-1 (W2 P1): the queue's terminal state set, named ONCE. The
|
|
9
|
+
* archiver (queue-retention.ts) AND the inline closure guards below all consume
|
|
10
|
+
* THIS predicate, so a future terminal-state addition can never silently
|
|
11
|
+
* diverge the archiver from the queue (arch D3-REFINEMENT P1; widen-never-sibling).
|
|
12
|
+
* `['done','handed-off']` is the full terminal set — workflow step closures exit
|
|
13
|
+
* `handoff -> state=handed-off`, the highest-volume terminal class. The `satisfies`
|
|
14
|
+
* clause is the compile guard: removing a state from QUEUE_STATES fails here. */
|
|
15
|
+
export declare const TERMINAL_QUEUE_STATES: readonly ["done", "handed-off"];
|
|
16
|
+
export declare function isTerminalState(state: string): boolean;
|
|
8
17
|
export declare const QUEUE_PRIORITIES: readonly ["routine", "urgent", "critical"];
|
|
9
18
|
export type QueuePriority = (typeof QUEUE_PRIORITIES)[number];
|
|
10
19
|
export interface QueueItem {
|
|
@@ -95,6 +104,13 @@ export interface QueueUpdateInput {
|
|
|
95
104
|
qitemId: string;
|
|
96
105
|
actorSession: string;
|
|
97
106
|
state: QueueState;
|
|
107
|
+
/**
|
|
108
|
+
* OPR.0.4.6.WF3 FR-6 — set ONLY by the workflow domain's own write
|
|
109
|
+
* paths (projector close, route close): they hold the frontier
|
|
110
|
+
* invariant, so the close-path guard exempts them. Not a security
|
|
111
|
+
* boundary — a correctness foot-gun guard (pm ruling: prevention).
|
|
112
|
+
*/
|
|
113
|
+
viaWorkflowVerb?: boolean;
|
|
98
114
|
transitionNote?: string;
|
|
99
115
|
closureReason?: string;
|
|
100
116
|
closureTarget?: string;
|
|
@@ -174,6 +190,42 @@ export declare class QueueRepositoryError extends Error {
|
|
|
174
190
|
readonly meta: Record<string, unknown> | undefined;
|
|
175
191
|
constructor(code: string, message: string, meta?: Record<string, unknown>);
|
|
176
192
|
}
|
|
193
|
+
/** OPR.0.4.6.WF5 (guard-named fix shape): exported so the workflow
|
|
194
|
+
* domain can PREALLOCATE a gate packet's id — the class-(c) exception
|
|
195
|
+
* identity tags need occurrence:<gatePacketId> ON the packet at create
|
|
196
|
+
* (one item, tagged in its own create — never a second item, never a
|
|
197
|
+
* post-create tag rewrite). The queue still mints ids for every caller
|
|
198
|
+
* that does not preallocate. */
|
|
199
|
+
export declare function newQitemId(): string;
|
|
200
|
+
/**
|
|
201
|
+
* OPR.0.4.6.MH3 Q-a: is this the SQLite PRIMARY KEY conflict on
|
|
202
|
+
* queue_items.qitem_id? better-sqlite3 sets `.code` on its SqliteError; the
|
|
203
|
+
* message check is a defensive twin so a driver-name change never silently
|
|
204
|
+
* turns an idempotent absorb into a 500.
|
|
205
|
+
*/
|
|
206
|
+
export declare function isQitemPrimaryKeyConflict(err: unknown): boolean;
|
|
207
|
+
/**
|
|
208
|
+
* OPR.0.4.6.MH3 D-1 (FR-4/FR-5): the deterministic cross-host SUCCESSOR id.
|
|
209
|
+
*
|
|
210
|
+
* A cross-host handoff exposes no caller `--id`, so the successor's dedup
|
|
211
|
+
* identity must come from the operation itself: the id is a PURE, STATELESS
|
|
212
|
+
* function of (source qitemId, destination session, destination host). Same
|
|
213
|
+
* arguments → same id on every re-drive, across daemon restarts, with zero
|
|
214
|
+
* local state — so the origin-side PRIMARY KEY absorb (Q-a) converges every
|
|
215
|
+
* interrupted-close re-drive. Source→successor is 1:1 by construction (a
|
|
216
|
+
* closed source is terminal; nothing re-opens it). The `qitem-xh-` namespace
|
|
217
|
+
* makes collision with organic `qitem-<ts>-<hex>` ids structurally impossible
|
|
218
|
+
* (plan R-2). The compound key is JSON-encoded — no hand-rolled separators.
|
|
219
|
+
*
|
|
220
|
+
* n1 residual (arch-named, inherent to the ratified at-least-once/no-2PC
|
|
221
|
+
* fence — NOT a dedup bug): a re-drive naming a DIFFERENT destination before
|
|
222
|
+
* the source close lands is a NEW handoff decision and derives a DIFFERENT
|
|
223
|
+
* id, so it cannot absorb the earlier successor — that earlier successor can
|
|
224
|
+
* remain live on the target host. The chain_of_record + cross-host provenance
|
|
225
|
+
* tags keep such an orphan visible/traceable; the source-close conflict check
|
|
226
|
+
* surfaces the disagreement rather than overwriting it.
|
|
227
|
+
*/
|
|
228
|
+
export declare function deriveCrossHostSuccessorId(sourceQitemId: string, destinationSession: string, hostId: string): string;
|
|
177
229
|
/**
|
|
178
230
|
* L3 — Queue repository. Owns CRUD over `queue_items` plus the wired-in
|
|
179
231
|
* append-only transition log and hot-potato strict-rejection contract.
|
|
@@ -197,6 +249,9 @@ export declare class QueueRepository {
|
|
|
197
249
|
private readonly hasTargetRepoColumn;
|
|
198
250
|
private readonly hasSummaryColumn;
|
|
199
251
|
private readonly hasEvidenceRefColumn;
|
|
252
|
+
/** OPR.0.4.6.WF3 FR-6 — injected by startup (never imported): the
|
|
253
|
+
* workflow domain's is-live-frontier-packet predicate. */
|
|
254
|
+
private readonly workflowFrontierPredicate;
|
|
200
255
|
constructor(db: Database.Database, eventBus: EventBus, opts?: {
|
|
201
256
|
validateRig?: (sessionRef: string) => boolean;
|
|
202
257
|
/**
|
|
@@ -208,6 +263,18 @@ export declare class QueueRepository {
|
|
|
208
263
|
* a test or daemon-bootstrap path where transport is not yet wired).
|
|
209
264
|
*/
|
|
210
265
|
transport?: QueueNudgeTransport;
|
|
266
|
+
/**
|
|
267
|
+
* OPR.0.4.6.WF3 FR-6 — the frontier close-path guard's INJECTED
|
|
268
|
+
* predicate (the validateRig injection precedent: the queue is
|
|
269
|
+
* the lower primitive and NEVER imports the workflow domain;
|
|
270
|
+
* startup wires the workflow domain's exported predicate in).
|
|
271
|
+
* Absent (tests, bootstrap, pre-workflow schemas) = zero new
|
|
272
|
+
* behavior.
|
|
273
|
+
*/
|
|
274
|
+
workflowFrontierPredicate?: (qitemId: string) => {
|
|
275
|
+
instanceId: string;
|
|
276
|
+
workflowName: string;
|
|
277
|
+
} | null;
|
|
211
278
|
});
|
|
212
279
|
/**
|
|
213
280
|
* Attach the wake-path transport AFTER construction. Used by daemon
|
|
@@ -292,6 +359,44 @@ export declare class QueueRepository {
|
|
|
292
359
|
closed: QueueItem;
|
|
293
360
|
created: QueueItem;
|
|
294
361
|
}>;
|
|
362
|
+
/**
|
|
363
|
+
* OPR.0.4.6.MH3 FR-4 (C2, arch Q-c): the LOCAL half of a cross-host
|
|
364
|
+
* handoff — close the source row AFTER the successor-create was forwarded
|
|
365
|
+
* to (and accepted by) the target host. The two sides live in two DBs, so
|
|
366
|
+
* this is deliberately NOT the atomic close+create of {@link handoff}: the
|
|
367
|
+
* boundary is bridged by message-passing (successor-create FIRST on the
|
|
368
|
+
* origin host, this source-close SECOND — never the reverse, so a crash
|
|
369
|
+
* between the two leaves a live duplicate the idempotent re-drive
|
|
370
|
+
* converges, never a dropped potato).
|
|
371
|
+
*
|
|
372
|
+
* Re-drive semantics (FR-4/FR-5, the interrupted-close case):
|
|
373
|
+
* - source already terminal WITH a MATCHING closureTarget → idempotent
|
|
374
|
+
* absorb: return the stored row unchanged (`absorbed: true`) — no
|
|
375
|
+
* second close, no second event.
|
|
376
|
+
* - source already terminal with a MISMATCHED closureTarget → structured
|
|
377
|
+
* `cross_host_close_conflict` (someone else closed it meanwhile —
|
|
378
|
+
* surface, never overwrite).
|
|
379
|
+
* - otherwise → close exactly like the local handoff's close leg:
|
|
380
|
+
* `closure_reason=handed_off_to`; `closure_target` carries the OPAQUE
|
|
381
|
+
* three-part `<member@rig>@<host>` form (arch R1 — presence-checked
|
|
382
|
+
* display/audit metadata, NEVER parsed for routing); `handed_off_to`
|
|
383
|
+
* stays the two-part `member@rig` (BR-1 — session-string carriers
|
|
384
|
+
* never gain `@host`).
|
|
385
|
+
*/
|
|
386
|
+
closeCrossHostHandoffSource(input: {
|
|
387
|
+
qitemId: string;
|
|
388
|
+
fromSession: string;
|
|
389
|
+
/** Two-part `member@rig` destination — the session-string carrier (BR-1). */
|
|
390
|
+
toSession: string;
|
|
391
|
+
/** Opaque three-part `<member@rig>@<host>` closure target (arch R1). */
|
|
392
|
+
closureTarget: string;
|
|
393
|
+
/** `handed-off` for /handoff; `done` for /handoff-and-complete. */
|
|
394
|
+
terminalState: "handed-off" | "done";
|
|
395
|
+
transitionNote?: string;
|
|
396
|
+
}): {
|
|
397
|
+
item: QueueItem;
|
|
398
|
+
absorbed: boolean;
|
|
399
|
+
};
|
|
295
400
|
/**
|
|
296
401
|
* `whoami` — return the seat's queue position from the daemon's perspective.
|
|
297
402
|
* Counts active qitems (pending + in-progress + blocked) destined for the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-repository.d.ts","sourceRoot":"","sources":["../../src/domain/queue-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"queue-repository.d.ts","sourceRoot":"","sources":["../../src/domain/queue-repository.ts"],"names":[],"mappings":"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"}
|