@ours.network/fleet 1.2.0-nightly.2 → 1.2.0-nightly.21

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.
Files changed (277) hide show
  1. package/README.md +152 -29
  2. package/dist/agent-ours/bridge.d.ts +3 -0
  3. package/dist/agent-ours/bridge.js +178 -0
  4. package/dist/agent-ours/controller.d.ts +14 -0
  5. package/dist/agent-ours/controller.js +60 -0
  6. package/dist/agent-ours/correspondence.d.ts +10 -0
  7. package/dist/agent-ours/correspondence.js +1 -0
  8. package/dist/agent-ours/file-rpc.d.ts +23 -0
  9. package/dist/agent-ours/file-rpc.js +123 -0
  10. package/dist/agent-ours/harness.d.ts +14 -0
  11. package/dist/agent-ours/harness.js +72 -0
  12. package/dist/agent-ours/mcp-endpoint.d.ts +15 -0
  13. package/dist/agent-ours/mcp-endpoint.js +111 -0
  14. package/dist/agent-ours/runtime.d.ts +59 -0
  15. package/dist/agent-ours/runtime.js +283 -0
  16. package/dist/agent-ours/service.d.ts +23 -0
  17. package/dist/agent-ours/service.js +372 -0
  18. package/dist/agent-ours/state.d.ts +45 -0
  19. package/dist/agent-ours/state.js +95 -0
  20. package/dist/agent-ours/wire.d.ts +14 -0
  21. package/dist/agent-ours/wire.js +55 -0
  22. package/dist/agent-recovery-gate.js +1 -1
  23. package/dist/application/conversation-history.d.ts +6 -0
  24. package/dist/application/conversation-history.js +65 -0
  25. package/dist/application/fleet-query-service.d.ts +1 -1
  26. package/dist/application/fleet-query-service.js +2 -2
  27. package/dist/application/legacy-supervisor-identity.d.ts +7 -0
  28. package/dist/application/legacy-supervisor-identity.js +43 -0
  29. package/dist/application/model-catalog.d.ts +1 -1
  30. package/dist/application/model-catalog.js +5 -2
  31. package/dist/application/preset-provenance.d.ts +19 -0
  32. package/dist/application/preset-provenance.js +59 -0
  33. package/dist/application/room-layout-definitions.d.ts +45 -0
  34. package/dist/application/room-layout-definitions.js +130 -0
  35. package/dist/application/session-control.d.ts +8 -0
  36. package/dist/application/session-control.js +21 -3
  37. package/dist/application/supervisor-ours-tools.d.ts +159 -0
  38. package/dist/application/supervisor-ours-tools.js +113 -0
  39. package/dist/application/task-layouts.d.ts +89 -0
  40. package/dist/application/task-layouts.js +248 -0
  41. package/dist/application/task-room-service.d.ts +99 -3
  42. package/dist/application/task-room-service.js +296 -31
  43. package/dist/atomic-file.d.ts +5 -0
  44. package/dist/atomic-file.js +62 -1
  45. package/dist/briefing.js +10 -59
  46. package/dist/build-info.json +5 -4
  47. package/dist/capabilities.d.ts +2 -1
  48. package/dist/capabilities.js +2 -0
  49. package/dist/cli.js +65 -2
  50. package/dist/client-profile.d.ts +5 -16
  51. package/dist/client-profile.js +4 -112
  52. package/dist/config.d.ts +4 -0
  53. package/dist/config.js +7 -0
  54. package/dist/creation.d.ts +1 -1
  55. package/dist/creation.js +5 -16
  56. package/dist/daemon-recovery.d.ts +1 -8
  57. package/dist/daemon-recovery.js +8 -113
  58. package/dist/docs.d.ts +3 -3
  59. package/dist/docs.js +43 -23
  60. package/dist/doctor.d.ts +1 -1
  61. package/dist/doctor.js +46 -59
  62. package/dist/erased-resources.d.ts +9 -0
  63. package/dist/erased-resources.js +87 -0
  64. package/dist/fleet-command-audit.d.ts +1 -0
  65. package/dist/fleet-command-audit.js +12 -7
  66. package/dist/harness/agent-session.d.ts +2 -0
  67. package/dist/harness/claude-code-session.js +4 -2
  68. package/dist/harness/codex-app-server-proxy.d.ts +4 -1
  69. package/dist/harness/codex-app-server-proxy.js +41 -5
  70. package/dist/harness/codex-session.js +9 -2
  71. package/dist/harness/codex.d.ts +3 -2
  72. package/dist/harness/codex.js +4 -3
  73. package/dist/harness/hermes-session.js +7 -1
  74. package/dist/init-wizard.js +20 -9
  75. package/dist/monitor.d.ts +1 -34
  76. package/dist/monitor.js +24 -151
  77. package/dist/owner-channel/channel.d.ts +3 -0
  78. package/dist/owner-channel/channel.js +34 -6
  79. package/dist/owner-channel/commands.d.ts +4 -0
  80. package/dist/owner-channel/commands.js +8 -0
  81. package/dist/owner-channel/lifecycle-outbox.js +4 -3
  82. package/dist/owner-channel/ours-client.js +2 -17
  83. package/dist/preset-migration.js +15 -0
  84. package/dist/rooms-tasks/add-member.d.ts +48 -0
  85. package/dist/rooms-tasks/add-member.js +83 -0
  86. package/dist/rooms-tasks/archived-absence.d.ts +8 -0
  87. package/dist/rooms-tasks/archived-absence.js +48 -0
  88. package/dist/rooms-tasks/cli.js +34 -5
  89. package/dist/rooms-tasks/close.d.ts +5 -2
  90. package/dist/rooms-tasks/close.js +208 -28
  91. package/dist/rooms-tasks/config.js +3 -1
  92. package/dist/rooms-tasks/cowork-adapter.d.ts +6 -4
  93. package/dist/rooms-tasks/cowork-adapter.js +11 -117
  94. package/dist/rooms-tasks/cowork-http.d.ts +3 -0
  95. package/dist/rooms-tasks/cowork-http.js +70 -0
  96. package/dist/rooms-tasks/deletion.d.ts +1 -1
  97. package/dist/rooms-tasks/deletion.js +74 -5
  98. package/dist/rooms-tasks/erasure.d.ts +6 -0
  99. package/dist/rooms-tasks/erasure.js +169 -0
  100. package/dist/rooms-tasks/external-worker.d.ts +1 -1
  101. package/dist/rooms-tasks/external-worker.js +3 -4
  102. package/dist/rooms-tasks/layout-cli.d.ts +2 -0
  103. package/dist/rooms-tasks/layout-cli.js +81 -0
  104. package/dist/rooms-tasks/layout-config.d.ts +11 -0
  105. package/dist/rooms-tasks/layout-config.js +89 -0
  106. package/dist/rooms-tasks/layout-control.d.ts +21 -0
  107. package/dist/rooms-tasks/layout-control.js +52 -0
  108. package/dist/rooms-tasks/layout-service.d.ts +39 -0
  109. package/dist/rooms-tasks/layout-service.js +173 -0
  110. package/dist/rooms-tasks/layout.d.ts +102 -0
  111. package/dist/rooms-tasks/layout.js +227 -0
  112. package/dist/rooms-tasks/live-readiness.d.ts +18 -0
  113. package/dist/rooms-tasks/live-readiness.js +85 -0
  114. package/dist/rooms-tasks/member-startup.d.ts +1 -0
  115. package/dist/rooms-tasks/member-startup.js +2 -0
  116. package/dist/rooms-tasks/provision.d.ts +14 -0
  117. package/dist/rooms-tasks/provision.js +182 -48
  118. package/dist/rooms-tasks/room-state.d.ts +4 -2
  119. package/dist/rooms-tasks/room-state.js +53 -8
  120. package/dist/rooms-tasks/task-state.d.ts +42 -7
  121. package/dist/rooms-tasks/task-state.js +153 -23
  122. package/dist/rooms-tasks/types.d.ts +28 -0
  123. package/dist/rooms-tasks/workspace-artifacts.d.ts +6 -0
  124. package/dist/rooms-tasks/workspace-artifacts.js +93 -0
  125. package/dist/rooms-tasks/workspace.d.ts +26 -0
  126. package/dist/rooms-tasks/workspace.js +195 -0
  127. package/dist/runner.d.ts +23 -3
  128. package/dist/runner.js +574 -494
  129. package/dist/session/acp.d.ts +3 -0
  130. package/dist/session/acp.js +7 -0
  131. package/dist/session/arbiter.d.ts +3 -0
  132. package/dist/session/arbiter.js +20 -2
  133. package/dist/session/codex-app-server-transport.js +1 -1
  134. package/dist/session/codex-app-server.d.ts +3 -0
  135. package/dist/session/codex-app-server.js +25 -1
  136. package/dist/session/control.d.ts +10 -1
  137. package/dist/session/control.js +36 -2
  138. package/dist/session/conversation-normalizer.d.ts +2 -1
  139. package/dist/session/conversation-normalizer.js +1 -1
  140. package/dist/session/conversation-types.d.ts +5 -3
  141. package/dist/session/task-notice.d.ts +14 -0
  142. package/dist/session/task-notice.js +13 -0
  143. package/dist/session/types.d.ts +3 -0
  144. package/dist/socket-path.d.ts +2 -0
  145. package/dist/socket-path.js +22 -0
  146. package/dist/spawn.js +19 -16
  147. package/dist/startup-readiness.d.ts +13 -0
  148. package/dist/startup-readiness.js +38 -0
  149. package/dist/supervisor/launchd.js +2 -1
  150. package/dist/supervisor/systemd.js +9 -23
  151. package/dist/temp-idle.d.ts +17 -0
  152. package/dist/temp-idle.js +42 -0
  153. package/dist/temp-lifecycle.d.ts +6 -1
  154. package/dist/temp-lifecycle.js +29 -13
  155. package/dist/temp-supervisor-recovery.d.ts +3 -0
  156. package/dist/temp-supervisor-recovery.js +46 -0
  157. package/dist/watchdog/briefing.js +3 -16
  158. package/dist/watchdog/run.js +19 -5
  159. package/dist/web/agent-attachments.d.ts +29 -0
  160. package/dist/web/agent-attachments.js +162 -0
  161. package/dist/web/auth.d.ts +4 -1
  162. package/dist/web/auth.js +23 -2
  163. package/dist/web/control.js +2 -1
  164. package/dist/web/fleet-config-service.d.ts +4 -1
  165. package/dist/web/fleet-config-service.js +46 -15
  166. package/dist/web/prefix-gateway.d.ts +20 -0
  167. package/dist/web/prefix-gateway.js +150 -0
  168. package/dist/web/runtime.d.ts +4 -0
  169. package/dist/web/runtime.js +19 -14
  170. package/dist/web/server.d.ts +7 -0
  171. package/dist/web/server.js +293 -25
  172. package/docs/room-layouts.md +92 -0
  173. package/docs/task-workspaces.md +130 -0
  174. package/examples/room-layouts/fresh.yaml +27 -0
  175. package/examples/room-layouts/shared.yaml +19 -0
  176. package/package.json +17 -13
  177. package/presets/README.md +78 -0
  178. package/presets/brain-catalog.json +8 -2
  179. package/presets/fleet/agent_templates/Engineer.yaml +5 -0
  180. package/presets/fleet/brains/claude-fable-5-1-high.yaml +5 -0
  181. package/presets/fleet/brains/claude-fable-5-1-low.yaml +5 -0
  182. package/presets/fleet/brains/claude-fable-5-1-max.yaml +5 -0
  183. package/presets/fleet/brains/claude-fable-5-1-medium.yaml +5 -0
  184. package/presets/fleet/brains/claude-fable-5-1-xhigh.yaml +5 -0
  185. package/presets/fleet/brains/claude-fable-5-high.yaml +1 -1
  186. package/presets/fleet/brains/claude-fable-5-low.yaml +1 -1
  187. package/presets/fleet/brains/claude-fable-5-max.yaml +1 -1
  188. package/presets/fleet/brains/claude-fable-5-medium.yaml +1 -1
  189. package/presets/fleet/brains/claude-fable-5-xhigh.yaml +1 -1
  190. package/presets/fleet/brains/claude-haiku-4-5-20251001-default.yaml +4 -0
  191. package/presets/fleet/brains/claude-opus-5-5-high.yaml +5 -0
  192. package/presets/fleet/brains/claude-opus-5-5-low.yaml +5 -0
  193. package/presets/fleet/brains/claude-opus-5-5-max.yaml +5 -0
  194. package/presets/fleet/brains/claude-opus-5-5-medium.yaml +5 -0
  195. package/presets/fleet/brains/claude-opus-5-5-xhigh.yaml +5 -0
  196. package/presets/fleet/brains/claude-opus-5-high.yaml +1 -1
  197. package/presets/fleet/brains/claude-opus-5-low.yaml +1 -1
  198. package/presets/fleet/brains/claude-opus-5-max.yaml +1 -1
  199. package/presets/fleet/brains/claude-opus-5-medium.yaml +1 -1
  200. package/presets/fleet/brains/claude-opus-5-xhigh.yaml +1 -1
  201. package/presets/fleet/brains/claude-sonnet-5-high.yaml +1 -1
  202. package/presets/fleet/brains/claude-sonnet-5-low.yaml +1 -1
  203. package/presets/fleet/brains/claude-sonnet-5-max.yaml +1 -1
  204. package/presets/fleet/brains/claude-sonnet-5-medium.yaml +1 -1
  205. package/presets/fleet/brains/claude-sonnet-5-xhigh.yaml +1 -1
  206. package/presets/fleet/brains/codex-gpt-5-3-codex-spark-high.yaml +1 -1
  207. package/presets/fleet/brains/codex-gpt-5-3-codex-spark-low.yaml +1 -1
  208. package/presets/fleet/brains/codex-gpt-5-3-codex-spark-medium.yaml +1 -1
  209. package/presets/fleet/brains/codex-gpt-5-3-codex-spark-xhigh.yaml +1 -1
  210. package/presets/fleet/brains/codex-gpt-5-4-high.yaml +1 -1
  211. package/presets/fleet/brains/codex-gpt-5-4-low.yaml +1 -1
  212. package/presets/fleet/brains/codex-gpt-5-4-medium.yaml +1 -1
  213. package/presets/fleet/brains/codex-gpt-5-4-mini-high.yaml +1 -1
  214. package/presets/fleet/brains/codex-gpt-5-4-mini-low.yaml +1 -1
  215. package/presets/fleet/brains/codex-gpt-5-4-mini-medium.yaml +1 -1
  216. package/presets/fleet/brains/codex-gpt-5-4-mini-xhigh.yaml +1 -1
  217. package/presets/fleet/brains/codex-gpt-5-4-xhigh.yaml +1 -1
  218. package/presets/fleet/brains/codex-gpt-5-5-high.yaml +1 -1
  219. package/presets/fleet/brains/codex-gpt-5-5-low.yaml +1 -1
  220. package/presets/fleet/brains/codex-gpt-5-5-medium.yaml +1 -1
  221. package/presets/fleet/brains/codex-gpt-5-5-xhigh.yaml +1 -1
  222. package/presets/fleet/brains/codex-gpt-5-6-luna-high.yaml +1 -1
  223. package/presets/fleet/brains/codex-gpt-5-6-luna-low.yaml +1 -1
  224. package/presets/fleet/brains/codex-gpt-5-6-luna-max.yaml +1 -1
  225. package/presets/fleet/brains/codex-gpt-5-6-luna-medium.yaml +1 -1
  226. package/presets/fleet/brains/codex-gpt-5-6-luna-xhigh.yaml +1 -1
  227. package/presets/fleet/brains/codex-gpt-5-6-sol-high.yaml +1 -1
  228. package/presets/fleet/brains/codex-gpt-5-6-sol-low.yaml +1 -1
  229. package/presets/fleet/brains/codex-gpt-5-6-sol-max.yaml +1 -1
  230. package/presets/fleet/brains/codex-gpt-5-6-sol-medium.yaml +1 -1
  231. package/presets/fleet/brains/codex-gpt-5-6-sol-ultra.yaml +1 -1
  232. package/presets/fleet/brains/codex-gpt-5-6-sol-xhigh.yaml +1 -1
  233. package/presets/fleet/brains/codex-gpt-5-6-terra-high.yaml +1 -1
  234. package/presets/fleet/brains/codex-gpt-5-6-terra-low.yaml +1 -1
  235. package/presets/fleet/brains/codex-gpt-5-6-terra-max.yaml +1 -1
  236. package/presets/fleet/brains/codex-gpt-5-6-terra-medium.yaml +1 -1
  237. package/presets/fleet/brains/codex-gpt-5-6-terra-ultra.yaml +1 -1
  238. package/presets/fleet/brains/codex-gpt-5-6-terra-xhigh.yaml +1 -1
  239. package/presets/fleet/brains/codex-gpt-6-1-sol-high.yaml +5 -0
  240. package/presets/fleet/brains/codex-gpt-6-1-sol-low.yaml +5 -0
  241. package/presets/fleet/brains/codex-gpt-6-1-sol-max.yaml +5 -0
  242. package/presets/fleet/brains/codex-gpt-6-1-sol-medium.yaml +5 -0
  243. package/presets/fleet/brains/codex-gpt-6-1-sol-ultra.yaml +5 -0
  244. package/presets/fleet/brains/codex-gpt-6-1-sol-xhigh.yaml +5 -0
  245. package/presets/fleet/brains/codex-gpt-6-astra-high.yaml +1 -1
  246. package/presets/fleet/brains/codex-gpt-6-astra-low.yaml +1 -1
  247. package/presets/fleet/brains/codex-gpt-6-astra-max.yaml +1 -1
  248. package/presets/fleet/brains/codex-gpt-6-astra-medium.yaml +1 -1
  249. package/presets/fleet/brains/codex-gpt-6-astra-ultra.yaml +1 -1
  250. package/presets/fleet/brains/codex-gpt-6-astra-xhigh.yaml +1 -1
  251. package/presets/fleet/brains/codex-gpt-6-luna-high.yaml +5 -0
  252. package/presets/fleet/brains/codex-gpt-6-luna-low.yaml +5 -0
  253. package/presets/fleet/brains/codex-gpt-6-luna-max.yaml +5 -0
  254. package/presets/fleet/brains/codex-gpt-6-luna-medium.yaml +5 -0
  255. package/presets/fleet/brains/codex-gpt-6-luna-xhigh.yaml +5 -0
  256. package/presets/fleet/brains/codex-gpt-6-sol-high.yaml +5 -0
  257. package/presets/fleet/brains/codex-gpt-6-sol-low.yaml +5 -0
  258. package/presets/fleet/brains/codex-gpt-6-sol-max.yaml +5 -0
  259. package/presets/fleet/brains/codex-gpt-6-sol-medium.yaml +5 -0
  260. package/presets/fleet/brains/codex-gpt-6-sol-ultra.yaml +5 -0
  261. package/presets/fleet/brains/codex-gpt-6-sol-xhigh.yaml +5 -0
  262. package/presets/fleet/roles/Coordinator.yaml +22 -0
  263. package/presets/fleet/roles/Engineer.yaml +40 -0
  264. package/presets/fleet/room_layouts/engineering.yaml +25 -0
  265. package/presets/fleet/room_layouts/pair.yaml +24 -0
  266. package/presets/fleet/room_layouts/single.yaml +17 -0
  267. package/presets/fleet/room_layouts/team.yaml +30 -0
  268. package/presets/fleet/room_templates/engineering.yaml +19 -0
  269. package/presets/manifest.json +2 -2
  270. package/dist/web-app/assets/index-59GF-gsZ.css +0 -1
  271. package/dist/web-app/assets/index-C0h3ALvs.js +0 -10
  272. package/dist/web-app/icons/ours-fleet-maskable.svg +0 -4
  273. package/dist/web-app/icons/ours-fleet.svg +0 -4
  274. package/dist/web-app/index.html +0 -17
  275. package/dist/web-app/manifest.webmanifest +0 -15
  276. package/dist/web-app/offline.html +0 -18
  277. package/dist/web-app/sw.js +0 -51
