@awebai/oats 0.29.4 → 0.30.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.
Files changed (263) hide show
  1. package/README.md +12 -6
  2. package/bin/oats.mjs +194 -50
  3. package/docs/capabilities.md +160 -171
  4. package/docs/capability-manifest.schema.json +6 -11
  5. package/docs/configuration.md +213 -64
  6. package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
  7. package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
  8. package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
  9. package/docs/design/2026-09-27-team-model-v2.md +97 -117
  10. package/docs/design/2026-09-28-automations-trust.md +38 -0
  11. package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
  12. package/docs/design/HISTORY.md +65 -0
  13. package/docs/design/README.md +23 -54
  14. package/docs/desktop-cli-api.md +1787 -1777
  15. package/docs/desktop.md +30 -91
  16. package/docs/execution-targets.md +146 -292
  17. package/docs/first-team.md +31 -17
  18. package/docs/implementation.md +77 -288
  19. package/docs/integrations.md +118 -320
  20. package/docs/knowledge-capability-authoring.md +25 -52
  21. package/docs/knowledge-reference/acceptance.md +3 -3
  22. package/docs/knowledge-reference/adoption.md +1 -1
  23. package/docs/knowledge-reference/harvester.md +2 -2
  24. package/docs/knowledge-reference/package-craft.md +3 -3
  25. package/docs/knowledge-reference/provider-mapping.md +3 -6
  26. package/docs/knowledge-reference/reader-capture.md +3 -3
  27. package/docs/knowledge-theory.md +62 -166
  28. package/docs/knowledge.md +225 -404
  29. package/docs/layers.md +42 -97
  30. package/docs/oats-local.schema.json +58 -5
  31. package/docs/oats-membership.schema.json +1 -8
  32. package/docs/oats-package.schema.json +5 -5
  33. package/docs/oats-workspace.schema.json +8 -22
  34. package/docs/official-catalog.md +25 -28
  35. package/docs/packages.md +45 -63
  36. package/docs/plans/0.30-close-out.md +83 -0
  37. package/docs/release-lane.md +82 -0
  38. package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
  39. package/docs/release-notes/v0.19.0.md +48 -147
  40. package/docs/release-notes/v0.19.1.md +2 -3
  41. package/docs/release-notes/v0.19.3.md +2 -15
  42. package/docs/release-notes/v0.20.0.md +0 -15
  43. package/docs/release-notes/v0.22.0.md +71 -138
  44. package/docs/release-notes/v0.22.1.md +42 -90
  45. package/docs/release-notes/v0.22.10.md +1 -1
  46. package/docs/release-notes/v0.22.11.md +1 -47
  47. package/docs/release-notes/v0.22.12.md +4 -13
  48. package/docs/release-notes/v0.22.13.md +1 -42
  49. package/docs/release-notes/v0.22.14.md +3 -11
  50. package/docs/release-notes/v0.22.15.md +1 -46
  51. package/docs/release-notes/v0.22.16.md +6 -8
  52. package/docs/release-notes/v0.22.18.md +1 -99
  53. package/docs/release-notes/v0.22.19.md +3 -14
  54. package/docs/release-notes/v0.22.2.md +6 -15
  55. package/docs/release-notes/v0.22.3.md +0 -1
  56. package/docs/release-notes/v0.22.4.md +1 -14
  57. package/docs/release-notes/v0.22.5.md +2 -12
  58. package/docs/release-notes/v0.22.6.md +0 -3
  59. package/docs/release-notes/v0.23.0.md +9 -25
  60. package/docs/release-notes/v0.23.1.md +9 -25
  61. package/docs/release-notes/v0.23.2.md +2 -4
  62. package/docs/release-notes/v0.24.0.md +56 -97
  63. package/docs/release-notes/v0.24.1.md +7 -11
  64. package/docs/release-notes/v0.24.10.md +34 -45
  65. package/docs/release-notes/v0.24.11.md +12 -20
  66. package/docs/release-notes/v0.24.12.md +35 -48
  67. package/docs/release-notes/v0.24.13.md +34 -41
  68. package/docs/release-notes/v0.24.2.md +9 -13
  69. package/docs/release-notes/v0.24.3.md +7 -11
  70. package/docs/release-notes/v0.24.4.md +6 -6
  71. package/docs/release-notes/v0.24.5.md +6 -10
  72. package/docs/release-notes/v0.24.6.md +2 -5
  73. package/docs/release-notes/v0.24.7.md +46 -75
  74. package/docs/release-notes/v0.24.8.md +58 -96
  75. package/docs/release-notes/v0.24.9.md +38 -54
  76. package/docs/release-notes/v0.25.0.md +59 -76
  77. package/docs/release-notes/v0.25.1.md +57 -81
  78. package/docs/release-notes/v0.25.2.md +51 -70
  79. package/docs/release-notes/v0.25.3.md +11 -13
  80. package/docs/release-notes/v0.25.4.md +9 -13
  81. package/docs/release-notes/v0.25.5.md +3 -5
  82. package/docs/release-notes/v0.25.6.md +20 -29
  83. package/docs/release-notes/v0.25.7.md +5 -7
  84. package/docs/release-notes/v0.25.8.md +26 -39
  85. package/docs/release-notes/v0.26.0.md +175 -646
  86. package/docs/release-notes/v0.27.0.md +4 -5
  87. package/docs/release-notes/v0.27.1.md +4 -6
  88. package/docs/release-notes/v0.27.2.md +1 -1
  89. package/docs/release-notes/v0.28.0.md +57 -124
  90. package/docs/release-notes/v0.29.0.md +89 -208
  91. package/docs/release-notes/v0.29.1.md +1 -1
  92. package/docs/release-notes/v0.29.2.md +3 -4
  93. package/docs/release-notes/v0.30.0.md +205 -0
  94. package/docs/release-notes/v0.30.1.md +123 -0
  95. package/docs/schedules.md +280 -363
  96. package/docs/servers.md +99 -117
  97. package/docs/soul.schema.json +2 -9
  98. package/docs/souls-and-instances.md +145 -158
  99. package/docs/workspaces.md +137 -215
  100. package/lib/automations.mjs +21 -6
  101. package/lib/core.mjs +226 -74
  102. package/lib/instance-events.mjs +1 -1
  103. package/lib/instance-inspect.mjs +109 -34
  104. package/lib/instance-lifecycle.mjs +14 -1
  105. package/lib/instance-resolution.mjs +26 -27
  106. package/lib/launch-preference.mjs +87 -0
  107. package/lib/materialize.mjs +3 -3
  108. package/lib/packages.mjs +1 -1
  109. package/lib/resolve.mjs +30 -88
  110. package/lib/schedule.mjs +1 -1
  111. package/lib/teams-verbs.mjs +195 -0
  112. package/lib/teams.mjs +190 -0
  113. package/lib/triggers.mjs +2 -2
  114. package/lib/workspace.mjs +54 -147
  115. package/package-catalog.json +10 -16
  116. package/package.json +1 -3
  117. package/skills/oats-getting-started/SKILL.md +25 -13
  118. package/capabilities/oats-authoring/LICENSE +0 -21
  119. package/capabilities/oats-authoring/oats-package.json +0 -11
  120. package/capabilities/oats-authoring/oats.json +0 -12
  121. package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
  122. package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
  123. package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
  124. package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
  125. package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1338
  126. package/capabilities/oats-aweb/injects/aweb.md +0 -47
  127. package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -356
  128. package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
  129. package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
  130. package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
  131. package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
  132. package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
  133. package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
  134. package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
  135. package/capabilities/oats-aweb/oats.json +0 -208
  136. package/capabilities/oats-aweb/skills/LICENSE +0 -21
  137. package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
  138. package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
  139. package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
  140. package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
  141. package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
  142. package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
  143. package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -216
  144. package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
  145. package/capabilities/oats-jira/injects/jira.md +0 -10
  146. package/capabilities/oats-jira/oats.json +0 -22
  147. package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
  148. package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
  149. package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
  150. package/capabilities/oats-linear/injects/linear.md +0 -8
  151. package/capabilities/oats-linear/oats.json +0 -24
  152. package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
  153. package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
  154. package/capabilities/oats-okf/bin/oats-okf.mjs +0 -209
  155. package/capabilities/oats-okf/injects/okf.md +0 -42
  156. package/capabilities/oats-okf/lib/binding-wire.mjs +0 -348
  157. package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
  158. package/capabilities/oats-okf/lib/config.mjs +0 -124
  159. package/capabilities/oats-okf/lib/consult.mjs +0 -518
  160. package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
  161. package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
  162. package/capabilities/oats-okf/lib/inspection.mjs +0 -119
  163. package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
  164. package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
  165. package/capabilities/oats-okf/lib/io.mjs +0 -118
  166. package/capabilities/oats-okf/lib/migration.mjs +0 -137
  167. package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
  168. package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
  169. package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
  170. package/capabilities/oats-okf/lib/sources.mjs +0 -424
  171. package/capabilities/oats-okf/lib/stores.mjs +0 -473
  172. package/capabilities/oats-okf/lib/worker.mjs +0 -497
  173. package/capabilities/oats-okf/oats.json +0 -148
  174. package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
  175. package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
  176. package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
  177. package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
  178. package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
  179. package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
  180. package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
  181. package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
  182. package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
  183. package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
  184. package/capabilities/oats-okf-harvest/oats.json +0 -26
  185. package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
  186. package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
  187. package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
  188. package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  189. package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
  190. package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
  191. package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
  192. package/capabilities/oats-okf-maintenance/oats.json +0 -21
  193. package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
  194. package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
  195. package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
  196. package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  197. package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -146
  198. package/capabilities/oats-review/injects/review.md +0 -69
  199. package/capabilities/oats-review/oats.json +0 -10
  200. package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
  201. package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
  202. package/docs/conventions.md +0 -90
  203. package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
  204. package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
  205. package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
  206. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
  207. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
  208. package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
  209. package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
  210. package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
  211. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
  212. package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
  213. package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
  214. package/docs/design/2026-09-15-captured-dispatch.md +0 -127
  215. package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
  216. package/docs/design/2026-09-15-package-preparation.md +0 -100
  217. package/docs/design/2026-09-15-portable-data-contract.md +0 -121
  218. package/docs/design/2026-09-15-portable-declarations.md +0 -189
  219. package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
  220. package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
  221. package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
  222. package/docs/design/2026-09-15-source-observation.md +0 -119
  223. package/docs/design/2026-09-16-captured-admission.md +0 -77
  224. package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
  225. package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
  226. package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
  227. package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
  228. package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
  229. package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
  230. package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
  231. package/docs/design/2026-09-16-portable-onboarding.md +0 -179
  232. package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
  233. package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
  234. package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
  235. package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
  236. package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
  237. package/docs/design/2026-09-17-captured-native-start.md +0 -58
  238. package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
  239. package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
  240. package/docs/design/2026-09-17-public-captured-start.md +0 -108
  241. package/docs/design/2026-09-17-public-prepare-request.md +0 -90
  242. package/docs/design/2026-09-18-captured-pi-host.md +0 -205
  243. package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
  244. package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
  245. package/docs/design/2026-09-20-redesign-program-board.md +0 -142
  246. package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
  247. package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
  248. package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
  249. package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
  250. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
  251. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
  252. package/docs/design/2026-09-24-phase-d-plan.md +0 -305
  253. package/docs/design/2026-09-25-teams-contract.md +0 -258
  254. package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
  255. package/docs/design/desktop-ux-plan.md +0 -362
  256. package/docs/design/launch-configurations.md +0 -168
  257. package/docs/design/okf-mirror-provenance.md +0 -105
  258. package/docs/design/operations-contract.md +0 -141
  259. package/docs/oats-member.schema.json +0 -38
  260. package/skills/integration-authoring/SKILL.md +0 -84
  261. package/skills/oats-support/SKILL.md +0 -79
  262. package/skills/skill-craft/SKILL.md +0 -109
  263. package/skills/soul-craft/SKILL.md +0 -116
