@openrig/cli 0.6.6 → 0.6.7
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 +95 -28
- package/daemon/assets/claude-team-permissions.cjs +262 -0
- package/daemon/assets/onboarding/02-self-and-competent-action.md +20 -13
- package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus-health.cjs +41 -0
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +69 -12
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +13 -2
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +4 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -1
- package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +31 -4
- package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +24 -13
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -0
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +42 -0
- package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +6 -0
- package/daemon/assets/skills/rigs/SKILL.md +133 -0
- package/daemon/context-packs/help/help.md +48 -19
- 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 +218 -39
- package/daemon/context-packs/reference/getting-started.md +356 -212
- package/daemon/context-packs/reference/manifest.yaml +4 -1
- package/daemon/context-packs/reference/rig-spec.md +36 -11
- package/daemon/context-packs/reference/whats-new.md +134 -0
- 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/SKILL.md +13 -2
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/scripts/precompact-hook.mjs +4 -0
- 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 +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +19 -12
- package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +2 -2
- package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +2 -0
- 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/SKILL.md +31 -4
- package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +24 -13
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -0
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +42 -0
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
- package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +6 -0
- 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 +1 -1
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +23 -13
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-resume.js +17 -0
- package/daemon/dist/adapters/codex-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +2 -2
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -1
- package/daemon/dist/adapters/kernel-authority.js +29 -11
- package/daemon/dist/adapters/kernel-authority.js.map +1 -1
- package/daemon/dist/adapters/pi-readiness.d.ts +15 -0
- package/daemon/dist/adapters/pi-readiness.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-readiness.js +90 -0
- package/daemon/dist/adapters/pi-readiness.js.map +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.js +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner.js +13 -2
- package/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +9 -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 +4 -0
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/096_rig_install_root.d.ts +3 -0
- package/daemon/dist/db/migrations/096_rig_install_root.d.ts.map +1 -0
- package/daemon/dist/db/migrations/096_rig_install_root.js +5 -0
- package/daemon/dist/db/migrations/096_rig_install_root.js.map +1 -0
- package/daemon/dist/db/migrations/097_thread_part_map.d.ts +3 -0
- package/daemon/dist/db/migrations/097_thread_part_map.d.ts.map +1 -0
- package/daemon/dist/db/migrations/097_thread_part_map.js +20 -0
- package/daemon/dist/db/migrations/097_thread_part_map.js.map +1 -0
- package/daemon/dist/domain/activity-taxonomy.d.ts +7 -0
- package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -1
- package/daemon/dist/domain/activity-taxonomy.js.map +1 -1
- package/daemon/dist/domain/agent-activity-store.d.ts +12 -0
- package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
- package/daemon/dist/domain/agent-activity-store.js +55 -30
- package/daemon/dist/domain/agent-activity-store.js.map +1 -1
- package/daemon/dist/domain/agent-images/agent-image-types.d.ts +1 -1
- package/daemon/dist/domain/agent-images/agent-image-types.d.ts.map +1 -1
- package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/bootstrap-orchestrator.js +6 -4
- package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
- package/daemon/dist/domain/bundle-install-context.d.ts +2 -2
- package/daemon/dist/domain/bundle-install-context.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-install-context.js +16 -3
- package/daemon/dist/domain/bundle-install-context.js.map +1 -1
- package/daemon/dist/domain/bundle-types.d.ts +1 -1
- package/daemon/dist/domain/bundle-types.d.ts.map +1 -1
- package/daemon/dist/domain/chat-repository.d.ts +5 -0
- package/daemon/dist/domain/chat-repository.d.ts.map +1 -1
- package/daemon/dist/domain/chat-repository.js +8 -0
- package/daemon/dist/domain/chat-repository.js.map +1 -1
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +5 -4
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.d.ts +3 -0
- package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.js +8 -1
- package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +11 -0
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +42 -13
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/daemon/dist/domain/codex-thread-id.js +4 -2
- package/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/context-monitor.js +2 -0
- package/daemon/dist/domain/context-monitor.js.map +1 -1
- package/daemon/dist/domain/execution-view.d.ts.map +1 -1
- package/daemon/dist/domain/execution-view.js +57 -11
- package/daemon/dist/domain/execution-view.js.map +1 -1
- package/daemon/dist/domain/gateway/connections-projection.d.ts +4 -0
- package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/connections-projection.js +2 -0
- package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
- package/daemon/dist/domain/gateway/destination-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/destination-resolver.js +7 -4
- package/daemon/dist/domain/gateway/destination-resolver.js.map +1 -1
- package/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-readiness.js +23 -6
- package/daemon/dist/domain/gateway/human-readiness.js.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.d.ts +2 -2
- package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.js +2 -2
- package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/capabilities.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/capabilities.js +3 -1
- package/daemon/dist/domain/gateway/slack/capabilities.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/channel-map.d.ts +39 -0
- package/daemon/dist/domain/gateway/slack/channel-map.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/channel-map.js +114 -0
- package/daemon/dist/domain/gateway/slack/channel-map.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/config.d.ts +7 -0
- package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/config.js +19 -2
- package/daemon/dist/domain/gateway/slack/config.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts +24 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.js +104 -3
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.d.ts +7 -0
- package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.js +36 -0
- package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +30 -7
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.js +253 -51
- package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +90 -10
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +2 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.js +40 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.js +22 -2
- package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +14 -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 +27 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
- package/daemon/dist/domain/generated-file-hygiene.d.ts.map +1 -1
- package/daemon/dist/domain/generated-file-hygiene.js +7 -4
- package/daemon/dist/domain/generated-file-hygiene.js.map +1 -1
- package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
- package/daemon/dist/domain/managed-blocks.js +5 -2
- package/daemon/dist/domain/managed-blocks.js.map +1 -1
- package/daemon/dist/domain/markdown-address.d.ts.map +1 -1
- package/daemon/dist/domain/markdown-address.js +23 -6
- package/daemon/dist/domain/markdown-address.js.map +1 -1
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +36 -1
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +2 -2
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +30 -4
- 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 +1 -0
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/pane-binding-observation.d.ts +1 -0
- package/daemon/dist/domain/pane-binding-observation.d.ts.map +1 -1
- package/daemon/dist/domain/pane-binding-observation.js +3 -1
- package/daemon/dist/domain/pane-binding-observation.js.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.d.ts +6 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.js +12 -0
- package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
- package/daemon/dist/domain/ps-projection.d.ts +11 -9
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +15 -12
- 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 +39 -14
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-retention.d.ts +2 -2
- package/daemon/dist/domain/queue-retention.js +4 -4
- package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wait-backoff.js +6 -2
- package/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
- package/daemon/dist/domain/queue-waiting.d.ts.map +1 -1
- package/daemon/dist/domain/queue-waiting.js +7 -2
- package/daemon/dist/domain/queue-waiting.js.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.d.ts +15 -2
- package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.js +29 -6
- package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
- package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
- package/daemon/dist/domain/rehydrate-eligibility.js +5 -2
- package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
- package/daemon/dist/domain/reply-to-choice.d.ts +6 -2
- package/daemon/dist/domain/reply-to-choice.d.ts.map +1 -1
- package/daemon/dist/domain/reply-to-choice.js +9 -6
- package/daemon/dist/domain/reply-to-choice.js.map +1 -1
- package/daemon/dist/domain/restore-check-service.d.ts +5 -1
- package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
- package/daemon/dist/domain/restore-check-service.js +17 -3
- package/daemon/dist/domain/restore-check-service.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +3 -1
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +13 -4
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +1 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +8 -4
- 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 +19 -4
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-activity-service.js +16 -6
- package/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +9 -1
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/session-jsonl.d.ts.map +1 -1
- package/daemon/dist/domain/session-jsonl.js +10 -4
- package/daemon/dist/domain/session-jsonl.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +4 -20
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +37 -30
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/skill-audit.d.ts +19 -0
- package/daemon/dist/domain/skill-audit.d.ts.map +1 -1
- package/daemon/dist/domain/skill-audit.js +97 -5
- package/daemon/dist/domain/skill-audit.js.map +1 -1
- package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
- package/daemon/dist/domain/skill-catalog.js +9 -0
- package/daemon/dist/domain/skill-catalog.js.map +1 -1
- package/daemon/dist/domain/skill-mirror-drift.d.ts +6 -1
- package/daemon/dist/domain/skill-mirror-drift.d.ts.map +1 -1
- package/daemon/dist/domain/skill-mirror-drift.js +23 -12
- package/daemon/dist/domain/skill-mirror-drift.js.map +1 -1
- package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
- package/daemon/dist/domain/snapshot-repository.js +12 -32
- package/daemon/dist/domain/snapshot-repository.js.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +4 -1
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.js +14 -7
- package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
- package/daemon/dist/domain/terminal/terminal-provider.d.ts +9 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.d.ts +4 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.js +23 -11
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +21 -9
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +2 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/usage-samples-store.js +2 -2
- package/daemon/dist/domain/usage-samples-store.js.map +1 -1
- package/daemon/dist/domain/usage-series.d.ts.map +1 -1
- package/daemon/dist/domain/usage-series.js +42 -10
- package/daemon/dist/domain/usage-series.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-browser.js +2 -0
- package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/watchdog-due.d.ts +17 -0
- package/daemon/dist/domain/watchdog-due.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-due.js +45 -0
- package/daemon/dist/domain/watchdog-due.js.map +1 -0
- package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-scheduler.js +3 -7
- package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +15 -5
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +1 -1
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-step-trail-log.d.ts +6 -0
- package/daemon/dist/domain/workflow-step-trail-log.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-step-trail-log.js +11 -0
- package/daemon/dist/domain/workflow-step-trail-log.js.map +1 -1
- package/daemon/dist/domain/workspace/project-catalog.js +1 -1
- package/daemon/dist/domain/workspace/project-catalog.js.map +1 -1
- package/daemon/dist/gateway-slack-surface.d.ts +1 -0
- package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
- package/daemon/dist/gateway-slack-surface.js +2 -1
- package/daemon/dist/gateway-slack-surface.js.map +1 -1
- package/daemon/dist/index.d.ts +1 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +7 -7
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/routes/agent-images.js +5 -5
- package/daemon/dist/routes/agent-images.js.map +1 -1
- package/daemon/dist/routes/bootstrap-failure-response.d.ts +13 -0
- package/daemon/dist/routes/bootstrap-failure-response.d.ts.map +1 -0
- package/daemon/dist/routes/bootstrap-failure-response.js +52 -0
- package/daemon/dist/routes/bootstrap-failure-response.js.map +1 -0
- package/daemon/dist/routes/bundles.d.ts.map +1 -1
- package/daemon/dist/routes/bundles.js +23 -36
- package/daemon/dist/routes/bundles.js.map +1 -1
- package/daemon/dist/routes/chat.d.ts.map +1 -1
- package/daemon/dist/routes/chat.js +16 -1
- package/daemon/dist/routes/chat.js.map +1 -1
- package/daemon/dist/routes/restore-check.d.ts.map +1 -1
- package/daemon/dist/routes/restore-check.js +2 -0
- package/daemon/dist/routes/restore-check.js.map +1 -1
- package/daemon/dist/routes/rigs.js +2 -2
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/seat.js +13 -13
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.js +10 -10
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/skills.d.ts.map +1 -1
- package/daemon/dist/routes/skills.js +15 -7
- package/daemon/dist/routes/skills.js.map +1 -1
- package/daemon/dist/routes/terminal-ws.js +15 -2
- package/daemon/dist/routes/terminal-ws.js.map +1 -1
- package/daemon/dist/routes/terminal.d.ts.map +1 -1
- package/daemon/dist/routes/terminal.js +6 -4
- package/daemon/dist/routes/terminal.js.map +1 -1
- package/daemon/dist/routes/up.d.ts.map +1 -1
- package/daemon/dist/routes/up.js +5 -56
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +32 -7
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/dist/terminal/TerminalSessionBroker.d.ts.map +1 -1
- package/daemon/dist/terminal/TerminalSessionBroker.js +9 -1
- package/daemon/dist/terminal/TerminalSessionBroker.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +10 -10
- package/daemon/docs/reference/agent-startup-guide.md +7 -2
- package/daemon/docs/reference/bundle-formats.md +5 -3
- package/daemon/docs/reference/chain-file-convention.md +2 -2
- package/daemon/docs/reference/developing.md +1 -1
- package/daemon/docs/reference/edge-types.md +1 -1
- package/daemon/docs/reference/getting-started.md +356 -212
- package/daemon/docs/reference/help.md +48 -19
- package/daemon/docs/reference/non-interruptive-mode.md +7 -4
- package/daemon/docs/reference/project-workspace.md +2 -2
- package/daemon/docs/reference/publishing-a-rig-bundle.md +11 -8
- package/daemon/docs/reference/refocus-channel.md +14 -2
- package/daemon/docs/reference/rig-bundle.md +39 -19
- package/daemon/docs/reference/rig-spec.md +36 -11
- package/daemon/docs/reference/rosters.md +2 -1
- package/daemon/docs/reference/schemas/registry-entry.v1.schema.json +1 -1
- package/daemon/docs/reference/sdlc-conventions.md +4 -2
- package/daemon/docs/reference/slack-app-setup.md +65 -9
- package/daemon/docs/reference/whats-new.md +134 -0
- package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +19 -12
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +2 -2
- package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +2 -0
- package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +60 -0
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +105 -19
- package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +5 -2
- package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +44 -0
- package/dist/build-info.js +3 -3
- package/dist/cli-error.d.ts.map +1 -1
- package/dist/cli-error.js +11 -3
- package/dist/cli-error.js.map +1 -1
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/agent-image.js +2 -2
- package/dist/commands/agent-image.js.map +1 -1
- package/dist/commands/bundle.d.ts.map +1 -1
- package/dist/commands/bundle.js +5 -4
- package/dist/commands/bundle.js.map +1 -1
- package/dist/commands/chatroom.d.ts.map +1 -1
- package/dist/commands/chatroom.js +21 -1
- package/dist/commands/chatroom.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +4 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +14 -7
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +42 -0
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +4 -3
- package/dist/commands/gateway.js.map +1 -1
- package/dist/commands/package.d.ts.map +1 -1
- package/dist/commands/package.js +6 -3
- package/dist/commands/package.js.map +1 -1
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +6 -5
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +6 -3
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/restore-packet.d.ts.map +1 -1
- package/dist/commands/restore-packet.js +6 -4
- package/dist/commands/restore-packet.js.map +1 -1
- package/dist/commands/scope.js +5 -5
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/setup.d.ts +6 -15
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +121 -332
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +6 -1
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/slack.d.ts +5 -1
- package/dist/commands/slack.d.ts.map +1 -1
- package/dist/commands/slack.js +143 -6
- package/dist/commands/slack.js.map +1 -1
- package/dist/commands/stream.js +1 -1
- package/dist/commands/stream.js.map +1 -1
- package/dist/commands/terminal.d.ts +33 -0
- package/dist/commands/terminal.d.ts.map +1 -1
- package/dist/commands/terminal.js +30 -12
- package/dist/commands/terminal.js.map +1 -1
- package/dist/commands/tui.js +4 -4
- package/dist/commands/tui.js.map +1 -1
- package/dist/commands/workflow-follow.d.ts +1 -1
- package/dist/commands/workflow-follow.d.ts.map +1 -1
- package/dist/commands/workflow-follow.js +4 -3
- package/dist/commands/workflow-follow.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +30 -18
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.js +1 -1
- package/dist/config-store.js.map +1 -1
- package/dist/front-door.d.ts.map +1 -1
- package/dist/front-door.js +4 -2
- package/dist/front-door.js.map +1 -1
- package/dist/herdr-launch-config.d.ts +3 -0
- package/dist/herdr-launch-config.d.ts.map +1 -0
- package/dist/herdr-launch-config.js +37 -0
- package/dist/herdr-launch-config.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/bundle-source.d.ts +2 -0
- package/dist/lib/bundle-source.d.ts.map +1 -1
- package/dist/lib/bundle-source.js +12 -1
- package/dist/lib/bundle-source.js.map +1 -1
- package/dist/lib/context-git.d.ts +2 -0
- package/dist/lib/context-git.d.ts.map +1 -1
- package/dist/lib/context-git.js +55 -5
- package/dist/lib/context-git.js.map +1 -1
- package/dist/lib/scope/scope-fs.d.ts +3 -2
- package/dist/lib/scope/scope-fs.d.ts.map +1 -1
- package/dist/lib/scope/scope-fs.js +97 -9
- package/dist/lib/scope/scope-fs.js.map +1 -1
- package/dist/lib/scope/templates.d.ts.map +1 -1
- package/dist/lib/scope/templates.js +28 -24
- package/dist/lib/scope/templates.js.map +1 -1
- package/dist/provider-auth.d.ts +32 -0
- package/dist/provider-auth.d.ts.map +1 -0
- package/dist/provider-auth.js +128 -0
- package/dist/provider-auth.js.map +1 -0
- package/dist/terminal-window.d.ts +19 -0
- package/dist/terminal-window.d.ts.map +1 -0
- package/dist/terminal-window.js +513 -0
- package/dist/terminal-window.js.map +1 -0
- package/package.json +1 -1
- package/tui/dist/commands/registry.js +1 -1
- package/tui/dist/commands/registry.js.map +1 -1
- package/tui/dist/config/config-model.d.ts.map +1 -1
- package/tui/dist/config/config-model.js +1 -0
- package/tui/dist/config/config-model.js.map +1 -1
- package/tui/dist/connections/connections-model.d.ts +5 -0
- package/tui/dist/connections/connections-model.d.ts.map +1 -1
- package/tui/dist/connections/connections-model.js +1 -1
- package/tui/dist/connections/connections-model.js.map +1 -1
- package/tui/dist/daemon-client.d.ts +5 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/execution/workflow-model.d.ts.map +1 -1
- package/tui/dist/execution/workflow-model.js +3 -1
- package/tui/dist/execution/workflow-model.js.map +1 -1
- package/tui/dist/hydrate.d.ts +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +3 -1
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/main.js +23 -11
- package/tui/dist/main.js.map +1 -1
- package/tui/dist/page-read.js +1 -1
- package/tui/dist/page-read.js.map +1 -1
- package/tui/dist/pending-address.d.ts +7 -0
- package/tui/dist/pending-address.d.ts.map +1 -0
- package/tui/dist/pending-address.js +11 -0
- package/tui/dist/pending-address.js.map +1 -0
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +9 -5
- package/tui/dist/render.js.map +1 -1
- package/tui/dist/socket-server.d.ts +3 -1
- package/tui/dist/socket-server.d.ts.map +1 -1
- package/tui/dist/socket-server.js +6 -0
- package/tui/dist/socket-server.js.map +1 -1
- package/tui/dist/state.d.ts.map +1 -1
- package/tui/dist/state.js +40 -13
- package/tui/dist/state.js.map +1 -1
- package/tui/dist/stylize.js +1 -1
- package/tui/dist/stylize.js.map +1 -1
- package/tui/dist/terminals/open-window.d.ts +5 -0
- package/tui/dist/terminals/open-window.d.ts.map +1 -0
- package/tui/dist/terminals/open-window.js +55 -0
- package/tui/dist/terminals/open-window.js.map +1 -0
- package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
- package/tui/dist/terminals/terminal-model.js +16 -17
- package/tui/dist/terminals/terminal-model.js.map +1 -1
- package/tui/dist/types.d.ts +15 -0
- package/tui/dist/types.d.ts.map +1 -1
- package/ui/dist/assets/{index-HHSvwF97.js → index-D5n8EwkG.js} +1 -1
- package/ui/dist/index.html +1 -1
|
@@ -63,9 +63,10 @@ groups:
|
|
|
63
63
|
a member of, and reading channel details.
|
|
64
64
|
`rig slack verify` checks these.
|
|
65
65
|
- **Feature scopes**: `files:read` (download attachments people send), `files:write` (upload
|
|
66
|
-
attachments to Slack),
|
|
67
|
-
warns when one of these is missing (if Slack returns
|
|
68
|
-
them, so a READY from verify does not prove attachments
|
|
66
|
+
attachments to Slack), `app_mentions:read` (receive @-mentions of the app), and `reactions:read`
|
|
67
|
+
(receive emoji reactions). `rig slack verify` warns when one of these is missing (if Slack returns
|
|
68
|
+
the granted scopes) but does not require them, so a READY from verify does not prove attachments,
|
|
69
|
+
mentions or reactions will work.
|
|
69
70
|
|
|
70
71
|
If a feature scope was not granted, the effect differs by feature:
|
|
71
72
|
|
|
@@ -75,12 +76,22 @@ If a feature scope was not granted, the effect differs by feature:
|
|
|
75
76
|
the failure appears only in the daemon log (`rig daemon logs`).
|
|
76
77
|
- **Mentions** (`app_mentions:read`): Slack does not deliver `app_mention` events to the app.
|
|
77
78
|
Only `rig slack verify` warns that the scope is missing; nothing reports the missing events.
|
|
79
|
+
- **Reactions** (`reactions:read`): Slack does not deliver `reaction_added` events, so a reaction
|
|
80
|
+
on an ask doesn't reach the asking agent. A reply in the ask's thread still does.
|
|
78
81
|
|
|
79
|
-
So after installing, compare the granted scopes Slack shows for the app with all
|
|
82
|
+
So after installing, compare the granted scopes Slack shows for the app with all seven scopes that
|
|
80
83
|
`rig slack manifest --json` lists.
|
|
81
84
|
|
|
82
|
-
The app subscribes to messages in public channels it is a member of (`message.channels`)
|
|
83
|
-
mentions of the app (`app_mention`). It does not request
|
|
85
|
+
The app subscribes to messages in public channels it is a member of (`message.channels`), to
|
|
86
|
+
mentions of the app (`app_mention`), and to emoji reactions (`reaction_added`). It does not request
|
|
87
|
+
direct-message or private-channel access.
|
|
88
|
+
|
|
89
|
+
A reaction added to an ask reaches the agent that asked, as a note naming who reacted and with
|
|
90
|
+
which emoji; the agent decides what it means. Every message OpenRig posted for the ask counts:
|
|
91
|
+
its first message, a long ask's numbered parts, and an ask posted as a reply in a thread. A
|
|
92
|
+
reaction on any other message, including a person's reply in the thread, is ignored. An app created from an older manifest has neither the `reactions:read` scope nor the
|
|
93
|
+
`reaction_added` event: add both under **OAuth & Permissions** and **Event Subscriptions**, then
|
|
94
|
+
reinstall the app to the workspace.
|
|
84
95
|
|
|
85
96
|
The manifest also turns on **Interactivity**, so the human can answer a decision's structured
|
|
86
97
|
questions by clicking a button (`rig queue create --human-questions-file`). In Socket Mode the
|
|
@@ -101,11 +112,55 @@ part of OpenRig.
|
|
|
101
112
|
- `rig slack status` shows what is still missing, without contacting Slack.
|
|
102
113
|
- `rig slack verify` checks the granted baseline scopes and channel membership with Slack.
|
|
103
114
|
|
|
115
|
+
## One channel per rig or seat (optional)
|
|
116
|
+
|
|
117
|
+
By default every human-bound item posts to the one channel from `rig slack setup --channel`.
|
|
118
|
+
To follow each rig separately, post a rig's items, or a single seat's, to its own channel:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
rig slack channel-map set my-rig C0EXAMPLE1
|
|
122
|
+
rig slack channel-map set pr@my-rig C0EXAMPLE2
|
|
123
|
+
rig slack channel-map list
|
|
124
|
+
rig slack channel-map remove pr@my-rig
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- **Which channel an item posts to.** The item's seat is matched exactly first (`pr@my-rig`),
|
|
128
|
+
then its rig (`my-rig`). Anything unmapped posts to the default channel, so a config
|
|
129
|
+
without a map behaves exactly as before. Aggregate delivery digests have no single seat and
|
|
130
|
+
always post to the default channel.
|
|
131
|
+
- **Threads.** Updates, `--reply-to` and later notifications for an item stay in its thread.
|
|
132
|
+
With a map configured, if a seat's channel has changed since the thread was opened, the
|
|
133
|
+
next post opens a new thread in the seat's current channel, and `--reply-to` records the
|
|
134
|
+
fallback as `root-other-channel`. With no map, threads behave exactly as before: an item's
|
|
135
|
+
next notification reuses its open thread in whatever channel that thread was posted in.
|
|
136
|
+
- **Changing the map.** A change applies to new posts. A post already in flight (one being
|
|
137
|
+
retried after a failure or an unconfirmed send) finishes in the channel and thread it started
|
|
138
|
+
in, and its retry checks that channel first so it is not posted twice. This includes adding
|
|
139
|
+
the first map: a post first tried before any map existed finishes in the default channel.
|
|
140
|
+
Without a map, OpenRig records nothing about a post's channel, so if the default channel
|
|
141
|
+
changes while a post is being retried, the retry goes to the new default channel (as it always
|
|
142
|
+
has); that also applies to a post first tried before the map was added.
|
|
143
|
+
- **Replies and new messages.** A reply in an item's thread reaches that item's seat, in any
|
|
144
|
+
channel. A message the human starts (or a reply in a thread OpenRig does not know) goes to
|
|
145
|
+
the connector's inbound destination, whichever channel it is in. Missed-message recovery
|
|
146
|
+
(below) covers the default channel only.
|
|
147
|
+
|
|
148
|
+
Invite the app to every mapped channel (`/invite @OpenRig`). `rig slack verify` checks
|
|
149
|
+
membership in the default channel and every mapped channel, and reports NOT ready until the
|
|
150
|
+
app is in all of them. A saved change reaches a running connector when it next rewires:
|
|
151
|
+
`rig slack disable` then `rig slack enable`, or a daemon restart. The TUI's Connections page
|
|
152
|
+
says whether the running configuration matches the file.
|
|
153
|
+
|
|
154
|
+
The map is stored as `channelMap` in `slack-connector.json`, as a list of `{ "match", "channel" }`
|
|
155
|
+
entries. Saving refuses any other field. A field written by a newer OpenRig is ignored when the
|
|
156
|
+
connector reads the file, and `rig slack status` names it. Private channels and direct messages
|
|
157
|
+
are not supported targets.
|
|
158
|
+
|
|
104
159
|
## Reconnect recovery and status
|
|
105
160
|
|
|
106
161
|
The daemon scans available top-level messages in the configured channel after a
|
|
107
162
|
Socket Mode connection and on its existing five-minute retry cadence. Recovered
|
|
108
|
-
|
|
163
|
+
tasks say **Recovered after a gap** and show the original Slack posting time.
|
|
109
164
|
They use the same sender admission, routing, attachment handling, fixed identity
|
|
110
165
|
and dead-letter path as live messages. A durable dead letter is custody of a
|
|
111
166
|
failed delivery, not successful delivery.
|
|
@@ -121,8 +176,9 @@ not covered by that margin. A corrupt or unreadable checkpoint leaves recovery u
|
|
|
121
176
|
and preserves the existing file; live inbound continues.
|
|
122
177
|
|
|
123
178
|
Each pass admits at most four pages, 100 entries and 15 seconds of work, with a
|
|
124
|
-
five-second history-request ceiling.
|
|
125
|
-
|
|
179
|
+
five-second history-request ceiling. Work already started on a message, such as
|
|
180
|
+
an attachment transfer, is not cancelled by these limits or by a stop, and a new
|
|
181
|
+
pass waits for it to finish. Rate limits retain Slack's Retry-After across restart.
|
|
126
182
|
Transport and server failures use a five-second backoff unless Slack supplies Retry-After.
|
|
127
183
|
When Slack reports a plan history limit, recovery still lands the available page
|
|
128
184
|
and advances normally, retaining an older-history limitation in status across restarts.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# What changed in OpenRig 0.6.7
|
|
2
|
+
|
|
3
|
+
This note is for an agent on an install that was just upgraded to 0.6.7. It lists only what behaves differently from
|
|
4
|
+
0.6.6 and what to do about it. For everything OpenRig can do, read the capability map:
|
|
5
|
+
`rig context get onboarding-width/public-what-you-can-do.md`. Each release replaces this file, so
|
|
6
|
+
`rig context get reference/whats-new.md` describes the installed version once the upgraded daemon is running. Without
|
|
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.
|
|
9
|
+
|
|
10
|
+
## The OpenRig view is now the handoff
|
|
11
|
+
|
|
12
|
+
- **Open the view as the step after install or start; don't wait to be asked.** Say you're opening it, run
|
|
13
|
+
`rig terminal open saved:kernel --window`, then tell the person where it opened. Don't ask "Open the OpenRig view
|
|
14
|
+
now?", don't wait for a phrase like "show me my agents", and don't finish by printing a command for them to copy. The
|
|
15
|
+
same command brings their agents back later.
|
|
16
|
+
- **The layout follows the person's terminal width.** On a narrow terminal the operator gets the first tab. On a wide
|
|
17
|
+
one the dashboard and operator sit side by side and the advisor has its own tab. Inside herdr it opens a focused
|
|
18
|
+
`openrig kernel` space. A `kernel` view the person saved themselves still wins.
|
|
19
|
+
- **It opens where the caller is.** Terminal gets a window and Ghostty a tab. From Claude Desktop, iTerm or VS Code on a
|
|
20
|
+
Mac it opens a new Ghostty or Terminal window, and macOS may ask to allow it: mention that clicking Allow is fine only
|
|
21
|
+
in that case. Over SSH, in CI or with no display, it returns a definite no-window result with the reason. Relay the
|
|
22
|
+
`run:` command it prints exactly, or give `env -u TMUX tmux attach-session -t '=<canonicalSessionName>'` for the
|
|
23
|
+
operator.
|
|
24
|
+
- **`rig terminal open <view>` opens a window by default.** Pass `--provider herdr` or `--provider cmux` only to add
|
|
25
|
+
tiles to a workspace that's already visible. With `--json`, `reusedWorkspace` and `opened: []` mean an existing view
|
|
26
|
+
was reused, which is success.
|
|
27
|
+
- **The TUI's action is now "Open terminals ▸"** (it was `term ▸`). It opens a desktop window through the same
|
|
28
|
+
launcher, so the TUI must run on the daemon's desktop.
|
|
29
|
+
- **The `rigs` skill is installed for the person's own agent.** The daemon writes it to `~/.claude/skills/rigs` and
|
|
30
|
+
`~/.agents/skills/rigs` and refreshes it on every upgrade. It now triggers on any mention of OpenRig, rigs or a team
|
|
31
|
+
of coding agents. A copy added earlier with skills.sh is left alone and never refreshed.
|
|
32
|
+
|
|
33
|
+
## Installing and setting up
|
|
34
|
+
|
|
35
|
+
- **Show the install preview first.** The published install command has a `--dry-run` preview
|
|
36
|
+
(`rig context get reference/getting-started.md` has both forms). Run the install when the person agrees. If the only
|
|
37
|
+
failures left are provider sign-ins, have them sign in and continue at "Start the kernel".
|
|
38
|
+
- **If your own harness refuses a tool call while installing,** say so and show the refusal: Claude Code's auto mode can
|
|
39
|
+
deny calls as well as approve them. Let the person review it in their harness or run that step themselves. A refused
|
|
40
|
+
call doesn't prove the OpenRig command failed.
|
|
41
|
+
- **`rig setup` installs herdr by default** on macOS and Linux; `--no-herdr` declines it. On a Mac, ask once about
|
|
42
|
+
Ghostty and on yes rerun `rig setup --ghostty`, keeping `--no-herdr` if it was chosen. Setup no longer installs cmux,
|
|
43
|
+
and an existing cmux still works. In `--json` output the `cmux_install` step is gone and `herdr_install` and
|
|
44
|
+
`ghostty_install` appear.
|
|
45
|
+
- **`rig doctor` checks Claude and Codex installs, and a login or configured provider credential,** the way setup does.
|
|
46
|
+
It exits 1 when either harness is missing or has neither, including one the person doesn't use, so ignore a failure
|
|
47
|
+
on an unused harness. A pass means a login or configured provider credential is available locally, not that a
|
|
48
|
+
provider accepts the credential or that an agent can work; no provider request or agent work is tested.
|
|
49
|
+
- **When setting up permissions,** recommend keeping the team default and offer remembered allowances only if the
|
|
50
|
+
person wants fewer prompts. People slowed by prompts can be pointed to the workshop listing.
|
|
51
|
+
- **Windows users go through WSL2.** For Pi seats there, offer either credential route; a global Pi login still isn't
|
|
52
|
+
shared with managed seats.
|
|
53
|
+
|
|
54
|
+
## Fewer prompts
|
|
55
|
+
|
|
56
|
+
- **In Claude team seats, help on lifecycle commands runs without a prompt.** `rig down --help` and `-h` forms run;
|
|
57
|
+
the lifecycle actions themselves still ask. Pipelines, command substitutions, redirects and heredocs aren't allowed
|
|
58
|
+
automatically.
|
|
59
|
+
- **The kernel operator's Claude session runs routine inspection without prompts:** Python, command lookup, `cd`, text
|
|
60
|
+
helpers and WebFetch. Compound commands and redirects still go to Claude's own permission check.
|
|
61
|
+
- **Managed Codex seats no longer stop at the update menu on start.** Updating Codex is the operator's job: if a Codex
|
|
62
|
+
seat says its model needs a newer Codex, offer to update Codex and restart that seat, without stopping the team. If a
|
|
63
|
+
Codex seat shows a model-switch menu near a rate limit, ask the person; don't change the team's model.
|
|
64
|
+
|
|
65
|
+
## Messages, wakes and Slack
|
|
66
|
+
|
|
67
|
+
- **A send or wake no longer answers a question that's waiting for a person.** It's refused with
|
|
68
|
+
`target_needs_input`, and the reason ends `; latest hook, pane unrecognized` when the screen can't be read, even if
|
|
69
|
+
the hook is minutes old. Read the seat with `rig capture` and get the question answered by whoever should answer it.
|
|
70
|
+
Don't retry the send.
|
|
71
|
+
- **Slack can post to a channel per rig or seat:** `rig slack channel-map list`, `set <match> <channel>` and
|
|
72
|
+
`remove <match>`. After a change, invite the app to each channel, run `rig slack verify`, then `rig slack disable`
|
|
73
|
+
and `rig slack enable` (or restart the daemon). Thread replies still reach the seat in any channel.
|
|
74
|
+
- **A reaction on any part of a Slack ask reaches the seat that asked,** as a task tagged `human-reaction`. Treat it as
|
|
75
|
+
a signal to interpret, not an answer; the ask stays open. An existing app needs the `reactions:read` scope, the
|
|
76
|
+
`reaction_added` event and a reinstall, and `rig slack verify` warns when the scope is missing.
|
|
77
|
+
- **A long Slack ask is posted in parts.** If it still can't be posted, you get a task `<ask id>-undeliverable`, tagged
|
|
78
|
+
`slack-undeliverable`: shorten the ask or link a file for the long part, and send it as a new ask.
|
|
79
|
+
- **Replies sent with "Also send to #channel" now arrive** at the seat that asked, like any other thread reply.
|
|
80
|
+
|
|
81
|
+
## Running teams
|
|
82
|
+
|
|
83
|
+
- **`rig down` prints what each agent seemed to be doing before it stops them,** on one stderr line, or "unknown". It's
|
|
84
|
+
a best-effort snapshot, not a record of what was interrupted. `rig down --host` now exits 2 when the remote teardown
|
|
85
|
+
reports errors.
|
|
86
|
+
- **Before a handover or compaction, write the seat's recap** with
|
|
87
|
+
`rig context recap-write --rig <rig> --seat <seat> --file <draft.md>`, not a file tool, so earlier recaps are kept.
|
|
88
|
+
`rig seat handover <seat>` now works on the same seat again and again; a seat left half-handed-over recovers by
|
|
89
|
+
running it again.
|
|
90
|
+
- **After a managed compaction, read the `refocusing` skill and consume the current topology and work traces
|
|
91
|
+
delivered with the restore.** Don't rerun them just to duplicate the delivery; name a missing trace. For a new trace
|
|
92
|
+
outside that context, use the skill's one-command form. The daemon now installs the skill globally.
|
|
93
|
+
- **The built-in starter and factory leads publish their team's roster** at first start, so `rig roster list` and
|
|
94
|
+
`rig roster find <topic>` know those teams.
|
|
95
|
+
- **Claiming a parked queue item clears its `blocked_on`.** To park it again on the same gate, run
|
|
96
|
+
`rig queue update <id> --state blocked` without `--blocked-on`: it reuses the previous gate. Add the usual wake when
|
|
97
|
+
one is required.
|
|
98
|
+
- **A periodic reminder first fires one interval after you register it,** not immediately.
|
|
99
|
+
- **Workflows:** `rig workflow run` and `rig workflow watch` exit 3 for an aborted instance. When a step that was sent
|
|
100
|
+
back completes again, the steps that depend on it run again too, including ones that had passed.
|
|
101
|
+
- **Sharing teams:** `rig bundle create` and `rig up <link>` name the bundle after `rig.yaml`'s `name`, and
|
|
102
|
+
`rig bundle check` names the file in each finding. Submissions go to `mvschwarz/openrig-registry`. The bundle safety
|
|
103
|
+
check always runs, even with `--skip-version-check --force`.
|
|
104
|
+
- **`rig context add <url> --git` retrieves shallowly by default:** the initial retrieval fetches only the current
|
|
105
|
+
commit, and a server that refuses shallow retrieval falls back to a full clone with a warning. Use
|
|
106
|
+
`rig context source update` for later revisions.
|
|
107
|
+
- **Values that used to fail quietly are refused:** a bad `rig chatroom history --since` (fix the value; the room isn't
|
|
108
|
+
empty) and a `--wake-after` such as `7d` (use hours, for example `168h`).
|
|
109
|
+
- **Pi seats print a `[pi-runner] seat …:` line at start** saying whether a credential was found and, if not, how to
|
|
110
|
+
fix it. A MiniMax model gets `MINIMAX_API_KEY` when that name is in `recovery.provider_auth_env_allowlist`.
|
|
111
|
+
- **`agents.advisor_session` defaults to the kernel's advisor seat.**
|
|
112
|
+
|
|
113
|
+
## What to stop doing
|
|
114
|
+
|
|
115
|
+
- **Stop asking whether to open the OpenRig view, or waiting for a phrase.** Open it after install or start.
|
|
116
|
+
- **Stop using `--provider herdr` for the first view,** and stop pre-warning about macOS prompts from Terminal or
|
|
117
|
+
Ghostty.
|
|
118
|
+
- **Stop suggesting `--skip-version-check --force` to get past a bundle pre-check failure.** The check always runs.
|
|
119
|
+
- **Stop retrying a send refused with `target_needs_input`.** Get the question answered instead.
|
|
120
|
+
- **Stop telling people to untick "Also send to #channel" when they answer in Slack.** Those replies now arrive.
|
|
121
|
+
|
|
122
|
+
## Known gaps in 0.6.7
|
|
123
|
+
|
|
124
|
+
- **Not yet checked on a real machine:** opening the view from Claude Desktop, and the plain-tmux layout without herdr.
|
|
125
|
+
The full first install from nothing and a Linux run come after this release.
|
|
126
|
+
- **Only one selected lifecycle-help command has been checked in a live Claude session;** source and parser coverage
|
|
127
|
+
is broader. If a help command still asks, report it.
|
|
128
|
+
- **Codex team seats aren't asked before lifecycle commands yet.**
|
|
129
|
+
- **The send gate trusts the most recently recorded hook.** If hooks are recorded out of order, it can hold a send for
|
|
130
|
+
a question that's already answered, or miss one that's waiting. `rig capture` shows the real screen.
|
|
131
|
+
- **A Codex seat whose permission request was approved automatically can still read "needs input".**
|
|
132
|
+
- **A launched team still writes its skills into its working folder.**
|
|
133
|
+
- **After a restart, `rig status` shows `Kernel: skipped` whatever the kernel seats' state.** Read them with
|
|
134
|
+
`rig ps --nodes --rig kernel --full`.
|
|
@@ -57,7 +57,7 @@ These are auto-delivered to every rig; their name+description are already in you
|
|
|
57
57
|
- **loading-addressable-markdown** — a task names Markdown as `path#h2-slug` or `path#h2-slug/h3-slug` outside the context-pack library.
|
|
58
58
|
- **session-compaction-and-restore** — preparing for, or recovering from, compaction (any runtime). The write- and read-side protocol.
|
|
59
59
|
- **queue-handoff** — you're passing durable work to another seat or ending your turn. The queue is the work ledger, not chat.
|
|
60
|
-
- **refocusing** — a long-running seat may have lost the product outcome, crossed a major boundary, or compacted and needs a fresh path-based trace.
|
|
60
|
+
- **refocusing** — invoke as `refocusing` when a long-running seat may have lost the product outcome, crossed a major boundary, or compacted and needs a fresh path-based trace.
|
|
61
61
|
- **seat-continuity-and-handover** — handing your seat's work across a restart or to another owner.
|
|
62
62
|
- **orienting-to-an-inherited-seat** — you just inherited an existing seat through a planned handover and need to verify its identity, state, and testimony.
|
|
63
63
|
- **retiring-and-inheriting-a-seat** — you're planning a seat transition and need to retire the current occupant into a fresh successor without losing continuity.
|
|
@@ -51,7 +51,7 @@ or `codex login` once when that selected login is missing. No credential copying
|
|
|
51
51
|
unused provider prerequisite or silent model/provider fallback.
|
|
52
52
|
|
|
53
53
|
Read the compatible getting-started guide's **Choose your providers** and
|
|
54
|
-
**
|
|
54
|
+
**Start the kernel and check its state** sections before launch. The choice selects
|
|
55
55
|
the two project agents. Kernel auto-boot independently uses available
|
|
56
56
|
authenticated accounts, so it may use both even when the project uses one.
|
|
57
57
|
Do not add an unused-provider login gate or manual kernel setup to this path.
|
|
@@ -63,7 +63,8 @@ Show the chosen team, resolved runtimes/models and exact
|
|
|
63
63
|
retain `gpt-6-astra`; Claude seats use the configured native default without an
|
|
64
64
|
OpenRig model override. Confirm that model with the user and its availability;
|
|
65
65
|
verify the native session's actual model before consequential work. Use the
|
|
66
|
-
chosen rig name in owner/checker addresses
|
|
66
|
+
chosen rig name in owner/checker addresses (in the starter, `dev-build@<rig>` and
|
|
67
|
+
`dev-review@<rig>`) throughout the same task and return.
|
|
67
68
|
|
|
68
69
|
## Establish the working agreement
|
|
69
70
|
|
|
@@ -79,16 +80,21 @@ model turns, but delivered wakes and resumed work **can spend tokens**. Prefer
|
|
|
79
80
|
an event-driven wait to frequent empty reminders. Wakes cannot answer a user
|
|
80
81
|
question, clear a permission prompt or guarantee progress.
|
|
81
82
|
|
|
82
|
-
**Ask once before launching or assigning work
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
**Ask once before launching or assigning work.** For a team with no permission
|
|
84
|
+
policy, seat choice or named Codex profile, recommend keeping the team default:
|
|
85
|
+
Claude team seats run ordinary `rig` commands, project reads and common tests
|
|
86
|
+
without prompts, and lifecycle commands such as `rig up` and `rig down` still
|
|
87
|
+
ask. Only if they want more, offer: “Remember these selected OpenRig commands in
|
|
88
|
+
your native settings for this project?” **Yes** / **No — keep the team default**.
|
|
89
|
+
Reuse an existing explicit choice for this scope.
|
|
90
|
+
Explain that a remembered allowance can cover all `rig` verbs, but Claude team
|
|
91
|
+
seats still ask before lifecycle commands, at personal project scope unless the
|
|
92
|
+
user explicitly chooses user-wide sessions. It is not global YOLO or permission
|
|
93
|
+
to invent work.
|
|
88
94
|
On an actual Yes, follow [Applying a permission policy](#find-the-compatible-permission-guide)
|
|
89
95
|
to add existing native rules, preserve stricter/unrelated settings, and verify
|
|
90
|
-
the target conversation. No or no answer leaves settings alone and
|
|
91
|
-
|
|
96
|
+
the target conversation. No or no answer leaves settings alone and keeps the
|
|
97
|
+
team default. Remember the explicit choice and exact additions in the
|
|
92
98
|
existing onboarding context; “Undo the OpenRig command allowances added by this
|
|
93
99
|
setup” removes only those additions. Broader access remains a separate opt-in.
|
|
94
100
|
|
|
@@ -102,8 +108,9 @@ or explicitly reports none. Preserve work and custody before a supported stop.
|
|
|
102
108
|
|
|
103
109
|
Choose the team size separately from the coordination method above:
|
|
104
110
|
|
|
105
|
-
1. **Use the two-agent starter.** Keep the
|
|
106
|
-
while that pair meets the workload. The
|
|
111
|
+
1. **Use the two-agent starter.** Keep its builder (the owner) and independent
|
|
112
|
+
reviewer (the checker) while that pair meets the workload. The builder can
|
|
113
|
+
implement and coordinate.
|
|
107
114
|
2. **Add one or two seats to the running rig.** This is the usual next step.
|
|
108
115
|
Follow [Grow the running team](references/worked-example.md#grow-the-running-team)
|
|
109
116
|
for `rig grow` commands, readiness/context/work
|
package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md
CHANGED
|
@@ -86,8 +86,8 @@ permissions, supplies a missing product decision or authorizes more work.
|
|
|
86
86
|
|
|
87
87
|
## Permissions at the point of work
|
|
88
88
|
|
|
89
|
-
Before the first task, ask the agent to configure your choice: keep
|
|
90
|
-
remember selected commands, or deliberately select broader access. Use
|
|
89
|
+
Before the first task, ask the agent to configure your choice: keep the team
|
|
90
|
+
default, remember selected commands, or deliberately select broader access. Use
|
|
91
91
|
`rig context get skills/applying-a-permission-policy/SKILL.md`, or the
|
|
92
92
|
[compatible source/package paths](../SKILL.md#find-the-compatible-permission-guide).
|
|
93
93
|
The agent handles setup and verifies the actual conversation; the user need not
|
|
@@ -239,6 +239,8 @@ host in front of you.
|
|
|
239
239
|
mechanism; this skill does not rewrite launchers.
|
|
240
240
|
11. Record the observed result, remaining local preservation decisions, and the
|
|
241
241
|
exact rollback runtime and backup.
|
|
242
|
+
12. Read what changed in the new version, `rig context get reference/whats-new.md`,
|
|
243
|
+
and tell your user anything in it that changes how they work.
|
|
242
244
|
|
|
243
245
|
## Stop and hand back when
|
|
244
246
|
|
|
@@ -21,3 +21,63 @@ When the goal is done, close the operator's row with the result.
|
|
|
21
21
|
|
|
22
22
|
`rig down` and `rig seat stop` end agents' sessions and any work in progress, and `rig up <spec>` on a stopped team's
|
|
23
23
|
name replaces it with a new team. Don't run them unless the person asked; check `rig ps --nodes` first.
|
|
24
|
+
|
|
25
|
+
## Publish the team's roster
|
|
26
|
+
|
|
27
|
+
A roster tells anyone who uses `rig roster find` who to ask on this team and why. Write one the first time you start,
|
|
28
|
+
alongside the goal, and never replace one that exists:
|
|
29
|
+
|
|
30
|
+
1. Take the rig's name from `rig whoami --json` (`identity.rigName`). It is `factory` unless this team was launched
|
|
31
|
+
under another name; `<rig>` below means that name. If it is null, the rig name is unavailable: skip the roster
|
|
32
|
+
for now and try again when identity is available.
|
|
33
|
+
2. Run `rig roster list`. If it shows a roster with id `<rig>`, stop here.
|
|
34
|
+
3. The file is `<workspace.root>/rosters/<rig>.json`; `rig config get workspace.root` gives the root. If the file
|
|
35
|
+
exists, stop here too. Create the `rosters/` folder if it is missing.
|
|
36
|
+
4. Run `rig ps --nodes --rig <rig> --json --fields canonicalSessionName,hostSelfId`. It gives each seat's exact address
|
|
37
|
+
and the host that serves it.
|
|
38
|
+
5. Match `orch-lead` (you) to lead, `orch-advisor` to advisor, `dev-build` to builder, `dev-qa` to QA,
|
|
39
|
+
`dev-design` to designer, and `review-r1` and `review-r2` to the two reviewers, using the actual addresses from step 4.
|
|
40
|
+
Write the file with those addresses and hosts, today's date, and yourself as curator (format: OpenRig's
|
|
41
|
+
`$OPENRIG_HOME/reference/rosters.md`):
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"version": 1,
|
|
46
|
+
"id": "<rig>",
|
|
47
|
+
"name": "Factory",
|
|
48
|
+
"purpose": "Plan, build, design and check software in this repository as a full team",
|
|
49
|
+
"curator": { "seat": "<your address>", "host": "<your host>" },
|
|
50
|
+
"updated_at": "<YYYY-MM-DD>",
|
|
51
|
+
"members": [
|
|
52
|
+
{ "seat": "<lead>", "host": "<host>", "capabilities": ["planning", "routing work"],
|
|
53
|
+
"engagement": ["consult", "delegate"], "use_when": "Deciding what to build next, or who should take a piece",
|
|
54
|
+
"why": "Leads this team, talks to the person and routes the work" },
|
|
55
|
+
{ "seat": "<advisor>", "host": "<host>", "capabilities": ["product intent", "ideas"],
|
|
56
|
+
"engagement": ["consult"], "use_when": "Shaping an idea, or checking that work still serves the goal",
|
|
57
|
+
"why": "The lead's idea and intent partner" },
|
|
58
|
+
{ "seat": "<builder>", "host": "<host>", "capabilities": ["implementation"],
|
|
59
|
+
"engagement": ["delegate"], "use_when": "A planned piece needs building",
|
|
60
|
+
"why": "Builds the changes the lead routes to it" },
|
|
61
|
+
{ "seat": "<QA seat>", "host": "<host>", "capabilities": ["testing", "verification"],
|
|
62
|
+
"engagement": ["review"], "use_when": "A change needs its checks run and reported",
|
|
63
|
+
"why": "Runs the checks a change calls for and says what each one proved" },
|
|
64
|
+
{ "seat": "<designer>", "host": "<host>", "capabilities": ["product design", "user experience"],
|
|
65
|
+
"engagement": ["consult", "review"], "use_when": "A change affects what people see or how they use it",
|
|
66
|
+
"why": "Designs and reviews the user-facing side" },
|
|
67
|
+
{ "seat": "<reviewer 1>", "host": "<host>", "capabilities": ["code review"],
|
|
68
|
+
"engagement": ["review"], "use_when": "A change needs an independent review",
|
|
69
|
+
"why": "One of two independent reviewers" },
|
|
70
|
+
{ "seat": "<reviewer 2>", "host": "<host>", "capabilities": ["code review"],
|
|
71
|
+
"engagement": ["review"], "use_when": "A change needs an independent review",
|
|
72
|
+
"why": "The second independent reviewer; ask both for important changes" }
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
6. Run `rig roster list` to see it listed, then tell the person in one line.
|
|
78
|
+
|
|
79
|
+
Running this again, after `rig seat continue` or a restore, changes nothing. When a seat takes on a capability worth
|
|
80
|
+
asking it about, add it to that seat's `capabilities` and set `updated_at` to today; starting again never replaces the
|
|
81
|
+
file.
|
|
82
|
+
|
|
83
|
+
Need expertise your team lacks? `rig roster find <topic>` lists who to ask and why.
|
|
@@ -5,12 +5,30 @@ and the affected work before acting. You already own these operational
|
|
|
5
5
|
diagnoses; the queue worker retains intake classification. Never report an
|
|
6
6
|
unknown activity signal as idle or a persisted running record as process proof.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
`rig
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
For the kernel's first-boot health check, run `rig daemon status` and
|
|
9
|
+
`rig ps --nodes --rig kernel` as separate shell tool calls and read their output
|
|
10
|
+
directly. Claude Code can ask for approval for a compound command containing
|
|
11
|
+
pipes, redirects or subshells even when its individual commands are allowed;
|
|
12
|
+
these plain commands let the health check finish without that extra prompt.
|
|
13
|
+
|
|
14
|
+
When the person wants to see their agents or OpenRig in a terminal, in any words, run
|
|
15
|
+
`rig terminal open saved:kernel --window` on the daemon's desktop. It opens the
|
|
16
|
+
OpenRig TUI and operator in a new terminal tab/window, or a space in the current Herdr session:
|
|
17
|
+
below 120 measured columns, operator alone first;
|
|
18
|
+
from 120, dashboard and operator equally side by side. The advisor has a separate tab or tmux window. Inspect its result and visible content, or state what you cannot confirm. On a desktop, do
|
|
19
|
+
not end by showing a table or suggesting a command for the person to type. Herdr is visible
|
|
20
|
+
only inside a terminal the person can see; changing the shared TUI to `:terminals`
|
|
21
|
+
does not open one. Over headless SSH, explain that limitation, ask the person to
|
|
22
|
+
open a new terminal window or tab, and give one exact connection and attachment
|
|
23
|
+
command using the current Herdr endpoint or operator binding from the
|
|
24
|
+
getting-started guide. Do not report a window as visible without confirming it.
|
|
25
|
+
Only if that window cannot open, `rig tui --shared` is the named dashboard-only
|
|
26
|
+
fallback. Explain the window failure and help with the chosen fallback.
|
|
27
|
+
The shared dashboard is the kernel's `operator.human` terminal, an ordinary TUI,
|
|
28
|
+
not an agent or human-message inbox. Capture it before driving it, preserve the
|
|
29
|
+
user's view unless the task calls for navigation, and use the registered human
|
|
30
|
+
channel for decisions. If the TUI has exited, its shell remains; run `rig tui`
|
|
31
|
+
there once.
|
|
14
32
|
|
|
15
33
|
You run OpenRig on behalf of the user. The operator pod's `operator.human`
|
|
16
34
|
member holds their shared terminal view. Human decisions use the registered
|
|
@@ -21,6 +39,15 @@ human channel; a terminal attachment is not a person's address.
|
|
|
21
39
|
- Bring rigs up and down (`rig up <spec>`, `rig down <rigId>`). `rig down` and `rig seat stop`
|
|
22
40
|
end agents' sessions and any work in progress: check `rig ps --nodes --rig <name>` first, and
|
|
23
41
|
stop a team or seat only when the person asked for it.
|
|
42
|
+
For "stop everything", list the rigs with `rig ps --json`, then run `rig down`
|
|
43
|
+
for each rig they want stopped while the daemon is available. Stop kernel last
|
|
44
|
+
if it is included, since that ends your own session too. `rig daemon stop`
|
|
45
|
+
stops the service but leaves agent sessions running; it comes after the rigs
|
|
46
|
+
when the person also wants the service stopped.
|
|
47
|
+
If the service should also stop and kernel is included, before running
|
|
48
|
+
`rig down kernel` tell the person to run `rig daemon stop` in their own shell
|
|
49
|
+
once kernel is down and check its result. That hands off the final service
|
|
50
|
+
stop before your own session ends.
|
|
24
51
|
- Restart selected work after a reboot. Bare `rig` starts only the daemon;
|
|
25
52
|
the TUI recommends kernel first and lets the user select individual seats.
|
|
26
53
|
When the user says "bring my rigs back online":
|
|
@@ -43,6 +70,13 @@ After install, the person usually talks to you first. When they are talking to
|
|
|
43
70
|
you in this pane, their answers here are their decisions; don't send a launch
|
|
44
71
|
question through the human channel instead.
|
|
45
72
|
|
|
73
|
+
For a team's `/rigs` listing page, use `WebFetch` when available. It returns
|
|
74
|
+
page text and is already allowed by the kernel's Claude defaults, avoiding
|
|
75
|
+
approval for an HTML-cleanup shell pipeline. If it is unavailable or fails,
|
|
76
|
+
use a plain `curl -fsSL <listing-url>` call and read the response directly.
|
|
77
|
+
Fetch the raw registry YAML separately for the installation commit and
|
|
78
|
+
configurations, as below; do not take the pin from a cached page summary.
|
|
79
|
+
|
|
46
80
|
1. **Goal first.** Use a goal and folder already supplied, including a handoff
|
|
47
81
|
from the installing agent; do not ask for them again. If the goal is missing,
|
|
48
82
|
ask once: "What would you like to build or change?" If they already named a
|
|
@@ -52,30 +86,70 @@ question through the human channel instead.
|
|
|
52
86
|
own working directory is OpenRig's workspace, not their project, so never launch with
|
|
53
87
|
`--cwd .` from here.
|
|
54
88
|
3. **Three teams, one recommendation.** Present starter, workshop and factory,
|
|
55
|
-
recommend one with a short reason tied to their goal, and
|
|
89
|
+
recommend one with a short reason tied to their goal, and show each graph
|
|
90
|
+
in the shared TUI as you explain it (step 4):
|
|
56
91
|
- `starter`: a builder and a reviewer (`dev-build`, `dev-review`) for one
|
|
57
92
|
bounded change. Built in; `first-project` is its old name.
|
|
58
93
|
- `workshop`: a lead, a builder, a QA seat and a reviewer for ongoing work
|
|
59
94
|
in one repository. Not built in: it installs from its listing on
|
|
60
95
|
openrig.dev/rigs, a GitHub folder link pinned to a reviewed commit. Read
|
|
61
96
|
the commit and its configurations from
|
|
62
|
-
https://raw.githubusercontent.com/mvschwarz/openrig-
|
|
97
|
+
https://raw.githubusercontent.com/mvschwarz/openrig-registry/main/registry/workshop.yaml,
|
|
63
98
|
fetched fresh, for example with `curl -fsSL <that link>`. A web tool's cached
|
|
64
99
|
copy can be older than the current pin and would launch an older workshop;
|
|
65
100
|
the raw link itself can trail a new pin by a few minutes (it is cached for
|
|
66
|
-
300 seconds).
|
|
101
|
+
300 seconds). If permission prompts are slowing the person down, point
|
|
102
|
+
them to https://openrig.dev/rigs/workshop: the bundle ships with broad
|
|
103
|
+
access and non-interruptive mode, bypassing permission prompts and
|
|
104
|
+
supported harness warning dialogs. Its listing and before-install view
|
|
105
|
+
explain that access so they can choose it knowingly.
|
|
67
106
|
- `factory`: seven agents (a lead, an advisor, build, QA, design and two
|
|
68
107
|
independent reviewers) for sustained product work. Built in; it uses the
|
|
69
108
|
most concurrent capacity.
|
|
70
109
|
Offer the shelf only when the goal asks for it: `code-review` (two
|
|
71
110
|
independent reviews), `research` (an analyst and a synthesizer) and `pm` (a
|
|
72
111
|
product lead, a researcher and a builder for prototypes).
|
|
73
|
-
4. **
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
`
|
|
77
|
-
|
|
78
|
-
|
|
112
|
+
4. **Show the real spec, before anything starts.** Find the shared TUI's
|
|
113
|
+
`canonicalSessionName` on the kernel's `operator.human` member with
|
|
114
|
+
`rig ps --nodes --rig kernel --json`, then capture that pane with
|
|
115
|
+
`tmux capture-pane -p -t '=<session>:'`, substituting that canonical name
|
|
116
|
+
for `<session>` and keeping the trailing colon. When it shows
|
|
117
|
+
the TUI's normal view and an empty command line, type the TUI command
|
|
118
|
+
`spec starter` and Enter with `tmux send-keys -t '=<session>:'`. A rig spec
|
|
119
|
+
opens on its graph tab; capture again and confirm the named spec and its graph
|
|
120
|
+
are visible while you explain its roles. Do the same with `spec workshop`
|
|
121
|
+
and `spec factory` as you present those choices. These are TUI commands,
|
|
122
|
+
not shell commands. Previewing does not launch a team; leave the Launch
|
|
123
|
+
action for after the person's choice and approval.
|
|
124
|
+
- **Workshop's preview:** first inspect `rig specs ls --kind rig --json`.
|
|
125
|
+
If exactly one workshop entry is listed, show it and add nothing; say if
|
|
126
|
+
its source differs from the pinned install you are offering. If several
|
|
127
|
+
entries share that name, explain the ambiguity and use the text fallback
|
|
128
|
+
rather than letting `spec workshop` pick the first one. Otherwise, create
|
|
129
|
+
a temporary directory with `mktemp -d` and put a clean checkout of the
|
|
130
|
+
exact commit in the fresh registry listing from step 3 inside it.
|
|
131
|
+
Verify `git -C <checkout> rev-parse HEAD` equals that commit and
|
|
132
|
+
`git -C <checkout> status --porcelain -- rigs/workshop` is empty; use its
|
|
133
|
+
complete `rigs/workshop` folder. Tell the person: "Showing workshop
|
|
134
|
+
adds this version to your team library; it doesn't start any agents."
|
|
135
|
+
Run `rig specs add <pinned-workshop-folder> --json`; once it succeeds,
|
|
136
|
+
the temporary checkout can be removed because the library has its own
|
|
137
|
+
copy. Refresh the TUI and open `spec workshop`. Keep that same commit in
|
|
138
|
+
the later install link: the preview is a library copy, while installation
|
|
139
|
+
still uses the pinned link and `--target ~/rigs/workshop`, not the bare
|
|
140
|
+
library name.
|
|
141
|
+
Do not overwrite an existing workshop entry. If you cannot bind the
|
|
142
|
+
copy to that commit or the preview copy prevents the pinned install,
|
|
143
|
+
explain why workshop needs the text fallback below.
|
|
144
|
+
- **If the graph cannot be shown:** at the shared pane's shell prompt,
|
|
145
|
+
start `rig tui` there once, then capture before navigating. If it has a
|
|
146
|
+
startup screen, a dialog, unfinished input or another program, preserve
|
|
147
|
+
it. Name the unavailable preview and draw that team in the conversation
|
|
148
|
+
instead; use this fallback only when the TUI or that exact graph cannot
|
|
149
|
+
be driven. For a built-in team, read
|
|
150
|
+
`rig specs preview <team> --kind rig --json`: draw members and runtimes
|
|
151
|
+
from `graph.nodes` and edges from `graph.edges`, with one line on each
|
|
152
|
+
role. For workshop, draw from its `rig.yaml` at the pinned commit.
|
|
79
153
|
5. **Fit it to their providers.** Infer which tools they have from the
|
|
80
154
|
kernel's own runtimes (`rig ps --nodes --rig kernel --json`), or ask. Check
|
|
81
155
|
only the providers the team needs (`claude auth status` or
|
|
@@ -120,12 +194,24 @@ question through the human channel instead.
|
|
|
120
194
|
person or a fix. If `rig up` reports `Status: partial` with
|
|
121
195
|
`Startup attention (<seat>): <reason>`, tell them what that seat is waiting
|
|
122
196
|
for and the command its reason ends with.
|
|
197
|
+
Relay any untracked-file warnings from `rig up` to the person, including the
|
|
198
|
+
paths and suggested local exclude lines. Those files were created by the
|
|
199
|
+
launch, so describe them as OpenRig additions rather than pre-existing work.
|
|
200
|
+
- **A Codex seat says its model requires a newer version of Codex:** their
|
|
201
|
+
Codex is older than the model the team pins (the starter's reviewer uses
|
|
202
|
+
`gpt-6-astra`, which Codex 0.145 can't run). Tell them, and offer to update
|
|
203
|
+
Codex the way it was installed, for example
|
|
204
|
+
`npm install -g @openai/codex`. On their yes, update it, then start
|
|
205
|
+
that seat again. It's context for them, not a reason to stop or change the
|
|
206
|
+
team.
|
|
123
207
|
8. **Show them the team.** Capture the shared TUI: its session is the
|
|
124
208
|
`operator.human` member's `canonicalSessionName` in
|
|
125
|
-
`rig ps --nodes --rig kernel --json`.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
209
|
+
`rig ps --nodes --rig kernel --json`. Use
|
|
210
|
+
`tmux capture-pane -p -t '=<session>:'`, substituting that canonical name
|
|
211
|
+
for `<session>` and keeping the trailing colon. Only when the capture shows
|
|
212
|
+
the TUI's own view, type the TUI command `rig <team>` and Enter into that pane
|
|
213
|
+
with `tmux send-keys -t '=<session>:'`, and capture again to confirm it shows
|
|
214
|
+
the team's table.
|
|
129
215
|
At a shell prompt, run `rig tui` there first or tell them the command; if a
|
|
130
216
|
startup view or another mode holds the keys, leave it and tell them the
|
|
131
217
|
command instead. Then open the team's terminals as a new space with
|
|
@@ -16,8 +16,11 @@ machine and have things happen.
|
|
|
16
16
|
acts on behalf of the operator.human; ops decisions needing human
|
|
17
17
|
approval escalate.
|
|
18
18
|
- **operator.human** is the shared mission-control terminal. A fresh kernel
|
|
19
|
-
starts `rig tui` there.
|
|
20
|
-
|
|
19
|
+
starts `rig tui` there. When the person wants to see their agents or OpenRig in a terminal, run
|
|
20
|
+
`rig terminal open saved:kernel --window`: below 120 measured columns, operator first; from 120,
|
|
21
|
+
dashboard and operator equally side by side. The advisor keeps a separate tab or tmux window. Only if
|
|
22
|
+
the window cannot open, `rig tui --shared` is the dashboard-only fallback;
|
|
23
|
+
detaching preserves navigation. It is a screen, not proof a
|
|
21
24
|
person is watching or a destination that can answer a queue item. Use the
|
|
22
25
|
registered human delivery channel when a decision is required.
|
|
23
26
|
- **queue.worker** classifies stream-to-queue substrate. New stream
|