@@ -0,0 +1,130 @@
1
+ # Task workspaces and artifact retention
2
+
3
+ New Tasks allocate a private workspace at
4
+ `$OURS_FLEET_HOME/.ours-fleet/workspaces/tasks/<task-id>` (the user's home is the
5
+ default for `OURS_FLEET_HOME`). New standalone Rooms use
6
+ `.ours-fleet/workspaces/rooms/<room-id>`. A linked Room shares its Task's workspace.
7
+ The absolute path, owner kind/ID and random ownership token are stored in the
8
+ record before directory allocation; `.fleet-workspace.json` proves ownership.
9
+ The path is visible in Task/Room JSON from both CLI and API. A folder of the same
10
+ name without the matching marker is never adopted.
11
+
12
+ Every newly managed member starts at that exact workspace, including retries.
13
+ An explicit template/member `cwd` remains in the sealed input execution plan as
14
+ source context, but the owned workspace overrides the effective launch cwd.
15
+ Copy or clone required source into the workspace; Fleet does not move or delete
16
+ the configured source directory. Briefings explain this rule. Use separate
17
+ per-agent branches/directories inside the workspace for concurrent edits.
18
+
19
+ All execution artifacts, dependency checkouts and worktrees belong inside the
20
+ workspace. Clone each repository there first, then use `git worktree add` with
21
+ destinations inside the same workspace. Git's native worktree registry is the
22
+ registry of record. Fleet audits `.git`, `commondir` and reverse `gitdir` links
23
+ before deletion; both the common repository and all registered worktrees must
24
+ be inside the workspace. An external repository's worktree inside the workspace,
25
+ or an internal repository's worktree outside it, blocks deletion. No broad
26
+ `git worktree prune`, branch deletion, reset or modification of unrelated Git
27
+ metadata is performed. Removing the owned repositories also removes their
28
+ complete internal worktree registries, including dirty and stale owned entries.
29
+
30
+ | Operation | Workspace and execution artifacts | Member runtime evidence |
31
+ | --- | --- | --- |
32
+ | Complete, fail, cancel | Retained while Task is recorded | Retained in Fleet recovery archives |
33
+ | Linked Room retirement or deletion | Task workspace retained | Retained |
34
+ | Internal standalone Room retirement | Room workspace retained | Retained |
35
+ | Explicit Task deletion | Removed after member retirement | All proven owned retired launches removed |
36
+ | Explicit standalone Room deletion | Removed after member retirement | All proven owned retired launches removed |
37
+
38
+ Internal room close means retirement, not destructive Task deletion.
39
+ The existing CLI `room close ID ID` remains a deprecated alias for explicit
40
+ `room delete ID ID`: it deletes standalone room-owned artifacts, but always
41
+ retains a linked Task workspace. Its repeated-ID confirmation is unchanged. To remove a Task's
42
+ artifacts, explicitly delete the Task. Cancellation is not deletion. Automatic
43
+ compatibility cleanup of legacy closed Rooms skips records with owned workspaces.
44
+ These choices reconcile close/remove wording with the requirement that completed,
45
+ recorded Tasks retain all artifacts.
46
+
47
+ Fleet's active member state (briefings, logs, session state and WORKLOG) remains
48
+ under `.ours-fleet/tmp` while supervisors run, then in
49
+ `.ours-fleet/recovery/temporary`. The launch stores the workspace descriptor.
50
+ Explicit deletion first proves managed agents retired, then identifies all
51
+ matching archived launches, including failed and replaced attempts, using the
52
+ workspace descriptor plus role and termination/launch evidence. It preflights
53
+ these archives and atomically transfers them to `.fleet-retired-agents` in the
54
+ workspace before removal. Unrelated archives are not adopted by a name prefix.
55
+ Explicit deletion also erases legacy archives with exact launch/action or room
56
+ provenance, matching private supervisor journals and admission/launch descriptors,
57
+ and the exact retired-launch rows in the global termination journal. It never
58
+ infers ownership from an Agent's shared `cwd`. Artifact removal uses a durable
59
+ manifest, ownership fingerprints and per-entry rename/removal checkpoints, so
60
+ an interrupted deletion can resume without deleting a replacement at the old path.
61
+ Task deletion acceptance receipts exist only during cleanup and are erased after
62
+ settlement (including retry after a crash between Task unlink and receipt cleanup).
63
+ Shared Fleet command audit and lifecycle delivery ledgers have exactly attributed
64
+ target labels, configuration and command arguments removed; unrelated entries are
65
+ preserved. Delivery/deduplication metadata and a content-free erased-resource ID
66
+ registry remain so a running writer cannot resurrect erased content. Infrastructure
67
+ logs without structured ownership, backups, and copies already delivered to other
68
+ identities are external retention boundaries; this is not a claim to erase every
69
+ external copy.
70
+
71
+ Provisioning serializes Task operation then Room close locks, including bounded
72
+ seat waits, so concurrent retries cannot publish competing members and deletion
73
+ cannot race a member launch. Local published Rooms are reused if the Task link
74
+ write was interrupted. Workspace allocation publishes a marked staging directory;
75
+ restart reuses the durable token. Deletion renames the validated workspace to a
76
+ token-specific sibling tombstone before removal. A crash during removal resumes
77
+ that exact tombstone; the Task record is unlinked last. Before collecting archives,
78
+ Task deletion durably checkpoints verified retirement evidence. Retries verify
79
+ any remaining original archive and still refuse replacement live member state
80
+ or a recreated identity even after the archive has been consumed. Failed deletion
81
+ remains retryable with its recorded error.
82
+
83
+ Deletion rejects traversal, foreign recorded paths, changed markers and symlinked
84
+ workspace ancestors. Ordinary artifact symlinks are unlinked without following
85
+ their targets. Git control symlinks and foreign pointers are refused. As with
86
+ Fleet's other filesystem lifecycle operations, a hostile same-UID process that
87
+ mutates paths during validation requires OS isolation; application checks are
88
+ not a security boundary against that process. Fleet enforces launch cwd and
89
+ safe deletion; unrestricted agents can still write outside cwd, so the artifact
90
+ placement rule also requires agent compliance and/or filesystem isolation.
91
+
92
+ ## Compatibility and limits
93
+
94
+ Records from before this feature without `workspace` remain unmanaged. Existing
95
+ agents retain their cwd and exact briefing/fingerprint so restart matching works.
96
+ Fleet never claims an old cwd, an outcome artifact path, or a legacy recovery
97
+ archive as owned merely because it was mentioned by a Task. Create a new managed
98
+ Task and explicitly copy desired artifacts to migrate; deleting a legacy Task
99
+ continues its previous lifecycle and does not delete arbitrary old files.
100
+
101
+ Changing `OURS_FLEET_HOME` does not silently rebase recorded absolute ownership
102
+ paths. Restore the original state root or explicitly migrate records and files
103
+ with the supervisors stopped; mismatched paths fail closed. Archive transfer
104
+ uses same-filesystem rename and reports a recoverable failure across mounts.
105
+
106
+ Cowork's remote create operation has no idempotency key in this interface. A crash
107
+ after remote creation but before local Room publication is an existing uncertain
108
+ remote result; this change deduplicates locally recorded rooms and does not claim
109
+ to solve that remote transaction window. Inspect remote room ownership before
110
+ retrying ambiguous remote creation. No services or installed Fleet code are
111
+ changed by building or testing this feature.
112
+
113
+
114
+ ## Broken provisioning and deletion recovery
115
+
116
+ Deletion accepts every lifecycle state. Missing temporary directories, identities,
117
+ remote rooms and already-erased artifacts are settled outcomes. Retry the same
118
+ explicit delete after an interruption. A missing local member CID is recovered
119
+ only from a matching authenticated seat in the pinned room (exact invite and
120
+ role, uniquely matched), or a supervisor journal tied to the selected daemon,
121
+ temporary instance and recorded creation action. These sources must agree.
122
+ The recovered CID is persisted before retirement consumes the evidence.
123
+
124
+ A contradictory CID, replacement launch, ambiguous seat, unreadable/corrupt
125
+ record, or unreachable authority is not evidence of absence. Cleanup retains its
126
+ cursor and reports the conflict instead of deleting an unrelated resource or
127
+ claiming complete erasure. An identity with no recoverable authenticated binding
128
+ requires restoring its actual ownership evidence; a name-only force removal is
129
+ not supported. Room deletion removes the linked Task's dead room/member links and preserves its workspace; use explicit
130
+ Task deletion when the request includes the associated Task and its artifacts.
@@ -0,0 +1,27 @@
1
+ version: 1
2
+ description: Separate participant keys create independent agent sessions for each room
3
+ participants:
4
+ productArchitect:
5
+ agent_template: Architect
6
+ productReviewer:
7
+ agent_template: Reviewer
8
+ designArchitect:
9
+ agent_template: Architect
10
+ designDeveloper:
11
+ agent_template: Developer
12
+ designReviewer:
13
+ agent_template: Reviewer
14
+ deliveryDeveloper:
15
+ agent_template: Developer
16
+ deliveryReviewer:
17
+ agent_template: Reviewer
18
+ rooms:
19
+ product:
20
+ goal: Agree on the problem and acceptance criteria
21
+ members: [productArchitect, productReviewer]
22
+ design:
23
+ goal: Design the accepted solution
24
+ members: [designArchitect, designDeveloper, designReviewer]
25
+ delivery:
26
+ goal: Implement and verify the accepted design
27
+ members: [deliveryDeveloper, deliveryReviewer]
@@ -0,0 +1,19 @@
1
+ version: 1
2
+ description: Same agents retain their sessions across rooms
3
+ participants:
4
+ architect:
5
+ agent_template: Architect
6
+ developer:
7
+ agent_template: Developer
8
+ reviewer:
9
+ agent_template: Reviewer
10
+ rooms:
11
+ product:
12
+ goal: Agree on the problem and acceptance criteria
13
+ members: [architect, reviewer]
14
+ design:
15
+ goal: Design the accepted solution
16
+ members: [architect, developer, reviewer]
17
+ delivery:
18
+ goal: Implement and verify the accepted design
19
+ members: [developer, reviewer]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ours.network/fleet",
3
- "version": "1.2.0-nightly.2",
3
+ "version": "1.2.0-nightly.21",
4
4
  "description": "Harness-agnostic fleet of persistent, identity-bound AI agents. Declarative fleet.yaml, managed native/ACP sessions, supervision, and ours.network messaging.",
