@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,36 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { SessionRegistry } from "../session-registry.js";
|
|
3
|
+
import type { RigRepository } from "../rig-repository.js";
|
|
4
|
+
import { type AgentImageManifest } from "./agent-image-types.js";
|
|
5
|
+
import { AgentImageLibraryService } from "./agent-image-library-service.js";
|
|
6
|
+
export interface CaptureSnapshotOpts {
|
|
7
|
+
sourceSession: string;
|
|
8
|
+
name: string;
|
|
9
|
+
version?: string;
|
|
10
|
+
notes?: string;
|
|
11
|
+
estimatedTokens?: number;
|
|
12
|
+
lineage?: string[];
|
|
13
|
+
files?: Map<string, string>;
|
|
14
|
+
}
|
|
15
|
+
export interface CaptureSnapshotResult {
|
|
16
|
+
imageId: string;
|
|
17
|
+
imagePath: string;
|
|
18
|
+
manifest: AgentImageManifest;
|
|
19
|
+
}
|
|
20
|
+
export interface SnapshotCapturerDeps {
|
|
21
|
+
db: Database.Database;
|
|
22
|
+
rigRepo: RigRepository;
|
|
23
|
+
sessionRegistry: SessionRegistry;
|
|
24
|
+
agentImageLibrary: AgentImageLibraryService;
|
|
25
|
+
/** Target install root — typically ~/.openrig/agent-images/. */
|
|
26
|
+
targetRoot: string;
|
|
27
|
+
/** Test seam — defaults to () => new Date(). */
|
|
28
|
+
now?: () => Date;
|
|
29
|
+
}
|
|
30
|
+
export declare class SnapshotCapturer {
|
|
31
|
+
private readonly deps;
|
|
32
|
+
private readonly now;
|
|
33
|
+
constructor(deps: SnapshotCapturerDeps);
|
|
34
|
+
capture(opts: CaptureSnapshotOpts): CaptureSnapshotResult;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=snapshot-capturer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-capturer.d.ts","sourceRoot":"","sources":["../../../src/domain/agent-images/snapshot-capturer.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAErB,IAAI,EAAE,oBAAoB;IAKtC,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,qBAAqB;CA6C1D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Fork Primitive + Starter Agent Images v0 (PL-016) — snapshot capturer.
|
|
2
|
+
//
|
|
3
|
+
// Captures a productive seat's resumable state into a new agent_image:
|
|
4
|
+
// runtime-specific resume token + manifest + optional cwd-deltas. Used
|
|
5
|
+
// by `rig agent-image create <source-session> --name <name>` and the
|
|
6
|
+
// daemon HTTP route /api/agent-images/snapshot.
|
|
7
|
+
//
|
|
8
|
+
// Resume-token discovery routes through resume-token-discovery.ts so
|
|
9
|
+
// the same logic is shared with the /api/agent-images/fork route.
|
|
10
|
+
//
|
|
11
|
+
// Failure modes surface honest errors per architecture.md § Resume
|
|
12
|
+
// honesty (no fabricated tokens; no auto-fallback to fresh).
|
|
13
|
+
import { AgentImageError, } from "./agent-image-types.js";
|
|
14
|
+
import { discoverResumeToken } from "./resume-token-discovery.js";
|
|
15
|
+
export class SnapshotCapturer {
|
|
16
|
+
deps;
|
|
17
|
+
now;
|
|
18
|
+
constructor(deps) {
|
|
19
|
+
this.deps = deps;
|
|
20
|
+
this.now = deps.now ?? (() => new Date());
|
|
21
|
+
}
|
|
22
|
+
capture(opts) {
|
|
23
|
+
const { sourceSession, name } = opts;
|
|
24
|
+
const version = opts.version ?? "1";
|
|
25
|
+
const discovery = discoverResumeToken(this.deps.db, sourceSession);
|
|
26
|
+
if (!discovery.ok) {
|
|
27
|
+
throw new AgentImageError(discovery.failure.code === "session_not_found" ? "image_not_found" : "runtime_mismatch", discovery.failure.message, { sourceSession });
|
|
28
|
+
}
|
|
29
|
+
const { runtime, nativeId, nodeCwd } = discovery.result;
|
|
30
|
+
if (!nativeId) {
|
|
31
|
+
throw new AgentImageError("image_not_found", `Could not discover a resume token for ${runtime} source session '${sourceSession}'. The session may not have a native conversation id yet — try again after the seat has produced output, or use rig context --refresh to re-sample.`, { sourceSession, runtime });
|
|
32
|
+
}
|
|
33
|
+
const manifest = {
|
|
34
|
+
name,
|
|
35
|
+
version,
|
|
36
|
+
runtime,
|
|
37
|
+
sourceSeat: sourceSession,
|
|
38
|
+
sourceSessionId: nativeId,
|
|
39
|
+
sourceResumeToken: nativeId,
|
|
40
|
+
// PL-016 source-cwd behavior:
|
|
41
|
+
// capture source seat's resolved cwd so the Use-as-starter
|
|
42
|
+
// snippet can emit `cwd: <source_cwd>`. nodeCwd may be null when
|
|
43
|
+
// the source node has no recorded cwd (legacy fixture or seat
|
|
44
|
+
// pre-cwd-capture); manifest field is omitted in that case.
|
|
45
|
+
...(nodeCwd ? { sourceCwd: nodeCwd } : {}),
|
|
46
|
+
createdAt: this.now().toISOString(),
|
|
47
|
+
...(opts.notes !== undefined ? { notes: opts.notes } : {}),
|
|
48
|
+
files: [],
|
|
49
|
+
...(opts.estimatedTokens !== undefined ? { estimatedTokens: opts.estimatedTokens } : {}),
|
|
50
|
+
...(opts.lineage !== undefined ? { lineage: [...opts.lineage] } : {}),
|
|
51
|
+
};
|
|
52
|
+
const fileContents = opts.files ?? new Map();
|
|
53
|
+
const imagePath = this.deps.agentImageLibrary.install(this.deps.targetRoot, manifest, fileContents);
|
|
54
|
+
this.deps.agentImageLibrary.scan();
|
|
55
|
+
return { imageId: `agent-image:${name}:${version}`, imagePath, manifest };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=snapshot-capturer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-capturer.js","sourceRoot":"","sources":["../../../src/domain/agent-images/snapshot-capturer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@ import type { ResolvedStartupFile } from "./runtime-adapter.js";
|
|
|
4
4
|
* Mirrors the v0 wrapper-tier `bin/agent-starter-resolve` semantics:
|
|
5
5
|
* read the named registry entry; run the path-aware no-credentials scan;
|
|
6
6
|
* THROW on a failed scan (the orchestrator MUST treat any throw as a
|
|
7
|
-
* hard launch failure
|
|
8
|
-
* IMPL); on a clean scan, emit a `ResolvedStartupFile[]` rooted at the
|
|
7
|
+
* hard launch failure); on a clean scan, emit a `ResolvedStartupFile[]` rooted at the
|
|
9
8
|
* registry directory.
|
|
10
9
|
*
|
|
11
10
|
* v0 wrapper references:
|
|
@@ -35,12 +34,8 @@ export interface AgentStarterResolverOpts {
|
|
|
35
34
|
* `os.homedir()`).
|
|
36
35
|
*/
|
|
37
36
|
homeDirRoot?: string;
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
* the v0 prototype location at
|
|
41
|
-
* `~/code/substrate/shared-docs/openrig-work/specs/agent-starters/`.
|
|
42
|
-
*/
|
|
43
|
-
substrateFallback?: string;
|
|
37
|
+
/** Optional fallback consulted last when the home registry is absent. */
|
|
38
|
+
fallbackRoot?: string;
|
|
44
39
|
exists?: ExistsFn;
|
|
45
40
|
readFile?: ReadFileFn;
|
|
46
41
|
/** Test seam: lets unit tests inject a controlled env map. */
|
|
@@ -51,8 +46,8 @@ export interface AgentStarterResolveResult {
|
|
|
51
46
|
registryPath: string;
|
|
52
47
|
}
|
|
53
48
|
/**
|
|
54
|
-
* Thrown by `resolveStarter` when the no-credentials scan fails.
|
|
55
|
-
*
|
|
49
|
+
* Thrown by `resolveStarter` when the no-credentials scan fails. The
|
|
50
|
+
* resolver MUST throw rather than
|
|
56
51
|
* return a structured "ok: false" result the orchestrator could ignore;
|
|
57
52
|
* a failed scan is a hard refusal point that aborts the launch.
|
|
58
53
|
*/
|
|
@@ -70,13 +65,12 @@ export declare class AgentStarterResolver {
|
|
|
70
65
|
getRegistryRoot(): string;
|
|
71
66
|
/**
|
|
72
67
|
* Look up the registry root via the documented chain:
|
|
73
|
-
* opts.registryRoot > env[envVarName] > homeDirRoot (if exists) >
|
|
68
|
+
* opts.registryRoot > env[envVarName] > homeDirRoot (if exists) > fallbackRoot
|
|
74
69
|
*
|
|
75
|
-
* The
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* inside `resolveStarter`.
|
|
70
|
+
* The fallback returns even if the path doesn't exist. `resolveStarter`
|
|
71
|
+
* throws a missing-entry error when the selected root is dead. This keeps
|
|
72
|
+
* the constructor side-effect-free; the file-existence check lives inside
|
|
73
|
+
* `resolveStarter`.
|
|
80
74
|
*/
|
|
81
75
|
static resolveRegistryRoot(opts: AgentStarterResolverOpts, exists: ExistsFn): string;
|
|
82
76
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-starter-resolver.d.ts","sourceRoot":"","sources":["../../src/domain/agent-starter-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE
|
|
1
|
+
{"version":3,"file":"agent-starter-resolver.d.ts","sourceRoot":"","sources":["../../src/domain/agent-starter-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAElD,MAAM,WAAW,wBAAwB;IACvC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,qCAAsC,SAAQ,KAAK;IAC9D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAMhD;AAID,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;gBAE1B,IAAI,GAAE,wBAA6B;IAM/C,uCAAuC;IACvC,eAAe,IAAI,MAAM;IAIzB;;;;;;;;OAQG;IACH,MAAM,CAAC,mBAAmB,CACxB,IAAI,EAAE,wBAAwB,EAC9B,MAAM,EAAE,QAAQ,GACf,MAAM;IAkBT;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB;CAgExD"}
|
|
@@ -2,8 +2,8 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
2
2
|
import { join, basename } from "node:path";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
/**
|
|
5
|
-
* Thrown by `resolveStarter` when the no-credentials scan fails.
|
|
6
|
-
*
|
|
5
|
+
* Thrown by `resolveStarter` when the no-credentials scan fails. The
|
|
6
|
+
* resolver MUST throw rather than
|
|
7
7
|
* return a structured "ok: false" result the orchestrator could ignore;
|
|
8
8
|
* a failed scan is a hard refusal point that aborts the launch.
|
|
9
9
|
*/
|
|
@@ -19,7 +19,6 @@ export class AgentStarterCredentialScanFailedError extends Error {
|
|
|
19
19
|
}
|
|
20
20
|
const DEFAULT_ENV_VAR = "OPENRIG_AGENT_STARTER_ROOT";
|
|
21
21
|
const DEFAULT_HOME_SUBPATH = ".openrig/agent-starters";
|
|
22
|
-
const DEFAULT_SUBSTRATE_FALLBACK = "/Users/wrandom/code/substrate/shared-docs/openrig-work/specs/agent-starters";
|
|
23
22
|
export class AgentStarterResolver {
|
|
24
23
|
registryRoot;
|
|
25
24
|
exists;
|
|
@@ -35,13 +34,12 @@ export class AgentStarterResolver {
|
|
|
35
34
|
}
|
|
36
35
|
/**
|
|
37
36
|
* Look up the registry root via the documented chain:
|
|
38
|
-
* opts.registryRoot > env[envVarName] > homeDirRoot (if exists) >
|
|
37
|
+
* opts.registryRoot > env[envVarName] > homeDirRoot (if exists) > fallbackRoot
|
|
39
38
|
*
|
|
40
|
-
* The
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* inside `resolveStarter`.
|
|
39
|
+
* The fallback returns even if the path doesn't exist. `resolveStarter`
|
|
40
|
+
* throws a missing-entry error when the selected root is dead. This keeps
|
|
41
|
+
* the constructor side-effect-free; the file-existence check lives inside
|
|
42
|
+
* `resolveStarter`.
|
|
45
43
|
*/
|
|
46
44
|
static resolveRegistryRoot(opts, exists) {
|
|
47
45
|
if (typeof opts.registryRoot === "string" && opts.registryRoot !== "") {
|
|
@@ -58,7 +56,7 @@ export class AgentStarterResolver {
|
|
|
58
56
|
if (exists(homeBase)) {
|
|
59
57
|
return homeBase;
|
|
60
58
|
}
|
|
61
|
-
return opts.
|
|
59
|
+
return opts.fallbackRoot ?? homeBase;
|
|
62
60
|
}
|
|
63
61
|
/**
|
|
64
62
|
* Resolve a starter by registry name. THROWS on:
|
|
@@ -103,8 +101,8 @@ export class AgentStarterResolver {
|
|
|
103
101
|
}
|
|
104
102
|
// Path-aware + content-aware credential scan. Mirrors the v0 wrapper
|
|
105
103
|
// helper at `specs/agent-starters/lib/agent-starter-helpers.sh`
|
|
106
|
-
// `scan_starter_file`. THROWS on match
|
|
107
|
-
//
|
|
104
|
+
// `scan_starter_file`. THROWS on match instead of returning a
|
|
105
|
+
// recoverable result.
|
|
108
106
|
const scanResult = scanForCredentials(content, registryPath);
|
|
109
107
|
if (!scanResult.ok) {
|
|
110
108
|
throw new AgentStarterCredentialScanFailedError(name, scanResult.reason);
|
|
@@ -164,7 +162,7 @@ function scanForCredentials(content, filePath) {
|
|
|
164
162
|
// the deny-list is meant to catch. Operators see refusal code + line
|
|
165
163
|
// number + file path; that's enough to triage. Closes the v0 wrapper
|
|
166
164
|
// diagnostic-`match`-field caveat at the daemon-tier productization
|
|
167
|
-
// layer
|
|
165
|
+
// layer.
|
|
168
166
|
for (const literal of CRED_PATH_LITERALS) {
|
|
169
167
|
if (line.includes(literal)) {
|
|
170
168
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-starter-resolver.js","sourceRoot":"","sources":["../../src/domain/agent-starter-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-starter-resolver.js","sourceRoot":"","sources":["../../src/domain/agent-starter-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AAqDzB;;;;;GAKG;AACH,MAAM,OAAO,qCAAsC,SAAQ,KAAK;IACrD,WAAW,CAAS;IACpB,MAAM,CAAS;IACxB,YAAY,WAAmB,EAAE,MAAc;QAC7C,KAAK,CAAC,kBAAkB,WAAW,6BAA6B,MAAM,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,uCAAuC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,eAAe,GAAG,4BAA4B,CAAC;AACrD,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AACvD,MAAM,OAAO,oBAAoB;IACd,YAAY,CAAS;IACrB,MAAM,CAAW;IACjB,QAAQ,CAAa;IAEtC,YAAY,OAAiC,EAAE;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,uCAAuC;IACvC,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,mBAAmB,CACxB,IAA8B,EAC9B,MAAgB;QAEhB,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;eAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kDAAkD,CAC/G,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,sDAAsD,YAAY,EAAE,CACrE,CAAC;QACJ,CAAC;QACD,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,0CAA0C,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,CACpF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,2BAA2B,YAAY,yBAAyB,CACjE,CAAC;QACJ,CAAC;QACD,uEAAuE;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,6BAA6B;QAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,2BAA2B,YAAY,oEAAoE,CAC5G,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,gEAAgE;QAChE,8DAA8D;QAC9D,sBAAsB;QACtB,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,qCAAqC,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3E,CAAC;QAED,gEAAgE;QAChE,kEAAkE;QAClE,qEAAqE;QACrE,oEAAoE;QACpE,sEAAsE;QACtE,kEAAkE;QAClE,iEAAiE;QACjE,MAAM,KAAK,GAA0B;YACnC;gBACE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC;gBAC5B,YAAY,EAAE,YAAY;gBAC1B,SAAS,EAAE,IAAI,CAAC,YAAY;gBAC5B,YAAY,EAAE,gBAAgB;gBAC9B,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,CAAC,aAAa,CAAC;aAC3B;SACF,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACjC,CAAC;CACF;AAED,0FAA0F;AAE1F,MAAM,kBAAkB,GAAG;IACzB,2BAA2B;IAC3B,kBAAkB;IAClB,kBAAkB;IAClB,OAAO;CACR,CAAC;AAEF,MAAM,YAAY,GAAG,mEAAmE,CAAC;AACzF,MAAM,cAAc,GAAG,8GAA8G,CAAC;AAEtI,SAAS,kBAAkB,CACzB,OAAe,EACf,QAAgB;IAEhB,4DAA4D;IAC5D,kEAAkE;IAClE,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAErE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,CAAC,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC;QAErB,kDAAkD;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,uBAAuB,GAAG,KAAK,CAAC;QACpC,IAAI,cAAc,IAAI,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC9D,IACE,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC;mBAC1C,cAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EACpD,CAAC;gBACD,uBAAuB,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,oEAAoE;QACpE,SAAS;QACT,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,oCAAoC,MAAM,OAAO,QAAQ,iEAAiE;iBACnI,CAAC;YACJ,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,uBAAuB,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,oCAAoC,MAAM,OAAO,QAAQ,qDAAqD;aACvH,CAAC;QACJ,CAAC;QAED,iDAAiD;QACjD,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,uCAAuC,MAAM,OAAO,QAAQ,wDAAwD;aAC7H,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,KAAa;IACvD,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,QAAQ,KAAK,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type Database from "better-sqlite3";
|
|
2
2
|
import type { EventBus } from "./event-bus.js";
|
|
3
3
|
/**
|
|
4
|
-
* Classifier lease manager (PL-004 Phase B
|
|
4
|
+
* Classifier lease manager (PL-004 Phase B).
|
|
5
5
|
*
|
|
6
6
|
* Daemon-enforced single-writer lease for the project (classifier) primitive.
|
|
7
7
|
* Per PRD § L2 hard rule + slice IMPL § Guard Checkpoint Focus item 2:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ulid } from "ulid";
|
|
2
2
|
/**
|
|
3
|
-
* Classifier lease manager (PL-004 Phase B
|
|
3
|
+
* Classifier lease manager (PL-004 Phase B).
|
|
4
4
|
*
|
|
5
5
|
* Daemon-enforced single-writer lease for the project (classifier) primitive.
|
|
6
6
|
* Per PRD § L2 hard rule + slice IMPL § Guard Checkpoint Focus item 2:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conflict-detector.d.ts","sourceRoot":"","sources":["../../src/domain/conflict-detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAgB,MAAM,sBAAsB,CAAC;AAExF,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAWD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,KAAK,GACR,kBAAkB,
|
|
1
|
+
{"version":3,"file":"conflict-detector.d.ts","sourceRoot":"","sources":["../../src/domain/conflict-detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAgB,MAAM,sBAAsB,CAAC;AAExF,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAWD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,KAAK,GACR,kBAAkB,CAiGpB;AAID,UAAU,eAAe;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,KAAK,EAAE,eAAe,GACrB,wBAAwB,CAyB1B"}
|
|
@@ -2,8 +2,8 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
function hashContent(content) {
|
|
3
3
|
return createHash("sha256").update(content).digest("hex");
|
|
4
4
|
}
|
|
5
|
-
const MANAGED_BLOCK_START = (packageName) => `<!-- BEGIN
|
|
6
|
-
const MANAGED_BLOCK_END = (packageName) => `<!-- END
|
|
5
|
+
const MANAGED_BLOCK_START = (packageName) => `<!-- BEGIN OpenRig MANAGED BLOCK: ${packageName} -->`;
|
|
6
|
+
const MANAGED_BLOCK_END = (packageName) => `<!-- END OpenRig MANAGED BLOCK: ${packageName} -->`;
|
|
7
7
|
/**
|
|
8
8
|
* Refines an InstallPlan with content-aware conflict detection.
|
|
9
9
|
* - Skills/agents: same content = no-op, different content = conflict with hashes
|
|
@@ -74,7 +74,10 @@ export function detectConflicts(plan, fs) {
|
|
|
74
74
|
const targetContent = fs.readFile(entry.targetPath);
|
|
75
75
|
const beginMarker = MANAGED_BLOCK_START(plan.packageName);
|
|
76
76
|
const endMarker = MANAGED_BLOCK_END(plan.packageName);
|
|
77
|
-
const
|
|
77
|
+
const legacyBegin = `<!-- BEGIN RIGGED MANAGED BLOCK: ${plan.packageName} -->`;
|
|
78
|
+
const legacyEnd = `<!-- END RIGGED MANAGED BLOCK: ${plan.packageName} -->`;
|
|
79
|
+
const hasExistingBlock = (targetContent.includes(beginMarker) && targetContent.includes(endMarker)) ||
|
|
80
|
+
(targetContent.includes(legacyBegin) && targetContent.includes(legacyEnd));
|
|
78
81
|
const refined = {
|
|
79
82
|
...entry,
|
|
80
83
|
guidanceMeta: { hasExistingBlock },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conflict-detector.js","sourceRoot":"","sources":["../../src/domain/conflict-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAazC,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,WAAmB,EAAE,EAAE,CAClD,
|
|
1
|
+
{"version":3,"file":"conflict-detector.js","sourceRoot":"","sources":["../../src/domain/conflict-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,9 @@ interface ClaudeContextProvisioner {
|
|
|
11
11
|
checkReady?(binding: NodeBinding): Promise<ReadinessResult>;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* Polls known managed
|
|
15
|
-
* normalized
|
|
16
|
-
*
|
|
14
|
+
* Polls known managed runtime context sources and persists the latest
|
|
15
|
+
* normalized telemetry. Scheduler-only: no queries, no response shaping,
|
|
16
|
+
* no in-memory truth.
|
|
17
17
|
*/
|
|
18
18
|
export declare class ContextMonitor {
|
|
19
19
|
private db;
|
|
@@ -27,8 +27,9 @@ export declare class ContextMonitor {
|
|
|
27
27
|
start(intervalMs?: number): void;
|
|
28
28
|
/** Stop polling. Safe to call before start or multiple times. */
|
|
29
29
|
stop(): void;
|
|
30
|
-
/** Query for managed
|
|
30
|
+
/** Query for managed runtime sessions with readable context sources. */
|
|
31
31
|
private getEligibleSessions;
|
|
32
|
+
private readContextUsage;
|
|
32
33
|
private normalizeStartupStatus;
|
|
33
34
|
}
|
|
34
35
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-monitor.d.ts","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB,QAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"context-monitor.d.ts","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAY/C,UAAU,wBAAwB;IAChC,sBAAsB,CAAC,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5F,UAAU,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7D;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,wBAAwB,CAAkC;IAClE,OAAO,CAAC,KAAK,CAA+C;gBAG1D,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,iBAAiB,EACxB,wBAAwB,CAAC,EAAE,wBAAwB;IAOrD,4EAA4E;IACtE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB/B,uDAAuD;IACvD,KAAK,CAAC,UAAU,GAAE,MAAiC,GAAG,IAAI;IAW1D,iEAAiE;IACjE,IAAI,IAAI,IAAI;IAOZ,wEAAwE;IACxE,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,gBAAgB;YAeV,sBAAsB;CAuCrC"}
|
|
@@ -2,9 +2,9 @@ import { isAttentionRequiredReadinessCode, } from "./runtime-adapter.js";
|
|
|
2
2
|
/** Default polling interval: 30 seconds. */
|
|
3
3
|
export const DEFAULT_POLL_INTERVAL_MS = 30_000;
|
|
4
4
|
/**
|
|
5
|
-
* Polls known managed
|
|
6
|
-
* normalized
|
|
7
|
-
*
|
|
5
|
+
* Polls known managed runtime context sources and persists the latest
|
|
6
|
+
* normalized telemetry. Scheduler-only: no queries, no response shaping,
|
|
7
|
+
* no in-memory truth.
|
|
8
8
|
*/
|
|
9
9
|
export class ContextMonitor {
|
|
10
10
|
db;
|
|
@@ -21,11 +21,7 @@ export class ContextMonitor {
|
|
|
21
21
|
const sessions = this.getEligibleSessions();
|
|
22
22
|
for (const session of sessions) {
|
|
23
23
|
try {
|
|
24
|
-
this.
|
|
25
|
-
cwd: session.cwd ?? undefined,
|
|
26
|
-
tmuxSession: session.session_name,
|
|
27
|
-
});
|
|
28
|
-
const usage = this.store.readAndNormalize(session.session_name);
|
|
24
|
+
const usage = this.readContextUsage(session);
|
|
29
25
|
this.store.persist(session.node_id, usage);
|
|
30
26
|
}
|
|
31
27
|
catch {
|
|
@@ -57,26 +53,45 @@ export class ContextMonitor {
|
|
|
57
53
|
this.timer = null;
|
|
58
54
|
}
|
|
59
55
|
}
|
|
60
|
-
/** Query for managed
|
|
56
|
+
/** Query for managed runtime sessions with readable context sources. */
|
|
61
57
|
getEligibleSessions() {
|
|
62
58
|
return this.db.prepare(`
|
|
63
59
|
SELECT
|
|
64
60
|
n.id as node_id,
|
|
65
61
|
s.id as session_id,
|
|
66
62
|
s.session_name,
|
|
63
|
+
n.runtime,
|
|
64
|
+
s.resume_token,
|
|
67
65
|
n.cwd,
|
|
68
66
|
s.startup_status
|
|
69
67
|
FROM nodes n
|
|
70
68
|
JOIN sessions s ON s.node_id = n.id
|
|
71
69
|
AND s.id = (SELECT s2.id FROM sessions s2 WHERE s2.node_id = n.id ORDER BY s2.id DESC LIMIT 1)
|
|
72
70
|
LEFT JOIN bindings b ON b.node_id = n.id
|
|
73
|
-
WHERE
|
|
74
|
-
|
|
71
|
+
WHERE (
|
|
72
|
+
(n.runtime = 'claude-code' AND s.status = 'running')
|
|
73
|
+
OR (n.runtime = 'codex' AND s.resume_token IS NOT NULL)
|
|
74
|
+
)
|
|
75
75
|
AND COALESCE(b.attachment_type, 'tmux') = 'tmux'
|
|
76
76
|
AND COALESCE(b.tmux_session, s.session_name) IS NOT NULL
|
|
77
77
|
`).all();
|
|
78
78
|
}
|
|
79
|
+
readContextUsage(session) {
|
|
80
|
+
if (session.runtime === "codex") {
|
|
81
|
+
return this.store.readCodexAndNormalize({
|
|
82
|
+
threadId: session.resume_token,
|
|
83
|
+
sessionName: session.session_name,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
this.claudeContextProvisioner?.ensureContextCollector({
|
|
87
|
+
cwd: session.cwd ?? undefined,
|
|
88
|
+
tmuxSession: session.session_name,
|
|
89
|
+
});
|
|
90
|
+
return this.store.readAndNormalize(session.session_name);
|
|
91
|
+
}
|
|
79
92
|
async normalizeStartupStatus(session) {
|
|
93
|
+
if (session.runtime !== "claude-code")
|
|
94
|
+
return;
|
|
80
95
|
if (!this.claudeContextProvisioner?.checkReady)
|
|
81
96
|
return;
|
|
82
97
|
if (session.startup_status !== "failed" && session.startup_status !== "attention_required")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-monitor.js","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gCAAgC,GAGjC,MAAM,sBAAsB,CAAC;AAE9B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"context-monitor.js","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type ContextPackEntry } from "./context-pack-types.js";
|
|
2
|
+
export interface AssembledBundle {
|
|
3
|
+
/** Concatenated bundle string ready for SessionTransport.send. */
|
|
4
|
+
text: string;
|
|
5
|
+
/** Total length in bytes of the assembled string (UTF-8 encoded). */
|
|
6
|
+
bytes: number;
|
|
7
|
+
/** Daemon-derived estimate (chars / 4 rounded). */
|
|
8
|
+
estimatedTokens: number;
|
|
9
|
+
/** Per-file metadata threaded through assembly for the dry-run preview. */
|
|
10
|
+
files: Array<{
|
|
11
|
+
path: string;
|
|
12
|
+
role: string;
|
|
13
|
+
bytes: number;
|
|
14
|
+
estimatedTokens: number;
|
|
15
|
+
}>;
|
|
16
|
+
/** Files that were referenced in the manifest but missing on disk;
|
|
17
|
+
* surfaced as a warning in the preview rather than a hard fail so
|
|
18
|
+
* operator can repair. */
|
|
19
|
+
missingFiles: Array<{
|
|
20
|
+
path: string;
|
|
21
|
+
role: string;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
export interface AssembleOpts {
|
|
25
|
+
packEntry: ContextPackEntry;
|
|
26
|
+
/** Defaults to readFileSync; injected for tests. */
|
|
27
|
+
readFile?: (absPath: string) => string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Assembles a context pack into a single paste-ready string.
|
|
31
|
+
*
|
|
32
|
+
* Frame:
|
|
33
|
+
* # OpenRig Context Pack: <name> v<version>
|
|
34
|
+
* <purpose, if any>
|
|
35
|
+
*
|
|
36
|
+
* ## File: <path> (role: <role>)
|
|
37
|
+
* <file contents>
|
|
38
|
+
*
|
|
39
|
+
* ## File: <path> (role: <role>)
|
|
40
|
+
* <file contents>
|
|
41
|
+
*
|
|
42
|
+
* ...
|
|
43
|
+
*
|
|
44
|
+
* Each file is separated by a blank line so adjacent contents don't
|
|
45
|
+
* accidentally merge into a contiguous markdown block. Missing files
|
|
46
|
+
* are skipped (operator sees them in `missingFiles` for repair).
|
|
47
|
+
*/
|
|
48
|
+
export declare function assembleBundle(opts: AssembleOpts): AssembledBundle;
|
|
49
|
+
//# sourceMappingURL=bundle-assembler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-assembler.d.ts","sourceRoot":"","sources":["../../../src/domain/context-packs/bundle-assembler.ts"],"names":[],"mappings":"AAaA,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF;;+BAE2B;IAC3B,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CAmDlE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Rig Context / Composable Context Injection v0 (PL-014) — bundle
|
|
2
|
+
// assembler.
|
|
3
|
+
//
|
|
4
|
+
// Concatenates a context_pack's included files into a single coherent
|
|
5
|
+
// paste-ready string. Each file gets a `## File: <path> (role: <role>)`
|
|
6
|
+
// header so the destination seat can recognize the bundle structure.
|
|
7
|
+
// The full bundle leads with a one-line manifest summary so the
|
|
8
|
+
// destination has at-a-glance context.
|
|
9
|
+
//
|
|
10
|
+
// One coherent paste, NOT N separate sends — matches PRD § Item 5: "the
|
|
11
|
+
// seat receives the pack as a single coherent priming injection."
|
|
12
|
+
import { readFileSync } from "node:fs";
|
|
13
|
+
import { ContextPackError } from "./context-pack-types.js";
|
|
14
|
+
import { estimateTokensFromBytes } from "./context-pack-library-service.js";
|
|
15
|
+
const PACK_HEADER_PREFIX = "# OpenRig Context Pack:";
|
|
16
|
+
const FILE_HEADER_PREFIX = "## File:";
|
|
17
|
+
/**
|
|
18
|
+
* Assembles a context pack into a single paste-ready string.
|
|
19
|
+
*
|
|
20
|
+
* Frame:
|
|
21
|
+
* # OpenRig Context Pack: <name> v<version>
|
|
22
|
+
* <purpose, if any>
|
|
23
|
+
*
|
|
24
|
+
* ## File: <path> (role: <role>)
|
|
25
|
+
* <file contents>
|
|
26
|
+
*
|
|
27
|
+
* ## File: <path> (role: <role>)
|
|
28
|
+
* <file contents>
|
|
29
|
+
*
|
|
30
|
+
* ...
|
|
31
|
+
*
|
|
32
|
+
* Each file is separated by a blank line so adjacent contents don't
|
|
33
|
+
* accidentally merge into a contiguous markdown block. Missing files
|
|
34
|
+
* are skipped (operator sees them in `missingFiles` for repair).
|
|
35
|
+
*/
|
|
36
|
+
export function assembleBundle(opts) {
|
|
37
|
+
const { packEntry } = opts;
|
|
38
|
+
const reader = opts.readFile ?? ((p) => readFileSync(p, "utf-8"));
|
|
39
|
+
const sections = [];
|
|
40
|
+
sections.push(`${PACK_HEADER_PREFIX} ${packEntry.name} v${packEntry.version}`);
|
|
41
|
+
if (packEntry.purpose) {
|
|
42
|
+
sections.push(packEntry.purpose.trim());
|
|
43
|
+
}
|
|
44
|
+
const files = [];
|
|
45
|
+
const missingFiles = [];
|
|
46
|
+
for (const f of packEntry.files) {
|
|
47
|
+
if (f.absolutePath === null) {
|
|
48
|
+
missingFiles.push({ path: f.path, role: f.role });
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
let content;
|
|
52
|
+
try {
|
|
53
|
+
content = reader(f.absolutePath);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
throw new ContextPackError("file_read_failed", `failed to read pack file ${f.absolutePath}: ${err.message}`, { packId: packEntry.id, path: f.path });
|
|
57
|
+
}
|
|
58
|
+
const headerLine = f.summary
|
|
59
|
+
? `${FILE_HEADER_PREFIX} ${f.path} (role: ${f.role}) — ${f.summary}`
|
|
60
|
+
: `${FILE_HEADER_PREFIX} ${f.path} (role: ${f.role})`;
|
|
61
|
+
sections.push(headerLine);
|
|
62
|
+
sections.push(content.trimEnd());
|
|
63
|
+
const bytes = Buffer.byteLength(content, "utf-8");
|
|
64
|
+
files.push({
|
|
65
|
+
path: f.path,
|
|
66
|
+
role: f.role,
|
|
67
|
+
bytes,
|
|
68
|
+
estimatedTokens: estimateTokensFromBytes(bytes),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const text = sections.join("\n\n") + "\n";
|
|
72
|
+
const bytes = Buffer.byteLength(text, "utf-8");
|
|
73
|
+
return {
|
|
74
|
+
text,
|
|
75
|
+
bytes,
|
|
76
|
+
estimatedTokens: estimateTokensFromBytes(bytes),
|
|
77
|
+
files,
|
|
78
|
+
missingFiles,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=bundle-assembler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-assembler.js","sourceRoot":"","sources":["../../../src/domain/context-packs/bundle-assembler.ts"],"names":[],"mappings":"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"}
|