@awebai/oats 0.38.0 → 0.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/desktop.md CHANGED
@@ -89,10 +89,15 @@ new PATH.
89
89
 
90
90
  ## Opening a workspace
91
91
 
92
- The app starts on the directory it was launched with (its own folder by
93
- default). To view a deployment, open the workspace switcher in the sidebar
94
- and choose **Add workspace → Browse**, then point it at an OATS deployment —
95
- the directory (the operator's choice) holding `oats-local.yaml` and `agents/`.
92
+ The app opens the workspaces you had open, plus the directory it was
93
+ launched with (`--dir`, or the folder it was started from) when that is an
94
+ OATS deployment — the directory (the operator's choice) holding
95
+ `oats-local.yaml` and `agents/`. A folder that is not a deployment is never
96
+ opened: started from Finder, with nothing open to restore, the window shows
97
+ the workspace switcher instead. It lists the deployments on this computer
98
+ under **On this computer** (those directly inside `~/Agents`, and a saved
99
+ one that is not open); click one to open it in this window. **Add local
100
+ workspace… → Browse** points it at any other deployment.
96
101
  A picked folder without `oats-local.yaml` is offered onboarding instead. The
97
102
  Desktop never parses the deployment: its members, lock state and header come
98
103
  from `oats workspace status`, and its instances from the deployment's one
@@ -246,6 +251,21 @@ any other exit code. Closing the tab ends the reconnecting. Reconnecting
246
251
  never stops or restarts the agent on the server: only the local ssh viewer
247
252
  ends.
248
253
 
254
+ ## Copy from a terminal
255
+
256
+ Drag over an agent's output to select it. When you release the mouse, the
257
+ selection is copied to the clipboard, ready to paste anywhere. ⌘C, Edit › Copy
258
+ and the right-click menu then copy nothing new: the text is already there. The
259
+ selection is tmux's own (copy mode), so it can run past the visible screen
260
+ into the scrollback, and tmux sends its copy to the Desktop, which writes it to
261
+ the clipboard. Nothing in a terminal can read the clipboard.
262
+
263
+ If the agent's program uses the mouse itself, the drag goes to it instead. Hold
264
+ **Option** (macOS) or **Shift** while dragging to select in the terminal itself,
265
+ then copy with ⌘C or the right-click menu. If your `~/.tmux.conf` sets
266
+ `set-clipboard off`, tmux keeps its copies to itself: use Option-drag. ⌘V
267
+ pastes into the agent's draft as before.
268
+
249
269
  ## Attach files and screenshots
250
270
 
251
271
  Drop a file onto an agent terminal to insert its path into that agent's draft.
@@ -284,7 +304,7 @@ error in the terminal. Each drop/paste accepts up to 16 files totaling 25 MB.
284
304
  | "Compatible oats CLI required" card | No CLI, or a version outside the range the card itself states. Copy the card's install command, or **Choose oats…** to point at the right binary; **Retry** re-probes. Spawn is disabled until a compatible CLI is verified. |
285
305
  | Spawn disabled, no card | The probe hasn't settled yet (transient, resolves in ms). If it persists, the backend is unreachable — restart the app. |
286
306
  | Terminals fail to open ("could not attach") | tmux missing, or no live session for that instance. Install tmux (`tmux -V`); check `tmux ls`. |
287
- | 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). |
307
+ | Can't select/copy text in a terminal tab | A plain drag copies on release ([Copy from a terminal](#copy-from-a-terminal)). If nothing reaches the clipboard, the program in the pane has the mouse, or your tmux config sets `set-clipboard off`: hold **Option** (macOS) or **Shift** while dragging, then copy (Cmd+C / right-click → Copy). |
288
308
  | 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. |
289
309
  | 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. |
290
310
 
@@ -41,7 +41,7 @@ arrives from.
41
41
  # oats-workspace.yaml: one default per slot, for every soul
42
42
  packages:
43
43
  oats.okf: v4.1.1
44
- oats.aweb: v1.19.0
44
+ oats.aweb: v1.20.0
45
45
  oats.linear: v1.0.1
46
46
  oats.jira: v1.0.1
47
47
  defaults:
@@ -89,7 +89,10 @@ operations in full.
89
89
  `knowledge-maintainer` package soul reviews the resulting PRs.
90
90
  - **`oats.aweb`** mints a messaging identity for each instance at spawn and
91
91
  removes it at retire, contributes the aweb messaging skills, and wires the
92
- channel so sessions are woken by mail. `oats aweb roster` lists the team.
92
+ channel so sessions are woken by mail. `oats aweb roster` lists the team:
93
+ its membership certificates and workspaces, one entry per alias with its
94
+ sources, status and kind (global identities first), and says when either
95
+ source is incomplete.
93
96
  - **`oats.jira`** teaches the `jira-tasks` protocol and adds an advisory spawn
94
97
  hook that names the configured site and project.
95
98
  - **`oats.linear`** provides JSON-first `oats linear` commands, the
@@ -11,7 +11,7 @@ or workspace membership alone does not make a package official.
11
11
  |---|---|---|---|
12
12
  | `oats.framework` | `oats-framework/v1.5.0` (this repository) | `oats.core`, `oats.setup`, `oats.knowledge-theory` | `knowledge-theory-expert` |
13
13
  | `oats.okf` | `v4.1.1` | `oats.okf` (knowledge), `oats.okf-harvest`, `oats.okf-maintenance` | `knowledge-harvester`, `knowledge-maintainer` |
14
- | `oats.aweb` | `v1.19.0` | `oats.aweb` (messaging) | |
14
+ | `oats.aweb` | `v1.20.0` | `oats.aweb` (messaging) | |
15
15
  | `oats.engineering` | `v1.5.0` | `oats.engineering-expert`, `oats.developer`, `oats.code-review` | `code-reviewer` |
16
16
  | `oats.authoring` | `v1.0.3` | `oats.authoring` | |
17
17
  | `oats.jira` | `v1.0.1` | `oats.jira` (tasks) | |
package/docs/packages.md CHANGED
@@ -76,7 +76,7 @@ members:
76
76
  packages:
77
77
  oats.framework: v1.5.0
78
78
  oats.okf: v4.1.1
79
- oats.aweb: v1.19.0
79
+ oats.aweb: v1.20.0
80
80
  teams:
81
81
  platform: { team: "platform:acme.aweb.ai", description: Platform engineering }
82
82
  defaults:
@@ -134,7 +134,7 @@ Declaring a package in the workspace's `packages:` is the trust decision
134
134
  ## `oats package add | remove`
135
135
 
136
136
  ```bash
137
- oats package add oats.aweb v1.19.0 # a catalog version
137
+ oats package add oats.aweb v1.20.0 # a catalog version
138
138
  oats package add acme.tools git:github.com/acme/tools@v0.4.0
139
139
  oats package remove acme.tools
140
140
  ```
@@ -0,0 +1,50 @@
1
+ # OATS 0.38.1
2
+
3
+ ## Changed
4
+
5
+ - **oats.aweb 1.20.0: `oats aweb roster` lists who is on the team and says
6
+ what each entry is** (awebai/oats-aweb#46). The roster printed only the
7
+ team's membership certificates (`aw id team members`). That listing omits
8
+ identities the registry does not list, such as a team's retained global
9
+ coordinator and dashboard humans. It also listed deployment roots and
10
+ certificates with no workspace exactly like agents. The roster is now the
11
+ union of those certificates and the team's workspace presence
12
+ (`aw workspace status`), read from the minting root. Each entry has its
13
+ sources (`certificate`, `presence` or both), its status (active, when last
14
+ seen, or `certificate only: no workspace record`) and a kind:
15
+ - `global identity`, from the identity scope, listed first;
16
+ - `human` and `hosted agent`, from the session context;
17
+ - `instance` and `deployment root`, from the workspace path;
18
+ - `unknown`.
19
+ An inferred kind says so, and nothing is called retired. aw does not mark a
20
+ team's coordinator, and the roster says so. When a source cannot be read,
21
+ or presence is past its 200-workspace cap, the roster still lists what it
22
+ has and says it is incomplete. `oats aweb roster --json` is now an oats.aweb
23
+ document (`{team, members, certificatesComplete, presenceComplete,
24
+ problems}`) instead of aw's raw listing. The oats-aweb skill, the inject
25
+ and the spawn brief say what the roster shows and what it can't tell you.
26
+
27
+ ## Fixed
28
+
29
+ - **The Desktop opened from Finder no longer shows `/` as its workspace**
30
+ (awebai/oats#518). A Finder launch starts in `/`, and when no saved
31
+ workspace was a deployment, the Desktop served `/`. It titled the window
32
+ `/`, showed `E_NO_DEPLOYMENT` in Instances, and remembered `/` in
33
+ `windows.json` for every later launch. A folder that is not a deployment is
34
+ now never served, bound to a window or saved. With no deployment to open,
35
+ the window opens on the workspace switcher, which lists the deployments
36
+ directly inside `~/Agents` under "On this computer": one click opens one in
37
+ that window. A window remembered on `/` is forgotten at launch.
38
+
39
+ - **A window with no workspace lists the workspaces served after it opened**
40
+ (awebai/oats#521). Its choices were fixed when it opened, so remote
41
+ workspaces arriving a few seconds after launch never appeared and the
42
+ switcher said "No workspace choices reported."
43
+
44
+ - **Copying an agent's output in the Desktop** (awebai/oats#520). A plain
45
+ drag over a terminal now selects the text (tmux's copy mode, so it can
46
+ reach into the scrollback) and copies it to the clipboard on release;
47
+ ⌘C, Edit › Copy and the right-click menu find it there. The Desktop takes
48
+ tmux's copies (OSC 52) write-only: nothing in a terminal can read the
49
+ clipboard. Remote terminals (`oats session attach --server`) bind the same
50
+ drag. ⌘V is unchanged; Option-drag still makes a terminal-only selection.
@@ -27,6 +27,7 @@ export function prepareSessionViewer(target, { exec = execFileSync } = {}) {
27
27
  run(["set-option", "-t", viewer, "status", "off"]);
28
28
  run(["unbind-key", "-a", "-q", "-T", "oatsview-locked"]);
29
29
  run(["bind-key", "-T", "oatsview-locked", "WheelUpPane", "if-shell", "-F", "#{||:#{pane_in_mode},#{mouse_any_flag}}", "send-keys -M", "copy-mode -e; send-keys -M"]);
30
+ run(["bind-key", "-T", "oatsview-locked", "MouseDrag1Pane", "if-shell", "-F", "#{||:#{pane_in_mode},#{mouse_any_flag}}", "send-keys -M", "copy-mode -M"]);
30
31
  run(["set-option", "-t", viewer, "mouse", "on"]);
31
32
  const env = { ...process.env }; delete env.TMUX;
32
33
  return { binary: "tmux", args: ["-u", "-S", target.socket, "attach-session", "-t", `=${viewer}`], env, cleanup };
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "oats.aweb": {
10
10
  "url": "https://github.com/awebai/oats-aweb.git",
11
- "ref": "v1.19.0",
11
+ "ref": "v1.20.0",
12
12
  "path": "oats-package"
13
13
  },
14
14
  "oats.jira": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awebai/oats",
3
- "version": "0.38.0",
3
+ "version": "0.38.1",
4
4
  "description": "OATS (Open Agent Team Specification) — durable souls, disposable instances, targetable capability packages, and the runtime-neutral oats CLI/kernel.",
5
5
  "keywords": [
6
6
  "agents",