@openrig/cli 0.1.12 → 0.3.0
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/openrig-activity-hook-relay.cjs +104 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts +24 -6
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +221 -65
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/claude-resume.d.ts +5 -0
- package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-resume.js +13 -0
- package/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-resume.d.ts +8 -1
- package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-resume.js +74 -5
- package/daemon/dist/adapters/codex-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +9 -5
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +255 -28
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/terminal-adapter.d.ts +2 -1
- package/daemon/dist/adapters/terminal-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/terminal-adapter.js +7 -1
- package/daemon/dist/adapters/terminal-adapter.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +53 -5
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/builtins/workflow-specs/basic-loop.yaml +76 -0
- package/daemon/dist/builtins/workflow-specs/conveyor.yaml +80 -0
- package/daemon/dist/db/migrations/021_seat_handover_observability.d.ts +3 -0
- package/daemon/dist/db/migrations/021_seat_handover_observability.d.ts.map +1 -0
- package/daemon/dist/db/migrations/021_seat_handover_observability.js +11 -0
- package/daemon/dist/db/migrations/021_seat_handover_observability.js.map +1 -0
- package/daemon/dist/db/migrations/022_node_codex_config_profile.d.ts +3 -0
- package/daemon/dist/db/migrations/022_node_codex_config_profile.d.ts.map +1 -0
- package/daemon/dist/db/migrations/022_node_codex_config_profile.js +7 -0
- package/daemon/dist/db/migrations/022_node_codex_config_profile.js.map +1 -0
- package/daemon/dist/db/migrations/023_stream_items.d.ts +16 -0
- package/daemon/dist/db/migrations/023_stream_items.d.ts.map +1 -0
- package/daemon/dist/db/migrations/023_stream_items.js +37 -0
- package/daemon/dist/db/migrations/023_stream_items.js.map +1 -0
- package/daemon/dist/db/migrations/024_queue_items.d.ts +19 -0
- package/daemon/dist/db/migrations/024_queue_items.d.ts.map +1 -0
- package/daemon/dist/db/migrations/024_queue_items.js +52 -0
- package/daemon/dist/db/migrations/024_queue_items.js.map +1 -0
- package/daemon/dist/db/migrations/025_queue_transitions.d.ts +13 -0
- package/daemon/dist/db/migrations/025_queue_transitions.d.ts.map +1 -0
- package/daemon/dist/db/migrations/025_queue_transitions.js +28 -0
- package/daemon/dist/db/migrations/025_queue_transitions.js.map +1 -0
- package/daemon/dist/db/migrations/026_inbox_entries.d.ts +14 -0
- package/daemon/dist/db/migrations/026_inbox_entries.d.ts.map +1 -0
- package/daemon/dist/db/migrations/026_inbox_entries.js +35 -0
- package/daemon/dist/db/migrations/026_inbox_entries.js.map +1 -0
- package/daemon/dist/db/migrations/027_outbox_entries.d.ts +12 -0
- package/daemon/dist/db/migrations/027_outbox_entries.d.ts.map +1 -0
- package/daemon/dist/db/migrations/027_outbox_entries.js +30 -0
- package/daemon/dist/db/migrations/027_outbox_entries.js.map +1 -0
- package/daemon/dist/db/migrations/028_project_classifications.d.ts +26 -0
- package/daemon/dist/db/migrations/028_project_classifications.d.ts.map +1 -0
- package/daemon/dist/db/migrations/028_project_classifications.js +44 -0
- package/daemon/dist/db/migrations/028_project_classifications.js.map +1 -0
- package/daemon/dist/db/migrations/029_classifier_leases.d.ts +22 -0
- package/daemon/dist/db/migrations/029_classifier_leases.d.ts.map +1 -0
- package/daemon/dist/db/migrations/029_classifier_leases.js +41 -0
- package/daemon/dist/db/migrations/029_classifier_leases.js.map +1 -0
- package/daemon/dist/db/migrations/030_views_custom.d.ts +15 -0
- package/daemon/dist/db/migrations/030_views_custom.d.ts.map +1 -0
- package/daemon/dist/db/migrations/030_views_custom.js +27 -0
- package/daemon/dist/db/migrations/030_views_custom.js.map +1 -0
- package/daemon/dist/db/migrations/031_watchdog_jobs.d.ts +34 -0
- package/daemon/dist/db/migrations/031_watchdog_jobs.d.ts.map +1 -0
- package/daemon/dist/db/migrations/031_watchdog_jobs.js +59 -0
- package/daemon/dist/db/migrations/031_watchdog_jobs.js.map +1 -0
- package/daemon/dist/db/migrations/032_watchdog_history.d.ts +28 -0
- package/daemon/dist/db/migrations/032_watchdog_history.d.ts.map +1 -0
- package/daemon/dist/db/migrations/032_watchdog_history.js +46 -0
- package/daemon/dist/db/migrations/032_watchdog_history.js.map +1 -0
- package/daemon/dist/db/migrations/033_workflow_specs.d.ts +30 -0
- package/daemon/dist/db/migrations/033_workflow_specs.d.ts.map +1 -0
- package/daemon/dist/db/migrations/033_workflow_specs.js +50 -0
- package/daemon/dist/db/migrations/033_workflow_specs.js.map +1 -0
- package/daemon/dist/db/migrations/034_workflow_instances.d.ts +42 -0
- package/daemon/dist/db/migrations/034_workflow_instances.d.ts.map +1 -0
- package/daemon/dist/db/migrations/034_workflow_instances.js +63 -0
- package/daemon/dist/db/migrations/034_workflow_instances.js.map +1 -0
- package/daemon/dist/db/migrations/035_workflow_step_trails.d.ts +29 -0
- package/daemon/dist/db/migrations/035_workflow_step_trails.d.ts.map +1 -0
- package/daemon/dist/db/migrations/035_workflow_step_trails.js +48 -0
- package/daemon/dist/db/migrations/035_workflow_step_trails.js.map +1 -0
- package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.d.ts +35 -0
- package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.d.ts.map +1 -0
- package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.js +43 -0
- package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.js.map +1 -0
- package/daemon/dist/db/migrations/037_mission_control_actions.d.ts +51 -0
- package/daemon/dist/db/migrations/037_mission_control_actions.d.ts.map +1 -0
- package/daemon/dist/db/migrations/037_mission_control_actions.js +74 -0
- package/daemon/dist/db/migrations/037_mission_control_actions.js.map +1 -0
- package/daemon/dist/db/migrations/038_workspace_primitive.d.ts +16 -0
- package/daemon/dist/db/migrations/038_workspace_primitive.d.ts.map +1 -0
- package/daemon/dist/db/migrations/038_workspace_primitive.js +20 -0
- package/daemon/dist/db/migrations/038_workspace_primitive.js.map +1 -0
- package/daemon/dist/db/migrations/039_queue_target_repo.d.ts +16 -0
- package/daemon/dist/db/migrations/039_queue_target_repo.d.ts.map +1 -0
- package/daemon/dist/db/migrations/039_queue_target_repo.js +21 -0
- package/daemon/dist/db/migrations/039_queue_target_repo.js.map +1 -0
- package/daemon/dist/domain/active-lens-store.d.ts +23 -0
- package/daemon/dist/domain/active-lens-store.d.ts.map +1 -0
- package/daemon/dist/domain/active-lens-store.js +87 -0
- package/daemon/dist/domain/active-lens-store.js.map +1 -0
- package/daemon/dist/domain/agent-activity-store.d.ts +42 -0
- package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -0
- package/daemon/dist/domain/agent-activity-store.js +177 -0
- package/daemon/dist/domain/agent-activity-store.js.map +1 -0
- package/daemon/dist/domain/agent-images/agent-image-library-service.d.ts +68 -0
- package/daemon/dist/domain/agent-images/agent-image-library-service.d.ts.map +1 -0
- package/daemon/dist/domain/agent-images/agent-image-library-service.js +339 -0
- package/daemon/dist/domain/agent-images/agent-image-library-service.js.map +1 -0
- package/daemon/dist/domain/agent-images/agent-image-types.d.ts +113 -0
- package/daemon/dist/domain/agent-images/agent-image-types.d.ts.map +1 -0
- package/daemon/dist/domain/agent-images/agent-image-types.js +24 -0
- package/daemon/dist/domain/agent-images/agent-image-types.js.map +1 -0
- package/daemon/dist/domain/agent-images/evidence-guard.d.ts +26 -0
- package/daemon/dist/domain/agent-images/evidence-guard.d.ts.map +1 -0
- package/daemon/dist/domain/agent-images/evidence-guard.js +185 -0
- package/daemon/dist/domain/agent-images/evidence-guard.js.map +1 -0
- package/daemon/dist/domain/agent-images/manifest-parser.d.ts +3 -0
- package/daemon/dist/domain/agent-images/manifest-parser.d.ts.map +1 -0
- package/daemon/dist/domain/agent-images/manifest-parser.js +114 -0
- package/daemon/dist/domain/agent-images/manifest-parser.js.map +1 -0
- package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts +28 -0
- package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts.map +1 -0
- package/daemon/dist/domain/agent-images/resume-token-discovery.js +83 -0
- package/daemon/dist/domain/agent-images/resume-token-discovery.js.map +1 -0
- package/daemon/dist/domain/agent-images/snapshot-capturer.d.ts +36 -0
- package/daemon/dist/domain/agent-images/snapshot-capturer.d.ts.map +1 -0
- package/daemon/dist/domain/agent-images/snapshot-capturer.js +58 -0
- package/daemon/dist/domain/agent-images/snapshot-capturer.js.map +1 -0
- package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
- package/daemon/dist/domain/agent-manifest.js +3 -0
- package/daemon/dist/domain/agent-manifest.js.map +1 -1
- package/daemon/dist/domain/agent-starter-resolver.d.ts +94 -0
- package/daemon/dist/domain/agent-starter-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/agent-starter-resolver.js +198 -0
- package/daemon/dist/domain/agent-starter-resolver.js.map +1 -0
- package/daemon/dist/domain/classifier-lease-manager.d.ts +130 -0
- package/daemon/dist/domain/classifier-lease-manager.d.ts.map +1 -0
- package/daemon/dist/domain/classifier-lease-manager.js +285 -0
- package/daemon/dist/domain/classifier-lease-manager.js.map +1 -0
- package/daemon/dist/domain/conflict-detector.d.ts.map +1 -1
- package/daemon/dist/domain/conflict-detector.js +6 -3
- package/daemon/dist/domain/conflict-detector.js.map +1 -1
- package/daemon/dist/domain/context-monitor.d.ts +5 -4
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/context-monitor.js +26 -11
- package/daemon/dist/domain/context-monitor.js.map +1 -1
- package/daemon/dist/domain/context-packs/bundle-assembler.d.ts +49 -0
- package/daemon/dist/domain/context-packs/bundle-assembler.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/bundle-assembler.js +81 -0
- package/daemon/dist/domain/context-packs/bundle-assembler.js.map +1 -0
- package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts +41 -0
- package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/context-pack-library-service.js +148 -0
- package/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -0
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts +64 -0
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/context-pack-types.js +22 -0
- package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -0
- package/daemon/dist/domain/context-packs/manifest-parser.d.ts +3 -0
- package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/manifest-parser.js +74 -0
- package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -0
- package/daemon/dist/domain/context-usage-store.d.ts +15 -2
- package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
- package/daemon/dist/domain/context-usage-store.js +157 -2
- package/daemon/dist/domain/context-usage-store.js.map +1 -1
- package/daemon/dist/domain/files/file-write-service.d.ts +61 -0
- package/daemon/dist/domain/files/file-write-service.d.ts.map +1 -0
- package/daemon/dist/domain/files/file-write-service.js +180 -0
- package/daemon/dist/domain/files/file-write-service.js.map +1 -0
- package/daemon/dist/domain/files/path-safety.d.ts +47 -0
- package/daemon/dist/domain/files/path-safety.d.ts.map +1 -0
- package/daemon/dist/domain/files/path-safety.js +176 -0
- package/daemon/dist/domain/files/path-safety.js.map +1 -0
- package/daemon/dist/domain/graph-projection.d.ts +14 -1
- package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
- package/daemon/dist/domain/graph-projection.js +8 -0
- package/daemon/dist/domain/graph-projection.js.map +1 -1
- package/daemon/dist/domain/hot-potato-enforcer.d.ts +45 -0
- package/daemon/dist/domain/hot-potato-enforcer.d.ts.map +1 -0
- package/daemon/dist/domain/hot-potato-enforcer.js +94 -0
- package/daemon/dist/domain/hot-potato-enforcer.js.map +1 -0
- package/daemon/dist/domain/inbox-handler.d.ts +68 -0
- package/daemon/dist/domain/inbox-handler.d.ts.map +1 -0
- package/daemon/dist/domain/inbox-handler.js +177 -0
- package/daemon/dist/domain/inbox-handler.js.map +1 -0
- package/daemon/dist/domain/install-engine.d.ts.map +1 -1
- package/daemon/dist/domain/install-engine.js +22 -6
- package/daemon/dist/domain/install-engine.js.map +1 -1
- package/daemon/dist/domain/install-verifier.d.ts.map +1 -1
- package/daemon/dist/domain/install-verifier.js +10 -5
- package/daemon/dist/domain/install-verifier.js.map +1 -1
- package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
- package/daemon/dist/domain/managed-blocks.js +22 -3
- package/daemon/dist/domain/managed-blocks.js.map +1 -1
- package/daemon/dist/domain/mission-control/audit-browse.d.ts +26 -0
- package/daemon/dist/domain/mission-control/audit-browse.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/audit-browse.js +101 -0
- package/daemon/dist/domain/mission-control/audit-browse.js.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts +51 -0
- package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-action-log.js +124 -0
- package/daemon/dist/domain/mission-control/mission-control-action-log.js.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.d.ts +131 -0
- package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js +232 -0
- package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts +85 -0
- package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-read-layer.js +265 -0
- package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts +69 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.js +300 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -0
- package/daemon/dist/domain/mission-control/notification-adapter-ntfy.d.ts +18 -0
- package/daemon/dist/domain/mission-control/notification-adapter-ntfy.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/notification-adapter-ntfy.js +48 -0
- package/daemon/dist/domain/mission-control/notification-adapter-ntfy.js.map +1 -0
- package/daemon/dist/domain/mission-control/notification-adapter-types.d.ts +25 -0
- package/daemon/dist/domain/mission-control/notification-adapter-types.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/notification-adapter-types.js +7 -0
- package/daemon/dist/domain/mission-control/notification-adapter-types.js.map +1 -0
- package/daemon/dist/domain/mission-control/notification-adapter-webhook.d.ts +27 -0
- package/daemon/dist/domain/mission-control/notification-adapter-webhook.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/notification-adapter-webhook.js +47 -0
- package/daemon/dist/domain/mission-control/notification-adapter-webhook.js.map +1 -0
- package/daemon/dist/domain/mission-control/notification-dispatcher.d.ts +53 -0
- package/daemon/dist/domain/mission-control/notification-dispatcher.d.ts.map +1 -0
- package/daemon/dist/domain/mission-control/notification-dispatcher.js +181 -0
- package/daemon/dist/domain/mission-control/notification-dispatcher.js.map +1 -0
- package/daemon/dist/domain/native-resume-probe.d.ts +1 -1
- package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
- package/daemon/dist/domain/native-resume-probe.js +67 -0
- package/daemon/dist/domain/native-resume-probe.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +29 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +184 -38
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/node-launcher.d.ts +2 -0
- package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/node-launcher.js +21 -7
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/outbox-handler.d.ts +48 -0
- package/daemon/dist/domain/outbox-handler.d.ts.map +1 -0
- package/daemon/dist/domain/outbox-handler.js +106 -0
- package/daemon/dist/domain/outbox-handler.js.map +1 -0
- package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts +64 -0
- package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts.map +1 -0
- package/daemon/dist/domain/policies/artifact-pool-helpers.js +226 -0
- package/daemon/dist/domain/policies/artifact-pool-helpers.js.map +1 -0
- package/daemon/dist/domain/policies/artifact-pool-ready.d.ts +3 -0
- package/daemon/dist/domain/policies/artifact-pool-ready.d.ts.map +1 -0
- package/daemon/dist/domain/policies/artifact-pool-ready.js +41 -0
- package/daemon/dist/domain/policies/artifact-pool-ready.js.map +1 -0
- package/daemon/dist/domain/policies/edge-artifact-required.d.ts +3 -0
- package/daemon/dist/domain/policies/edge-artifact-required.d.ts.map +1 -0
- package/daemon/dist/domain/policies/edge-artifact-required.js +90 -0
- package/daemon/dist/domain/policies/edge-artifact-required.js.map +1 -0
- package/daemon/dist/domain/policies/periodic-reminder.d.ts +3 -0
- package/daemon/dist/domain/policies/periodic-reminder.d.ts.map +1 -0
- package/daemon/dist/domain/policies/periodic-reminder.js +30 -0
- package/daemon/dist/domain/policies/periodic-reminder.js.map +1 -0
- package/daemon/dist/domain/policies/types.d.ts +51 -0
- package/daemon/dist/domain/policies/types.d.ts.map +1 -0
- package/daemon/dist/domain/policies/types.js +9 -0
- package/daemon/dist/domain/policies/types.js.map +1 -0
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -0
- package/daemon/dist/domain/policies/workflow-keepalive.js +123 -0
- package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -0
- package/daemon/dist/domain/preview/preview-rate-limiter.d.ts +20 -0
- package/daemon/dist/domain/preview/preview-rate-limiter.d.ts.map +1 -0
- package/daemon/dist/domain/preview/preview-rate-limiter.js +46 -0
- package/daemon/dist/domain/preview/preview-rate-limiter.js.map +1 -0
- package/daemon/dist/domain/profile-resolver.d.ts +5 -0
- package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/profile-resolver.js +62 -8
- package/daemon/dist/domain/profile-resolver.js.map +1 -1
- package/daemon/dist/domain/progress/progress-indexer.d.ts +73 -0
- package/daemon/dist/domain/progress/progress-indexer.d.ts.map +1 -0
- package/daemon/dist/domain/progress/progress-indexer.js +210 -0
- package/daemon/dist/domain/progress/progress-indexer.js.map +1 -0
- package/daemon/dist/domain/project-classifier.d.ts +75 -0
- package/daemon/dist/domain/project-classifier.d.ts.map +1 -0
- package/daemon/dist/domain/project-classifier.js +132 -0
- package/daemon/dist/domain/project-classifier.js.map +1 -0
- package/daemon/dist/domain/projection-planner.d.ts +1 -0
- package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
- package/daemon/dist/domain/projection-planner.js +3 -0
- package/daemon/dist/domain/projection-planner.js.map +1 -1
- package/daemon/dist/domain/ps-projection.d.ts +31 -0
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +38 -0
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +340 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -0
- package/daemon/dist/domain/queue-repository.js +744 -0
- package/daemon/dist/domain/queue-repository.js.map +1 -0
- package/daemon/dist/domain/queue-transition-log.d.ts +38 -0
- package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -0
- package/daemon/dist/domain/queue-transition-log.js +52 -0
- package/daemon/dist/domain/queue-transition-log.js.map +1 -0
- package/daemon/dist/domain/rehydrate-eligibility.d.ts +16 -0
- package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -0
- package/daemon/dist/domain/rehydrate-eligibility.js +43 -0
- package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -0
- package/daemon/dist/domain/restore-check-service.d.ts +203 -0
- package/daemon/dist/domain/restore-check-service.d.ts.map +1 -0
- package/daemon/dist/domain/restore-check-service.js +1060 -0
- package/daemon/dist/domain/restore-check-service.js.map +1 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts +49 -3
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +464 -64
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.js +13 -0
- package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +31 -1
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +104 -5
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
- package/daemon/dist/domain/rig-teardown.js +5 -0
- package/daemon/dist/domain/rig-teardown.js.map +1 -1
- package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-codec.js +28 -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 +2 -0
- package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +29 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +194 -2
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +349 -0
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +38 -2
- package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-adapter.js +5 -0
- package/daemon/dist/domain/runtime-adapter.js.map +1 -1
- package/daemon/dist/domain/seat-handover-planner.d.ts +84 -0
- package/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -0
- package/daemon/dist/domain/seat-handover-planner.js +188 -0
- package/daemon/dist/domain/seat-handover-planner.js.map +1 -0
- package/daemon/dist/domain/seat-handover-service.d.ts +104 -0
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -0
- package/daemon/dist/domain/seat-handover-service.js +343 -0
- package/daemon/dist/domain/seat-handover-service.js.map +1 -0
- package/daemon/dist/domain/seat-status-service.d.ts +50 -0
- package/daemon/dist/domain/seat-status-service.d.ts.map +1 -0
- package/daemon/dist/domain/seat-status-service.js +66 -0
- package/daemon/dist/domain/seat-status-service.js.map +1 -0
- package/daemon/dist/domain/session-source-rebuild-resolver.d.ts +53 -0
- package/daemon/dist/domain/session-source-rebuild-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/session-source-rebuild-resolver.js +59 -0
- package/daemon/dist/domain/session-source-rebuild-resolver.js.map +1 -0
- package/daemon/dist/domain/session-transport.d.ts +30 -0
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +322 -12
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/skill-discovery.d.ts +51 -0
- package/daemon/dist/domain/skill-discovery.d.ts.map +1 -0
- package/daemon/dist/domain/skill-discovery.js +144 -0
- package/daemon/dist/domain/skill-discovery.js.map +1 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts +182 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -0
- package/daemon/dist/domain/slices/slice-detail-projector.js +508 -0
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -0
- package/daemon/dist/domain/slices/slice-indexer.d.ts +118 -0
- package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -0
- package/daemon/dist/domain/slices/slice-indexer.js +503 -0
- package/daemon/dist/domain/slices/slice-indexer.js.map +1 -0
- package/daemon/dist/domain/snapshot-repository.d.ts +18 -0
- package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
- package/daemon/dist/domain/snapshot-repository.js +77 -0
- package/daemon/dist/domain/snapshot-repository.js.map +1 -1
- package/daemon/dist/domain/spec-library-service.d.ts +17 -2
- package/daemon/dist/domain/spec-library-service.d.ts.map +1 -1
- package/daemon/dist/domain/spec-library-service.js +31 -1
- package/daemon/dist/domain/spec-library-service.js.map +1 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +81 -0
- package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -0
- package/daemon/dist/domain/spec-library-workflow-scanner.js +171 -0
- package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -0
- package/daemon/dist/domain/startup-orchestrator.d.ts +22 -3
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +31 -5
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
- package/daemon/dist/domain/startup-validation.js +57 -11
- package/daemon/dist/domain/startup-validation.js.map +1 -1
- package/daemon/dist/domain/steering/health-summary.d.ts +39 -0
- package/daemon/dist/domain/steering/health-summary.d.ts.map +1 -0
- package/daemon/dist/domain/steering/health-summary.js +100 -0
- package/daemon/dist/domain/steering/health-summary.js.map +1 -0
- package/daemon/dist/domain/steering/steering-composer.d.ts +102 -0
- package/daemon/dist/domain/steering/steering-composer.d.ts.map +1 -0
- package/daemon/dist/domain/steering/steering-composer.js +263 -0
- package/daemon/dist/domain/steering/steering-composer.js.map +1 -0
- package/daemon/dist/domain/stream-store.d.ts +56 -0
- package/daemon/dist/domain/stream-store.d.ts.map +1 -0
- package/daemon/dist/domain/stream-store.js +108 -0
- package/daemon/dist/domain/stream-store.js.map +1 -0
- package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-capture.js +7 -4
- package/daemon/dist/domain/transcript-capture.js.map +1 -1
- package/daemon/dist/domain/transcript-redaction.d.ts +13 -0
- package/daemon/dist/domain/transcript-redaction.d.ts.map +1 -0
- package/daemon/dist/domain/transcript-redaction.js +34 -0
- package/daemon/dist/domain/transcript-redaction.js.map +1 -0
- package/daemon/dist/domain/transcript-rotation.d.ts +29 -0
- package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -0
- package/daemon/dist/domain/transcript-rotation.js +109 -0
- package/daemon/dist/domain/transcript-rotation.js.map +1 -0
- package/daemon/dist/domain/transcript-store.d.ts +15 -0
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +64 -2
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +416 -4
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js +8 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +42 -0
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -0
- package/daemon/dist/domain/user-settings/settings-store.js +364 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -0
- package/daemon/dist/domain/view-event-bridge.d.ts +12 -0
- package/daemon/dist/domain/view-event-bridge.d.ts.map +1 -0
- package/daemon/dist/domain/view-event-bridge.js +91 -0
- package/daemon/dist/domain/view-event-bridge.js.map +1 -0
- package/daemon/dist/domain/view-projector.d.ts +83 -0
- package/daemon/dist/domain/view-projector.d.ts.map +1 -0
- package/daemon/dist/domain/view-projector.js +296 -0
- package/daemon/dist/domain/view-projector.js.map +1 -0
- package/daemon/dist/domain/watchdog-history-log.d.ts +49 -0
- package/daemon/dist/domain/watchdog-history-log.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-history-log.js +67 -0
- package/daemon/dist/domain/watchdog-history-log.js.map +1 -0
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts +81 -0
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-jobs-repository.js +164 -0
- package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -0
- package/daemon/dist/domain/watchdog-policy-engine.d.ts +92 -0
- package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-policy-engine.js +442 -0
- package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -0
- package/daemon/dist/domain/watchdog-scheduler.d.ts +76 -0
- package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-scheduler.js +112 -0
- package/daemon/dist/domain/watchdog-scheduler.js.map +1 -0
- package/daemon/dist/domain/whoami-service.d.ts +29 -0
- package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
- package/daemon/dist/domain/whoami-service.js +68 -0
- package/daemon/dist/domain/whoami-service.js.map +1 -1
- package/daemon/dist/domain/workflow/slice-workflow-binding.d.ts +21 -0
- package/daemon/dist/domain/workflow/slice-workflow-binding.d.ts.map +1 -0
- package/daemon/dist/domain/workflow/slice-workflow-binding.js +103 -0
- package/daemon/dist/domain/workflow/slice-workflow-binding.js.map +1 -0
- package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts +81 -0
- package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -0
- package/daemon/dist/domain/workflow/slice-workflow-projection.js +127 -0
- package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -0
- package/daemon/dist/domain/workflow/starter-spec-loader.d.ts +51 -0
- package/daemon/dist/domain/workflow/starter-spec-loader.d.ts.map +1 -0
- package/daemon/dist/domain/workflow/starter-spec-loader.js +140 -0
- package/daemon/dist/domain/workflow/starter-spec-loader.js.map +1 -0
- package/daemon/dist/domain/workflow-instance-store.d.ts +46 -0
- package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-instance-store.js +116 -0
- package/daemon/dist/domain/workflow-instance-store.js.map +1 -0
- package/daemon/dist/domain/workflow-projector.d.ts +64 -0
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-projector.js +432 -0
- package/daemon/dist/domain/workflow-projector.js.map +1 -0
- package/daemon/dist/domain/workflow-runtime.d.ts +63 -0
- package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-runtime.js +150 -0
- package/daemon/dist/domain/workflow-runtime.js.map +1 -0
- package/daemon/dist/domain/workflow-spec-cache.d.ts +42 -0
- package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-spec-cache.js +218 -0
- package/daemon/dist/domain/workflow-spec-cache.js.map +1 -0
- package/daemon/dist/domain/workflow-step-trail-log.d.ts +27 -0
- package/daemon/dist/domain/workflow-step-trail-log.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-step-trail-log.js +73 -0
- package/daemon/dist/domain/workflow-step-trail-log.js.map +1 -0
- package/daemon/dist/domain/workflow-types.d.ts +108 -0
- package/daemon/dist/domain/workflow-types.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-types.js +11 -0
- package/daemon/dist/domain/workflow-types.js.map +1 -0
- package/daemon/dist/domain/workflow-validator.d.ts +31 -0
- package/daemon/dist/domain/workflow-validator.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-validator.js +115 -0
- package/daemon/dist/domain/workflow-validator.js.map +1 -0
- package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +6 -0
- package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -0
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js +207 -0
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -0
- package/daemon/dist/domain/workspace/frontmatter-validator.d.ts +40 -0
- package/daemon/dist/domain/workspace/frontmatter-validator.d.ts.map +1 -0
- package/daemon/dist/domain/workspace/frontmatter-validator.js +185 -0
- package/daemon/dist/domain/workspace/frontmatter-validator.js.map +1 -0
- package/daemon/dist/domain/workspace/workspace-resolver.d.ts +25 -0
- package/daemon/dist/domain/workspace/workspace-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/workspace/workspace-resolver.js +86 -0
- package/daemon/dist/domain/workspace/workspace-resolver.js.map +1 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +30 -2
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/middleware/auth-bearer-token.d.ts +49 -0
- package/daemon/dist/middleware/auth-bearer-token.d.ts.map +1 -0
- package/daemon/dist/middleware/auth-bearer-token.js +135 -0
- package/daemon/dist/middleware/auth-bearer-token.js.map +1 -0
- package/daemon/dist/openrig-compat.d.ts +1 -1
- package/daemon/dist/openrig-compat.d.ts.map +1 -1
- package/daemon/dist/openrig-compat.js +6 -4
- package/daemon/dist/openrig-compat.js.map +1 -1
- package/daemon/dist/routes/activity.d.ts +3 -0
- package/daemon/dist/routes/activity.d.ts.map +1 -0
- package/daemon/dist/routes/activity.js +47 -0
- package/daemon/dist/routes/activity.js.map +1 -0
- package/daemon/dist/routes/agent-images.d.ts +8 -0
- package/daemon/dist/routes/agent-images.d.ts.map +1 -0
- package/daemon/dist/routes/agent-images.js +253 -0
- package/daemon/dist/routes/agent-images.js.map +1 -0
- package/daemon/dist/routes/config.d.ts +3 -0
- package/daemon/dist/routes/config.d.ts.map +1 -0
- package/daemon/dist/routes/config.js +109 -0
- package/daemon/dist/routes/config.js.map +1 -0
- package/daemon/dist/routes/context-packs.d.ts +3 -0
- package/daemon/dist/routes/context-packs.d.ts.map +1 -0
- package/daemon/dist/routes/context-packs.js +129 -0
- package/daemon/dist/routes/context-packs.js.map +1 -0
- package/daemon/dist/routes/files.d.ts +17 -0
- package/daemon/dist/routes/files.d.ts.map +1 -0
- package/daemon/dist/routes/files.js +262 -0
- package/daemon/dist/routes/files.js.map +1 -0
- package/daemon/dist/routes/health-summary.d.ts +9 -0
- package/daemon/dist/routes/health-summary.d.ts.map +1 -0
- package/daemon/dist/routes/health-summary.js +33 -0
- package/daemon/dist/routes/health-summary.js.map +1 -0
- package/daemon/dist/routes/mission-control.d.ts +37 -0
- package/daemon/dist/routes/mission-control.d.ts.map +1 -0
- package/daemon/dist/routes/mission-control.js +283 -0
- package/daemon/dist/routes/mission-control.js.map +1 -0
- package/daemon/dist/routes/progress.d.ts +7 -0
- package/daemon/dist/routes/progress.d.ts.map +1 -0
- package/daemon/dist/routes/progress.js +33 -0
- package/daemon/dist/routes/progress.js.map +1 -0
- package/daemon/dist/routes/projects.d.ts +12 -0
- package/daemon/dist/routes/projects.d.ts.map +1 -0
- package/daemon/dist/routes/projects.js +178 -0
- package/daemon/dist/routes/projects.js.map +1 -0
- package/daemon/dist/routes/queue.d.ts +10 -0
- package/daemon/dist/routes/queue.d.ts.map +1 -0
- package/daemon/dist/routes/queue.js +425 -0
- package/daemon/dist/routes/queue.js.map +1 -0
- package/daemon/dist/routes/restore-check.d.ts +3 -0
- package/daemon/dist/routes/restore-check.d.ts.map +1 -0
- package/daemon/dist/routes/restore-check.js +200 -0
- package/daemon/dist/routes/restore-check.js.map +1 -0
- package/daemon/dist/routes/rigs.d.ts +3 -0
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +131 -9
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/rigspec.js +6 -3
- package/daemon/dist/routes/rigspec.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts +3 -0
- package/daemon/dist/routes/seat.d.ts.map +1 -0
- package/daemon/dist/routes/seat.js +69 -0
- package/daemon/dist/routes/seat.js.map +1 -0
- package/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/daemon/dist/routes/sessions.js +144 -4
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/slices.d.ts +9 -0
- package/daemon/dist/routes/slices.d.ts.map +1 -0
- package/daemon/dist/routes/slices.js +192 -0
- package/daemon/dist/routes/slices.js.map +1 -0
- package/daemon/dist/routes/snapshots.js +66 -29
- package/daemon/dist/routes/snapshots.js.map +1 -1
- package/daemon/dist/routes/spec-library.d.ts.map +1 -1
- package/daemon/dist/routes/spec-library.js +72 -5
- package/daemon/dist/routes/spec-library.js.map +1 -1
- package/daemon/dist/routes/steering.d.ts +7 -0
- package/daemon/dist/routes/steering.d.ts.map +1 -0
- package/daemon/dist/routes/steering.js +27 -0
- package/daemon/dist/routes/steering.js.map +1 -0
- package/daemon/dist/routes/stream.d.ts +9 -0
- package/daemon/dist/routes/stream.d.ts.map +1 -0
- package/daemon/dist/routes/stream.js +119 -0
- package/daemon/dist/routes/stream.js.map +1 -0
- package/daemon/dist/routes/transcripts.d.ts.map +1 -1
- package/daemon/dist/routes/transcripts.js +38 -0
- package/daemon/dist/routes/transcripts.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +21 -0
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/routes/up.d.ts.map +1 -1
- package/daemon/dist/routes/up.js +43 -4
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/routes/views.d.ts +13 -0
- package/daemon/dist/routes/views.d.ts.map +1 -0
- package/daemon/dist/routes/views.js +120 -0
- package/daemon/dist/routes/views.js.map +1 -0
- package/daemon/dist/routes/watchdog.d.ts +18 -0
- package/daemon/dist/routes/watchdog.d.ts.map +1 -0
- package/daemon/dist/routes/watchdog.js +148 -0
- package/daemon/dist/routes/watchdog.js.map +1 -0
- package/daemon/dist/routes/whoami.d.ts.map +1 -1
- package/daemon/dist/routes/whoami.js +6 -1
- package/daemon/dist/routes/whoami.js.map +1 -1
- package/daemon/dist/routes/workflow.d.ts +20 -0
- package/daemon/dist/routes/workflow.d.ts.map +1 -0
- package/daemon/dist/routes/workflow.js +227 -0
- package/daemon/dist/routes/workflow.js.map +1 -0
- package/daemon/dist/routes/workspace.d.ts +3 -0
- package/daemon/dist/routes/workspace.d.ts.map +1 -0
- package/daemon/dist/routes/workspace.js +53 -0
- package/daemon/dist/routes/workspace.js.map +1 -0
- package/daemon/dist/server.d.ts +81 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +85 -1
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts +9 -0
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +585 -8
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +19 -12
- package/daemon/docs/reference/agent-startup-guide.md +11 -11
- package/daemon/docs/reference/project-workspace.md +102 -0
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +2 -2
- package/daemon/specs/agents/apps/vault-specialist/guidance/role.md +0 -1
- package/daemon/specs/agents/conveyor/builder/agent.yaml +35 -0
- package/daemon/specs/agents/conveyor/builder/guidance/role.md +31 -0
- package/daemon/specs/agents/conveyor/builder/startup/context.md +9 -0
- package/daemon/specs/agents/conveyor/lead/agent.yaml +35 -0
- package/daemon/specs/agents/conveyor/lead/guidance/role.md +34 -0
- package/daemon/specs/agents/conveyor/lead/startup/context.md +15 -0
- package/daemon/specs/agents/conveyor/planner/agent.yaml +35 -0
- package/daemon/specs/agents/conveyor/planner/guidance/role.md +29 -0
- package/daemon/specs/agents/conveyor/planner/startup/context.md +12 -0
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +35 -0
- package/daemon/specs/agents/conveyor/reviewer/guidance/role.md +29 -0
- package/daemon/specs/agents/conveyor/reviewer/startup/context.md +10 -0
- package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
- package/daemon/specs/agents/development/implementer/agent.yaml +2 -2
- package/daemon/specs/agents/development/implementer/guidance/role.md +0 -1
- package/daemon/specs/agents/development/qa/agent.yaml +1 -1
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +2 -2
- package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +2 -3
- package/daemon/specs/agents/product-management/pm/agent.yaml +4 -0
- package/daemon/specs/agents/research/analyst/agent.yaml +1 -1
- package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -1
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/shared/agent.yaml +17 -2
- package/daemon/specs/agents/shared/runtime/claude-mcp.fragment.json +12 -0
- package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +16 -0
- package/daemon/specs/agents/shared/runtime/codex-config.fragment.toml +5 -0
- package/daemon/specs/agents/shared/skills/claude-compact-in-place/SKILL.md +100 -0
- package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +110 -0
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +69 -1
- package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +153 -0
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +3 -0
- package/daemon/specs/agents/shared/skills/rig-architect/SKILL.md +11 -1
- package/daemon/specs/rigs/launch/conveyor/CULTURE.md +34 -0
- package/daemon/specs/rigs/launch/conveyor/README.md +33 -0
- package/daemon/specs/rigs/launch/conveyor/rig.yaml +72 -0
- package/daemon/specs/rigs/preview/product-team/CULTURE.md +2 -2
- package/daemon/specs/rigs/preview/product-team/rig.yaml +3 -4
- package/dist/bin-wrapper.js +0 -0
- package/dist/commands/agent-image.d.ts +4 -0
- package/dist/commands/agent-image.d.ts.map +1 -0
- package/dist/commands/agent-image.js +352 -0
- package/dist/commands/agent-image.js.map +1 -0
- package/dist/commands/capture.d.ts +7 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +59 -1
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/compact-plan.d.ts +9 -0
- package/dist/commands/compact-plan.d.ts.map +1 -0
- package/dist/commands/compact-plan.js +354 -0
- package/dist/commands/compact-plan.js.map +1 -0
- package/dist/commands/config-init-workspace.d.ts +35 -0
- package/dist/commands/config-init-workspace.d.ts.map +1 -0
- package/dist/commands/config-init-workspace.js +300 -0
- package/dist/commands/config-init-workspace.js.map +1 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +78 -18
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context-pack.d.ts +4 -0
- package/dist/commands/context-pack.d.ts.map +1 -0
- package/dist/commands/context-pack.js +357 -0
- package/dist/commands/context-pack.js.map +1 -0
- package/dist/commands/context.d.ts +9 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +220 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +8 -0
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/expand.d.ts.map +1 -1
- package/dist/commands/expand.js +15 -4
- package/dist/commands/expand.js.map +1 -1
- package/dist/commands/heartbeat.d.ts +99 -0
- package/dist/commands/heartbeat.d.ts.map +1 -0
- package/dist/commands/heartbeat.js +393 -0
- package/dist/commands/heartbeat.js.map +1 -0
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +7 -2
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/project.d.ts +14 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +157 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/ps.d.ts +20 -3
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +614 -33
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +16 -0
- package/dist/commands/queue.d.ts.map +1 -0
- package/dist/commands/queue.js +410 -0
- package/dist/commands/queue.js.map +1 -0
- package/dist/commands/restore-check.d.ts +9 -0
- package/dist/commands/restore-check.d.ts.map +1 -0
- package/dist/commands/restore-check.js +234 -0
- package/dist/commands/restore-check.js.map +1 -0
- package/dist/commands/restore-packet.d.ts +9 -0
- package/dist/commands/restore-packet.d.ts.map +1 -0
- package/dist/commands/restore-packet.js +383 -0
- package/dist/commands/restore-packet.js.map +1 -0
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +44 -1
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/seat.d.ts +5 -0
- package/dist/commands/seat.d.ts.map +1 -0
- package/dist/commands/seat.js +170 -0
- package/dist/commands/seat.js.map +1 -0
- package/dist/commands/send.d.ts +19 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +116 -5
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.js +3 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/specs.d.ts +4 -2
- package/dist/commands/specs.d.ts.map +1 -1
- package/dist/commands/specs.js +111 -24
- package/dist/commands/specs.js.map +1 -1
- package/dist/commands/stream.d.ts +12 -0
- package/dist/commands/stream.d.ts.map +1 -0
- package/dist/commands/stream.js +111 -0
- package/dist/commands/stream.js.map +1 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +79 -5
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/view.d.ts +12 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +82 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/commands/watchdog.d.ts +15 -0
- package/dist/commands/watchdog.d.ts.map +1 -0
- package/dist/commands/watchdog.js +120 -0
- package/dist/commands/watchdog.js.map +1 -0
- package/dist/commands/whoami.d.ts +8 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +69 -5
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/workflow.d.ts +17 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +175 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/commands/workspace.d.ts +6 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +83 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/config-store.d.ts +73 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +314 -42
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-cli-helpers.d.ts +12 -0
- package/dist/cross-host-cli-helpers.d.ts.map +1 -0
- package/dist/cross-host-cli-helpers.js +48 -0
- package/dist/cross-host-cli-helpers.js.map +1 -0
- package/dist/cross-host-executor.d.ts +84 -0
- package/dist/cross-host-executor.d.ts.map +1 -0
- package/dist/cross-host-executor.js +138 -0
- package/dist/cross-host-executor.js.map +1 -0
- package/dist/daemon-lifecycle.d.ts +22 -0
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +41 -0
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/host-registry.d.ts +50 -0
- package/dist/host-registry.d.ts.map +1 -0
- package/dist/host-registry.js +116 -0
- package/dist/host-registry.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +22 -2
- package/dist/mcp-server.js.map +1 -1
- package/dist/openrig-compat.d.ts +1 -1
- package/dist/openrig-compat.d.ts.map +1 -1
- package/dist/openrig-compat.js +6 -4
- package/dist/openrig-compat.js.map +1 -1
- package/dist/restore-packet/claude-transcript-parser.d.ts +12 -0
- package/dist/restore-packet/claude-transcript-parser.d.ts.map +1 -0
- package/dist/restore-packet/claude-transcript-parser.js +221 -0
- package/dist/restore-packet/claude-transcript-parser.js.map +1 -0
- package/dist/restore-packet/codex-jsonl-parser.d.ts +11 -0
- package/dist/restore-packet/codex-jsonl-parser.d.ts.map +1 -0
- package/dist/restore-packet/codex-jsonl-parser.js +159 -0
- package/dist/restore-packet/codex-jsonl-parser.js.map +1 -0
- package/dist/restore-packet/omitted-records.d.ts +60 -0
- package/dist/restore-packet/omitted-records.d.ts.map +1 -0
- package/dist/restore-packet/omitted-records.js +116 -0
- package/dist/restore-packet/omitted-records.js.map +1 -0
- package/dist/restore-packet/packet-writer.d.ts +59 -0
- package/dist/restore-packet/packet-writer.d.ts.map +1 -0
- package/dist/restore-packet/packet-writer.js +224 -0
- package/dist/restore-packet/packet-writer.js.map +1 -0
- package/dist/restore-packet/redaction.d.ts +30 -0
- package/dist/restore-packet/redaction.d.ts.map +1 -0
- package/dist/restore-packet/redaction.js +71 -0
- package/dist/restore-packet/redaction.js.map +1 -0
- package/dist/restore-packet/runtime-detect.d.ts +19 -0
- package/dist/restore-packet/runtime-detect.d.ts.map +1 -0
- package/dist/restore-packet/runtime-detect.js +81 -0
- package/dist/restore-packet/runtime-detect.js.map +1 -0
- package/dist/restore-packet/schema-validator.d.ts +13 -0
- package/dist/restore-packet/schema-validator.d.ts.map +1 -0
- package/dist/restore-packet/schema-validator.js +245 -0
- package/dist/restore-packet/schema-validator.js.map +1 -0
- package/dist/restore-packet/types.d.ts +76 -0
- package/dist/restore-packet/types.d.ts.map +1 -0
- package/dist/restore-packet/types.js +15 -0
- package/dist/restore-packet/types.js.map +1 -0
- package/dist/schemas/restore-summary.schema.json +98 -0
- package/package.json +10 -3
- package/scripts/check-abi.mjs +123 -0
- package/ui/dist/assets/index-BDHU1JUK.js +412 -0
- package/ui/dist/assets/index-DXTyJSqu.css +1 -0
- package/ui/dist/graphics/operator-climber-monochrome.png +0 -0
- package/ui/dist/index.html +3 -2
- package/daemon/specs/agents/shared/skills/mental-model-ha/SKILL.md +0 -953
- package/ui/dist/assets/index-B09doO8H.js +0 -139
- package/ui/dist/assets/index-Ccd-jwRN.js +0 -225
- package/ui/dist/assets/index-DlMH-REm.css +0 -1
package/daemon/dist/startup.js
CHANGED
|
@@ -51,11 +51,30 @@ import { RigTeardownOrchestrator } from "./domain/rig-teardown.js";
|
|
|
51
51
|
import { ResumeMetadataRefresher } from "./domain/resume-metadata-refresher.js";
|
|
52
52
|
import { TranscriptStore } from "./domain/transcript-store.js";
|
|
53
53
|
import { SessionTransport } from "./domain/session-transport.js";
|
|
54
|
+
import { AgentActivityStore } from "./domain/agent-activity-store.js";
|
|
54
55
|
import { HistoryQuery } from "./domain/history-query.js";
|
|
55
56
|
import { AskService } from "./domain/ask-service.js";
|
|
56
57
|
import { ChatRepository } from "./domain/chat-repository.js";
|
|
58
|
+
import { StreamStore } from "./domain/stream-store.js";
|
|
59
|
+
import { QueueRepository } from "./domain/queue-repository.js";
|
|
60
|
+
import { InboxHandler } from "./domain/inbox-handler.js";
|
|
61
|
+
import { OutboxHandler } from "./domain/outbox-handler.js";
|
|
62
|
+
import { ProjectClassifier } from "./domain/project-classifier.js";
|
|
63
|
+
import { ClassifierLeaseManager } from "./domain/classifier-lease-manager.js";
|
|
64
|
+
import { ViewProjector } from "./domain/view-projector.js";
|
|
65
|
+
import { wireViewEventBridge } from "./domain/view-event-bridge.js";
|
|
66
|
+
import { WatchdogJobsRepository } from "./domain/watchdog-jobs-repository.js";
|
|
67
|
+
import { WatchdogHistoryLog } from "./domain/watchdog-history-log.js";
|
|
68
|
+
import { WatchdogPolicyEngine } from "./domain/watchdog-policy-engine.js";
|
|
69
|
+
import { WatchdogScheduler } from "./domain/watchdog-scheduler.js";
|
|
70
|
+
import { WorkflowRuntime } from "./domain/workflow-runtime.js";
|
|
71
|
+
import { makeWorkflowKeepalivePolicy } from "./domain/policies/workflow-keepalive.js";
|
|
57
72
|
import { SpecReviewService } from "./domain/spec-review-service.js";
|
|
58
73
|
import { SpecLibraryService } from "./domain/spec-library-service.js";
|
|
74
|
+
import { ContextPackLibraryService } from "./domain/context-packs/context-pack-library-service.js";
|
|
75
|
+
import { AgentImageLibraryService } from "./domain/agent-images/agent-image-library-service.js";
|
|
76
|
+
import { SnapshotCapturer } from "./domain/agent-images/snapshot-capturer.js";
|
|
77
|
+
import { SettingsStore as ContextPackSettingsStore } from "./domain/user-settings/settings-store.js";
|
|
59
78
|
import { WhoamiService } from "./domain/whoami-service.js";
|
|
60
79
|
import { NodeCmuxService } from "./domain/node-cmux-service.js";
|
|
61
80
|
import { createApp } from "./server.js";
|
|
@@ -80,15 +99,108 @@ import { podNamespaceSchema } from "./db/migrations/017_pod_namespace.js";
|
|
|
80
99
|
import { contextUsageSchema } from "./db/migrations/018_context_usage.js";
|
|
81
100
|
import { externalCliAttachmentSchema } from "./db/migrations/019_external_cli_attachment.js";
|
|
82
101
|
import { rigServicesSchema } from "./db/migrations/020_rig_services.js";
|
|
102
|
+
import { seatHandoverObservabilitySchema } from "./db/migrations/021_seat_handover_observability.js";
|
|
103
|
+
import { nodeCodexConfigProfileSchema } from "./db/migrations/022_node_codex_config_profile.js";
|
|
104
|
+
import { streamItemsSchema } from "./db/migrations/023_stream_items.js";
|
|
105
|
+
import { queueItemsSchema } from "./db/migrations/024_queue_items.js";
|
|
106
|
+
import { queueTransitionsSchema } from "./db/migrations/025_queue_transitions.js";
|
|
107
|
+
import { inboxEntriesSchema } from "./db/migrations/026_inbox_entries.js";
|
|
108
|
+
import { outboxEntriesSchema } from "./db/migrations/027_outbox_entries.js";
|
|
109
|
+
import { projectClassificationsSchema } from "./db/migrations/028_project_classifications.js";
|
|
110
|
+
import { classifierLeasesSchema } from "./db/migrations/029_classifier_leases.js";
|
|
111
|
+
import { viewsCustomSchema } from "./db/migrations/030_views_custom.js";
|
|
112
|
+
import { watchdogJobsSchema } from "./db/migrations/031_watchdog_jobs.js";
|
|
113
|
+
import { watchdogHistorySchema } from "./db/migrations/032_watchdog_history.js";
|
|
114
|
+
import { workflowSpecsSchema } from "./db/migrations/033_workflow_specs.js";
|
|
115
|
+
import { workflowInstancesSchema } from "./db/migrations/034_workflow_instances.js";
|
|
116
|
+
import { workflowStepTrailsSchema } from "./db/migrations/035_workflow_step_trails.js";
|
|
117
|
+
import { watchdogPolicyEnumExtensionSchema } from "./db/migrations/036_watchdog_policy_enum_extension.js";
|
|
118
|
+
import { missionControlActionsSchema } from "./db/migrations/037_mission_control_actions.js";
|
|
119
|
+
import { workspacePrimitiveSchema } from "./db/migrations/038_workspace_primitive.js";
|
|
120
|
+
import { queueTargetRepoSchema } from "./db/migrations/039_queue_target_repo.js";
|
|
121
|
+
import { MissionControlActionLog } from "./domain/mission-control/mission-control-action-log.js";
|
|
122
|
+
import { MissionControlWriteContract } from "./domain/mission-control/mission-control-write-contract.js";
|
|
123
|
+
import { MissionControlReadLayer } from "./domain/mission-control/mission-control-read-layer.js";
|
|
124
|
+
import { MissionControlFleetCliCapability, makeLocalCliCapabilityProbe, } from "./domain/mission-control/mission-control-fleet-cli-capability.js";
|
|
125
|
+
import { MissionControlAuditBrowse } from "./domain/mission-control/audit-browse.js";
|
|
126
|
+
import { MissionControlNotificationDispatcher } from "./domain/mission-control/notification-dispatcher.js";
|
|
127
|
+
import { NtfyNotificationAdapter } from "./domain/mission-control/notification-adapter-ntfy.js";
|
|
128
|
+
import { WebhookNotificationAdapter } from "./domain/mission-control/notification-adapter-webhook.js";
|
|
83
129
|
import { OPENRIG_HOME } from "./openrig-compat.js";
|
|
84
130
|
import { getCompatibleOpenRigPath, getDefaultOpenRigPath, readOpenRigEnv, } from "./openrig-compat.js";
|
|
131
|
+
const KNOWN_PROVIDER_AUTH_ENV = new Set([
|
|
132
|
+
"ANTHROPIC_API_KEY",
|
|
133
|
+
"ANTHROPIC_AUTH_TOKEN",
|
|
134
|
+
"CLAUDE_CODE_OAUTH_TOKEN",
|
|
135
|
+
"OPENAI_API_KEY",
|
|
136
|
+
"OPENAI_BASE_URL",
|
|
137
|
+
"OPENAI_ORG_ID",
|
|
138
|
+
"OPENAI_PROJECT_ID",
|
|
139
|
+
]);
|
|
140
|
+
export function collectAllowlistedProviderAuthEnv(raw, env) {
|
|
141
|
+
const out = {};
|
|
142
|
+
for (const item of (raw ?? "").split(",")) {
|
|
143
|
+
const name = item.trim();
|
|
144
|
+
if (!name)
|
|
145
|
+
continue;
|
|
146
|
+
if (!/^[A-Z_][A-Z0-9_]*$/.test(name))
|
|
147
|
+
continue;
|
|
148
|
+
if (!KNOWN_PROVIDER_AUTH_ENV.has(name))
|
|
149
|
+
continue;
|
|
150
|
+
const value = env[name];
|
|
151
|
+
if (typeof value === "string" && value.length > 0) {
|
|
152
|
+
out[name] = value;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return out;
|
|
156
|
+
}
|
|
85
157
|
export async function createDaemon(opts) {
|
|
86
158
|
const dbPath = opts?.dbPath ?? ":memory:";
|
|
87
159
|
const db = createDb(dbPath);
|
|
88
|
-
migrate(db, [coreSchema, bindingsSessionsSchema, eventsSchema, snapshotsSchema, checkpointsSchema, resumeMetadataSchema, nodeSpecFieldsSchema, packagesSchema, installJournalSchema, journalSeqSchema, bootstrapSchema, discoverySchema, discoveryFkFix, agentspecRebootSchema, startupContextSchema, chatMessagesSchema, podNamespaceSchema, contextUsageSchema, externalCliAttachmentSchema, rigServicesSchema]);
|
|
160
|
+
migrate(db, [coreSchema, bindingsSessionsSchema, eventsSchema, snapshotsSchema, checkpointsSchema, resumeMetadataSchema, nodeSpecFieldsSchema, packagesSchema, installJournalSchema, journalSeqSchema, bootstrapSchema, discoverySchema, discoveryFkFix, agentspecRebootSchema, startupContextSchema, chatMessagesSchema, podNamespaceSchema, contextUsageSchema, externalCliAttachmentSchema, rigServicesSchema, seatHandoverObservabilitySchema, nodeCodexConfigProfileSchema, streamItemsSchema, queueItemsSchema, queueTransitionsSchema, inboxEntriesSchema, outboxEntriesSchema, projectClassificationsSchema, classifierLeasesSchema, viewsCustomSchema, watchdogJobsSchema, watchdogHistorySchema, workflowSpecsSchema, workflowInstancesSchema, workflowStepTrailsSchema, watchdogPolicyEnumExtensionSchema, missionControlActionsSchema, workspacePrimitiveSchema, queueTargetRepoSchema]);
|
|
89
161
|
const rigRepo = new RigRepository(db);
|
|
90
162
|
const sessionRegistry = new SessionRegistry(db);
|
|
91
163
|
const eventBus = new EventBus(db);
|
|
164
|
+
// PL-004 Phase A revision (R1): topology-backed validateRig.
|
|
165
|
+
// Reject `<member>@<unknown-rig>` shapes by checking the rig portion
|
|
166
|
+
// against the rig registry. Bare ids without `@` are also rejected
|
|
167
|
+
// (no canonical rig binding).
|
|
168
|
+
const isHumanSeatSessionRef = (sessionRef) => {
|
|
169
|
+
return /^human(?:-[A-Za-z0-9._-]+)?@(kernel|host)$/.test(sessionRef);
|
|
170
|
+
};
|
|
171
|
+
const topologyValidateRig = (sessionRef) => {
|
|
172
|
+
if (isHumanSeatSessionRef(sessionRef))
|
|
173
|
+
return true;
|
|
174
|
+
const m = /^[^@]+@(.+)$/.exec(sessionRef);
|
|
175
|
+
if (!m)
|
|
176
|
+
return false;
|
|
177
|
+
const rigName = m[1];
|
|
178
|
+
return rigRepo.findRigsByName(rigName).length > 0;
|
|
179
|
+
};
|
|
180
|
+
// PL-004 Phase A — shared coordination services. Constructed early so
|
|
181
|
+
// both the queueRepo dep slot and inboxHandler can share one instance.
|
|
182
|
+
// Transport is wired after SessionTransport instantiation below via
|
|
183
|
+
// attachTransport().
|
|
184
|
+
const queueRepoInstance = new QueueRepository(db, eventBus, {
|
|
185
|
+
validateRig: topologyValidateRig,
|
|
186
|
+
});
|
|
187
|
+
// PL-004 Phase B — classifier lease manager. Constructed early so both
|
|
188
|
+
// the leaseManager dep slot and project-classifier can share one instance.
|
|
189
|
+
// isAlive is post-attached after whoami-service is constructed.
|
|
190
|
+
const classifierLeaseManagerInstance = new ClassifierLeaseManager(db, eventBus);
|
|
191
|
+
// PL-004 Phase B — view-projector. Constructed early so both the
|
|
192
|
+
// viewProjector dep slot and the view-event-bridge can share one instance.
|
|
193
|
+
const viewProjectorInstance = new ViewProjector(db, eventBus);
|
|
194
|
+
// PL-004 Phase B R1 (closes guard BLOCKER 2): wire the view event bridge
|
|
195
|
+
// so queue/inbox/project mutations emit view.changed for affected built-in
|
|
196
|
+
// views. SSE consumers on /api/views/:name/sse now receive change events
|
|
197
|
+
// when underlying state mutates.
|
|
198
|
+
wireViewEventBridge(eventBus, viewProjectorInstance);
|
|
199
|
+
// PL-004 Phase C — watchdog supervision tree. Repository + history-log
|
|
200
|
+
// are constructed early; the policy engine + scheduler are constructed
|
|
201
|
+
// after SessionTransport is available so the engine can wire delivery.
|
|
202
|
+
const watchdogJobsRepoInstance = new WatchdogJobsRepository(db);
|
|
203
|
+
const watchdogHistoryLogInstance = new WatchdogHistoryLog(db);
|
|
92
204
|
const tmuxAdapter = new TmuxAdapter(opts?.tmuxExec ?? execCommand);
|
|
93
205
|
// cmuxFactory takes precedence (for tests), then cmuxExec-based CLI transport, then default
|
|
94
206
|
const cmuxFactory = opts?.cmuxFactory
|
|
@@ -97,6 +209,12 @@ export async function createDaemon(opts) {
|
|
|
97
209
|
// Read transcript config from env (passed by CLI via PNS-T02 config surface)
|
|
98
210
|
const transcriptsEnabled = readOpenRigEnv("OPENRIG_TRANSCRIPTS_ENABLED", "RIGGED_TRANSCRIPTS_ENABLED") !== "false";
|
|
99
211
|
const transcriptsPath = readOpenRigEnv("OPENRIG_TRANSCRIPTS_PATH", "RIGGED_TRANSCRIPTS_PATH") || undefined;
|
|
212
|
+
const activityHookToken = readOpenRigEnv("OPENRIG_ACTIVITY_HOOK_TOKEN", "RIGGED_ACTIVITY_HOOK_TOKEN") || undefined;
|
|
213
|
+
const activityHookUrl = readOpenRigEnv("OPENRIG_URL", "RIGGED_URL") || undefined;
|
|
214
|
+
const openRigPort = readOpenRigEnv("OPENRIG_PORT", "RIGGED_PORT") || undefined;
|
|
215
|
+
const openRigHost = readOpenRigEnv("OPENRIG_HOST", "RIGGED_HOST") || undefined;
|
|
216
|
+
const startupSettings = new ContextPackSettingsStore().resolveConfig();
|
|
217
|
+
const providerAuthEnv = collectAllowlistedProviderAuthEnv(startupSettings.recoveryProviderAuthEnvAllowlistRaw, process.env);
|
|
100
218
|
const transcriptStore = new TranscriptStore({
|
|
101
219
|
enabled: transcriptsEnabled,
|
|
102
220
|
transcriptsRoot: transcriptsPath,
|
|
@@ -108,6 +226,15 @@ export async function createDaemon(opts) {
|
|
|
108
226
|
eventBus,
|
|
109
227
|
tmuxAdapter,
|
|
110
228
|
transcriptStore,
|
|
229
|
+
sessionEnv: {
|
|
230
|
+
PATH: process.env.PATH,
|
|
231
|
+
OPENRIG_HOME,
|
|
232
|
+
OPENRIG_PORT: openRigPort,
|
|
233
|
+
OPENRIG_HOST: openRigHost,
|
|
234
|
+
OPENRIG_URL: activityHookUrl,
|
|
235
|
+
OPENRIG_ACTIVITY_HOOK_TOKEN: activityHookToken,
|
|
236
|
+
...providerAuthEnv,
|
|
237
|
+
},
|
|
111
238
|
});
|
|
112
239
|
const snapshotRepo = new SnapshotRepository(db);
|
|
113
240
|
const checkpointStore = new CheckpointStore(db);
|
|
@@ -126,12 +253,42 @@ export async function createDaemon(opts) {
|
|
|
126
253
|
});
|
|
127
254
|
// Connect to cmux at startup — degrades gracefully if absent
|
|
128
255
|
await cmuxAdapter.connect();
|
|
129
|
-
// Reconcile all managed rigs — marks stale sessions as detached
|
|
256
|
+
// Reconcile all managed rigs — marks stale sessions as detached.
|
|
257
|
+
// Capture aggregate counts and log a compact summary so cold-start truth
|
|
258
|
+
// repair is visible in daemon output instead of silently swallowed.
|
|
130
259
|
const reconciler = new Reconciler({ db, sessionRegistry, eventBus, tmuxAdapter });
|
|
131
260
|
const rigs = rigRepo.listRigs();
|
|
261
|
+
let reconcileChecked = 0;
|
|
262
|
+
let reconcileDetached = 0;
|
|
263
|
+
let reconcileErrors = 0;
|
|
132
264
|
for (const rig of rigs) {
|
|
133
|
-
|
|
265
|
+
try {
|
|
266
|
+
const result = await reconciler.reconcile(rig.id);
|
|
267
|
+
reconcileChecked += result.checked;
|
|
268
|
+
reconcileDetached += result.detached;
|
|
269
|
+
reconcileErrors += result.errors.length;
|
|
270
|
+
for (const e of result.errors) {
|
|
271
|
+
try {
|
|
272
|
+
// eslint-disable-next-line no-console
|
|
273
|
+
console.warn(`startup reconcile warning: rig=${rig.id} session=${e.sessionId} error=${e.error}`);
|
|
274
|
+
}
|
|
275
|
+
catch { /* logging must never throw */ }
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
reconcileErrors += 1;
|
|
280
|
+
try {
|
|
281
|
+
// eslint-disable-next-line no-console
|
|
282
|
+
console.warn(`startup reconcile warning: rig=${rig.id} error=${err instanceof Error ? err.message : String(err)}`);
|
|
283
|
+
}
|
|
284
|
+
catch { /* logging must never throw */ }
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
// eslint-disable-next-line no-console
|
|
289
|
+
console.log(`startup reconcile: rigs=${rigs.length} checked=${reconcileChecked} detached=${reconcileDetached} errors=${reconcileErrors}`);
|
|
134
290
|
}
|
|
291
|
+
catch { /* logging must never throw */ }
|
|
135
292
|
const podRepo = new PodRepository(db);
|
|
136
293
|
const rigSpecExporter = new RigSpecExporter({ rigRepo, sessionRegistry, podRepo });
|
|
137
294
|
const rigSpecPreflight = new RigSpecPreflight({
|
|
@@ -189,24 +346,95 @@ export async function createDaemon(opts) {
|
|
|
189
346
|
const { ClaudeCodeAdapter } = await import("./adapters/claude-code-adapter.js");
|
|
190
347
|
const { CodexRuntimeAdapter } = await import("./adapters/codex-runtime-adapter.js");
|
|
191
348
|
const startupOrchestrator = new StartupOrchestrator({ db, sessionRegistry, eventBus, tmuxAdapter, readFile: (p) => fs.readFileSync(p, "utf-8") });
|
|
349
|
+
const activityHookRelayAssetPath = nodePath.resolve(import.meta.dirname, "../assets/openrig-activity-hook-relay.cjs");
|
|
350
|
+
const runtimeSettings = new ContextPackSettingsStore().resolveConfig();
|
|
192
351
|
const claudeAdapter = new ClaudeCodeAdapter({ tmux: tmuxAdapter, fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"), exists: (p) => fs.existsSync(p), mkdirp: (p) => fs.mkdirSync(p, { recursive: true }), copyFile: (src, dest) => fs.copyFileSync(src, dest), listFiles: (dir) => { const r = []; function w(d, pre) { for (const e of fs.readdirSync(d, { withFileTypes: true })) {
|
|
193
352
|
if (e.isDirectory())
|
|
194
353
|
w(nodePath.join(d, e.name), nodePath.join(pre, e.name));
|
|
195
354
|
else
|
|
196
355
|
r.push(pre ? nodePath.join(pre, e.name) : e.name);
|
|
197
|
-
} } w(dir, ""); return r; }, readdir: (dir) => fs.readdirSync(dir), homedir: os.homedir() }, stateDir: OPENRIG_HOME, collectorAssetPath: nodePath.resolve(import.meta.dirname, "../assets/claude-statusline-context.cjs") });
|
|
356
|
+
} } w(dir, ""); return r; }, readdir: (dir) => fs.readdirSync(dir), homedir: os.homedir() }, stateDir: OPENRIG_HOME, collectorAssetPath: nodePath.resolve(import.meta.dirname, "../assets/claude-statusline-context.cjs"), activityHookRelayAssetPath, autoDriveProviderPrompts: runtimeSettings.recoveryAutoDriveProviderPrompts });
|
|
198
357
|
const codexAdapter = new CodexRuntimeAdapter({ tmux: tmuxAdapter, fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"), exists: (p) => fs.existsSync(p), mkdirp: (p) => fs.mkdirSync(p, { recursive: true }), listFiles: (dir) => { const r = []; function w(d, pre) { for (const e of fs.readdirSync(d, { withFileTypes: true })) {
|
|
199
358
|
if (e.isDirectory())
|
|
200
359
|
w(nodePath.join(d, e.name), nodePath.join(pre, e.name));
|
|
201
360
|
else
|
|
202
361
|
r.push(pre ? nodePath.join(pre, e.name) : e.name);
|
|
203
|
-
} } w(dir, ""); return r; } } });
|
|
362
|
+
} } w(dir, ""); return r; } }, activityHookRelayAssetPath });
|
|
363
|
+
// PL-014 Item 6: hoist ContextPackLibraryService construction so the
|
|
364
|
+
// PodRigInstantiator can resolve `kind: context_pack` startup_files
|
|
365
|
+
// entries at materialize time. Same instance is returned to deps
|
|
366
|
+
// below so /api/context-packs/* shares it.
|
|
367
|
+
const contextPackLibrary = (() => {
|
|
368
|
+
const userPacksRoot = getDefaultOpenRigPath("context-packs");
|
|
369
|
+
try {
|
|
370
|
+
fs.mkdirSync(userPacksRoot, { recursive: true });
|
|
371
|
+
}
|
|
372
|
+
catch { /* best-effort */ }
|
|
373
|
+
const roots = [
|
|
374
|
+
{ path: userPacksRoot, sourceType: "user_file" },
|
|
375
|
+
];
|
|
376
|
+
try {
|
|
377
|
+
const settingsStore = new ContextPackSettingsStore();
|
|
378
|
+
const cfg = settingsStore.resolveConfig();
|
|
379
|
+
const workspacePacksRoot = nodePath.join(cfg.workspaceRoot, ".openrig", "context-packs");
|
|
380
|
+
if (workspacePacksRoot !== userPacksRoot && fs.existsSync(workspacePacksRoot)) {
|
|
381
|
+
roots.push({ path: workspacePacksRoot, sourceType: "workspace" });
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
catch { /* settings unavailable; fall through with user-file root only */ }
|
|
385
|
+
const builtinPacksRoot = nodePath.resolve(import.meta.dirname, "../context-packs");
|
|
386
|
+
if (fs.existsSync(builtinPacksRoot)) {
|
|
387
|
+
roots.unshift({ path: builtinPacksRoot, sourceType: "builtin" });
|
|
388
|
+
}
|
|
389
|
+
const lib = new ContextPackLibraryService({ roots });
|
|
390
|
+
lib.scan();
|
|
391
|
+
return lib;
|
|
392
|
+
})();
|
|
393
|
+
// PL-016 Item 2 + Item 4: hoist AgentImageLibraryService construction
|
|
394
|
+
// so the PodRigInstantiator can resolve `session_source: mode:
|
|
395
|
+
// agent_image` at materialize time. Same instance returned to deps
|
|
396
|
+
// below so /api/agent-images/* + the SnapshotCapturer share it.
|
|
397
|
+
const agentImageRootBuilder = () => {
|
|
398
|
+
const userImagesRoot = getDefaultOpenRigPath("agent-images");
|
|
399
|
+
try {
|
|
400
|
+
fs.mkdirSync(userImagesRoot, { recursive: true });
|
|
401
|
+
}
|
|
402
|
+
catch { /* best-effort */ }
|
|
403
|
+
const roots = [
|
|
404
|
+
{ path: userImagesRoot, sourceType: "user_file" },
|
|
405
|
+
];
|
|
406
|
+
try {
|
|
407
|
+
const settingsStore = new ContextPackSettingsStore();
|
|
408
|
+
const cfg = settingsStore.resolveConfig();
|
|
409
|
+
const workspaceImagesRoot = nodePath.join(cfg.workspaceRoot, ".openrig", "agent-images");
|
|
410
|
+
if (workspaceImagesRoot !== userImagesRoot && fs.existsSync(workspaceImagesRoot)) {
|
|
411
|
+
roots.push({ path: workspaceImagesRoot, sourceType: "workspace" });
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
catch { /* settings unavailable */ }
|
|
415
|
+
return { userImagesRoot, roots };
|
|
416
|
+
};
|
|
417
|
+
const agentImageLibrary = (() => {
|
|
418
|
+
const { roots } = agentImageRootBuilder();
|
|
419
|
+
const lib = new AgentImageLibraryService({ roots });
|
|
420
|
+
lib.scan();
|
|
421
|
+
return lib;
|
|
422
|
+
})();
|
|
423
|
+
const snapshotCapturer = new SnapshotCapturer({
|
|
424
|
+
db,
|
|
425
|
+
rigRepo,
|
|
426
|
+
sessionRegistry,
|
|
427
|
+
agentImageLibrary,
|
|
428
|
+
targetRoot: getDefaultOpenRigPath("agent-images"),
|
|
429
|
+
});
|
|
204
430
|
const podInstantiator = new PodRigInstantiator({
|
|
205
431
|
db, rigRepo, podRepo,
|
|
206
432
|
sessionRegistry, eventBus, nodeLauncher, startupOrchestrator,
|
|
207
433
|
fsOps: { readFile: (p) => fs.readFileSync(p, "utf-8"), exists: (p) => fs.existsSync(p) },
|
|
208
434
|
adapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
209
435
|
tmuxAdapter,
|
|
436
|
+
contextPackLibrary,
|
|
437
|
+
agentImageLibrary,
|
|
210
438
|
});
|
|
211
439
|
const podBundleSourceResolver = new PodBundleSourceResolver();
|
|
212
440
|
const bootstrapOrchestrator = new BootstrapOrchestrator({
|
|
@@ -247,6 +475,7 @@ export async function createDaemon(opts) {
|
|
|
247
475
|
const contextUsageStore = new ContextUsageStore(db, { stateDir: OPENRIG_HOME });
|
|
248
476
|
const whoamiService = new WhoamiService({ db, rigRepo, sessionRegistry, transcriptStore, contextUsageStore });
|
|
249
477
|
const nodeCmuxService = new NodeCmuxService(rigRepo, sessionRegistry, cmuxAdapter);
|
|
478
|
+
const agentActivityStore = new AgentActivityStore({ db, eventBus });
|
|
250
479
|
const deps = {
|
|
251
480
|
rigRepo,
|
|
252
481
|
sessionRegistry,
|
|
@@ -287,8 +516,40 @@ export async function createDaemon(opts) {
|
|
|
287
516
|
podBundleSourceResolver,
|
|
288
517
|
runtimeAdapters: { "claude-code": claudeAdapter, "codex": codexAdapter, "terminal": new (await import("./adapters/terminal-adapter.js")).TerminalAdapter() },
|
|
289
518
|
transcriptStore,
|
|
290
|
-
sessionTransport:
|
|
519
|
+
sessionTransport: (() => {
|
|
520
|
+
const t = new SessionTransport({ db, rigRepo, sessionRegistry, tmuxAdapter, agentActivityStore });
|
|
521
|
+
// PL-004 Phase A revision (R1): wire QueueRepository's wake-path so
|
|
522
|
+
// create / handoff / handoff-and-complete nudge by default.
|
|
523
|
+
queueRepoInstance.attachTransport(t);
|
|
524
|
+
// PL-004 Phase B: wire classifier-lease-manager liveness check from
|
|
525
|
+
// the sessions table. Lease holder is "alive" iff there is at least
|
|
526
|
+
// one row in `sessions` with session_name == classifierSession AND
|
|
527
|
+
// status == 'running'.
|
|
528
|
+
classifierLeaseManagerInstance.attachIsAlive((classifierSession) => {
|
|
529
|
+
try {
|
|
530
|
+
const row = db
|
|
531
|
+
.prepare(`SELECT 1 FROM sessions WHERE session_name = ? AND status = 'running' LIMIT 1`)
|
|
532
|
+
.get(classifierSession);
|
|
533
|
+
return row !== undefined;
|
|
534
|
+
}
|
|
535
|
+
catch {
|
|
536
|
+
// Conservative: on lookup error, treat as alive (do not falsely
|
|
537
|
+
// trigger deadness-based lease expiry).
|
|
538
|
+
return true;
|
|
539
|
+
}
|
|
540
|
+
});
|
|
541
|
+
return t;
|
|
542
|
+
})(),
|
|
291
543
|
chatRepo: new ChatRepository(db),
|
|
544
|
+
streamStore: new StreamStore(db, eventBus),
|
|
545
|
+
queueRepo: queueRepoInstance,
|
|
546
|
+
inboxHandler: new InboxHandler(db, eventBus, queueRepoInstance),
|
|
547
|
+
outboxHandler: new OutboxHandler(db),
|
|
548
|
+
classifierLeaseManager: classifierLeaseManagerInstance,
|
|
549
|
+
projectClassifier: new ProjectClassifier(db, eventBus, classifierLeaseManagerInstance),
|
|
550
|
+
viewProjector: viewProjectorInstance,
|
|
551
|
+
watchdogJobsRepo: watchdogJobsRepoInstance,
|
|
552
|
+
watchdogHistoryLog: watchdogHistoryLogInstance,
|
|
292
553
|
askService: (() => {
|
|
293
554
|
const psProjectionService = new PsProjectionService({ db });
|
|
294
555
|
const execDep = (cmd, args) => new Promise((resolve) => {
|
|
@@ -323,6 +584,8 @@ export async function createDaemon(opts) {
|
|
|
323
584
|
})(),
|
|
324
585
|
whoamiService,
|
|
325
586
|
nodeCmuxService,
|
|
587
|
+
agentActivityStore,
|
|
588
|
+
activityHookToken,
|
|
326
589
|
contextUsageStore,
|
|
327
590
|
serviceOrchestrator,
|
|
328
591
|
composeAdapter,
|
|
@@ -350,6 +613,32 @@ export async function createDaemon(opts) {
|
|
|
350
613
|
lib.scan();
|
|
351
614
|
return lib;
|
|
352
615
|
})(),
|
|
616
|
+
// PL-014 Item 6: same instance hoisted earlier so the
|
|
617
|
+
// PodRigInstantiator can resolve `kind: context_pack` startup_files
|
|
618
|
+
// entries — sharing the cache means /api/context-packs/* + the
|
|
619
|
+
// instantiator see consistent state.
|
|
620
|
+
contextPackLibrary,
|
|
621
|
+
// PL-016 — agent_image typed primitive. Shared library + capturer
|
|
622
|
+
// + spec-roots supplier across /api/agent-images/* and the
|
|
623
|
+
// PodRigInstantiator's session_source: mode: agent_image dispatch.
|
|
624
|
+
agentImageLibrary,
|
|
625
|
+
snapshotCapturer,
|
|
626
|
+
agentImageSpecRoots: () => {
|
|
627
|
+
// Spec-library roots scanned by the evidence guard. v0: user
|
|
628
|
+
// specs under ~/.openrig/specs + workspace-local specs root
|
|
629
|
+
// (from the SettingsStore-resolved workspace.specsRoot).
|
|
630
|
+
const userSpecsRoot = getDefaultOpenRigPath("specs");
|
|
631
|
+
const roots = [userSpecsRoot];
|
|
632
|
+
try {
|
|
633
|
+
const settingsStore = new ContextPackSettingsStore();
|
|
634
|
+
const cfg = settingsStore.resolveConfig();
|
|
635
|
+
if (cfg.workspaceSpecsRoot && cfg.workspaceSpecsRoot !== userSpecsRoot) {
|
|
636
|
+
roots.push(cfg.workspaceSpecsRoot);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
catch { /* settings unavailable */ }
|
|
640
|
+
return roots;
|
|
641
|
+
},
|
|
353
642
|
};
|
|
354
643
|
// Copy bundled reference docs to ~/.openrig/reference/ so agents can find them at a stable path
|
|
355
644
|
try {
|
|
@@ -365,10 +654,298 @@ export async function createDaemon(opts) {
|
|
|
365
654
|
}
|
|
366
655
|
}
|
|
367
656
|
catch { /* best-effort — reference docs are not critical to daemon operation */ }
|
|
368
|
-
|
|
369
|
-
//
|
|
657
|
+
// PL-004 Phase C — watchdog policy engine + scheduler. Wired here
|
|
658
|
+
// (after deps construction) so the engine can dispatch deliveries
|
|
659
|
+
// through the live SessionTransport. Scheduler is started by
|
|
660
|
+
// index.ts after listen() so the daemon's HTTP surface is ready
|
|
661
|
+
// before the scheduler's first tick.
|
|
662
|
+
// PL-004 Phase D — workflow runtime + workflow-keepalive policy.
|
|
663
|
+
// Workflow runtime is constructed first; then the watchdog policy
|
|
664
|
+
// engine is constructed with workflow-keepalive injected via
|
|
665
|
+
// additionalPolicies (orch-ratified Phase D extension point per
|
|
666
|
+
// slice IMPL § Write Set / § Driver Handoff Contract).
|
|
667
|
+
const queueRepoForWorkflow = deps.queueRepo;
|
|
668
|
+
let workflowRuntime;
|
|
669
|
+
if (queueRepoForWorkflow) {
|
|
670
|
+
workflowRuntime = new WorkflowRuntime({
|
|
671
|
+
db,
|
|
672
|
+
eventBus,
|
|
673
|
+
queueRepo: queueRepoForWorkflow,
|
|
674
|
+
});
|
|
675
|
+
deps.workflowRuntime = workflowRuntime;
|
|
676
|
+
// Seed built-in starter workflow_specs into the cache. Idempotent
|
|
677
|
+
// + workspace-surface-respecting — operator
|
|
678
|
+
// overrides at workspace paths are preserved (skip-if-cached).
|
|
679
|
+
// Errors are collected into the result for diagnostic logging but
|
|
680
|
+
// do NOT block startup; a malformed bundled spec should not bring
|
|
681
|
+
// the daemon down.
|
|
682
|
+
const { loadStarterWorkflowSpecs, defaultBuiltinSpecsDir } = await import("./domain/workflow/starter-spec-loader.js");
|
|
683
|
+
const builtinSpecsDir = defaultBuiltinSpecsDir();
|
|
684
|
+
const starterResult = loadStarterWorkflowSpecs({
|
|
685
|
+
cache: workflowRuntime.specCache,
|
|
686
|
+
builtinDir: builtinSpecsDir,
|
|
687
|
+
});
|
|
688
|
+
// Surface the resolved path to the routes layer so
|
|
689
|
+
// GET /api/workflow/specs can compute the per-row isBuiltIn flag.
|
|
690
|
+
deps.workflowBuiltinSpecsDir = builtinSpecsDir;
|
|
691
|
+
if (starterResult.errors.length > 0) {
|
|
692
|
+
console.warn(`[starter-spec-loader] ${starterResult.errors.length} spec(s) failed to load:`, starterResult.errors);
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
// PL-005 Phase A: Mission Control / Queue Observability services.
|
|
696
|
+
// Wired AFTER WorkflowRuntime so all PL-004 daemon-backed coordination
|
|
697
|
+
// surfaces are available. Mission Control reads from queue/view/stream
|
|
698
|
+
// surfaces and writes through the atomic 7-verb contract.
|
|
699
|
+
if (deps.queueRepo && deps.viewProjector) {
|
|
700
|
+
const mcActionLog = new MissionControlActionLog(db);
|
|
701
|
+
const mcWriteContract = new MissionControlWriteContract({
|
|
702
|
+
db,
|
|
703
|
+
eventBus,
|
|
704
|
+
queueRepo: deps.queueRepo,
|
|
705
|
+
actionLog: mcActionLog,
|
|
706
|
+
});
|
|
707
|
+
const mcFleetCliCapability = new MissionControlFleetCliCapability({
|
|
708
|
+
db,
|
|
709
|
+
eventBus,
|
|
710
|
+
rigRepo,
|
|
711
|
+
// R1 fix per guard PL-005 Phase A review: wire the production
|
|
712
|
+
// capability probe so /api/mission-control/cli-capabilities
|
|
713
|
+
// honestly reports drift when MISSION_CONTROL_DESIRED_FIELDS
|
|
714
|
+
// are missing from the local CLI's allow-list. Without this
|
|
715
|
+
// probe injection, the production path defaulted to a no-op
|
|
716
|
+
// that always reported staleCliCount=0 even when the audit-
|
|
717
|
+
// row-5 case (recoveryGuidance not in CLI allow-list) was
|
|
718
|
+
// present.
|
|
719
|
+
probeRig: makeLocalCliCapabilityProbe(),
|
|
720
|
+
});
|
|
721
|
+
const mcReadLayer = new MissionControlReadLayer({
|
|
722
|
+
db,
|
|
723
|
+
queueRepo: deps.queueRepo,
|
|
724
|
+
viewProjector: deps.viewProjector,
|
|
725
|
+
streamStore: deps.streamStore,
|
|
726
|
+
fleetCliCapability: mcFleetCliCapability,
|
|
727
|
+
});
|
|
728
|
+
deps.missionControlActionLog = mcActionLog;
|
|
729
|
+
deps.missionControlWriteContract = mcWriteContract;
|
|
730
|
+
deps.missionControlFleetCliCapability = mcFleetCliCapability;
|
|
731
|
+
deps.missionControlReadLayer = mcReadLayer;
|
|
732
|
+
// PL-005 Phase B: audit-history browse layer (read-only) +
|
|
733
|
+
// notification dispatcher + bearer-token plumbing.
|
|
734
|
+
const mcAuditBrowse = new MissionControlAuditBrowse(db);
|
|
735
|
+
deps.missionControlAuditBrowse = mcAuditBrowse;
|
|
736
|
+
// Bearer token from createDaemon options is propagated to the
|
|
737
|
+
// routes constructor via deps so the auth middleware is mounted
|
|
738
|
+
// at route mount time (not per-request).
|
|
739
|
+
deps.missionControlBearerToken = opts?.bearerToken ?? null;
|
|
740
|
+
// Notification dispatcher: chosen mechanism via env config.
|
|
741
|
+
// OPENRIG_NOTIFICATIONS_MECHANISM=ntfy|webhook|none (default none).
|
|
742
|
+
// OPENRIG_NOTIFICATIONS_TARGET=<topic url | webhook url>.
|
|
743
|
+
// OPENRIG_NOTIFICATIONS_INCLUDE_VERB_COMPLETION=1 to opt into the
|
|
744
|
+
// verb-completion trigger (default off; only human-gate arrivals
|
|
745
|
+
// trigger by default per planner brief).
|
|
746
|
+
// No legacy alias for these env vars (new in Phase B).
|
|
747
|
+
const mechanism = process.env.OPENRIG_NOTIFICATIONS_MECHANISM ?? "none";
|
|
748
|
+
const target = process.env.OPENRIG_NOTIFICATIONS_TARGET ?? "";
|
|
749
|
+
const missionControlBaseUrl = process.env.OPENRIG_MISSION_CONTROL_BASE_URL ??
|
|
750
|
+
process.env.OPENRIG_URL ??
|
|
751
|
+
process.env.RIGGED_URL;
|
|
752
|
+
const includeVerbCompletion = process.env.OPENRIG_NOTIFICATIONS_INCLUDE_VERB_COMPLETION === "1";
|
|
753
|
+
if (mechanism !== "none" && target.length > 0) {
|
|
754
|
+
let adapter;
|
|
755
|
+
if (mechanism === "ntfy") {
|
|
756
|
+
adapter = new NtfyNotificationAdapter({ topicUrl: target });
|
|
757
|
+
}
|
|
758
|
+
else if (mechanism === "webhook") {
|
|
759
|
+
adapter = new WebhookNotificationAdapter({ endpointUrl: target });
|
|
760
|
+
}
|
|
761
|
+
else {
|
|
762
|
+
throw new Error(`OPENRIG_NOTIFICATIONS_MECHANISM='${mechanism}' is not recognized; supported: ntfy | webhook | none`);
|
|
763
|
+
}
|
|
764
|
+
const dispatcher = new MissionControlNotificationDispatcher({
|
|
765
|
+
db,
|
|
766
|
+
eventBus,
|
|
767
|
+
adapter,
|
|
768
|
+
includeVerbCompletion,
|
|
769
|
+
missionControlBaseUrl,
|
|
770
|
+
});
|
|
771
|
+
dispatcher.start();
|
|
772
|
+
deps.missionControlNotificationDispatcher = dispatcher;
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
// Slice Story View v0 — slice indexer + per-tab projector.
|
|
776
|
+
//
|
|
777
|
+
// User Settings v0 graduates `OPENRIG_SLICES_ROOT` env-var into the
|
|
778
|
+
// typed `workspace.slices_root` setting (resolution chain: env >
|
|
779
|
+
// config-file > default `<workspace.root>/missions`). Backward-compat:
|
|
780
|
+
// operators with OPENRIG_SLICES_ROOT set continue to work because the
|
|
781
|
+
// settings store reads env in the same resolution slot. Operators
|
|
782
|
+
// setting via `rig config set workspace.slices_root <path>` or via the
|
|
783
|
+
// System drawer Settings panel UI now flow through the indexer too —
|
|
784
|
+
// closes the PRD § Scenario B requirement that wasn't wired in v0.
|
|
785
|
+
//
|
|
786
|
+
// OPENRIG_SLICES_ROOT legacy short env var (still honored
|
|
787
|
+
// if set; preferred route is settings)
|
|
788
|
+
// OPENRIG_WORKSPACE_SLICES_ROOT typed-key env override
|
|
789
|
+
// workspace.slices_root typed setting in ~/.openrig/config.json
|
|
790
|
+
// workspace.root cascade fallback (default ~/.openrig/workspace)
|
|
791
|
+
// workspace.dogfood_evidence_root typed setting for proof packet assets
|
|
792
|
+
// OPENRIG_DOGFOOD_EVIDENCE_ROOT env override for compatibility
|
|
793
|
+
//
|
|
794
|
+
// When the resolved slicesRoot path doesn't exist on disk, the indexer
|
|
795
|
+
// is still constructed but isReady() returns false — the routes return
|
|
796
|
+
// a clear "slices_root_not_configured" 503 with a setup hint.
|
|
797
|
+
{
|
|
798
|
+
// Prefer the legacy short env var if explicitly set (existing
|
|
799
|
+
// dogfood / test daemons rely on it). Otherwise fall back to the
|
|
800
|
+
// settings-resolved path (env > file > default cascade inside
|
|
801
|
+
// SettingsStore). The SettingsStore is constructed locally here
|
|
802
|
+
// so the slices block doesn't depend on the User Settings v0 wiring
|
|
803
|
+
// block ordering further below.
|
|
804
|
+
const legacyEnvSlicesRoot = readOpenRigEnv("OPENRIG_SLICES_ROOT", "RIGGED_SLICES_ROOT") ?? "";
|
|
805
|
+
let resolvedSlicesRoot = "";
|
|
806
|
+
let resolvedWorkspaceRoot = "";
|
|
807
|
+
let resolvedDogfoodRoot = "";
|
|
808
|
+
if (!legacyEnvSlicesRoot) {
|
|
809
|
+
try {
|
|
810
|
+
const { SettingsStore: SettingsStoreCtor } = await import("./domain/user-settings/settings-store.js");
|
|
811
|
+
const resolvedConfig = new SettingsStoreCtor().resolveConfig();
|
|
812
|
+
resolvedSlicesRoot = resolvedConfig.workspaceSlicesRoot;
|
|
813
|
+
resolvedWorkspaceRoot = resolvedConfig.workspaceRoot;
|
|
814
|
+
resolvedDogfoodRoot = resolvedConfig.workspaceDogfoodEvidenceRoot;
|
|
815
|
+
}
|
|
816
|
+
catch {
|
|
817
|
+
// SettingsStore unavailable — keep slicesRoot empty; routes return 503.
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
else {
|
|
821
|
+
try {
|
|
822
|
+
const { SettingsStore: SettingsStoreCtor } = await import("./domain/user-settings/settings-store.js");
|
|
823
|
+
const resolvedConfig = new SettingsStoreCtor().resolveConfig();
|
|
824
|
+
resolvedDogfoodRoot = resolvedConfig.workspaceDogfoodEvidenceRoot;
|
|
825
|
+
}
|
|
826
|
+
catch {
|
|
827
|
+
// SettingsStore unavailable — proof packets remain disabled.
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
const slicesRoot = legacyEnvSlicesRoot || resolvedSlicesRoot;
|
|
831
|
+
const additionalSliceRoots = resolvedWorkspaceRoot
|
|
832
|
+
? [
|
|
833
|
+
nodePath.join(resolvedWorkspaceRoot, "missions"),
|
|
834
|
+
nodePath.join(resolvedWorkspaceRoot, "slices"),
|
|
835
|
+
].filter((root) => root !== slicesRoot)
|
|
836
|
+
: [];
|
|
837
|
+
const { SliceIndexer } = await import("./domain/slices/slice-indexer.js");
|
|
838
|
+
const { SliceDetailProjector } = await import("./domain/slices/slice-detail-projector.js");
|
|
839
|
+
const sliceIndexer = new SliceIndexer({
|
|
840
|
+
slicesRoot,
|
|
841
|
+
additionalSliceRoots,
|
|
842
|
+
dogfoodEvidenceRoot: resolvedDogfoodRoot || null,
|
|
843
|
+
db,
|
|
844
|
+
});
|
|
845
|
+
// Slice Story View v1: pass workflowRuntime.specCache so the
|
|
846
|
+
// projector can resolve a bound workflow_instance's spec for
|
|
847
|
+
// spec-graph + phase + current-step projection. When the workflow
|
|
848
|
+
// runtime is not constructed (queueRepo absent — same condition
|
|
849
|
+
// already guards the workflowRuntime block above), the projector
|
|
850
|
+
// silently degrades to v0 behavior (workflowBinding=null,
|
|
851
|
+
// specGraph=null, phaseDefinitions=null, currentStep=null).
|
|
852
|
+
const sliceDetailProjector = new SliceDetailProjector({
|
|
853
|
+
db,
|
|
854
|
+
indexer: sliceIndexer,
|
|
855
|
+
workflowSpecCache: workflowRuntime?.specCache,
|
|
856
|
+
});
|
|
857
|
+
deps.sliceIndexer = sliceIndexer;
|
|
858
|
+
deps.sliceDetailProjector = sliceDetailProjector;
|
|
859
|
+
}
|
|
860
|
+
// UI Enhancement Pack v0:
|
|
861
|
+
// - file allowlist (item 3) from OPENRIG_FILES_ALLOWLIST
|
|
862
|
+
// - atomic write service (item 4) wired only when allowlist non-empty
|
|
863
|
+
// - progress scan-roots (item 1B) from OPENRIG_PROGRESS_SCAN_ROOTS
|
|
864
|
+
//
|
|
865
|
+
// Empty env → empty allowlist / no-roots indexer; routes return 503
|
|
866
|
+
// with structured config hints so the UI can surface a setup message
|
|
867
|
+
// instead of a generic error.
|
|
868
|
+
{
|
|
869
|
+
const { decodeAllowlist } = await import("./domain/files/path-safety.js");
|
|
870
|
+
const { FileWriteService } = await import("./domain/files/file-write-service.js");
|
|
871
|
+
const { ProgressIndexer, decodeProgressScanRoots } = await import("./domain/progress/progress-indexer.js");
|
|
872
|
+
// User Settings v0 — UEP env-vars graduated to typed settings.
|
|
873
|
+
// Resolution: env > settings file > empty. SettingsStore handles
|
|
874
|
+
// the env > file > default precedence; we just decode the raw
|
|
875
|
+
// string into structured roots.
|
|
876
|
+
const { SettingsStore } = await import("./domain/user-settings/settings-store.js");
|
|
877
|
+
const settingsStore = new SettingsStore();
|
|
878
|
+
deps.settingsStore = settingsStore;
|
|
879
|
+
const cfg = settingsStore.resolveConfig();
|
|
880
|
+
// Preview Terminal v0 (PL-018) — per-session rate limiter for the
|
|
881
|
+
// /preview route. 1-second window per (session, lines) cache key:
|
|
882
|
+
// short enough that legitimate polling at the operator's refresh
|
|
883
|
+
// interval (`ui.preview.refresh_interval_seconds`, default 3s) always
|
|
884
|
+
// sees fresh content, but multiple pinned-pane requests for the same
|
|
885
|
+
// seat within a single second collapse to one tmux capture.
|
|
886
|
+
const { PreviewRateLimiter } = await import("./domain/preview/preview-rate-limiter.js");
|
|
887
|
+
deps.previewRateLimiter = new PreviewRateLimiter(1000);
|
|
888
|
+
const filesAllowlist = decodeAllowlist(cfg.filesAllowlistRaw);
|
|
889
|
+
deps.filesAllowlist = filesAllowlist;
|
|
890
|
+
deps.fileWriteService = filesAllowlist.length > 0
|
|
891
|
+
? new FileWriteService({
|
|
892
|
+
allowlist: filesAllowlist,
|
|
893
|
+
auditFilePath: nodePath.join(OPENRIG_HOME, "file-edit-audit.jsonl"),
|
|
894
|
+
})
|
|
895
|
+
: null;
|
|
896
|
+
deps.progressIndexer = new ProgressIndexer({ roots: decodeProgressScanRoots(cfg.progressScanRootsRaw) });
|
|
897
|
+
// Operator Surface Reconciliation v0 — steering composer (item 1).
|
|
898
|
+
// Reads typed workspace settings by default while preserving the
|
|
899
|
+
// OPENRIG_STEERING_* env override family for non-canonical layouts.
|
|
900
|
+
const { SteeringComposer, steeringOptsFromSettings } = await import("./domain/steering/steering-composer.js");
|
|
901
|
+
deps.steeringComposer = new SteeringComposer(steeringOptsFromSettings({
|
|
902
|
+
workspaceRoot: cfg.workspaceRoot,
|
|
903
|
+
workspaceSteeringPath: cfg.workspaceSteeringPath,
|
|
904
|
+
}));
|
|
905
|
+
// Workflows in Spec Library + Activation Lens v0 — active lens
|
|
906
|
+
// persistence under OPENRIG_HOME/active-workflow-lens.json. Same
|
|
907
|
+
// file-backed pattern as UI Enhancement Pack v0's audit JSONL —
|
|
908
|
+
// honors OPENRIG_HOME so isolated test/dogfood daemons keep their
|
|
909
|
+
// own lens state instead of bleeding into the operator's host.
|
|
910
|
+
const { ActiveLensStore } = await import("./domain/active-lens-store.js");
|
|
911
|
+
deps.activeLensStore = new ActiveLensStore({
|
|
912
|
+
filePath: nodePath.join(OPENRIG_HOME, "active-workflow-lens.json"),
|
|
913
|
+
});
|
|
914
|
+
}
|
|
915
|
+
const sessionTransport = deps.sessionTransport;
|
|
916
|
+
if (sessionTransport) {
|
|
917
|
+
const watchdogPolicyEngine = new WatchdogPolicyEngine({
|
|
918
|
+
jobsRepo: watchdogJobsRepoInstance,
|
|
919
|
+
historyLog: watchdogHistoryLogInstance,
|
|
920
|
+
eventBus,
|
|
921
|
+
deliver: async ({ targetSession, message }) => {
|
|
922
|
+
try {
|
|
923
|
+
const result = await sessionTransport.send(targetSession, message);
|
|
924
|
+
return result.ok ? { status: "ok" } : { status: "failed", error: result.error };
|
|
925
|
+
}
|
|
926
|
+
catch (err) {
|
|
927
|
+
return { status: "failed", error: err instanceof Error ? err.message : String(err) };
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
// PL-004 Phase D: register workflow-keepalive policy alongside
|
|
931
|
+
// Phase C's three built-in policies. workflow-keepalive reads
|
|
932
|
+
// SQLite workflow_instances directly via the new Phase D tables
|
|
933
|
+
// (audit row 18: SQLite-source-only, no markdown read).
|
|
934
|
+
additionalPolicies: [makeWorkflowKeepalivePolicy({ db })],
|
|
935
|
+
});
|
|
936
|
+
const watchdogScheduler = new WatchdogScheduler({
|
|
937
|
+
jobsRepo: watchdogJobsRepoInstance,
|
|
938
|
+
policyEngine: watchdogPolicyEngine,
|
|
939
|
+
});
|
|
940
|
+
deps.watchdogPolicyEngine = watchdogPolicyEngine;
|
|
941
|
+
deps.watchdogScheduler = watchdogScheduler;
|
|
942
|
+
}
|
|
943
|
+
// Context monitor — constructed before createApp so routes can access pollOnce for refresh.
|
|
944
|
+
// Caller (index.ts) starts polling after listen.
|
|
370
945
|
const { ContextMonitor } = await import("./domain/context-monitor.js");
|
|
371
946
|
const contextMonitor = new ContextMonitor(db, contextUsageStore, claudeAdapter);
|
|
947
|
+
deps.contextMonitor = contextMonitor;
|
|
948
|
+
const app = createApp(deps);
|
|
372
949
|
return { app, db, deps, contextMonitor };
|
|
373
950
|
}
|
|
374
951
|
//# sourceMappingURL=startup.js.map
|