5
5
  "type": "module",
6
6
  "license": "FSL-1.1-Apache-2.0",
@@ -18,6 +18,8 @@
18
18
  "examples",
19
19
  "presets",
20
20
  "README.md",
21
+ "docs/task-workspaces.md",
22
+ "docs/room-layouts.md",
21
23
  "LICENSE"
22
24
  ],
23
25
  "engines": {
@@ -25,14 +27,12 @@
25
27
  },
26
28
  "scripts": {
27
29
  "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
28
- "build": "npm run clean && tsc -p tsconfig.json && vite build && node scripts/build-info.mjs",
29
- "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p web/tsconfig.json --noEmit",
30
+ "build": "npm run clean && tsc -p tsconfig.json && node scripts/build-info.mjs",
31
+ "typecheck": "tsc -p tsconfig.json --noEmit",
30
32
  "lint": "npm run typecheck",
31
33
  "test": "vitest run",
32
34
  "test:web": "vitest run test/web",
33
35
  "test:pack": "vitest run --config vitest.integration.config.ts",
34
- "test:e2e": "npm run build && playwright test",
35
- "dev:web": "vite",
36
36
  "prepack": "npm run build",
37
37
  "prepublishOnly": "npm run build && npm test",
38
38
  "test:v1-recovery": "node test/fleet-v1-recovery.integration.mjs retry && node test/fleet-v1-recovery.integration.mjs terminal-after-failure && node test/fleet-v1-recovery.integration.mjs terminal-release-failure"
@@ -41,12 +41,11 @@
41
41
  "@agentclientprotocol/sdk": "^1.3.0",
42
42
  "@fastify/static": "^10.1.2",
43
43
  "@fastify/websocket": "^11.2.0",
44
- "@ours.network/cli": "2.8.1-nightly.2",
45
- "@ours.network/sdk": "3.8.1-nightly.4",
44
+ "@ours.network/cli": "2.8.1-nightly.12",
45
+ "@ours.network/mcp": "1.2.0-nightly.9",
46
+ "@ours.network/sdk": "3.8.1-nightly.15",
46
47
  "commander": "^12.1.0",
47
48
  "fastify": "^5.4.0",
48
- "react": "^19.1.1",
49
- "react-dom": "^19.1.1",
50
49
  "secure-json-parse": "^4.1.0",
51
50
  "ws": "^8.18.3",
52
51
  "yaml": "^2.5.0"
@@ -56,13 +55,18 @@
56
55
  "@agentclientprotocol/codex-acp": "1.10.0"
57
56
  },