package/docs/desktop.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # OATS Desktop
2
2
 
3
- The OATS Desktop app is the control panel for OATS deployments: the agent
4
- roster and hierarchy, brain/markdown/task/state views, and real terminal
5
- attach to running agents' tmux sessions. With a compatible `oats` CLI
6
- installed it can also spawn agents from the Soul roster.
3
+ The OATS Desktop app is the control panel for an OATS deployment: the
4
+ workspace and its souls, the agent roster and hierarchy, each instance's
5
+ files, state and knowledge, and real terminals attached to running agents'
6
+ sessions. With a compatible `oats` CLI installed it also spawns, starts,
7
+ retires and schedules agents.
7
8
 
8
9
  ## Install
9
10
 
@@ -16,7 +17,7 @@ Download the installer for your platform from the
16
17
  | macOS x64 (Intel) | DMG + ZIP | ad-hoc signed — see below |
17
18
  | Linux x64 | AppImage + DEB | requires `tmux` |
18
19
 
19
- **Windows and Linux arm64 are not supported in 0.19.x.**
20
+ Windows and Linux arm64 are not supported.
20
21
 
21
22
  Verify downloads against the release's `SHA256SUMS.txt`. GitHub
22
23
  build-provenance attestations are published for every asset
@@ -44,11 +45,10 @@ it, but opening a terminal will fail until tmux is installed. The DEB
44
45
  declares the dependency; for the AppImage install it yourself
