@ours.network/fleet 1.2.0-nightly.9 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +280 -68
- package/dist/account-origin.d.ts +5 -0
- package/dist/account-origin.js +31 -0
- package/dist/agent-ours/bridge.js +26 -9
- package/dist/agent-ours/correspondence.d.ts +10 -0
- package/dist/agent-ours/correspondence.js +1 -0
- package/dist/agent-ours/file-rpc.d.ts +12 -0
- package/dist/agent-ours/file-rpc.js +18 -4
- package/dist/agent-ours/harness.js +9 -1
- package/dist/agent-ours/mcp-endpoint.d.ts +22 -0
- package/dist/agent-ours/mcp-endpoint.js +101 -25
- package/dist/agent-ours/runtime.d.ts +9 -1
- package/dist/agent-ours/runtime.js +50 -2
- package/dist/agent-ours/service.d.ts +27 -1
- package/dist/agent-ours/service.js +107 -13
- package/dist/application/codex-models.d.ts +15 -0
- package/dist/application/codex-models.js +56 -0
- package/dist/application/conversation-history.d.ts +31 -0
- package/dist/application/conversation-history.js +339 -0
- package/dist/application/conversation-role-observer.d.ts +62 -0
- package/dist/application/conversation-role-observer.js +206 -0
- package/dist/application/fleet-query-service.d.ts +1 -1
- package/dist/application/fleet-query-service.js +3 -3
- package/dist/application/log-service.js +8 -8
- package/dist/application/model-catalog.d.ts +1 -1
- package/dist/application/model-catalog.js +5 -2
- package/dist/application/preset-provenance.d.ts +19 -0
- package/dist/application/preset-provenance.js +59 -0
- package/dist/application/resource-observer.d.ts +43 -0
- package/dist/application/resource-observer.js +323 -0
- package/dist/application/role-creation-service.js +3 -2
- package/dist/application/role-removal-service.js +17 -3
- package/dist/application/role-repository.d.ts +3 -1
- package/dist/application/role-repository.js +89 -54
- package/dist/application/room-layout-definitions.d.ts +45 -0
- package/dist/application/room-layout-definitions.js +130 -0
- package/dist/application/session-control.d.ts +63 -17
- package/dist/application/session-control.js +221 -23
- package/dist/application/supervisor-ours-tools.js +5 -11
- package/dist/application/task-layouts.d.ts +91 -0
- package/dist/application/task-layouts.js +261 -0
- package/dist/application/task-room-service.d.ts +101 -3
- package/dist/application/task-room-service.js +286 -33
- package/dist/application/types.d.ts +2 -0
- package/dist/atomic-file.d.ts +34 -1
- package/dist/atomic-file.js +161 -18
- package/dist/briefing.d.ts +5 -1
- package/dist/briefing.js +138 -31
- package/dist/build-info.json +10 -5
- package/dist/capabilities.d.ts +9 -1
- package/dist/capabilities.js +13 -0
- package/dist/cli.js +391 -38
- package/dist/client-profile.d.ts +5 -17
- package/dist/client-profile.js +4 -127
- package/dist/config.d.ts +45 -0
- package/dist/config.js +57 -6
- package/dist/creation.d.ts +1 -1
- package/dist/creation.js +4 -4
- package/dist/daemon-recovery.d.ts +14 -9
- package/dist/daemon-recovery.js +124 -115
- package/dist/docs.d.ts +1 -1
- package/dist/docs.js +402 -20
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +75 -60
- package/dist/erased-resources.d.ts +9 -0
- package/dist/erased-resources.js +87 -0
- package/dist/file-delivery/reader.d.ts +15 -0
- package/dist/file-delivery/reader.js +63 -0
- package/dist/file-delivery/store.d.ts +15 -0
- package/dist/file-delivery/store.js +124 -0
- package/dist/file-delivery/types.d.ts +19 -0
- package/dist/file-delivery/types.js +1 -0
- package/dist/fleet-command-audit.d.ts +13 -0
- package/dist/fleet-command-audit.js +31 -9
- package/dist/harness/agent-session.d.ts +4 -0
- package/dist/harness/claude-code-session.js +1 -1
- package/dist/harness/claude-code.js +21 -11
- package/dist/harness/claude-runtime.d.ts +12 -0
- package/dist/harness/claude-runtime.js +43 -0
- package/dist/harness/codex-app-server-proxy.d.ts +4 -1
- package/dist/harness/codex-app-server-proxy.js +41 -5
- package/dist/harness/codex-reasoning.d.ts +5 -0
- package/dist/harness/codex-reasoning.js +12 -0
- package/dist/harness/codex-runtime.d.ts +11 -1
- package/dist/harness/codex-runtime.js +31 -4
- package/dist/harness/codex-session.js +2 -2
- package/dist/harness/codex.js +24 -12
- package/dist/init-wizard.d.ts +2 -0
- package/dist/init-wizard.js +38 -19
- package/dist/isolation/policy.js +6 -1
- package/dist/isolation/types.d.ts +5 -0
- package/dist/managed-cli.d.ts +253 -0
- package/dist/managed-cli.js +923 -0
- package/dist/managed-recovery.d.ts +13 -0
- package/dist/managed-recovery.js +31 -0
- package/dist/minimal-setup.d.ts +2 -0
- package/dist/minimal-setup.js +44 -0
- package/dist/monitor.d.ts +9 -34
- package/dist/monitor.js +90 -153
- package/dist/notifications/fleet-producer.d.ts +31 -0
- package/dist/notifications/fleet-producer.js +351 -0
- package/dist/notifications/outbox.d.ts +59 -0
- package/dist/notifications/outbox.js +199 -0
- package/dist/notifications/target-cleanup.d.ts +16 -0
- package/dist/notifications/target-cleanup.js +75 -0
- package/dist/notifications/task-producer.d.ts +20 -0
- package/dist/notifications/task-producer.js +100 -0
- package/dist/ops.d.ts +2 -0
- package/dist/ops.js +20 -3
- package/dist/owner-channel/channel.js +17 -6
- package/dist/owner-channel/commands.d.ts +4 -0
- package/dist/owner-channel/commands.js +8 -0
- package/dist/owner-channel/lifecycle-outbox.js +4 -3
- package/dist/owner-channel/ours-client.js +2 -17
- package/dist/paths.d.ts +5 -0
- package/dist/paths.js +5 -0
- package/dist/preset-migration.js +55 -0
- package/dist/process-incarnation.d.ts +23 -0
- package/dist/process-incarnation.js +42 -0
- package/dist/reminders/manager.d.ts +75 -0
- package/dist/reminders/manager.js +278 -0
- package/dist/reminders/runtime.d.ts +27 -0
- package/dist/reminders/runtime.js +32 -0
- package/dist/reminders/schedule.d.ts +37 -0
- package/dist/reminders/schedule.js +104 -0
- package/dist/reminders/store.d.ts +341 -0
- package/dist/reminders/store.js +762 -0
- package/dist/reminders/tools.d.ts +20 -0
- package/dist/reminders/tools.js +114 -0
- package/dist/resolved-plan.js +1 -0
- package/dist/rooms-tasks/add-member.d.ts +48 -0
- package/dist/rooms-tasks/add-member.js +84 -0
- package/dist/rooms-tasks/archived-absence.d.ts +4 -0
- package/dist/rooms-tasks/archived-absence.js +11 -0
- package/dist/rooms-tasks/cli.js +182 -5
- package/dist/rooms-tasks/close.d.ts +5 -2
- package/dist/rooms-tasks/close.js +224 -36
- package/dist/rooms-tasks/config.d.ts +1 -1
- package/dist/rooms-tasks/config.js +11 -4
- package/dist/rooms-tasks/cowork-adapter.d.ts +12 -5
- package/dist/rooms-tasks/cowork-adapter.js +15 -121
- package/dist/rooms-tasks/cowork-http.js +56 -6
- package/dist/rooms-tasks/deletion.d.ts +1 -1
- package/dist/rooms-tasks/deletion.js +66 -10
- package/dist/rooms-tasks/erasure.d.ts +6 -0
- package/dist/rooms-tasks/erasure.js +173 -0
- package/dist/rooms-tasks/external-worker.d.ts +1 -1
- package/dist/rooms-tasks/external-worker.js +3 -4
- package/dist/rooms-tasks/layout-binding-client.d.ts +11 -0
- package/dist/rooms-tasks/layout-binding-client.js +56 -0
- package/dist/rooms-tasks/layout-binding-grants.d.ts +21 -0
- package/dist/rooms-tasks/layout-binding-grants.js +128 -0
- package/dist/rooms-tasks/layout-cli.d.ts +4 -0
- package/dist/rooms-tasks/layout-cli.js +107 -0
- package/dist/rooms-tasks/layout-config.d.ts +11 -0
- package/dist/rooms-tasks/layout-config.js +89 -0
- package/dist/rooms-tasks/layout-control.d.ts +21 -0
- package/dist/rooms-tasks/layout-control.js +52 -0
- package/dist/rooms-tasks/layout-member-retirement.d.ts +10 -0
- package/dist/rooms-tasks/layout-member-retirement.js +90 -0
- package/dist/rooms-tasks/layout-service.d.ts +43 -0
- package/dist/rooms-tasks/layout-service.js +203 -0
- package/dist/rooms-tasks/layout.d.ts +121 -0
- package/dist/rooms-tasks/layout.js +286 -0
- package/dist/rooms-tasks/legacy-task-member.d.ts +19 -0
- package/dist/rooms-tasks/legacy-task-member.js +116 -0
- package/dist/rooms-tasks/live-readiness.d.ts +18 -0
- package/dist/rooms-tasks/live-readiness.js +85 -0
- package/dist/rooms-tasks/member-ownership.d.ts +5 -0
- package/dist/rooms-tasks/member-ownership.js +40 -0
- package/dist/rooms-tasks/member-startup.d.ts +1 -0
- package/dist/rooms-tasks/member-startup.js +2 -0
- package/dist/rooms-tasks/provision.d.ts +3 -0
- package/dist/rooms-tasks/provision.js +101 -49
- package/dist/rooms-tasks/recovery.d.ts +19 -0
- package/dist/rooms-tasks/recovery.js +110 -0
- package/dist/rooms-tasks/room-state.d.ts +4 -2
- package/dist/rooms-tasks/room-state.js +47 -8
- package/dist/rooms-tasks/task-review.d.ts +113 -0
- package/dist/rooms-tasks/task-review.js +561 -0
- package/dist/rooms-tasks/task-service-retirement.d.ts +11 -0
- package/dist/rooms-tasks/task-service-retirement.js +21 -0
- package/dist/rooms-tasks/task-state.d.ts +51 -5
- package/dist/rooms-tasks/task-state.js +358 -50
- package/dist/rooms-tasks/task-tools.d.ts +35 -0
- package/dist/rooms-tasks/task-tools.js +134 -0
- package/dist/rooms-tasks/types.d.ts +78 -0
- package/dist/rooms-tasks/workspace-artifacts.d.ts +6 -0
- package/dist/rooms-tasks/workspace-artifacts.js +93 -0
- package/dist/rooms-tasks/workspace.d.ts +35 -0
- package/dist/rooms-tasks/workspace.js +325 -0
- package/dist/runner.d.ts +23 -4
- package/dist/runner.js +409 -61
- package/dist/session/acp.d.ts +75 -2
- package/dist/session/acp.js +345 -82
- package/dist/session/arbiter.d.ts +98 -0
- package/dist/session/arbiter.js +272 -3
- package/dist/session/codex-app-server.d.ts +45 -1
- package/dist/session/codex-app-server.js +225 -32
- package/dist/session/control.d.ts +17 -3
- package/dist/session/control.js +219 -23
- package/dist/session/conversation-normalizer.d.ts +2 -1
- package/dist/session/conversation-normalizer.js +1 -1
- package/dist/session/conversation-observation.d.ts +25 -0
- package/dist/session/conversation-observation.js +100 -0
- package/dist/session/conversation-replay.d.ts +50 -0
- package/dist/session/conversation-replay.js +203 -0
- package/dist/session/conversation-store.d.ts +15 -1
- package/dist/session/conversation-store.js +213 -26
- package/dist/session/conversation-types.d.ts +57 -4
- package/dist/session/prompt-batch.d.ts +79 -0
- package/dist/session/prompt-batch.js +120 -0
- package/dist/session/task-notice.d.ts +14 -0
- package/dist/session/task-notice.js +13 -0
- package/dist/session/types.d.ts +42 -1
- package/dist/setup-tunnel-preflight.d.ts +34 -0
- package/dist/setup-tunnel-preflight.js +62 -0
- package/dist/socket-path.d.ts +2 -0
- package/dist/socket-path.js +22 -0
- package/dist/spawn.d.ts +5 -1
- package/dist/spawn.js +40 -4
- package/dist/startup-prompt.d.ts +15 -0
- package/dist/startup-prompt.js +71 -0
- package/dist/startup-readiness.d.ts +20 -1
- package/dist/startup-readiness.js +66 -3
- package/dist/startup-telemetry.d.ts +16 -0
- package/dist/startup-telemetry.js +46 -0
- package/dist/subscriptions/cli.d.ts +91 -0
- package/dist/subscriptions/cli.js +223 -0
- package/dist/subscriptions/launch.d.ts +37 -0
- package/dist/subscriptions/launch.js +93 -0
- package/dist/subscriptions/login.d.ts +77 -0
- package/dist/subscriptions/login.js +215 -0
- package/dist/subscriptions/observed.d.ts +7 -0
- package/dist/subscriptions/observed.js +44 -0
- package/dist/subscriptions/probe.d.ts +10 -0
- package/dist/subscriptions/probe.js +73 -0
- package/dist/subscriptions/service.d.ts +102 -0
- package/dist/subscriptions/service.js +364 -0
- package/dist/subscriptions/store.d.ts +71 -0
- package/dist/subscriptions/store.js +143 -0
- package/dist/supervisor/adoption.d.ts +8 -0
- package/dist/supervisor/adoption.js +78 -0
- package/dist/supervisor/catalog.d.ts +62 -0
- package/dist/supervisor/catalog.js +254 -0
- package/dist/supervisor/fleet.d.ts +8 -0
- package/dist/supervisor/fleet.js +89 -0
- package/dist/supervisor/index.js +3 -6
- package/dist/supervisor/launchd.d.ts +1 -1
- package/dist/supervisor/launchd.js +26 -13
- package/dist/supervisor/legacy.d.ts +35 -0
- package/dist/supervisor/legacy.js +524 -0
- package/dist/supervisor/manager.d.ts +15 -0
- package/dist/supervisor/manager.js +270 -0
- package/dist/supervisor/registration-refresh.d.ts +45 -0
- package/dist/supervisor/registration-refresh.js +266 -0
- package/dist/supervisor/scope.d.ts +4 -0
- package/dist/supervisor/scope.js +10 -0
- package/dist/supervisor/systemd.d.ts +2 -2
- package/dist/supervisor/systemd.js +18 -37
- package/dist/task-supervision.d.ts +9 -0
- package/dist/task-supervision.js +145 -0
- package/dist/temp-idle.d.ts +17 -0
- package/dist/temp-idle.js +42 -0
- package/dist/temp-lifecycle.d.ts +23 -8
- package/dist/temp-lifecycle.js +123 -66
- package/dist/temp-supervisor-recovery.d.ts +1 -1
- package/dist/temp-supervisor-recovery.js +2 -2
- package/dist/tunnel-setup-completion.d.ts +7 -0
- package/dist/tunnel-setup-completion.js +13 -0
- package/dist/tunnel-setup-input.d.ts +19 -0
- package/dist/tunnel-setup-input.js +130 -0
- package/dist/watchdog/query.d.ts +3 -1
- package/dist/watchdog/query.js +2 -1
- package/dist/web/agent-attachments.d.ts +29 -0
- package/dist/web/agent-attachments.js +162 -0
- package/dist/web/auth.d.ts +65 -2
- package/dist/web/auth.js +201 -11
- package/dist/web/available-port.d.ts +2 -0
- package/dist/web/available-port.js +23 -0
- package/dist/web/control.d.ts +3 -3
- package/dist/web/control.js +10 -8
- package/dist/web/conversation-stream-codec.d.ts +23 -0
- package/dist/web/conversation-stream-codec.js +110 -0
- package/dist/web/conversation-stream.d.ts +26 -0
- package/dist/web/conversation-stream.js +239 -0
- package/dist/web/events.d.ts +2 -0
- package/dist/web/events.js +9 -0
- package/dist/web/fleet-config-service.d.ts +7 -1
- package/dist/web/fleet-config-service.js +61 -16
- package/dist/web/prefix-gateway.d.ts +32 -0
- package/dist/web/prefix-gateway.js +248 -0
- package/dist/web/resource-views.d.ts +138 -0
- package/dist/web/resource-views.js +519 -0
- package/dist/web/runtime.d.ts +3 -1
- package/dist/web/runtime.js +132 -34
- package/dist/web/server.d.ts +19 -0
- package/dist/web/server.js +893 -71
- package/dist/web/service.d.ts +11 -2
- package/dist/web/service.js +30 -4
- package/dist/web/workspace-devices.d.ts +107 -0
- package/dist/web/workspace-devices.js +277 -0
- package/dist/web/workspace-tunnel.d.ts +1 -0
- package/dist/web/workspace-tunnel.js +34 -0
- package/dist/workspace-enrollment.d.ts +83 -0
- package/dist/workspace-enrollment.js +605 -0
- package/dist/workspace-replacement.d.ts +66 -0
- package/dist/workspace-replacement.js +238 -0
- package/docs/acp-files.md +146 -0
- package/docs/conversation-stream.md +216 -0
- package/docs/fleet-migration.md +54 -0
- package/docs/live-voice.md +13 -0
- package/docs/room-layouts.md +227 -0
- package/docs/self-reminders.md +374 -0
- package/docs/task-progress-review.md +143 -0
- package/docs/task-workspaces.md +225 -0
- package/docs/validation/managed-cli-permissions.md +421 -0
- package/examples/room-layouts/fresh.yaml +27 -0
- package/examples/room-layouts/scoped.yaml +21 -0
- package/examples/room-layouts/shared.yaml +19 -0
- package/package.json +25 -20
- package/presets/README.md +78 -0
- package/presets/brain-catalog.json +8 -2
- package/presets/fleet/agent_templates/Critic.yaml +1 -1
- package/presets/fleet/agent_templates/Developer.yaml +1 -1
- package/presets/fleet/agent_templates/Engineer.yaml +5 -0
- package/presets/fleet/agent_templates/LocalCoordinator.yaml +6 -3
- package/presets/fleet/agents/FleetCoordinator.yaml +1 -1
- package/presets/fleet/brains/claude-fable-5-1-high.yaml +5 -0
- package/presets/fleet/brains/claude-fable-5-1-low.yaml +5 -0
- package/presets/fleet/brains/claude-fable-5-1-max.yaml +5 -0
- package/presets/fleet/brains/claude-fable-5-1-medium.yaml +5 -0
- package/presets/fleet/brains/claude-fable-5-1-xhigh.yaml +5 -0
- package/presets/fleet/brains/claude-fable-5-high.yaml +1 -1
- package/presets/fleet/brains/claude-fable-5-low.yaml +1 -1
- package/presets/fleet/brains/claude-fable-5-max.yaml +1 -1
- package/presets/fleet/brains/claude-fable-5-medium.yaml +1 -1
- package/presets/fleet/brains/claude-fable-5-xhigh.yaml +1 -1
- package/presets/fleet/brains/claude-haiku-4-5-20251001-default.yaml +4 -0
- package/presets/fleet/brains/claude-opus-5-5-high.yaml +5 -0
- package/presets/fleet/brains/claude-opus-5-5-low.yaml +5 -0
- package/presets/fleet/brains/claude-opus-5-5-max.yaml +5 -0
- package/presets/fleet/brains/claude-opus-5-5-medium.yaml +5 -0
- package/presets/fleet/brains/claude-opus-5-5-xhigh.yaml +5 -0
- package/presets/fleet/brains/claude-opus-5-high.yaml +1 -1
- package/presets/fleet/brains/claude-opus-5-low.yaml +1 -1
- package/presets/fleet/brains/claude-opus-5-max.yaml +1 -1
- package/presets/fleet/brains/claude-opus-5-medium.yaml +1 -1
- package/presets/fleet/brains/claude-opus-5-xhigh.yaml +1 -1
- package/presets/fleet/brains/claude-sonnet-5-high.yaml +1 -1
- package/presets/fleet/brains/claude-sonnet-5-low.yaml +1 -1
- package/presets/fleet/brains/claude-sonnet-5-max.yaml +1 -1
- package/presets/fleet/brains/claude-sonnet-5-medium.yaml +1 -1
- package/presets/fleet/brains/claude-sonnet-5-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-3-codex-spark-high.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-3-codex-spark-low.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-3-codex-spark-medium.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-3-codex-spark-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-4-high.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-4-low.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-4-medium.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-4-mini-high.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-4-mini-low.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-4-mini-medium.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-4-mini-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-4-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-5-high.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-5-low.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-5-medium.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-5-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-luna-high.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-luna-low.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-luna-max.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-luna-medium.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-luna-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-sol-high.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-sol-low.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-sol-max.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-sol-medium.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-sol-ultra.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-sol-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-terra-high.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-terra-low.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-terra-max.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-terra-medium.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-terra-ultra.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-5-6-terra-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-6-1-sol-high.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-1-sol-low.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-1-sol-max.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-1-sol-medium.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-1-sol-ultra.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-1-sol-xhigh.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-astra-high.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-6-astra-low.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-6-astra-max.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-6-astra-medium.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-6-astra-ultra.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-6-astra-xhigh.yaml +1 -1
- package/presets/fleet/brains/codex-gpt-6-luna-high.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-luna-low.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-luna-max.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-luna-medium.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-luna-xhigh.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-sol-high.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-sol-low.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-sol-max.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-sol-medium.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-sol-ultra.yaml +5 -0
- package/presets/fleet/brains/codex-gpt-6-sol-xhigh.yaml +5 -0
- package/presets/fleet/roles/Coordinator.yaml +21 -13
- package/presets/fleet/roles/Critic.yaml +24 -0
- package/presets/fleet/roles/Developer.yaml +32 -0
- package/presets/fleet/roles/Engineer.yaml +72 -0
- package/presets/fleet/roles/LocalCoordinator.yaml +17 -0
- package/presets/fleet/room_layouts/engineering.yaml +25 -0
- package/presets/fleet/room_layouts/pair.yaml +24 -0
- package/presets/fleet/room_layouts/single.yaml +17 -0
- package/presets/fleet/room_layouts/team.yaml +30 -0
- package/presets/fleet/room_templates/engineering.yaml +19 -0
- package/presets/manifest.json +2 -2
- package/dist/web-app/assets/index-59GF-gsZ.css +0 -1
- package/dist/web-app/assets/index-C0h3ALvs.js +0 -10
- package/dist/web-app/icons/ours-fleet-maskable.svg +0 -4
- package/dist/web-app/icons/ours-fleet.svg +0 -4
- package/dist/web-app/index.html +0 -17
- package/dist/web-app/manifest.webmanifest +0 -15
- package/dist/web-app/offline.html +0 -18
- package/dist/web-app/sw.js +0 -51
package/dist/docs.js
CHANGED
|
@@ -172,34 +172,29 @@ rollback; inspect host integration and private init stage/recovery evidence.
|
|
|
172
172
|
Attachment also accepts \`/permit <permission-id> <option-id>\`, \`/interrupt\`,
|
|
173
173
|
and \`/detach\`.
|
|
174
174
|
|
|
175
|
-
## Local
|
|
175
|
+
## Local HTTP service
|
|
176
176
|
|
|
177
|
-
|
|
178
|
-
|
|
177
|
+
Fleet runs an HTTP service for the App. It serves no pages and opens no
|
|
178
|
+
browser; every screen is in the App.
|
|
179
179
|
|
|
180
180
|
\`\`\`sh
|
|
181
181
|
npm i -g @ours.network/fleet
|
|
182
|
-
ours-fleet
|
|
183
|
-
ours-fleet
|
|
184
|
-
ours-fleet web # install/update service, start, pair browser
|
|
182
|
+
ours-fleet setup-tunnel --file /private/setup.txt # connect host; prints QR and connection code
|
|
183
|
+
ours-fleet link-device # connect another browser or device
|
|
185
184
|
\`\`\`
|
|
186
185
|
|
|
187
|
-
The
|
|
188
|
-
owner-level systemd user service (Linux) or LaunchAgent (macOS)
|
|
189
|
-
five-minute one-use pairing link in the local browser. After pairing, bookmark
|
|
190
|
-
the plain URL or install the PWA. To pair a new, signed-out, or revoked browser,
|
|
191
|
-
run \`ours-fleet web open\`.
|
|
186
|
+
The service listens on \`http://127.0.0.1:49271/\` and is installed as an
|
|
187
|
+
owner-level systemd user service (Linux) or LaunchAgent (macOS).
|
|
192
188
|
|
|
193
189
|
\`\`\`sh
|
|
194
190
|
ours-fleet web status
|
|
195
191
|
ours-fleet web start|stop|restart
|
|
196
|
-
ours-fleet web
|
|
197
|
-
ours-fleet web revoke-all # revoke every browser and active session
|
|
192
|
+
ours-fleet web revoke-all # revoke every device and active session
|
|
198
193
|
ours-fleet web uninstall
|
|
199
|
-
ours-fleet web serve --port 0
|
|
194
|
+
ours-fleet web serve --port 0 # isolated foreground/testing mode
|
|
200
195
|
\`\`\`
|
|
201
196
|
|
|
202
|
-
The
|
|
197
|
+
The service is IPv4-loopback-only by default. Both \`localhost\` and
|
|
203
198
|
\`127.0.0.1\` are accepted locally. For an nginx/TLS reverse proxy, keep the
|
|
204
199
|
default bind and declare the exact browser origin:
|
|
205
200
|
|
|
@@ -271,6 +266,88 @@ the executor inside the role's existing OS sandbox, and ordinary CLI validation
|
|
|
271
266
|
the source of truth. Hidden worker entry points remain internal; public lifecycle and
|
|
272
267
|
operator commands are not restricted by the proxy.
|
|
273
268
|
|
|
269
|
+
### Fleet commands from a command sandbox (\`managed_cli\`)
|
|
270
|
+
|
|
271
|
+
That supervisor connection is a Unix socket. A harness command sandbox (Codex
|
|
272
|
+
\`workspace-write\`, Claude's OS sandbox) can refuse it with \`connect EPERM\`
|
|
273
|
+
before any command, even \`--help\`, is parsed. Fleet prepares the native
|
|
274
|
+
harness policy for one declared workflow; you never write Codex rules or Claude
|
|
275
|
+
sandbox settings by hand.
|
|
276
|
+
|
|
277
|
+
Opt an Agent (or Agent Template) in explicitly. It is never inferred from a
|
|
278
|
+
role's name or persona and is not inherited by agents it spawns:
|
|
279
|
+
|
|
280
|
+
\`\`\`yaml
|
|
281
|
+
# fleet/agents/FleetCoordinator.yaml
|
|
282
|
+
role: { ref: Coordinator }
|
|
283
|
+
brain: { ref: codex-gpt-5-4-medium }
|
|
284
|
+
permissions: { approval: auto, filesystem: workspace, unattended: deny }
|
|
285
|
+
managed_cli: [task-workflow]
|
|
286
|
+
\`\`\`
|
|
287
|
+
|
|
288
|
+
\`ours-fleet managed-cli setup --enable FleetCoordinator\` adds that one key to
|
|
289
|
+
an existing Agent file and changes nothing else, permissions included.
|
|
290
|
+
\`ours-fleet managed-cli setup\` generates the policy for every declaring agent
|
|
291
|
+
and \`ours-fleet managed-cli status\` compares without writing. Neither starts a
|
|
292
|
+
session or a model. The same preparation runs at every agent start, so spawned
|
|
293
|
+
and task-room agents need no separate step.
|
|
294
|
+
|
|
295
|
+
\`task-workflow\` prepares: \`task create|start|finish|block|unblock|review\`,
|
|
296
|
+
\`task list|show\`, \`room show|members\`, \`template list|show|validate\`,
|
|
297
|
+
\`config\`, \`docs\` and \`--help\`. \`task start\` and \`task finish\`
|
|
298
|
+
provision and retire rooms and agents: this is real authority. Not prepared, and
|
|
299
|
+
still sandboxed: \`spawn\`, \`ours tools|call\`, \`status|peek|send\`, room
|
|
300
|
+
create/delete/close, task cancel/delete and service administration.
|
|
301
|
+
|
|
302
|
+
The agent invokes a prepared command through the pinned entry form shown in its
|
|
303
|
+
briefing:
|
|
304
|
+
|
|
305
|
+
\`\`\`sh
|
|
306
|
+
/abs/node /abs/fleet/dist/cli.js --managed-configuration /abs/fleet.yaml task create --title "..." --backlog --no-room
|
|
307
|
+
\`\`\`
|
|
308
|
+
|
|
309
|
+
What the native policy does and does not do:
|
|
310
|
+
|
|
311
|
+
- A rule fixes the Node executable, this Fleet CLI, the configuration and the
|
|
312
|
+
command. It matches an argv prefix and admits every trailing option and
|
|
313
|
+
argument. It is not argument validation, target authorization or per-agent
|
|
314
|
+
isolation.
|
|
315
|
+
- A later \`-c\`/\`--configuration\` naming another file is refused by the
|
|
316
|
+
Fleet CLI itself, after the process has started outside the sandbox. That is
|
|
317
|
+
Fleet validation, not a native policy denial.
|
|
318
|
+
- The supervisor audit and ordinary CLI validation are unchanged. The pinned
|
|
319
|
+
form is refused outside a managed session, where no supervisor would audit it.
|
|
320
|
+
- Compound, piped, redirected, \`$(...)\` and \`VAR=value\`-prefixed command
|
|
321
|
+
lines do not match and stay sandboxed.
|
|
322
|
+
- Codex: a Fleet-owned \`.codex/rules/ours-fleet-<id>.rules\` in the agent's
|
|
323
|
+
workspace. It applies to every trusted Codex session in that workspace, and
|
|
324
|
+
Codex must trust the workspace; Fleet does not change trust. Other files in
|
|
325
|
+
that directory are never touched.
|
|
326
|
+
- Claude: entries in the agent's own Fleet settings overlay
|
|
327
|
+
(\`permissions.allow\` and \`sandbox.excludedCommands\`). Your Claude settings
|
|
328
|
+
are not modified and Fleet never enables or disables Claude's OS sandbox.
|
|
329
|
+
- A Fleet CLI or configuration path containing spaces is spelled in single
|
|
330
|
+
quotes (Codex >= 0.160.0). The Node executable itself must be at a path that
|
|
331
|
+
needs no quoting: neither harness matches a quoted executable against a rule.
|
|
332
|
+
A path containing anything but letters, digits, spaces and \`_@%+=:,./-\`
|
|
333
|
+
(quotes, backslashes, \`*\` and other pattern characters), or located inside
|
|
334
|
+
the agent's workspace or a \`harness_options.add_dirs\` directory (also through
|
|
335
|
+
a symlink), is reported as unsupported; so is a Codex role with
|
|
336
|
+
\`harness_options.config\` or \`profile\`, whose sandbox Fleet does not inspect.
|
|
337
|
+
- Prepared for: Codex native app-server and bundled ACP, Claude bundled ACP, on
|
|
338
|
+
Linux and macOS. The generated setup was qualified end to end on Linux
|
|
339
|
+
(Codex 0.160.0, Claude Code 2.1.289); the macOS run of that matrix is
|
|
340
|
+
outstanding and \`managed-cli status\` says so there. Custom session
|
|
341
|
+
commands, other harnesses, roles declaring \`isolation:\` and other
|
|
342
|
+
platforms are reported as unsupported and left exactly as sandboxed as before.
|
|
343
|
+
|
|
344
|
+
\`ours-fleet doctor\` reports three separate facts per declaring agent: the
|
|
345
|
+
generated setup (static), whether the last launch loaded the current policy, and
|
|
346
|
+
what the supervisor audit ledger recorded since. A prepared setup is not
|
|
347
|
+
evidence of supervisor access, and a successful \`--help\` proves only its own
|
|
348
|
+
audited path, not the task lifecycle. See
|
|
349
|
+
\`docs/validation/managed-cli-permissions.md\`.
|
|
350
|
+
|
|
274
351
|
Command invocation, raw argv, read-only work, validation failures, and generic
|
|
275
352
|
outcomes are never forwarded to the Owner-visible channel. Fleet announces only
|
|
276
353
|
confirmed Agent, Task, and Room lifecycle changes. Local diagnostics retain
|
|
@@ -492,6 +569,17 @@ Messenger-bound results are capped at 3,500 Unicode code points and 12,000 UTF-8
|
|
|
492
569
|
bytes with structural omission notices. \`--json\` bypasses this presentation layer
|
|
493
570
|
and retains the versioned machine schema and serialization order.
|
|
494
571
|
|
|
572
|
+
Active task \`show\` reports current readiness separately from lifecycle, also in
|
|
573
|
+
Owner commands. Start/work preserve the fail-closed \`task_not_ready\` behavior.
|
|
574
|
+
Unknown control health does not prove a dead agent or authorize replacement.
|
|
575
|
+
Before deliberate recovery, Fleet Coordinator inspects current seats and exact
|
|
576
|
+
old-launch worklogs/termination evidence in \`recovery/temporary\`, preserves
|
|
577
|
+
original records, and privately records verified old/new launch provenance.
|
|
578
|
+
A new inbox is not complete history: page scoped history to the end, authenticate
|
|
579
|
+
historical Owner authors, and compare completed actions and replies before resuming.
|
|
580
|
+
Do not restore archived identity state, reuse invites, adopt same-role seats or
|
|
581
|
+
blindly replay instructions. Ask the Owner if authority/completion is uncertain.
|
|
582
|
+
|
|
495
583
|
Every task belongs to a named list. The built-in \`default\` list always exists,
|
|
496
584
|
and legacy tasks or create calls without \`--list\` resolve to it. Use \`task lists\`,
|
|
497
585
|
\`task list-create <name>\`, \`task list-rename <name> <new-name>\`, and
|
|
@@ -551,6 +639,214 @@ management API equivalent is \`DELETE /api/v1/tasks/<id>?confirm=<id>\` (200 whe
|
|
|
551
639
|
settled, 202 while pending; \`GET /api/v1/tasks?includeDeleting=true\` exposes
|
|
552
640
|
deletion-pending tasks to operators).
|
|
553
641
|
|
|
642
|
+
### Task Progress and To review
|
|
643
|
+
|
|
644
|
+
A task can carry an append-only **Progress** milestone log and a self-contained
|
|
645
|
+
**To review** package (Markdown plus retained files). Agents launched for a task
|
|
646
|
+
use \`fleet_task_progress_list\`, \`fleet_task_progress_append\`,
|
|
647
|
+
\`fleet_task_review_show\`, \`fleet_task_review_set\` and
|
|
648
|
+
\`fleet_task_review_detach\`; files are attached from the task workspace with the CLI:
|
|
649
|
+
|
|
650
|
+
\`\`\`sh
|
|
651
|
+
ours-fleet task progress TASK [--text TEXT | --text-file FILE] [--request-key KEY] [--json]
|
|
652
|
+
ours-fleet task review-package TASK [--markdown-file FILE] [--attach PATH] [--detach ID] [--json]
|
|
653
|
+
\`\`\`
|
|
654
|
+
|
|
655
|
+
By default only the LocalCoordinator writes Progress, and every task role prepares
|
|
656
|
+
the To review package before a Review handoff without gaining lifecycle authority.
|
|
657
|
+
At Review the task description keeps only the clickable PR links, one per line (a task
|
|
658
|
+
without PRs links its actual deliverables, never an invented PR); the package holds the
|
|
659
|
+
rest, including the original description as an attached file.
|
|
660
|
+
Full contract: \`docs/task-progress-review.md\` in the package.
|
|
661
|
+
|
|
662
|
+
### ours app help
|
|
663
|
+
|
|
664
|
+
Questions about using the ours app are answered from the public user guide at
|
|
665
|
+
\`https://app.ours.network/llms.txt\` (source: ours-app \`web/public/llms.txt\`). Every
|
|
666
|
+
Fleet-generated briefing carries an "ours app help" section with that pointer; if
|
|
667
|
+
the guide cannot be fetched, say so and answer only from what can be verified.
|
|
668
|
+
Rewriting a briefing does not change a running conversation: \`restart\` resumes
|
|
669
|
+
context, so tell an existing agent once to reread the changed section (or choose
|
|
670
|
+
\`force-restart\` for a fresh context).
|
|
671
|
+
|
|
672
|
+
### Guided demo task
|
|
673
|
+
|
|
674
|
+
A Fleet Coordinator procedure that shows a user how a team task works while
|
|
675
|
+
producing something useful: a personalized getting-started guide and a one-page
|
|
676
|
+
quick reference built from the public user guide. It needs no external accounts
|
|
677
|
+
and changes nothing outside the task.
|
|
678
|
+
|
|
679
|
+
Rules: use the shipped \`team\` room template (LocalCoordinator, Developer, Critic)
|
|
680
|
+
and never a room layout: layout tasks have no "Add agent to task", and the app's New
|
|
681
|
+
task always uses a layout. Never add agents, or generate, view or accept invitations,
|
|
682
|
+
for the user; the user performs those clicks. Never finish or delete the task unless
|
|
683
|
+
the user explicitly asks. Inside the task, the room's LocalCoordinator explains each
|
|
684
|
+
step to the user and waits for their clicks.
|
|
685
|
+
|
|
686
|
+
1. Explain before acting: you will create a team task named "Guided demo: getting
|
|
687
|
+
started with ours" with three agents (a LocalCoordinator who guides the user, a
|
|
688
|
+
Developer who writes the files, a Critic who checks them). It appears under
|
|
689
|
+
Navigate menu → "Tasks" (Active column) and in Chats with the Tasks filter. It
|
|
690
|
+
takes about 30 minutes, the user will click a few controls, and its files live in
|
|
691
|
+
the task folder on this host.
|
|
692
|
+
2. Optionally ask how the user wants to use ours (no secrets). Write the brief
|
|
693
|
+
below, with placeholders filled, to a file outside any task folder, then:
|
|
694
|
+
|
|
695
|
+
\`\`\`sh
|
|
696
|
+
ours-fleet task create --title "Guided demo: getting started with ours" --brief-file FILE --backlog --no-room
|
|
697
|
+
ours-fleet task start TASK --template team
|
|
698
|
+
\`\`\`
|
|
699
|
+
|
|
700
|
+
Before \`task start\`, run \`ours-fleet template show team\`, which shows the
|
|
701
|
+
installed members' slot, Role and Agent Template. Look up each Agent Template's
|
|
702
|
+
Brain and permissions in \`ours-fleet config --json\` (template show does not
|
|
703
|
+
print them) and include them in the launch plan as for any task. The recipe
|
|
704
|
+
expects exactly one LocalCoordinator, one Developer and one Critic. If the
|
|
705
|
+
installed \`team\` differs, tell the user and stop rather than editing their
|
|
706
|
+
configuration.
|
|
707
|
+
3. Then tell the user where everything is:
|
|
708
|
+
- Navigate menu → "Tasks" → the task → "Open room": the team's conversation. The
|
|
709
|
+
LocalCoordinator will guide them there, and they can write to the team in it.
|
|
710
|
+
- "Progress" shows real milestones; "To review" will hold the results.
|
|
711
|
+
- The task folder is \`~/.ours-fleet/workspaces/tasks/TASK\`.
|
|
712
|
+
|
|
713
|
+
Room posts do not wake you, and the room does not message you. Ask the user to come
|
|
714
|
+
back to this chat and say "check the demo" when the room shows "READY FOR REVIEW",
|
|
715
|
+
or whenever they want a status. Then read \`ours-fleet task progress TASK\` and the
|
|
716
|
+
To review package. Optionally set one \`fleet_reminder_create\` self-reminder
|
|
717
|
+
about 15 minutes ahead, renewed only while the demo is waiting. Never busy-poll.
|
|
718
|
+
4. When the user says "check the demo" and Progress shows S5, follow the normal
|
|
719
|
+
Review handoff. Check that \`ours-fleet task review-package TASK\` lists all four
|
|
720
|
+
files (\`getting-started.md\`, \`quick-reference.md\`, \`tour-evidence.md\`,
|
|
721
|
+
\`original-description.md\`) and that its Markdown lets the user review without
|
|
722
|
+
the room; otherwise ask the user to tell the room what is missing.
|
|
723
|
+
- The task has no PRs, so the description becomes one clickable link to its actual
|
|
724
|
+
deliverables. Never invent a PR.
|
|
725
|
+
- Ask the user to open the task's "To review" page and copy the browser address
|
|
726
|
+
(an absolute https URL). Never guess a host or workspace.
|
|
727
|
+
- The description renders only absolute links, so use exactly
|
|
728
|
+
\`[To review: getting-started.md, quick-reference.md, tour-evidence.md](<copied URL>)\`.
|
|
729
|
+
- Fleet has no CLI command for descriptions, so the user applies it: task page →
|
|
730
|
+
"Edit description" → paste → "Save".
|
|
731
|
+
- Wait until the save succeeds, then run \`ours-fleet task review TASK\` and tell
|
|
732
|
+
the user: Navigate menu → "Tasks" → Review column → the task → "To review" →
|
|
733
|
+
"View" or "Download".
|
|
734
|
+
If the room instead shows "DEMO STOPPED (INCOMPLETE)", say plainly which steps
|
|
735
|
+
were not done and that the completion criteria were not met. Offer to start a new
|
|
736
|
+
demo later. Move this task to Review only if the user asks to inspect the partial
|
|
737
|
+
files. Use the same copy-and-save steps, but the link text names only the files
|
|
738
|
+
that really exist (for example \`[Incomplete demo, To review: getting-started.md](<copied URL>)\`).
|
|
739
|
+
5. Explain closing: "Task actions" → "Finish task" completes the task, closes its
|
|
740
|
+
agents (including the added helper) and the task room, and keeps the task folder
|
|
741
|
+
and To review files. "Delete task" (retype the task ID) permanently deletes the
|
|
742
|
+
task folder, including uncommitted work, plus Progress and To review files. The
|
|
743
|
+
temporary agent the user created for the invitation exercise is not part of the
|
|
744
|
+
task; they can close it with "Finish chat" on its profile. Let the user click
|
|
745
|
+
"Finish task" themselves.
|
|
746
|
+
|
|
747
|
+
Brief (fill USER and GOALS; keep the rest verbatim):
|
|
748
|
+
|
|
749
|
+
\`\`\`text
|
|
750
|
+
Guided demo task for USER. Produce a short personalized getting-started guide and a
|
|
751
|
+
one-page quick reference to the ours app that the user keeps, while the user learns
|
|
752
|
+
how a team task works. Everything is local: no external accounts, services,
|
|
753
|
+
publishing or production changes.
|
|
754
|
+
Source of truth: https://app.ours.network/llms.txt. Fetch it; if it is unavailable, say
|
|
755
|
+
so in the room and use only what the user confirms seeing. Personalization: GOALS.
|
|
756
|
+
The user reads and writes in this room. Write to the user in plain language.
|
|
757
|
+
|
|
758
|
+
Roles
|
|
759
|
+
- local_coordinator: the user's guide in this room. Explain each step before it
|
|
760
|
+
happens, give exact clicks, wait for the user to report back, and never perform
|
|
761
|
+
their clicks or handle invitation codes. Sequence the team, write the Progress log
|
|
762
|
+
(request keys demo-s1..demo-s5, one entry per stage, only after its artifact or the
|
|
763
|
+
user's action exists) and write the To review Markdown.
|
|
764
|
+
- developer (the member whose name ends in -developer-1, present from the start):
|
|
765
|
+
owns the task workspace and writes getting-started.md, tour-evidence.md and
|
|
766
|
+
original-description.md. Attaches files to To review.
|
|
767
|
+
- critic: checks every file against llms.txt; posts "CHECK: OK" or numbered
|
|
768
|
+
corrections; one check and at most one re-check per file; edits no files.
|
|
769
|
+
- helper (added during the demo by the USER with "Add agent to task" and Member name
|
|
770
|
+
helper, so its name ends in -helper-1; it also has the Developer role): writes
|
|
771
|
+
quick-reference.md and edits no other file. If your name ends in -helper-1, this is
|
|
772
|
+
your only job; the developer duties above belong to the member whose name ends in
|
|
773
|
+
-developer-1.
|
|
774
|
+
- newcomer (a temporary agent the USER admits with a room invitation): a room
|
|
775
|
+
participant only. Posts one question and one suggestion; never requests files,
|
|
776
|
+
invitation codes or task actions.
|
|
777
|
+
|
|
778
|
+
Put every file in this task's workspace.
|
|
779
|
+
S1 Draft (developer): write getting-started.md with
|
|
780
|
+
(a) "Where things are": 6-10 checklist items, each with its exact path from
|
|
781
|
+
llms.txt (Tasks board, this task's page, Open room, Progress, To review,
|
|
782
|
+
Settings, Add or connect, Generate invite, Accept invite, Room participants);
|
|
783
|
+
(b) "This task, explained": task ID, where it appears, its folder path, and what
|
|
784
|
+
Finish task and Delete task do to that folder;
|
|
785
|
+
(c) "For you": personalization.
|
|
786
|
+
The critic checks it and the developer applies corrections. Progress: "S1:
|
|
787
|
+
getting-started.md drafted and checked (N items)".
|
|
788
|
+
S2 Add an agent (user click): local_coordinator explains that the user can add a
|
|
789
|
+
task-managed agent, which uses this task's folder and closes when the task
|
|
790
|
+
finishes. Steps: task page → "Task actions" (⋯) → "Add agent to task" → "Member
|
|
791
|
+
name" helper, "Agent Template" Developer, "Role" Developer, default "Brain" →
|
|
792
|
+
"Create and join room". The helper appears under "Participants" and in this room.
|
|
793
|
+
Never add agents yourselves. When the helper joins: helper writes
|
|
794
|
+
quick-reference.md (the five most common actions, each as one exact path from
|
|
795
|
+
llms.txt); the critic checks it. Progress: "S2: helper added by the user via Add
|
|
796
|
+
agent to task; quick-reference.md written and checked".
|
|
797
|
+
S3 Invite a collaborator (user clicks): local_coordinator explains real collaboration
|
|
798
|
+
first. A colleague or friend can join this room with their own ours identity or
|
|
799
|
+
agent when the user sends them a room invitation privately. Joining grants
|
|
800
|
+
conversation in this room only: no access to the task's files and no task
|
|
801
|
+
actions (an agent's own host permissions are separate). Then guide the exercise,
|
|
802
|
+
which plays the colleague with a temporary agent:
|
|
803
|
+
1. "Open room" → "Room actions" (⋯) → "Room participants" → "Generate room
|
|
804
|
+
invite" → choose "Room role" (Participant) and "Invitation type" (One-time) →
|
|
805
|
+
"Generate one-time room invite" → "Copy invitation". Keep it private and
|
|
806
|
+
never paste it into this room.
|
|
807
|
+
2. "Add or connect" → "New chat" → send this first message to start the agent:
|
|
808
|
+
"You will be invited to a room for a guided ours demo. After you join, post
|
|
809
|
+
exactly one message there: one question a newcomer would ask about the ours app
|
|
810
|
+
and one suggestion. Do not ask for files, invitation codes or task actions."
|
|
811
|
+
3. On that chat, "Agent actions" (⋯) → "Accept invite" → paste → "Accept invite".
|
|
812
|
+
4. Back in "Room participants", press "Refresh participants" until the new seat
|
|
813
|
+
shows active. It can stay pending until the connection completes; a successful
|
|
814
|
+
Accept alone is not membership.
|
|
815
|
+
When the newcomer posts, the developer adds "Questions from a newcomer" to
|
|
816
|
+
getting-started.md, answering from llms.txt and crediting the participant by
|
|
817
|
+
display name. Progress: "S3: newcomer joined via room invitation; question
|
|
818
|
+
answered".
|
|
819
|
+
S4 Evidence (developer): write tour-evidence.md: each stage, its time, what the user
|
|
820
|
+
did, the critic's results and any skipped step. Save this task's current
|
|
821
|
+
description (the brief above, the original requirements) unchanged as
|
|
822
|
+
original-description.md. The critic checks tour-evidence.md. Progress: "S4: tour
|
|
823
|
+
evidence written and checked".
|
|
824
|
+
S5 Ready: the developer attaches getting-started.md, quick-reference.md,
|
|
825
|
+
tour-evidence.md and original-description.md with
|
|
826
|
+
\`ours-fleet task review-package <task-id> --attach <path>\`. The local_coordinator
|
|
827
|
+
writes the To review Markdown with fleet_task_review_set: what was produced, how to
|
|
828
|
+
open it, what each stage showed, and Finish versus Delete. It links each file by
|
|
829
|
+
its retained path /api/v1/tasks/<task-id>/review/artifacts/<artifact-id>, using the
|
|
830
|
+
artifact IDs from \`ours-fleet task review-package <task-id> --json\`, and checks
|
|
831
|
+
that the package lists all four files. Progress: "S5: ready for review, 4 files in
|
|
832
|
+
To review". Post "READY FOR REVIEW" in the room and tell the user: go back to your
|
|
833
|
+
Fleet Coordinator chat and say "check the demo". Then stop.
|
|
834
|
+
If the user declines S2 or S3, pause: the local_coordinator says the demo is
|
|
835
|
+
incomplete without that step and asks whether to resume it now or stop the demo.
|
|
836
|
+
Nobody substitutes for the helper or the newcomer. To resume, continue from that
|
|
837
|
+
step. To stop, the local_coordinator records "Demo stopped by the user at S<n>; S<n>
|
|
838
|
+
and later not exercised" in Progress; the developer writes tour-evidence.md saying
|
|
839
|
+
the same and attaches only the files that really exist, together with
|
|
840
|
+
original-description.md; the local_coordinator writes To review Markdown headed
|
|
841
|
+
"Incomplete demo", posts "DEMO STOPPED (INCOMPLETE)" and tells the user to tell their
|
|
842
|
+
Fleet Coordinator. Never present work as done by a participant who did not do it. Never run task review, finish, cancel or delete: the
|
|
843
|
+
Fleet Coordinator moves the task to Review and the user finishes it.
|
|
844
|
+
Done when getting-started.md, quick-reference.md, tour-evidence.md and
|
|
845
|
+
original-description.md exist in the workspace and are attached to To review, every
|
|
846
|
+
Progress entry matches a real artifact or user action, and no invitation code or
|
|
847
|
+
secret appears anywhere.
|
|
848
|
+
\`\`\`
|
|
849
|
+
|
|
554
850
|
## Permissions
|
|
555
851
|
|
|
556
852
|
Prefer the harness-neutral \`permissions\` block:
|
|
@@ -749,9 +1045,21 @@ the service waiting, with a diagnostic code in the journal. Each wait is bounded
|
|
|
749
1045
|
and systemd retries it until the daemon is ready; stopping the service cancels it.
|
|
750
1046
|
This does not consume the agent crash budget or discard its session context.
|
|
751
1047
|
Once the runner starts, its normal crash circuit breaker still applies.
|
|
752
|
-
After upgrading Fleet,
|
|
1048
|
+
After upgrading Fleet, run \`ours-fleet service refresh\` (\`ours-install\` does it for
|
|
1049
|
+
you). Service definitions start the exact release tree that wrote them, so an
|
|
1050
|
+
unrefreshed one starts the previous release after the next reboot.
|
|
1051
|
+
\`ours-fleet service check\` reports each supervisor, web and watchdog definition,
|
|
1052
|
+
and whether its running process uses another release, without changing anything.
|
|
1053
|
+
\`refresh\` only re-points the release paths in definitions Fleet generated, runs
|
|
1054
|
+
\`daemon-reload\`, and never creates, starts, stops or restarts a service. A running
|
|
1055
|
+
supervisor keeps its code until it is restarted.
|
|
753
1056
|
Temporary agents and macOS services retain their existing lifecycle behavior.
|
|
754
1057
|
|
|
1058
|
+
After a supervisor restart or reboot, prompts a role had admitted but never
|
|
1059
|
+
started are dispatched only once its control socket is listening, so recovered
|
|
1060
|
+
work cannot reach the previous run's socket (\`connect ECONNREFUSED\`). Turns that
|
|
1061
|
+
had already started are closed as \`unknown_after_restart\` and never replayed.
|
|
1062
|
+
|
|
755
1063
|
## Reliable mail wake
|
|
756
1064
|
|
|
757
1065
|
\`monitor.mode\` selects exactly one wake owner:
|
|
@@ -763,10 +1071,12 @@ Temporary agents and macOS services retain their existing lifecycle behavior.
|
|
|
763
1071
|
- \`native\`: ours-fleet starts no supervisor monitor; the generated briefing
|
|
764
1072
|
instructs Claude Code or Codex to arm its harness-native wake mechanism.
|
|
765
1073
|
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
1074
|
+
\`monitor.interrupt\` defaults to \`after_tool\` for every harness except Hermes,
|
|
1075
|
+
which defaults to \`false\`; an explicit value always wins, and temporary snapshots
|
|
1076
|
+
written without one keep \`false\`. Set \`monitor.interrupt: true\` in fleet mode to
|
|
1077
|
+
cancel active work before every configured wake. \`after_tool\` preserves an active
|
|
1078
|
+
ACP tool (and any pending permission), then steers the wake at the first
|
|
1079
|
+
tool-terminal boundary without cancellation. A hung boundary is bounded at 120 seconds and falls back
|
|
770
1080
|
to non-cancelling steering/queueing; adapters without authenticated tool events
|
|
771
1081
|
use the same conservative fallback. Explicit human/control interrupts remain
|
|
772
1082
|
immediate. The policy is content-blind because the supervisor cannot inspect
|
|
@@ -787,6 +1097,78 @@ selection.
|
|
|
787
1097
|
Inspect \`ours-fleet status Name\`, \`peek Name\`, role logs, and
|
|
788
1098
|
\`~/.ours-fleet/agents/Name/.monitor-status\` when diagnosing delivery.
|
|
789
1099
|
|
|
1100
|
+
## Self-reminders
|
|
1101
|
+
|
|
1102
|
+
Every managed agent (\`session: acp\` or \`codex-app-server\`, Claude or Codex,
|
|
1103
|
+
persistent, temporary or task-owned) can schedule one-time wakes for ITSELF.
|
|
1104
|
+
The tools are on the agent's own fixed-identity ours MCP server, so there is no
|
|
1105
|
+
agent, identity or recipient argument and no setup, worker, service, chat or key:
|
|
1106
|
+
|
|
1107
|
+
- \`fleet_reminder_create\` — \`request_key\` (stable per decision; a repeat with
|
|
1108
|
+
the same input returns the same reminder, different input is refused),
|
|
1109
|
+
\`title\`, optional \`note\`, \`local_time\` (date and time WITHOUT an offset, e.g.
|
|
1110
|
+
\`2027-01-20T16:00\`), \`time_zone\` (IANA, e.g. \`Europe/London\`, \`UTC\`), optional
|
|
1111
|
+
\`fold\` (0/1, required only for a time that occurs twice when clocks go back;
|
|
1112
|
+
times skipped by a spring-forward gap are refused), \`late_window_seconds\`
|
|
1113
|
+
(60..604800, default 3600) and \`interrupt\` (default false; see below).
|
|
1114
|
+
- \`fleet_reminder_list\` — \`state\` \`open\` (default) | \`closed\` | \`all\`, \`limit\`, \`after\`.
|
|
1115
|
+
- \`fleet_reminder_update\` / \`fleet_reminder_cancel\` — \`id\` + \`expected_revision\`;
|
|
1116
|
+
every change bumps the revision and voids any wake issued for the old one.
|
|
1117
|
+
- \`fleet_reminder_inspect\` — \`event_id\` from a wake: the note, whether the
|
|
1118
|
+
wake is still current and eligible, and for an urgent one \`interrupt.state\`.
|
|
1119
|
+
- \`fleet_reminder_ack\` — \`event_id\` + \`expected_revision\`: records that the
|
|
1120
|
+
wake was handled. Idempotent; sends nothing and claims no external action.
|
|
1121
|
+
|
|
1122
|
+
When a reminder is due the supervisor starts one turn beginning \`[fleet-reminder]\`
|
|
1123
|
+
with the event id. It is the agent's own stored reminder, not an owner
|
|
1124
|
+
instruction or ours mail, and grants no authority. Fleet never sends anything
|
|
1125
|
+
on the agent's behalf; whether to message anyone is the agent's own decision
|
|
1126
|
+
under its existing tools and authorization.
|
|
1127
|
+
|
|
1128
|
+
Delivery: the supervisor process that runs the agent owns the timer — an idle
|
|
1129
|
+
agent with no open reminders costs nothing, and only a due reminder creates a
|
|
1130
|
+
model turn. By default a wake never interrupts or queues behind work: it is
|
|
1131
|
+
admitted at the next idle turn boundary after its due time and after the agent's
|
|
1132
|
+
startup turn.
|
|
1133
|
+
|
|
1134
|
+
Urgent (\`interrupt: true\`), only for a return genuinely bound to a time: when
|
|
1135
|
+
due and the agent is busy with an interruptible turn (mail wake, scheduled loop,
|
|
1136
|
+
local console), the supervisor durably records the request, asks that exact turn
|
|
1137
|
+
to stop once per revision, keeps the session and context, and releases the wake
|
|
1138
|
+
through the same fence. It never stops owner-channel or owner-console work,
|
|
1139
|
+
startup, stall recovery, another reminder, a pending permission, queued work or a
|
|
1140
|
+
turn it cannot identify; then it waits like an ordinary reminder and \`inspect\`
|
|
1141
|
+
shows \`interrupt_deferred\`. Due, interruption requested, its terminal
|
|
1142
|
+
(\`cancelled\` only when correlated; else \`ended\`/\`forced\`/\`failed\`/\`unknown\`),
|
|
1143
|
+
release, ack and any external action are separate facts. A forced or failed stop
|
|
1144
|
+
never queues the wake. It is not a hard real-time alarm and does nothing while
|
|
1145
|
+
the host or agent is down.
|
|
1146
|
+
If the host, Fleet or the agent is down, paused or busy, a reminder is still
|
|
1147
|
+
delivered when it comes back within its late window, and otherwise expires
|
|
1148
|
+
without a turn. Reminders survive supervisor, Fleet and host restarts and
|
|
1149
|
+
ordinary stop/start. They do not survive the agent: removing or retiring an
|
|
1150
|
+
agent or its task cancels them and deletes their state, and a replaced identity
|
|
1151
|
+
or same-named successor never inherits them.
|
|
1152
|
+
|
|
1153
|
+
Guarantees are at most once per reminder revision. Queue acceptance, release to
|
|
1154
|
+
the model, the agent's ack, and any external action are distinct facts. A wake
|
|
1155
|
+
is marked dispatched durably at the moment it is handed to the model; if the
|
|
1156
|
+
supervisor stops before that, the same event is retried. If it stops after, the
|
|
1157
|
+
event is held \`uncertain\` (shown by \`list\`/\`inspect\`, never re-sent): check your
|
|
1158
|
+
own records, then ack it or schedule something new.
|
|
1159
|
+
|
|
1160
|
+
Waiting on a peer (Developer/Critic/Engineer): before waiting on a specific
|
|
1161
|
+
review, answer or artifact, schedule ONE idle-only reminder about 20 minutes out
|
|
1162
|
+
naming the task/room and the expectation; cancel or reschedule it (with its
|
|
1163
|
+
revision) when the state changes; on the wake re-check, ack if resolved, else one
|
|
1164
|
+
follow-up in the same room and at most one more reminder, then report the
|
|
1165
|
+
nonresponse once. No polling, recurring chains, repeated follow-ups or automatic
|
|
1166
|
+
done.
|
|
1167
|
+
|
|
1168
|
+
Operators can read an agent's reminders with
|
|
1169
|
+
\`ours-fleet ours call Name fleet_reminder_list\`. Full guide, examples and the
|
|
1170
|
+
migration from the standalone \`self-reminders\` worker skill: \`docs/self-reminders.md\`.
|
|
1171
|
+
|
|
790
1172
|
## Trusted owner channel
|
|
791
1173
|
|
|
792
1174
|
Any managed role may declare a separate ours identity which fleet — never the agent —
|
package/dist/doctor.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { type RefreshOptions } from './supervisor/registration-refresh.js';
|
|
1
2
|
import { type AttachOursClientOptions, type OursClient } from '@ours.network/sdk/client';
|
|
2
3
|
import { type Exec } from './exec.js';
|
|
3
4
|
import type { YamlMode } from './config-yaml.js';
|
|
4
5
|
import { type FetchLike } from './monitor.js';
|
|
5
6
|
import type { PrereqReport } from './harness/types.js';
|
|
6
|
-
type DoctorDaemonClient = Pick<OursClient, 'version' | 'close'
|
|
7
|
+
type DoctorDaemonClient = Pick<OursClient, 'version' | 'close'> & Partial<Pick<OursClient, 'identities'>>;
|
|
7
8
|
type AttachDoctorDaemon = (options: AttachOursClientOptions) => Promise<DoctorDaemonClient>;
|
|
8
9
|
/** Host-level + per-harness prerequisite report with actionable messages. */
|
|
9
10
|
export declare function doctor(opts?: {
|
|
@@ -17,5 +18,7 @@ export declare function doctor(opts?: {
|
|
|
17
18
|
};
|
|
18
19
|
/** Override the local Codex model cache path (tests). */
|
|
19
20
|
codexCatalogPath?: string;
|
|
21
|
+
/** Compare installed service definitions with this release (read-only). */
|
|
22
|
+
serviceRegistration?: Pick<RefreshOptions, 'binPath' | 'homeDir' | 'exists' | 'processArgv'>;
|
|
20
23
|
}, exec?: Exec, platform?: NodeJS.Platform, fetchImpl?: FetchLike, attachDaemon?: AttachDoctorDaemon): Promise<PrereqReport>;
|
|
21
24
|
export {};
|