@openrig/cli 0.2.0 → 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/dist/adapters/claude-code-adapter.d.ts +10 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +41 -3
- package/daemon/dist/adapters/claude-code-adapter.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/026_inbox_entries.d.ts +1 -1
- package/daemon/dist/db/migrations/026_inbox_entries.js +1 -1
- package/daemon/dist/db/migrations/029_classifier_leases.d.ts +1 -1
- package/daemon/dist/db/migrations/029_classifier_leases.js +1 -1
- 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-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-starter-resolver.d.ts +10 -16
- package/daemon/dist/domain/agent-starter-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/agent-starter-resolver.js +11 -13
- package/daemon/dist/domain/agent-starter-resolver.js.map +1 -1
- package/daemon/dist/domain/classifier-lease-manager.d.ts +1 -1
- package/daemon/dist/domain/classifier-lease-manager.js +1 -1
- 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 +14 -1
- package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
- package/daemon/dist/domain/context-usage-store.js +156 -1
- 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/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/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +24 -0
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/node-launcher.js +7 -5
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- 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 +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +22 -4
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +80 -22
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- 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.map +1 -1
- package/daemon/dist/domain/restore-check-service.js +19 -6
- package/daemon/dist/domain/restore-check-service.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +4 -2
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +14 -0
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +41 -0
- 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 +15 -0
- package/daemon/dist/domain/rigspec-codec.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 +136 -4
- 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 +157 -4
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +11 -0
- package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-adapter.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/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-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/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-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.map +1 -1
- package/daemon/dist/domain/transcript-store.js +7 -1
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +101 -2
- 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.map +1 -1
- package/daemon/dist/domain/view-event-bridge.js +2 -3
- package/daemon/dist/domain/view-event-bridge.js.map +1 -1
- 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-projector.js +11 -3
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts +7 -0
- package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.js +62 -15
- package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
- 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 +10 -1
- 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/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/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +52 -1
- package/daemon/dist/routes/queue.js.map +1 -1
- 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 +73 -7
- 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/sessions.d.ts.map +1 -1
- package/daemon/dist/routes/sessions.js +119 -0
- 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/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/up.d.ts.map +1 -1
- package/daemon/dist/routes/up.js +21 -3
- package/daemon/dist/routes/up.js.map +1 -1
- 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.map +1 -1
- package/daemon/dist/routes/workflow.js +43 -0
- package/daemon/dist/routes/workflow.js.map +1 -1
- 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 +51 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +52 -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 +385 -2
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +7 -7
- package/daemon/docs/reference/agent-startup-guide.md +2 -2
- package/daemon/docs/reference/project-workspace.md +102 -0
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
- 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/development/implementer/agent.yaml +1 -1
- package/daemon/specs/agents/development/implementer/guidance/role.md +0 -1
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
- package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +2 -3
- package/daemon/specs/agents/shared/agent.yaml +0 -2
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +25 -0
- package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +153 -0
- package/daemon/specs/agents/shared/skills/rig-architect/SKILL.md +1 -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/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/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/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +8 -0
- package/dist/commands/daemon.js.map +1 -1
- 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/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +173 -14
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +9 -0
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/send.d.ts +7 -0
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +24 -1
- package/dist/commands/send.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 +12 -8
- package/dist/commands/specs.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +17 -3
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +9 -4
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +37 -0
- package/dist/commands/workflow.js.map +1 -1
- 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/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/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.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.js +1 -1
- package/dist/restore-packet/claude-transcript-parser.js.map +1 -1
- package/dist/restore-packet/codex-jsonl-parser.js +1 -1
- package/dist/restore-packet/codex-jsonl-parser.js.map +1 -1
- package/package.json +2 -2
- 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 -956
- package/ui/dist/assets/index-B09doO8H.js +0 -139
- package/ui/dist/assets/index-Dec25siz.css +0 -1
- package/ui/dist/assets/index-GNYaWmBj.js +0 -225
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { EventBus } from "../event-bus.js";
|
|
3
|
+
import type { RigRepository } from "../rig-repository.js";
|
|
4
|
+
export interface FleetRollupRow {
|
|
5
|
+
rigName: string;
|
|
6
|
+
/** Compact 5-state activity for a fleet view. */
|
|
7
|
+
activityState: "active" | "idle" | "attention" | "blocked" | "degraded";
|
|
8
|
+
lifecycleState: string | null;
|
|
9
|
+
attentionReason: string | null;
|
|
10
|
+
lastUpdate: string;
|
|
11
|
+
/** v0.1.12-style label or "head" / "unknown". */
|
|
12
|
+
cliVersionLabel: string;
|
|
13
|
+
/** True if this rig was observed missing one or more allow-listed fields. */
|
|
14
|
+
cliDriftDetected: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface FleetRollup {
|
|
17
|
+
rows: FleetRollupRow[];
|
|
18
|
+
staleCliCount: number;
|
|
19
|
+
/** Fields known to be missing across the observed rigs (de-duplicated). */
|
|
20
|
+
degradedFields: string[];
|
|
21
|
+
/**
|
|
22
|
+
* If the fleet roll-up couldn't reach the canonical CLI source and
|
|
23
|
+
* fell back to a daemon-internal projection, this is the fallback
|
|
24
|
+
* mode label. Null when the canonical source was used.
|
|
25
|
+
*/
|
|
26
|
+
sourceFallback: string | null;
|
|
27
|
+
}
|
|
28
|
+
interface CliCapabilityDeps {
|
|
29
|
+
db: Database.Database;
|
|
30
|
+
eventBus: EventBus;
|
|
31
|
+
rigRepo: RigRepository;
|
|
32
|
+
/**
|
|
33
|
+
* Optional: probe a rig for which `rig ps --fields <field>` keys it
|
|
34
|
+
* supports. v0 default is a no-op (returns empty unsupported list);
|
|
35
|
+
* future versions may shell out to `rig ps --version` per rig.
|
|
36
|
+
*/
|
|
37
|
+
probeRig?: (rigName: string) => Promise<{
|
|
38
|
+
cliVersionLabel: string;
|
|
39
|
+
unsupportedFields: string[];
|
|
40
|
+
}>;
|
|
41
|
+
/** Override clock for tests. */
|
|
42
|
+
now?: () => Date;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Fields the operator-friendly fleet view tries to present. When a rig
|
|
46
|
+
* does not surface one of these fields, the per-row drift indicator is
|
|
47
|
+
* set + the per-(rig,field) "logged once" event is emitted.
|
|
48
|
+
*
|
|
49
|
+
* `recoveryGuidance` is intentionally listed even though it is not in
|
|
50
|
+
* the 0.2.0 CLI allow-list (audit row 5 yellow). This is the canonical
|
|
51
|
+
* cross-CLI-version drift case: the spec assumes some future CLI
|
|
52
|
+
* surfaces this; the read-layer surfaces "field unavailable on this
|
|
53
|
+
* rig's daemon version" honestly today.
|
|
54
|
+
*/
|
|
55
|
+
export declare const MISSION_CONTROL_DESIRED_FIELDS: readonly ["agentActivity", "recoveryGuidance"];
|
|
56
|
+
/**
|
|
57
|
+
* Daemon-side mirror of the CLI's `rig ps --nodes --fields ...`
|
|
58
|
+
* node-level allow-list. Sourced from
|
|
59
|
+
* `packages/cli/src/commands/ps.ts:79-96` (ALLOWED_NODE_FIELDS).
|
|
60
|
+
* The CLI does not export this set, so the daemon mirrors it here at
|
|
61
|
+
* the workspace version (Phase A v0 ships at OpenRig 0.2.0). Future
|
|
62
|
+
* graduation can replace this mirror with a live CLI introspection
|
|
63
|
+
* shell-out per rig; v1 single-host topology makes that overhead
|
|
64
|
+
* unnecessary.
|
|
65
|
+
*
|
|
66
|
+
* To compute drift: any field in MISSION_CONTROL_DESIRED_FIELDS that
|
|
67
|
+
* is NOT in this set is "missing on this rig's CLI version" — the
|
|
68
|
+
* production probe surfaces it as drift.
|
|
69
|
+
*/
|
|
70
|
+
export declare const LOCAL_CLI_NODE_FIELDS_AT_0_2_0: ReadonlySet<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Local CLI version label embedded at workspace build time. Mission
|
|
73
|
+
* Control reports this label in the drift indicator alongside per-rig
|
|
74
|
+
* field availability. Hardcoded at v0.2.0 (the workspace shipping
|
|
75
|
+
* version); a future graduation can read it from package.json or a
|
|
76
|
+
* build-time constant.
|
|
77
|
+
*/
|
|
78
|
+
export declare const LOCAL_CLI_VERSION_LABEL = "0.2.0";
|
|
79
|
+
/**
|
|
80
|
+
* Production probe factory (R1 fix per guard PL-005 Phase A review).
|
|
81
|
+
* Returns a probeRig function that compares MISSION_CONTROL_DESIRED_FIELDS
|
|
82
|
+
* against the daemon-mirrored LOCAL_CLI_NODE_FIELDS_AT_0_2_0 set and
|
|
83
|
+
* reports any missing fields as drift. Per-rig honesty (sub-clause 2):
|
|
84
|
+
* each rig is probed individually; in v1 single-host topology all rigs
|
|
85
|
+
* share the same local CLI, so they all report the same drift result,
|
|
86
|
+
* which is the honest outcome for the audit-row-5 case.
|
|
87
|
+
*
|
|
88
|
+
* For test scaffolding (or a future per-rig shell-out probe), callers
|
|
89
|
+
* can override probeRig in the constructor; this factory is the v1
|
|
90
|
+
* production default and is wired into createDaemon's startup so the
|
|
91
|
+
* `/api/mission-control/cli-capabilities` route reports drift honestly
|
|
92
|
+
* out of the box.
|
|
93
|
+
*/
|
|
94
|
+
export declare function makeLocalCliCapabilityProbe(opts?: {
|
|
95
|
+
versionLabel?: string;
|
|
96
|
+
knownNodeFields?: ReadonlySet<string>;
|
|
97
|
+
}): (rigName: string) => Promise<{
|
|
98
|
+
cliVersionLabel: string;
|
|
99
|
+
unsupportedFields: string[];
|
|
100
|
+
}>;
|
|
101
|
+
export declare class MissionControlFleetCliCapability {
|
|
102
|
+
private readonly db;
|
|
103
|
+
private readonly eventBus;
|
|
104
|
+
private readonly rigRepo;
|
|
105
|
+
private readonly probeRig;
|
|
106
|
+
private readonly now;
|
|
107
|
+
/** Per-(rig, field) once-per-session log set. Cleared on daemon restart. */
|
|
108
|
+
private readonly loggedDriftKeys;
|
|
109
|
+
constructor(deps: CliCapabilityDeps);
|
|
110
|
+
rollupFleet(): Promise<FleetRollup>;
|
|
111
|
+
/**
|
|
112
|
+
* Per-(rig, field) once-per-session-per-rig log per PRD sub-clause 3.
|
|
113
|
+
* Daemon restart clears the set so logging fires again on first
|
|
114
|
+
* post-restart observation.
|
|
115
|
+
*/
|
|
116
|
+
private maybeLogDriftOnce;
|
|
117
|
+
/**
|
|
118
|
+
* Summarize a rig's queue state for the fleet view. Synthesized
|
|
119
|
+
* from PL-004 Phase A queue_items via a single SQL aggregation:
|
|
120
|
+
* - active: any in-progress qitem
|
|
121
|
+
* - blocked: any blocked qitem (no in-progress)
|
|
122
|
+
* - attention: only pending qitems older than 1h
|
|
123
|
+
* - idle: no active queue activity
|
|
124
|
+
* - degraded: any failed/denied/canceled qitem in last 24h
|
|
125
|
+
*/
|
|
126
|
+
private summarizeRigQueue;
|
|
127
|
+
/** Test/observability helper: clear the once-per-session log set. */
|
|
128
|
+
resetDriftLogForTest(): void;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=mission-control-fleet-cli-capability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mission-control-fleet-cli-capability.d.ts","sourceRoot":"","sources":["../../../src/domain/mission-control/mission-control-fleet-cli-capability.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,aAAa,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IACxE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,iBAAiB;IACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QACtC,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC,CAAC;IACH,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AASD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,gDAGjC,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,8BAA8B,EAAE,WAAW,CAAC,MAAM,CAiB7D,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC,CAYD;AAID,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IACtE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IAEjC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0B;gBAE9C,IAAI,EAAE,iBAAiB;IAU7B,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IA2CzC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAoDzB,qEAAqE;IACrE,oBAAoB,IAAI,IAAI;CAG7B"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// PL-005 Phase A: per-rig CLI capability cache + fleet roll-up.
|
|
2
|
+
//
|
|
3
|
+
// Implements the 4 sub-clauses of PRD § Runtime/Source Drift Acceptance:
|
|
4
|
+
// 1. Per-field availability check on `rig ps --fields <field>`.
|
|
5
|
+
// 2. Per-rig CLI capability honesty (each rig surfaces its own capabilities).
|
|
6
|
+
// 3. Once-per-session-per-rig logging — degradation logs ONCE per (rig, field),
|
|
7
|
+
// not per render.
|
|
8
|
+
// 4. "Rigs running stale CLI" indicator surfaced in fleet view meta.
|
|
9
|
+
//
|
|
10
|
+
// At v0 the daemon owns its own DB-bound topology + queue surfaces and
|
|
11
|
+
// can synthesize a fleet roll-up from PL-004 Phase A queue_items + the
|
|
12
|
+
// rig registry. The implementation supports an optional `psShellOut`
|
|
13
|
+
// hook for future direct CLI shelling; default keeps the fleet roll-up
|
|
14
|
+
// in-process so tests are deterministic.
|
|
15
|
+
/**
|
|
16
|
+
* Fields the operator-friendly fleet view tries to present. When a rig
|
|
17
|
+
* does not surface one of these fields, the per-row drift indicator is
|
|
18
|
+
* set + the per-(rig,field) "logged once" event is emitted.
|
|
19
|
+
*
|
|
20
|
+
* `recoveryGuidance` is intentionally listed even though it is not in
|
|
21
|
+
* the 0.2.0 CLI allow-list (audit row 5 yellow). This is the canonical
|
|
22
|
+
* cross-CLI-version drift case: the spec assumes some future CLI
|
|
23
|
+
* surfaces this; the read-layer surfaces "field unavailable on this
|
|
24
|
+
* rig's daemon version" honestly today.
|
|
25
|
+
*/
|
|
26
|
+
export const MISSION_CONTROL_DESIRED_FIELDS = [
|
|
27
|
+
"agentActivity",
|
|
28
|
+
"recoveryGuidance",
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Daemon-side mirror of the CLI's `rig ps --nodes --fields ...`
|
|
32
|
+
* node-level allow-list. Sourced from
|
|
33
|
+
* `packages/cli/src/commands/ps.ts:79-96` (ALLOWED_NODE_FIELDS).
|
|
34
|
+
* The CLI does not export this set, so the daemon mirrors it here at
|
|
35
|
+
* the workspace version (Phase A v0 ships at OpenRig 0.2.0). Future
|
|
36
|
+
* graduation can replace this mirror with a live CLI introspection
|
|
37
|
+
* shell-out per rig; v1 single-host topology makes that overhead
|
|
38
|
+
* unnecessary.
|
|
39
|
+
*
|
|
40
|
+
* To compute drift: any field in MISSION_CONTROL_DESIRED_FIELDS that
|
|
41
|
+
* is NOT in this set is "missing on this rig's CLI version" — the
|
|
42
|
+
* production probe surfaces it as drift.
|
|
43
|
+
*/
|
|
44
|
+
export const LOCAL_CLI_NODE_FIELDS_AT_0_2_0 = new Set([
|
|
45
|
+
"rigId",
|
|
46
|
+
"rigName",
|
|
47
|
+
"logicalId",
|
|
48
|
+
"podId",
|
|
49
|
+
"podNamespace",
|
|
50
|
+
"canonicalSessionName",
|
|
51
|
+
"nodeKind",
|
|
52
|
+
"runtime",
|
|
53
|
+
"sessionStatus",
|
|
54
|
+
"startupStatus",
|
|
55
|
+
"restoreOutcome",
|
|
56
|
+
"lifecycleState",
|
|
57
|
+
"tmuxAttachCommand",
|
|
58
|
+
"resumeCommand",
|
|
59
|
+
"latestError",
|
|
60
|
+
"agentActivity",
|
|
61
|
+
]);
|
|
62
|
+
/**
|
|
63
|
+
* Local CLI version label embedded at workspace build time. Mission
|
|
64
|
+
* Control reports this label in the drift indicator alongside per-rig
|
|
65
|
+
* field availability. Hardcoded at v0.2.0 (the workspace shipping
|
|
66
|
+
* version); a future graduation can read it from package.json or a
|
|
67
|
+
* build-time constant.
|
|
68
|
+
*/
|
|
69
|
+
export const LOCAL_CLI_VERSION_LABEL = "0.2.0";
|
|
70
|
+
/**
|
|
71
|
+
* Production probe factory (R1 fix per guard PL-005 Phase A review).
|
|
72
|
+
* Returns a probeRig function that compares MISSION_CONTROL_DESIRED_FIELDS
|
|
73
|
+
* against the daemon-mirrored LOCAL_CLI_NODE_FIELDS_AT_0_2_0 set and
|
|
74
|
+
* reports any missing fields as drift. Per-rig honesty (sub-clause 2):
|
|
75
|
+
* each rig is probed individually; in v1 single-host topology all rigs
|
|
76
|
+
* share the same local CLI, so they all report the same drift result,
|
|
77
|
+
* which is the honest outcome for the audit-row-5 case.
|
|
78
|
+
*
|
|
79
|
+
* For test scaffolding (or a future per-rig shell-out probe), callers
|
|
80
|
+
* can override probeRig in the constructor; this factory is the v1
|
|
81
|
+
* production default and is wired into createDaemon's startup so the
|
|
82
|
+
* `/api/mission-control/cli-capabilities` route reports drift honestly
|
|
83
|
+
* out of the box.
|
|
84
|
+
*/
|
|
85
|
+
export function makeLocalCliCapabilityProbe(opts) {
|
|
86
|
+
const versionLabel = opts?.versionLabel ?? LOCAL_CLI_VERSION_LABEL;
|
|
87
|
+
const knownFields = opts?.knownNodeFields ?? LOCAL_CLI_NODE_FIELDS_AT_0_2_0;
|
|
88
|
+
return async (_rigName) => {
|
|
89
|
+
const unsupportedFields = [];
|
|
90
|
+
for (const desired of MISSION_CONTROL_DESIRED_FIELDS) {
|
|
91
|
+
if (!knownFields.has(desired)) {
|
|
92
|
+
unsupportedFields.push(desired);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return { cliVersionLabel: versionLabel, unsupportedFields };
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export class MissionControlFleetCliCapability {
|
|
99
|
+
db;
|
|
100
|
+
eventBus;
|
|
101
|
+
rigRepo;
|
|
102
|
+
probeRig;
|
|
103
|
+
now;
|
|
104
|
+
/** Per-(rig, field) once-per-session log set. Cleared on daemon restart. */
|
|
105
|
+
loggedDriftKeys = new Set();
|
|
106
|
+
constructor(deps) {
|
|
107
|
+
this.db = deps.db;
|
|
108
|
+
this.eventBus = deps.eventBus;
|
|
109
|
+
this.rigRepo = deps.rigRepo;
|
|
110
|
+
this.probeRig =
|
|
111
|
+
deps.probeRig ??
|
|
112
|
+
(async () => ({ cliVersionLabel: "unknown", unsupportedFields: [] }));
|
|
113
|
+
this.now = deps.now ?? (() => new Date());
|
|
114
|
+
}
|
|
115
|
+
async rollupFleet() {
|
|
116
|
+
const rigs = this.rigRepo.listRigs();
|
|
117
|
+
const rows = [];
|
|
118
|
+
const allDegradedFields = new Set();
|
|
119
|
+
let staleCliCount = 0;
|
|
120
|
+
for (const rig of rigs) {
|
|
121
|
+
let probe;
|
|
122
|
+
try {
|
|
123
|
+
probe = await this.probeRig(rig.name);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
probe = { cliVersionLabel: "unknown", unsupportedFields: [...MISSION_CONTROL_DESIRED_FIELDS] };
|
|
127
|
+
}
|
|
128
|
+
const driftDetected = probe.unsupportedFields.length > 0;
|
|
129
|
+
if (driftDetected)
|
|
130
|
+
staleCliCount++;
|
|
131
|
+
for (const f of probe.unsupportedFields) {
|
|
132
|
+
allDegradedFields.add(f);
|
|
133
|
+
this.maybeLogDriftOnce(rig.name, f);
|
|
134
|
+
}
|
|
135
|
+
const queueState = this.summarizeRigQueue(rig.name);
|
|
136
|
+
rows.push({
|
|
137
|
+
rigName: rig.name,
|
|
138
|
+
activityState: queueState.activityState,
|
|
139
|
+
lifecycleState: queueState.lifecycleState,
|
|
140
|
+
attentionReason: queueState.attentionReason,
|
|
141
|
+
lastUpdate: queueState.lastUpdate,
|
|
142
|
+
cliVersionLabel: probe.cliVersionLabel,
|
|
143
|
+
cliDriftDetected: driftDetected,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
rows,
|
|
148
|
+
staleCliCount,
|
|
149
|
+
degradedFields: Array.from(allDegradedFields),
|
|
150
|
+
// v0 reads from the daemon-internal rig registry + queue_items;
|
|
151
|
+
// future versions can shell out to `rig ps --nodes --json` and
|
|
152
|
+
// set sourceFallback to "daemon-internal" when the CLI is
|
|
153
|
+
// unavailable.
|
|
154
|
+
sourceFallback: "daemon-internal-projection",
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Per-(rig, field) once-per-session-per-rig log per PRD sub-clause 3.
|
|
159
|
+
* Daemon restart clears the set so logging fires again on first
|
|
160
|
+
* post-restart observation.
|
|
161
|
+
*/
|
|
162
|
+
maybeLogDriftOnce(rigName, missingField) {
|
|
163
|
+
const key = `${rigName}::${missingField}`;
|
|
164
|
+
if (this.loggedDriftKeys.has(key))
|
|
165
|
+
return;
|
|
166
|
+
this.loggedDriftKeys.add(key);
|
|
167
|
+
const observedAt = this.now().toISOString();
|
|
168
|
+
this.eventBus.emit({
|
|
169
|
+
type: "mission_control.cli_drift_detected",
|
|
170
|
+
rigName,
|
|
171
|
+
missingField,
|
|
172
|
+
observedAt,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Summarize a rig's queue state for the fleet view. Synthesized
|
|
177
|
+
* from PL-004 Phase A queue_items via a single SQL aggregation:
|
|
178
|
+
* - active: any in-progress qitem
|
|
179
|
+
* - blocked: any blocked qitem (no in-progress)
|
|
180
|
+
* - attention: only pending qitems older than 1h
|
|
181
|
+
* - idle: no active queue activity
|
|
182
|
+
* - degraded: any failed/denied/canceled qitem in last 24h
|
|
183
|
+
*/
|
|
184
|
+
summarizeRigQueue(rigName) {
|
|
185
|
+
const ownedSessions = this.db
|
|
186
|
+
.prepare(`SELECT destination_session, state, ts_updated, blocked_on
|
|
187
|
+
FROM queue_items
|
|
188
|
+
WHERE destination_session LIKE ?
|
|
189
|
+
OR source_session LIKE ?
|
|
190
|
+
ORDER BY ts_updated DESC LIMIT 100`)
|
|
191
|
+
.all(`%@${rigName}`, `%@${rigName}`);
|
|
192
|
+
if (ownedSessions.length === 0) {
|
|
193
|
+
return {
|
|
194
|
+
activityState: "idle",
|
|
195
|
+
lifecycleState: null,
|
|
196
|
+
attentionReason: null,
|
|
197
|
+
lastUpdate: this.now().toISOString(),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
const lastUpdate = ownedSessions[0].ts_updated;
|
|
201
|
+
const hasInProgress = ownedSessions.some((q) => q.state === "in-progress");
|
|
202
|
+
const hasBlocked = ownedSessions.some((q) => q.state === "blocked");
|
|
203
|
+
const hasFailed = ownedSessions.some((q) => q.state === "failed" || q.state === "denied" || q.state === "canceled");
|
|
204
|
+
let activityState = "idle";
|
|
205
|
+
let attentionReason = null;
|
|
206
|
+
if (hasInProgress) {
|
|
207
|
+
activityState = "active";
|
|
208
|
+
}
|
|
209
|
+
else if (hasBlocked) {
|
|
210
|
+
activityState = "blocked";
|
|
211
|
+
const blockedRow = ownedSessions.find((q) => q.state === "blocked");
|
|
212
|
+
attentionReason = blockedRow?.blocked_on
|
|
213
|
+
? `blocked-on: ${blockedRow.blocked_on}`
|
|
214
|
+
: "blocked";
|
|
215
|
+
}
|
|
216
|
+
else if (hasFailed) {
|
|
217
|
+
activityState = "degraded";
|
|
218
|
+
attentionReason = "recent failure / denial / cancel in queue";
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
activityState,
|
|
222
|
+
lifecycleState: ownedSessions[0].state,
|
|
223
|
+
attentionReason,
|
|
224
|
+
lastUpdate,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/** Test/observability helper: clear the once-per-session log set. */
|
|
228
|
+
resetDriftLogForTest() {
|
|
229
|
+
this.loggedDriftKeys.clear();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=mission-control-fleet-cli-capability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mission-control-fleet-cli-capability.js","sourceRoot":"","sources":["../../../src/domain/mission-control/mission-control-fleet-cli-capability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { QueueRepository } from "../queue-repository.js";
|
|
3
|
+
import type { ViewProjector } from "../view-projector.js";
|
|
4
|
+
import type { StreamStore } from "../stream-store.js";
|
|
5
|
+
import type { MissionControlFleetCliCapability } from "./mission-control-fleet-cli-capability.js";
|
|
6
|
+
export declare const MISSION_CONTROL_VIEWS: readonly ["my-queue", "human-gate", "fleet", "active-work", "recent-ships", "recently-active", "recent-observations"];
|
|
7
|
+
export type MissionControlViewName = (typeof MISSION_CONTROL_VIEWS)[number];
|
|
8
|
+
/**
|
|
9
|
+
* The 9-field phone-friendly content model. Per PRD § Acceptance
|
|
10
|
+
* Criteria item 1, non-negotiable across all 7 views wherever
|
|
11
|
+
* row-shaped status is shown. UI may render compact; JSON preserves
|
|
12
|
+
* all 9 fields.
|
|
13
|
+
*
|
|
14
|
+
* 9 fields verbatim from PRD:
|
|
15
|
+
* 1. rig/mission name
|
|
16
|
+
* 2. current phase
|
|
17
|
+
* 3. active/idle/attention/blocked/degraded
|
|
18
|
+
* 4. next-action
|
|
19
|
+
* 5. pending-human-decision
|
|
20
|
+
* 6. read-cost (full / skim/approve / summary-only)
|
|
21
|
+
* 7. last-update timestamp
|
|
22
|
+
* 8. confidence/freshness
|
|
23
|
+
* 9. evidence link
|
|
24
|
+
*/
|
|
25
|
+
export interface CompactStatusRow {
|
|
26
|
+
rigOrMissionName: string;
|
|
27
|
+
currentPhase: string | null;
|
|
28
|
+
state: "active" | "idle" | "attention" | "blocked" | "degraded";
|
|
29
|
+
nextAction: string | null;
|
|
30
|
+
pendingHumanDecision: string | null;
|
|
31
|
+
readCost: "full" | "skim/approve" | "summary-only" | null;
|
|
32
|
+
lastUpdate: string;
|
|
33
|
+
confidenceFreshness: string | null;
|
|
34
|
+
evidenceLink: string | null;
|
|
35
|
+
/** Carrier metadata (id used for verb actions). */
|
|
36
|
+
qitemId?: string | null;
|
|
37
|
+
rawSourceRef?: string | null;
|
|
38
|
+
/** Human-readable qitem context for phone decisions. */
|
|
39
|
+
qitemSummary?: string | null;
|
|
40
|
+
qitemBody?: string | null;
|
|
41
|
+
}
|
|
42
|
+
export interface MissionControlReadResult {
|
|
43
|
+
viewName: MissionControlViewName;
|
|
44
|
+
rows: CompactStatusRow[];
|
|
45
|
+
/**
|
|
46
|
+
* Per-view metadata. Includes "rigs running stale CLI" indicator on
|
|
47
|
+
* the fleet view (sub-clause 4 of graceful-degradation acceptance).
|
|
48
|
+
*/
|
|
49
|
+
meta: {
|
|
50
|
+
rowCount: number;
|
|
51
|
+
rigsRunningStaleCli?: number;
|
|
52
|
+
degradedFields?: string[];
|
|
53
|
+
sourceFallback?: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
interface ReadLayerDeps {
|
|
57
|
+
db: Database.Database;
|
|
58
|
+
queueRepo: QueueRepository;
|
|
59
|
+
viewProjector: ViewProjector;
|
|
60
|
+
streamStore?: StreamStore;
|
|
61
|
+
fleetCliCapability: MissionControlFleetCliCapability;
|
|
62
|
+
/** Operator's default human-seat session for `my-queue`. */
|
|
63
|
+
defaultOperatorSession?: string;
|
|
64
|
+
now?: () => Date;
|
|
65
|
+
}
|
|
66
|
+
export declare class MissionControlReadLayer {
|
|
67
|
+
private readonly queueRepo;
|
|
68
|
+
private readonly viewProjector;
|
|
69
|
+
private readonly streamStore;
|
|
70
|
+
private readonly fleetCliCapability;
|
|
71
|
+
private readonly defaultOperatorSession;
|
|
72
|
+
constructor(deps: ReadLayerDeps);
|
|
73
|
+
readView(viewName: MissionControlViewName, opts?: {
|
|
74
|
+
operatorSession?: string;
|
|
75
|
+
}): Promise<MissionControlReadResult>;
|
|
76
|
+
private readMyQueue;
|
|
77
|
+
private readHumanGate;
|
|
78
|
+
private readFleet;
|
|
79
|
+
private readActiveWork;
|
|
80
|
+
private readRecentShips;
|
|
81
|
+
private readRecentlyActive;
|
|
82
|
+
private readRecentObservations;
|
|
83
|
+
}
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=mission-control-read-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mission-control-read-layer.d.ts","sourceRoot":"","sources":["../../../src/domain/mission-control/mission-control-read-layer.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,gCAAgC,EAAkB,MAAM,2CAA2C,CAAC;AAElH,eAAO,MAAM,qBAAqB,uHAQxB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB;;;OAGG;IACH,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,eAAe,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kBAAkB,EAAE,gCAAgC,CAAC;IACrD,4DAA4D;IAC5D,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAcD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAmC;IACtE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;gBAEpC,IAAI,EAAE,aAAa;IAQzB,QAAQ,CACZ,QAAQ,EAAE,sBAAsB,EAChC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,wBAAwB,CAAC;IAmBpC,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,aAAa;YAaP,SAAS;IAevB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,sBAAsB;CAgB/B"}
|