45
46
  (`apt install tmux`, `dnf install tmux`, …) and verify with `tmux -V`.
46
47
 
47
- ### The `oats` CLI (for Spawn)
48
+ ### The `oats` CLI
48
49
 
49
- Reads — roster, hierarchy, brain, files, terminals — work with no CLI at
50
- all. Spawning agents runs through an installed `oats` CLI with Desktop API
51
- v1:
50
+ Reads (roster, hierarchy, files, terminals) work with no CLI at all.
51
+ Everything else runs through an installed `oats` CLI:
52
52
 
53
53
  ```bash
54
54
  npm install -g @awebai/oats
@@ -59,26 +59,16 @@ the one with **this Desktop's own version** — the app's degradation card
59
59
  shows that exact `npm install -g @awebai/oats@<version>` command, and
60
60
  copying it from the card is the reliable route.
61
61
 
62
- Each Desktop accepts a band of released CLI versions around its own —
63
- prereleases are never accepted — and individual features may sit behind a
64
- higher floor (spawn-time agent relations do; the relation controls fail closed
65
- naming the version they need). **The app states both**: the degradation card
66
- shows the accepted range and the exact install command, and the relation note
67
- names its floor. This guide deliberately does not repeat those numbers — it is
68
- rolling documentation and would go stale against the app; the versioned
69
- [release notes](release-notes/) record the band for each release, and
70
- [docs/desktop-cli-api.md](desktop-cli-api.md) is the contract of record beside
71
- the code that enforces it. The app discovers the CLI automatically
62
+ Each Desktop accepts a band of released CLI versions around its own
63
+ (prereleases never), and a feature may need a higher floor; the app states
64
+ both, so this guide does not repeat the numbers. The contract is
65
+ [desktop-cli-api.md](desktop-cli-api.md). The app discovers the CLI automatically
72
66
  (your PATH, the npm global prefix, a login shell) and re-probes on launch,
73
67
  app focus, and Retry. Until a compatible CLI is verified, the Soul roster's
74
68
  **Spawn** buttons are disabled behind one card showing what was detected,
75
69
  what is required, **Choose oats…** (pick the binary yourself — the choice
76
70
  persists), **Retry**, a docs link, and the copyable install command. The
77
- app never installs the CLI itself. Memory harvest runs through the same
78
- CLI boundary and is available from an instance's action menu.
79
-
80
- The probe/mutation contract is specified in
81
- [desktop-cli-api.md](desktop-cli-api.md).
71
+ app never installs the CLI itself.
82
72
 
83
73
  ## Opening a workspace
84
74
 
@@ -89,7 +79,7 @@ the directory (the operator's choice) holding `oats-local.yaml` and `agents/`.
89
79
  A picked folder without `oats-local.yaml` is offered onboarding instead. The
90
80
  Desktop never parses the deployment: its members, lock state and header come
91
81
  from `oats workspace status`, and its instances from the deployment's one
92
- `agents/` root. There is no team scope and no `oats-config.yaml`.
82
+ `agents/` root.
93
83
  Added workspaces are remembered and offered as suggestions next time.
94
84
 
95
85
  Launch flags for scripted use: `--dir <workspace>` and `OATS_DESKTOP_PORT`.
@@ -99,7 +89,7 @@ Launch flags for scripted use: `--dir <workspace>` and `OATS_DESKTOP_PORT`.
99
89
  Open **Schedules** in the selected workspace to launch a new agent on a cron,
100
90
  wake an existing agent with a message, or harvest its knowledge. **Schedule…**
101
91
  on a Soul roster card preselects that soul. Choose the task or message, repeat
102
- pattern and time zone; new agent jobs also offer runtime, model, permissions
92
+ pattern and time zone; new agent jobs also offer harness, model, permissions
103
93
  and session backend. The list shows the next run, last observed outcome and
104
94
  whether the host scheduler is enabled. Pause, edit, run now and delete operate
105
95
  on that workspace's saved jobs. Launching an agent is reported separately from
@@ -120,19 +110,21 @@ registered remote workspace the timer and definitions live on that server, so
120
110
  they do not depend on the Mac staying awake. See [Schedules](schedules.md) for
121
111
  the CLI, cron semantics, observed outcomes and recovery commands.
122
112
 
123
- ## Migrating from the web panel / TUI pane
124
-
125
- 0.18.2 removes the legacy `oats.web` browser panel, `oats pane`, and the
126
- `@awebai/oats/control-pane` export. The Desktop app replaces all
127
- three. Migration:
113
+ ## Attach files and screenshots
128
114
 
129
- 1. Update the CLI everywhere: `npm install -g @awebai/oats`.
130
- 2. Run `oats doctor` at each workspace scope and follow its guidance to
131
- remove stale `oats.web` config entries, locks, and installed artifacts.
132
- 3. Install the Desktop app (above) and open your workspace.
115
+ Drop a file onto an agent terminal to insert its path into that agent's draft.
116
+ Pasting an image from the clipboard uses the same attachment path. Neither
117
+ operation presses Enter. Text paste continues to use the terminal's normal
118
+ paste behavior. A drop targets the pane under the pointer, including a visible
119
+ pane in a split.
133
120
 
134
- The full breaking-change list is in the
135
- [v0.18.2 release notes](release-notes/v0.18.2.md).
121
+ Local files are referenced in place. Clipboard images are saved privately in
122
+ Desktop's application-data `attachments` directory and retained so an agent can
123
+ read them later. For remote terminals, Desktop calls the installed CLI's
124
+ `session upload` operation; it inserts the returned path only after the file
125
+ has reached the execution host. Both CLI installations must advertise
126
+ `session-upload`. A failed transfer leaves the draft unchanged and shows an
127
+ error in the terminal. Each drop/paste accepts up to 16 files totaling 25 MB.
136
128
 
137
129
  ## Security posture
138
130
 
@@ -158,48 +150,11 @@ The full breaking-change list is in the
158
150
  | Terminals fail to open ("could not attach") | tmux missing, or no live session for that instance. Install tmux (`tmux -V`); check `tmux ls`. |
159
151
  | Can't select/copy text in a terminal tab | The terminal runs with tmux mouse handling, so a plain drag scrolls/passes through. Hold **Option** (macOS) or **Shift** while dragging to make a local selection, then copy (Cmd+C / right-click → Copy). |
160
152
  | macOS "app is damaged / can't be opened" | Ad-hoc-signed (not notarized) build + quarantine. Right-click → Open, or clear the quarantine attribute (above). If it persists, verify the bundle: `codesign --verify --deep --strict --verbose=2 "/Applications/OATS Desktop.app"` — a non-zero exit means a broken artifact, report it. |
161
- | Roster empty | The opened directory isn't an OATS workspace (needs `agents/`, or a team scope). Use the workspace switcher → Add workspace to select the right root. |
153
+ | Roster empty | The opened directory isn't an OATS deployment (it needs `oats-local.yaml` and `agents/`). Use the workspace switcher → Add workspace to select the right folder. |
162
154
 
163
155
  For bugs, attach the terminal output of the app (`OATS Desktop` prints
164
156
  server and CLI-discovery logs to stdout) and your platform/arch.
165
157
 
166
- ## Release verification ownership
167
-
168
- Installer CI gates what headless runners can prove reliably for every
169
- published platform/architecture: electron-builder completes, the expected
170
- DMG/ZIP/AppImage/DEB artifacts exist, both packaged macOS `.app` bundles
171
- pass strict deep codesign verification of their complete ad-hoc signatures
172
- (`codesign --verify --deep --strict`), node-pty's packaged `spawn-helper` is
173
- executable, and node-pty loads and spawns under the packaged Electron ABI.
174
- The macOS x64 leg cross-builds on macos-14 and installs Rosetta 2 so that its
175
- x64 Electron + node-pty ABI probe really executes; a wrong-architecture
176
- native module fails that leg.
177
-
178
- CI does **not** gate the packaged GUI launch: ad-hoc-signed, non-notarized
179
- Electron apps do not
180
- have a reliable interactive windowserver in headless CI. Post-publish launch
181
- acceptance is therefore owned by the operator/maintainer, using the actual
182
- released installers (not a source checkout):
183
-
184
- 1. Verify the asset checksum/attestation, install it outside the source tree,
185
- and on macOS use right-click → **Open** for the Gatekeeper step (ad-hoc
186
- signatures carry no identified-developer identity).
187
- 2. Launch OATS Desktop and open a real deployment; verify roster, brain and
188
- Markdown reads.
189
- 3. Attach an existing tmux terminal, confirm input/output, and close the tab
190
- (the durable tmux window must survive).
191
- 4. Verify the released global CLI is detected and Spawn is enabled; hide or
192
- mismatch the CLI and confirm reads/terminal still work while Spawn disables
193
- with recovery guidance.
194
- 5. Repeat per published architecture where hardware is available. In
195
- particular, launch-check macOS x64 on an Intel Mac if one is available;
196
- CI's Rosetta ABI probe is the native-module proof, while this is the actual
197
- shipped-installer/user-launch proof.
198
-
199
- Record the installed version, platform/architecture and outcome in the
200
- release verification notes. This post-publish check is acceptance — it does
201
- not weaken the pre-publish build/inventory/ABI gates.
202
-
203
158
  ## Building from source
204
159
 
205
160
  Developer docs live in [`packages/desktop/README.md`](../packages/desktop/README.md)
@@ -210,19 +165,3 @@ certificate auto-discovery disabled) and
210
165
  marked build-verify mode (inventory + strict codesign verification +
211
166
  node-pty ABI, no GUI launch); a local
212
167
  interactive run may also exercise the launch phase.
213
-
214
- ### Attach files and screenshots
215
-
216
- Drop a file onto an agent terminal to insert its path into that agent's draft.
217
- Pasting an image from the clipboard uses the same attachment path. Neither
218
- operation presses Enter. Text paste continues to use the terminal's normal
219
- paste behavior. A drop targets the pane under the pointer, including a visible
220
- pane in a split.
221
-
222
- Local files are referenced in place. Clipboard images are saved privately in
223
- Desktop's application-data `attachments` directory and retained so an agent can
224
- read them later. For remote terminals, Desktop calls the installed CLI's
225
- `session upload` operation; it inserts the returned path only after the file
226
- has reached the execution host. Both CLI installations must advertise
227
- `session-upload`. A failed transfer leaves the draft unchanged and shows an
228
- error in the terminal. Each drop/paste accepts up to 16 files totaling 25 MB.