agents-can-communicate 0.8.5 → 0.9.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/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 +29 -0
- package/docs/CAPABILITIES.md +7 -6
- package/docs/CLI.md +5 -0
- package/docs/CONFIGURATION.md +41 -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 +32 -5
- package/docs/TROUBLESHOOTING.md +76 -8
- package/docs/UPGRADING.md +47 -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/plugin/skills/acc/SKILL.md +3 -0
- 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/plugin/skills/acc/SKILL.md +3 -0
- 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/plugin/skills/acc/SKILL.md +3 -0
- package/node_modules/@agents-can-communicate/adapter-codex/src/allow-rule.mjs +129 -0
- 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 +42 -11
- package/node_modules/@agents-can-communicate/adapter-codex/src/install.mjs +36 -13
- 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 +36 -18
- 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/extension/skills/acc/SKILL.md +3 -0
- 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/plugin/skills/acc/SKILL.md +3 -0
- 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/plugin/skills/acc/SKILL.md +3 -0
- 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 +9 -1
- package/node_modules/@agents-can-communicate/adapter-sdk/src/native-delivery.mjs +65 -10
- package/node_modules/@agents-can-communicate/adapter-sdk/src/own-version.mjs +27 -1
- 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/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/native-session-diagnostics.mjs +11 -3
- 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/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 +1 -1
- 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 +154 -28
- package/node_modules/@agents-can-communicate/installer/package.json +3 -2
- package/node_modules/@agents-can-communicate/installer/src/delivery-diagnostics.mjs +2 -1
- 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/ownership.mjs +6 -2
- 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.
|
|
@@ -144,6 +143,11 @@ user a notice once, a sender sees the cause beside `no live transport`, and doct
|
|
|
144
143
|
the session line. Open a new Codex chat while the service runs; start it with
|
|
145
144
|
`codex app-server daemon start` if Codex does not.
|
|
146
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
|
+
|
|
147
151
|
Some launch options make Codex run a chat embedded even while the service runs: `-c`/`--config`,
|
|
148
152
|
`--enable`, `--disable`, `--search`, `-p`/`--profile`, `--oss`, `--strict-config`,
|
|
149
153
|
`--dangerously-bypass-hook-trust` and `--no-daemon`, and also the `CODEX_EXEC_SERVER_URL`
|
|
@@ -178,8 +182,7 @@ or a connected MCP server does not by itself establish automatic delivery. `life
|
|
|
178
182
|
manual` can also mean the current version has no certified session-end hook; it does not
|
|
179
183
|
prove that no hooks ran.
|
|
180
184
|
|
|
181
|
-
For Claude Code, use version 2.1.282 or newer
|
|
182
|
-
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
|
|
183
186
|
socket path from `CLAUDE_CODE_MESSAGING_SOCKET` in the hook environment. ACC then checks that
|
|
184
187
|
path against Claude Code's session registry `<config>/sessions/<pid>.json`, where
|
|
185
188
|
`<config>` is `CLAUDE_CONFIG_DIR` or `~/.claude`. The pid and the socket must match for the
|
|
@@ -189,8 +192,8 @@ session again, so the next ordinary prompt retries a failed binding.
|
|
|
189
192
|
- Claude Code 2.1.224 and later open the inbox, but ACC's captured minimum is 2.1.282. An
|
|
190
193
|
older version reports `below_minimum_version` and keeps next-turn delivery.
|
|
191
194
|
- On native Windows, Claude Code serves its inbox on a named pipe that requires an auth
|
|
192
|
-
line. ACC
|
|
193
|
-
|
|
195
|
+
line. ACC sends the key Claude Code publishes for other sessions of the same user; see
|
|
196
|
+
[On Windows](#on-windows).
|
|
194
197
|
- A wake that reached the session can still wait for your approval. See
|
|
195
198
|
[the next section](#a-claude-code-session-holds-or-drops-acc-wakes).
|
|
196
199
|
|
|
@@ -249,6 +252,19 @@ next-turn hook shows the body. The message arrives with the session's next turn,
|
|
|
249
252
|
`acc inbox` shows it at any time. The sender's `acc message` output still reports
|
|
250
253
|
`woke <participant> via claude-inbox`, because the wake reached the inbox.
|
|
251
254
|
|
|
255
|
+
## A Codex session will not tell peers project details
|
|
256
|
+
|
|
257
|
+
With `approvals_reviewer = "auto_review"`, Codex's reviewer judges every command a session
|
|
258
|
+
runs outside its sandbox. It refused an ACC reply that named a branch, a commit and changed
|
|
259
|
+
paths as disclosure to an external party. After that, the session answered peers that it
|
|
260
|
+
could not share project details.
|
|
261
|
+
|
|
262
|
+
ACC's rules file lets the participant commands skip that review on macOS and Linux; see
|
|
263
|
+
[Codex command approval](CONFIGURATION.md#codex-command-approval). Run `acc doctor`: when the
|
|
264
|
+
rule is missing, it asks for `acc install --adapter codex`. If a session started before the
|
|
265
|
+
install still asks, start a new one. On Windows there is no rule; approve the command, or turn
|
|
266
|
+
off auto-review for the session.
|
|
267
|
+
|
|
252
268
|
## Codex plugin is listed but inactive
|
|
253
269
|
|
|
254
270
|
Open `/plugins` in Codex and check ACC is enabled. Open `/hooks`, review each ACC hook,
|
|
@@ -340,8 +356,15 @@ Live delivery needs four things, and `acc doctor` shows each:
|
|
|
340
356
|
- the session attached to ACC at all (see the section above);
|
|
341
357
|
- the agent started the relay. While none is running, ACC's context asks up to three times
|
|
342
358
|
in that conversation. A declined prompt and an ignored ask look the same, so the line can
|
|
343
|
-
return after a decline; after the third ask it stays quiet.
|
|
344
|
-
`
|
|
359
|
+
return after a decline; after the third ask it stays quiet. ACC's install allows that
|
|
360
|
+
command, so the agent starts it without an approval prompt; `acc doctor` names the rule when
|
|
361
|
+
it is missing. Run `sh "~/.gemini/config/acc/acc-relay.sh" start` to start it directly.
|
|
362
|
+
|
|
363
|
+
In Antigravity 2.0, the desktop app, there is no relay: ACC delivers through the app's own
|
|
364
|
+
language server, and `acc doctor` names such a session `Antigravity session`. A conversation is
|
|
365
|
+
reachable from its first turn after the app starts. The app runs no session start for a
|
|
366
|
+
conversation it reopens, so after a restart nothing reaches it live until someone sends it a
|
|
367
|
+
prompt; the message waits in its inbox until then.
|
|
345
368
|
|
|
346
369
|
`acc doctor` reports how many relays are running and, per session, whether a live transport is
|
|
347
370
|
active. A relay ends with its client; nothing is left running after the TUI exits or after
|
|
@@ -365,6 +388,12 @@ first ACC command. `acc doctor` prints an `Antigravity CLI inbound:` line with w
|
|
|
365
388
|
- **The file cannot be read.** ACC leaves an invalid `settings.json` as it is. Repair it, then
|
|
366
389
|
run `acc install --adapter antigravity` again.
|
|
367
390
|
|
|
391
|
+
Antigravity 2.0, the desktop app, runs the agent's commands in a sandbox where ACC's wrapper
|
|
392
|
+
cannot run, and the model then asks to run it outside the sandbox. The app decides that from
|
|
393
|
+
its own grants in `~/.gemini/config/config.json`, never from Antigravity CLI's settings. ACC's
|
|
394
|
+
install adds its rule there once the app has run, and `acc doctor` prints its state on a line
|
|
395
|
+
that names the desktop app. Restart the app after an install if it was open.
|
|
396
|
+
|
|
368
397
|
## Grok shows no injected message
|
|
369
398
|
|
|
370
399
|
Grok discards UserPromptSubmit context. On the observed 1.0.24 client, run public
|
|
@@ -381,6 +410,41 @@ session becomes offline by presence rules rather than a clean end signal. The de
|
|
|
381
410
|
status hides offline sessions; `acc status --all` intentionally retains attribution and
|
|
382
411
|
checkout history.
|
|
383
412
|
|
|
413
|
+
## On Windows
|
|
414
|
+
|
|
415
|
+
- **A session attaches only on its first prompt.** ACC reads the process tree through
|
|
416
|
+
PowerShell, and the first start after boot can take several seconds. A hook that runs out of
|
|
417
|
+
time continues without ACC, and the next user prompt attaches the session.
|
|
418
|
+
- **A hook reports `node` is not recognized.** Grok and Antigravity CLI hooks start `node` from
|
|
419
|
+
`PATH`. Add Node.js to the `PATH` the client sees, then restart the client.
|
|
420
|
+
- **Claude Code hooks do nothing.** ACC wires Claude Code's hooks in exec form, which needs
|
|
421
|
+
Claude Code 2.1.139 or later. Update Claude Code and run `acc install` again.
|
|
422
|
+
- **`acc install` refuses Antigravity CLI because of a space.** Antigravity CLI cannot run a
|
|
423
|
+
quoted hook path, so ACC writes the 8.3 short name of a path with a space. A volume with 8.3
|
|
424
|
+
names turned off has none; turn them on (`fsutil 8dot3name set C: 0`, as an administrator)
|
|
425
|
+
and run `acc install` again.
|
|
426
|
+
- **A write through Claude Code's PowerShell tool was not guarded.** The guard reads POSIX shell
|
|
427
|
+
commands only. Claims are advisory by default, and a write through Claude Code's Write, Edit or
|
|
428
|
+
Bash tool is still checked.
|
|
429
|
+
- **Codex is not woken on Windows.** Codex refuses to start its app-server daemon from an
|
|
430
|
+
elevated terminal ("start the Windows daemon from a non-elevated terminal"). Start Codex from a
|
|
431
|
+
terminal that is not running as administrator, and keep `CODEX_HOME` short: the daemon's socket
|
|
432
|
+
path has to fit 108 bytes, or Codex runs the chat on its own embedded server, which no peer can
|
|
433
|
+
reach.
|
|
434
|
+
- **Hooks run out of time on a cloud machine.** A Windows flush waits for the whole disk to
|
|
435
|
+
write out its cache. On a GitHub `windows-latest` runner, whose system disk is remote, a 4 KB
|
|
436
|
+
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
|
|
437
|
+
local disk. A session start flushes 5 to 16 times, so a disk like that can run a hook out of
|
|
438
|
+
its five seconds; the session then attaches on a later prompt. Point `ACC_DATA_HOME` at a
|
|
439
|
+
directory on a local disk that only your account can read, for every client, and restart
|
|
440
|
+
them.
|
|
441
|
+
- **A Claude Code session is not woken on Windows.** The wake authenticates with the key Claude
|
|
442
|
+
Code publishes beside its session record (`<config>\sessions\<pid>.<hash>.key`). Run
|
|
443
|
+
`acc doctor`: a session without that key, or whose pipe the machine no longer lists, waits for
|
|
444
|
+
its next turn. ACC trusts the key only in a configuration directory inside your user profile,
|
|
445
|
+
whose access list keeps it to your account. A session whose `CLAUDE_CONFIG_DIR` is elsewhere
|
|
446
|
+
reports `native_endpoint_unavailable` and also waits for its next turn.
|
|
447
|
+
|
|
384
448
|
## A write was blocked
|
|
385
449
|
|
|
386
450
|
Exit code `5` names the overlapping claim and owner. Ask the owner or wait for release. If
|
|
@@ -408,6 +472,10 @@ confirming no needed coordination state remains.
|
|
|
408
472
|
ACC removes only bytes that still match its install record. Anything edited by the user is
|
|
409
473
|
reported and retained. Remove those leftovers manually if desired.
|
|
410
474
|
|
|
475
|
+
An uninstall also skips a client that the current data home did not install, and names it:
|
|
476
|
+
its wiring belongs to another ACC data home. Run `acc uninstall --adapter <client>` to remove
|
|
477
|
+
it from this one.
|
|
478
|
+
|
|
411
479
|
Runtime state is outside the repository by design. `ACC_DATA_HOME` can relocate it, but ACC
|
|
412
480
|
refuses a path inside any workspace root. Relocate the whole data directory; a symlink for
|
|
413
481
|
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
|
|
@@ -74,6 +75,47 @@ This release adds no store event type or field.
|
|
|
74
75
|
This release adds no store event type or field. A sender's delivery JSON may carry
|
|
75
76
|
`nativeLaunchOption` beside `nativeReasonCode`.
|
|
76
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
|
+
|
|
105
|
+
0.9.1 changes two things around Codex and Claude Code:
|
|
106
|
+
|
|
107
|
+
- **Codex sessions answer peers without auto-review.** On macOS and Linux the update adds ACC's
|
|
108
|
+
own Codex rules file, `~/.codex/rules/agents-can-communicate.rules`, so the commands a
|
|
109
|
+
participant runs need no approval and Codex's auto-review never judges a message to a local
|
|
110
|
+
peer. ACC's install, uninstall, update and config commands still ask. If a Codex session
|
|
111
|
+
started before the update still asks, start a new one. See
|
|
112
|
+
[Codex command approval](CONFIGURATION.md#codex-command-approval).
|
|
113
|
+
- **Doctor no longer calls the Claude Code plugin edited after an update.** A running session
|
|
114
|
+
marks the plugin copy it still uses with `.in_use/<pid>`; doctor counted that as an edit and
|
|
115
|
+
advised a reinstall. An install also keeps a copy whose marker names a live process.
|
|
116
|
+
|
|
117
|
+
This release adds no store event type or field, and `STORE_VERSION` stays 6.
|
|
118
|
+
|
|
77
119
|
## From 0.7.x
|
|
78
120
|
|
|
79
121
|
Claude Code live delivery wakes each session through the inbox socket that Claude Code opens
|
|
@@ -105,10 +147,10 @@ recorded policy. ACC ignores `ACC_NATIVE_DELIVERY_POLICY`, `ACC_BYPASS` and
|
|
|
105
147
|
A Claude Code session that started through the old shim keeps its Channel until it exits.
|
|
106
148
|
Its next turn binds the inbox. Start new sessions with your ordinary `claude` command.
|
|
107
149
|
|
|
108
|
-
The Claude Code live-delivery minimum is now 2.1.282
|
|
150
|
+
The Claude Code live-delivery minimum is now 2.1.282. With an older
|
|
109
151
|
Claude Code, live delivery stays off and the recorded policy is kept. Update Claude Code and
|
|
110
152
|
start a new session: the recorded policy applies to it, with nothing to install again.
|
|
111
|
-
`acc doctor` reports the state.
|
|
153
|
+
`acc doctor` reports the state.
|
|
112
154
|
|
|
113
155
|
This release adds no new store event type or field, so a store it writes stays readable by
|
|
114
156
|
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
|
+
}
|