@openrig/cli 0.6.10 → 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/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -1
- package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +6 -1
- package/daemon/assets/skills/rigs/SKILL.md +1 -1
- 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 +36 -11
- 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 +135 -134
- 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/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/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 +27 -73
- package/daemon/dist/adapters/claude-code-adapter.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.d.ts +23 -0
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +127 -6
- 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 +2 -0
- package/daemon/dist/db/all-migrations.js.map +1 -1
- 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/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/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/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/native-process-lineage.d.ts +5 -0
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +53 -15
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +15 -7
- 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/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 +2 -2
- package/daemon/dist/domain/provider/codex-limit-banner.d.ts.map +1 -1
- package/daemon/dist/domain/provider/codex-limit-banner.js +56 -9
- package/daemon/dist/domain/provider/codex-limit-banner.js.map +1 -1
- 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 +27 -25
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +2 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +16 -3
- 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 +21 -7
- package/daemon/dist/domain/queue-stuck-sweep.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-orchestrator.d.ts +4 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +34 -5
- 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 +1 -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 +6 -4
- package/daemon/dist/domain/scope/scope-view-projection.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-structural-activity-service.d.ts +1 -1
- package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-structural-activity-service.js +5 -6
- package/daemon/dist/domain/seat-structural-activity-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 +3 -0
- package/daemon/dist/domain/session-registry.d.ts.map +1 -1
- package/daemon/dist/domain/session-registry.js +6 -1
- package/daemon/dist/domain/session-registry.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +33 -3
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +391 -21
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.d.ts +2 -0
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +4 -3
- 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/types.d.ts +29 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.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 +31 -0
- package/daemon/dist/domain/user-settings/settings-store.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/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/chat.d.ts.map +1 -1
- package/daemon/dist/routes/chat.js +23 -2
- package/daemon/dist/routes/chat.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/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +18 -6
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/rigs.js +5 -3
- 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/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +12 -2
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +19 -0
- 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 +6 -4
- package/daemon/docs/reference/whats-new.md +135 -134
- package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -1
- package/dist/build-info.js +3 -3
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +2 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +7 -0
- package/dist/commands/daemon.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 +4 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +13 -4
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +15 -5
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +113 -37
- 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 +161 -10
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +4 -3
- 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/config-store.d.ts +7 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +43 -0
- package/dist/config-store.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/scope-fs.d.ts +2 -1
- package/dist/lib/scope/scope-fs.d.ts.map +1 -1
- package/dist/lib/scope/scope-fs.js +4 -4
- 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/package.json +1 -1
- package/tui/dist/config/config-model.d.ts.map +1 -1
- package/tui/dist/config/config-model.js +2 -0
- package/tui/dist/config/config-model.js.map +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +11 -4
- package/tui/dist/hydrate.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/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
|
@@ -236,6 +236,25 @@ post-launch files. If it needs them, first look at what that occupant has done;
|
|
|
236
236
|
`rig seat launch <seat> --fresh --reason <text>` starts a blank conversation for the seat. If the occupant is still
|
|
237
237
|
live, the command refuses with `session_live` unless you also pass `--stop`, which replaces that occupant deliberately.
|
|
238
238
|
|
|
239
|
+
**Preview before replacing a seat.** `rig seat launch <seat> --fresh --plan` inspects the selected
|
|
240
|
+
seat without starting tmux, stopping or launching a process, projecting startup files, or changing
|
|
241
|
+
lifecycle/queue records. Add `--json` for structured output. `--fresh` is still required;
|
|
242
|
+
`--reason` is optional for the preview and required when executing. Pass `--stop` to preview the
|
|
243
|
+
intended replacement of a live managed occupant. Adopted and unmanaged occupants remain blocked.
|
|
244
|
+
|
|
245
|
+
The plan identifies the target, current occupant, stop requirements, blockers, startup counts,
|
|
246
|
+
and each sibling seat's unchanged effect. Siblings stay attached and untouched. Launch composes
|
|
247
|
+
a new command through the runtime adapter using current settings; it does not replay a stored
|
|
248
|
+
wrapper command. The seat's launch environment and managed executable selection still apply.
|
|
249
|
+
The plan does not construct or display the launch command.
|
|
250
|
+
|
|
251
|
+
A preview is a snapshot, not a reservation or a native-readiness check. Unreadable tmux produces
|
|
252
|
+
`complete: false` and `launchable: null` (unknown), unless a known blocker already proves
|
|
253
|
+
`launchable: false`. A successful preview exits 0, including blocked or incomplete plans; scripts
|
|
254
|
+
must inspect `launchable === true` before deciding to execute. Request failures still exit nonzero.
|
|
255
|
+
Execution always resolves and checks the current state again. An older daemon without the preview
|
|
256
|
+
endpoint refuses the request; the CLI never falls back to executing a launch.
|
|
257
|
+
|
|
239
258
|
### The `applies_on` Field
|
|
240
259
|
|
|
241
260
|
Each startup file and action specifies when it applies:
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Keeping a Watch for a Person
|
|
2
|
+
|
|
3
|
+
**How an operator turns "remind me in 20 minutes" or "tell me when X happens, check every hour" into a watch it
|
|
4
|
+
keeps, using today's queue commands.** The person speaks in sentences. They never see YAML, a job ID or a policy name
|
|
5
|
+
unless they ask.
|
|
6
|
+
|
|
7
|
+
> **Status (0.7.0, not on by default).** No agent's guidance points here yet, and no profile loads it. It's switched
|
|
8
|
+
> on by adding one line to the kernel operator's role guidance, after a native run on a real install shows the
|
|
9
|
+
> pattern holds. Until then, hand this page to an operator by hand (`docs/reference/keeping-a-watch.md`) to try it.
|
|
10
|
+
|
|
11
|
+
## The shape
|
|
12
|
+
|
|
13
|
+
A watch is a **queue task the operator owns**, set aside with a **one-shot timer**:
|
|
14
|
+
|
|
15
|
+
1. The person asks. The operator creates one task for itself and sets it aside with `--wake-after`.
|
|
16
|
+
2. The timer fires once and wakes the operator. The operator reads the task and checks the condition.
|
|
17
|
+
3. Then it tells the person, re-arms the timer, or both. **A timer fires once: a watch that isn't re-armed goes
|
|
18
|
+
quiet.**
|
|
19
|
+
|
|
20
|
+
OpenRig keeps the record and the timer. The operator does the judgment: what to check, and whether it's worth telling
|
|
21
|
+
the person.
|
|
22
|
+
|
|
23
|
+
## Before you set one: can you reach the person?
|
|
24
|
+
|
|
25
|
+
Run `rig gateway human list --json`. A watch tells the person through the registered human channel (Slack today,
|
|
26
|
+
also shown in the TUI Feed), at `<entityId>@external`. **A terminal is never a person's address.** If no human is
|
|
27
|
+
registered, say so now, before setting anything up: a watch that can't reach them is a watch they'll never hear from.
|
|
28
|
+
|
|
29
|
+
## Setting a watch
|
|
30
|
+
|
|
31
|
+
**1. Write the task body for a successor.** You may be restarted, compacted or replaced before the watch ends. A new
|
|
32
|
+
operator must be able to act from the task alone. Put these in the body:
|
|
33
|
+
|
|
34
|
+
```markdown
|
|
35
|
+
Person's words: "Tell me when the release PR merges; check every hour."
|
|
36
|
+
Check: `gh pr view <n> --json state` — met when state is MERGED.
|
|
37
|
+
Interval: 1h.
|
|
38
|
+
Tell them: <entityId>@external (human channel), once, when met.
|
|
39
|
+
Stop: after telling them once, or when they say stop.
|
|
40
|
+
Unknown: not said yet.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**2. Create it for yourself,** with a `watch` tag so it can be listed later (tags can't be changed after creation).
|
|
44
|
+
`<your session>` is your session name from `rig whoami --json`:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
rig queue create --destination <your session> --tags watch \
|
|
48
|
+
--summary "Watch: tell <person> when the release PR merges (hourly)" --body-file <file>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**3. Set it aside with the timer.** A new pending task can be set aside directly; no claim is needed:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
rig queue block <task> --on external:<what you check> --wake-after 1h \
|
|
55
|
+
--continuation "check <what>; tell <person> if met, else re-arm 1h"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`--on` is always required; `external:<what>` names the outside thing you're waiting on. The timer first fires after
|
|
59
|
+
the interval, not now.
|
|
60
|
+
|
|
61
|
+
**4. Say back what you set, in one or two plain lines:** what you'll check, how often, how they'll be told, and when
|
|
62
|
+
it stops. For example: "I'll check the release PR every hour and message you here once it merges. Then I'll stop."
|
|
63
|
+
|
|
64
|
+
A plain reminder ("remind me in 20 minutes to look at the release notes") is the same with no condition. Set it aside
|
|
65
|
+
with `--wake-after 20m`, and when it fires, tell them and close it.
|
|
66
|
+
|
|
67
|
+
## Every time the timer fires: read the record first
|
|
68
|
+
|
|
69
|
+
When the timer's message arrives, **run `rig queue show <task> --full --json` before doing anything.** A message already
|
|
70
|
+
on its way can still arrive after the watch was stopped or changed. If the task is no longer set aside (done, canceled, or replaced),
|
|
71
|
+
do nothing.
|
|
72
|
+
|
|
73
|
+
Otherwise, check the condition, then do exactly one of these:
|
|
74
|
+
|
|
75
|
+
| What you found | Do |
|
|
76
|
+
|---|---|
|
|
77
|
+
| **Met, and the watch was "once"** | Tell the person (below), then close: `rig queue update <task> --state done --closure-reason no-follow-on --note "<what you saw>"` |
|
|
78
|
+
| **Met, and it's "every time"** | Tell the person, then re-arm |
|
|
79
|
+
| **Not met** | Re-arm. Say nothing to the person: never send "nothing yet" |
|
|
80
|
+
| **Can't tell** (no fresh reading) | The first time, tell them once that you can't tell, and why. Record that in a note (`Unknown: said <time>`), then re-arm. **Never say "all fine" for an unknown.** Stay quiet on later unknowns until the reading returns or changes |
|
|
81
|
+
|
|
82
|
+
**Re-arm** by setting it aside again with a fresh timer:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
rig queue block <task> --on external:<what> --wake-after 1h --note "checked <time>: not met"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
A new set-aside replaces the old one and retires any earlier timer, so a task never carries two live timers.
|
|
89
|
+
|
|
90
|
+
**Put what changed in `--note` or `--continuation`, not both.** When `rig queue block` gets `--continuation`, that is
|
|
91
|
+
the note it records, and `--note` is dropped.
|
|
92
|
+
|
|
93
|
+
Each check costs one of your turns on the person's subscription. **Use the longest interval that serves the ask.**
|
|
94
|
+
|
|
95
|
+
## Telling the person
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
rig queue create --destination <entityId>@external --human-intent update \
|
|
99
|
+
--summary "<subject>" --body-file <brief> --evidence-ref <watch task id> --verify --json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
- Always pass `--evidence-ref`; the watch task's ID is a durable pointer the person can open.
|
|
103
|
+
- Later messages about the same watch can thread with `--reply-to <earlier message's id>`.
|
|
104
|
+
- **`posted` means the connector posted it, not that they read it.** Don't say they saw it.
|
|
105
|
+
- **If delivery fails or is indeterminate,** inspect that task before anything else. Never resend blindly.
|
|
106
|
+
|
|
107
|
+
## "What are you watching for me?"
|
|
108
|
+
|
|
109
|
+
List **every active state**, not just set-aside ones. A watch being checked can be in progress, and a new one can be
|
|
110
|
+
pending:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
rig queue list --owned --state pending,in-progress,blocked --full --limit 200 -o json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Then keep the tasks tagged `watch`. Two rules:
|
|
117
|
+
|
|
118
|
+
- **Check that the number of tasks returned is below the limit.** The limit applies before you filter by tag. If you got
|
|
119
|
+
exactly the limit, raise it and list again. **Never report "no watch" from a page that was cut off.**
|
|
120
|
+
- **Use `--full`.** Compact output leaves out the body and the waiting view.
|
|
121
|
+
|
|
122
|
+
For each watch, say what it checks, how often, how they'll be told, and the next check. The next check is
|
|
123
|
+
`waiting.nextBackstop.dueAt` when `waiting.nextBackstop.mechanism` starts with `watchdog:`. If a set-aside watch shows
|
|
124
|
+
no timed backstop instead, its timer has fired and wasn't re-armed. Check it now and re-arm it.
|
|
125
|
+
|
|
126
|
+
Answer from the records, so a second reader would give the same list.
|
|
127
|
+
|
|
128
|
+
## Changing or stopping a watch
|
|
129
|
+
|
|
130
|
+
| The person says | Do |
|
|
131
|
+
|---|---|
|
|
132
|
+
| **"Check every 2 hours instead"** | Re-arm with the new interval and a note saying what changed: `rig queue block <task> --on external:<what> --wake-after 2h --note "<person's words>"` |
|
|
133
|
+
| **"Watch Y instead"** (what's checked changes) | A task's body can't be edited. Create the new watch, then retire the old one: `rig queue update <old> --state canceled --closure-reason superseded --closure-target <new> --note "<person's words>"` |
|
|
134
|
+
| **"Stop watching that"** | `rig queue update <task> --state canceled --note "<person's words>"`. Leaving the set-aside state retires its timer. A plain cancel takes no other closure fields |
|
|
135
|
+
|
|
136
|
+
Tell the person in one line what changed. After a stop, take no further action for that watch.
|
|
137
|
+
|
|
138
|
+
## Across a restart or handover
|
|
139
|
+
|
|
140
|
+
A set-aside watch's current timer is **kept** when the operator is restarted or replaced, and it fires at whoever is
|
|
141
|
+
the operator next. That's why the body must stand alone.
|
|
142
|
+
|
|
143
|
+
**One gap:** a timer fires once. If the operator is replaced **after a fire and before the re-arm**, the successor
|
|
144
|
+
inherits a set-aside watch with no live timer. OpenRig's idle-owner check may remind the new operator once, but only
|
|
145
|
+
under some conditions, with no delay guarantee. So:
|
|
146
|
+
|
|
147
|
+
- **Re-arm promptly** after every fire.
|
|
148
|
+
- **After a restart or handover, list your watches** (above) and re-arm any that show no timed backstop.
|
|
149
|
+
|
|
150
|
+
## What not to use
|
|
151
|
+
|
|
152
|
+
- **`rig watchdog register --policy periodic-reminder` for a person's watch.** It repeats every interval until it's
|
|
153
|
+
stopped (the first fire comes one interval after you register it), and it stops when the agent that registered it
|
|
154
|
+
is replaced. It's fine for agent-to-agent reminders.
|
|
155
|
+
- **Transcript bytes as "usage".** `context-usage-threshold` measures an agent's transcript, not an account's
|
|
156
|
+
allowance.
|
|
@@ -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
|
|
|
@@ -121,7 +121,17 @@ When the owning scope selects `proofPolicy.judges`, use `rig proof judge` to
|
|
|
121
121
|
record an attributed accept, reject or withdraw decision on a contract item,
|
|
122
122
|
and `rig proof show` to read derived readiness up through slice, mission and
|
|
123
123
|
project. The nearest slice, mission or project policy selects authorized judges;
|
|
124
|
-
`rig proof --help` describes setup, selectors and evidence requirements.
|
|
124
|
+
`rig proof --help` describes setup, selectors and evidence requirements. In a
|
|
125
|
+
multi-project workspace catalog, name the project with `--project <id>` or a
|
|
126
|
+
`<id>:` scope prefix (`alpha:m0/slices/01-t001`); unqualified scopes use the
|
|
127
|
+
daemon's selected workspace. The prefix counts only when it names a catalogued
|
|
128
|
+
project and no scope exists at that literal path, so a mission folder with a
|
|
129
|
+
colon (`alpha:trial/slices/01-t001`) still resolves as written. The scopes views
|
|
130
|
+
read a catalog project's readiness against the same project root, so they agree
|
|
131
|
+
with `rig proof show`. A catalog-project read names the project
|
|
132
|
+
(`project: { id, root }`) and reports its source watcher as unavailable; a
|
|
133
|
+
judgment carries that root and is refused (409 `project_changed`) if the
|
|
134
|
+
catalog has since moved the project. A
|
|
125
135
|
correction preserves history and unrelated judgments without editing ancestor
|
|
126
136
|
status checklists. An artifact can identify non-code work without a fabricated
|
|
127
137
|
commit. Evidence capture (`proof add`), policy acceptance, higher outcome
|
|
@@ -178,8 +178,9 @@ are not supported targets.
|
|
|
178
178
|
|
|
179
179
|
## Reconnect recovery and status
|
|
180
180
|
|
|
181
|
-
The daemon scans available top-level messages
|
|
182
|
-
Socket Mode connection and on its
|
|
181
|
+
The daemon scans available top-level messages and replies broadcast with **Also send to
|
|
182
|
+
channel** in the configured default channel after a Socket Mode connection and on its
|
|
183
|
+
existing five-minute retry cadence. Broadcast replies keep their thread's routing. Recovered
|
|
183
184
|
tasks say **Recovered after a gap** and show the original Slack posting time.
|
|
184
185
|
They use the same sender admission, routing, attachment handling, fixed identity
|
|
185
186
|
and dead-letter path as live messages. A durable dead letter is custody of a
|
|
@@ -204,8 +205,9 @@ When Slack reports a plan history limit, recovery still lands the available page
|
|
|
204
205
|
and advances normally, retaining an older-history limitation in status across restarts.
|
|
205
206
|
Missing bot credentials, history scope, membership, retention limits and API
|
|
206
207
|
failures appear as recovery limitations. No additional scope is required to keep
|
|
207
|
-
live delivery working.
|
|
208
|
-
|
|
208
|
+
live delivery working. Non-broadcast thread replies and other channels remain outside
|
|
209
|
+
this recovery scope; global chronological order is not promised. This change does not
|
|
210
|
+
replay intervals already checkpointed before broadcast-reply recovery was added.
|
|
209
211
|
|
|
210
212
|
`rig slack status` retains local configuration checks and adds a bounded daemon
|
|
211
213
|
snapshot: socket state/generation, last event, recovery interval/state/reason,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# What changed in OpenRig 0.6.
|
|
1
|
+
# What changed in OpenRig 0.6.11
|
|
2
2
|
|
|
3
|
-
This note is for an agent on an install that was just upgraded to 0.6.
|
|
4
|
-
0.6.
|
|
3
|
+
This note is for an agent on an install that was just upgraded to 0.6.11. It lists only what behaves differently from
|
|
4
|
+
0.6.10 and what to do about it. For everything OpenRig can do, read the capability map:
|
|
5
5
|
`rig context get onboarding-width/public-what-you-can-do.md`. Each release replaces this file, so
|
|
6
6
|
`rig context get reference/whats-new.md` describes the installed version once the upgraded daemon is running. Without
|
|
7
7
|
a running daemon, read `$OPENRIG_HOME/reference/whats-new.md`. The daemon refreshes that copy when it starts, so right
|
|
@@ -9,158 +9,159 @@ after an upgrade it can still hold the previous version's note.
|
|
|
9
9
|
|
|
10
10
|
## After the upgrade
|
|
11
11
|
|
|
12
|
-
- **Restart the daemon** (`rig daemon stop`, then `rig daemon start`).
|
|
13
|
-
adds one
|
|
14
|
-
|
|
12
|
+
- **Restart the daemon** (`rig daemon stop`, then `rig daemon start`). One migration runs on the first start: `103`
|
|
13
|
+
adds one column to `sessions`, `intentionally_stopped`, which is 0 for every existing row. There are no migrations
|
|
14
|
+
`100` or `102`. The bundled openrig-core plugin stays at 0.1.9; two of its files changed.
|
|
15
|
+
- **Two new switches, both off by default:**
|
|
16
|
+
- `output.compact` (or `OPENRIG_OUTPUT_COMPACT`): the seven queue write commands (`rig queue create`, `claim`,
|
|
17
|
+
`unclaim`, `update`, `block`, `handoff` and `handoff-and-complete`) print a short receipt instead of the whole
|
|
18
|
+
row, and `--full` prints the whole row. While it's off their output is unchanged, `--full` is accepted, and
|
|
19
|
+
`rig config` lists the key.
|
|
20
|
+
- `provider.usage_windows` (or `OPENRIG_PROVIDER_USAGE_WINDOWS` in the daemon's environment): `rig provider status
|
|
21
|
+
--refresh` reads a Codex login's usage windows once. While it's off, `--refresh` says how to turn it on and exits 1.
|
|
15
22
|
|
|
16
23
|
## Output that changed shape
|
|
17
24
|
|
|
18
|
-
- **`rig
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
`
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
oldest first. Before, a room longer than the limit returned its oldest messages. `--after` and `--since` still page
|
|
33
|
-
forward from that point, and `rig chatroom wait` is unchanged.
|
|
25
|
+
- **`rig queue create --verify` reports `outcome: "claimed"`** for a claimed row whose wake wasn't confirmed, instead
|
|
26
|
+
of `indeterminate`. A claim is pickup, not proof the body was read.
|
|
27
|
+
- **`rig queue create --verify` to a registered person who is also a seat with a pane reports the Slack side too.**
|
|
28
|
+
Beside the terminal wake it adds a `gateway` object: `posted` (`connectorAccepted: true`), `transport-failed` or
|
|
29
|
+
`never-posted` (`connectorAccepted: false`, with the detail), or `still-pending` (`connectorAccepted: null`). The
|
|
30
|
+
wait is still bounded by the existing 30-second default, and it can use all of it even when Slack isn't set up or the
|
|
31
|
+
row won't be posted; the Slack side then reads `still-pending`. Posted isn't read, and "This is not a failed handoff"
|
|
32
|
+
isn't shown when Slack reports a failed delivery. `GET /api/queue/:qitemId` returns `ownerNotificationLevel`, or
|
|
33
|
+
`null`.
|
|
34
|
+
- **`rig queue whoami --work-candidates` returns up to 50 held and 50 next rows,** with `heldTruncated` and
|
|
35
|
+
`nextTruncated`. `heldAndNextTruncated` now means either list was cut. With `OPENRIG_REFOCUS_WORK_PACKET` on (off by
|
|
36
|
+
default, as in 0.6.10), the refocus work packet lists held and next work separately, up to 50 each.
|
|
37
|
+
- **`rig ps --nodes --json` carries `intentionallyStopped`,** and `rig ps --nodes` shows `usage_limit` under REASON for a
|
|
38
|
+
Codex seat at its usage limit.
|
|
34
39
|
|
|
35
40
|
## Seats and restore
|
|
36
41
|
|
|
37
|
-
-
|
|
38
|
-
the
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
a
|
|
59
|
-
|
|
60
|
-
`
|
|
61
|
-
|
|
62
|
-
|
|
42
|
+
- **A restore no longer starts a seat fresh when an earlier occupant left a resume token.** If a seat wasn't running
|
|
43
|
+
when the snapshot was taken, but an earlier session recorded a resume token, `rig up --existing` and `rig launch`
|
|
44
|
+
stop that seat at `awaiting-decision` and start nothing, because the token doesn't prove that conversation can still
|
|
45
|
+
resume. `rig launch` of such a seat exits 1 where it used to start it fresh. The message names the command that
|
|
46
|
+
starts it fresh on purpose. See the known gap below for how this shows in the rig status API.
|
|
47
|
+
- **In a restore of a rig whose seats are in pods, a seat is rolled back as unresumable only when its runtime reports
|
|
48
|
+
the conversation missing.** When Claude, Codex or Pi reports that, the seat goes back to `awaiting-decision` and
|
|
49
|
+
nothing starts, instead of a failed launch that left the new pane behind. A rig where every seat ends this way reads
|
|
50
|
+
`partially_restored` instead of `failed`; the exit code is 1 either way. A Claude that exits to its shell for another
|
|
51
|
+
reason keeps 0.6.10's result: the seat is reported failed and its pane is kept, so you can read what happened. Restores
|
|
52
|
+
of rigs without pods keep their earlier handling.
|
|
53
|
+
- **`rig seat launch --fresh --stop` checks before it stops anything.** A seat with a still-live older session is
|
|
54
|
+
refused before the current agent is stopped; 0.6.10 stopped it first. `--plan` previews a fresh launch without
|
|
55
|
+
changing anything and exits 0 even when it would be blocked. `--reason` is required only to execute; leaving it out
|
|
56
|
+
reports `missing_reason`.
|
|
57
|
+
- **A seat you stop on purpose no longer makes its rig read `degraded`.** `rig seat stop` records the stop, and `rig ps`
|
|
58
|
+
and the TUI leave that seat out of the rig's state; running counts still exclude it. A rig whose seats were all
|
|
59
|
+
stopped this way reads `stopped`.
|
|
60
|
+
- **Restart one Codex seat in place, on Linux:** `rig seat restart <seat> --keep-conversation --reason "<why>"`
|
|
61
|
+
restarts it in its own pane on the same conversation, so it starts again on whatever account its Codex home now
|
|
62
|
+
holds. It doesn't switch accounts itself. Before it stops anything, it checks that the seat is a Codex seat OpenRig
|
|
63
|
+
launched, in a single pane, with a conversation it can prove, and that relaunching wouldn't change the running
|
|
64
|
+
settings; any doubt refuses with nothing stopped. `--plan` runs every check and stops nothing.
|
|
65
|
+
`--verify --expect-account <account>` reports `moved` only when a tool turn has completed in the same conversation
|
|
66
|
+
since the restart and Codex's status names that account.
|
|
67
|
+
On macOS, a request that gets as far as reading the running process refuses before stopping the seat, because that
|
|
68
|
+
reading depends on `/proc`.
|
|
69
|
+
- **A forked Claude seat launches with its own session ID** (`rig fork`, or `session_source: fork`), so strict restore
|
|
70
|
+
and clear-attention can verify it as its own conversation. Forking a Claude seat needs Claude Code 2.0.73 or later,
|
|
71
|
+
which OpenRig doesn't check. Forks launched before this keep reading `mismatch` until they're relaunched.
|
|
72
|
+
- **Seats no longer inherit the launching Claude Code or Herdr session's identity variables,** such as `CLAUDECODE`.
|
|
73
|
+
If removing them fails, the launch goes ahead with a warning.
|
|
74
|
+
- **A member's `cwd` in a rig spec can be `~`, start with `~/`, or use `$VAR` or `${VAR}`,** expanded from the daemon's
|
|
75
|
+
environment, when the path as written doesn't exist. `rig up` warns on stderr when it chose `/` as the launch folder
|
|
76
|
+
itself.
|
|
77
|
+
- **A late readiness result no longer overwrites a newer launch attempt.**
|
|
63
78
|
|
|
64
79
|
## Sends and wakes
|
|
65
80
|
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
- **`rig
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- **
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- **Attach commands name the daemon's tmux server.** When the daemon was started inside tmux on a non-default socket,
|
|
94
|
-
every attach command OpenRig prints carries `-L <name>` or `-S <path>`, including `tmuxAttachCommand` in `rig ps
|
|
95
|
-
--json`. From inside tmux, run it as `env -u TMUX <tmuxAttachCommand>`. On the default server nothing changed.
|
|
96
|
-
- **When a caller of the daemon's terminal API names no provider, the daemon uses cmux if Herdr isn't available** and
|
|
97
|
-
cmux is, and says so. A named `--provider` is used as named. `rig terminal open` without `--provider`, and the TUI's
|
|
98
|
-
"Open terminals", open Herdr, or plain tmux when Herdr is missing, never cmux. The TUI's preview now asks for the
|
|
99
|
-
same provider as the window it opens, so it isn't refused when cmux is running.
|
|
100
|
-
- **A tmux started inside a Herdr pane is recognised** by Herdr's markers (`HERDR_ENV`, `HERDR_PANE_ID`,
|
|
101
|
-
`HERDR_SOCKET_PATH`), so `rig terminal open --window` opens in that Herdr.
|
|
102
|
-
|
|
103
|
-
## Setup
|
|
104
|
-
|
|
105
|
-
- **`rig setup --providers claude|codex|both`** (or a comma list) sets which harnesses it installs and checks. One not
|
|
106
|
-
chosen reads `skipped` with `Not selected: …`, never failed. Without the flag, setup is unchanged. `rig doctor` still
|
|
107
|
-
checks both.
|
|
108
|
-
- **A first `rig daemon start` after a timed-out probe goes ahead when the port is free,** as on WSL2. A port that's
|
|
109
|
-
really held is refused with `Address already in use (EADDRINUSE)` and the `--port` advice.
|
|
110
|
-
|
|
111
|
-
## Teams
|
|
112
|
-
|
|
113
|
-
- **Starter and factory teams run their own first steps and checks without stopping for approval** where they can:
|
|
114
|
-
plain `rig` commands, the file tool instead of a heredoc, the project's test command first. Their leads read the goal
|
|
115
|
-
from `rig queue show <id> --full`.
|
|
116
|
-
- **The operator says what a team launch changes in the person's folder before asking** (`CLAUDE.md`, skills,
|
|
117
|
-
`.mcp.json`, `.openrig/`, and an accept-edits `.claude/settings.local.json`), and offers a separate copy such as a git
|
|
118
|
-
worktree. When a seat shows `needs_input`, the operator or lead tells the person which seat, what it asks, and its
|
|
119
|
-
attach command.
|
|
81
|
+
- **`rig send --wait-for-idle N` waits before it takes the seat's delivery lease,** so other sends and queue wakes to
|
|
82
|
+
that seat aren't held behind a long wait. N is now a deadline from the start of the wait, including any time spent
|
|
83
|
+
waiting for the lease. A timeout names the wait you asked for.
|
|
84
|
+
- **A parked seat whose occupant is known isn't woken again for the same rows after a wake was delivered,** until it
|
|
85
|
+
updates one of them or one changes state. A failed, refused or unrecorded wake still repeats at the next park, and a
|
|
86
|
+
new occupant gets its first wake. "Delivered" means the wake was typed into the seat's terminal, not that the agent
|
|
87
|
+
read it.
|
|
88
|
+
- **`rig send --verify` confirms enveloped multi-line messages that the agent's screen indents,** and queue wakes use
|
|
89
|
+
the same check.
|
|
90
|
+
- **A Claude footer in auto, bypass or plan mode on the last line reads idle** when no activity hook is reporting.
|
|
91
|
+
- **A failed Pi or OMP turn shows the provider's own reason** when it gives one.
|
|
92
|
+
- **A `handed-off` closure with no visible successor** gets the same custody advisory and stuck-sweep finding as a
|
|
93
|
+
`done` closure.
|
|
94
|
+
|
|
95
|
+
## Status
|
|
96
|
+
|
|
97
|
+
- **A Codex seat at its usage limit stays `unknown` with reason `usage_limit`** while its screen redraws, instead of
|
|
98
|
+
reading `running`. It clears when a readable screen shows no banner, or when Codex shows it's working again. See the
|
|
99
|
+
known gap below.
|
|
100
|
+
- **`rig ps` takes a rig's running count and status from the same set of sessions as `rig ps --nodes`.**
|
|
101
|
+
- **`rig whoami --full --json` shows a Codex seat's `runtimeContext.threadId`** when its stored conversation ID was
|
|
102
|
+
verified resumable.
|
|
103
|
+
- **The TUI says when a queue sample hit its cap or failed to load:** counts read `N+`, a seat missing from the sample
|
|
104
|
+
shows `?`, and Pulse no longer lists a NEEDS YOU item a second time. The caps count the whole host, so a quiet rig can
|
|
105
|
+
read `?` while another rig is busy.
|
|
106
|
+
- **The TUI Topology table's Q, WORK and NOW columns fill again** on drilled views and on a seat's page.
|
|
120
107
|
|
|
121
108
|
## Smaller fixes
|
|
122
109
|
|
|
123
|
-
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
- `rig
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
-
|
|
139
|
-
- A Codex seat keeps its last context reading across quota-only usage records, and a fresh Codex launch keeps git
|
|
140
|
-
metadata paths that end in whitespace.
|
|
110
|
+
- A Slack reply sent with "Also send to channel" in the default channel is recovered after a connection gap.
|
|
111
|
+
- `rig config set daemon.port` refuses a port outside 0–65535, and a port like that from the environment or
|
|
112
|
+
`config.json` falls back to the file or default with a warning. `rig daemon start --port` refuses one too, with exit 1.
|
|
113
|
+
- Parallel `rig scope slice create` calls get different slice numbers. A number is never reused, and each create leaves
|
|
114
|
+
a hidden `slices/.nn-NN` claim file.
|
|
115
|
+
- `rig proof show` and `rig proof judge` take `--project <id>` or a `<project>:` scope prefix. Scope readiness for a
|
|
116
|
+
project selected in the TUI uses that project's own root.
|
|
117
|
+
- The chat send and topic routes return 400 before storing anything for payloads that used to fail with 500;
|
|
118
|
+
`/api/wake-resolve` answers a fractional or non-numeric generation with its usual "does not exist" reply; watchdog
|
|
119
|
+
registration refuses a `scan_interval_seconds` that can't be turned into a number (non-numeric text, a boolean, an
|
|
120
|
+
empty array); and unmanaged-pane discovery matches agent
|
|
121
|
+
process names exactly, plus `claude.exe` and names cut to 15 or 16 characters.
|
|
122
|
+
- The `rigs` and `openrig-skills` skill descriptions split by who is asking: a person in their own session, or an agent
|
|
123
|
+
inside a rig.
|
|
124
|
+
- A new reference page covers keeping a watch for a person with today's queue commands, installed at
|
|
125
|
+
`$OPENRIG_HOME/reference/keeping-a-watch.md`. See the known gap below.
|
|
141
126
|
|
|
142
127
|
## What to stop doing
|
|
143
128
|
|
|
144
|
-
- **Stop
|
|
145
|
-
`
|
|
146
|
-
- **Stop reading `
|
|
147
|
-
|
|
148
|
-
- **Stop
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
- **The
|
|
156
|
-
|
|
129
|
+
- **Stop expecting a restore to start a seat fresh** when an earlier session left a resume token; decide at
|
|
130
|
+
`awaiting-decision`, or use the command the message names.
|
|
131
|
+
- **Stop reading `indeterminate` as the answer for a claimed row** from `rig queue create --verify`; 0.6.11 says
|
|
132
|
+
`claimed`.
|
|
133
|
+
- **Stop treating `degraded` as a stopped seat's doing** after `rig seat stop`; the rig leaves that seat out.
|
|
134
|
+
- **Stop counting a long `--wait-for-idle` as extra time after the lease;** N is a deadline from the start of the wait.
|
|
135
|
+
|
|
136
|
+
## Known gaps in 0.6.11
|
|
137
|
+
|
|
138
|
+
- **`rig seat restart --keep-conversation` supports Linux only.** Its automated tests are hermetic: they don't restart a
|
|
139
|
+
real Codex seat.
|
|
140
|
+
- **The rig status API can call a running rig `blocked` because of one seat that isn't running.** It happens when the
|
|
141
|
+
latest snapshot recorded no occupant for that seat, an earlier session of the seat left a resume token, and its newest
|
|
142
|
+
session's restore policy is `resume_if_possible`. A restore from that snapshot would stop at the seat for a decision,
|
|
143
|
+
and `GET /api/rigs/:id/status` folds that forecast into the rig's status, so it mixes current status with restore
|
|
144
|
+
readiness: no seat is halted. `rig status` and the TUI's rig list don't show it for a running rig.
|
|
145
|
+
- **A Codex seat can keep reading as at its usage limit** when an old usage-limit banner is followed by a submitted
|
|
146
|
+
prompt and the agent's reply, with no Codex working line and no input line below. It's recorded again every five
|
|
147
|
+
minutes, where 0.6.10 let it age out. The case was constructed from the source and hasn't been seen in a real
|
|
148
|
+
session.
|
|
149
|
+
- **The keeping-a-watch page says a timer fires once; a held-back wake uses up that fire.** When the typing guard holds
|
|
150
|
+
a one-shot `--wake-after` wake back (it shows as `retained`), that held-back attempt is recorded as the timer's one
|
|
151
|
+
fire and later wakes aren't, so the timer isn't retired: it can wake the owner again at each interval while the row
|
|
152
|
+
stays set aside. A row sharing the timer through `--wake-watchdog`, after the original row was handed off or stopped,
|
|
153
|
+
loses its one wake if that wake is held back. Read the row's transitions after each wake.
|
|
154
|
+
- **After `rig scope slice create` says it couldn't verify membership, the slice was kept.** Check `mission.yaml` before
|
|
155
|
+
creating it again: creating it again makes a second slice with the same name.
|
|
156
|
+
- **The latest first-install check before this release used 0.6.10 on Linux only.** macOS was last checked with 0.6.8,
|
|
157
|
+
and native Windows hasn't been checked.
|
|
157
158
|
- **Only one selected lifecycle-help command has been checked in a live Claude session;** source and parser coverage
|
|
158
159
|
is broader. If a help command still asks, report it.
|
|
159
160
|
- **Codex team seats aren't asked before lifecycle commands yet.**
|
|
160
161
|
- **The send gate trusts the most recently recorded hook.** If hooks are recorded out of order, it can hold a send for
|
|
161
162
|
a question that's already answered, or miss one that's waiting. `rig capture` shows the real screen.
|
|
162
163
|
- **A Codex seat whose permission request was approved automatically can still read "needs input".**
|
|
163
|
-
- **A launched team still writes into its working folder;** the operator
|
|
164
|
+
- **A launched team still writes into its working folder;** the operator says what changes before you agree.
|
|
164
165
|
- **After a restart, `rig status` shows `Kernel: skipped` whatever the kernel seats' state.** Read them with
|
|
165
166
|
`rig ps --nodes --rig kernel --full`.
|
|
166
167
|
- **`rig tui --shared` still attaches on the default tmux server,** so it can't find the dashboard when the daemon runs
|
|
@@ -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:
|