agents-can-communicate 0.8.4 → 0.9.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.
- package/README.md +11 -7
- package/bin/entrypoints/acc-antigravity-relay.mjs +2 -4
- package/bin/entrypoints/acc-hook.mjs +33 -19
- package/bin/entrypoints/hook-output.mjs +14 -5
- package/docs/ADAPTER_AUTHORING.md +32 -0
- package/docs/ARCHITECTURE.md +7 -4
- package/docs/CAPABILITIES.md +7 -6
- package/docs/CLI.md +5 -0
- package/docs/CONFIGURATION.md +15 -10
- package/docs/DESIGN_DECISIONS.md +0 -2
- package/docs/GETTING_STARTED.md +39 -6
- package/docs/HOW_IT_WORKS.md +13 -8
- package/docs/SECURITY_MODEL.md +26 -5
- package/docs/TROUBLESHOOTING.md +74 -12
- package/docs/UPGRADING.md +50 -5
- package/node_modules/@agents-can-communicate/adapter-antigravity/certification.json +78 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/fixtures/certification-provenance.json +111 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/fixtures/delivery/antigravity-desktop-2.19.1-product-evidence.json +156 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/fixtures/delivery/antigravity-desktop-2.19.1-product.json +25 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/fixtures/desktop-2.19.1.json +141 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/package.json +4 -1
- package/node_modules/@agents-can-communicate/adapter-antigravity/plugin/plugin.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/adapter.mjs +13 -2
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/agentapi.mjs +7 -5
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/allow-rule.mjs +98 -17
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/client-process.mjs +64 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/desktop-allow-rule.mjs +140 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/desktop-delivery.mjs +110 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/desktop-endpoint.mjs +203 -0
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/install.mjs +61 -30
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/native-delivery.mjs +61 -24
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/relay-endpoint.mjs +30 -20
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/relay-start.mjs +2 -1
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/relay.mjs +20 -12
- package/node_modules/@agents-can-communicate/adapter-antigravity/src/relays.mjs +18 -4
- package/node_modules/@agents-can-communicate/adapter-claude-code/package.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/adapter.mjs +6 -0
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/inbox-delivery.mjs +50 -37
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/inbox-endpoint.mjs +44 -31
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/inbox-registry.mjs +99 -14
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/inbox-settings.mjs +3 -7
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/inbox-socket-directories.mjs +6 -4
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/install.mjs +32 -7
- package/node_modules/@agents-can-communicate/adapter-codex/package.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-codex/src/app-server-client.mjs +68 -3
- package/node_modules/@agents-can-communicate/adapter-codex/src/daemon-layouts.mjs +13 -0
- package/node_modules/@agents-can-communicate/adapter-codex/src/embedded-host.mjs +87 -13
- package/node_modules/@agents-can-communicate/adapter-codex/src/hooks.mjs +16 -6
- package/node_modules/@agents-can-communicate/adapter-codex/src/install.mjs +18 -9
- package/node_modules/@agents-can-communicate/adapter-codex/src/maintenance-host.mjs +68 -27
- package/node_modules/@agents-can-communicate/adapter-codex/src/native-delivery.mjs +66 -26
- package/node_modules/@agents-can-communicate/adapter-codex/src/native-endpoint.mjs +39 -16
- package/node_modules/@agents-can-communicate/adapter-codex/src/ws-json-rpc.mjs +4 -2
- package/node_modules/@agents-can-communicate/adapter-gemini-cli/extension/gemini-extension.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-gemini-cli/package.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-gemini-cli/src/adapter.mjs +2 -1
- package/node_modules/@agents-can-communicate/adapter-gemini-cli/src/install.mjs +15 -9
- package/node_modules/@agents-can-communicate/adapter-grok/package.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-grok/src/install.mjs +25 -14
- package/node_modules/@agents-can-communicate/adapter-kimi/package.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-kimi/src/adapter.mjs +2 -1
- package/node_modules/@agents-can-communicate/adapter-kimi/src/install.mjs +15 -10
- package/node_modules/@agents-can-communicate/adapter-sdk/package.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-sdk/src/capabilities.mjs +50 -5
- package/node_modules/@agents-can-communicate/adapter-sdk/src/certification.mjs +11 -2
- package/node_modules/@agents-can-communicate/adapter-sdk/src/executables.mjs +149 -0
- package/node_modules/@agents-can-communicate/adapter-sdk/src/hook-shim.mjs +79 -12
- package/node_modules/@agents-can-communicate/adapter-sdk/src/index.mjs +11 -2
- package/node_modules/@agents-can-communicate/adapter-sdk/src/native-attempt.mjs +6 -2
- package/node_modules/@agents-can-communicate/adapter-sdk/src/native-delivery.mjs +82 -17
- package/node_modules/@agents-can-communicate/adapter-sdk/src/native-vocabulary.mjs +9 -2
- package/node_modules/@agents-can-communicate/adapter-sdk/src/private-files.mjs +35 -0
- package/node_modules/@agents-can-communicate/adapter-sdk/src/process-table.mjs +232 -0
- package/node_modules/@agents-can-communicate/adapter-sdk/src/session-binding.mjs +8 -1
- package/node_modules/@agents-can-communicate/adapter-sdk/src/windows-command.mjs +69 -0
- package/node_modules/@agents-can-communicate/adapter-sdk/src/windows-process-chain.wsf +45 -0
- package/node_modules/@agents-can-communicate/cli/package.json +2 -1
- package/node_modules/@agents-can-communicate/cli/src/config-command.mjs +2 -1
- package/node_modules/@agents-can-communicate/cli/src/doctor-command.mjs +60 -4
- package/node_modules/@agents-can-communicate/cli/src/hook-support.mjs +9 -0
- package/node_modules/@agents-can-communicate/cli/src/hook-workspace.mjs +12 -3
- package/node_modules/@agents-can-communicate/cli/src/main.mjs +2 -1
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/activation.mjs +3 -2
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/download.mjs +12 -3
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/entry.mjs +7 -5
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/generation.mjs +7 -7
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/launchers.mjs +8 -5
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/maintenance.mjs +1 -1
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/mutex.mjs +7 -6
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/portable-fs.mjs +165 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/schedule.mjs +1 -1
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/state.mjs +18 -8
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/worker.mjs +18 -3
- package/node_modules/@agents-can-communicate/cli/src/native-session-diagnostics.mjs +15 -4
- package/node_modules/@agents-can-communicate/cli/src/platform-paths.mjs +15 -10
- package/node_modules/@agents-can-communicate/cli/src/runtime-paths.mjs +3 -2
- package/node_modules/@agents-can-communicate/cli/src/update-command.mjs +11 -1
- package/node_modules/@agents-can-communicate/cli/src/workspace-discovery.mjs +4 -2
- package/node_modules/@agents-can-communicate/core/package.json +1 -1
- package/node_modules/@agents-can-communicate/core/src/delivery-bindings.mjs +7 -0
- package/node_modules/@agents-can-communicate/core/src/materialisation.mjs +39 -1
- package/node_modules/@agents-can-communicate/core/src/session-opening.mjs +11 -0
- package/node_modules/@agents-can-communicate/core/src/sessions.mjs +8 -2
- package/node_modules/@agents-can-communicate/delivery-router/package.json +1 -1
- package/node_modules/@agents-can-communicate/delivery-router/src/native-reason.mjs +6 -2
- package/node_modules/@agents-can-communicate/delivery-router/src/router.mjs +9 -5
- package/node_modules/@agents-can-communicate/hook-runner/package.json +1 -1
- package/node_modules/@agents-can-communicate/hook-runner/src/client-pid.mjs +65 -6
- package/node_modules/@agents-can-communicate/hook-runner/src/client-version.mjs +80 -0
- package/node_modules/@agents-can-communicate/hook-runner/src/native-attempt.mjs +7 -2
- package/node_modules/@agents-can-communicate/hook-runner/src/native-binding.mjs +6 -3
- package/node_modules/@agents-can-communicate/hook-runner/src/owner-context.mjs +34 -6
- package/node_modules/@agents-can-communicate/hook-runner/src/process-table.mjs +3 -50
- package/node_modules/@agents-can-communicate/hook-runner/src/runner.mjs +167 -34
- package/node_modules/@agents-can-communicate/installer/package.json +3 -2
- package/node_modules/@agents-can-communicate/installer/src/delivery-diagnostics.mjs +11 -2
- package/node_modules/@agents-can-communicate/installer/src/detect.mjs +13 -3
- package/node_modules/@agents-can-communicate/installer/src/hook-support.mjs +5 -0
- package/node_modules/@agents-can-communicate/installer/src/native-activation.mjs +6 -14
- package/node_modules/@agents-can-communicate/installer/src/plan.mjs +14 -0
- package/node_modules/@agents-can-communicate/mcp-server/package.json +1 -1
- package/node_modules/@agents-can-communicate/protocol/package.json +1 -1
- package/node_modules/@agents-can-communicate/protocol/src/config.mjs +6 -2
- package/node_modules/@agents-can-communicate/protocol/src/resources.mjs +6 -2
- package/node_modules/@agents-can-communicate/storage-filesystem/package.json +1 -1
- package/node_modules/@agents-can-communicate/storage-filesystem/src/active-journal.mjs +5 -2
- package/node_modules/@agents-can-communicate/storage-filesystem/src/atomic-json.mjs +41 -23
- package/node_modules/@agents-can-communicate/storage-filesystem/src/doomed-directory.mjs +4 -12
- package/node_modules/@agents-can-communicate/storage-filesystem/src/identity.mjs +7 -3
- package/node_modules/@agents-can-communicate/storage-filesystem/src/index.mjs +1 -0
- package/node_modules/@agents-can-communicate/storage-filesystem/src/journal.mjs +24 -7
- package/node_modules/@agents-can-communicate/storage-filesystem/src/portable-fs.mjs +165 -0
- package/node_modules/@agents-can-communicate/storage-filesystem/src/publication-path.mjs +8 -0
- package/node_modules/@agents-can-communicate/storage-filesystem/src/reclaim.mjs +26 -17
- package/node_modules/@agents-can-communicate/storage-filesystem/src/recovery.mjs +7 -5
- package/node_modules/@agents-can-communicate/storage-filesystem/src/retention.mjs +7 -16
- package/node_modules/@agents-can-communicate/storage-filesystem/src/safe-directory.mjs +138 -24
- package/node_modules/@agents-can-communicate/storage-filesystem/src/safe-file.mjs +3 -2
- package/node_modules/@agents-can-communicate/storage-filesystem/src/stage-sweep.mjs +9 -6
- package/node_modules/@agents-can-communicate/storage-filesystem/src/store.mjs +30 -8
- package/node_modules/@agents-can-communicate/storage-filesystem/src/writer-mutex.mjs +102 -32
- package/package.json +1 -5
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -117,8 +117,7 @@ handoff. ACC does not restart an exited client.
|
|
|
117
117
|
supported platform, current probe and exact session binding. Under `actionable`,
|
|
118
118
|
a `note` stays queued with `delivery_disabled`.
|
|
119
119
|
|
|
120
|
-
For Codex, use your ordinary launch command with 0.152.1 or newer
|
|
121
|
-
macOS. Its LocalDaemon infrastructure and trusted hooks must establish
|
|
120
|
+
For Codex, use your ordinary launch command with 0.152.1 or newer. Its LocalDaemon infrastructure and trusted hooks must establish
|
|
122
121
|
the receiver's exact thread and workspace. Embedded sessions, an absent socket,
|
|
123
122
|
ambiguous recipients or failed identity checks retain durable inbox access.
|
|
124
123
|
`acc doctor` reports readiness, consent and the current workspace's live channel separately.
|
|
@@ -139,10 +138,22 @@ client-owned hook and trust review.
|
|
|
139
138
|
After a reboot no Codex service runs. Codex 0.157.1 and newer start it when the next Codex
|
|
140
139
|
session opens (`daemon_auto_start`), and doctor then says so instead of advising `acc install`.
|
|
141
140
|
A Codex chat that started without the service runs on its own embedded service until it closes,
|
|
142
|
-
and no peer can reach it live. ACC reports it as `client_session_embedded`: the chat
|
|
143
|
-
a sender sees the cause beside `no live transport`, and doctor names it on
|
|
144
|
-
Open a new Codex chat while the service runs; start it with
|
|
145
|
-
Codex does not.
|
|
141
|
+
and no peer can reach it live. ACC reports it as `client_session_embedded`: the chat shows the
|
|
142
|
+
user a notice once, a sender sees the cause beside `no live transport`, and doctor names it on
|
|
143
|
+
the session line. Open a new Codex chat while the service runs; start it with
|
|
144
|
+
`codex app-server daemon start` if Codex does not.
|
|
145
|
+
|
|
146
|
+
The Codex app (inside ChatGPT.app) runs every chat this way: each window has its own app server
|
|
147
|
+
and never uses the shared one (openai/codex#41014, read on 26.928). Its chats join ACC through
|
|
148
|
+
the same hooks and get messages at their next turn; a chat started in a terminal is the one a
|
|
149
|
+
peer can reach live.
|
|
150
|
+
|
|
151
|
+
Some launch options make Codex run a chat embedded even while the service runs: `-c`/`--config`,
|
|
152
|
+
`--enable`, `--disable`, `--search`, `-p`/`--profile`, `--oss`, `--strict-config`,
|
|
153
|
+
`--dangerously-bypass-hook-trust` and `--no-daemon`, and also the `CODEX_EXEC_SERVER_URL`
|
|
154
|
+
environment variable. ACC names the option in the notice, the sender's line and doctor. For live
|
|
155
|
+
delivery, start Codex without it; put a setting you need in `config.toml` instead of `-c`,
|
|
156
|
+
`--enable`, `--disable`, `--search` or `--profile`.
|
|
146
157
|
|
|
147
158
|
If a reply stays queued with `transport_permission_denied`, the sender's permissions
|
|
148
159
|
blocked local transport. This is distinct from an unavailable recipient. The message was
|
|
@@ -171,8 +182,7 @@ or a connected MCP server does not by itself establish automatic delivery. `life
|
|
|
171
182
|
manual` can also mean the current version has no certified session-end hook; it does not
|
|
172
183
|
prove that no hooks ran.
|
|
173
184
|
|
|
174
|
-
For Claude Code, use version 2.1.282 or newer
|
|
175
|
-
your ordinary command. Each Claude Code session opens its own inbox socket. ACC reads the
|
|
185
|
+
For Claude Code, use version 2.1.282 or newer, and start it with your ordinary command. Each Claude Code session opens its own inbox socket. ACC reads the
|
|
176
186
|
socket path from `CLAUDE_CODE_MESSAGING_SOCKET` in the hook environment. ACC then checks that
|
|
177
187
|
path against Claude Code's session registry `<config>/sessions/<pid>.json`, where
|
|
178
188
|
`<config>` is `CLAUDE_CONFIG_DIR` or `~/.claude`. The pid and the socket must match for the
|
|
@@ -182,8 +192,8 @@ session again, so the next ordinary prompt retries a failed binding.
|
|
|
182
192
|
- Claude Code 2.1.224 and later open the inbox, but ACC's captured minimum is 2.1.282. An
|
|
183
193
|
older version reports `below_minimum_version` and keeps next-turn delivery.
|
|
184
194
|
- On native Windows, Claude Code serves its inbox on a named pipe that requires an auth
|
|
185
|
-
line. ACC
|
|
186
|
-
|
|
195
|
+
line. ACC sends the key Claude Code publishes for other sessions of the same user; see
|
|
196
|
+
[On Windows](#on-windows).
|
|
187
197
|
- A wake that reached the session can still wait for your approval. See
|
|
188
198
|
[the next section](#a-claude-code-session-holds-or-drops-acc-wakes).
|
|
189
199
|
|
|
@@ -333,8 +343,15 @@ Live delivery needs four things, and `acc doctor` shows each:
|
|
|
333
343
|
- the session attached to ACC at all (see the section above);
|
|
334
344
|
- the agent started the relay. While none is running, ACC's context asks up to three times
|
|
335
345
|
in that conversation. A declined prompt and an ignored ask look the same, so the line can
|
|
336
|
-
return after a decline; after the third ask it stays quiet.
|
|
337
|
-
`
|
|
346
|
+
return after a decline; after the third ask it stays quiet. ACC's install allows that
|
|
347
|
+
command, so the agent starts it without an approval prompt; `acc doctor` names the rule when
|
|
348
|
+
it is missing. Run `sh "~/.gemini/config/acc/acc-relay.sh" start` to start it directly.
|
|
349
|
+
|
|
350
|
+
In Antigravity 2.0, the desktop app, there is no relay: ACC delivers through the app's own
|
|
351
|
+
language server, and `acc doctor` names such a session `Antigravity session`. A conversation is
|
|
352
|
+
reachable from its first turn after the app starts. The app runs no session start for a
|
|
353
|
+
conversation it reopens, so after a restart nothing reaches it live until someone sends it a
|
|
354
|
+
prompt; the message waits in its inbox until then.
|
|
338
355
|
|
|
339
356
|
`acc doctor` reports how many relays are running and, per session, whether a live transport is
|
|
340
357
|
active. A relay ends with its client; nothing is left running after the TUI exits or after
|
|
@@ -358,6 +375,12 @@ first ACC command. `acc doctor` prints an `Antigravity CLI inbound:` line with w
|
|
|
358
375
|
- **The file cannot be read.** ACC leaves an invalid `settings.json` as it is. Repair it, then
|
|
359
376
|
run `acc install --adapter antigravity` again.
|
|
360
377
|
|
|
378
|
+
Antigravity 2.0, the desktop app, runs the agent's commands in a sandbox where ACC's wrapper
|
|
379
|
+
cannot run, and the model then asks to run it outside the sandbox. The app decides that from
|
|
380
|
+
its own grants in `~/.gemini/config/config.json`, never from Antigravity CLI's settings. ACC's
|
|
381
|
+
install adds its rule there once the app has run, and `acc doctor` prints its state on a line
|
|
382
|
+
that names the desktop app. Restart the app after an install if it was open.
|
|
383
|
+
|
|
361
384
|
## Grok shows no injected message
|
|
362
385
|
|
|
363
386
|
Grok discards UserPromptSubmit context. On the observed 1.0.24 client, run public
|
|
@@ -374,6 +397,41 @@ session becomes offline by presence rules rather than a clean end signal. The de
|
|
|
374
397
|
status hides offline sessions; `acc status --all` intentionally retains attribution and
|
|
375
398
|
checkout history.
|
|
376
399
|
|
|
400
|
+
## On Windows
|
|
401
|
+
|
|
402
|
+
- **A session attaches only on its first prompt.** ACC reads the process tree through
|
|
403
|
+
PowerShell, and the first start after boot can take several seconds. A hook that runs out of
|
|
404
|
+
time continues without ACC, and the next user prompt attaches the session.
|
|
405
|
+
- **A hook reports `node` is not recognized.** Grok and Antigravity CLI hooks start `node` from
|
|
406
|
+
`PATH`. Add Node.js to the `PATH` the client sees, then restart the client.
|
|
407
|
+
- **Claude Code hooks do nothing.** ACC wires Claude Code's hooks in exec form, which needs
|
|
408
|
+
Claude Code 2.1.139 or later. Update Claude Code and run `acc install` again.
|
|
409
|
+
- **`acc install` refuses Antigravity CLI because of a space.** Antigravity CLI cannot run a
|
|
410
|
+
quoted hook path, so ACC writes the 8.3 short name of a path with a space. A volume with 8.3
|
|
411
|
+
names turned off has none; turn them on (`fsutil 8dot3name set C: 0`, as an administrator)
|
|
412
|
+
and run `acc install` again.
|
|
413
|
+
- **A write through Claude Code's PowerShell tool was not guarded.** The guard reads POSIX shell
|
|
414
|
+
commands only. Claims are advisory by default, and a write through Claude Code's Write, Edit or
|
|
415
|
+
Bash tool is still checked.
|
|
416
|
+
- **Codex is not woken on Windows.** Codex refuses to start its app-server daemon from an
|
|
417
|
+
elevated terminal ("start the Windows daemon from a non-elevated terminal"). Start Codex from a
|
|
418
|
+
terminal that is not running as administrator, and keep `CODEX_HOME` short: the daemon's socket
|
|
419
|
+
path has to fit 108 bytes, or Codex runs the chat on its own embedded server, which no peer can
|
|
420
|
+
reach.
|
|
421
|
+
- **Hooks run out of time on a cloud machine.** A Windows flush waits for the whole disk to
|
|
422
|
+
write out its cache. On a GitHub `windows-latest` runner, whose system disk is remote, a 4 KB
|
|
423
|
+
flush took 10-33 ms at the median and up to 1.5 s, against 0.5 ms and at most 27 ms on its
|
|
424
|
+
local disk. A session start flushes 5 to 16 times, so a disk like that can run a hook out of
|
|
425
|
+
its five seconds; the session then attaches on a later prompt. Point `ACC_DATA_HOME` at a
|
|
426
|
+
directory on a local disk that only your account can read, for every client, and restart
|
|
427
|
+
them.
|
|
428
|
+
- **A Claude Code session is not woken on Windows.** The wake authenticates with the key Claude
|
|
429
|
+
Code publishes beside its session record (`<config>\sessions\<pid>.<hash>.key`). Run
|
|
430
|
+
`acc doctor`: a session without that key, or whose pipe the machine no longer lists, waits for
|
|
431
|
+
its next turn. ACC trusts the key only in a configuration directory inside your user profile,
|
|
432
|
+
whose access list keeps it to your account. A session whose `CLAUDE_CONFIG_DIR` is elsewhere
|
|
433
|
+
reports `native_endpoint_unavailable` and also waits for its next turn.
|
|
434
|
+
|
|
377
435
|
## A write was blocked
|
|
378
436
|
|
|
379
437
|
Exit code `5` names the overlapping claim and owner. Ask the owner or wait for release. If
|
|
@@ -401,6 +459,10 @@ confirming no needed coordination state remains.
|
|
|
401
459
|
ACC removes only bytes that still match its install record. Anything edited by the user is
|
|
402
460
|
reported and retained. Remove those leftovers manually if desired.
|
|
403
461
|
|
|
462
|
+
An uninstall also skips a client that the current data home did not install, and names it:
|
|
463
|
+
its wiring belongs to another ACC data home. Run `acc uninstall --adapter <client>` to remove
|
|
464
|
+
it from this one.
|
|
465
|
+
|
|
404
466
|
Runtime state is outside the repository by design. `ACC_DATA_HOME` can relocate it, but ACC
|
|
405
467
|
refuses a path inside any workspace root. Relocate the whole data directory; a symlink for
|
|
406
468
|
that directory is supported. Install rejects a symlink that moves only the internal
|
package/docs/UPGRADING.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Upgrading
|
|
1
|
+
# Upgrading
|
|
2
2
|
|
|
3
3
|
## From 0.8.x
|
|
4
4
|
|
|
@@ -20,8 +20,9 @@ a client's own settings:
|
|
|
20
20
|
Start a new Codex session after the update; a session already open keeps its old policy.
|
|
21
21
|
- **Antigravity CLI.** The install adds `command(<wrapper>)` to `permissions.allow` in
|
|
22
22
|
`~/.gemini/antigravity-cli/settings.json`, and the skill calls the wrapper without quotes, so
|
|
23
|
-
a woken session runs its ACC commands without an approval prompt.
|
|
24
|
-
the
|
|
23
|
+
a woken session runs its ACC commands without an approval prompt. It also adds the command
|
|
24
|
+
that starts the relay, so the agent starts live delivery without one. Restart `agy`: it reads
|
|
25
|
+
the file only at startup. `acc uninstall` removes every copy of each rule.
|
|
25
26
|
|
|
26
27
|
`acc doctor` and `acc status` describe an idle session by what a message sent to it meets
|
|
27
28
|
(`idle, wake on send`, `idle until next turn`, `idle, inbox only`), and each status row carries
|
|
@@ -57,6 +58,50 @@ From 0.8.3, the download does this itself.
|
|
|
57
58
|
|
|
58
59
|
This release adds no store event type or field.
|
|
59
60
|
|
|
61
|
+
0.8.5 changes what a Codex chat that runs without the daemon is told:
|
|
62
|
+
|
|
63
|
+
- **The launch option that caused it is named.** Codex also runs a chat embedded, even while
|
|
64
|
+
its daemon runs, when it starts with `-c`/`--config`, `--enable`, `--disable`, `--search`,
|
|
65
|
+
`-p`/`--profile`, `--oss`, `--strict-config`, `--dangerously-bypass-hook-trust` or
|
|
66
|
+
`--no-daemon`. The notice, a sender's line and doctor name the option and advise starting
|
|
67
|
+
Codex without it; put a setting you need in `config.toml` instead.
|
|
68
|
+
- **You see the notice yourself.** Codex shows it once in the chat as a hook message
|
|
69
|
+
(`↳ Hook · ACC: …`); the model receives its own line, as before.
|
|
70
|
+
- **The previous runtime generation goes an hour after the update.** `acc update` runs from
|
|
71
|
+
the generation it replaces, so it cannot remove that one itself. It records the reclaim as
|
|
72
|
+
unfinished in `reclaim.json`, and the first ACC command an hour or more later removes the old
|
|
73
|
+
generation, with automatic updates on or off.
|
|
74
|
+
|
|
75
|
+
This release adds no store event type or field. A sender's delivery JSON may carry
|
|
76
|
+
`nativeLaunchOption` beside `nativeReasonCode`.
|
|
77
|
+
|
|
78
|
+
0.9.0 adds Windows and the Antigravity desktop app, and changes what `acc uninstall` removes:
|
|
79
|
+
|
|
80
|
+
- **Windows.** ACC installs and runs natively on Windows 10 and 11, with no WSL, and keeps its
|
|
81
|
+
state in `%LOCALAPPDATA%\acc`. Live delivery reaches Claude Code through its inbox pipe, Codex
|
|
82
|
+
through `codex app-server proxy`, and Antigravity CLI through ACC's relay. Codex starts its
|
|
83
|
+
daemon only from a terminal that is not elevated. On Windows the Antigravity install adds no
|
|
84
|
+
allow rule, so Antigravity CLI asks before each ACC command. See
|
|
85
|
+
[Windows](GETTING_STARTED.md#windows).
|
|
86
|
+
- **The Antigravity desktop app.** Antigravity 2.19.1 or later gets live delivery through the
|
|
87
|
+
app's own language server, with no relay and no command from the agent. The install adds
|
|
88
|
+
ACC's grant to `~/.gemini/config/config.json` when the app has created that file. If you
|
|
89
|
+
open the app for the first time after the update, `acc doctor` asks you to run
|
|
90
|
+
`acc install --adapter antigravity` once.
|
|
91
|
+
- **A session's version is the running client's.** `acc doctor` and `acc status` show the
|
|
92
|
+
version of the client that runs the session, which can differ from the `claude` or `codex`
|
|
93
|
+
on `PATH`.
|
|
94
|
+
- **A chat in the Codex app** is reported as `client_session_embedded`. The app runs each
|
|
95
|
+
window on its own app server, so its chats receive messages at their next turn.
|
|
96
|
+
- **`acc uninstall` without `--adapter` removes only what this data home installed.** A client
|
|
97
|
+
that another data home wired is skipped by name. `acc uninstall --adapter <client>` still
|
|
98
|
+
removes it.
|
|
99
|
+
|
|
100
|
+
This release adds no store event type or field, and `STORE_VERSION` stays 6. A journalled
|
|
101
|
+
transaction no longer writes a completion marker: 0.9.0 retires every journal entry that the
|
|
102
|
+
pointer does not name, and an older ACC's markers leave with their entries. 0.8.x keeps
|
|
103
|
+
working on a store that 0.9.0 wrote.
|
|
104
|
+
|
|
60
105
|
## From 0.7.x
|
|
61
106
|
|
|
62
107
|
Claude Code live delivery wakes each session through the inbox socket that Claude Code opens
|
|
@@ -88,10 +133,10 @@ recorded policy. ACC ignores `ACC_NATIVE_DELIVERY_POLICY`, `ACC_BYPASS` and
|
|
|
88
133
|
A Claude Code session that started through the old shim keeps its Channel until it exits.
|
|
89
134
|
Its next turn binds the inbox. Start new sessions with your ordinary `claude` command.
|
|
90
135
|
|
|
91
|
-
The Claude Code live-delivery minimum is now 2.1.282
|
|
136
|
+
The Claude Code live-delivery minimum is now 2.1.282. With an older
|
|
92
137
|
Claude Code, live delivery stays off and the recorded policy is kept. Update Claude Code and
|
|
93
138
|
start a new session: the recorded policy applies to it, with nothing to install again.
|
|
94
|
-
`acc doctor` reports the state.
|
|
139
|
+
`acc doctor` reports the state.
|
|
95
140
|
|
|
96
141
|
This release adds no new store event type or field, so a store it writes stays readable by
|
|
97
142
|
0.7.x. The Channel captures remain as history in
|
|
@@ -86,6 +86,84 @@
|
|
|
86
86
|
"The first TUI session in a folder trusted at that launch hands every hook an empty workspacePaths even with --add-dir, so that session gets no ACC context and no relay prompt; the next launch in the now-trusted folder does."
|
|
87
87
|
],
|
|
88
88
|
"result": "pass"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"client": "antigravity-desktop",
|
|
92
|
+
"version": "2.19.1",
|
|
93
|
+
"platform": "darwin-arm64",
|
|
94
|
+
"observedAt": "2026-10-04",
|
|
95
|
+
"capability": "lifecycle.sessionStart",
|
|
96
|
+
"fixture": "fixtures/desktop-2.19.1.json",
|
|
97
|
+
"provenance": "fixtures/certification-provenance.json",
|
|
98
|
+
"provenanceId": "desktop-session-start-2-19-1",
|
|
99
|
+
"idleBehavior": "fires when a conversation starts",
|
|
100
|
+
"busyBehavior": "fires before the first model invocation",
|
|
101
|
+
"authorityLevel": "advisory",
|
|
102
|
+
"limitations": [
|
|
103
|
+
"captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
|
|
104
|
+
"the hooks ran as direct children of the app's language server; no agy process took part"
|
|
105
|
+
],
|
|
106
|
+
"result": "pass"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"client": "antigravity-desktop",
|
|
110
|
+
"version": "2.19.1",
|
|
111
|
+
"platform": "darwin-arm64",
|
|
112
|
+
"observedAt": "2026-10-04",
|
|
113
|
+
"capability": "context.beforeTurnInjection",
|
|
114
|
+
"fixture": "fixtures/desktop-2.19.1.json",
|
|
115
|
+
"provenance": "fixtures/certification-provenance.json",
|
|
116
|
+
"provenanceId": "desktop-pre-invocation-2-19-1",
|
|
117
|
+
"idleBehavior": "waits for the next invocation",
|
|
118
|
+
"busyBehavior": "not observed in the desktop app",
|
|
119
|
+
"authorityLevel": "context",
|
|
120
|
+
"limitations": [
|
|
121
|
+
"captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
|
|
122
|
+
"the hooks ran as direct children of the app's language server; no agy process took part",
|
|
123
|
+
"requires the injectSteps ephemeralMessage envelope, as Antigravity CLI"
|
|
124
|
+
],
|
|
125
|
+
"result": "pass"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"client": "antigravity-desktop",
|
|
129
|
+
"version": "2.19.1",
|
|
130
|
+
"platform": "darwin-arm64",
|
|
131
|
+
"observedAt": "2026-10-04",
|
|
132
|
+
"capability": "delivery.nextTurn",
|
|
133
|
+
"fixture": "fixtures/desktop-2.19.1.json",
|
|
134
|
+
"provenance": "fixtures/certification-provenance.json",
|
|
135
|
+
"provenanceId": "desktop-pre-invocation-2-19-1",
|
|
136
|
+
"idleBehavior": "offers complete peer messages at the next invocation",
|
|
137
|
+
"busyBehavior": "not observed in the desktop app",
|
|
138
|
+
"authorityLevel": "context",
|
|
139
|
+
"limitations": [
|
|
140
|
+
"captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
|
|
141
|
+
"the hooks ran as direct children of the app's language server; no agy process took part",
|
|
142
|
+
"the agent's acc reply runs only outside the app's sandbox, which the app approves by its grants in ~/.gemini/config/config.json"
|
|
143
|
+
],
|
|
144
|
+
"result": "pass"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"client": "antigravity-desktop",
|
|
148
|
+
"version": "2.19.1",
|
|
149
|
+
"platform": "darwin-arm64",
|
|
150
|
+
"observedAt": "2026-10-05T04:34:55.036Z",
|
|
151
|
+
"capability": "delivery.livePush",
|
|
152
|
+
"fixture": "fixtures/delivery/antigravity-desktop-2.19.1-product.json",
|
|
153
|
+
"idleBehavior": "offered",
|
|
154
|
+
"provenance": "fixtures/certification-provenance.json",
|
|
155
|
+
"provenanceId": "native-delivery-2-19-1-desktop-product",
|
|
156
|
+
"busyBehavior": "queued_after_turn",
|
|
157
|
+
"authorityLevel": "experimental",
|
|
158
|
+
"limitations": [
|
|
159
|
+
"Observed on darwin-arm64 with Antigravity 2.19.1, the desktop app (Antigravity.app), model Gemini 3.8 Flash, in one conversation of a probe project opened in the app, through a private candidate built from this branch and installed into an isolated ACC data home that the app was launched with.",
|
|
160
|
+
"No relay and no command for the agent to run: ACC found the app's language server as the hook's parent, read its endpoint from the server's command line at each bind and offer, and pushed through the server's own agentapi; the endpoint record carries the server's pid, start time and port, never the token.",
|
|
161
|
+
"An idle conversation woke with no user input. A message accepted while the model streamed a long answer was presented after that answer completed, uninterrupted. The desktop UI shows each push as a collapsed ACC peer message entry.",
|
|
162
|
+
"The agent's acc commands fail inside the app's sandbox and run once the model retries outside it; with the wrapper's grant already in ~/.gemini/config/config.json, that retry ran without an approval prompt.",
|
|
163
|
+
"With the app quit, a message stayed queued as recipient_offline. After the app restarted - a new language server, token and port - the conversation's first user turn bound it again, and the next push woke it.",
|
|
164
|
+
"The app runs no SessionStart for a conversation it reopens, so after a restart live delivery returns at the conversation's next turn, not before."
|
|
165
|
+
],
|
|
166
|
+
"result": "pass"
|
|
89
167
|
}
|
|
90
168
|
]
|
|
91
169
|
}
|
|
@@ -212,6 +212,117 @@
|
|
|
212
212
|
"sha256": "024c5c53915c0f09fac9b2ba118f1831eb97f26c6d4b28aacc4e4a2c5d7500ee"
|
|
213
213
|
}
|
|
214
214
|
]
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"client": "antigravity-desktop",
|
|
218
|
+
"version": "2.19.1",
|
|
219
|
+
"platform": "darwin-arm64",
|
|
220
|
+
"observedAt": "2026-10-04",
|
|
221
|
+
"id": "desktop-session-start-2-19-1",
|
|
222
|
+
"event": "SessionStart",
|
|
223
|
+
"fixture": "fixtures/desktop-2.19.1.json",
|
|
224
|
+
"claims": [
|
|
225
|
+
{
|
|
226
|
+
"capability": "lifecycle.sessionStart",
|
|
227
|
+
"result": "pass",
|
|
228
|
+
"outcome": {
|
|
229
|
+
"kind": "event-observed",
|
|
230
|
+
"idle": "fires when a conversation starts",
|
|
231
|
+
"busy": "fires before the first model invocation",
|
|
232
|
+
"authority": "advisory",
|
|
233
|
+
"limitations": [
|
|
234
|
+
"captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
|
|
235
|
+
"the hooks ran as direct children of the app's language server; no agy process took part"
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
"sha256": "973a6842060465228480df062170fa450db679fae7476979fc510f22e0d24bc1",
|
|
241
|
+
"tool": null
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"client": "antigravity-desktop",
|
|
245
|
+
"version": "2.19.1",
|
|
246
|
+
"platform": "darwin-arm64",
|
|
247
|
+
"observedAt": "2026-10-04",
|
|
248
|
+
"id": "desktop-pre-invocation-2-19-1",
|
|
249
|
+
"event": "PreInvocation",
|
|
250
|
+
"fixture": "fixtures/desktop-2.19.1.json",
|
|
251
|
+
"claims": [
|
|
252
|
+
{
|
|
253
|
+
"capability": "context.beforeTurnInjection",
|
|
254
|
+
"result": "pass",
|
|
255
|
+
"outcome": {
|
|
256
|
+
"kind": "model-visible",
|
|
257
|
+
"idle": "waits for the next invocation",
|
|
258
|
+
"busy": "not observed in the desktop app",
|
|
259
|
+
"authority": "context",
|
|
260
|
+
"limitations": [
|
|
261
|
+
"captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
|
|
262
|
+
"the hooks ran as direct children of the app's language server; no agy process took part",
|
|
263
|
+
"requires the injectSteps ephemeralMessage envelope, as Antigravity CLI"
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"capability": "delivery.nextTurn",
|
|
269
|
+
"result": "pass",
|
|
270
|
+
"outcome": {
|
|
271
|
+
"kind": "model-visible",
|
|
272
|
+
"idle": "offers complete peer messages at the next invocation",
|
|
273
|
+
"busy": "not observed in the desktop app",
|
|
274
|
+
"authority": "context",
|
|
275
|
+
"limitations": [
|
|
276
|
+
"captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
|
|
277
|
+
"the hooks ran as direct children of the app's language server; no agy process took part",
|
|
278
|
+
"the agent's acc reply runs only outside the app's sandbox, which the app approves by its grants in ~/.gemini/config/config.json"
|
|
279
|
+
]
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
],
|
|
283
|
+
"sha256": "973a6842060465228480df062170fa450db679fae7476979fc510f22e0d24bc1",
|
|
284
|
+
"tool": null
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"id": "native-delivery-2-19-1-desktop-product",
|
|
288
|
+
"client": "antigravity-desktop",
|
|
289
|
+
"version": "2.19.1",
|
|
290
|
+
"platform": "darwin-arm64",
|
|
291
|
+
"observedAt": "2026-10-05T04:34:55.036Z",
|
|
292
|
+
"fixture": "fixtures/delivery/antigravity-desktop-2.19.1-product.json",
|
|
293
|
+
"sha256": "1ef1b19b9069220726a72c548353f40a38e7c2585c69c5469b30cba9286d47e3",
|
|
294
|
+
"event": null,
|
|
295
|
+
"tool": null,
|
|
296
|
+
"claims": [
|
|
297
|
+
{
|
|
298
|
+
"capability": "delivery.livePush",
|
|
299
|
+
"result": "pass",
|
|
300
|
+
"outcome": {
|
|
301
|
+
"kind": "native-delivery-observed",
|
|
302
|
+
"idle": "offered",
|
|
303
|
+
"busy": "queued_after_turn",
|
|
304
|
+
"authority": "experimental",
|
|
305
|
+
"limitations": [
|
|
306
|
+
"Observed on darwin-arm64 with Antigravity 2.19.1, the desktop app (Antigravity.app), model Gemini 3.8 Flash, in one conversation of a probe project opened in the app, through a private candidate built from this branch and installed into an isolated ACC data home that the app was launched with.",
|
|
307
|
+
"No relay and no command for the agent to run: ACC found the app's language server as the hook's parent, read its endpoint from the server's command line at each bind and offer, and pushed through the server's own agentapi; the endpoint record carries the server's pid, start time and port, never the token.",
|
|
308
|
+
"An idle conversation woke with no user input. A message accepted while the model streamed a long answer was presented after that answer completed, uninterrupted. The desktop UI shows each push as a collapsed ACC peer message entry.",
|
|
309
|
+
"The agent's acc commands fail inside the app's sandbox and run once the model retries outside it; with the wrapper's grant already in ~/.gemini/config/config.json, that retry ran without an approval prompt.",
|
|
310
|
+
"With the app quit, a message stayed queued as recipient_offline. After the app restarted - a new language server, token and port - the conversation's first user turn bound it again, and the next push woke it.",
|
|
311
|
+
"The app runs no SessionStart for a conversation it reopens, so after a restart live delivery returns at the conversation's next turn, not before."
|
|
312
|
+
]
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
],
|
|
316
|
+
"productEvidence": {
|
|
317
|
+
"fixture": "fixtures/delivery/antigravity-desktop-2.19.1-product-evidence.json",
|
|
318
|
+
"sha256": "b3b0fdfd19970acd636a2ff433cd13527c9c9257efceef5c8675bca60f0888b1"
|
|
319
|
+
},
|
|
320
|
+
"historicalFixtures": [
|
|
321
|
+
{
|
|
322
|
+
"fixture": "fixtures/desktop-2.19.1.json",
|
|
323
|
+
"sha256": "973a6842060465228480df062170fa450db679fae7476979fc510f22e0d24bc1"
|
|
324
|
+
}
|
|
325
|
+
]
|
|
215
326
|
}
|
|
216
327
|
]
|
|
217
328
|
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"source": "real-client-capture",
|
|
4
|
+
"client": "antigravity-desktop",
|
|
5
|
+
"phase": "product",
|
|
6
|
+
"clientVersion": "2.19.1",
|
|
7
|
+
"platform": "darwin-arm64",
|
|
8
|
+
"packageSha256": "c03096251a9efd251ecd42c6bf489e8783a9515c83d85242645a3a31fcdc0c42",
|
|
9
|
+
"startedAt": "2026-10-05T04:28:11.000Z",
|
|
10
|
+
"finishedAt": "2026-10-05T04:34:55.036Z",
|
|
11
|
+
"scenarioCount": 6,
|
|
12
|
+
"passedCount": 6,
|
|
13
|
+
"failedCount": 0,
|
|
14
|
+
"cleanup": {
|
|
15
|
+
"attempted": true,
|
|
16
|
+
"outcome": "passed",
|
|
17
|
+
"ownedProcesses": "stopped",
|
|
18
|
+
"temporaryState": "removed"
|
|
19
|
+
},
|
|
20
|
+
"scenarios": [
|
|
21
|
+
{
|
|
22
|
+
"caseId": "D01",
|
|
23
|
+
"outcome": "passed",
|
|
24
|
+
"startedAt": "2026-10-05T04:31:33.000Z",
|
|
25
|
+
"finishedAt": "2026-10-05T04:34:04.170Z",
|
|
26
|
+
"messageId": "message_xZi2izsqCNWh-2NcIIoMXg",
|
|
27
|
+
"observations": [
|
|
28
|
+
{
|
|
29
|
+
"kind": "delivery",
|
|
30
|
+
"at": "2026-10-05T04:34:04.170Z",
|
|
31
|
+
"outcome": "offered"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"kind": "desktop-push",
|
|
35
|
+
"at": "2026-10-05T04:31:35Z",
|
|
36
|
+
"outcome": "pushed"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"kind": "model-turn",
|
|
40
|
+
"at": "2026-10-05T04:31:35Z",
|
|
41
|
+
"outcome": "started-without-user-input"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"caseId": "D02",
|
|
47
|
+
"outcome": "passed",
|
|
48
|
+
"startedAt": "2026-10-05T04:28:11.000Z",
|
|
49
|
+
"finishedAt": "2026-10-05T04:28:59.690Z",
|
|
50
|
+
"messageId": "message__M-kSLcUzAkViQCcVZxWNA",
|
|
51
|
+
"observations": [
|
|
52
|
+
{
|
|
53
|
+
"kind": "delivery",
|
|
54
|
+
"at": "2026-10-05T04:28:59.690Z",
|
|
55
|
+
"outcome": "offered"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"kind": "desktop-push",
|
|
59
|
+
"at": "2026-10-05T04:28:31Z",
|
|
60
|
+
"outcome": "pushed"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"kind": "presentation",
|
|
64
|
+
"outcome": "after-running-turn",
|
|
65
|
+
"at": "2026-10-05T04:28:31.000Z"
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"caseId": "D03",
|
|
71
|
+
"outcome": "passed",
|
|
72
|
+
"startedAt": "2026-10-05T04:31:33.000Z",
|
|
73
|
+
"finishedAt": "2026-10-05T04:34:04.261Z",
|
|
74
|
+
"messageId": "message_xZi2izsqCNWh-2NcIIoMXg",
|
|
75
|
+
"observations": [
|
|
76
|
+
{
|
|
77
|
+
"kind": "answer",
|
|
78
|
+
"outcome": "recorded",
|
|
79
|
+
"at": "2026-10-05T04:31:51.000Z"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"kind": "receipt",
|
|
83
|
+
"outcome": "acknowledged",
|
|
84
|
+
"at": "2026-10-05T04:31:51.000Z"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"kind": "approval",
|
|
88
|
+
"outcome": "not-asked",
|
|
89
|
+
"at": "2026-10-05T04:31:45.000Z"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"caseId": "D04",
|
|
95
|
+
"outcome": "passed",
|
|
96
|
+
"startedAt": "2026-10-05T04:34:04.000Z",
|
|
97
|
+
"finishedAt": "2026-10-05T04:34:41.447Z",
|
|
98
|
+
"messageId": "message_lhvipieTjJa-Kx3o4CgL1Q",
|
|
99
|
+
"observations": [
|
|
100
|
+
{
|
|
101
|
+
"kind": "desktop-push",
|
|
102
|
+
"at": "2026-10-05T04:34:06Z",
|
|
103
|
+
"outcome": "pushed-once"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"kind": "logical-message",
|
|
107
|
+
"outcome": "same-message-id",
|
|
108
|
+
"at": "2026-10-05T04:34:04.000Z"
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"caseId": "D05",
|
|
114
|
+
"outcome": "passed",
|
|
115
|
+
"startedAt": "2026-10-05T04:34:52.000Z",
|
|
116
|
+
"finishedAt": "2026-10-05T04:34:55.036Z",
|
|
117
|
+
"messageId": "message_mGC0UQYG2G23bsjsXuBI9w",
|
|
118
|
+
"observations": [
|
|
119
|
+
{
|
|
120
|
+
"kind": "delivery",
|
|
121
|
+
"at": "2026-10-05T04:34:55.036Z",
|
|
122
|
+
"outcome": "queued"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"kind": "client",
|
|
126
|
+
"outcome": "exited",
|
|
127
|
+
"at": "2026-10-05T04:34:54.000Z"
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"caseId": "D06",
|
|
133
|
+
"outcome": "passed",
|
|
134
|
+
"startedAt": "2026-10-05T04:29:19.000Z",
|
|
135
|
+
"finishedAt": "2026-10-05T04:31:16.352Z",
|
|
136
|
+
"messageId": "message_BY540lIYRss5JXqCTgB_0Q",
|
|
137
|
+
"observations": [
|
|
138
|
+
{
|
|
139
|
+
"kind": "delivery",
|
|
140
|
+
"at": "2026-10-05T04:31:16.352Z",
|
|
141
|
+
"outcome": "offered"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"kind": "desktop-push",
|
|
145
|
+
"at": "2026-10-05T04:30:03Z",
|
|
146
|
+
"outcome": "pushed"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"kind": "client",
|
|
150
|
+
"outcome": "restarted",
|
|
151
|
+
"at": "2026-10-05T04:29:19.000Z"
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"client": "antigravity-desktop",
|
|
3
|
+
"version": "2.19.1",
|
|
4
|
+
"platform": "darwin-arm64",
|
|
5
|
+
"observedAt": "2026-10-05T04:34:55.036Z",
|
|
6
|
+
"capability": "native_delivery",
|
|
7
|
+
"result": "pass",
|
|
8
|
+
"fixture": "antigravity-desktop-2.19.1-product",
|
|
9
|
+
"launchMode": "ordinary-command-with-installed-hooks",
|
|
10
|
+
"protocolContract": "antigravity-desktop-agentapi-v1",
|
|
11
|
+
"idle": "offered",
|
|
12
|
+
"busy": "queued_after_turn",
|
|
13
|
+
"reply": "routed",
|
|
14
|
+
"duplicate": "same_message_id",
|
|
15
|
+
"fallback": "queued",
|
|
16
|
+
"limitations": [
|
|
17
|
+
"Observed on darwin-arm64 with Antigravity 2.19.1, the desktop app (Antigravity.app), model Gemini 3.8 Flash, in one conversation of a probe project opened in the app, through a private candidate built from this branch and installed into an isolated ACC data home that the app was launched with.",
|
|
18
|
+
"No relay and no command for the agent to run: ACC found the app's language server as the hook's parent, read its endpoint from the server's command line at each bind and offer, and pushed through the server's own agentapi; the endpoint record carries the server's pid, start time and port, never the token.",
|
|
19
|
+
"An idle conversation woke with no user input. A message accepted while the model streamed a long answer was presented after that answer completed, uninterrupted. The desktop UI shows each push as a collapsed ACC peer message entry.",
|
|
20
|
+
"The agent's acc commands fail inside the app's sandbox and run once the model retries outside it; with the wrapper's grant already in ~/.gemini/config/config.json, that retry ran without an approval prompt.",
|
|
21
|
+
"With the app quit, a message stayed queued as recipient_offline. After the app restarted - a new language server, token and port - the conversation's first user turn bound it again, and the next push woke it.",
|
|
22
|
+
"The app runs no SessionStart for a conversation it reopens, so after a restart live delivery returns at the conversation's next turn, not before."
|
|
23
|
+
],
|
|
24
|
+
"packageSha256": "c03096251a9efd251ecd42c6bf489e8783a9515c83d85242645a3a31fcdc0c42"
|
|
25
|
+
}
|