@openrig/cli 0.6.9 → 0.6.11
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/README.md +2 -2
- package/daemon/assets/onboarding/02-self-and-competent-action.md +4 -3
- package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +42 -2
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -1
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +7 -1
- package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +6 -1
- package/daemon/assets/skills/rigs/SKILL.md +7 -5
- package/daemon/context-packs/help/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +64 -14
- package/daemon/context-packs/reference/getting-started.md +10 -6
- package/daemon/context-packs/reference/manifest.yaml +1 -1
- package/daemon/context-packs/reference/rig-spec.md +2 -2
- package/daemon/context-packs/reference/whats-new.md +151 -74
- package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
- package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
- package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -1
- package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +3 -3
- package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +2 -2
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
- package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
- package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-user/SKILL.md +7 -1
- package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +6 -1
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
- package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
- package/daemon/context-packs/world-example/manifest.yaml +1 -1
- package/daemon/context-packs/world-public/manifest.yaml +1 -1
- package/daemon/dist/adapters/claude-code-adapter.d.ts +0 -14
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +43 -80
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/claude-resume-launch.d.ts +4 -0
- package/daemon/dist/adapters/claude-resume-launch.d.ts.map +1 -0
- package/daemon/dist/adapters/claude-resume-launch.js +13 -0
- package/daemon/dist/adapters/claude-resume-launch.js.map +1 -0
- package/daemon/dist/adapters/claude-resume.d.ts +2 -1
- package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-resume.js +9 -4
- package/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +35 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +94 -44
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner.js +6 -3
- package/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.js +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/tmux-server.d.ts +15 -0
- package/daemon/dist/adapters/tmux-server.d.ts.map +1 -0
- package/daemon/dist/adapters/tmux-server.js +58 -0
- package/daemon/dist/adapters/tmux-server.js.map +1 -0
- package/daemon/dist/adapters/tmux.d.ts +26 -1
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +130 -7
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/daemon/dist/db/all-migrations.js +6 -0
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/099_queue_items_recovery_tags.d.ts +3 -0
- package/daemon/dist/db/migrations/099_queue_items_recovery_tags.d.ts.map +1 -0
- package/daemon/dist/db/migrations/099_queue_items_recovery_tags.js +19 -0
- package/daemon/dist/db/migrations/099_queue_items_recovery_tags.js.map +1 -0
- package/daemon/dist/db/migrations/101_claude_resume_rotation.d.ts +3 -0
- package/daemon/dist/db/migrations/101_claude_resume_rotation.d.ts.map +1 -0
- package/daemon/dist/db/migrations/101_claude_resume_rotation.js +19 -0
- package/daemon/dist/db/migrations/101_claude_resume_rotation.js.map +1 -0
- package/daemon/dist/db/migrations/103_session_stop_intent.d.ts +4 -0
- package/daemon/dist/db/migrations/103_session_stop_intent.d.ts.map +1 -0
- package/daemon/dist/db/migrations/103_session_stop_intent.js +9 -0
- package/daemon/dist/db/migrations/103_session_stop_intent.js.map +1 -0
- package/daemon/dist/domain/active-occupant.d.ts +14 -0
- package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
- package/daemon/dist/domain/active-occupant.js +17 -0
- package/daemon/dist/domain/active-occupant.js.map +1 -1
- package/daemon/dist/domain/agent-activity-store.js +3 -0
- package/daemon/dist/domain/agent-activity-store.js.map +1 -1
- package/daemon/dist/domain/bootstrap-repository.js +1 -1
- package/daemon/dist/domain/bootstrap-repository.js.map +1 -1
- package/daemon/dist/domain/chat-repository.d.ts +3 -0
- package/daemon/dist/domain/chat-repository.d.ts.map +1 -1
- package/daemon/dist/domain/chat-repository.js +15 -4
- package/daemon/dist/domain/chat-repository.js.map +1 -1
- package/daemon/dist/domain/claude-managed-launch.d.ts +1 -1
- package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
- package/daemon/dist/domain/claude-managed-launch.js +3 -2
- package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
- package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -1
- package/daemon/dist/domain/cmux-layout-service.js +2 -1
- package/daemon/dist/domain/cmux-layout-service.js.map +1 -1
- package/daemon/dist/domain/codex-git-add-dirs.js +1 -1
- package/daemon/dist/domain/codex-git-add-dirs.js.map +1 -1
- package/daemon/dist/domain/codex-network-default.d.ts +3 -0
- package/daemon/dist/domain/codex-network-default.d.ts.map +1 -1
- package/daemon/dist/domain/codex-network-default.js +1 -1
- package/daemon/dist/domain/codex-network-default.js.map +1 -1
- package/daemon/dist/domain/codex-pane-patterns.d.ts +2 -0
- package/daemon/dist/domain/codex-pane-patterns.d.ts.map +1 -0
- package/daemon/dist/domain/codex-pane-patterns.js +5 -0
- package/daemon/dist/domain/codex-pane-patterns.js.map +1 -0
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/context-monitor.js +46 -22
- package/daemon/dist/domain/context-monitor.js.map +1 -1
- package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
- package/daemon/dist/domain/context-usage-store.js +6 -1
- package/daemon/dist/domain/context-usage-store.js.map +1 -1
- package/daemon/dist/domain/crash-cart-conductor.d.ts.map +1 -1
- package/daemon/dist/domain/crash-cart-conductor.js +3 -1
- package/daemon/dist/domain/crash-cart-conductor.js.map +1 -1
- package/daemon/dist/domain/cwd-resolution.d.ts +8 -0
- package/daemon/dist/domain/cwd-resolution.d.ts.map +1 -1
- package/daemon/dist/domain/cwd-resolution.js +24 -3
- package/daemon/dist/domain/cwd-resolution.js.map +1 -1
- package/daemon/dist/domain/files/file-read.d.ts.map +1 -1
- package/daemon/dist/domain/files/file-read.js +11 -3
- package/daemon/dist/domain/files/file-read.js.map +1 -1
- package/daemon/dist/domain/gateway/connections-projection.d.ts +1 -1
- package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/channel-recovery.js +4 -3
- package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts +21 -2
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.js +70 -11
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +4 -0
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.js +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +7 -4
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/history-query.d.ts.map +1 -1
- package/daemon/dist/domain/history-query.js +8 -6
- package/daemon/dist/domain/history-query.js.map +1 -1
- package/daemon/dist/domain/human-questions.d.ts +4 -1
- package/daemon/dist/domain/human-questions.d.ts.map +1 -1
- package/daemon/dist/domain/human-questions.js.map +1 -1
- package/daemon/dist/domain/install-engine.js +2 -2
- package/daemon/dist/domain/install-engine.js.map +1 -1
- package/daemon/dist/domain/native-process-lineage.d.ts +57 -4
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +277 -42
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/node-cmux-service.d.ts.map +1 -1
- package/daemon/dist/domain/node-cmux-service.js +2 -1
- package/daemon/dist/domain/node-cmux-service.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +71 -18
- 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 +2 -1
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/pane-cutover.d.ts +27 -0
- package/daemon/dist/domain/pane-cutover.d.ts.map +1 -0
- package/daemon/dist/domain/pane-cutover.js +37 -0
- package/daemon/dist/domain/pane-cutover.js.map +1 -0
- package/daemon/dist/domain/parent-session-env.d.ts +8 -0
- package/daemon/dist/domain/parent-session-env.d.ts.map +1 -0
- package/daemon/dist/domain/parent-session-env.js +37 -0
- package/daemon/dist/domain/parent-session-env.js.map +1 -0
- package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +11 -0
- package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
- package/daemon/dist/domain/policies/parked-owner-consumer.js +81 -11
- package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
- package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/profile-resolver.js +2 -3
- package/daemon/dist/domain/profile-resolver.js.map +1 -1
- package/daemon/dist/domain/progress/progress-indexer.d.ts.map +1 -1
- package/daemon/dist/domain/progress/progress-indexer.js +19 -0
- package/daemon/dist/domain/progress/progress-indexer.js.map +1 -1
- package/daemon/dist/domain/proof/judgments.d.ts +10 -5
- package/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
- package/daemon/dist/domain/proof/judgments.js +27 -19
- package/daemon/dist/domain/proof/judgments.js.map +1 -1
- package/daemon/dist/domain/provider/codex-limit-banner.d.ts +40 -0
- package/daemon/dist/domain/provider/codex-limit-banner.d.ts.map +1 -0
- package/daemon/dist/domain/provider/codex-limit-banner.js +168 -0
- package/daemon/dist/domain/provider/codex-limit-banner.js.map +1 -0
- package/daemon/dist/domain/provider/codex-usage-reader.d.ts +31 -0
- package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -0
- package/daemon/dist/domain/provider/codex-usage-reader.js +115 -0
- package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -0
- package/daemon/dist/domain/provider/codex-usage-windows.d.ts +78 -0
- package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -0
- package/daemon/dist/domain/provider/codex-usage-windows.js +259 -0
- package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -0
- package/daemon/dist/domain/provider/provider-service-impl.d.ts +10 -0
- package/daemon/dist/domain/provider/provider-service-impl.d.ts.map +1 -1
- package/daemon/dist/domain/provider/provider-service-impl.js +27 -1
- package/daemon/dist/domain/provider/provider-service-impl.js.map +1 -1
- package/daemon/dist/domain/provider/provider-service.d.ts +5 -0
- package/daemon/dist/domain/provider/provider-service.d.ts.map +1 -1
- package/daemon/dist/domain/provider/provider-types.d.ts +65 -0
- package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.d.ts +5 -2
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +29 -26
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-recovery.d.ts.map +1 -1
- package/daemon/dist/domain/queue-recovery.js +10 -3
- package/daemon/dist/domain/queue-recovery.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +68 -13
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +72 -43
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.js +26 -9
- package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.d.ts +17 -0
- package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.js +49 -3
- package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
- package/daemon/dist/domain/restore-check-service.d.ts +8 -0
- package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
- package/daemon/dist/domain/restore-check-service.js +12 -3
- package/daemon/dist/domain/restore-check-service.js.map +1 -1
- package/daemon/dist/domain/restore-guidance.d.ts +39 -0
- package/daemon/dist/domain/restore-guidance.d.ts.map +1 -0
- package/daemon/dist/domain/restore-guidance.js +163 -0
- package/daemon/dist/domain/restore-guidance.js.map +1 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts +10 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +192 -9
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/restore-plan-preview.d.ts +4 -0
- package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
- package/daemon/dist/domain/restore-plan-preview.js +14 -3
- package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +7 -6
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +3 -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/scope/scope-view-projection.d.ts +4 -2
- package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.js +11 -11
- package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.d.ts +5 -2
- package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.js +18 -4
- package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
- package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-identity-reconciler.js +7 -2
- package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.d.ts +117 -2
- package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.js +335 -74
- package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/daemon/dist/domain/seat-restart-in-place.d.ts +292 -0
- package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -0
- package/daemon/dist/domain/seat-restart-in-place.js +895 -0
- package/daemon/dist/domain/seat-restart-in-place.js.map +1 -0
- package/daemon/dist/domain/seat-status-service.d.ts +2 -1
- package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-status-service.js +1 -0
- package/daemon/dist/domain/seat-status-service.js.map +1 -1
- package/daemon/dist/domain/seat-structural-activity-service.d.ts +9 -1
- package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-structural-activity-service.js +27 -4
- package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-switch-client-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-switch-client-service.js +2 -1
- package/daemon/dist/domain/seat-switch-client-service.js.map +1 -1
- package/daemon/dist/domain/session-fingerprinter.d.ts.map +1 -1
- package/daemon/dist/domain/session-fingerprinter.js +9 -5
- package/daemon/dist/domain/session-fingerprinter.js.map +1 -1
- package/daemon/dist/domain/session-registry.d.ts +49 -0
- package/daemon/dist/domain/session-registry.d.ts.map +1 -1
- package/daemon/dist/domain/session-registry.js +92 -5
- package/daemon/dist/domain/session-registry.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +46 -4
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +492 -26
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.d.ts +10 -0
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +41 -4
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.d.ts +3 -7
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +6 -32
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.d.ts +5 -1
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.js +30 -4
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
- package/daemon/dist/domain/terminal/view-composer.d.ts +6 -0
- package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/view-composer.js +2 -1
- package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
- package/daemon/dist/domain/transcript-store.js +1 -1
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +38 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js +5 -0
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/usage-series.d.ts.map +1 -1
- package/daemon/dist/domain/usage-series.js +9 -4
- package/daemon/dist/domain/usage-series.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +44 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/view-projector.d.ts +4 -0
- package/daemon/dist/domain/view-projector.d.ts.map +1 -1
- package/daemon/dist/domain/view-projector.js +19 -4
- package/daemon/dist/domain/view-projector.js.map +1 -1
- package/daemon/dist/domain/wake-resolver.js +2 -2
- package/daemon/dist/domain/wake-resolver.js.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.js +19 -3
- package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
- package/daemon/dist/domain/whoami-service.d.ts +4 -1
- package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
- package/daemon/dist/domain/whoami-service.js +25 -19
- package/daemon/dist/domain/whoami-service.js.map +1 -1
- package/daemon/dist/domain/workflow-runtime.d.ts +1 -1
- package/daemon/dist/domain/workspace/project-read.d.ts +2 -0
- package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/project-read.js +19 -8
- package/daemon/dist/domain/workspace/project-read.js.map +1 -1
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +6 -0
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/routes/activity.d.ts.map +1 -1
- package/daemon/dist/routes/activity.js +33 -1
- package/daemon/dist/routes/activity.js.map +1 -1
- package/daemon/dist/routes/chat.d.ts.map +1 -1
- package/daemon/dist/routes/chat.js +29 -4
- package/daemon/dist/routes/chat.js.map +1 -1
- package/daemon/dist/routes/projects.d.ts.map +1 -1
- package/daemon/dist/routes/projects.js +5 -1
- package/daemon/dist/routes/projects.js.map +1 -1
- package/daemon/dist/routes/proof.d.ts.map +1 -1
- package/daemon/dist/routes/proof.js +99 -10
- package/daemon/dist/routes/proof.js.map +1 -1
- package/daemon/dist/routes/provider.d.ts.map +1 -1
- package/daemon/dist/routes/provider.js +31 -0
- package/daemon/dist/routes/provider.js.map +1 -1
- package/daemon/dist/routes/query-limit.d.ts +19 -0
- package/daemon/dist/routes/query-limit.d.ts.map +1 -0
- package/daemon/dist/routes/query-limit.js +24 -0
- package/daemon/dist/routes/query-limit.js.map +1 -0
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +35 -12
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/rig-cmux.js +8 -10
- package/daemon/dist/routes/rig-cmux.js.map +1 -1
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +11 -7
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/scopes.d.ts.map +1 -1
- package/daemon/dist/routes/scopes.js +5 -3
- package/daemon/dist/routes/scopes.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +32 -0
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/stream.d.ts.map +1 -1
- package/daemon/dist/routes/stream.js +5 -1
- package/daemon/dist/routes/stream.js.map +1 -1
- package/daemon/dist/routes/up.d.ts.map +1 -1
- package/daemon/dist/routes/up.js +2 -1
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/routes/views.d.ts.map +1 -1
- package/daemon/dist/routes/views.js +7 -1
- package/daemon/dist/routes/views.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +30 -1
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +19 -0
- package/daemon/docs/reference/getting-started.md +10 -6
- package/daemon/docs/reference/keeping-a-watch.md +156 -0
- package/daemon/docs/reference/rig-spec.md +2 -2
- package/daemon/docs/reference/sdlc-conventions.md +11 -1
- package/daemon/docs/reference/slack-app-setup.md +12 -4
- package/daemon/docs/reference/whats-new.md +151 -74
- package/daemon/specs/agents/development/qa/guidance/role.md +9 -0
- package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +2 -2
- package/daemon/specs/rigs/launch/factory/CULTURE.md +13 -0
- package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +18 -5
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +20 -1
- package/daemon/specs/rigs/launch/starter/CULTURE.md +13 -0
- package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +18 -5
- package/dist/build-info.js +3 -3
- package/dist/cli-error.d.ts.map +1 -1
- package/dist/cli-error.js +2 -0
- package/dist/cli-error.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +55 -4
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/capture.d.ts +9 -0
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +93 -41
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +6 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +44 -3
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +1 -50
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +6 -0
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/heartbeat.js +2 -2
- package/dist/commands/heartbeat.js.map +1 -1
- package/dist/commands/proof.d.ts.map +1 -1
- package/dist/commands/proof.js +11 -5
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/provider.d.ts.map +1 -1
- package/dist/commands/provider.js +72 -0
- package/dist/commands/provider.js.map +1 -1
- package/dist/commands/ps.d.ts +7 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +20 -6
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +48 -5
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +215 -45
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +57 -36
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/seat.d.ts.map +1 -1
- package/dist/commands/seat.js +167 -10
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/setup.d.ts +6 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +100 -44
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +9 -4
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +10 -0
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +10 -5
- package/dist/commands/usage.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +8 -8
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.d.ts +8 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +57 -0
- package/dist/config-store.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +4 -0
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +16 -4
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/lib/scope/capability-delta.d.ts.map +1 -1
- package/dist/lib/scope/capability-delta.js +8 -0
- package/dist/lib/scope/capability-delta.js.map +1 -1
- package/dist/lib/scope/mission-composition.d.ts +5 -1
- package/dist/lib/scope/mission-composition.d.ts.map +1 -1
- package/dist/lib/scope/mission-composition.js +61 -1
- package/dist/lib/scope/mission-composition.js.map +1 -1
- package/dist/lib/scope/progress-edit.js +1 -1
- package/dist/lib/scope/progress-edit.js.map +1 -1
- package/dist/lib/scope/scope-fs.d.ts +2 -1
- package/dist/lib/scope/scope-fs.d.ts.map +1 -1
- package/dist/lib/scope/scope-fs.js +7 -7
- package/dist/lib/scope/scope-fs.js.map +1 -1
- package/dist/lib/scope/slice-claims.d.ts +8 -0
- package/dist/lib/scope/slice-claims.d.ts.map +1 -0
- package/dist/lib/scope/slice-claims.js +88 -0
- package/dist/lib/scope/slice-claims.js.map +1 -0
- package/dist/queue-receipt.d.ts +41 -0
- package/dist/queue-receipt.d.ts.map +1 -0
- package/dist/queue-receipt.js +272 -0
- package/dist/queue-receipt.js.map +1 -0
- package/dist/rig-handle.d.ts +45 -0
- package/dist/rig-handle.d.ts.map +1 -0
- package/dist/rig-handle.js +51 -0
- package/dist/rig-handle.js.map +1 -0
- package/dist/system-preflight.d.ts +5 -0
- package/dist/system-preflight.d.ts.map +1 -1
- package/dist/system-preflight.js +8 -0
- package/dist/system-preflight.js.map +1 -1
- package/dist/terminal-window.d.ts.map +1 -1
- package/dist/terminal-window.js +3 -1
- package/dist/terminal-window.js.map +1 -1
- package/package.json +1 -1
- package/tui/dist/config/config-model.d.ts.map +1 -1
- package/tui/dist/config/config-model.js +3 -0
- package/tui/dist/config/config-model.js.map +1 -1
- package/tui/dist/daemon-client.d.ts +3 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js +4 -1
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/detail.d.ts.map +1 -1
- package/tui/dist/detail.js +6 -1
- package/tui/dist/detail.js.map +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +30 -21
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/input.d.ts.map +1 -1
- package/tui/dist/input.js +15 -4
- package/tui/dist/input.js.map +1 -1
- package/tui/dist/local-reading.js +2 -2
- package/tui/dist/local-reading.js.map +1 -1
- package/tui/dist/pulse/pulse-model.d.ts +1 -0
- package/tui/dist/pulse/pulse-model.d.ts.map +1 -1
- package/tui/dist/pulse/pulse-model.js +7 -3
- package/tui/dist/pulse/pulse-model.js.map +1 -1
- package/tui/dist/pulse/render-pulse.d.ts.map +1 -1
- package/tui/dist/pulse/render-pulse.js +3 -1
- package/tui/dist/pulse/render-pulse.js.map +1 -1
- package/tui/dist/reading.d.ts.map +1 -1
- package/tui/dist/reading.js +14 -3
- package/tui/dist/reading.js.map +1 -1
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +26 -11
- package/tui/dist/render.js.map +1 -1
- package/tui/dist/types.d.ts +3 -0
- package/tui/dist/types.d.ts.map +1 -1
- package/ui/dist/assets/{index-D5n8EwkG.js → index-DhmxKuZf.js} +159 -159
- package/ui/dist/index.html +1 -1
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@ To install with Bun instead, run `bun add -g @openrig/cli`. OpenRig still runs o
|
|
|
42
42
|
|
|
43
43
|
npm 11 and later can skip that postinstall script and print `npm warn install-scripts` naming `@openrig/cli`. That's expected: the CLI still works, and only the Node.js and SQLite check was skipped. To run it yourself, use `node "$(npm root -g)/@openrig/cli/scripts/check-abi.mjs"`; `rig doctor` checks the Node.js version only.
|
|
44
44
|
|
|
45
|
-
Choose the working account you already have: **Claude Code, Codex, or both**. Reuse an explicit choice; no second subscription is required. `rig setup --dry-run` previews the broader setup; applying `rig setup` checks both harnesses and installs a missing one, plus Herdr unless declined with `--no-herdr`. On macOS, the installing agent offers Ghostty once. Setup leaves an existing cmux installation alone. It is optional for the [selected-provider path](docs/reference/getting-started.md#choose-your-providers).
|
|
45
|
+
Choose the working account you already have: **Claude Code, Codex, or both**. Reuse an explicit choice; no second subscription is required. `rig setup --dry-run` previews the broader setup; applying `rig setup` checks both harnesses and installs a missing one, plus Herdr unless declined with `--no-herdr`. Pass the choice with `--providers claude` or `--providers codex` so the other reads not selected instead of failed. The one-command install above doesn't know the choice, so it installs and checks both; for one provider, go step by step and run `rig setup --providers <choice>`. On macOS, the installing agent offers Ghostty once. Setup leaves an existing cmux installation alone. It is optional for the [selected-provider path](docs/reference/getting-started.md#choose-your-providers).
|
|
46
46
|
|
|
47
47
|
A team seat with no permission policy, per-seat choice or (for Codex) named profile launches with OpenRig's [team default](docs/reference/rig-spec.md#team-launch-defaults): Claude runs ordinary `rig` commands, project reads and common tests without prompting, while lifecycle commands such as `rig up` and `rig down` still ask; Codex also gets the OpenRig workspace and its pod's state directory as writable directories. Before launching, your agent recommends keeping that default, and offers to remember selected OpenRig commands in your native settings only if you want that, at personal project scope unless you explicitly choose user-wide sessions. It is not global YOLO or permission to invent work. On Yes, the agent [adds and verifies native rules](docs/reference/getting-started.md#have-your-agent-configure-permissions); No or no answer keeps the team default and leaves settings unchanged. An existing explicit choice is reused. Say “Undo the OpenRig command allowances added by this setup” to remove only its additions.
|
|
48
48
|
|
|
@@ -447,7 +447,7 @@ Before setup or managed launch, review [what OpenRig changes on your machine](#w
|
|
|
447
447
|
|
|
448
448
|
Already-running adopted sessions may need restart before they pick up newly written runtime config.
|
|
449
449
|
|
|
450
|
-
**For agents:** First ask which available provider(s) the user wants, reusing an explicit choice. Recommend the working account they already have and follow the selected-provider guide above. Offer core setup (`rig setup`) or the fuller workstation path (`rig setup --full`) only when they want those additional tools. Inspect the result with `--json` and use `rig doctor` to finish any remaining machine-specific issues.
|
|
450
|
+
**For agents:** First ask which available provider(s) the user wants, reusing an explicit choice, and pass it to setup (`rig setup --providers claude`, `codex` or `both`). Recommend the working account they already have and follow the selected-provider guide above. Offer core setup (`rig setup`) or the fuller workstation path (`rig setup --full`) only when they want those additional tools. Inspect the result with `--json` and use `rig doctor` to finish any remaining machine-specific issues. Starting OpenRig and opening its view are the last steps of installing, not extras, so do them without stopping to ask whether to go on: start the daemon if it is stopped, open the OpenRig TUI and operator for them (say so, then run `rig terminal open saved:kernel --window --json`; no commands for the person to copy), and hand the person's goal and project folder to the kernel operator ([installing-agent handoff](docs/reference/getting-started.md#installing-agent-handoff)). Installation is finished when the person is talking to the operator; don't implement the project yourself. When OpenRig itself misbehaves, read [docs/reference/help.md](docs/reference/help.md) (installed agents can run `rig context get help`; the same text is at [openrig.dev/help/agents](https://www.openrig.dev/help/agents)): it covers the next step, known problems, and how to reach the team if you're still stuck.
|
|
451
451
|
|
|
452
452
|
## Comparison with Claude Managed Agents
|
|
453
453
|
|
|
@@ -67,9 +67,10 @@ conversation. Explain the failure and help with the chosen fallback; do not atta
|
|
|
67
67
|
Over headless SSH, explain that no visible terminal opened; tell the person to open a new terminal window or
|
|
68
68
|
tab and give one complete connection and attachment command using the current Herdr endpoint, as in the guide.
|
|
69
69
|
No, SSH and headless use are valid background outcomes. If the person chooses a manual operator attachment after
|
|
70
|
-
a failure, find the `operator.agent` row with
|
|
71
|
-
`
|
|
72
|
-
|
|
70
|
+
a failure, find the `operator.agent` row with
|
|
71
|
+
`rig ps --nodes --rig kernel --json --fields logicalId,canonicalSessionName,tmuxAttachCommand`. Give `env -u TMUX` followed by
|
|
72
|
+
that row's `tmuxAttachCommand`, exactly as listed (it names the daemon's tmux server when that isn't the default
|
|
73
|
+
one), for a new terminal on the same host and user (over SSH, connect there first). Ctrl-b, then d detaches without stopping it.
|
|
73
74
|
Ask the person's goal and project folder, then hand them to the ready operator; do not implement the project yourself.
|
|
74
75
|
Find the `operator.agent` row with `rig ps --nodes --rig kernel --json` and use its `canonicalSessionName` with
|
|
75
76
|
`rig send <canonicalSessionName> 'This is the agent that installed OpenRig. The person will answer in your pane. Goal: <goal>. Project folder: <absolute path>.'`,
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
+
const crypto = require("node:crypto");
|
|
5
|
+
const fs = require("node:fs");
|
|
6
|
+
const os = require("node:os");
|
|
7
|
+
const path = require("node:path");
|
|
8
|
+
|
|
4
9
|
// OpenRig activity-relay hook script.
|
|
5
10
|
// Reads a hook event payload from stdin, normalizes it, and POSTs to the
|
|
6
11
|
// OpenRig daemon's /api/activity/hooks endpoint for real-time UI seat-status.
|
|
@@ -154,6 +159,13 @@ function buildSessionIdentityPayload(providerPayload, env = process.env, now = (
|
|
|
154
159
|
const sessionName = firstString(env.OPENRIG_SESSION_NAME, env.RIGGED_SESSION_NAME);
|
|
155
160
|
const nodeId = firstString(env.OPENRIG_NODE_ID, env.RIGGED_NODE_ID);
|
|
156
161
|
const runtime = firstString(env.OPENRIG_RUNTIME, env.RIGGED_RUNTIME);
|
|
162
|
+
const generation = firstString(env.OPENRIG_OCCUPANT_GENERATION, env.RIGGED_OCCUPANT_GENERATION);
|
|
163
|
+
// How this session began (startup, resume, clear or compact). The daemon tells a resumed
|
|
164
|
+
// conversation's new id from a /clear by it; it is absent from runtimes that do not report it.
|
|
165
|
+
const source = firstString(providerPayload.source);
|
|
166
|
+
// Set only on the command OpenRig sends to resume this seat, so the daemon can tell the process
|
|
167
|
+
// it launched from another Claude sharing the seat's environment.
|
|
168
|
+
const resumeLaunch = firstString(env.OPENRIG_RESUME_LAUNCH);
|
|
157
169
|
|
|
158
170
|
if ((!sessionName && !nodeId) || !runtime) return null;
|
|
159
171
|
|
|
@@ -162,18 +174,45 @@ function buildSessionIdentityPayload(providerPayload, env = process.env, now = (
|
|
|
162
174
|
sessionName,
|
|
163
175
|
nodeId,
|
|
164
176
|
runtime,
|
|
177
|
+
generation,
|
|
165
178
|
hookEvent,
|
|
179
|
+
source,
|
|
180
|
+
resumeLaunch,
|
|
181
|
+
// The daemon finds the Claude that ran this hook from its parent chain.
|
|
182
|
+
hookPid: process.pid,
|
|
166
183
|
sessionId,
|
|
167
184
|
occurredAt: now().toISOString(),
|
|
168
185
|
};
|
|
169
186
|
}
|
|
170
187
|
|
|
188
|
+
// #1077 — whether this is the first SessionStart of the launch OpenRig armed (OPENRIG_RESUME_LAUNCH
|
|
189
|
+
// for this occupant generation). Recorded on local disk before anything is posted, so a first hook
|
|
190
|
+
// whose post never reaches the daemon still makes every later one (an in-process /resume, a child
|
|
191
|
+
// sharing the environment) report false. Any error reports false.
|
|
192
|
+
function claimFirstLaunchHook(resumeLaunch, generation, dir = path.join(os.tmpdir(), `openrig-resume-launch-${uid()}`)) {
|
|
193
|
+
if (!resumeLaunch || !generation) return false;
|
|
194
|
+
try {
|
|
195
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
196
|
+
const key = crypto.createHash("sha256").update(`${generation}\0${resumeLaunch}`).digest("hex");
|
|
197
|
+
fs.closeSync(fs.openSync(path.join(dir, key), "wx", 0o600));
|
|
198
|
+
return true;
|
|
199
|
+
} catch {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function uid() {
|
|
205
|
+
try { return typeof process.getuid === "function" ? String(process.getuid()) : "user"; } catch { return "user"; }
|
|
206
|
+
}
|
|
207
|
+
|
|
171
208
|
async function main() {
|
|
172
209
|
const providerPayload = parseJson(await readStdin());
|
|
173
210
|
const payload = buildOpenRigPayload(providerPayload);
|
|
174
|
-
await postHookPayload(payload);
|
|
175
|
-
|
|
176
211
|
const identityPayload = buildSessionIdentityPayload(providerPayload, process.env);
|
|
212
|
+
if (identityPayload && identityPayload.resumeLaunch) {
|
|
213
|
+
identityPayload.resumeLaunchFirst = claimFirstLaunchHook(identityPayload.resumeLaunch, identityPayload.generation);
|
|
214
|
+
}
|
|
215
|
+
await postHookPayload(payload);
|
|
177
216
|
if (identityPayload) {
|
|
178
217
|
await postHookPayload(identityPayload);
|
|
179
218
|
}
|
|
@@ -185,6 +224,7 @@ if (require.main === module) {
|
|
|
185
224
|
|
|
186
225
|
module.exports = {
|
|
187
226
|
buildOpenRigPayload,
|
|
227
|
+
claimFirstLaunchHook,
|
|
188
228
|
buildSessionIdentityPayload,
|
|
189
229
|
parseJson,
|
|
190
230
|
postHookPayload,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: openrig-skills
|
|
3
|
-
description: "Use when
|
|
3
|
+
description: "Use when an agent running inside OpenRig needs the right skill or context for fleet recovery, seat handover, new-seat orientation, a watchdog wake, cross-host reach to an agent on another machine, rig packaging, an OpenRig upgrade, systematic debugging, queue triage, or implementation planning; also when the agent doesn't know what applies or nothing is projected on cold boot. Installing, starting or updating OpenRig, getting back to a team or bringing a stopped one back from a person's own session is the rigs skill."
|
|
4
4
|
allowed-tools: Bash(rig:*)
|
|
5
5
|
metadata:
|
|
6
6
|
openrig:
|
|
@@ -1302,7 +1302,7 @@ Node-granular managed partial restore (v0.3.4+):
|
|
|
1302
1302
|
### Add a member to an existing pod — v0.3.3+
|
|
1303
1303
|
|
|
1304
1304
|
```bash
|
|
1305
|
-
rig add <rig
|
|
1305
|
+
rig add <rig> <pod-namespace> <member-fragment-path> [--json]
|
|
1306
1306
|
```
|
|
1307
1307
|
|
|
1308
1308
|
`rig add` is the top-level verb for the `add_member` converge op. It adds a
|
|
@@ -1310,6 +1310,12 @@ single member to an existing pod from a YAML/JSON member fragment file. The
|
|
|
1310
1310
|
daemon resolves the named pod, validates the member, runs preflight, and
|
|
1311
1311
|
launches the member in place.
|
|
1312
1312
|
|
|
1313
|
+
`<rig>` is the rig id or its exact name (the `rigName` that `rig whoami --json`
|
|
1314
|
+
reports). A name shared by more than one rig is refused before anything is
|
|
1315
|
+
added, with the matching ids listed (`rig_ambiguous` under `--json`). `rig add`
|
|
1316
|
+
always targets the local daemon: while a remote host is selected it refuses to
|
|
1317
|
+
resolve a name (`remote_host_selected`); an exact local id still works.
|
|
1318
|
+
|
|
1313
1319
|
HTTP outcomes:
|
|
1314
1320
|
- `201` — member added; per-node launch state included in the response.
|
|
1315
1321
|
- `400` — `validation_failed` or `preflight_failed` (the fragment or its launch posture is rejected before any state change).
|
|
@@ -351,7 +351,12 @@ def render_held_and_next(evidence):
|
|
|
351
351
|
missions = ", ".join(row.get("missions") or [])
|
|
352
352
|
output.append(f"- {row.get('qitemId') or 'a row'} — {row.get('summary') or 'no summary'}"
|
|
353
353
|
+ (f" [mission: {missions}]" if missions else ""))
|
|
354
|
-
if evidence
|
|
354
|
+
if "heldTruncated" in evidence or "nextTruncated" in evidence:
|
|
355
|
+
if evidence.get("heldTruncated"):
|
|
356
|
+
output.append("(the held list was cut; `rig queue list --owned --state blocked` has the rest)")
|
|
357
|
+
if evidence.get("nextTruncated"):
|
|
358
|
+
output.append("(the next list was cut; `rig queue list --owned --state pending` has the rest)")
|
|
359
|
+
elif evidence.get("heldAndNextTruncated"):
|
|
355
360
|
output.append("(held and next lists were cut; `rig queue list` has the rest)")
|
|
356
361
|
return "\n".join(output)
|
|
357
362
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rigs
|
|
3
|
-
description: Use when
|
|
3
|
+
description: Use when a person in their own Claude Code or Codex session mentions OpenRig, rigs or the rig command, or wants a team of coding agents (Claude Code, Codex) on their project. That includes installing, setting up, starting or updating OpenRig, seeing, getting back to or re-attaching to their OpenRig agents (including bringing a stopped team back), TUI or operator, starting or sharing a team, and joining this session to one. Operating a running rig from inside it (fleet recovery, seat handover, watchdog wakes, in-rig upgrades) is the openrig-skills skill.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# rigs: your route into OpenRig
|
|
@@ -68,9 +68,10 @@ guidance in `AGENTS.md` or `CLAUDE.md` plus the team's skills and plugins. Say s
|
|
|
68
68
|
and ends with `run:` and a command (the `error` field with `--json`). That command already names the installed
|
|
69
69
|
herdr binary and the daemon's socket, or the conversation to attach. Relay it exactly rather than composing one.
|
|
70
70
|
If a note asks you to place the view once Herdr starts, run that `rig terminal open` yourself after they start it.
|
|
71
|
-
- **If it printed no command:** find `operator.agent` in
|
|
72
|
-
`
|
|
73
|
-
`env -u TMUX
|
|
71
|
+
- **If it printed no command:** find `operator.agent` in
|
|
72
|
+
`rig ps --nodes --rig kernel --json --fields logicalId,canonicalSessionName,tmuxAttachCommand` and give
|
|
73
|
+
`env -u TMUX` followed by its `tmuxAttachCommand`, exactly as listed (never a guessed name), for the operator's
|
|
74
|
+
conversation. That command names the daemon's tmux server when it isn't the default one.
|
|
74
75
|
|
|
75
76
|
For any other failure, the table under "What can interrupt installation and the OpenRig view" in
|
|
76
77
|
`rig context get reference/getting-started.md#open-the-kernel-conversations` says why and what to do next.
|
|
@@ -80,7 +81,8 @@ guidance in `AGENTS.md` or `CLAUDE.md` plus the team's skills and plugins. Say s
|
|
|
80
81
|
`rig send <canonicalSessionName> 'This is the agent that installed OpenRig. The person will answer in your pane. Goal: <goal>. Project folder: <absolute path>. Branch: <branch>.'`
|
|
81
82
|
Or the person types the goal and folder in the operator's pane. If they give you a goal later, forward it the same
|
|
82
83
|
way. The operator helps them pick a team that fits their logins, starts it on their yes and gives the goal to the
|
|
83
|
-
team's lead.
|
|
84
|
+
team's lead. Before that yes, it says what launching into their folder changes for their own agent there; relay
|
|
85
|
+
that with the question. Show them where the operator answers, and don't build the project yourself.
|
|
84
86
|
- **Relay the operator's questions:** the operator asks in its own pane, and the person may not be looking there.
|
|
85
87
|
After each step you hand it, read its screen with `rig capture <canonicalSessionName>`. When it asks the person
|
|
86
88
|
something (start this team? which folder? which option?), ask them here in the operator's words and send their
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent help: the single troubleshooting and escalation guide (docs/reference/help.md).
|
|
2
2
|
name: help
|
|
3
|
-
version: "0.6.
|
|
3
|
+
version: "0.6.11"
|
|
4
4
|
taxonomy: world
|
|
5
5
|
purpose: "What an agent does when its user says OpenRig isn't working: diagnose, fix within permissions, verify, and escalate to OpenRig support."
|
|
6
6
|
files:
|
|
@@ -11,7 +11,7 @@ not know exists.** So the point of what follows is not skill. It is recognition:
|
|
|
11
11
|
lands, something rhymes, and you go check instead of building.
|
|
12
12
|
|
|
13
13
|
Eighty-seven top-level verbs ship (capability canon refreshed through
|
|
14
|
-
`capability-delta-v0.6.
|
|
14
|
+
`capability-delta-v0.6.11`). This marker describes the pack's teaching, not publication or live
|
|
15
15
|
adoption. Read this once for shape, and let it make you suspicious that a thing already exists.
|
|
16
16
|
Model-divergence proclamations are live product (trust them; pins use canonical
|
|
17
17
|
model IDs).
|
|
@@ -28,8 +28,9 @@ one command away. Your memory of the fleet is a claim about the past.
|
|
|
28
28
|
- **`rig ps`** — what rigs exist. **`rig ps --nodes -A`** — the state of every seat everywhere,
|
|
29
29
|
*including the broken ones*. **The bare form is the question you usually want:** `--active`
|
|
30
30
|
filters to running and **hides detached, exited and attention states** — which are exactly the
|
|
31
|
-
cells you were scanning for.
|
|
32
|
-
|
|
31
|
+
cells you were scanning for. A seat whose tmux session is confirmed gone reads `detached`
|
|
32
|
+
(activity reason `session_missing`), and `rig ps --nodes` says to restore or relaunch it.
|
|
33
|
+
**`rig ps --resources`** shows this host's load and transcript capture cost.
|
|
33
34
|
- **`rig ps --all-hosts --nodes -A`** — the same across every registered machine. Rollup-only
|
|
34
35
|
unless you ask for nodes.
|
|
35
36
|
- **`rig discover`** — what is running on this box that OpenRig is *not* managing.
|
|
@@ -89,6 +90,8 @@ unseen — which makes messages the one delivery channel that never gets skipped
|
|
|
89
90
|
confirm by effect, never relaunch on it. A send or wake to a seat whose latest hook is a
|
|
90
91
|
question waiting for a person is refused with `target_needs_input`, even when its screen
|
|
91
92
|
can't be read: read it with `rig capture` and get the question answered instead of retrying.
|
|
93
|
+
`--wait-for-idle N` waits before it takes the seat's delivery lease, so other sends and wakes to
|
|
94
|
+
that seat aren't held behind it; N is a deadline from the start of the wait.
|
|
92
95
|
Over `--host` to an http-registered host, a send that may have reached the remote reads
|
|
93
96
|
`remote-outcome-unknown` ("Delivery UNCONFIRMED"): check the target with `rig capture <session>
|
|
94
97
|
--host <id>` before any resend. Only a host that was never reached reads as unreachable.
|
|
@@ -100,7 +103,9 @@ unseen — which makes messages the one delivery channel that never gets skipped
|
|
|
100
103
|
the wording wrong on the fourth. **Blast radius is real** — on a large rig this lands in every
|
|
101
104
|
seat's turn.
|
|
102
105
|
- **`rig capture <seat>`** — read what is on their screen right now. **`--rig` / `--pod`** captures
|
|
103
|
-
every seat in one call.
|
|
106
|
+
every seat in one call. `--lines N` is the last N lines (stderr says how many earlier lines were
|
|
107
|
+
cut); `--history-plus-pane` gives the older N history lines plus the whole pane. A short capture
|
|
108
|
+
doesn't prove a seat is idle.
|
|
104
109
|
- **`rig transcript <seat>`** — what has been *said* in a seat, and **seat-scoped rather than
|
|
105
110
|
session-scoped**: one file spanning every agent generation that has occupied it, so it reaches
|
|
106
111
|
back through handovers. Capped (`transcripts.lines`, default 1000 — raise it for depth), and
|
|
@@ -131,7 +136,9 @@ unseen — which makes messages the one delivery channel that never gets skipped
|
|
|
131
136
|
window, and only then say that clicking macOS's Allow is fine. Herdr is visible only in a
|
|
132
137
|
terminal the person can see; switching the shared TUI to `:terminals` does not open one. Over
|
|
133
138
|
SSH, in CI or with no display, the command returns a definite no-window result with the reason
|
|
134
|
-
and an attach command: relay that command exactly.
|
|
139
|
+
and an attach command: relay that command exactly. When the daemon runs on a non-default tmux
|
|
140
|
+
server, attach commands carry `-L <name>` or `-S <path>`; from inside tmux run them as
|
|
141
|
+
`env -u TMUX <tmuxAttachCommand>`. Inspect the result and visible content, or
|
|
135
142
|
say what cannot be verified. On a desktop, do not finish by printing a command for the person to
|
|
136
143
|
type. Only if the window cannot open, `rig tui --shared` is the dashboard-only fallback; explain
|
|
137
144
|
the failure. `--provider herdr` or `--provider cmux` adds tiles inside a workspace that is
|
|
@@ -177,7 +184,13 @@ your context, your compaction and your replacement — and it is the only thing
|
|
|
177
184
|
|
|
178
185
|
- **`rig queue create`** — a row with an owner, a body and a transition history. Its reply, like
|
|
179
186
|
`handoff`'s, confirms the row was saved; the owner is woken after that. Before you say they were
|
|
180
|
-
told, read the row's transitions
|
|
187
|
+
told, read the row's transitions, or use `--verify`. For a seat it reports the wake's terminal
|
|
188
|
+
receipt and any claim separately: an unconfirmed receipt is not a failed handoff, and a claim is
|
|
189
|
+
pickup, not proof the body was read. For a claimed row whose wake wasn't confirmed, `outcome`
|
|
190
|
+
reads `claimed`; it isn't a failed handoff, so don't re-run the create. For a registered person
|
|
191
|
+
who is also a seat with a pane, it also waits for the Slack receipt and reports it on its own,
|
|
192
|
+
up to the 30-second default, even when Slack isn't set up or the row won't be posted. With `output.compact` on (off by default), the queue write commands print a short
|
|
193
|
+
receipt and `--full` prints the whole row.
|
|
181
194
|
- **`rig queue show`** — what a row *actually says*. The header is not the body.
|
|
182
195
|
- **`rig queue claim` / `unclaim`** — is this mine and running, or still pending where two agents
|
|
183
196
|
might double-work it. Put it down honestly when it is not yours.
|
|
@@ -192,13 +205,22 @@ your context, your compaction and your replacement — and it is the only thing
|
|
|
192
205
|
visible**, with a plain-language summary and a pointer to what a human must judge; `resolve`
|
|
193
206
|
writes their decision onto the durable record and wakes the owner. **Closing it would be a lie
|
|
194
207
|
and sitting on it silently is indistinguishable from a crash.** `--wake-after <duration>` arms
|
|
195
|
-
one wake for this park episode; a new park supersedes it and every exit route retires it.
|
|
208
|
+
one wake for this park episode; a new park supersedes it and every exit route retires it. In
|
|
209
|
+
this release a wake the typing guard holds back (`retained`) is recorded as that one fire and
|
|
210
|
+
later wakes aren't, so the timer isn't retired: it can wake the owner again at each interval
|
|
211
|
+
while the row stays parked. A row attached to a shared timer with `--wake-watchdog` loses its
|
|
212
|
+
one wake if that wake is held back.
|
|
196
213
|
- **`rig queue overdue`** — what was claimed and never closed in time. **Defaults to the current
|
|
197
214
|
rig**; ask for more if you mean more.
|
|
198
215
|
- **`rig queue undelivered`** — pending create-path nudge failures only. For gateway or human
|
|
199
216
|
delivery, the row's transitions are the receipt ledger; `undelivered` does not answer whether a
|
|
200
217
|
person received the escalation. **`overdue` and `undelivered` are the two halves of "is anything
|
|
201
218
|
silently stuck", and a rig can be clean on one and rotten on the other.**
|
|
219
|
+
- **`queue.wake_human_rung`** — when a seat can't be woken, the last escalation step posts to a
|
|
220
|
+
person. `rig config set queue.wake_human_rung explicit-only` (default `always`) keeps that post
|
|
221
|
+
for rows addressed to a person (an `@external` address or a registered human); the rest stop at
|
|
222
|
+
`rig view show escalations`. A seat stuck at a prompt only a person can clear still reaches one,
|
|
223
|
+
and an unreadable human registry posts everything.
|
|
202
224
|
- **`rig queue inbox-drop` / `inbox-pending` / `inbox-absorb` / `inbox-deny`** — put something in
|
|
203
225
|
front of a seat that it can *refuse*. Mail, not assignment.
|
|
204
226
|
- **`rig queue outbox-record` / `outbox-list`** — what you dispatched, in a record that survives
|
|
@@ -343,6 +365,13 @@ not have to tear one down to change it, and you rarely have to start from nothin
|
|
|
343
365
|
by name, a bundle someone handed you, a GitHub folder link (pinned to one commit), or a stopped
|
|
344
366
|
rig. `rig up` with a pod-aware spec on a stopped team's name replaces that team (the earlier one
|
|
345
367
|
is archived), so check `rig ps --nodes` first. Launch-created `AGENTS.md` or `CLAUDE` files now show in `git status`.
|
|
368
|
+
`rig up <rig> --existing` puts back the OpenRig guidance blocks `rig down` removed before a
|
|
369
|
+
resumed seat starts. A seat still missing one makes the rig `partially_restored` (its node lists
|
|
370
|
+
`guidanceGaps`) and `rig up` exits 1. A seat that wasn't running at the snapshot, but whose
|
|
371
|
+
earlier session left a resume token, stops at `awaiting-decision` instead of starting fresh, in
|
|
372
|
+
`rig up --existing` and in `rig launch` (exit 1); the message names the command that starts it
|
|
373
|
+
fresh on purpose. In a pod-aware rig, a seat is rolled back as unresumable only when its runtime
|
|
374
|
+
reports the conversation missing.
|
|
346
375
|
- **`rig down`** — stop a rig's seats and take it out of the running set. It ends the agents'
|
|
347
376
|
sessions and any work in progress; don't run it on a live team unless the person asked. In
|
|
348
377
|
human mode it first prints one line with each agent's last known activity, or “unknown”: a
|
|
@@ -350,12 +379,24 @@ not have to tear one down to change it, and you rarely have to start from nothin
|
|
|
350
379
|
that reports errors exits 2.
|
|
351
380
|
- **`rig launch <rigId> [seat]`** — one seat is down; start just that one, without disturbing the
|
|
352
381
|
rest. It takes the rig ID from `rig ps --json`; a rig name gives `rig_not_found`. Add `--plan` to preview it first, locally or with `--host`; a plan is never sent to a
|
|
353
|
-
daemon older than 0.5.9, which would ignore it and launch.
|
|
382
|
+
daemon older than 0.5.9, which would ignore it and launch. A seat whose agent exited to a shell in
|
|
383
|
+
its kept pane reads `attention_required` (exit 1), not already running: resume it, or
|
|
384
|
+
`rig seat launch <session> --fresh --stop`.
|
|
354
385
|
- **`rig seat launch <seat> --fresh --reason <why>`** — deliberately create a blank occupant for
|
|
355
386
|
exactly one existing seat. It uses no resume, fork, rebuild, snapshot, or restore packet;
|
|
356
|
-
siblings and durable work stay put, and unmanaged ambiguity refuses.
|
|
387
|
+
siblings and durable work stay put, and unmanaged ambiguity refuses. With `--stop`, a seat with a
|
|
388
|
+
still-live older session is refused before anything is stopped; `--plan` previews it.
|
|
389
|
+
- **`rig seat restart <seat> --keep-conversation --reason <why>`** — restart one Codex seat in its
|
|
390
|
+
own pane on the same conversation, so it starts again on whatever account its Codex home now
|
|
391
|
+
holds; it doesn't switch accounts itself. It refuses with nothing stopped unless the seat is a
|
|
392
|
+
Codex seat OpenRig launched, in a single pane, with a conversation it can prove and unchanged
|
|
393
|
+
running settings. `--plan` runs every check and stops nothing; `--verify --expect-account
|
|
394
|
+
<account>` reports `moved` only when a tool turn has completed in the same conversation since
|
|
395
|
+
the restart and Codex's status names that account. Linux only: on macOS a
|
|
396
|
+
request that reaches the running-process check refuses before stopping the seat.
|
|
357
397
|
- **`rig add`** / **`rig expand`** — graft one more member, or a whole new pod, onto a rig that is
|
|
358
|
-
already running. `rig
|
|
398
|
+
already running. `rig add` takes the rig's name or ID; a name two active rigs share is refused
|
|
399
|
+
with `rig_ambiguous` and the candidates. `rig grow --new-pod` and `rig expand` are one ingress; choose by input shape.
|
|
359
400
|
- **`rig remove`** / **`rig shrink`** — take a seat, or an entire pod, out of a running topology.
|
|
360
401
|
If it holds active work, pass `--fallback <live-seat>` to reroute before mutation; without a
|
|
361
402
|
valid fallback the command refuses rather than strand the rows.
|
|
@@ -460,7 +501,8 @@ version, from checking the environment to a useful report to the OpenRig team.
|
|
|
460
501
|
updating Codex is the operator's job.
|
|
461
502
|
- **`rig seat set-model` / `stop` / `clean`** — persist the model for later managed resumes, stop
|
|
462
503
|
exactly one live seat (ending its session and any work in progress), or clear a dead seat's
|
|
463
|
-
stale binding.
|
|
504
|
+
stale binding. A stop is recorded, so the rig doesn't read `degraded` for that seat, and a rig
|
|
505
|
+
whose seats were all stopped this way reads `stopped`. When the topology is right and only
|
|
464
506
|
the occupant is wrong, use these seat lifecycle verbs or `rig handover`, not a rig down/up cycle.
|
|
465
507
|
Effective-model detection follows the identity-verified current occupant, not a retained
|
|
466
508
|
predecessor; a `<synthetic>` transcript record is skipped, so a PENDING model check is not a
|
|
@@ -548,7 +590,8 @@ scheme, and nothing downstream can see it.
|
|
|
548
590
|
source actually bound. When someone later asks where the contract items came from, the drop's
|
|
549
591
|
own echo is the answer — not a re-read of the files.
|
|
550
592
|
- **`rig proof judge` / `rig proof show`** — record an attributed judgment on a contract item once,
|
|
551
|
-
then read derived proof, slice, mission and project readiness.
|
|
593
|
+
then read derived proof, slice, mission and project readiness. Both take `--project <id>` or a
|
|
594
|
+
`<project>:` scope prefix. The owning scope selects
|
|
552
595
|
`proofPolicy.judges` (nearest slice, mission or project policy wins); consult `rig proof --help`
|
|
553
596
|
for that setup and the item/evidence selectors. Accept, reject or withdraw against readable
|
|
554
597
|
evidence; corrections preserve history and unrelated judgments without ancestor status edits.
|
|
@@ -774,7 +817,11 @@ your circumstances is configuration, and the ones that are not, another agent ca
|
|
|
774
817
|
- **`rig provider accounts` / `bindings` / `signals` / `switch`** — which seats are bound to which
|
|
775
818
|
accounts, what the usage signals say, and whether a seat can be moved without stranding the
|
|
776
819
|
conversation it is in the middle of. **`provider signals` reports anomalies rather than a
|
|
777
|
-
listing** — unbound seats, accounts shared across several seats.
|
|
820
|
+
listing** — unbound seats, accounts shared across several seats. A Codex seat showing its
|
|
821
|
+
usage-limit banner reads activity `unknown` with reason `usage_limit`, and keeps it while its
|
|
822
|
+
screen redraws; `provider signals` can show a provider-event signal for that seat's account that
|
|
823
|
+
allows a switch decision. With `provider.usage_windows` on (off by default), `rig provider status
|
|
824
|
+
--refresh` reads a Codex login's usage windows once.
|
|
778
825
|
- **Codex configuration fragments** — a `codex_config_fragment` must open with a table header and
|
|
779
826
|
never overrides a user-declared table; see `docs/reference/agent-spec.md`.
|
|
780
827
|
- **`rig env`** — the real services behind a rig: are they up, what are they saying, how do you
|
|
@@ -782,7 +829,8 @@ your circumstances is configuration, and the ones that are not, another agent ca
|
|
|
782
829
|
- **`rig setup`** — what OpenRig would change about this machine, shown before it touches anything.
|
|
783
830
|
It installs herdr by default on macOS and Linux (`--no-herdr` declines; if the install fails,
|
|
784
831
|
views fall back to plain tmux) and on a Mac offers Ghostty once (`--ghostty` / `--no-ghostty`).
|
|
785
|
-
It no longer installs cmux; an existing cmux still works.
|
|
832
|
+
It no longer installs cmux; an existing cmux still works. `--providers claude`, `codex` or
|
|
833
|
+
`both` sets which harnesses it installs and checks; one not chosen reads `skipped`, never failed.
|
|
786
834
|
- **`rig usage series`** — what a seat's token curve has looked like over time: climbing steadily,
|
|
787
835
|
reset, or stopped reporting entirely. The last one is a signal, not a gap.
|
|
788
836
|
- **`rig tui`** — the interactive view over rigs, pods, seats and specs. `rig` and `rig tui` open
|
|
@@ -868,6 +916,8 @@ database. It is one more set of primitives on a machine full of them.
|
|
|
868
916
|
- **"Did that actually land?"** — `rig queue show <qitemId>` gives a bounded preview,
|
|
869
917
|
original byte size and the exact expansion command. Read the complete original record with
|
|
870
918
|
`rig queue show <qitemId> --full --json`; a preview or a compact list is not the whole body.
|
|
919
|
+
Compact `rig queue list` rows carry `summary`; the fields they leave out are absent, not empty,
|
|
920
|
+
and `fieldsElided` names them.
|
|
871
921
|
Delivery status is separate from content: inspect its receipt before claiming it was consumed.
|
|
872
922
|
- **"What am I waiting on?"** — the queue row's `waiting` view derives its owner, exact blocker
|
|
873
923
|
and blocker owner, last meaningful change, activity confidence and next backstop from live
|
|
@@ -137,7 +137,9 @@ The other provider's CLI/login is optional. Herdr is installed by default unless
|
|
|
137
137
|
you decline it; cmux remains optional. Do not copy credentials
|
|
138
138
|
or start repeated sign-in attempts. Recheck the selected login after the user
|
|
139
139
|
completes it. `rig setup --dry-run` previews the broader setup; applying
|
|
140
|
-
`rig setup` checks **both** harnesses and installs a missing one with npm
|
|
140
|
+
`rig setup` checks **both** harnesses and installs a missing one with npm, unless
|
|
141
|
+
you pass the person's choice: `rig setup --providers claude` (or `codex`) leaves
|
|
142
|
+
the other out, so it reads not selected instead of failed. On
|
|
141
143
|
macOS it uses an existing Homebrew (it does not install Homebrew) to install a
|
|
142
144
|
missing tmux (elsewhere tmux is checked, not installed). Herdr installs on
|
|
143
145
|
macOS and Linux; pass `--no-herdr` to decline it. Setup also
|
|
@@ -198,7 +200,7 @@ leaves existing cmux settings alone and does not open a view during setup.
|
|
|
198
200
|
|
|
199
201
|
On a Mac, the installing agent also asks once, "Install Ghostty for the OpenRig
|
|
200
202
|
view?" On Yes it reruns setup with `--ghostty`, preserving earlier choices such
|
|
201
|
-
as `--no-herdr`. This installs the
|
|
203
|
+
as `--no-herdr` and `--providers`. This installs the
|
|
202
204
|
[documented Homebrew cask](https://ghostty.org/docs/install/binary) and checks for
|
|
203
205
|
the app. On No it uses `--no-ghostty`; Terminal.app remains available. Plain setup
|
|
204
206
|
reports this offer without installing Ghostty or waiting for input. The person
|
|
@@ -331,17 +333,19 @@ For the first desktop handoff, use `--window`. Only if the window cannot open,
|
|
|
331
333
|
For an explicitly requested manual attachment, inspect the current bindings:
|
|
332
334
|
|
|
333
335
|
```sh
|
|
334
|
-
rig ps --nodes --rig kernel --json
|
|
336
|
+
rig ps --nodes --rig kernel --json --fields logicalId,canonicalSessionName,tmuxAttachCommand
|
|
335
337
|
```
|
|
336
338
|
|
|
337
|
-
Find `logicalId: operator.agent` and
|
|
339
|
+
Find `logicalId: operator.agent` and run its `tmuxAttachCommand`, after `env -u TMUX`, in a new
|
|
338
340
|
terminal on the same host and account:
|
|
339
341
|
|
|
340
342
|
```sh
|
|
341
|
-
env -u TMUX
|
|
343
|
+
env -u TMUX <tmuxAttachCommand>
|
|
342
344
|
```
|
|
343
345
|
|
|
344
|
-
|
|
346
|
+
When the daemon was started inside tmux on a non-default socket, its sessions live on that
|
|
347
|
+
server, and `tmuxAttachCommand` names it (`tmux -L <name> …` or `tmux -S <path> …`). The installing
|
|
348
|
+
agent fills in the actual command. This optional manual route
|
|
345
349
|
is separate from the first-install desktop action above.
|
|
346
350
|
|
|
347
351
|
### Plain terminal: a new viewing session
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Reference guides the help pack links to, loaded one file or section at a time by address
|
|
2
2
|
# (rig context get reference/<file>#<section>). Each file is a symlink to docs/reference/.
|
|
3
3
|
name: reference
|
|
4
|
-
version: "0.6.
|
|
4
|
+
version: "0.6.11"
|
|
5
5
|
taxonomy: world
|
|
6
6
|
purpose: "Version-matched reference guides the help guide links to. Load a single file or section by address; don't load the whole pack."
|
|
7
7
|
files:
|
|
@@ -397,7 +397,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
|
|
|
397
397
|
| `profile` | string | yes | — | Profile name from the referenced AgentSpec. Use `default` for the default profile. Exception: `none` for terminal nodes. |
|
|
398
398
|
| `codex_config_profile` | string | no | — | Codex-only native profile passed as `-p <name>`; letters, numbers, `_`, `.`, `-`. Separate from the AgentSpec `profile`. With the normal launch mode, this replaces OpenRig's explicit workspace-write sandbox flag. A full-bypass policy instead emits danger-full-access and omits this profile argument. |
|
|
399
399
|
| `runtime` | string | yes | — | Agent runtime. Current supported values: `claude-code`, `codex`, `pi`, `omp`, `terminal`, `stub`. `stub` is a deterministic test harness, not an agent: a Node runner in the seat's tmux pane goes through the normal launch, skill projection, startup-file and readiness path, follows `<cwd>/.openrig/stub/script.json` when present, and calls no model. See "What a stub can and cannot prove" in `docs/as-built/test-layers.md`. |
|
|
400
|
-
| `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec)
|
|
400
|
+
| `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec). If that path exists as written, it is used. Otherwise a leading `~` or `~/` expands to the home directory (`~user` does not) and `$VAR` / `${VAR}` expand from the daemon host's environment; a relative result still resolves against the rig root. A reference to an unset variable stays as written, so the cwd is that literal path and works only if it exists. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. |
|
|
401
401
|
| `label` | string | no | — | Human-readable member name. Shown in UI when present. |
|
|
402
402
|
| `model` | string | no | — | Model override. Runtime-specific (e.g., `claude-opus-4-6` for Claude Code). |
|
|
403
403
|
| `effort` | string | no | — | Reasoning effort override, trimmed. A non-string value is ignored with an advisory. |
|
|
@@ -406,7 +406,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
|
|
|
406
406
|
| `restore_policy` | string | no | the AgentSpec's | Restore behavior. One of: `resume_if_possible`, `relaunch_fresh`, `checkpoint_only`. The default comes from the AgentSpec's `defaults.lifecycle` (else `resume_if_possible`) as narrowed by its profile; a member value may only narrow it further, in that order. |
|
|
407
407
|
| `compaction_strategy` | string | no | — | `default-compaction`, `managed-compaction`, `handover` or `apprentice-handover`; `harness_native` and `pod_continuity` are accepted as deprecated aliases, and `custom_prompt` is refused. |
|
|
408
408
|
| `mechanic` | string | no | — | A canonical `seat@rig` session address, for `apprentice-handover`. |
|
|
409
|
-
| `session_source` | object | no | — | Start the seat from an existing session: `fork` with `native_id`, `rebuild` with `artifact_set`, or `agent_image` with `image_name`. Not valid on terminal members. |
|
|
409
|
+
| `session_source` | object | no | — | Start the seat from an existing session: `fork` with `native_id`, `rebuild` with `artifact_set`, or `agent_image` with `image_name`. A Claude Code `fork` needs Claude Code 2.0.73 or later. Not valid on terminal members. |
|
|
410
410
|
| `starter_ref` | object | no | — | `{ name }` of an agent starter (`^[a-zA-Z0-9][a-zA-Z0-9_-]*$`) whose files lead the seat's startup. Not valid on terminal members or with a fork. |
|
|
411
411
|
| `startup` | StartupBlock | no | — | Member-level startup files and actions. Applied only to this member. |
|
|
412
412
|
|