@openrig/cli 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/daemon/assets/claude-statusline-context.cjs +80 -0
- package/daemon/assets/guidance/using-openrig.md +46 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts +67 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -0
- package/daemon/dist/adapters/claude-code-adapter.js +317 -0
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -0
- package/daemon/dist/adapters/claude-resume.d.ts +23 -0
- package/daemon/dist/adapters/claude-resume.d.ts.map +1 -0
- package/daemon/dist/adapters/claude-resume.js +90 -0
- package/daemon/dist/adapters/claude-resume.js.map +1 -0
- package/daemon/dist/adapters/cmux-transport.d.ts +9 -0
- package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -0
- package/daemon/dist/adapters/cmux-transport.js +64 -0
- package/daemon/dist/adapters/cmux-transport.js.map +1 -0
- package/daemon/dist/adapters/cmux.d.ts +50 -0
- package/daemon/dist/adapters/cmux.d.ts.map +1 -0
- package/daemon/dist/adapters/cmux.js +144 -0
- package/daemon/dist/adapters/cmux.js.map +1 -0
- package/daemon/dist/adapters/codex-resume.d.ts +10 -0
- package/daemon/dist/adapters/codex-resume.d.ts.map +1 -0
- package/daemon/dist/adapters/codex-resume.js +44 -0
- package/daemon/dist/adapters/codex-resume.js.map +1 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +53 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -0
- package/daemon/dist/adapters/codex-runtime-adapter.js +255 -0
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -0
- package/daemon/dist/adapters/shell-quote.d.ts +3 -0
- package/daemon/dist/adapters/shell-quote.d.ts.map +1 -0
- package/daemon/dist/adapters/shell-quote.js +5 -0
- package/daemon/dist/adapters/shell-quote.js.map +1 -0
- package/daemon/dist/adapters/terminal-adapter.d.ts +20 -0
- package/daemon/dist/adapters/terminal-adapter.d.ts.map +1 -0
- package/daemon/dist/adapters/terminal-adapter.js +25 -0
- package/daemon/dist/adapters/terminal-adapter.js.map +1 -0
- package/daemon/dist/adapters/tmux-exec.d.ts +7 -0
- package/daemon/dist/adapters/tmux-exec.d.ts.map +1 -0
- package/daemon/dist/adapters/tmux-exec.js +12 -0
- package/daemon/dist/adapters/tmux-exec.js.map +1 -0
- package/daemon/dist/adapters/tmux.d.ts +55 -0
- package/daemon/dist/adapters/tmux.d.ts.map +1 -0
- package/daemon/dist/adapters/tmux.js +244 -0
- package/daemon/dist/adapters/tmux.js.map +1 -0
- package/daemon/dist/db/connection.d.ts +7 -0
- package/daemon/dist/db/connection.d.ts.map +1 -0
- package/daemon/dist/db/connection.js +12 -0
- package/daemon/dist/db/connection.js.map +1 -0
- package/daemon/dist/db/migrate.d.ts +12 -0
- package/daemon/dist/db/migrate.d.ts.map +1 -0
- package/daemon/dist/db/migrate.js +27 -0
- package/daemon/dist/db/migrate.js.map +1 -0
- package/daemon/dist/db/migrations/001_core_schema.d.ts +3 -0
- package/daemon/dist/db/migrations/001_core_schema.d.ts.map +1 -0
- package/daemon/dist/db/migrations/001_core_schema.js +50 -0
- package/daemon/dist/db/migrations/001_core_schema.js.map +1 -0
- package/daemon/dist/db/migrations/002_bindings_sessions.d.ts +3 -0
- package/daemon/dist/db/migrations/002_bindings_sessions.d.ts.map +1 -0
- package/daemon/dist/db/migrations/002_bindings_sessions.js +29 -0
- package/daemon/dist/db/migrations/002_bindings_sessions.js.map +1 -0
- package/daemon/dist/db/migrations/003_events.d.ts +3 -0
- package/daemon/dist/db/migrations/003_events.d.ts.map +1 -0
- package/daemon/dist/db/migrations/003_events.js +22 -0
- package/daemon/dist/db/migrations/003_events.js.map +1 -0
- package/daemon/dist/db/migrations/004_snapshots.d.ts +3 -0
- package/daemon/dist/db/migrations/004_snapshots.d.ts.map +1 -0
- package/daemon/dist/db/migrations/004_snapshots.js +19 -0
- package/daemon/dist/db/migrations/004_snapshots.js.map +1 -0
- package/daemon/dist/db/migrations/005_checkpoints.d.ts +3 -0
- package/daemon/dist/db/migrations/005_checkpoints.d.ts.map +1 -0
- package/daemon/dist/db/migrations/005_checkpoints.js +22 -0
- package/daemon/dist/db/migrations/005_checkpoints.js.map +1 -0
- package/daemon/dist/db/migrations/006_resume_metadata.d.ts +3 -0
- package/daemon/dist/db/migrations/006_resume_metadata.d.ts.map +1 -0
- package/daemon/dist/db/migrations/006_resume_metadata.js +14 -0
- package/daemon/dist/db/migrations/006_resume_metadata.js.map +1 -0
- package/daemon/dist/db/migrations/007_node_spec_fields.d.ts +3 -0
- package/daemon/dist/db/migrations/007_node_spec_fields.d.ts.map +1 -0
- package/daemon/dist/db/migrations/007_node_spec_fields.js +11 -0
- package/daemon/dist/db/migrations/007_node_spec_fields.js.map +1 -0
- package/daemon/dist/db/migrations/008_packages.d.ts +3 -0
- package/daemon/dist/db/migrations/008_packages.d.ts.map +1 -0
- package/daemon/dist/db/migrations/008_packages.js +17 -0
- package/daemon/dist/db/migrations/008_packages.js.map +1 -0
- package/daemon/dist/db/migrations/009_install_journal.d.ts +3 -0
- package/daemon/dist/db/migrations/009_install_journal.d.ts.map +1 -0
- package/daemon/dist/db/migrations/009_install_journal.js +35 -0
- package/daemon/dist/db/migrations/009_install_journal.js.map +1 -0
- package/daemon/dist/db/migrations/010_journal_seq.d.ts +3 -0
- package/daemon/dist/db/migrations/010_journal_seq.d.ts.map +1 -0
- package/daemon/dist/db/migrations/010_journal_seq.js +36 -0
- package/daemon/dist/db/migrations/010_journal_seq.js.map +1 -0
- package/daemon/dist/db/migrations/011_bootstrap.d.ts +3 -0
- package/daemon/dist/db/migrations/011_bootstrap.d.ts.map +1 -0
- package/daemon/dist/db/migrations/011_bootstrap.js +43 -0
- package/daemon/dist/db/migrations/011_bootstrap.js.map +1 -0
- package/daemon/dist/db/migrations/012_discovery.d.ts +3 -0
- package/daemon/dist/db/migrations/012_discovery.d.ts.map +1 -0
- package/daemon/dist/db/migrations/012_discovery.js +28 -0
- package/daemon/dist/db/migrations/012_discovery.js.map +1 -0
- package/daemon/dist/db/migrations/013_discovery_fk_fix.d.ts +3 -0
- package/daemon/dist/db/migrations/013_discovery_fk_fix.d.ts.map +1 -0
- package/daemon/dist/db/migrations/013_discovery_fk_fix.js +37 -0
- package/daemon/dist/db/migrations/013_discovery_fk_fix.js.map +1 -0
- package/daemon/dist/db/migrations/014_agentspec_reboot.d.ts +3 -0
- package/daemon/dist/db/migrations/014_agentspec_reboot.d.ts.map +1 -0
- package/daemon/dist/db/migrations/014_agentspec_reboot.js +47 -0
- package/daemon/dist/db/migrations/014_agentspec_reboot.js.map +1 -0
- package/daemon/dist/db/migrations/015_startup_context.d.ts +3 -0
- package/daemon/dist/db/migrations/015_startup_context.d.ts.map +1 -0
- package/daemon/dist/db/migrations/015_startup_context.js +15 -0
- package/daemon/dist/db/migrations/015_startup_context.js.map +1 -0
- package/daemon/dist/db/migrations/016_chat_messages.d.ts +3 -0
- package/daemon/dist/db/migrations/016_chat_messages.d.ts.map +1 -0
- package/daemon/dist/db/migrations/016_chat_messages.js +17 -0
- package/daemon/dist/db/migrations/016_chat_messages.js.map +1 -0
- package/daemon/dist/db/migrations/017_pod_namespace.d.ts +3 -0
- package/daemon/dist/db/migrations/017_pod_namespace.d.ts.map +1 -0
- package/daemon/dist/db/migrations/017_pod_namespace.js +9 -0
- package/daemon/dist/db/migrations/017_pod_namespace.js.map +1 -0
- package/daemon/dist/db/migrations/018_context_usage.d.ts +3 -0
- package/daemon/dist/db/migrations/018_context_usage.d.ts.map +1 -0
- package/daemon/dist/db/migrations/018_context_usage.js +23 -0
- package/daemon/dist/db/migrations/018_context_usage.js.map +1 -0
- package/daemon/dist/db/migrations/019_external_cli_attachment.d.ts +3 -0
- package/daemon/dist/db/migrations/019_external_cli_attachment.d.ts.map +1 -0
- package/daemon/dist/db/migrations/019_external_cli_attachment.js +8 -0
- package/daemon/dist/db/migrations/019_external_cli_attachment.js.map +1 -0
- package/daemon/dist/domain/agent-manifest.d.ts +21 -0
- package/daemon/dist/domain/agent-manifest.d.ts.map +1 -0
- package/daemon/dist/domain/agent-manifest.js +322 -0
- package/daemon/dist/domain/agent-manifest.js.map +1 -0
- package/daemon/dist/domain/agent-preflight.d.ts +12 -0
- package/daemon/dist/domain/agent-preflight.d.ts.map +1 -0
- package/daemon/dist/domain/agent-preflight.js +37 -0
- package/daemon/dist/domain/agent-preflight.js.map +1 -0
- package/daemon/dist/domain/agent-resolver.d.ts +66 -0
- package/daemon/dist/domain/agent-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/agent-resolver.js +193 -0
- package/daemon/dist/domain/agent-resolver.js.map +1 -0
- package/daemon/dist/domain/ask-service.d.ts +57 -0
- package/daemon/dist/domain/ask-service.d.ts.map +1 -0
- package/daemon/dist/domain/ask-service.js +129 -0
- package/daemon/dist/domain/ask-service.js.map +1 -0
- package/daemon/dist/domain/bootstrap-orchestrator.d.ts +76 -0
- package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -0
- package/daemon/dist/domain/bootstrap-orchestrator.js +510 -0
- package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -0
- package/daemon/dist/domain/bootstrap-repository.d.ts +23 -0
- package/daemon/dist/domain/bootstrap-repository.d.ts.map +1 -0
- package/daemon/dist/domain/bootstrap-repository.js +78 -0
- package/daemon/dist/domain/bootstrap-repository.js.map +1 -0
- package/daemon/dist/domain/bootstrap-types.d.ts +43 -0
- package/daemon/dist/domain/bootstrap-types.d.ts.map +1 -0
- package/daemon/dist/domain/bootstrap-types.js +2 -0
- package/daemon/dist/domain/bootstrap-types.js.map +1 -0
- package/daemon/dist/domain/bundle-archive.d.ts +23 -0
- package/daemon/dist/domain/bundle-archive.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-archive.js +156 -0
- package/daemon/dist/domain/bundle-archive.js.map +1 -0
- package/daemon/dist/domain/bundle-assembler.d.ts +34 -0
- package/daemon/dist/domain/bundle-assembler.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-assembler.js +86 -0
- package/daemon/dist/domain/bundle-assembler.js.map +1 -0
- package/daemon/dist/domain/bundle-integrity.d.ts +30 -0
- package/daemon/dist/domain/bundle-integrity.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-integrity.js +120 -0
- package/daemon/dist/domain/bundle-integrity.js.map +1 -0
- package/daemon/dist/domain/bundle-source-resolver.d.ts +44 -0
- package/daemon/dist/domain/bundle-source-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-source-resolver.js +158 -0
- package/daemon/dist/domain/bundle-source-resolver.js.map +1 -0
- package/daemon/dist/domain/bundle-types.d.ts +78 -0
- package/daemon/dist/domain/bundle-types.d.ts.map +1 -0
- package/daemon/dist/domain/bundle-types.js +218 -0
- package/daemon/dist/domain/bundle-types.js.map +1 -0
- package/daemon/dist/domain/chat-repository.d.ts +31 -0
- package/daemon/dist/domain/chat-repository.d.ts.map +1 -0
- package/daemon/dist/domain/chat-repository.js +105 -0
- package/daemon/dist/domain/chat-repository.js.map +1 -0
- package/daemon/dist/domain/checkpoint-store.d.ts +24 -0
- package/daemon/dist/domain/checkpoint-store.d.ts.map +1 -0
- package/daemon/dist/domain/checkpoint-store.js +55 -0
- package/daemon/dist/domain/checkpoint-store.js.map +1 -0
- package/daemon/dist/domain/claim-service.d.ts +68 -0
- package/daemon/dist/domain/claim-service.d.ts.map +1 -0
- package/daemon/dist/domain/claim-service.js +250 -0
- package/daemon/dist/domain/claim-service.js.map +1 -0
- package/daemon/dist/domain/codex-thread-id.d.ts +4 -0
- package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -0
- package/daemon/dist/domain/codex-thread-id.js +65 -0
- package/daemon/dist/domain/codex-thread-id.js.map +1 -0
- package/daemon/dist/domain/conflict-detector.d.ts +33 -0
- package/daemon/dist/domain/conflict-detector.d.ts.map +1 -0
- package/daemon/dist/domain/conflict-detector.js +138 -0
- package/daemon/dist/domain/conflict-detector.js.map +1 -0
- package/daemon/dist/domain/context-monitor.d.ts +30 -0
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -0
- package/daemon/dist/domain/context-monitor.js +71 -0
- package/daemon/dist/domain/context-monitor.js.map +1 -0
- package/daemon/dist/domain/context-usage-store.d.ts +58 -0
- package/daemon/dist/domain/context-usage-store.d.ts.map +1 -0
- package/daemon/dist/domain/context-usage-store.js +195 -0
- package/daemon/dist/domain/context-usage-store.js.map +1 -0
- package/daemon/dist/domain/demo-rig-selector.d.ts +11 -0
- package/daemon/dist/domain/demo-rig-selector.d.ts.map +1 -0
- package/daemon/dist/domain/demo-rig-selector.js +21 -0
- package/daemon/dist/domain/demo-rig-selector.js.map +1 -0
- package/daemon/dist/domain/discovery-coordinator.d.ts +28 -0
- package/daemon/dist/domain/discovery-coordinator.d.ts.map +1 -0
- package/daemon/dist/domain/discovery-coordinator.js +107 -0
- package/daemon/dist/domain/discovery-coordinator.js.map +1 -0
- package/daemon/dist/domain/discovery-repository.d.ts +31 -0
- package/daemon/dist/domain/discovery-repository.d.ts.map +1 -0
- package/daemon/dist/domain/discovery-repository.js +75 -0
- package/daemon/dist/domain/discovery-repository.js.map +1 -0
- package/daemon/dist/domain/discovery-types.d.ts +27 -0
- package/daemon/dist/domain/discovery-types.d.ts.map +1 -0
- package/daemon/dist/domain/discovery-types.js +2 -0
- package/daemon/dist/domain/discovery-types.js.map +1 -0
- package/daemon/dist/domain/draft-rig-generator.d.ts +7 -0
- package/daemon/dist/domain/draft-rig-generator.d.ts.map +1 -0
- package/daemon/dist/domain/draft-rig-generator.js +87 -0
- package/daemon/dist/domain/draft-rig-generator.js.map +1 -0
- package/daemon/dist/domain/errors.d.ts +4 -0
- package/daemon/dist/domain/errors.d.ts.map +1 -0
- package/daemon/dist/domain/errors.js +7 -0
- package/daemon/dist/domain/errors.js.map +1 -0
- package/daemon/dist/domain/event-bus.d.ts +32 -0
- package/daemon/dist/domain/event-bus.d.ts.map +1 -0
- package/daemon/dist/domain/event-bus.js +82 -0
- package/daemon/dist/domain/event-bus.js.map +1 -0
- package/daemon/dist/domain/external-install-executor.d.ts +47 -0
- package/daemon/dist/domain/external-install-executor.d.ts.map +1 -0
- package/daemon/dist/domain/external-install-executor.js +87 -0
- package/daemon/dist/domain/external-install-executor.js.map +1 -0
- package/daemon/dist/domain/external-install-planner.d.ts +41 -0
- package/daemon/dist/domain/external-install-planner.d.ts.map +1 -0
- package/daemon/dist/domain/external-install-planner.js +83 -0
- package/daemon/dist/domain/external-install-planner.js.map +1 -0
- package/daemon/dist/domain/graph-projection.d.ts +60 -0
- package/daemon/dist/domain/graph-projection.d.ts.map +1 -0
- package/daemon/dist/domain/graph-projection.js +95 -0
- package/daemon/dist/domain/graph-projection.js.map +1 -0
- package/daemon/dist/domain/history-query.d.ts +34 -0
- package/daemon/dist/domain/history-query.d.ts.map +1 -0
- package/daemon/dist/domain/history-query.js +119 -0
- package/daemon/dist/domain/history-query.js.map +1 -0
- package/daemon/dist/domain/install-engine.d.ts +33 -0
- package/daemon/dist/domain/install-engine.d.ts.map +1 -0
- package/daemon/dist/domain/install-engine.js +154 -0
- package/daemon/dist/domain/install-engine.js.map +1 -0
- package/daemon/dist/domain/install-planner.d.ts +38 -0
- package/daemon/dist/domain/install-planner.d.ts.map +1 -0
- package/daemon/dist/domain/install-planner.js +243 -0
- package/daemon/dist/domain/install-planner.js.map +1 -0
- package/daemon/dist/domain/install-policy.d.ts +20 -0
- package/daemon/dist/domain/install-policy.d.ts.map +1 -0
- package/daemon/dist/domain/install-policy.js +56 -0
- package/daemon/dist/domain/install-policy.js.map +1 -0
- package/daemon/dist/domain/install-repository.d.ts +55 -0
- package/daemon/dist/domain/install-repository.d.ts.map +1 -0
- package/daemon/dist/domain/install-repository.js +122 -0
- package/daemon/dist/domain/install-repository.js.map +1 -0
- package/daemon/dist/domain/install-verifier.d.ts +31 -0
- package/daemon/dist/domain/install-verifier.d.ts.map +1 -0
- package/daemon/dist/domain/install-verifier.js +141 -0
- package/daemon/dist/domain/install-verifier.js.map +1 -0
- package/daemon/dist/domain/native-resume-probe.d.ts +19 -0
- package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -0
- package/daemon/dist/domain/native-resume-probe.js +113 -0
- package/daemon/dist/domain/native-resume-probe.js.map +1 -0
- package/daemon/dist/domain/node-inventory.d.ts +33 -0
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -0
- package/daemon/dist/domain/node-inventory.js +314 -0
- package/daemon/dist/domain/node-inventory.js.map +1 -0
- package/daemon/dist/domain/node-launcher.d.ts +42 -0
- package/daemon/dist/domain/node-launcher.d.ts.map +1 -0
- package/daemon/dist/domain/node-launcher.js +122 -0
- package/daemon/dist/domain/node-launcher.js.map +1 -0
- package/daemon/dist/domain/package-install-service.d.ts +64 -0
- package/daemon/dist/domain/package-install-service.d.ts.map +1 -0
- package/daemon/dist/domain/package-install-service.js +80 -0
- package/daemon/dist/domain/package-install-service.js.map +1 -0
- package/daemon/dist/domain/package-manifest.d.ts +93 -0
- package/daemon/dist/domain/package-manifest.d.ts.map +1 -0
- package/daemon/dist/domain/package-manifest.js +407 -0
- package/daemon/dist/domain/package-manifest.js.map +1 -0
- package/daemon/dist/domain/package-repository.d.ts +33 -0
- package/daemon/dist/domain/package-repository.d.ts.map +1 -0
- package/daemon/dist/domain/package-repository.js +63 -0
- package/daemon/dist/domain/package-repository.js.map +1 -0
- package/daemon/dist/domain/package-resolve-helper.d.ts +19 -0
- package/daemon/dist/domain/package-resolve-helper.d.ts.map +1 -0
- package/daemon/dist/domain/package-resolve-helper.js +47 -0
- package/daemon/dist/domain/package-resolve-helper.js.map +1 -0
- package/daemon/dist/domain/package-resolver.d.ts +19 -0
- package/daemon/dist/domain/package-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/package-resolver.js +35 -0
- package/daemon/dist/domain/package-resolver.js.map +1 -0
- package/daemon/dist/domain/path-safety.d.ts +8 -0
- package/daemon/dist/domain/path-safety.d.ts.map +1 -0
- package/daemon/dist/domain/path-safety.js +24 -0
- package/daemon/dist/domain/path-safety.js.map +1 -0
- package/daemon/dist/domain/pod-bundle-assembler.d.ts +43 -0
- package/daemon/dist/domain/pod-bundle-assembler.d.ts.map +1 -0
- package/daemon/dist/domain/pod-bundle-assembler.js +198 -0
- package/daemon/dist/domain/pod-bundle-assembler.js.map +1 -0
- package/daemon/dist/domain/pod-repository.d.ts +47 -0
- package/daemon/dist/domain/pod-repository.d.ts.map +1 -0
- package/daemon/dist/domain/pod-repository.js +90 -0
- package/daemon/dist/domain/pod-repository.js.map +1 -0
- package/daemon/dist/domain/profile-resolver.d.ts +51 -0
- package/daemon/dist/domain/profile-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/profile-resolver.js +201 -0
- package/daemon/dist/domain/profile-resolver.js.map +1 -0
- package/daemon/dist/domain/projection-planner.d.ts +54 -0
- package/daemon/dist/domain/projection-planner.d.ts.map +1 -0
- package/daemon/dist/domain/projection-planner.js +128 -0
- package/daemon/dist/domain/projection-planner.js.map +1 -0
- package/daemon/dist/domain/ps-projection.d.ts +22 -0
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -0
- package/daemon/dist/domain/ps-projection.js +65 -0
- package/daemon/dist/domain/ps-projection.js.map +1 -0
- package/daemon/dist/domain/reconciler.d.ts +28 -0
- package/daemon/dist/domain/reconciler.d.ts.map +1 -0
- package/daemon/dist/domain/reconciler.js +66 -0
- package/daemon/dist/domain/reconciler.js.map +1 -0
- package/daemon/dist/domain/requirements-probe.d.ts +63 -0
- package/daemon/dist/domain/requirements-probe.d.ts.map +1 -0
- package/daemon/dist/domain/requirements-probe.js +172 -0
- package/daemon/dist/domain/requirements-probe.js.map +1 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts +59 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -0
- package/daemon/dist/domain/restore-orchestrator.js +477 -0
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -0
- package/daemon/dist/domain/resume-metadata-refresher.d.ts +42 -0
- package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -0
- package/daemon/dist/domain/resume-metadata-refresher.js +167 -0
- package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -0
- package/daemon/dist/domain/rig-expansion-service.d.ts +27 -0
- package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -0
- package/daemon/dist/domain/rig-expansion-service.js +121 -0
- package/daemon/dist/domain/rig-expansion-service.js.map +1 -0
- package/daemon/dist/domain/rig-lifecycle-service.d.ts +100 -0
- package/daemon/dist/domain/rig-lifecycle-service.d.ts.map +1 -0
- package/daemon/dist/domain/rig-lifecycle-service.js +421 -0
- package/daemon/dist/domain/rig-lifecycle-service.js.map +1 -0
- package/daemon/dist/domain/rig-repository.d.ts +44 -0
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -0
- package/daemon/dist/domain/rig-repository.js +165 -0
- package/daemon/dist/domain/rig-repository.js.map +1 -0
- package/daemon/dist/domain/rig-teardown.d.ts +51 -0
- package/daemon/dist/domain/rig-teardown.d.ts.map +1 -0
- package/daemon/dist/domain/rig-teardown.js +142 -0
- package/daemon/dist/domain/rig-teardown.js.map +1 -0
- package/daemon/dist/domain/rigspec-codec.d.ts +17 -0
- package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -0
- package/daemon/dist/domain/rigspec-codec.js +141 -0
- package/daemon/dist/domain/rigspec-codec.js.map +1 -0
- package/daemon/dist/domain/rigspec-exporter.d.ts +21 -0
- package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -0
- package/daemon/dist/domain/rigspec-exporter.js +186 -0
- package/daemon/dist/domain/rigspec-exporter.js.map +1 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts +133 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -0
- package/daemon/dist/domain/rigspec-instantiator.js +1104 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts +38 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -0
- package/daemon/dist/domain/rigspec-preflight.js +198 -0
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -0
- package/daemon/dist/domain/rigspec-schema.d.ts +25 -0
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -0
- package/daemon/dist/domain/rigspec-schema.js +516 -0
- package/daemon/dist/domain/rigspec-schema.js.map +1 -0
- package/daemon/dist/domain/role-resolver.d.ts +21 -0
- package/daemon/dist/domain/role-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/role-resolver.js +83 -0
- package/daemon/dist/domain/role-resolver.js.map +1 -0
- package/daemon/dist/domain/runtime-adapter.d.ts +74 -0
- package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/runtime-adapter.js +14 -0
- package/daemon/dist/domain/runtime-adapter.js.map +1 -0
- package/daemon/dist/domain/runtime-verifier.d.ts +45 -0
- package/daemon/dist/domain/runtime-verifier.d.ts.map +1 -0
- package/daemon/dist/domain/runtime-verifier.js +148 -0
- package/daemon/dist/domain/runtime-verifier.js.map +1 -0
- package/daemon/dist/domain/self-attach-service.d.ts +90 -0
- package/daemon/dist/domain/self-attach-service.d.ts.map +1 -0
- package/daemon/dist/domain/self-attach-service.js +202 -0
- package/daemon/dist/domain/self-attach-service.js.map +1 -0
- package/daemon/dist/domain/session-enricher.d.ts +29 -0
- package/daemon/dist/domain/session-enricher.d.ts.map +1 -0
- package/daemon/dist/domain/session-enricher.js +54 -0
- package/daemon/dist/domain/session-enricher.js.map +1 -0
- package/daemon/dist/domain/session-fingerprinter.d.ts +53 -0
- package/daemon/dist/domain/session-fingerprinter.d.ts.map +1 -0
- package/daemon/dist/domain/session-fingerprinter.js +118 -0
- package/daemon/dist/domain/session-fingerprinter.js.map +1 -0
- package/daemon/dist/domain/session-name.d.ts +28 -0
- package/daemon/dist/domain/session-name.d.ts.map +1 -0
- package/daemon/dist/domain/session-name.js +85 -0
- package/daemon/dist/domain/session-name.js.map +1 -0
- package/daemon/dist/domain/session-registry.d.ts +32 -0
- package/daemon/dist/domain/session-registry.d.ts.map +1 -0
- package/daemon/dist/domain/session-registry.js +142 -0
- package/daemon/dist/domain/session-registry.js.map +1 -0
- package/daemon/dist/domain/session-transport.d.ts +79 -0
- package/daemon/dist/domain/session-transport.d.ts.map +1 -0
- package/daemon/dist/domain/session-transport.js +403 -0
- package/daemon/dist/domain/session-transport.js.map +1 -0
- package/daemon/dist/domain/snapshot-capture.d.ts +27 -0
- package/daemon/dist/domain/snapshot-capture.d.ts.map +1 -0
- package/daemon/dist/domain/snapshot-capture.js +89 -0
- package/daemon/dist/domain/snapshot-capture.js.map +1 -0
- package/daemon/dist/domain/snapshot-repository.d.ts +19 -0
- package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -0
- package/daemon/dist/domain/snapshot-repository.js +77 -0
- package/daemon/dist/domain/snapshot-repository.js.map +1 -0
- package/daemon/dist/domain/spec-library-service.d.ts +45 -0
- package/daemon/dist/domain/spec-library-service.d.ts.map +1 -0
- package/daemon/dist/domain/spec-library-service.js +197 -0
- package/daemon/dist/domain/spec-library-service.js.map +1 -0
- package/daemon/dist/domain/spec-review-service.d.ts +104 -0
- package/daemon/dist/domain/spec-review-service.d.ts.map +1 -0
- package/daemon/dist/domain/spec-review-service.js +220 -0
- package/daemon/dist/domain/spec-review-service.js.map +1 -0
- package/daemon/dist/domain/spec-validation-service.d.ts +21 -0
- package/daemon/dist/domain/spec-validation-service.d.ts.map +1 -0
- package/daemon/dist/domain/spec-validation-service.js +34 -0
- package/daemon/dist/domain/spec-validation-service.js.map +1 -0
- package/daemon/dist/domain/startup-orchestrator.d.ts +83 -0
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -0
- package/daemon/dist/domain/startup-orchestrator.js +252 -0
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -0
- package/daemon/dist/domain/startup-resolver.d.ts +28 -0
- package/daemon/dist/domain/startup-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/startup-resolver.js +57 -0
- package/daemon/dist/domain/startup-resolver.js.map +1 -0
- package/daemon/dist/domain/startup-validation.d.ts +31 -0
- package/daemon/dist/domain/startup-validation.d.ts.map +1 -0
- package/daemon/dist/domain/startup-validation.js +155 -0
- package/daemon/dist/domain/startup-validation.js.map +1 -0
- package/daemon/dist/domain/tmux-discovery-scanner.d.ts +29 -0
- package/daemon/dist/domain/tmux-discovery-scanner.d.ts.map +1 -0
- package/daemon/dist/domain/tmux-discovery-scanner.js +50 -0
- package/daemon/dist/domain/tmux-discovery-scanner.js.map +1 -0
- package/daemon/dist/domain/transcript-capture.d.ts +7 -0
- package/daemon/dist/domain/transcript-capture.d.ts.map +1 -0
- package/daemon/dist/domain/transcript-capture.js +15 -0
- package/daemon/dist/domain/transcript-capture.js.map +1 -0
- package/daemon/dist/domain/transcript-store.d.ts +19 -0
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -0
- package/daemon/dist/domain/transcript-store.js +280 -0
- package/daemon/dist/domain/transcript-store.js.map +1 -0
- package/daemon/dist/domain/types.d.ts +720 -0
- package/daemon/dist/domain/types.d.ts.map +1 -0
- package/daemon/dist/domain/types.js +2 -0
- package/daemon/dist/domain/types.js.map +1 -0
- package/daemon/dist/domain/up-command-router.d.ts +25 -0
- package/daemon/dist/domain/up-command-router.d.ts.map +1 -0
- package/daemon/dist/domain/up-command-router.js +116 -0
- package/daemon/dist/domain/up-command-router.js.map +1 -0
- package/daemon/dist/domain/whoami-service.d.ts +86 -0
- package/daemon/dist/domain/whoami-service.d.ts.map +1 -0
- package/daemon/dist/domain/whoami-service.js +195 -0
- package/daemon/dist/domain/whoami-service.js.map +1 -0
- package/daemon/dist/index.d.ts +2 -0
- package/daemon/dist/index.d.ts.map +1 -0
- package/daemon/dist/index.js +21 -0
- package/daemon/dist/index.js.map +1 -0
- package/daemon/dist/openrig-compat.d.ts +9 -0
- package/daemon/dist/openrig-compat.d.ts.map +1 -0
- package/daemon/dist/openrig-compat.js +57 -0
- package/daemon/dist/openrig-compat.js.map +1 -0
- package/daemon/dist/routes/adapters.d.ts +3 -0
- package/daemon/dist/routes/adapters.d.ts.map +1 -0
- package/daemon/dist/routes/adapters.js +20 -0
- package/daemon/dist/routes/adapters.js.map +1 -0
- package/daemon/dist/routes/agents.d.ts +3 -0
- package/daemon/dist/routes/agents.d.ts.map +1 -0
- package/daemon/dist/routes/agents.js +13 -0
- package/daemon/dist/routes/agents.js.map +1 -0
- package/daemon/dist/routes/ask.d.ts +3 -0
- package/daemon/dist/routes/ask.d.ts.map +1 -0
- package/daemon/dist/routes/ask.js +15 -0
- package/daemon/dist/routes/ask.js.map +1 -0
- package/daemon/dist/routes/bootstrap.d.ts +3 -0
- package/daemon/dist/routes/bootstrap.d.ts.map +1 -0
- package/daemon/dist/routes/bootstrap.js +137 -0
- package/daemon/dist/routes/bootstrap.js.map +1 -0
- package/daemon/dist/routes/bundles.d.ts +3 -0
- package/daemon/dist/routes/bundles.d.ts.map +1 -0
- package/daemon/dist/routes/bundles.js +334 -0
- package/daemon/dist/routes/bundles.js.map +1 -0
- package/daemon/dist/routes/chat.d.ts +3 -0
- package/daemon/dist/routes/chat.d.ts.map +1 -0
- package/daemon/dist/routes/chat.js +138 -0
- package/daemon/dist/routes/chat.js.map +1 -0
- package/daemon/dist/routes/discovery.d.ts +3 -0
- package/daemon/dist/routes/discovery.d.ts.map +1 -0
- package/daemon/dist/routes/discovery.js +200 -0
- package/daemon/dist/routes/discovery.js.map +1 -0
- package/daemon/dist/routes/down.d.ts +3 -0
- package/daemon/dist/routes/down.d.ts.map +1 -0
- package/daemon/dist/routes/down.js +55 -0
- package/daemon/dist/routes/down.js.map +1 -0
- package/daemon/dist/routes/events.d.ts +3 -0
- package/daemon/dist/routes/events.d.ts.map +1 -0
- package/daemon/dist/routes/events.js +71 -0
- package/daemon/dist/routes/events.js.map +1 -0
- package/daemon/dist/routes/packages.d.ts +3 -0
- package/daemon/dist/routes/packages.d.ts.map +1 -0
- package/daemon/dist/routes/packages.js +341 -0
- package/daemon/dist/routes/packages.js.map +1 -0
- package/daemon/dist/routes/ps.d.ts +3 -0
- package/daemon/dist/routes/ps.d.ts.map +1 -0
- package/daemon/dist/routes/ps.js +7 -0
- package/daemon/dist/routes/ps.js.map +1 -0
- package/daemon/dist/routes/rigs.d.ts +3 -0
- package/daemon/dist/routes/rigs.d.ts.map +1 -0
- package/daemon/dist/routes/rigs.js +329 -0
- package/daemon/dist/routes/rigs.js.map +1 -0
- package/daemon/dist/routes/rigspec.d.ts +6 -0
- package/daemon/dist/routes/rigspec.d.ts.map +1 -0
- package/daemon/dist/routes/rigspec.js +182 -0
- package/daemon/dist/routes/rigspec.js.map +1 -0
- package/daemon/dist/routes/sessions.d.ts +5 -0
- package/daemon/dist/routes/sessions.d.ts.map +1 -0
- package/daemon/dist/routes/sessions.js +125 -0
- package/daemon/dist/routes/sessions.js.map +1 -0
- package/daemon/dist/routes/snapshots.d.ts +4 -0
- package/daemon/dist/routes/snapshots.d.ts.map +1 -0
- package/daemon/dist/routes/snapshots.js +77 -0
- package/daemon/dist/routes/snapshots.js.map +1 -0
- package/daemon/dist/routes/spec-library.d.ts +3 -0
- package/daemon/dist/routes/spec-library.d.ts.map +1 -0
- package/daemon/dist/routes/spec-library.js +95 -0
- package/daemon/dist/routes/spec-library.js.map +1 -0
- package/daemon/dist/routes/spec-review.d.ts +3 -0
- package/daemon/dist/routes/spec-review.d.ts.map +1 -0
- package/daemon/dist/routes/spec-review.js +41 -0
- package/daemon/dist/routes/spec-review.js.map +1 -0
- package/daemon/dist/routes/transcripts.d.ts +3 -0
- package/daemon/dist/routes/transcripts.d.ts.map +1 -0
- package/daemon/dist/routes/transcripts.js +130 -0
- package/daemon/dist/routes/transcripts.js.map +1 -0
- package/daemon/dist/routes/transport.d.ts +3 -0
- package/daemon/dist/routes/transport.d.ts.map +1 -0
- package/daemon/dist/routes/transport.js +89 -0
- package/daemon/dist/routes/transport.js.map +1 -0
- package/daemon/dist/routes/up.d.ts +3 -0
- package/daemon/dist/routes/up.d.ts.map +1 -0
- package/daemon/dist/routes/up.js +175 -0
- package/daemon/dist/routes/up.js.map +1 -0
- package/daemon/dist/routes/whoami.d.ts +3 -0
- package/daemon/dist/routes/whoami.d.ts.map +1 -0
- package/daemon/dist/routes/whoami.js +33 -0
- package/daemon/dist/routes/whoami.js.map +1 -0
- package/daemon/dist/seed.d.ts +2 -0
- package/daemon/dist/seed.d.ts.map +1 -0
- package/daemon/dist/seed.js +41 -0
- package/daemon/dist/seed.js.map +1 -0
- package/daemon/dist/server.d.ts +78 -0
- package/daemon/dist/server.d.ts.map +1 -0
- package/daemon/dist/server.js +206 -0
- package/daemon/dist/server.js.map +1 -0
- package/daemon/dist/startup.d.ts +21 -0
- package/daemon/dist/startup.d.ts.map +1 -0
- package/daemon/dist/startup.js +348 -0
- package/daemon/dist/startup.js.map +1 -0
- package/daemon/specs/adversarial-review.yaml +40 -0
- package/daemon/specs/agents/analyst/agent.yaml +21 -0
- package/daemon/specs/agents/analyst/guidance/role.md +27 -0
- package/daemon/specs/agents/design/agent.yaml +21 -0
- package/daemon/specs/agents/design/guidance/role.md +26 -0
- package/daemon/specs/agents/impl/agent.yaml +21 -0
- package/daemon/specs/agents/impl/guidance/role.md +27 -0
- package/daemon/specs/agents/lead/agent.yaml +21 -0
- package/daemon/specs/agents/lead/guidance/role.md +33 -0
- package/daemon/specs/agents/qa/agent.yaml +21 -0
- package/daemon/specs/agents/qa/guidance/role.md +26 -0
- package/daemon/specs/agents/reviewer/agent.yaml +21 -0
- package/daemon/specs/agents/reviewer/guidance/role.md +26 -0
- package/daemon/specs/agents/synthesizer/agent.yaml +21 -0
- package/daemon/specs/agents/synthesizer/guidance/role.md +26 -0
- package/daemon/specs/implementation-pair.yaml +27 -0
- package/daemon/specs/product-team.yaml +90 -0
- package/daemon/specs/research-team.yaml +40 -0
- package/dist/bin-wrapper.d.ts +5 -0
- package/dist/bin-wrapper.d.ts.map +1 -0
- package/dist/bin-wrapper.js +32 -0
- package/dist/bin-wrapper.js.map +1 -0
- package/dist/client.d.ts +21 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +76 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/adopt.d.ts +6 -0
- package/dist/commands/adopt.d.ts.map +1 -0
- package/dist/commands/adopt.js +212 -0
- package/dist/commands/adopt.js.map +1 -0
- package/dist/commands/agent.d.ts +7 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +79 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/ask.d.ts +4 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +92 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/attach.d.ts +14 -0
- package/dist/commands/attach.d.ts.map +1 -0
- package/dist/commands/attach.js +146 -0
- package/dist/commands/attach.js.map +1 -0
- package/dist/commands/bind.d.ts +4 -0
- package/dist/commands/bind.d.ts.map +1 -0
- package/dist/commands/bind.js +70 -0
- package/dist/commands/bind.js.map +1 -0
- package/dist/commands/bootstrap.d.ts +4 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +141 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/commands/broadcast.d.ts +4 -0
- package/dist/commands/broadcast.d.ts.map +1 -0
- package/dist/commands/broadcast.js +71 -0
- package/dist/commands/broadcast.js.map +1 -0
- package/dist/commands/bundle.d.ts +4 -0
- package/dist/commands/bundle.d.ts.map +1 -0
- package/dist/commands/bundle.js +129 -0
- package/dist/commands/bundle.js.map +1 -0
- package/dist/commands/capture.d.ts +4 -0
- package/dist/commands/capture.d.ts.map +1 -0
- package/dist/commands/capture.js +80 -0
- package/dist/commands/capture.js.map +1 -0
- package/dist/commands/chatroom.d.ts +4 -0
- package/dist/commands/chatroom.d.ts.map +1 -0
- package/dist/commands/chatroom.js +314 -0
- package/dist/commands/chatroom.js.map +1 -0
- package/dist/commands/claim.d.ts +4 -0
- package/dist/commands/claim.d.ts.map +1 -0
- package/dist/commands/claim.js +40 -0
- package/dist/commands/claim.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +74 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/daemon.d.ts +11 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +167 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/discover.d.ts +4 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +60 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/doctor.d.ts +25 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +155 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/down.d.ts +9 -0
- package/dist/commands/down.d.ts.map +1 -0
- package/dist/commands/down.js +96 -0
- package/dist/commands/down.js.map +1 -0
- package/dist/commands/expand.d.ts +4 -0
- package/dist/commands/expand.d.ts.map +1 -0
- package/dist/commands/expand.js +98 -0
- package/dist/commands/expand.js.map +1 -0
- package/dist/commands/export.d.ts +7 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +46 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +7 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +157 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/launch.d.ts +4 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +45 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/mcp.d.ts +9 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +52 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/package.d.ts +4 -0
- package/dist/commands/package.d.ts.map +1 -0
- package/dist/commands/package.js +234 -0
- package/dist/commands/package.js.map +1 -0
- package/dist/commands/preflight.d.ts +11 -0
- package/dist/commands/preflight.d.ts.map +1 -0
- package/dist/commands/preflight.js +53 -0
- package/dist/commands/preflight.js.map +1 -0
- package/dist/commands/ps.d.ts +9 -0
- package/dist/commands/ps.d.ts.map +1 -0
- package/dist/commands/ps.js +129 -0
- package/dist/commands/ps.js.map +1 -0
- package/dist/commands/release.d.ts +4 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.js +69 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/remove.d.ts +4 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +43 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/requirements.d.ts +4 -0
- package/dist/commands/requirements.d.ts.map +1 -0
- package/dist/commands/requirements.js +66 -0
- package/dist/commands/requirements.js.map +1 -0
- package/dist/commands/restore.d.ts +4 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +57 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/rig.d.ts +7 -0
- package/dist/commands/rig.d.ts.map +1 -0
- package/dist/commands/rig.js +139 -0
- package/dist/commands/rig.js.map +1 -0
- package/dist/commands/send.d.ts +4 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +59 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/shrink.d.ts +4 -0
- package/dist/commands/shrink.d.ts.map +1 -0
- package/dist/commands/shrink.js +53 -0
- package/dist/commands/shrink.js.map +1 -0
- package/dist/commands/snapshot.d.ts +4 -0
- package/dist/commands/snapshot.d.ts.map +1 -0
- package/dist/commands/snapshot.js +74 -0
- package/dist/commands/snapshot.js.map +1 -0
- package/dist/commands/specs.d.ts +22 -0
- package/dist/commands/specs.d.ts.map +1 -0
- package/dist/commands/specs.js +260 -0
- package/dist/commands/specs.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +68 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/transcript.d.ts +4 -0
- package/dist/commands/transcript.d.ts.map +1 -0
- package/dist/commands/transcript.js +77 -0
- package/dist/commands/transcript.js.map +1 -0
- package/dist/commands/ui.d.ts +8 -0
- package/dist/commands/ui.d.ts.map +1 -0
- package/dist/commands/ui.js +57 -0
- package/dist/commands/ui.js.map +1 -0
- package/dist/commands/unclaim.d.ts +4 -0
- package/dist/commands/unclaim.d.ts.map +1 -0
- package/dist/commands/unclaim.js +46 -0
- package/dist/commands/unclaim.js.map +1 -0
- package/dist/commands/up.d.ts +7 -0
- package/dist/commands/up.d.ts.map +1 -0
- package/dist/commands/up.js +195 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/commands/whoami.d.ts +24 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +196 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config-store.d.ts +23 -0
- package/dist/config-store.d.ts.map +1 -0
- package/dist/config-store.js +141 -0
- package/dist/config-store.js.map +1 -0
- package/dist/daemon-lifecycle.d.ts +60 -0
- package/dist/daemon-lifecycle.d.ts.map +1 -0
- package/dist/daemon-lifecycle.js +225 -0
- package/dist/daemon-lifecycle.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +103 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +9 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +308 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/openrig-compat.d.ts +9 -0
- package/dist/openrig-compat.d.ts.map +1 -0
- package/dist/openrig-compat.js +57 -0
- package/dist/openrig-compat.js.map +1 -0
- package/dist/system-preflight.d.ts +36 -0
- package/dist/system-preflight.d.ts.map +1 -0
- package/dist/system-preflight.js +136 -0
- package/dist/system-preflight.js.map +1 -0
- package/package.json +46 -3
- package/ui/dist/assets/index-B09doO8H.js +139 -0
- package/ui/dist/assets/index-CrjgHtlk.js +224 -0
- package/ui/dist/assets/index-DGPFTQEV.css +1 -0
- package/ui/dist/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
- package/ui/dist/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
- package/ui/dist/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
- package/ui/dist/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
- package/ui/dist/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
- package/ui/dist/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
- package/ui/dist/assets/inter-cyrillic-700-normal-CjBOestx.woff2 +0 -0
- package/ui/dist/assets/inter-cyrillic-700-normal-DrXBdSj3.woff +0 -0
- package/ui/dist/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
- package/ui/dist/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
- package/ui/dist/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
- package/ui/dist/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
- package/ui/dist/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
- package/ui/dist/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
- package/ui/dist/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2 +0 -0
- package/ui/dist/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff +0 -0
- package/ui/dist/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
- package/ui/dist/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
- package/ui/dist/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
- package/ui/dist/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
- package/ui/dist/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
- package/ui/dist/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
- package/ui/dist/assets/inter-greek-700-normal-BUv2fZ6O.woff +0 -0
- package/ui/dist/assets/inter-greek-700-normal-C3JjAnD8.woff2 +0 -0
- package/ui/dist/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
- package/ui/dist/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
- package/ui/dist/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
- package/ui/dist/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
- package/ui/dist/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
- package/ui/dist/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
- package/ui/dist/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff +0 -0
- package/ui/dist/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2 +0 -0
- package/ui/dist/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
- package/ui/dist/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
- package/ui/dist/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
- package/ui/dist/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
- package/ui/dist/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
- package/ui/dist/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
- package/ui/dist/assets/inter-latin-700-normal-BLAVimhd.woff +0 -0
- package/ui/dist/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
- package/ui/dist/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
- package/ui/dist/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
- package/ui/dist/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
- package/ui/dist/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
- package/ui/dist/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
- package/ui/dist/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
- package/ui/dist/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2 +0 -0
- package/ui/dist/assets/inter-latin-ext-700-normal-TidjK2hL.woff +0 -0
- package/ui/dist/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
- package/ui/dist/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- package/ui/dist/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
- package/ui/dist/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
- package/ui/dist/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
- package/ui/dist/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
- package/ui/dist/assets/inter-vietnamese-700-normal-BZaoP0fm.woff +0 -0
- package/ui/dist/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2 +0 -0
- package/ui/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/ui/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/ui/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/ui/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/ui/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/ui/dist/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2 +0 -0
- package/ui/dist/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2 +0 -0
- package/ui/dist/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2 +0 -0
- package/ui/dist/index.html +14 -0
- package/index.js +0 -2
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ProjectionClassification } from "./projection-planner.js";
|
|
2
|
+
import type { FsOps } from "./package-resolver.js";
|
|
3
|
+
import type { InstallPlan, InstallPlanEntry } from "./install-planner.js";
|
|
4
|
+
export interface RefinedInstallPlan extends InstallPlan {
|
|
5
|
+
noOps: InstallPlanEntry[];
|
|
6
|
+
}
|
|
7
|
+
export interface GuidanceConflictMeta {
|
|
8
|
+
hasExistingBlock: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Refines an InstallPlan with content-aware conflict detection.
|
|
12
|
+
* - Skills/agents: same content = no-op, different content = conflict with hashes
|
|
13
|
+
* - Guidance: detects existing managed blocks for this specific package
|
|
14
|
+
* - Deferred entries (hooks/mcp/requirements) pass through unchanged
|
|
15
|
+
*/
|
|
16
|
+
export declare function detectConflicts(plan: InstallPlan, fs: FsOps): RefinedInstallPlan;
|
|
17
|
+
interface ProjectionFsOps {
|
|
18
|
+
readFile(path: string): string;
|
|
19
|
+
exists(path: string): boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Classify a resource projection using hash-based comparison.
|
|
23
|
+
* Returns projection-specific classification states (not legacy ActionClassification).
|
|
24
|
+
* @param sourcePath - absolute path to source resource
|
|
25
|
+
* @param targetPath - absolute path to target location
|
|
26
|
+
* @param category - resource category
|
|
27
|
+
* @param mergeStrategy - guidance merge strategy if applicable
|
|
28
|
+
* @param fsOps - filesystem operations
|
|
29
|
+
* @returns ProjectionClassification
|
|
30
|
+
*/
|
|
31
|
+
export declare function classifyResourceProjection(sourcePath: string, targetPath: string, category: string, mergeStrategy: string | undefined, fsOps: ProjectionFsOps): ProjectionClassification;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=conflict-detector.d.ts.map
|
|
@@ -0,0 +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,CA6FpB;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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
function hashContent(content) {
|
|
3
|
+
return createHash("sha256").update(content).digest("hex");
|
|
4
|
+
}
|
|
5
|
+
const MANAGED_BLOCK_START = (packageName) => `<!-- BEGIN RIGGED MANAGED BLOCK: ${packageName} -->`;
|
|
6
|
+
const MANAGED_BLOCK_END = (packageName) => `<!-- END RIGGED MANAGED BLOCK: ${packageName} -->`;
|
|
7
|
+
/**
|
|
8
|
+
* Refines an InstallPlan with content-aware conflict detection.
|
|
9
|
+
* - Skills/agents: same content = no-op, different content = conflict with hashes
|
|
10
|
+
* - Guidance: detects existing managed blocks for this specific package
|
|
11
|
+
* - Deferred entries (hooks/mcp/requirements) pass through unchanged
|
|
12
|
+
*/
|
|
13
|
+
export function detectConflicts(plan, fs) {
|
|
14
|
+
const actionable = [];
|
|
15
|
+
const conflicts = [];
|
|
16
|
+
const deferred = [];
|
|
17
|
+
const noOps = [];
|
|
18
|
+
const allEntries = [];
|
|
19
|
+
for (const entry of plan.entries) {
|
|
20
|
+
// Deferred entries pass through
|
|
21
|
+
if (entry.deferred) {
|
|
22
|
+
deferred.push(entry);
|
|
23
|
+
allEntries.push(entry);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
// No sourcePath (e.g., requirements already deferred, but just in case)
|
|
27
|
+
if (!entry.sourcePath) {
|
|
28
|
+
actionable.push(entry);
|
|
29
|
+
allEntries.push(entry);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (entry.exportType === "skill" || entry.exportType === "agent") {
|
|
33
|
+
if (!entry.conflict) {
|
|
34
|
+
// Target doesn't exist — safe_projection
|
|
35
|
+
actionable.push(entry);
|
|
36
|
+
allEntries.push(entry);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
// Target exists — compare content
|
|
40
|
+
try {
|
|
41
|
+
const sourceContent = fs.readFile(entry.sourcePath);
|
|
42
|
+
const targetContent = fs.readFile(entry.targetPath);
|
|
43
|
+
const sourceHash = hashContent(sourceContent);
|
|
44
|
+
const existingHash = hashContent(targetContent);
|
|
45
|
+
if (sourceHash === existingHash) {
|
|
46
|
+
// Same content — no-op
|
|
47
|
+
noOps.push({ ...entry, conflict: undefined });
|
|
48
|
+
allEntries.push({ ...entry, conflict: undefined });
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// Different content — enriched conflict
|
|
52
|
+
const enriched = {
|
|
53
|
+
...entry,
|
|
54
|
+
conflict: {
|
|
55
|
+
existingPath: entry.targetPath,
|
|
56
|
+
existingHash,
|
|
57
|
+
sourceHash,
|
|
58
|
+
reason: `${entry.exportType} '${entry.exportName}' exists with different content`,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
conflicts.push(enriched);
|
|
62
|
+
allEntries.push(enriched);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Can't read files — treat as conflict
|
|
67
|
+
conflicts.push(entry);
|
|
68
|
+
allEntries.push(entry);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else if (entry.exportType === "guidance") {
|
|
72
|
+
// Check for existing managed block
|
|
73
|
+
if (entry.classification === "managed_merge" && fs.exists(entry.targetPath)) {
|
|
74
|
+
const targetContent = fs.readFile(entry.targetPath);
|
|
75
|
+
const beginMarker = MANAGED_BLOCK_START(plan.packageName);
|
|
76
|
+
const endMarker = MANAGED_BLOCK_END(plan.packageName);
|
|
77
|
+
const hasExistingBlock = targetContent.includes(beginMarker) && targetContent.includes(endMarker);
|
|
78
|
+
const refined = {
|
|
79
|
+
...entry,
|
|
80
|
+
guidanceMeta: { hasExistingBlock },
|
|
81
|
+
};
|
|
82
|
+
actionable.push(refined);
|
|
83
|
+
allEntries.push(refined);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
actionable.push(entry);
|
|
87
|
+
allEntries.push(entry);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
actionable.push(entry);
|
|
92
|
+
allEntries.push(entry);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
...plan,
|
|
97
|
+
entries: allEntries,
|
|
98
|
+
actionable,
|
|
99
|
+
deferred,
|
|
100
|
+
conflicts,
|
|
101
|
+
noOps,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Classify a resource projection using hash-based comparison.
|
|
106
|
+
* Returns projection-specific classification states (not legacy ActionClassification).
|
|
107
|
+
* @param sourcePath - absolute path to source resource
|
|
108
|
+
* @param targetPath - absolute path to target location
|
|
109
|
+
* @param category - resource category
|
|
110
|
+
* @param mergeStrategy - guidance merge strategy if applicable
|
|
111
|
+
* @param fsOps - filesystem operations
|
|
112
|
+
* @returns ProjectionClassification
|
|
113
|
+
*/
|
|
114
|
+
export function classifyResourceProjection(sourcePath, targetPath, category, mergeStrategy, fsOps) {
|
|
115
|
+
// Guidance with managed_block: always managed_merge
|
|
116
|
+
if (category === "guidance" && mergeStrategy === "managed_block") {
|
|
117
|
+
return "managed_merge";
|
|
118
|
+
}
|
|
119
|
+
// Target doesn't exist: safe projection
|
|
120
|
+
if (!fsOps.exists(targetPath)) {
|
|
121
|
+
return "safe_projection";
|
|
122
|
+
}
|
|
123
|
+
// Target exists: compare hashes
|
|
124
|
+
try {
|
|
125
|
+
const sourceContent = fsOps.readFile(sourcePath);
|
|
126
|
+
const targetContent = fsOps.readFile(targetPath);
|
|
127
|
+
const sourceHash = hashContent(sourceContent);
|
|
128
|
+
const targetHash = hashContent(targetContent);
|
|
129
|
+
if (sourceHash === targetHash) {
|
|
130
|
+
return "no_op";
|
|
131
|
+
}
|
|
132
|
+
return "hash_conflict";
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return "hash_conflict";
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=conflict-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-detector.js","sourceRoot":"","sources":["../../src/domain/conflict-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { ContextUsageStore } from "./context-usage-store.js";
|
|
3
|
+
/** Default polling interval: 30 seconds. */
|
|
4
|
+
export declare const DEFAULT_POLL_INTERVAL_MS = 30000;
|
|
5
|
+
/**
|
|
6
|
+
* Polls known managed Claude sidecar files and persists the latest
|
|
7
|
+
* normalized context telemetry. Scheduler-only: no queries, no response
|
|
8
|
+
* shaping, no in-memory truth.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ContextMonitor {
|
|
11
|
+
private db;
|
|
12
|
+
private store;
|
|
13
|
+
private claudeContextProvisioner;
|
|
14
|
+
private timer;
|
|
15
|
+
constructor(db: Database.Database, store: ContextUsageStore, claudeContextProvisioner?: {
|
|
16
|
+
ensureContextCollector(binding: {
|
|
17
|
+
cwd?: string | null;
|
|
18
|
+
tmuxSession?: string | null;
|
|
19
|
+
}): void;
|
|
20
|
+
});
|
|
21
|
+
/** Discover active managed Claude sessions and poll their sidecar files. */
|
|
22
|
+
pollOnce(): void;
|
|
23
|
+
/** Start polling at the given interval. Idempotent. */
|
|
24
|
+
start(intervalMs?: number): void;
|
|
25
|
+
/** Stop polling. Safe to call before start or multiple times. */
|
|
26
|
+
stop(): void;
|
|
27
|
+
/** Query for managed Claude sessions that are currently running. */
|
|
28
|
+
private getEligibleSessions;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=context-monitor.d.ts.map
|
|
@@ -0,0 +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;AAElE,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAQ/C;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,wBAAwB,CAAyG;IACzI,OAAO,CAAC,KAAK,CAA+C;gBAG1D,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,iBAAiB,EACxB,wBAAwB,CAAC,EAAE;QAAE,sBAAsB,CAAC,OAAO,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE;IAO5H,4EAA4E;IAC5E,QAAQ,IAAI,IAAI;IAmBhB,uDAAuD;IACvD,KAAK,CAAC,UAAU,GAAE,MAAiC,GAAG,IAAI;IAS1D,iEAAiE;IACjE,IAAI,IAAI,IAAI;IAOZ,oEAAoE;IACpE,OAAO,CAAC,mBAAmB;CAa5B"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/** Default polling interval: 30 seconds. */
|
|
2
|
+
export const DEFAULT_POLL_INTERVAL_MS = 30_000;
|
|
3
|
+
/**
|
|
4
|
+
* Polls known managed Claude sidecar files and persists the latest
|
|
5
|
+
* normalized context telemetry. Scheduler-only: no queries, no response
|
|
6
|
+
* shaping, no in-memory truth.
|
|
7
|
+
*/
|
|
8
|
+
export class ContextMonitor {
|
|
9
|
+
db;
|
|
10
|
+
store;
|
|
11
|
+
claudeContextProvisioner;
|
|
12
|
+
timer = null;
|
|
13
|
+
constructor(db, store, claudeContextProvisioner) {
|
|
14
|
+
this.db = db;
|
|
15
|
+
this.store = store;
|
|
16
|
+
this.claudeContextProvisioner = claudeContextProvisioner ?? null;
|
|
17
|
+
}
|
|
18
|
+
/** Discover active managed Claude sessions and poll their sidecar files. */
|
|
19
|
+
pollOnce() {
|
|
20
|
+
const sessions = this.getEligibleSessions();
|
|
21
|
+
for (const session of sessions) {
|
|
22
|
+
try {
|
|
23
|
+
this.claudeContextProvisioner?.ensureContextCollector({
|
|
24
|
+
cwd: session.cwd ?? undefined,
|
|
25
|
+
tmuxSession: session.session_name,
|
|
26
|
+
});
|
|
27
|
+
const usage = this.store.readAndNormalize(session.session_name);
|
|
28
|
+
this.store.persist(session.node_id, usage);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// One bad session must not crash polling for others
|
|
32
|
+
try {
|
|
33
|
+
this.store.persist(session.node_id, this.store.unknownUsage("parse_error"));
|
|
34
|
+
}
|
|
35
|
+
catch { /* give up on this session */ }
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Start polling at the given interval. Idempotent. */
|
|
40
|
+
start(intervalMs = DEFAULT_POLL_INTERVAL_MS) {
|
|
41
|
+
if (this.timer)
|
|
42
|
+
return; // Already running
|
|
43
|
+
this.timer = setInterval(() => this.pollOnce(), intervalMs);
|
|
44
|
+
// Unref so the timer doesn't keep the process alive
|
|
45
|
+
if (this.timer && typeof this.timer === "object" && "unref" in this.timer) {
|
|
46
|
+
this.timer.unref();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Stop polling. Safe to call before start or multiple times. */
|
|
50
|
+
stop() {
|
|
51
|
+
if (this.timer) {
|
|
52
|
+
clearInterval(this.timer);
|
|
53
|
+
this.timer = null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Query for managed Claude sessions that are currently running. */
|
|
57
|
+
getEligibleSessions() {
|
|
58
|
+
return this.db.prepare(`
|
|
59
|
+
SELECT n.id as node_id, s.session_name, n.cwd
|
|
60
|
+
FROM nodes n
|
|
61
|
+
JOIN sessions s ON s.node_id = n.id
|
|
62
|
+
AND s.id = (SELECT s2.id FROM sessions s2 WHERE s2.node_id = n.id ORDER BY s2.id DESC LIMIT 1)
|
|
63
|
+
LEFT JOIN bindings b ON b.node_id = n.id
|
|
64
|
+
WHERE n.runtime = 'claude-code'
|
|
65
|
+
AND s.status = 'running'
|
|
66
|
+
AND COALESCE(b.attachment_type, 'tmux') = 'tmux'
|
|
67
|
+
AND COALESCE(b.tmux_session, s.session_name) IS NOT NULL
|
|
68
|
+
`).all();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=context-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-monitor.js","sourceRoot":"","sources":["../../src/domain/context-monitor.ts"],"names":[],"mappings":"AAGA,4CAA4C;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAQ/C;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,EAAE,CAAoB;IACtB,KAAK,CAAoB;IACzB,wBAAwB,CAAyG;IACjI,KAAK,GAA0C,IAAI,CAAC;IAE5D,YACE,EAAqB,EACrB,KAAwB,EACxB,wBAA0H;QAE1H,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,IAAI,IAAI,CAAC;IACnE,CAAC;IAED,4EAA4E;IAC5E,QAAQ;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,IAAI,CAAC,wBAAwB,EAAE,sBAAsB,CAAC;oBACpD,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,SAAS;oBAC7B,WAAW,EAAE,OAAO,CAAC,YAAY;iBAClC,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,oDAAoD;gBACpD,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC9E,CAAC;gBAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,aAAqB,wBAAwB;QACjD,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,kBAAkB;QAC1C,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5D,oDAAoD;QACpD,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzE,IAAI,CAAC,KAAwB,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,oEAAoE;IAC5D,mBAAmB;QACzB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;KAUtB,CAAC,CAAC,GAAG,EAAuB,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { ContextUsage, ContextUnknownReason } from "./types.js";
|
|
3
|
+
/** Freshness threshold: samples older than this are considered stale for compact displays. */
|
|
4
|
+
export declare const FRESHNESS_THRESHOLD_MS = 120000;
|
|
5
|
+
export interface ContextUsageStoreOpts {
|
|
6
|
+
stateDir: string;
|
|
7
|
+
}
|
|
8
|
+
interface SidecarRaw {
|
|
9
|
+
context_window?: {
|
|
10
|
+
context_window_size?: number;
|
|
11
|
+
used_percentage?: number;
|
|
12
|
+
remaining_percentage?: number;
|
|
13
|
+
total_input_tokens?: number;
|
|
14
|
+
total_output_tokens?: number;
|
|
15
|
+
current_usage?: unknown;
|
|
16
|
+
};
|
|
17
|
+
session_id?: string;
|
|
18
|
+
session_name?: string;
|
|
19
|
+
transcript_path?: string;
|
|
20
|
+
sampled_at?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class ContextUsageStore {
|
|
23
|
+
readonly db: Database.Database;
|
|
24
|
+
private stateDir;
|
|
25
|
+
constructor(db: Database.Database, opts: ContextUsageStoreOpts);
|
|
26
|
+
/** Get the sidecar file path for a session. */
|
|
27
|
+
getSidecarPath(sessionName: string): string;
|
|
28
|
+
/** Read and parse a sidecar JSON file. Returns discriminated result. */
|
|
29
|
+
readSidecar(sessionName: string): {
|
|
30
|
+
ok: true;
|
|
31
|
+
data: SidecarRaw;
|
|
32
|
+
} | {
|
|
33
|
+
ok: false;
|
|
34
|
+
reason: "missing_sidecar" | "parse_error";
|
|
35
|
+
};
|
|
36
|
+
/** Read sidecar and normalize into ContextUsage in one step. */
|
|
37
|
+
readAndNormalize(sessionName: string): ContextUsage;
|
|
38
|
+
/** Normalize raw sidecar data into a ContextUsage record. */
|
|
39
|
+
normalizeSample(raw: SidecarRaw | null): ContextUsage;
|
|
40
|
+
/** Persist a context usage record for a node. Upserts. */
|
|
41
|
+
persist(nodeId: string, usage: ContextUsage): void;
|
|
42
|
+
/** Get context usage for a single node. Session-aware: mismatched session returns unknown. */
|
|
43
|
+
getForNode(nodeId: string, currentSessionName: string | null): ContextUsage;
|
|
44
|
+
/** Batch get context usage for multiple nodes. Session-aware per entry. */
|
|
45
|
+
getForNodes(entries: Array<{
|
|
46
|
+
nodeId: string;
|
|
47
|
+
currentSessionName: string | null;
|
|
48
|
+
}>): Map<string, ContextUsage>;
|
|
49
|
+
/** Create an unknown ContextUsage with an honest reason. */
|
|
50
|
+
unknownUsage(reason: ContextUnknownReason): ContextUsage;
|
|
51
|
+
/** Check if a sample timestamp is fresh. */
|
|
52
|
+
private isFresh;
|
|
53
|
+
/** Convert a DB row to a ContextUsage, applying freshness. */
|
|
54
|
+
private rowToUsage;
|
|
55
|
+
private normalizeCurrentUsage;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=context-usage-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-usage-store.d.ts","sourceRoot":"","sources":["../../src/domain/context-usage-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAErE,8FAA8F;AAC9F,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,UAAU;IAClB,cAAc,CAAC,EAAE;QACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAoBD,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAS;gBAEb,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,qBAAqB;IAK9D,+CAA+C;IAC/C,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAM3C,wEAAwE;IACxE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,iBAAiB,GAAG,aAAa,CAAA;KAAE;IAY3H,gEAAgE;IAChE,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY;IAMnD,6DAA6D;IAC7D,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,GAAG,YAAY;IA+BrD,0DAA0D;IAC1D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAyClD,8FAA8F;IAC9F,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY;IAc3E,2EAA2E;IAC3E,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAoC7G,4DAA4D;IAC5D,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,YAAY;IAmBxD,4CAA4C;IAC5C,OAAO,CAAC,OAAO;IASf,8DAA8D;IAC9D,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,qBAAqB;CAS9B"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
3
|
+
/** Freshness threshold: samples older than this are considered stale for compact displays. */
|
|
4
|
+
export const FRESHNESS_THRESHOLD_MS = 120_000; // 2 minutes
|
|
5
|
+
export class ContextUsageStore {
|
|
6
|
+
db;
|
|
7
|
+
stateDir;
|
|
8
|
+
constructor(db, opts) {
|
|
9
|
+
this.db = db;
|
|
10
|
+
this.stateDir = opts.stateDir;
|
|
11
|
+
}
|
|
12
|
+
/** Get the sidecar file path for a session. */
|
|
13
|
+
getSidecarPath(sessionName) {
|
|
14
|
+
// Sanitize session name for filesystem safety
|
|
15
|
+
const safe = sessionName.replace(/[^a-zA-Z0-9@._-]/g, "_");
|
|
16
|
+
return join(this.stateDir, "context", `${safe}.json`);
|
|
17
|
+
}
|
|
18
|
+
/** Read and parse a sidecar JSON file. Returns discriminated result. */
|
|
19
|
+
readSidecar(sessionName) {
|
|
20
|
+
const filePath = this.getSidecarPath(sessionName);
|
|
21
|
+
try {
|
|
22
|
+
if (!existsSync(filePath))
|
|
23
|
+
return { ok: false, reason: "missing_sidecar" };
|
|
24
|
+
const content = readFileSync(filePath, "utf-8");
|
|
25
|
+
const parsed = JSON.parse(content);
|
|
26
|
+
return { ok: true, data: parsed };
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return { ok: false, reason: "parse_error" };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Read sidecar and normalize into ContextUsage in one step. */
|
|
33
|
+
readAndNormalize(sessionName) {
|
|
34
|
+
const result = this.readSidecar(sessionName);
|
|
35
|
+
if (!result.ok)
|
|
36
|
+
return this.unknownUsage(result.reason);
|
|
37
|
+
return this.normalizeSample(result.data);
|
|
38
|
+
}
|
|
39
|
+
/** Normalize raw sidecar data into a ContextUsage record. */
|
|
40
|
+
normalizeSample(raw) {
|
|
41
|
+
if (!raw) {
|
|
42
|
+
return this.unknownUsage("missing_sidecar");
|
|
43
|
+
}
|
|
44
|
+
const cw = raw.context_window;
|
|
45
|
+
if (!cw || typeof cw.used_percentage !== "number") {
|
|
46
|
+
return this.unknownUsage("parse_error");
|
|
47
|
+
}
|
|
48
|
+
const sampledAt = raw.sampled_at ?? null;
|
|
49
|
+
const fresh = sampledAt ? this.isFresh(sampledAt) : false;
|
|
50
|
+
return {
|
|
51
|
+
availability: "known",
|
|
52
|
+
reason: null,
|
|
53
|
+
source: "claude_statusline_json",
|
|
54
|
+
usedPercentage: cw.used_percentage ?? null,
|
|
55
|
+
remainingPercentage: cw.remaining_percentage ?? null,
|
|
56
|
+
contextWindowSize: cw.context_window_size ?? null,
|
|
57
|
+
totalInputTokens: cw.total_input_tokens ?? null,
|
|
58
|
+
totalOutputTokens: cw.total_output_tokens ?? null,
|
|
59
|
+
currentUsage: this.normalizeCurrentUsage(cw.current_usage),
|
|
60
|
+
transcriptPath: raw.transcript_path ?? null,
|
|
61
|
+
sessionId: raw.session_id ?? null,
|
|
62
|
+
sessionName: raw.session_name ?? null,
|
|
63
|
+
sampledAt,
|
|
64
|
+
fresh,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Persist a context usage record for a node. Upserts. */
|
|
68
|
+
persist(nodeId, usage) {
|
|
69
|
+
this.db.prepare(`
|
|
70
|
+
INSERT INTO context_usage (
|
|
71
|
+
node_id, session_id, session_name, availability, reason, source,
|
|
72
|
+
used_percentage, remaining_percentage, context_window_size,
|
|
73
|
+
total_input_tokens, total_output_tokens, current_usage,
|
|
74
|
+
transcript_path, sampled_at, updated_at
|
|
75
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
|
|
76
|
+
ON CONFLICT(node_id) DO UPDATE SET
|
|
77
|
+
session_id = excluded.session_id,
|
|
78
|
+
session_name = excluded.session_name,
|
|
79
|
+
availability = excluded.availability,
|
|
80
|
+
reason = excluded.reason,
|
|
81
|
+
source = excluded.source,
|
|
82
|
+
used_percentage = excluded.used_percentage,
|
|
83
|
+
remaining_percentage = excluded.remaining_percentage,
|
|
84
|
+
context_window_size = excluded.context_window_size,
|
|
85
|
+
total_input_tokens = excluded.total_input_tokens,
|
|
86
|
+
total_output_tokens = excluded.total_output_tokens,
|
|
87
|
+
current_usage = excluded.current_usage,
|
|
88
|
+
transcript_path = excluded.transcript_path,
|
|
89
|
+
sampled_at = excluded.sampled_at,
|
|
90
|
+
updated_at = datetime('now')
|
|
91
|
+
`).run(nodeId, usage.sessionId, usage.sessionName, usage.availability, usage.reason, usage.source, usage.usedPercentage, usage.remainingPercentage, usage.contextWindowSize, usage.totalInputTokens, usage.totalOutputTokens, usage.currentUsage, usage.transcriptPath, usage.sampledAt);
|
|
92
|
+
}
|
|
93
|
+
/** Get context usage for a single node. Session-aware: mismatched session returns unknown. */
|
|
94
|
+
getForNode(nodeId, currentSessionName) {
|
|
95
|
+
if (!currentSessionName)
|
|
96
|
+
return this.unknownUsage("not_managed");
|
|
97
|
+
const row = this.db.prepare("SELECT * FROM context_usage WHERE node_id = ?").get(nodeId);
|
|
98
|
+
if (!row)
|
|
99
|
+
return this.unknownUsage("no_data");
|
|
100
|
+
// Session mismatch guard: prevent stale cross-session inheritance
|
|
101
|
+
if (row.session_name && row.session_name !== currentSessionName) {
|
|
102
|
+
return this.unknownUsage("session_mismatch");
|
|
103
|
+
}
|
|
104
|
+
return this.rowToUsage(row);
|
|
105
|
+
}
|
|
106
|
+
/** Batch get context usage for multiple nodes. Session-aware per entry. */
|
|
107
|
+
getForNodes(entries) {
|
|
108
|
+
const result = new Map();
|
|
109
|
+
if (entries.length === 0)
|
|
110
|
+
return result;
|
|
111
|
+
const nodeIds = entries.map((e) => e.nodeId);
|
|
112
|
+
const sessionMap = new Map(entries.map((e) => [e.nodeId, e.currentSessionName]));
|
|
113
|
+
const rows = this.db.prepare(`SELECT * FROM context_usage WHERE node_id IN (${nodeIds.map(() => "?").join(",")})`).all(...nodeIds);
|
|
114
|
+
const rowMap = new Map(rows.map((r) => [r.node_id, r]));
|
|
115
|
+
for (const entry of entries) {
|
|
116
|
+
if (!entry.currentSessionName) {
|
|
117
|
+
result.set(entry.nodeId, this.unknownUsage("not_managed"));
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const row = rowMap.get(entry.nodeId);
|
|
121
|
+
if (!row) {
|
|
122
|
+
result.set(entry.nodeId, this.unknownUsage("no_data"));
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (row.session_name && row.session_name !== entry.currentSessionName) {
|
|
126
|
+
result.set(entry.nodeId, this.unknownUsage("session_mismatch"));
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
result.set(entry.nodeId, this.rowToUsage(row));
|
|
130
|
+
}
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
/** Create an unknown ContextUsage with an honest reason. */
|
|
134
|
+
unknownUsage(reason) {
|
|
135
|
+
return {
|
|
136
|
+
availability: "unknown",
|
|
137
|
+
reason,
|
|
138
|
+
source: null,
|
|
139
|
+
usedPercentage: null,
|
|
140
|
+
remainingPercentage: null,
|
|
141
|
+
contextWindowSize: null,
|
|
142
|
+
totalInputTokens: null,
|
|
143
|
+
totalOutputTokens: null,
|
|
144
|
+
currentUsage: null,
|
|
145
|
+
transcriptPath: null,
|
|
146
|
+
sessionId: null,
|
|
147
|
+
sessionName: null,
|
|
148
|
+
sampledAt: null,
|
|
149
|
+
fresh: false,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** Check if a sample timestamp is fresh. */
|
|
153
|
+
isFresh(sampledAt) {
|
|
154
|
+
try {
|
|
155
|
+
const age = Date.now() - new Date(sampledAt).getTime();
|
|
156
|
+
return age < FRESHNESS_THRESHOLD_MS;
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/** Convert a DB row to a ContextUsage, applying freshness. */
|
|
163
|
+
rowToUsage(row) {
|
|
164
|
+
const fresh = row.sampled_at ? this.isFresh(row.sampled_at) : false;
|
|
165
|
+
return {
|
|
166
|
+
availability: row.availability,
|
|
167
|
+
reason: row.reason,
|
|
168
|
+
source: row.source,
|
|
169
|
+
usedPercentage: row.used_percentage,
|
|
170
|
+
remainingPercentage: row.remaining_percentage,
|
|
171
|
+
contextWindowSize: row.context_window_size,
|
|
172
|
+
totalInputTokens: row.total_input_tokens,
|
|
173
|
+
totalOutputTokens: row.total_output_tokens,
|
|
174
|
+
currentUsage: row.current_usage,
|
|
175
|
+
transcriptPath: row.transcript_path,
|
|
176
|
+
sessionId: row.session_id,
|
|
177
|
+
sessionName: row.session_name,
|
|
178
|
+
sampledAt: row.sampled_at,
|
|
179
|
+
fresh,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
normalizeCurrentUsage(value) {
|
|
183
|
+
if (value == null)
|
|
184
|
+
return null;
|
|
185
|
+
if (typeof value === "string")
|
|
186
|
+
return value;
|
|
187
|
+
try {
|
|
188
|
+
return JSON.stringify(value);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return String(value);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=context-usage-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-usage-store.js","sourceRoot":"","sources":["../../src/domain/context-usage-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface DemoRigSummaryLike {
|
|
2
|
+
rigId: string;
|
|
3
|
+
name: string;
|
|
4
|
+
status?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface DemoNodeLike {
|
|
7
|
+
rigId: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function selectCurrentRigSummary<T extends DemoRigSummaryLike>(rigs: T[], rigName: string): T | null;
|
|
10
|
+
export declare function filterNodesForRigId<T extends DemoNodeLike>(nodes: T[], rigId: string): T[];
|
|
11
|
+
//# sourceMappingURL=demo-rig-selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-rig-selector.d.ts","sourceRoot":"","sources":["../../src/domain/demo-rig-selector.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,kBAAkB,EAClE,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE,MAAM,GACd,CAAC,GAAG,IAAI,CAoBV;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,YAAY,EACxD,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,MAAM,GACZ,CAAC,EAAE,CAEL"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function selectCurrentRigSummary(rigs, rigName) {
|
|
2
|
+
const matches = rigs.filter((entry) => entry.name === rigName);
|
|
3
|
+
if (matches.length === 0) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const runningMatches = matches.filter((entry) => entry.status === "running");
|
|
7
|
+
if (runningMatches.length === 1) {
|
|
8
|
+
return runningMatches[0] ?? null;
|
|
9
|
+
}
|
|
10
|
+
if (runningMatches.length > 1) {
|
|
11
|
+
throw new Error(`Rig '${rigName}' is ambiguous — ${runningMatches.length} running rigs share that name.`);
|
|
12
|
+
}
|
|
13
|
+
if (matches.length > 1) {
|
|
14
|
+
throw new Error(`Rig '${rigName}' is ambiguous — ${matches.length} stopped rigs share that name and none are running.`);
|
|
15
|
+
}
|
|
16
|
+
return matches[0] ?? null;
|
|
17
|
+
}
|
|
18
|
+
export function filterNodesForRigId(nodes, rigId) {
|
|
19
|
+
return nodes.filter((entry) => entry.rigId === rigId);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=demo-rig-selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-rig-selector.js","sourceRoot":"","sources":["../../src/domain/demo-rig-selector.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,uBAAuB,CACrC,IAAS,EACT,OAAe;IAEf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC7E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACnC,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,QAAQ,OAAO,oBAAoB,cAAc,CAAC,MAAM,gCAAgC,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,QAAQ,OAAO,oBAAoB,OAAO,CAAC,MAAM,qDAAqD,CACvG,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAU,EACV,KAAa;IAEb,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { TmuxDiscoveryScanner } from "./tmux-discovery-scanner.js";
|
|
2
|
+
import type { SessionFingerprinter } from "./session-fingerprinter.js";
|
|
3
|
+
import type { SessionEnricher } from "./session-enricher.js";
|
|
4
|
+
import type { DiscoveryRepository } from "./discovery-repository.js";
|
|
5
|
+
import type { SessionRegistry } from "./session-registry.js";
|
|
6
|
+
import type { EventBus } from "./event-bus.js";
|
|
7
|
+
import type { DiscoveredSession } from "./discovery-types.js";
|
|
8
|
+
interface DiscoveryCoordinatorDeps {
|
|
9
|
+
scanner: TmuxDiscoveryScanner;
|
|
10
|
+
fingerprinter: SessionFingerprinter;
|
|
11
|
+
enricher: SessionEnricher;
|
|
12
|
+
discoveryRepo: DiscoveryRepository;
|
|
13
|
+
sessionRegistry: SessionRegistry;
|
|
14
|
+
eventBus: EventBus;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Orchestrates the full discovery pipeline:
|
|
18
|
+
* scan → filter managed → fingerprint → enrich → persist → vanish detection → events
|
|
19
|
+
*/
|
|
20
|
+
export declare class DiscoveryCoordinator {
|
|
21
|
+
private deps;
|
|
22
|
+
constructor(deps: DiscoveryCoordinatorDeps);
|
|
23
|
+
/** Run a single discovery scan cycle. */
|
|
24
|
+
scanOnce(): Promise<DiscoveredSession[]>;
|
|
25
|
+
private getManagedBindings;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=discovery-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-coordinator.d.ts","sourceRoot":"","sources":["../../src/domain/discovery-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAM9D,UAAU,wBAAwB;IAChC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAA2B;gBAE3B,IAAI,EAAE,wBAAwB;IAI1C,yCAAyC;IACnC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAmG9C,OAAO,CAAC,kBAAkB;CAU3B"}
|