58
57
  "devDependencies": {
59
- "@playwright/test": "^1.54.1",
58
+ "@ours.network/daemon": "3.8.1-nightly.7",
60
59
  "@types/node": "^20.14.0",
61
- "@types/react": "^19.1.9",
62
- "@types/react-dom": "^19.1.7",
63
60
  "@types/ws": "^8.18.1",
64
61
  "typescript": "^5.5.0",
65
- "vite": "^7.0.6",
66
62
  "vitest": "^2.0.0"
63
+ },
64
+ "overrides": {
65
+ "@ours.network/mcp": {
66
+ "@ours.network/sdk": "$@ours.network/sdk"
67
+ },
68
+ "@ours.network/cli": {
69
+ "@ours.network/sdk": "$@ours.network/sdk"
70
+ }
67
71
  }
68
72
  }
@@ -0,0 +1,78 @@
1
+ # Predefined Brains
2
+
3
+ `brain-catalog.json` is the source for generated `fleet/brains/*.yaml` files.
4
+ Run `node scripts/generate-brain-presets.mjs` after changing it, and run the same
5
+ command with `--check` to verify generated files. An empty `efforts` array generates
6
+ one `-default` preset with no `effort` field. Bootstrap adds missing presets and
7
+ preserves existing user files. Existing model presets remain available.
8
+
9
+ ## GPT-6.1 Sol (added 2026-09-29)
10
+
11
+ The Codex presets `codex-gpt-6-1-sol-{low,medium,high,xhigh,max,ultra}`
12
+ use the exact model ID `gpt-6.1-sol` with ACP sessions. The init wizard offers
13
+ GPT-6.1 Sol for development, review, and coordination.
14
+
15
+ [Official OpenAI documentation](https://developers.openai.com/api/docs/models/gpt-6.1-sol)
16
+ supports low, medium, high, xhigh, and max API reasoning efforts. The local
17
+ Codex `models_cache.json` inspected on 2026-09-29 additionally advertises
18
+ `ultra`, a Codex harness mode. These presets reflect that six-effort Codex
19
+ catalog; no inference or ACP launch was performed for this addition.
20
+
21
+ ## Current model additions (verified 2026-09-24)
22
+
23
+ | Harness | Exact model ID | Preset efforts |
24
+ | --- | --- | --- |
25
+ | Codex | `gpt-6-sol` | low, medium, high, xhigh, max, ultra |
26
+ | Codex | `gpt-6-luna` | low, medium, high, xhigh, max |
27
+ | Claude Code | `claude-fable-5-1` | low, medium, high, xhigh, max |
28
+ | Claude Code | `claude-opus-5-5` | low, medium, high, xhigh, max |
29
+ | Claude Code (retained) | `claude-sonnet-5` | low, medium, high, xhigh, max |
30
+ | Claude Code | `claude-haiku-4-5-20251001` | default, with no effort setting |
31
+
32
+ For example, select `codex-gpt-6-sol-ultra`, `claude-opus-5-5-max`, or
33
+ `claude-haiku-4-5-20251001-default` as a Brain reference. The init wizard offers
34
+ models supporting its Quick/Balanced/Thorough (low/medium/high) choices; use the
35
+ named Brain directly for Haiku, which does not support effort.
36
+
37
+ ### Runtime requirements and evidence
38
+
39
+ Codex CLI **0.155.0** freshly queried through `app-server` `initialize` then
40
+ `model/list` advertised the GPT rows above. A previously populated
41
+ `~/.codex/models_cache.json` did not contain these models; refresh runtime discovery
42
+ before concluding a model is unavailable. `ours-fleet doctor` compares presets to
43
+ the local cache. The catalog is not an account entitlement guarantee.
44
+
45
+ The [Sol](https://developers.openai.com/api/docs/models/gpt-6-sol) and
46
+ [Luna](https://developers.openai.com/api/docs/models/gpt-6-luna) API model pages
47
+ also support `none`, but the verified Codex runtime does not advertise it.
48
+ Consequently there are no `none` presets. Sol's `ultra` is an advertised Codex
49
+ harness mode, not an additional API reasoning level; Luna does not advertise it.
50
+
51
+ Claude Code **2.1.281** was verified using the Agent SDK `supportedModels()`
52
+ control request, with `pathToClaudeCodeExecutable` pointing to the installed
53
+ Claude CLI, without sending an inference prompt. It reports Fable 5.1, Opus 5.5,
54
+ Sonnet 5 and Haiku 4.5 with the capabilities above. These are verified versions,
55
+ not asserted minimum versions. Provider references:
56
+ [model IDs](https://platform.claude.com/docs/en/models/overview) and
57
+ [Claude Code effort support](https://code.claude.com/docs/en/model-config#adjust-effort-level).
58
+
59
+ **Check the executable used by ACP before selecting the new Claude presets.**
60
+ The inspected `claude-agent-acp` **0.63.0** installation bundles Agent SDK
61
+ **0.3.220**, whose default executable reports older models. To use the verified
62
+ installed Claude CLI, set `CLAUDE_CODE_EXECUTABLE` to its absolute path in the
63
+ launch environment (for example `/usr/bin/claude` on the verification host).
64
+ Otherwise use a bundled SDK whose runtime advertises these models and efforts.
65
+ The presets do not change your executable or restart agents. An older bundled
66
+ runtime alone is not evidence of support for the new models.
67
+
68
+ No-prompt ACP startup and `session/set_config_option` probes also verified all
69
+ new GPT and Claude effort combinations, including Sol `ultra` and Claude `max`;
70
+ Haiku startup advertises no effort option. The probes used Codex ACP 1.10.0
71
+ with the installed Codex executable and Claude ACP 0.63.0 with the native override.
72
+
73
+ ACP builds effort options from the selected model's `supportedEffortLevels` and
74
+ applies the selection through the SDK's session flag settings. This supports
75
+ `max` without writing it to persistent `effortLevel` settings. Fleet verifies
76
+ that ACP applied the requested effort and fails on rejection. `ultracode` is a
77
+ separate Claude orchestration setting and is not a model effort preset. Account
78
+ and organization restrictions still apply at launch; no fallback model is added.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "catalog_revision": 2,
3
+ "catalog_revision": 4,
4
4
  "models": [
5
5
  { "harness": "codex", "session": "acp", "model": "gpt-6-astra", "efforts": ["low", "medium", "high", "xhigh", "max", "ultra"] },
6
6
  { "harness": "codex", "session": "acp", "model": "gpt-5.6-sol", "efforts": ["low", "medium", "high", "xhigh", "max", "ultra"] },
@@ -12,6 +12,12 @@
12
12
  { "harness": "codex", "session": "acp", "model": "gpt-5.3-codex-spark", "efforts": ["low", "medium", "high", "xhigh"] },
13
13
  { "harness": "claude-code", "session": "acp", "model": "claude-fable-5", "efforts": ["low", "medium", "high", "xhigh", "max"] },
14
14
  { "harness": "claude-code", "session": "acp", "model": "claude-opus-5", "efforts": ["low", "medium", "high", "xhigh", "max"] },
15
- { "harness": "claude-code", "session": "acp", "model": "claude-sonnet-5", "efforts": ["low", "medium", "high", "xhigh", "max"] }
15
+ { "harness": "claude-code", "session": "acp", "model": "claude-sonnet-5", "efforts": ["low", "medium", "high", "xhigh", "max"] },
16
+ { "harness": "codex", "session": "acp", "model": "gpt-6.1-sol", "efforts": ["low", "medium", "high", "xhigh", "max", "ultra"] },
17
+ { "harness": "codex", "session": "acp", "model": "gpt-6-sol", "efforts": ["low", "medium", "high", "xhigh", "max", "ultra"] },
18
+ { "harness": "codex", "session": "acp", "model": "gpt-6-luna", "efforts": ["low", "medium", "high", "xhigh", "max"] },
19
+ { "harness": "claude-code", "session": "acp", "model": "claude-fable-5-1", "efforts": ["low", "medium", "high", "xhigh", "max"] },
20
+ { "harness": "claude-code", "session": "acp", "model": "claude-opus-5-5", "efforts": ["low", "medium", "high", "xhigh", "max"] },
21
+ { "harness": "claude-code", "session": "acp", "model": "claude-haiku-4-5-20251001", "efforts": [] }
16
22
  ]
17
23
  }
@@ -0,0 +1,5 @@
1
+ role: { ref: Engineer }
2
+ brain: { ref: claude-default }
3
+ coordinator: FleetCoordinator
4
+ permissions: { approval: ask, filesystem: workspace, unattended: deny }
5
+ monitor: { mode: fleet, interrupt: after_tool }
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-fable-5-1
5
+ effort: high
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-fable-5-1
5
+ effort: low
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-fable-5-1
5
+ effort: max
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-fable-5-1
5
+ effort: medium
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-fable-5-1
5
+ effort: xhigh
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-fable-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-fable-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-fable-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-fable-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-fable-5
@@ -0,0 +1,4 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-haiku-4-5-20251001
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-opus-5-5
5
+ effort: high
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-opus-5-5
5
+ effort: low
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-opus-5-5
5
+ effort: max
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-opus-5-5
5
+ effort: medium
@@ -0,0 +1,5 @@
1
+ # Generated from presets/brain-catalog.json revision 4.
2
+ harness: claude-code
3
+ session: acp
4
+ model: claude-opus-5-5
5
+ effort: xhigh
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-opus-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-opus-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-opus-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-opus-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-opus-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-sonnet-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-sonnet-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-sonnet-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-sonnet-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: claude-code
3
3
  session: acp
4
4
  model: claude-sonnet-5
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.3-codex-spark
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.3-codex-spark
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.3-codex-spark
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.3-codex-spark
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.4
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.4
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.4
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.4-mini
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.4-mini
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.4-mini
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.4-mini
@@ -1,4 +1,4 @@
1
- # Generated from presets/brain-catalog.json revision 2.
1
+ # Generated from presets/brain-catalog.json revision 4.
2
2
  harness: codex
3
3
  session: acp
4
4
  model: gpt-5.4