@awebai/oats 0.29.3 → 0.30.0

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 (232) hide show
  1. package/README.md +12 -6
  2. package/bin/oats.mjs +203 -54
  3. package/capabilities/oats-aweb/bin/oats-aweb.mjs +538 -204
  4. package/capabilities/oats-aweb/injects/aweb.md +1 -1
  5. package/capabilities/oats-aweb/lib/binding-wire.mjs +31 -22
  6. package/capabilities/oats-aweb/oats.json +5 -12
  7. package/capabilities/oats-aweb/skills/VENDORED.md +4 -4
  8. package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +1 -1
  9. package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +83 -13
  10. package/capabilities/oats-code-review/injects/reviewer.md +26 -0
  11. package/capabilities/oats-code-review/oats.json +16 -0
  12. package/capabilities/oats-code-review/skills/adversarial-review/SKILL.md +66 -0
  13. package/capabilities/oats-code-review/skills/review-dev-docs/SKILL.md +30 -0
  14. package/capabilities/oats-code-review/skills/security-review/SKILL.md +56 -0
  15. package/capabilities/oats-code-review/skills/simplification-review/SKILL.md +34 -0
  16. package/capabilities/oats-developer/injects/developer.md +38 -0
  17. package/capabilities/oats-developer/oats.json +17 -0
  18. package/capabilities/oats-developer/skills/execution-strategy/SKILL.md +43 -0
  19. package/capabilities/oats-developer/skills/maintain-dev-docs/SKILL.md +47 -0
  20. package/capabilities/oats-developer/skills/run-the-review-loop/SKILL.md +65 -0
  21. package/capabilities/oats-developer/skills/understand-the-spec/SKILL.md +37 -0
  22. package/capabilities/oats-developer/skills/worktrees/SKILL.md +36 -0
  23. package/capabilities/oats-engineering-expert/injects/expert.md +37 -0
  24. package/capabilities/oats-engineering-expert/oats.json +17 -0
  25. package/capabilities/oats-engineering-expert/skills/coordinate-developers/SKILL.md +37 -0
  26. package/capabilities/oats-engineering-expert/skills/coordinate-experts/SKILL.md +52 -0
  27. package/capabilities/oats-engineering-expert/skills/land-your-prs/SKILL.md +50 -0
  28. package/capabilities/oats-engineering-expert/skills/plan-and-spec/SKILL.md +53 -0
  29. package/capabilities/oats-engineering-expert/skills/verify-developer-work/SKILL.md +49 -0
  30. package/capabilities/oats-okf/bin/oats-okf.mjs +16 -9
  31. package/capabilities/oats-okf/lib/binding-wire.mjs +47 -15
  32. package/capabilities/oats-okf/lib/config.mjs +2 -1
  33. package/capabilities/oats-okf/lib/consult.mjs +26 -4
  34. package/capabilities/oats-okf/lib/harvest-switch.mjs +16 -3
  35. package/capabilities/oats-okf/lib/inspection.mjs +26 -7
  36. package/capabilities/oats-okf/lib/io.mjs +9 -1
  37. package/capabilities/oats-okf/lib/sources.mjs +34 -3
  38. package/capabilities/oats-okf/lib/stores.mjs +8 -6
  39. package/capabilities/oats-okf/lib/worker.mjs +7 -17
  40. package/capabilities/oats-okf/oats.json +6 -3
  41. package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +2 -2
  42. package/capabilities/oats-okf-harvest/oats.json +3 -3
  43. package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +6 -6
  44. package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +37 -16
  45. package/capabilities/oats-okf-maintenance/injects/maintainer.md +1 -1
  46. package/capabilities/oats-okf-maintenance/lib/provenance.mjs +6 -1
  47. package/capabilities/oats-okf-maintenance/oats.json +2 -2
  48. package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +17 -2
  49. package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +11 -23
  50. package/capabilities/oats-workspace-experts/injects/oats-experts.md +26 -0
  51. package/capabilities/oats-workspace-experts/oats.json +9 -0
  52. package/docs/capabilities.md +160 -171
  53. package/docs/capability-manifest.schema.json +7 -10
  54. package/docs/configuration.md +213 -64
  55. package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
  56. package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
  57. package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
  58. package/docs/design/2026-09-27-team-model-v2.md +116 -0
  59. package/docs/design/2026-09-28-automations-trust.md +38 -0
  60. package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
  61. package/docs/design/HISTORY.md +65 -0
  62. package/docs/design/README.md +23 -54
  63. package/docs/desktop-cli-api.md +1787 -1777
  64. package/docs/desktop.md +30 -91
  65. package/docs/execution-targets.md +146 -292
  66. package/docs/first-team.md +31 -17
  67. package/docs/implementation.md +76 -288
  68. package/docs/integrations.md +118 -320
  69. package/docs/knowledge-capability-authoring.md +25 -52
  70. package/docs/knowledge-reference/acceptance.md +3 -3
  71. package/docs/knowledge-reference/adoption.md +1 -1
  72. package/docs/knowledge-reference/harvester.md +2 -2
  73. package/docs/knowledge-reference/package-craft.md +3 -3
  74. package/docs/knowledge-reference/provider-mapping.md +3 -6
  75. package/docs/knowledge-reference/reader-capture.md +3 -3
  76. package/docs/knowledge-theory.md +62 -166
  77. package/docs/knowledge.md +225 -404
  78. package/docs/layers.md +42 -97
  79. package/docs/oats-local.schema.json +58 -5
  80. package/docs/oats-membership.schema.json +1 -8
  81. package/docs/oats-package.schema.json +5 -5
  82. package/docs/oats-workspace.schema.json +8 -22
  83. package/docs/official-catalog.md +25 -28
  84. package/docs/packages.md +45 -63
  85. package/docs/plans/0.30-close-out.md +61 -0
  86. package/docs/release-lane.md +77 -0
  87. package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
  88. package/docs/release-notes/v0.19.0.md +48 -147
  89. package/docs/release-notes/v0.19.1.md +2 -3
  90. package/docs/release-notes/v0.19.3.md +2 -15
  91. package/docs/release-notes/v0.20.0.md +0 -15
  92. package/docs/release-notes/v0.22.0.md +71 -138
  93. package/docs/release-notes/v0.22.1.md +42 -90
  94. package/docs/release-notes/v0.22.10.md +1 -1
  95. package/docs/release-notes/v0.22.11.md +1 -47
  96. package/docs/release-notes/v0.22.12.md +4 -13
  97. package/docs/release-notes/v0.22.13.md +1 -42
  98. package/docs/release-notes/v0.22.14.md +3 -11
  99. package/docs/release-notes/v0.22.15.md +1 -46
  100. package/docs/release-notes/v0.22.16.md +6 -8
  101. package/docs/release-notes/v0.22.18.md +1 -99
  102. package/docs/release-notes/v0.22.19.md +3 -14
  103. package/docs/release-notes/v0.22.2.md +6 -15
  104. package/docs/release-notes/v0.22.3.md +0 -1
  105. package/docs/release-notes/v0.22.4.md +1 -14
  106. package/docs/release-notes/v0.22.5.md +2 -12
  107. package/docs/release-notes/v0.22.6.md +0 -3
  108. package/docs/release-notes/v0.23.0.md +9 -25
  109. package/docs/release-notes/v0.23.1.md +9 -25
  110. package/docs/release-notes/v0.23.2.md +2 -4
  111. package/docs/release-notes/v0.24.0.md +56 -97
  112. package/docs/release-notes/v0.24.1.md +7 -11
  113. package/docs/release-notes/v0.24.10.md +34 -45
  114. package/docs/release-notes/v0.24.11.md +12 -20
  115. package/docs/release-notes/v0.24.12.md +35 -48
  116. package/docs/release-notes/v0.24.13.md +34 -41
  117. package/docs/release-notes/v0.24.2.md +9 -13
  118. package/docs/release-notes/v0.24.3.md +7 -11
  119. package/docs/release-notes/v0.24.4.md +6 -6
  120. package/docs/release-notes/v0.24.5.md +6 -10
  121. package/docs/release-notes/v0.24.6.md +2 -5
  122. package/docs/release-notes/v0.24.7.md +46 -75
  123. package/docs/release-notes/v0.24.8.md +58 -96
  124. package/docs/release-notes/v0.24.9.md +38 -54
  125. package/docs/release-notes/v0.25.0.md +59 -76
  126. package/docs/release-notes/v0.25.1.md +57 -81
  127. package/docs/release-notes/v0.25.2.md +51 -70
  128. package/docs/release-notes/v0.25.3.md +11 -13
  129. package/docs/release-notes/v0.25.4.md +9 -13
  130. package/docs/release-notes/v0.25.5.md +3 -5
  131. package/docs/release-notes/v0.25.6.md +20 -29
  132. package/docs/release-notes/v0.25.7.md +5 -7
  133. package/docs/release-notes/v0.25.8.md +26 -39
  134. package/docs/release-notes/v0.26.0.md +175 -646
  135. package/docs/release-notes/v0.27.0.md +4 -5
  136. package/docs/release-notes/v0.27.1.md +4 -6
  137. package/docs/release-notes/v0.27.2.md +1 -1
  138. package/docs/release-notes/v0.28.0.md +57 -124
  139. package/docs/release-notes/v0.29.0.md +89 -208
  140. package/docs/release-notes/v0.29.1.md +1 -1
  141. package/docs/release-notes/v0.29.2.md +3 -4
  142. package/docs/release-notes/v0.29.4.md +90 -0
  143. package/docs/release-notes/v0.30.0.md +205 -0
  144. package/docs/schedules.md +280 -349
  145. package/docs/servers.md +99 -117
  146. package/docs/soul.schema.json +2 -9
  147. package/docs/souls-and-instances.md +145 -158
  148. package/docs/workspaces.md +132 -215
  149. package/lib/automations.mjs +28 -6
  150. package/lib/core.mjs +226 -74
  151. package/lib/instance-events.mjs +1 -1
  152. package/lib/instance-inspect.mjs +109 -34
  153. package/lib/instance-lifecycle.mjs +14 -1
  154. package/lib/instance-resolution.mjs +26 -27
  155. package/lib/launch-preference.mjs +87 -0
  156. package/lib/materialize.mjs +3 -3
  157. package/lib/packages.mjs +2 -5
  158. package/lib/resolve.mjs +29 -87
  159. package/lib/schedule.mjs +32 -18
  160. package/lib/teams-verbs.mjs +195 -0
  161. package/lib/teams.mjs +190 -0
  162. package/lib/triggers.mjs +53 -17
  163. package/lib/workspace.mjs +54 -147
  164. package/package-catalog.json +9 -15
  165. package/package.json +1 -1
  166. package/skills/oats-getting-started/SKILL.md +25 -13
  167. package/capabilities/oats-review/injects/review.md +0 -69
  168. package/capabilities/oats-review/oats.json +0 -10
  169. package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
  170. package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
  171. package/docs/conventions.md +0 -90
  172. package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
  173. package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
  174. package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
  175. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
  176. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
  177. package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
  178. package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
  179. package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
  180. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
  181. package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
  182. package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
  183. package/docs/design/2026-09-15-captured-dispatch.md +0 -127
  184. package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
  185. package/docs/design/2026-09-15-package-preparation.md +0 -100
  186. package/docs/design/2026-09-15-portable-data-contract.md +0 -121
  187. package/docs/design/2026-09-15-portable-declarations.md +0 -189
  188. package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
  189. package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
  190. package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
  191. package/docs/design/2026-09-15-source-observation.md +0 -119
  192. package/docs/design/2026-09-16-captured-admission.md +0 -77
  193. package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
  194. package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
  195. package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
  196. package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
  197. package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
  198. package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
  199. package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
  200. package/docs/design/2026-09-16-portable-onboarding.md +0 -179
  201. package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
  202. package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
  203. package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
  204. package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
  205. package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
  206. package/docs/design/2026-09-17-captured-native-start.md +0 -58
  207. package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
  208. package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
  209. package/docs/design/2026-09-17-public-captured-start.md +0 -108
  210. package/docs/design/2026-09-17-public-prepare-request.md +0 -90
  211. package/docs/design/2026-09-18-captured-pi-host.md +0 -205
  212. package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
  213. package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
  214. package/docs/design/2026-09-20-redesign-program-board.md +0 -142
  215. package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
  216. package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
  217. package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
  218. package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
  219. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
  220. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
  221. package/docs/design/2026-09-24-phase-d-plan.md +0 -305
  222. package/docs/design/2026-09-25-teams-contract.md +0 -258
  223. package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
  224. package/docs/design/desktop-ux-plan.md +0 -362
  225. package/docs/design/launch-configurations.md +0 -168
  226. package/docs/design/okf-mirror-provenance.md +0 -105
  227. package/docs/design/operations-contract.md +0 -141
  228. package/docs/oats-member.schema.json +0 -38
  229. package/skills/integration-authoring/SKILL.md +0 -84
  230. package/skills/oats-support/SKILL.md +0 -79
  231. package/skills/skill-craft/SKILL.md +0 -109
  232. 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.