@awebai/oats 0.22.16 → 0.22.19

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.
@@ -0,0 +1,25 @@
1
+ # OATS v0.22.17
2
+
3
+ Two corrections found by installed acceptance of 0.22.16, nothing else.
4
+
5
+ ## oats.okf 1.6.1
6
+
7
+ A provider view larger than one pipe buffer arrived cut at 65536 bytes
8
+ with exit 0 when the kernel's operation runner or a Desktop read it: the
9
+ provider wrote its envelope and exited at once, and on macOS Node writes
10
+ to a pipe asynchronously. Every answer now leaves the provider whole
11
+ before it exits. The catalog pins v1.6.1; scopes on 1.6.0 keep working
12
+ for small views until their owners run
13
+ `oats update oats.okf --to v1.6.1 --dir <scope>` and re-trust. The
14
+ kernel's runner is unchanged; the regression covers a 128 KiB view
15
+ through an actual pipe, directly and through `oats operation run`, and a
16
+ 300 KiB view from any provider.
17
+
18
+ ## Desktop
19
+
20
+ Workspaces added at runtime survive an app restart: the opened set is
21
+ persisted on its own (not the recent-suggestion store), restored and
22
+ re-validated at startup with absent paths skipped and aliases collapsed,
23
+ and a backend is reused only when it covers every restored workspace. A
24
+ failed persistence write keeps the previous set and reports the failed
25
+ add.
@@ -0,0 +1,101 @@
1
+ # OATS v0.22.18
2
+
3
+ Choose how an agent runs without replacing its home. Desktop offers
4
+ **Start…** for stopped instances and **Restart with…** for running
5
+ instances, with harness, model, permissions and named launch
6
+ configurations. The kernel records what each home was started with and
7
+ starts it again the same way.
8
+
9
+ ## Named launch configurations
10
+
11
+ Define a reusable configuration in a scope's `oats-config.yaml`, or use
12
+ **Manage launch configurations** in Desktop. A configuration chooses `pi`,
13
+ `claude` or `codex`, an optional executable or wrapper, literal arguments,
14
+ environment values or references, a default model and the shared `yolo`
15
+ setting.
16
+
17
+ ```yaml
18
+ launch-configs:
19
+ codex-personal:
20
+ runtime: codex
21
+ args: ["--profile", "personal"]
22
+ yolo: true
23
+ ```
24
+
25
+ Arguments are passed literally; native configuration files and account
26
+ settings stay under the harness's control. For environment credentials use
27
+ a reference such as `API_KEY: {fromEnv: PERSONAL_KEY}`: the execution host
28
+ resolves it each time the agent starts. The recorded recipe, receipts,
29
+ previews, roster answers and spawn answers do not expose the value (the
30
+ launch itself and its transport necessarily use it). A configuration cannot name the kernel's own launch
31
+ environment or override environment a capability owns.
32
+
33
+ An existing instance keeps its recorded launch configuration even if the
34
+ scope's definition changes or disappears. Select a named configuration
35
+ explicitly to apply its current definition. Changing only the model or
36
+ permissions keeps the rest of the recorded invocation; choosing a harness
37
+ without a configuration starts that harness's defaults, with no model
38
+ carried across harnesses.
39
+
40
+ `oats launch-config list | set | remove | preview` author and inspect
41
+ configurations; `oats spawn --launch-config` starts a new instance under
42
+ one; a soul may name a default (`launch-config:` in soul.yaml,
43
+ `oats soul set --launch-config`).
44
+
45
+ ## Restart in place
46
+
47
+ `oats session start` with a selection validates the requested launch
48
+ (recipe, executable, references, capability preparation, runtime packages)
49
+ and starts a stopped instance; it never stops a running harness. Only
50
+ `oats session restart` does: it runs the same checks first, then sends
51
+ SIGTERM to the harness under the pane's launcher and waits a bounded time
52
+ for it to end; it does not escalate to a forced kill and refuses to launch
53
+ a second harness if it cannot confirm the first has stopped, reporting what
54
+ was signalled and observed. The instance keeps its home, identity, work and
55
+ notes; OATS does not transfer a native conversation between harnesses.
56
+ Save work before restarting.
57
+
58
+ Capabilities take part through what was captured for the home: a capability
59
+ may declare a `launch` hook to prepare another harness (under the settings
60
+ captured at spawn, with the scope's current manifest and trust); a
61
+ capability that contributed harness-specific arguments and cannot prepare
62
+ the new one refuses the switch. Homes that predate launch recipes are
63
+ converted narrowly from their recorded command when a selection asks for
64
+ it; unrecognized arguments are refused by name.
65
+
66
+ One limitation, stated rather than hidden: a runtime-package requirement is
67
+ verified with the package manager's controlled list command under the
68
+ launch's environment and executable, which cannot carry a configuration's
69
+ arguments. When such a requirement applies and the configuration passes
70
+ arguments, the launch is not reported verified (`E_LAUNCH_PROBE_UNSUPPORTED`):
71
+ put native configuration a required package must see in a wrapper
72
+ executable or the environment.
73
+
74
+ ```sh
75
+ oats launch-config list --dir /path/to/team
76
+ oats launch-config preview --home /path/to/instance --runtime codex --json
77
+ oats session restart --home /path/to/instance --launch-config codex-personal
78
+ ```
79
+
80
+ Local tmux and Herdr sessions use the same lifecycle operations. Registered
81
+ servers support configuration management and start/restart choices through
82
+ their installed OATS CLI (probe tokens `launch-config`, `session-restart`);
83
+ existing remote homes keep their saved route, and an older kernel is
84
+ refused after the compatibility probe, before any mutation or stop.
85
+
86
+ ## Desktop fixes
87
+
88
+ Tabs from other workspaces stay hidden. Instance action menus are positioned
89
+ correctly when opened and remain stable through roster refreshes. Failed
90
+ launch preflight checks are shown in the invocation preview, and an accepted
91
+ launch is not presented as a running agent until the terminal is observed.
92
+
93
+ ## Also in this release
94
+
95
+ - Capture lock (source only; the installed capture service is unchanged):
96
+ nonce-checked ownership, cleanup of a failed initialization that respects
97
+ a replacement, release outcomes reported as observed, and the privacy
98
+ loader's exit no longer leaves a lock behind.
99
+ - A design proposal for managing agents from an iPhone over Tailscale
100
+ (docs/design/2026-09-07-mobile-agent-management-proposal.md); no
101
+ implementation ships.
@@ -0,0 +1,115 @@
1
+ # OATS v0.22.19
2
+
3
+ Version 0.22.18 was tagged but never published: its hosted gate failed on
4
+ four tests that pass on macOS and fail on Linux (two launch tests calling
5
+ the kernel directly resolved the real harness binary on the test process
6
+ PATH, one launch test spawned zsh, which the runner does not install, and
7
+ one capture-lock test where Linux reused the inode of an unlinked
8
+ directory). The tag stays fixed and unpublished. This release carries the
9
+ same content with the corrections below.
10
+
11
+ Choose how an agent runs without replacing its home. Desktop offers
12
+ **Start…** for stopped instances and **Restart with…** for running
13
+ instances, with harness, model, permissions and named launch
14
+ configurations. The kernel records what each home was started with and
15
+ starts it again the same way.
16
+
17
+ ## Named launch configurations
18
+
19
+ Define a reusable configuration in a scope's `oats-config.yaml`, or use
20
+ **Manage launch configurations** in Desktop. A configuration chooses `pi`,
21
+ `claude` or `codex`, an optional executable or wrapper, literal arguments,
22
+ environment values or references, a default model and the shared `yolo`
23
+ setting.
24
+
25
+ ```yaml
26
+ launch-configs:
27
+ codex-personal:
28
+ runtime: codex
29
+ args: ["--profile", "personal"]
30
+ yolo: true
31
+ ```
32
+
33
+ Arguments are passed literally; native configuration files and account
34
+ settings stay under the harness's control. For environment credentials use
35
+ a reference such as `API_KEY: {fromEnv: PERSONAL_KEY}`: the execution host
36
+ resolves it each time the agent starts. The recorded recipe, receipts,
37
+ previews, roster answers and spawn answers do not expose the value (the
38
+ launch itself and its transport necessarily use it). A configuration cannot name the kernel's own launch
39
+ environment or override environment a capability owns.
40
+
41
+ An existing instance keeps its recorded launch configuration even if the
42
+ scope's definition changes or disappears. Select a named configuration
43
+ explicitly to apply its current definition. Changing only the model or
44
+ permissions keeps the rest of the recorded invocation; choosing a harness
45
+ without a configuration starts that harness's defaults, with no model
46
+ carried across harnesses.
47
+
48
+ `oats launch-config list | set | remove | preview` author and inspect
49
+ configurations; `oats spawn --launch-config` starts a new instance under
50
+ one; a soul may name a default (`launch-config:` in soul.yaml,
51
+ `oats soul set --launch-config`).
52
+
53
+ ## Restart in place
54
+
55
+ `oats session start` with a selection validates the requested launch
56
+ (recipe, executable, references, capability preparation, runtime packages)
57
+ and starts a stopped instance; it never stops a running harness. Only
58
+ `oats session restart` does: it runs the same checks first, then sends
59
+ SIGTERM to the harness under the pane's launcher and waits a bounded time
60
+ for it to end; it does not escalate to a forced kill and refuses to launch
61
+ a second harness if it cannot confirm the first has stopped, reporting what
62
+ was signalled and observed. The instance keeps its home, identity, work and
63
+ notes; OATS does not transfer a native conversation between harnesses.
64
+ Save work before restarting.
65
+
66
+ Capabilities take part through what was captured for the home: a capability
67
+ may declare a `launch` hook to prepare another harness (under the settings
68
+ captured at spawn, with the scope's current manifest and trust); a
69
+ capability that contributed harness-specific arguments and cannot prepare
70
+ the new one refuses the switch. Homes that predate launch recipes are
71
+ converted narrowly from their recorded command when a selection asks for
72
+ it; unrecognized arguments are refused by name.
73
+
74
+ One limitation, stated rather than hidden: a runtime-package requirement is
75
+ verified with the package manager's controlled list command under the
76
+ launch's environment and executable, which cannot carry a configuration's
77
+ arguments. When such a requirement applies and the configuration passes
78
+ arguments, the launch is not reported verified (`E_LAUNCH_PROBE_UNSUPPORTED`):
79
+ put native configuration a required package must see in a wrapper
80
+ executable or the environment.
81
+
82
+ ```sh
83
+ oats launch-config list --dir /path/to/team
84
+ oats launch-config preview --home /path/to/instance --runtime codex --json
85
+ oats session restart --home /path/to/instance --launch-config codex-personal
86
+ ```
87
+
88
+ Local tmux and Herdr sessions use the same lifecycle operations. Registered
89
+ servers support configuration management and start/restart choices through
90
+ their installed OATS CLI (probe tokens `launch-config`, `session-restart`);
91
+ existing remote homes keep their saved route, and an older kernel is
92
+ refused after the compatibility probe, before any mutation or stop.
93
+
94
+ ## Desktop fixes
95
+
96
+ Tabs from other workspaces stay hidden. Instance action menus are positioned
97
+ correctly when opened and remain stable through roster refreshes. Failed
98
+ launch preflight checks are shown in the invocation preview, and an accepted
99
+ launch is not presented as a running agent until the terminal is observed.
100
+
101
+ ## Also in this release
102
+
103
+ - Capture lock (source only; the installed capture service is unchanged):
104
+ nonce-checked ownership, cleanup of a failed initialization that respects
105
+ a replacement, release outcomes reported as observed, and the privacy
106
+ loader's exit no longer leaves a lock behind. The initializing directory
107
+ is held open until its owner record is written or its cleanup finishes,
108
+ preventing its inode from being reused during cleanup; a replacement
109
+ directory is left alone.
110
+ - Test fixtures: the launch tests resolve their fake harness binaries on the
111
+ test process PATH and exercise only the shells the host installs; no
112
+ kernel change.
113
+ - A design proposal for managing agents from an iPhone over Tailscale
114
+ (docs/design/2026-09-07-mobile-agent-management-proposal.md); no
115
+ implementation ships.
@@ -28,6 +28,7 @@ A soul is durable and committed. It is the part you review, improve, and keep.
28
28
  | `work` | `worktree` or `checkout`. |
29
29
  | `runtime` | `pi` or `claude` — the harness new instances launch on; a spawn can override with `--runtime`. For `claude`, the binary is `claude` unless a local-only `oats-claude-config` file (closest one walking up from the repo; one line naming the binary, e.g. `claude-personal`) selects another — a personal machine preference for account selection, never committed. With the aweb messaging integration active, claude sessions get the `aweb-channel` plugin wired at spawn for real-time push events. |
30
30
  | `model` | Optional default model — a `provider/id[:thinking]` pattern or a comma-separated preference list (`github-copilot/x:high, anthropic/x:high`); at spawn the first entry whose provider/model is available wins (pi models probed via `pi --list-models`). For the `claude` runtime the value is translated to what the claude CLI accepts: `anthropic/<id>[:thinking]` becomes the bare `<id>`, aliases and bare `claude-*` ids pass through, other providers' entries are dropped, and nothing usable falls back to claude's own default. A spawn can override it. |
31
+ | `launch-config` | Optional default launch configuration for new instances (a name declared under `launch-configs:` in the scope's config; see docs/design/launch-configurations.md). `oats spawn --launch-config <name|none>` overrides it; `oats soul set --launch-config <name>` / `--no-launch-config` edit it. |
31
32
 
32
33
  A soul is model-agnostic as an artifact. Its files are plain operating docs,
33
34
  skills, and knowledge. `model` is only the default choice for new instances,