@openrig/cli 0.6.12 → 0.6.14
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 +69 -14
- 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/README.md +9 -2
- package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +25 -9
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +7 -4
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +5 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +11 -3
- package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +73 -48
- package/daemon/assets/skills/rigs/SKILL.md +8 -4
- 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 +76 -16
- package/daemon/context-packs/reference/getting-started.md +135 -28
- package/daemon/context-packs/reference/manifest.yaml +1 -1
- package/daemon/context-packs/reference/rig-spec.md +5 -5
- package/daemon/context-packs/reference/whats-new.md +65 -167
- 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/manifest.yaml +1 -1
- 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/SKILL.md +5 -0
- 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 +11 -3
- 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 +73 -48
- 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 +9 -1
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +110 -52
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +47 -6
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/pi-resume.d.ts +1 -1
- package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-resume.js +4 -1
- package/daemon/dist/adapters/pi-resume.js.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.d.ts +9 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.js +16 -0
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
- package/daemon/dist/adapters/pi-runner.d.ts +5 -2
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner.js +72 -15
- package/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.js +2 -0
- package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/stub-compaction.d.ts +1 -0
- package/daemon/dist/adapters/stub-compaction.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-compaction.js +2 -0
- package/daemon/dist/adapters/stub-compaction.js.map +1 -1
- package/daemon/dist/adapters/stub-refocus.d.ts +6 -0
- package/daemon/dist/adapters/stub-refocus.d.ts.map +1 -0
- package/daemon/dist/adapters/stub-refocus.js +22 -0
- package/daemon/dist/adapters/stub-refocus.js.map +1 -0
- package/daemon/dist/adapters/stub-runner.d.ts +6 -0
- package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-runner.js +18 -1
- package/daemon/dist/adapters/stub-runner.js.map +1 -1
- package/daemon/dist/adapters/stub-script.d.ts +2 -2
- package/daemon/dist/adapters/stub-script.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-script.js +2 -2
- package/daemon/dist/adapters/stub-script.js.map +1 -1
- package/daemon/dist/adapters/tmux.js +1 -1
- 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/117_provider_account_readings.d.ts +3 -0
- package/daemon/dist/db/migrations/117_provider_account_readings.d.ts.map +1 -0
- package/daemon/dist/db/migrations/117_provider_account_readings.js +32 -0
- package/daemon/dist/db/migrations/117_provider_account_readings.js.map +1 -0
- package/daemon/dist/domain/claim-service.d.ts +9 -18
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +83 -0
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.d.ts +6 -0
- package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.js +19 -1
- package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +2 -2
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +20 -14
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/claude-core-plugin-env.d.ts +2 -0
- package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
- package/daemon/dist/domain/claude-core-plugin-env.js +6 -2
- package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
- package/daemon/dist/domain/claude-managed-launch.d.ts +5 -0
- package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
- package/daemon/dist/domain/claude-managed-launch.js +48 -7
- package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
- package/daemon/dist/domain/claude-mcp-menu.d.ts +5 -0
- package/daemon/dist/domain/claude-mcp-menu.d.ts.map +1 -0
- package/daemon/dist/domain/claude-mcp-menu.js +25 -0
- package/daemon/dist/domain/claude-mcp-menu.js.map +1 -0
- package/daemon/dist/domain/fresh-occupant-relation.d.ts +7 -0
- package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
- package/daemon/dist/domain/fresh-occupant-relation.js +45 -0
- package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +14 -2
- package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/channel-recovery.js +128 -89
- package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts +4 -0
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.js +5 -3
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts +24 -0
- package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/recovery-budget.js +18 -0
- package/daemon/dist/domain/gateway/slack/recovery-budget.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts +104 -0
- package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-recovery.js +236 -0
- package/daemon/dist/domain/gateway/slack/slack-recovery.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +29 -6
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/state-store.d.ts +34 -0
- package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/state-store.js +67 -0
- package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts +37 -0
- package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/thread-recovery.js +173 -0
- package/daemon/dist/domain/gateway/slack/thread-recovery.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +8 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +6 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js +4 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
- package/daemon/dist/domain/model-divergence/current-model-reader.d.ts +74 -0
- package/daemon/dist/domain/model-divergence/current-model-reader.d.ts.map +1 -0
- package/daemon/dist/domain/model-divergence/current-model-reader.js +246 -0
- package/daemon/dist/domain/model-divergence/current-model-reader.js.map +1 -0
- package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +18 -0
- package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/effective-model-readers.js +24 -8
- package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -1
- package/daemon/dist/domain/native-process-lineage.d.ts +8 -1
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +40 -26
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
- package/daemon/dist/domain/native-resume-probe.js +34 -8
- package/daemon/dist/domain/native-resume-probe.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +1 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +84 -18
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/process-census.d.ts +1 -1
- package/daemon/dist/domain/process-census.d.ts.map +1 -1
- package/daemon/dist/domain/process-table.d.ts +26 -0
- package/daemon/dist/domain/process-table.d.ts.map +1 -0
- package/daemon/dist/domain/process-table.js +185 -0
- package/daemon/dist/domain/process-table.js.map +1 -0
- package/daemon/dist/domain/profile-resolver.d.ts +8 -0
- package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/profile-resolver.js +11 -0
- package/daemon/dist/domain/profile-resolver.js.map +1 -1
- package/daemon/dist/domain/projection-planner.js +1 -1
- package/daemon/dist/domain/projection-planner.js.map +1 -1
- package/daemon/dist/domain/provider/claude-usage-windows.d.ts +3 -1
- package/daemon/dist/domain/provider/claude-usage-windows.d.ts.map +1 -1
- package/daemon/dist/domain/provider/claude-usage-windows.js +48 -3
- package/daemon/dist/domain/provider/claude-usage-windows.js.map +1 -1
- package/daemon/dist/domain/provider/codex-usage-reader.d.ts +4 -1
- package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -1
- package/daemon/dist/domain/provider/codex-usage-reader.js +3 -0
- package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -1
- package/daemon/dist/domain/provider/codex-usage-windows.d.ts +3 -1
- package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -1
- package/daemon/dist/domain/provider/codex-usage-windows.js +1 -0
- package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -1
- package/daemon/dist/domain/provider/provider-account-readings.d.ts +42 -0
- package/daemon/dist/domain/provider/provider-account-readings.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-account-readings.js +132 -0
- package/daemon/dist/domain/provider/provider-account-readings.js.map +1 -0
- package/daemon/dist/domain/provider/provider-types.d.ts +29 -0
- package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
- package/daemon/dist/domain/provider/usage-across-hosts.d.ts.map +1 -1
- package/daemon/dist/domain/provider/usage-across-hosts.js +6 -0
- package/daemon/dist/domain/provider/usage-across-hosts.js.map +1 -1
- package/daemon/dist/domain/provider/usage-windows.d.ts +25 -0
- package/daemon/dist/domain/provider/usage-windows.d.ts.map +1 -1
- package/daemon/dist/domain/provider/usage-windows.js +100 -4
- package/daemon/dist/domain/provider/usage-windows.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +23 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +59 -1
- 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 +47 -4
- package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
- package/daemon/dist/domain/restore-check-service.d.ts +10 -0
- package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
- package/daemon/dist/domain/restore-check-service.js +73 -10
- package/daemon/dist/domain/restore-check-service.js.map +1 -1
- package/daemon/dist/domain/restore-guidance.d.ts +6 -0
- package/daemon/dist/domain/restore-guidance.d.ts.map +1 -1
- package/daemon/dist/domain/restore-guidance.js +21 -5
- package/daemon/dist/domain/restore-guidance.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +1 -1
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.js +6 -29
- package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +3 -0
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +6 -0
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +4 -2
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +4 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +12 -2
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +11 -0
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +13 -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/seat-attention-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.js +15 -1
- package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
- package/daemon/dist/domain/seat-cwd-preparation.d.ts +22 -0
- package/daemon/dist/domain/seat-cwd-preparation.d.ts.map +1 -0
- package/daemon/dist/domain/seat-cwd-preparation.js +107 -0
- package/daemon/dist/domain/seat-cwd-preparation.js.map +1 -0
- package/daemon/dist/domain/seat-effort.d.ts +4 -3
- package/daemon/dist/domain/seat-effort.d.ts.map +1 -1
- package/daemon/dist/domain/seat-effort.js +21 -3
- package/daemon/dist/domain/seat-effort.js.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.d.ts +36 -2
- package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.js +206 -15
- package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/daemon/dist/domain/seat-restart-in-place.d.ts +14 -0
- package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
- package/daemon/dist/domain/seat-restart-in-place.js +59 -3
- package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
- package/daemon/dist/domain/seat-status-service.d.ts +2 -0
- 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 +7 -1
- package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-structural-activity-service.js +9 -3
- package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
- package/daemon/dist/domain/session-name.d.ts +8 -0
- package/daemon/dist/domain/session-name.d.ts.map +1 -1
- package/daemon/dist/domain/session-name.js +12 -0
- package/daemon/dist/domain/session-name.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +78 -3
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +306 -15
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +1 -1
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/topology-converge.d.ts +1 -0
- package/daemon/dist/domain/topology-converge.d.ts.map +1 -1
- package/daemon/dist/domain/topology-converge.js +1 -0
- package/daemon/dist/domain/topology-converge.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +14 -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 +4 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/wake-resolve-service.d.ts +1 -0
- package/daemon/dist/domain/wake-resolve-service.d.ts.map +1 -1
- package/daemon/dist/domain/wake-resolve-service.js +10 -0
- package/daemon/dist/domain/wake-resolve-service.js.map +1 -1
- package/daemon/dist/domain/wake-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/wake-resolver.js +7 -0
- package/daemon/dist/domain/wake-resolver.js.map +1 -1
- package/daemon/dist/domain/watchdog-delivery.d.ts +29 -0
- package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-delivery.js +113 -0
- package/daemon/dist/domain/watchdog-delivery.js.map +1 -0
- package/daemon/dist/domain/watchdog-policy-engine.d.ts +60 -1
- package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.js +154 -28
- package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
- package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-scheduler.js +6 -1
- package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
- package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-instance-store.js +6 -2
- package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
- package/daemon/dist/routes/attention.d.ts.map +1 -1
- package/daemon/dist/routes/attention.js +41 -1
- package/daemon/dist/routes/attention.js.map +1 -1
- package/daemon/dist/routes/compaction.js +1 -1
- package/daemon/dist/routes/compaction.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +3 -1
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/restore-check.d.ts.map +1 -1
- package/daemon/dist/routes/restore-check.js +19 -1
- package/daemon/dist/routes/restore-check.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +15 -2
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/daemon/dist/routes/sessions.js +42 -1
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +13 -2
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/server.d.ts +1 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +7 -4
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +41 -118
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +84 -0
- package/daemon/docs/reference/getting-started.md +135 -28
- package/daemon/docs/reference/publishing-a-rig-bundle.md +5 -2
- package/daemon/docs/reference/quickstart.md +187 -0
- package/daemon/docs/reference/refocus-channel.md +11 -1
- package/daemon/docs/reference/rig-spec.md +5 -5
- package/daemon/docs/reference/rosters.md +29 -2
- package/daemon/docs/reference/slack-app-setup.md +47 -17
- package/daemon/docs/reference/whats-new.md +65 -167
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -0
- package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -0
- package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -0
- package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -0
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -0
- package/daemon/specs/agents/design/product-designer/agent.yaml +1 -0
- package/daemon/specs/agents/development/implementer/agent.yaml +1 -0
- package/daemon/specs/agents/development/qa/agent.yaml +1 -0
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -0
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -0
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -0
- package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
- package/daemon/specs/agents/research/analyst/agent.yaml +1 -0
- package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -0
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -0
- package/dist/build-info.js +3 -3
- package/dist/client.d.ts +7 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +28 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/ask.d.ts.map +1 -1
- package/dist/commands/ask.js +13 -3
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +14 -0
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/chatroom.d.ts.map +1 -1
- package/dist/commands/chatroom.js +1 -0
- package/dist/commands/chatroom.js.map +1 -1
- package/dist/commands/compact.d.ts.map +1 -1
- package/dist/commands/compact.js +5 -4
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +4 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +47 -23
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/grow.d.ts.map +1 -1
- package/dist/commands/grow.js +24 -7
- package/dist/commands/grow.js.map +1 -1
- package/dist/commands/provider.d.ts.map +1 -1
- package/dist/commands/provider.js +43 -7
- package/dist/commands/provider.js.map +1 -1
- package/dist/commands/ps.d.ts +2 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +12 -1
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/reconcile-session.d.ts.map +1 -1
- package/dist/commands/reconcile-session.js +25 -4
- package/dist/commands/reconcile-session.js.map +1 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +20 -1
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/roster.d.ts +2 -1
- package/dist/commands/roster.d.ts.map +1 -1
- package/dist/commands/roster.js +10 -5
- package/dist/commands/roster.js.map +1 -1
- package/dist/commands/scope.js +1 -1
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/seat.d.ts.map +1 -1
- package/dist/commands/seat.js +75 -8
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/slack.d.ts.map +1 -1
- package/dist/commands/slack.js +14 -1
- package/dist/commands/slack.js.map +1 -1
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +8 -1
- package/dist/commands/ui.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +4 -3
- package/dist/commands/usage.js.map +1 -1
- package/dist/config-store.d.ts +2 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +5 -0
- package/dist/config-store.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +11 -3
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/front-door.d.ts.map +1 -1
- package/dist/front-door.js +3 -1
- package/dist/front-door.js.map +1 -1
- package/dist/lib/model-observation.d.ts +13 -0
- package/dist/lib/model-observation.d.ts.map +1 -0
- package/dist/lib/model-observation.js +25 -0
- package/dist/lib/model-observation.js.map +1 -0
- package/dist/local-daemon-owner.d.ts +28 -0
- package/dist/local-daemon-owner.d.ts.map +1 -0
- package/dist/local-daemon-owner.js +98 -0
- package/dist/local-daemon-owner.js.map +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +1 -0
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -1
- package/tui/dist/attention/attention-model.js +6 -5
- package/tui/dist/attention/attention-model.js.map +1 -1
- package/tui/dist/attention/source-continuity.d.ts.map +1 -1
- package/tui/dist/attention/source-continuity.js +2 -0
- package/tui/dist/attention/source-continuity.js.map +1 -1
- package/tui/dist/terminals/open-window.d.ts +11 -1
- package/tui/dist/terminals/open-window.d.ts.map +1 -1
- package/tui/dist/terminals/open-window.js +47 -2
- package/tui/dist/terminals/open-window.js.map +1 -1
- package/tui/dist/usage/usage-model.d.ts +2 -0
- package/tui/dist/usage/usage-model.d.ts.map +1 -1
- package/tui/dist/usage/usage-model.js +38 -3
- package/tui/dist/usage/usage-model.js.map +1 -1
- package/ui/dist/assets/{index-Cfbtfd9G.js → index-CVgod3Pm.js} +1 -1
- package/ui/dist/index.html +1 -1
|
@@ -301,46 +301,76 @@ decisions, and posts its own replies.
|
|
|
301
301
|
it with `host.name`).
|
|
302
302
|
- **The hub's own channels** are handled on the hub, as before. A channel can be relayed to one
|
|
303
303
|
machine only, and never the hub's own default channel.
|
|
304
|
+
- **Missed messages:** each machine recovers the channels it owns: the hub its own channels, and
|
|
305
|
+
every other machine its default channel and its channel map's (the hub never recovers a channel
|
|
306
|
+
it relays). See [Reconnect recovery and status](#reconnect-recovery-and-status).
|
|
304
307
|
- **Not covered yet:** `rig slack verify` on the hub doesn't check the app's membership in relayed
|
|
305
|
-
channels
|
|
308
|
+
channels.
|
|
306
309
|
|
|
307
310
|
## Reconnect recovery and status
|
|
308
311
|
|
|
309
312
|
The daemon scans available top-level messages and replies broadcast with **Also send to
|
|
310
|
-
channel** in the
|
|
311
|
-
|
|
312
|
-
|
|
313
|
+
channel** in the channels this machine owns: its default channel and its channel map's, except a
|
|
314
|
+
channel it relays to another machine. It also scans replies in the threads it tracks in those
|
|
315
|
+
channels whose root was posted, or which closed, within the last seven days. A root's age is its
|
|
316
|
+
Slack posting time, so rebuilding the thread map doesn't make an old thread eligible again. An old
|
|
317
|
+
thread that closed within seven days is scanned from its root, so this isn't a seven-day history
|
|
318
|
+
limit. Missed replies in older open threads aren't caught up; live delivery is unchanged.
|
|
319
|
+
|
|
320
|
+
The hub scans after a Socket Mode connection and on its existing five-minute retry cadence. A
|
|
321
|
+
machine the hub relays to scans every five minutes, and recovers only the channels it owns that the
|
|
322
|
+
hub has relayed it an event for. Each such channel's coverage starts when its first relayed event
|
|
323
|
+
arrives, and is kept across restarts, so a restart needs no new event. A channel the machine no
|
|
324
|
+
longer owns isn't scanned, and a machine nothing is relayed to never reads its channels' history.
|
|
325
|
+
|
|
326
|
+
Broadcast replies keep their thread's routing. Recovered tasks say **Recovered after a gap** and
|
|
327
|
+
show the original Slack posting time. A recovered thread reply lands as a reply in its thread,
|
|
328
|
+
marked late, and never answers a decision, even one still open: the seat reads it and decides. A
|
|
329
|
+
recovered broadcast reply does the same in every channel except the default channel of the machine
|
|
330
|
+
that holds the Socket Mode connection, where it behaves as before; a relayed machine's default
|
|
331
|
+
channel counts as newly covered. A dead-lettered recovered reply keeps that mark when it's retried.
|
|
313
332
|
They use the same sender admission, routing, attachment handling, fixed identity
|
|
314
333
|
and dead-letter path as live messages. A durable dead letter is custody of a
|
|
315
334
|
failed delivery, not successful delivery.
|
|
316
335
|
|
|
317
336
|
Recovery keeps a per-channel checkpoint across reconnects, restarts and channel
|
|
318
|
-
switches.
|
|
319
|
-
channel landing; without such evidence it starts at feature adoption.
|
|
320
|
-
history is unknown.**
|
|
337
|
+
switches. For the hub's default channel it initializes once from the newest retained accepted
|
|
338
|
+
channel landing; without such evidence it starts at feature adoption. Every other channel starts
|
|
339
|
+
when recovery first adopts it. **Older history is unknown.** A tracked thread's checkpoint starts
|
|
340
|
+
at its root, so its first scan reads the whole thread; replies that already landed are recognized
|
|
341
|
+
and not delivered twice. New live messages never move the recovery checkpoint. A
|
|
321
342
|
partial scan resumes its saved interval; only an exhausted interval advances the
|
|
322
|
-
covered boundary.
|
|
343
|
+
covered boundary. The checkpoint moves past a message once it landed, was a duplicate, was
|
|
344
|
+
dead-lettered, was refused because its sender isn't admitted, or was skipped as a kind inbound
|
|
345
|
+
doesn't take (a bot's post, an edit or join, an empty message). Each new interval ends five seconds before the local clock to
|
|
323
346
|
allow recent messages to become visible; larger clock skew or visibility lag is
|
|
324
347
|
not covered by that margin. A corrupt or unreadable checkpoint leaves recovery unavailable
|
|
325
348
|
and preserves the existing file; live inbound continues.
|
|
326
349
|
|
|
327
|
-
Each pass admits at most four
|
|
328
|
-
five-second
|
|
350
|
+
Each pass admits at most four history calls, 100 entries and 15 seconds of work, with a
|
|
351
|
+
five-second request ceiling. Channels and threads take turns within that one budget, so with many
|
|
352
|
+
tracked threads each thread is scanned every few passes; `rig slack status` shows how far behind
|
|
353
|
+
the oldest waiting thread is. Work already started on a message, such as
|
|
329
354
|
an attachment transfer, is not cancelled by these limits or by a stop, and a new
|
|
330
|
-
pass waits for it to finish. Rate limits retain Slack's Retry-After across restart
|
|
355
|
+
pass waits for it to finish. Rate limits retain Slack's Retry-After across restart, and hold back
|
|
356
|
+
only the method Slack limited (channel history or thread replies).
|
|
331
357
|
Transport and server failures use a five-second backoff unless Slack supplies Retry-After.
|
|
332
358
|
When Slack reports a plan history limit, recovery still lands the available page
|
|
333
359
|
and advances normally, retaining an older-history limitation in status across restarts.
|
|
334
360
|
Missing bot credentials, history scope, membership, retention limits and API
|
|
335
|
-
failures appear as recovery limitations.
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
361
|
+
failures appear as recovery limitations. A tracked thread Slack can't find stays incomplete in
|
|
362
|
+
status, with no further call, until its thread mapping changes or the daemon restarts or rewires
|
|
363
|
+
the connector; that isn't proof the thread was deleted. No additional scope is required to keep
|
|
364
|
+
live delivery working. Threads nobody tracks, older open threads, threads closed more than seven
|
|
365
|
+
days ago and other channels remain outside this recovery scope; global chronological order is
|
|
366
|
+
not promised. This change does not replay intervals already checkpointed before broadcast-reply
|
|
367
|
+
recovery was added.
|
|
339
368
|
|
|
340
369
|
`rig slack status` retains local configuration checks and adds a bounded daemon
|
|
341
|
-
snapshot: socket state/generation, last event, recovery interval/state/reason
|
|
370
|
+
snapshot: socket state/generation, last event, recovery interval/state/reason for each
|
|
371
|
+
channel, a thread line (tracked, scanned, waiting and why any are backing off or incomplete),
|
|
342
372
|
retry time and accepted/dead-lettered recovery counts since the connector last
|
|
343
|
-
started (they reset when it is enabled or disabled, and when the daemon restarts).
|
|
373
|
+
started, including threads that have since left the window (they reset when it is enabled or disabled, and when the daemon restarts).
|
|
344
374
|
It also reports the durable dead-letter backlog: the retained records for inbound messages,
|
|
345
375
|
reactions and click answers that await retry, counted from both dead-letter files so the number
|
|
346
376
|
survives a restart, and shown as unknown with a reason (and no count) when a file cannot be read.
|
|
@@ -1,189 +1,87 @@
|
|
|
1
|
-
# What changed in OpenRig 0.6.
|
|
1
|
+
# What changed in OpenRig 0.6.14
|
|
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.14. It lists only what behaves differently from
|
|
4
|
+
0.6.13 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
|
|
8
|
-
after an upgrade it can still hold the previous version's note.
|
|
8
|
+
after an upgrade it can still hold the previous version's note. Coming from 0.6.12 or earlier, also read 0.6.13's
|
|
9
|
+
release notes: its changes and migration `117` arrive with this upgrade.
|
|
9
10
|
|
|
10
11
|
## After the upgrade
|
|
11
12
|
|
|
12
|
-
- **Restart the daemon** (`rig daemon stop`, then `rig daemon start`).
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
10 to 12 MB on a long-running install); and rebuild the Slack thread map. There are no migrations `102` or `106`.
|
|
17
|
-
- **Claude seats now run the openrig-core plugin's hooks.** The bundled plugin goes from 0.1.9 to 0.1.13. A Claude
|
|
18
|
-
seat whose plugins include `openrig-core` (every shipped agent spec selects it) starts with `CLAUDE_CODE_PLUGIN_DIRS`
|
|
19
|
-
pointing at OpenRig's copy, so the activity relay, the compaction save and restore hooks and refocus actually run. It
|
|
20
|
-
needs Claude Code 2.1.280 or later, which nothing checks. A running seat picks it up at its next launch, restore or
|
|
21
|
-
handover. The refocus hook may take up to 60 seconds, so a hung refocus can hold a prompt that long.
|
|
22
|
-
- **Six new settings, all off except one:** `output.whoami_peers` (8, used only while `output.compact` is on),
|
|
23
|
-
`bundle.services_enabled`, `provider.subscription_moves`, `usage.pi_cost_facts`, `usage.pi_openrouter_charge` and
|
|
24
|
-
`transport.verify_input_box`. See "Off by default" below.
|
|
13
|
+
- **Restart the daemon** (`rig daemon stop`, then `rig daemon start`). No migration runs. One setting is added,
|
|
14
|
+
`transport.local_user_guard`, off by default (see below).
|
|
15
|
+
- **The bundled openrig-core plugin goes from 0.1.14 to 0.1.15.** Installed copies are replaced and carry refocus's own
|
|
16
|
+
notes lookup.
|
|
25
17
|
|
|
26
18
|
## Output that changed shape
|
|
27
19
|
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
unconfirmed"), `uncertain` or `not_sent`. "Submitted" means `/compact` and Enter reached the seat, not that compaction
|
|
35
|
-
ran.
|
|
36
|
-
- **`rig capture --lines N --json`** adds `activity: "unknown"` and `activityNote` when lines were cut.
|
|
37
|
-
- **`rig start --last --json`** carries `keptDown` (always) and `warnings` (`seat_status_unreadable`).
|
|
38
|
-
- **`rig queue show <id> --full`** on a closed row adds `closingTransition`; plain `rig queue show` on such a row reads
|
|
39
|
-
`readView.complete: false` and lists it in `omittedFields`. `rig queue show` returns `resolution` when a close stored
|
|
40
|
-
one.
|
|
41
|
-
- **After `rig down`,** `rig ps`, the TUI and the rig summary read the rig `stopped`, not recoverable, and
|
|
42
|
-
`hasLiveAgents` can read `false`.
|
|
43
|
-
- **`rig seat status`** reads `Typing guard: on (hold)` for hold, and its JSON's `desired` and `effective` mean hold only;
|
|
44
|
-
`desiredMode` and `effectiveMode` give the mode.
|
|
45
|
-
- **`rig usage top`** measures tokens and rates within one conversation and one window, so figures can drop and more
|
|
46
|
-
seats read `insufficient_samples`.
|
|
47
|
-
- **The execution view** binds a row to a mission by its exact `mission:` tag first; `q1_lanes[].waiting` and
|
|
48
|
-
`folded.merge_report` are new.
|
|
49
|
-
- **Smaller:** `rig create --json` carries `detail` on failure; `rig status --json` is new; `rig mcp serve` lists 23 tools
|
|
50
|
-
(five queue tools added); a JSON body of `null` gets 400 `invalid_json`; `GET /api/events` takes `?replay=`; a Slack
|
|
51
|
-
seat post's sender line ends `on <host id>`; `rig ps --nodes` `resumeCommand` can carry `--no-daemon`.
|
|
20
|
+
- **`rig ask --wake`** on a seat whose runtime isn't Claude or Codex prints `Wake runtime '<runtime>' … is not
|
|
21
|
+
supported. Supported runtimes are claude and codex.` A `member@rig` target exits 2 (the daemon refuses it); a raw-id
|
|
22
|
+
`--runtime` value exits 1 (the CLI refuses it). No wake starts.
|
|
23
|
+
- **`/healthz`** gains `euid`, the daemon's effective user ID, beside `pid`, whether or not the Mac check is on.
|
|
24
|
+
- **`rig compact`** (manual) waits up to 240 seconds for its result, up from 180, because preparation now has 180
|
|
25
|
+
seconds, up from 120.
|
|
52
26
|
|
|
53
27
|
## Seats and restore
|
|
54
28
|
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
- **
|
|
66
|
-
|
|
67
|
-
bare shell reads `attention_required`.
|
|
68
|
-
- **A Codex fork whose new conversation ID arrives late** stops at `attention_required` with its startup context kept;
|
|
69
|
-
let it finish starting, then run `rig seat continue <seat>`. A handover to a Codex fork can complete with `Fork id:
|
|
70
|
-
PENDING`.
|
|
71
|
-
- **A seat whose startup failed for a recoverable reason** becomes ready after a successful send or capture.
|
|
72
|
-
- **`rig launch` takes a rig's name as well as its ID;** a name two active rigs share stops with `rig_ambiguous`.
|
|
73
|
-
- **`rig add`, single-seat `rig launch` and `rig launch --seats` wait up to 120 seconds.** A timeout still isn't a
|
|
74
|
-
rollback.
|
|
75
|
-
- **A runtime `--version` check gives up after 30 seconds.** `rig bootstrap` blocks on a runtime that's installed but
|
|
76
|
-
fails its check, reported apart from one that's missing; `rig up`'s preflight fails a Claude, Codex or OMP check that
|
|
77
|
-
doesn't answer (a warning for Pi).
|
|
78
|
-
- **Claude login detection:** only a current refusal reads `login_required`, not the "Not logged in" footer alone.
|
|
79
|
-
- **Model pins:** `fable` now names `claude-fable-5-1`, a trailing `[1m]` is set aside, and pinned Pi seats are checked
|
|
80
|
-
(a `:high`-style thinking suffix is accepted).
|
|
81
|
-
- **A custom permission policy saved with CRLF line endings** now takes effect at the next launch or restore, instead
|
|
82
|
-
of the advisory floor.
|
|
83
|
-
- **`rig scope mission create`** writes `status: planned`; set it `active` to count it in `rig proof show --project`.
|
|
84
|
-
With `--workspace <project>`, missions go under the project's declared `missions.root`.
|
|
85
|
-
|
|
86
|
-
## Sends, wakes and the queue
|
|
87
|
-
|
|
88
|
-
- **A send to a pane in tmux copy or view mode** leaves the mode and delivers; `pane_in_mode` means the pane couldn't
|
|
89
|
-
leave its mode. Leave it in that pane, then send again.
|
|
90
|
-
- **`rig send --dangerously-interact` types exactly what you give it.** Enter is added only for a complete answer
|
|
91
|
-
staged in a recognised Claude Code or Codex input box; anywhere else, put CR in the payload. With `--verify` it reads
|
|
92
|
-
unchecked.
|
|
93
|
-
- **A Codex seat reads "needs you" only when a real prompt is visible;** a pending permission request reads
|
|
94
|
-
`permission_request_pending` first, and an unreadable pane gets `permission_request_unverified` after a grace.
|
|
95
|
-
Codex's `»` prompt is recognised.
|
|
96
|
-
- **Managed `/compact` is short enough to run and is sent only to an idle seat.** Confirm compaction by effect: the
|
|
97
|
-
restore request, or the drop in context.
|
|
98
|
-
- **A held-back (`retained`) wake doesn't use up a one-shot park timer;** it's tried again at the interval. You don't
|
|
99
|
-
need to re-arm after one.
|
|
100
|
-
- **A retired watchdog doesn't deliver a late wake.** A row parked on its owner's own repeating reminder reads
|
|
101
|
-
`servedByOwnReminder` in `rig parked` and draws no extra parked-owner wake.
|
|
102
|
-
- **`rig queue update <id> --summary "<text>"`** alone corrects a row's subject. Close with **`--resolution
|
|
103
|
-
"<outcome>"`** to store the outcome on the row.
|
|
104
|
-
- **`rig remove` and `rig shrink`** keep a seat that gets work while stopping (409, `retained: true`) unless
|
|
105
|
-
`--fallback` takes it. A stale `rig unclaim` is refused with `session_not_current`.
|
|
29
|
+
- **A seat that refuses every send with "Managed pane identity unavailable or changed; no input written."** because an
|
|
30
|
+
older OpenRig never recorded its tmux pane can be repaired in place: `rig reconcile-session <seat>
|
|
31
|
+
--repair-missing-pane --no-launch`. It fills only the missing pane and keeps the session, resume token and occupant
|
|
32
|
+
generation; the result names the same session, with continuity unverified. It refuses, writing nothing, with
|
|
33
|
+
`repair_not_applicable` (the binding already has a pane), `pane_ambiguous` (more than one pane or window),
|
|
34
|
+
`pane_missing` (no PID), `guard_target_changed`, `guard_operation_in_progress`, `typing_guard_enabled` or
|
|
35
|
+
`repair_timed_out`. Against an older daemon it reads `repair_missing_pane_unsupported` and never adopts. It records no
|
|
36
|
+
event.
|
|
37
|
+
- **A manual `rig compact` whose preparation stops at an ordinary approval** keeps waiting within its deadline instead
|
|
38
|
+
of giving up. OpenRig never answers the approval: the person, or an agent allowed to, answers it.
|
|
39
|
+
- **Refocus resolves each ancestor's notes file itself** (`NOTES.md`, then `MISSION_NOTES.md`) instead of starting `rig
|
|
40
|
+
scope resolve-notes` per ancestor. Its output, budgets and settings are unchanged.
|
|
106
41
|
|
|
107
42
|
## New things you can do
|
|
108
43
|
|
|
109
|
-
- **
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
one launch. Never put secrets there.
|
|
115
|
-
- **Scope a workflow run:** `--project`, `--mission`, `--slice` and `--tags` on `rig workflow instantiate` and `run`;
|
|
116
|
-
write a target as `member@{rig}` to follow the bound rig.
|
|
117
|
-
- **Read cost:** `rig usage cost [--seat <session>] [--json]`. A missing figure is never $0, and Claude's figure is an
|
|
118
|
-
estimate, not an invoice.
|
|
119
|
-
- **Hand work over without a shell:** `rig mcp serve` with `OPENRIG_SESSION_NAME` set gives `rig_queue_create`,
|
|
120
|
-
`rig_queue_show`, `rig_queue_list`, `rig_queue_claim` and `rig_queue_update`. Nothing wakes that agent.
|
|
121
|
-
- **`rig status --json`:** treat `daemon.reachable: null` as unconfirmed, not down.
|
|
122
|
-
- OpenRig 0.6.12 adds `rig community-harness list` for installed community-harness presets, showing their maintainer
|
|
123
|
-
and declared limits. These harnesses are not tested by OpenRig. Support is launch-only: no resume or fork, no
|
|
124
|
-
resource projection or startup-file delivery, and identity remains unconfirmed. A quiet screen is not proof that the
|
|
125
|
-
seat is idle. (#1392, #1518)
|
|
126
|
-
- **Guidance:** the `rigs` skill offers to join the team before the first operator message, and offers Codex users one
|
|
127
|
-
removable rules file; `delegating-work` says to brief a peer by the model `rig ps --nodes --json` shows; the operator
|
|
128
|
-
reads `$OPENRIG_HOME/reference/keeping-a-watch.md` when asked to watch or remind, including a low-allowance warning.
|
|
129
|
-
- User-visible text says "harness" for the agent software around a model, and "community harness" for one an outside
|
|
130
|
-
contributor maintains; `docs/reference/topology-naming.md` defines the terms. (#1506)
|
|
44
|
+
- **Repair a missing pane without adopting:** `rig reconcile-session <seat> --repair-missing-pane --no-launch`.
|
|
45
|
+
- **Point a person at a page written for them:** `docs/reference/quickstart.md` ("Getting started") is the first-use
|
|
46
|
+
page, with a glossary. `docs/reference/getting-started.md` is now titled "OpenRig setup reference" and opens with what
|
|
47
|
+
the agent doing the setup needs; its sections and anchors are unchanged, so `rig context get
|
|
48
|
+
reference/getting-started.md#…` lookups still work.
|
|
131
49
|
|
|
132
50
|
## Off by default
|
|
133
51
|
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
- **`bundle.services_enabled`**, **`transport.verify_input_box`**, the per-seat draft-aware typing guard (`rig seat
|
|
144
|
-
set-typing-guard <seat> --mode draft-aware`), `rig bundle create --include-login-files`, `OPENRIG_TMUX_CONTROL=1`
|
|
145
|
-
and `OPENRIG_REFOCUS_BUDGET_MS` (4500 to 52000) each act only when chosen.
|
|
146
|
-
- **The daemon runs tmux without `/bin/sh`** on Linux and macOS; `OPENRIG_TMUX_SHELL=1` at daemon start keeps the old
|
|
147
|
-
path.
|
|
52
|
+
- **A Mac local-user check.** On a Mac shared by several accounts, `rig config set transport.local_user_guard true` (or
|
|
53
|
+
`OPENRIG_TRANSPORT_LOCAL_USER_GUARD=true` in the CLI's environment) makes the CLI refuse a local daemon another account
|
|
54
|
+
runs. It compares the PID and effective UID the daemon reports in `/healthz` with two `ps` readings and a second
|
|
55
|
+
health response, and refuses only when they agree on another account; the refusal names `rig daemon start --port
|
|
56
|
+
<unused-port>`. Missing, disagreeing or timed-out evidence, and an older daemon without `euid`, keep today's
|
|
57
|
+
behaviour. No daemon restart is needed. Explicit `OPENRIG_URL` targets and registered remote hosts keep their routing,
|
|
58
|
+
later browser or TUI connections aren't checked, and with it on `sudo rig …` against a user-owned daemon refuses. It
|
|
59
|
+
isn't authentication: it trusts the daemon's own report. Details: `rig context get
|
|
60
|
+
reference/getting-started.md#optional-mac-local-user-check`.
|
|
148
61
|
|
|
149
62
|
## What to stop doing
|
|
150
63
|
|
|
151
|
-
- **
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
- **
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
-
|
|
168
|
-
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
the
|
|
172
|
-
- **
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
- **`rig seat restart --keep-conversation` supports Linux only,** and hasn't been re-run on 0.6.12.
|
|
176
|
-
- **The rig status API can call a running rig `blocked`** because of one seat that isn't running: it folds a restore
|
|
177
|
-
forecast into current status.
|
|
178
|
-
- **A Codex seat can keep reading as at its usage limit** in a constructed screen case not seen in a real session.
|
|
179
|
-
- **After `rig scope slice create` says it couldn't verify membership, the slice was kept.** Check `mission.yaml` before
|
|
180
|
-
creating it again.
|
|
181
|
-
- **A Claude Code seat whose permission request was approved automatically can still read "needs input";** the Codex
|
|
182
|
-
case is fixed.
|
|
183
|
-
- **Codex team seats aren't asked before lifecycle commands yet.**
|
|
184
|
-
- **The send gate trusts the most recently recorded hook;** `rig capture` shows the real screen.
|
|
185
|
-
- **A launched team still writes into its working folder;** the operator says what changes before you agree.
|
|
186
|
-
- **After a restart, `rig status` shows `Kernel: skipped` whatever the kernel seats' state.** Read them with
|
|
187
|
-
`rig ps --nodes --rig kernel --full`.
|
|
188
|
-
- **`rig tui --shared` still attaches on the default tmux server,** so use `rig tui` when the daemon runs on a non-default
|
|
189
|
-
tmux socket.
|
|
64
|
+
- **Don't use plain `rig reconcile-session` to fix a launched seat's missing pane.** It adopts the seat into a new
|
|
65
|
+
session with no resume token; use `--repair-missing-pane --no-launch`.
|
|
66
|
+
- **Don't abandon a manual `rig compact` because preparation hit an approval.** Answer it, or ask the person to, within
|
|
67
|
+
the 180 seconds.
|
|
68
|
+
- **Don't try `rig ask --wake` on a Pi or custom seat.** Use `rig ask` without `--wake` to search what it said, or send
|
|
69
|
+
to the live seat.
|
|
70
|
+
|
|
71
|
+
## Known gaps in 0.6.14
|
|
72
|
+
|
|
73
|
+
- **The compaction and refocus fixes** are tested without a native compaction or a loaded machine: confirm a
|
|
74
|
+
compaction by its restore request or the drop in context, and check that a restored seat is really working.
|
|
75
|
+
- **The pane repair refuses while typing protection is on.** The compaction refusal for a protected seat whose pane
|
|
76
|
+
isn't recorded still suggests plain `rig reconcile-session <seat> --no-launch`, which adopts. For a running launched
|
|
77
|
+
seat whose pane was never recorded, use `rig reconcile-session <seat> --repair-missing-pane --no-launch` instead;
|
|
78
|
+
it needs typing protection off, so turn protection off only if the person agrees. A delivery held from before the
|
|
79
|
+
repair can still refuse.
|
|
80
|
+
- **`rig context get reference/quickstart.md` doesn't resolve:** the page isn't in the reference context pack. Read it
|
|
81
|
+
from the package's `docs/reference/` or the repository.
|
|
82
|
+
- **On a Mac with more than one user account,** a second user's `rig` commands can reach the first user's daemon on
|
|
83
|
+
its default port (7433) unless `transport.local_user_guard` is on. The check trusts the daemon's own report, identity
|
|
84
|
+
can change between the check and the connection, and direct HTTP clients aren't covered.
|
|
85
|
+
- **0.6.13's other known gaps still apply:** a fresh in-place Claude handover can report ready early when the screen,
|
|
86
|
+
pane or process can't be read or proven; one Slack app across machines hasn't run on two real machines, and Slack
|
|
87
|
+
recovery doesn't catch up older open threads; `rig seat set-cwd` checks the new folder once.
|
package/dist/build-info.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// GENERATED by scripts/build-package.sh — the packaged build-identity stamp.
|
|
2
2
|
export const BUILD_INFO = {
|
|
3
|
-
semver: "0.6.
|
|
4
|
-
commit: "
|
|
3
|
+
semver: "0.6.14",
|
|
4
|
+
commit: "df1c1517f03a403fb468523be1c563d489209a1d",
|
|
5
5
|
dirty: false,
|
|
6
|
-
builtAt: "2026-10-
|
|
6
|
+
builtAt: "2026-10-21T05:06:10Z",
|
|
7
7
|
};
|
|
8
8
|
export function stampFields(info = BUILD_INFO) {
|
|
9
9
|
if (!info.commit) return {};
|
package/dist/client.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type LocalDaemonOwner } from "./local-daemon-owner.js";
|
|
2
|
+
export { ForeignLocalDaemonError } from "./local-daemon-owner.js";
|
|
1
3
|
export declare function terminalAuthHeaders(): Record<string, string>;
|
|
2
4
|
/** The header carrying the caller's seat identity, derived ONCE at the transport chokepoint. */
|
|
3
5
|
export declare const SENDER_IDENTITY_HEADER = "X-OpenRig-Session";
|
|
@@ -59,6 +61,7 @@ interface DaemonRequestOptions {
|
|
|
59
61
|
headers?: Record<string, string>;
|
|
60
62
|
}
|
|
61
63
|
interface DaemonClientOptions {
|
|
64
|
+
ownerProbe?: (baseUrl: string, timeoutMs?: number) => Promise<LocalDaemonOwner>;
|
|
62
65
|
fetchImpl?: typeof fetch;
|
|
63
66
|
timeoutMs?: number;
|
|
64
67
|
}
|
|
@@ -66,6 +69,7 @@ export declare class DaemonClient {
|
|
|
66
69
|
readonly baseUrl: string;
|
|
67
70
|
private fetchImpl;
|
|
68
71
|
private timeoutMs;
|
|
72
|
+
private ownerProbe;
|
|
69
73
|
/** Set by remoteDaemonClient; absent origin is labelled explicitly on remote requests. */
|
|
70
74
|
originSelfHostId?: string;
|
|
71
75
|
remoteTarget: boolean;
|
|
@@ -73,6 +77,9 @@ export declare class DaemonClient {
|
|
|
73
77
|
private originUnknown;
|
|
74
78
|
private identityHeaders;
|
|
75
79
|
constructor(baseUrl?: string, options?: DaemonClientOptions);
|
|
80
|
+
/** Shared with raw CLI data readers. Constructor URLs alone do not establish explicit intent. */
|
|
81
|
+
localOwnerCheckEnabled(): boolean;
|
|
82
|
+
assertLocalOwner(timeoutMs?: number): Promise<void>;
|
|
76
83
|
get<T = unknown>(path: string, options?: DaemonRequestOptions): Promise<DaemonResponse<T>>;
|
|
77
84
|
getText(path: string, options?: DaemonRequestOptions): Promise<DaemonResponse<string>>;
|
|
78
85
|
post<T = unknown>(path: string, body?: unknown, options?: DaemonRequestOptions): Promise<DaemonResponse<T>>;
|
|
@@ -84,5 +91,4 @@ export declare class DaemonClient {
|
|
|
84
91
|
private requestJson;
|
|
85
92
|
private requestText;
|
|
86
93
|
}
|
|
87
|
-
export {};
|
|
88
94
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAmD,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACjH,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMlE,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG5D;AAED,gGAAgG;AAChG,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASvF;AAED,sGAAsG;AACtG,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,EAChD,GAAG,EAAE,MAAM,EACX,gBAAgB,CAAC,EAAE,MAAM,GACxB,YAAY,CAKd;AAeD;gGACgG;AAChG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIpE;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,wEAAwE;IACxE,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAKhD;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,qBAAqB;gBAC/C,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBACjB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAMzC;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,UAAU,mBAAmB;IAC3B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChF,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD,qBAAa,YAAY;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAqE;IACvF,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,UAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,CAAkC;IACnD,OAAO,CAAC,aAAa,CAAS;YAEhB,eAAe;gBA+BjB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAyB3D,iGAAiG;IACjG,sBAAsB,IAAI,OAAO;IAU3B,gBAAgB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAI1F,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAItF,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAQ3G,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,SAAc,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAQ/K,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAQ7G,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAO7F,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAUlG,KAAK;YAoDL,WAAW;YAgBX,WAAW;CAK1B"}
|