agents-can-communicate 0.3.1 → 0.4.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 +95 -52
- package/SECURITY.md +1 -1
- package/bin/acc-bootstrap.mjs +5 -54
- package/bin/acc-claude-channel.mjs +8 -175
- package/bin/acc-hook.mjs +4 -133
- package/bin/acc-mcp.mjs +4 -59
- package/bin/acc-update-worker.mjs +8 -0
- package/bin/acc.mjs +5 -39
- package/bin/entrypoints/acc-bootstrap.mjs +47 -0
- package/bin/entrypoints/acc-claude-channel.mjs +149 -0
- package/bin/entrypoints/acc-hook.mjs +58 -0
- package/bin/entrypoints/acc-mcp.mjs +70 -0
- package/bin/entrypoints/acc.mjs +51 -0
- package/bin/entrypoints/claude-channel-stdio.mjs +29 -0
- package/bin/entrypoints/hook-output.mjs +77 -0
- package/docs/ADAPTER_AUTHORING.md +52 -8
- package/docs/ARCHITECTURE.md +64 -11
- package/docs/CAPABILITIES.md +41 -37
- package/docs/CLI.md +145 -25
- package/docs/CONCEPTS.md +13 -6
- package/docs/CONFIGURATION.md +37 -22
- package/docs/DESIGN_DECISIONS.md +16 -11
- package/docs/GETTING_STARTED.md +41 -7
- package/docs/GLOSSARY.md +9 -3
- package/docs/HOW_IT_WORKS.md +32 -11
- package/docs/MCP.md +91 -24
- package/docs/PROTOCOL.md +69 -12
- package/docs/RELEASING.md +28 -10
- package/docs/SECURITY_MODEL.md +47 -13
- package/docs/TROUBLESHOOTING.md +102 -20
- package/docs/UPGRADING.md +154 -0
- package/docs/WHY_ACC.md +5 -4
- package/docs/index.md +8 -0
- 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 +106 -5
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/install.mjs +6 -6
- package/node_modules/@agents-can-communicate/adapter-claude-code/src/native-delivery.mjs +2 -1
- package/node_modules/@agents-can-communicate/adapter-codex/certification.json +38 -13
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/certification-provenance.json +220 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-current-binding-product-evidence.json +1549 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-current-binding-product.json +27 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-product-evidence.json +1549 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-product.json +27 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-transport-evidence.json +259 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-transport.json +21 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-current-binding-product-evidence.json +1549 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-current-binding-product.json +27 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-product-evidence.json +1549 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-product.json +27 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-transport-evidence.json +259 -0
- package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-transport.json +21 -0
- package/node_modules/@agents-can-communicate/adapter-codex/package.json +14 -2
- package/node_modules/@agents-can-communicate/adapter-codex/plugin/skills/acc/SKILL.md +106 -5
- package/node_modules/@agents-can-communicate/adapter-codex/src/adapter.mjs +26 -44
- package/node_modules/@agents-can-communicate/adapter-codex/src/app-server-client.mjs +70 -17
- package/node_modules/@agents-can-communicate/adapter-codex/src/config-block.mjs +231 -0
- package/node_modules/@agents-can-communicate/adapter-codex/src/hooks.mjs +1 -1
- package/node_modules/@agents-can-communicate/adapter-codex/src/install.mjs +71 -63
- package/node_modules/@agents-can-communicate/adapter-codex/src/native-delivery.mjs +107 -103
- package/node_modules/@agents-can-communicate/adapter-codex/src/native-endpoint.mjs +96 -0
- package/node_modules/@agents-can-communicate/adapter-codex/src/ws-json-rpc.mjs +3 -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 +106 -5
- package/node_modules/@agents-can-communicate/adapter-gemini-cli/package.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-gemini-cli/src/install.mjs +2 -2
- 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 +122 -8
- package/node_modules/@agents-can-communicate/adapter-grok/src/adapter.mjs +5 -3
- package/node_modules/@agents-can-communicate/adapter-grok/src/hooks.mjs +9 -0
- package/node_modules/@agents-can-communicate/adapter-grok/src/install.mjs +2 -2
- 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 +106 -5
- package/node_modules/@agents-can-communicate/adapter-kimi/src/hooks.mjs +1 -1
- package/node_modules/@agents-can-communicate/adapter-kimi/src/install.mjs +2 -2
- package/node_modules/@agents-can-communicate/adapter-sdk/package.json +1 -1
- package/node_modules/@agents-can-communicate/adapter-sdk/src/capabilities.mjs +5 -0
- package/node_modules/@agents-can-communicate/adapter-sdk/src/context-projector.mjs +26 -4
- package/node_modules/@agents-can-communicate/adapter-sdk/src/decision-text.mjs +19 -0
- package/node_modules/@agents-can-communicate/adapter-sdk/src/hook-shim.mjs +5 -3
- package/node_modules/@agents-can-communicate/adapter-sdk/src/index.mjs +1 -0
- package/node_modules/@agents-can-communicate/adapter-sdk/src/native-delivery.mjs +9 -2
- package/node_modules/@agents-can-communicate/adapter-sdk/src/native-vocabulary.mjs +2 -6
- package/node_modules/@agents-can-communicate/adapter-sdk/src/session-binding.mjs +29 -9
- package/node_modules/@agents-can-communicate/adapter-sdk/src/toml-block.mjs +8 -6
- package/node_modules/@agents-can-communicate/cli/package.json +4 -2
- package/node_modules/@agents-can-communicate/cli/src/args.mjs +49 -22
- package/node_modules/@agents-can-communicate/cli/src/doctor-command.mjs +11 -4
- package/node_modules/@agents-can-communicate/cli/src/git-probe.mjs +9 -3
- package/node_modules/@agents-can-communicate/cli/src/help.mjs +109 -14
- package/node_modules/@agents-can-communicate/cli/src/install-command.mjs +24 -5
- package/node_modules/@agents-can-communicate/cli/src/main.mjs +35 -12
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/activation.mjs +110 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/command.mjs +64 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/download.mjs +71 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/entry.mjs +110 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/generation.mjs +167 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/install.mjs +78 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/launchers.mjs +60 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/leases.mjs +60 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/location.mjs +55 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/mutex.mjs +145 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/policy.mjs +4 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/refresh.mjs +40 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/schedule.mjs +21 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/state.mjs +123 -0
- package/node_modules/@agents-can-communicate/cli/src/managed-runtime/worker.mjs +65 -0
- package/node_modules/@agents-can-communicate/cli/src/runtime-paths.mjs +1 -1
- package/node_modules/@agents-can-communicate/cli/src/session-owner.mjs +33 -108
- package/node_modules/@agents-can-communicate/cli/src/update-command.mjs +25 -7
- package/node_modules/@agents-can-communicate/core/package.json +1 -1
- package/node_modules/@agents-can-communicate/core/src/attention.mjs +3 -0
- package/node_modules/@agents-can-communicate/core/src/claims.mjs +13 -8
- package/node_modules/@agents-can-communicate/core/src/conversations.mjs +9 -25
- package/node_modules/@agents-can-communicate/core/src/decision-changes.mjs +36 -0
- package/node_modules/@agents-can-communicate/core/src/decision-state.mjs +42 -0
- package/node_modules/@agents-can-communicate/core/src/delivery-bindings.mjs +11 -4
- package/node_modules/@agents-can-communicate/core/src/inbox.mjs +48 -17
- package/node_modules/@agents-can-communicate/core/src/intents.mjs +35 -15
- package/node_modules/@agents-can-communicate/core/src/materialisation.mjs +7 -5
- package/node_modules/@agents-can-communicate/core/src/message-pages.mjs +75 -0
- package/node_modules/@agents-can-communicate/core/src/next-turn-delivery.mjs +31 -0
- package/node_modules/@agents-can-communicate/core/src/session-opening.mjs +128 -0
- package/node_modules/@agents-can-communicate/core/src/sessions.mjs +58 -132
- package/node_modules/@agents-can-communicate/core/src/sync.mjs +31 -2
- package/node_modules/@agents-can-communicate/delivery-router/package.json +1 -1
- package/node_modules/@agents-can-communicate/delivery-router/src/refresh-binding.mjs +38 -0
- package/node_modules/@agents-can-communicate/delivery-router/src/router.mjs +86 -10
- package/node_modules/@agents-can-communicate/hook-runner/package.json +1 -1
- package/node_modules/@agents-can-communicate/hook-runner/src/client-version.mjs +1 -0
- package/node_modules/@agents-can-communicate/hook-runner/src/native-binding.mjs +6 -4
- package/node_modules/@agents-can-communicate/hook-runner/src/native-retirement.mjs +48 -0
- package/node_modules/@agents-can-communicate/hook-runner/src/owner-context.mjs +30 -0
- package/node_modules/@agents-can-communicate/hook-runner/src/process-table.mjs +1 -1
- package/node_modules/@agents-can-communicate/hook-runner/src/runner.mjs +172 -67
- package/node_modules/@agents-can-communicate/hook-runner/src/session-lifecycle.mjs +13 -0
- package/node_modules/@agents-can-communicate/installer/package.json +1 -1
- package/node_modules/@agents-can-communicate/installer/src/apply.mjs +17 -2
- package/node_modules/@agents-can-communicate/installer/src/bootstrap-runtime.mjs +11 -5
- package/node_modules/@agents-can-communicate/installer/src/detect.mjs +1 -1
- package/node_modules/@agents-can-communicate/installer/src/index.mjs +1 -0
- package/node_modules/@agents-can-communicate/installer/src/live-policy.mjs +21 -0
- package/node_modules/@agents-can-communicate/installer/src/native-activation.mjs +20 -6
- package/node_modules/@agents-can-communicate/installer/src/ownership.mjs +10 -4
- package/node_modules/@agents-can-communicate/installer/src/plan.mjs +3 -3
- package/node_modules/@agents-can-communicate/mcp-server/package.json +1 -1
- package/node_modules/@agents-can-communicate/mcp-server/src/protocol.mjs +85 -0
- package/node_modules/@agents-can-communicate/mcp-server/src/resources.mjs +3 -2
- package/node_modules/@agents-can-communicate/mcp-server/src/server.mjs +59 -57
- package/node_modules/@agents-can-communicate/mcp-server/src/tools.mjs +47 -33
- package/node_modules/@agents-can-communicate/protocol/package.json +1 -1
- package/node_modules/@agents-can-communicate/protocol/src/conversations.mjs +3 -0
- package/node_modules/@agents-can-communicate/protocol/src/decision-changes.mjs +15 -0
- package/node_modules/@agents-can-communicate/protocol/src/index.mjs +3 -1
- package/node_modules/@agents-can-communicate/protocol/src/schema.mjs +14 -5
- package/node_modules/@agents-can-communicate/storage-filesystem/package.json +1 -1
- package/node_modules/@agents-can-communicate/storage-filesystem/src/atomic-json.mjs +5 -1
- package/node_modules/@agents-can-communicate/storage-filesystem/src/deadline.mjs +7 -0
- package/node_modules/@agents-can-communicate/storage-filesystem/src/index.mjs +2 -0
- package/node_modules/@agents-can-communicate/storage-filesystem/src/session-read.mjs +25 -0
- package/node_modules/@agents-can-communicate/storage-filesystem/src/store.mjs +28 -25
- package/package.json +2 -1
package/docs/PROTOCOL.md
CHANGED
|
@@ -74,11 +74,57 @@ inside the message so an uncertain caller can retry explicitly.
|
|
|
74
74
|
|
|
75
75
|
An empty `toParticipantIds` creates a room record. At commit time, core resolves every
|
|
76
76
|
known peer participant with an open session and creates a receipt for each. Participants
|
|
77
|
-
that arrive later can inspect room
|
|
77
|
+
that arrive later can inspect room records through history sync but do not receive
|
|
78
78
|
retroactive receipts. Those already-present recipients get the normal inbox and certified
|
|
79
79
|
next-turn path; a successful next-turn write advances their room receipt to `offered`.
|
|
80
80
|
Room records are never eligible for native live push.
|
|
81
81
|
|
|
82
|
+
## Decision lifecycle
|
|
83
|
+
|
|
84
|
+
A decision may additionally carry `decisionChange` with exactly two fields:
|
|
85
|
+
`action` (`replace` or `withdraw`) and `messageIds` (1..16 unique portable IDs of
|
|
86
|
+
existing decisions in the same workspace). Generic send inputs use `supersedes`
|
|
87
|
+
or `withdraws`; the durable payload is built after transactional validation.
|
|
88
|
+
The sorted target set participates in idempotency. The author may be any owned
|
|
89
|
+
participant; attribution does not confer system authority.
|
|
90
|
+
|
|
91
|
+
Targets and their receipts are immutable. Changes inherit target receipt recipients
|
|
92
|
+
and target authors, excluding the changing author from inherited recipients. Extra
|
|
93
|
+
explicit recipients are merged, sorted, and persisted in `toParticipantIds` before
|
|
94
|
+
recording. This also notifies offline readers and makes live routing use the same set.
|
|
95
|
+
No old receipt is acknowledged, deleted, or advanced by a lifecycle change.
|
|
96
|
+
|
|
97
|
+
Explicit links form a graph. Within a connected group, terminal records are heads;
|
|
98
|
+
multiple heads mean a conflict, even if their prose looks similar. A change may target
|
|
99
|
+
an already replaced decision, creating a competing branch. Resolve branches by
|
|
100
|
+
explicitly linking a new change to all their current heads. A withdrawal is itself
|
|
101
|
+
a terminal record; superseding it explicitly records a new decision.
|
|
102
|
+
|
|
103
|
+
Decision summaries and exact read copies expose `decisionStatus`:
|
|
104
|
+
|
|
105
|
+
| Field | Meaning |
|
|
106
|
+
|---|---|
|
|
107
|
+
| `state` | `current` for a terminal choice; `withdrawn` for a terminal cancellation or history with only cancelled heads; otherwise `superseded` |
|
|
108
|
+
| `isHead` | no recorded successor links to this record |
|
|
109
|
+
| `conflicted` / `headCount` | whether the group has multiple terminal positions and their count |
|
|
110
|
+
| `currentMessageId` | sole current head, or null if there is no unique head |
|
|
111
|
+
| `groupId` | derived representative root ID for finding related heads; may change when groups are joined |
|
|
112
|
+
|
|
113
|
+
This metadata is never persisted. `history` + kind `decision` + `current: true`
|
|
114
|
+
lists heads, including withdrawals and conflicts, using the same summary budget.
|
|
115
|
+
Ordinary inbox, bulk reads, automatic delivery and attention omit non-head decisions;
|
|
116
|
+
exact inbox/history retain them. Timestamps and acknowledgements never choose a winner.
|
|
117
|
+
A decision without an explicit successor may still be factually stale.
|
|
118
|
+
|
|
119
|
+
Next-turn context and each native offer use a lifecycle snapshot; text already shown
|
|
120
|
+
or in flight cannot be recalled. Changes get their own delivery receipts. Native
|
|
121
|
+
transport carries the change/status inside its existing untrusted text envelope.
|
|
122
|
+
|
|
123
|
+
The optional field preserves reading of existing schema-3 records by this build.
|
|
124
|
+
Older ACC builds cannot interpret these semantics and may reject new records with
|
|
125
|
+
unknown fields. Upgrade participating ACC installations together; this is not a
|
|
126
|
+
forward-compatible promise or an automatic state migration.
|
|
127
|
+
|
|
82
128
|
## Kinds and obligations
|
|
83
129
|
|
|
84
130
|
| Kind | Valid obligation | Addressing |
|
|
@@ -155,13 +201,19 @@ leaves the receipt queued.
|
|
|
155
201
|
|
|
156
202
|
## Inbox, reply, and acknowledgement
|
|
157
203
|
|
|
158
|
-
`inbox`
|
|
159
|
-
|
|
160
|
-
|
|
204
|
+
Without an id, public `inbox` lists bounded summary pages for unresolved messages owned
|
|
205
|
+
by the calling participant, without changing receipts. An exact read returns the complete
|
|
206
|
+
message and advances only that participant's receipt to `retrieved`. It is the narrow
|
|
207
|
+
recovery and inspection path, including after compaction or acknowledgement. Reading an
|
|
208
|
+
acknowledged message preserves its receipt, timestamp, and event history; it does not put
|
|
209
|
+
the message back into the unresolved inbox. Ownership and current-generation checks still
|
|
210
|
+
apply to every read.
|
|
161
211
|
|
|
162
212
|
`reply` verifies that ownership, records an `answer` in the original thread, and advances
|
|
163
213
|
the original receipt to `acknowledged` in one transaction. Only after that durable commit
|
|
164
214
|
may the answer be offered to the original author. A transport error cannot roll back it.
|
|
215
|
+
CLI and MCP reply results expose both facts: `message` and `delivery` describe the outgoing
|
|
216
|
+
answer, while `receipt` describes the caller's acknowledgement of the original message.
|
|
165
217
|
|
|
166
218
|
`ack` advances the caller's receipt without creating a reply. It exposes no state override;
|
|
167
219
|
callers cannot claim that a transport offered or a participant retrieved a message.
|
|
@@ -188,17 +240,22 @@ The recipient owns `livePolicy` because native push may start a model turn:
|
|
|
188
240
|
- `actionable`: questions, requests, answers, decisions, and addressed handoffs may use live push;
|
|
189
241
|
- `all`: every addressed kind may use live push.
|
|
190
242
|
|
|
191
|
-
Default is `off`. Policy never creates a capability. The router
|
|
192
|
-
|
|
193
|
-
adapter acceptance. Claude Code
|
|
194
|
-
minimum
|
|
195
|
-
|
|
196
|
-
|
|
243
|
+
Default is `off`. Policy never creates a capability. The router requires one
|
|
244
|
+
current eligible recipient generation, supported client evidence, a verified
|
|
245
|
+
binding and adapter acceptance. Claude Code Channel uses a captured 2.1.258
|
|
246
|
+
minimum, confirmed on 2.1.260. Codex LocalDaemon uses a 0.152.1 minimum, confirmed
|
|
247
|
+
through installed-product captures on 0.152.1 and 0.153.4; recorded consent and
|
|
248
|
+
exact thread, cwd, process, version and protocol verification govern every session.
|
|
249
|
+
Unavailable or refused routes fall back durably. Codex replies use the ACC CLI;
|
|
250
|
+
its native reply route remains false.
|
|
197
251
|
|
|
198
252
|
## Attention and sync
|
|
199
253
|
|
|
200
|
-
|
|
201
|
-
|
|
254
|
+
Default sync returns a bounded event page after a 16-digit cursor plus explicit attention.
|
|
255
|
+
History sync returns read-only message summaries (20 items by default, at most 12,000
|
|
256
|
+
formatted JSON bytes) and complete-message-id cursors, or one exact full message. Neither
|
|
257
|
+
history mode changes receipts. Full sync adds an unbounded forensic workspace snapshot.
|
|
258
|
+
Message discovery and exact-read contracts are in [CLI](CLI.md) and [MCP](MCP.md). Attention is
|
|
202
259
|
limited to six explicit rules: `reply_required`, `acknowledgement_required`,
|
|
203
260
|
`recipient_unavailable`, `claim_conflict`, `claim_contended`, and `claim_expired`.
|
|
204
261
|
|
package/docs/RELEASING.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Releasing
|
|
2
2
|
|
|
3
3
|
Use this procedure to build one auditable npm artifact, verify that exact tarball, and keep
|
|
4
|
-
its evidence tied to the commit that supplied its bytes. The package is currently `0.
|
|
4
|
+
its evidence tied to the commit that supplied its bytes. The package is currently `0.4.1`;
|
|
5
5
|
the commands derive the version from `package.json` so the filename cannot drift.
|
|
6
6
|
|
|
7
7
|
```mermaid
|
|
@@ -18,8 +18,9 @@ graph LR
|
|
|
18
18
|
|
|
19
19
|
## Prepare candidate commit A
|
|
20
20
|
|
|
21
|
-
Commit A must contain every file npm will pack and every release gate.
|
|
22
|
-
dedicated release worktree
|
|
21
|
+
Commit A must contain every file npm will pack and every release gate. Use a clean,
|
|
22
|
+
dedicated release worktree; an existing clean isolated worktree is fine. Update the version
|
|
23
|
+
and candidate files, then run:
|
|
23
24
|
|
|
24
25
|
```bash
|
|
25
26
|
release_cache="$(mktemp -d "${TMPDIR:-/tmp}/acc-npm-cache.XXXXXX")"
|
|
@@ -62,7 +63,23 @@ env npm_config_cache="$release_cache" node scripts/verify-package.mjs "$tarball"
|
|
|
62
63
|
symlinks, then exercises doctor, a non-Git workspace, client install/uninstall, bundled
|
|
63
64
|
workspaces, certification evidence, and packed documentation links. It rejects tests,
|
|
64
65
|
development probes, sockets, transcript-shaped data, runtime state, and unreferenced
|
|
65
|
-
fixtures.
|
|
66
|
+
fixtures. Keep `ACC_NO_UPDATE_CHECK=1` set for release checks so installing an integration
|
|
67
|
+
cannot schedule a real registry update. The managed-update acceptance tests explicitly
|
|
68
|
+
enable networking only against their isolated local registry and npm cache.
|
|
69
|
+
|
|
70
|
+
The managed-update checks exercise actual installed archives: automatic enrollment and
|
|
71
|
+
activation, a persistent MCP process holding the old version, integrity rejection, recovery
|
|
72
|
+
from a failed integration refresh, and stable launchers after the initial package is gone.
|
|
73
|
+
Run them before recording the candidate:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
env npm_config_cache="$release_cache" node --test tests/acceptance/managed-*-packed.test.mjs
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Repeat the published-version upgrade preflight with this exact tarball and isolated home,
|
|
80
|
+
data, and project directories. Retain the source/archive/installed file comparison with the
|
|
81
|
+
preflight evidence. Local-registry checks and direct process checks do not establish native
|
|
82
|
+
client activation; capture that separately on supported real clients.
|
|
66
83
|
|
|
67
84
|
When passed an existing tarball, the verifier intentionally prints `revision unknown`:
|
|
68
85
|
the current checkout cannot prove which commit produced arbitrary supplied bytes. Record
|
|
@@ -100,12 +117,13 @@ work belongs under `Unreleased` and gets a new candidate record.
|
|
|
100
117
|
|
|
101
118
|
## Capture only capabilities you observed
|
|
102
119
|
|
|
103
|
-
Run native real-client checks
|
|
104
|
-
|
|
105
|
-
Code
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
120
|
+
Run native real-client checks on the exact versions and platforms recorded in
|
|
121
|
+
retained fixtures. Exact-version evidence governs normal-turn and guard behavior.
|
|
122
|
+
Claude Code Channel uses its captured macOS arm64 minimum plus a current probe and
|
|
123
|
+
per-session handshake; its vendor warning remains part of startup. Codex LocalDaemon
|
|
124
|
+
uses a separate 0.152.1 minimum with installed-product captures on 0.152.1 and
|
|
125
|
+
0.153.4. Its passing capture must ship the hashed complete product matrix and
|
|
126
|
+
historical evidence references. Direct queue success alone cannot certify that route.
|
|
109
127
|
|
|
110
128
|
Record failed and unavailable paths as such, then exercise the packed next-turn or inbox
|
|
111
129
|
fallback. An unsupported platform is an explicit skip, never a passing capture. See
|
package/docs/SECURITY_MODEL.md
CHANGED
|
@@ -42,7 +42,11 @@ own instruction hierarchy are the mitigation; ACC is not a model sandbox.
|
|
|
42
42
|
## Identity and ownership
|
|
43
43
|
|
|
44
44
|
- Participant identity is the address; session identity is one current client opening.
|
|
45
|
-
- Mutating calls
|
|
45
|
+
- Mutating CLI calls and inbox reads require an explicitly supplied session/generation
|
|
46
|
+
pair. The CLI never obtains a generation from a public ID, checkout, sole peer binding,
|
|
47
|
+
or inherited native environment value.
|
|
48
|
+
- `ACC_SESSION`/`ACC_GENERATION` are operator-supplied credentials. They do not authenticate
|
|
49
|
+
a process or protect against intentional sharing under the same local OS account.
|
|
46
50
|
- A stale process cannot renew or release records owned by a newer generation.
|
|
47
51
|
- Inbox, reply, and acknowledgement validate the recipient's participant id.
|
|
48
52
|
- One participant cannot advance another participant's receipt.
|
|
@@ -66,18 +70,20 @@ There is no model-attention claim and no public state override. Failed accelerat
|
|
|
66
70
|
the message queued and records only a closed safe error code. Diagnostics and offer events
|
|
67
71
|
never copy the peer body.
|
|
68
72
|
|
|
69
|
-
A live adapter must match its declared evidence contract, one
|
|
70
|
-
binding
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
A live adapter must match its declared evidence contract, one current
|
|
74
|
+
generation-bound binding and recipient opt-in. Opaque endpoints remain private
|
|
75
|
+
and outside repositories. Claude Code Channel and Codex LocalDaemon delivery are
|
|
76
|
+
experimental and off by default. Codex verifies the exact receiver thread,
|
|
77
|
+
canonical cwd, live process, stable version and protocol, and rereads recorded
|
|
78
|
+
consent before offers. A loaded daemon thread can receive messages after its TUI
|
|
79
|
+
exits. Delivery off and uninstall prevent new Codex submissions; a submission
|
|
80
|
+
already accepted by the vendor queue cannot be withdrawn.
|
|
76
81
|
|
|
77
82
|
## Claims
|
|
78
83
|
|
|
79
|
-
|
|
80
|
-
|
|
84
|
+
CLI claims default to advisory. Guarded enforcement must be requested explicitly and
|
|
85
|
+
requires every live participant to expose a certified guard for the relevant mutation path.
|
|
86
|
+
MCP claims remain advisory. Even guarded claims do not stop unrelated processes, runtime-built
|
|
81
87
|
paths, or tool calls the client never presents to the hook. Force release requires explicit
|
|
82
88
|
authority and records actor and reason.
|
|
83
89
|
|
|
@@ -93,14 +99,42 @@ from operating merely because its own state is unavailable.
|
|
|
93
99
|
- Corrupt or incompatible store versions fail closed before mutation.
|
|
94
100
|
- Client installers preserve unrelated settings and record content hashes.
|
|
95
101
|
- Uninstall removes only bytes still matching what ACC wrote.
|
|
96
|
-
-
|
|
102
|
+
- Runtime credentials and private endpoints stay outside project config. Adapters do not
|
|
103
|
+
automatically collect client secrets or environment contents into peer messages.
|
|
104
|
+
|
|
105
|
+
## Managed automatic updates
|
|
106
|
+
|
|
107
|
+
An initial managed installation enables automatic updates; later installs preserve an
|
|
108
|
+
explicit opt-out. Full uninstall pauses updates while retaining the setting for a later
|
|
109
|
+
reinstall. The latency-sensitive hook path
|
|
110
|
+
does no network download; it may schedule a detached worker. That worker uses the configured
|
|
111
|
+
npm registry/network and local npm executable, checks stable package identity/version and
|
|
112
|
+
sha512 integrity against registry metadata, installs with lifecycle scripts disabled, and
|
|
113
|
+
validates the staged runtime before activation. These checks retain the registry and package
|
|
114
|
+
author as a software-supply trust boundary; they do not establish that package code is safe.
|
|
115
|
+
|
|
116
|
+
ACC process leases hold activation until confirmed exit. Native bindings hold until observed
|
|
117
|
+
SessionEnd cleanup or confirmed process death; unknown PIDs remain conservative holds.
|
|
118
|
+
`acc finish`, presence TTL, and delivery off do not establish native lifecycle end. ACC does
|
|
119
|
+
not manage the vendor daemon.
|
|
120
|
+
|
|
121
|
+
A failed download leaves the active runtime available. A partial integration refresh retains
|
|
122
|
+
the old active pointer but fences normal workspace admission in `activating`; it does not
|
|
123
|
+
leave the previous runtime available for normal work. Fix the reported problem and run
|
|
124
|
+
`acc update` to repair forward. Hooks continue to fail open while coordination is unavailable.
|
|
125
|
+
|
|
126
|
+
`acc update --auto off` disables background updates; `--pin <version>` holds an exact stable
|
|
127
|
+
version. `ACC_NO_UPDATE_CHECK=1` disables update networking and scheduling while allowing
|
|
128
|
+
manual recovery of an already verified pending update. See [Upgrading](UPGRADING.md).
|
|
97
129
|
|
|
98
130
|
## Data collected
|
|
99
131
|
|
|
100
132
|
ACC stores participant/session identity, presence, one-line intent, explicit claims,
|
|
101
133
|
explicit messages and structured handoffs, per-recipient receipts, artifact references,
|
|
102
|
-
and coordination events.
|
|
103
|
-
|
|
134
|
+
and coordination events. ACC does not automatically collect raw transcripts, full prompts
|
|
135
|
+
or assistant responses, secrets, environment contents, or unrelated files. Explicit message
|
|
136
|
+
bodies are caller-provided and preserved: ACC does not scan or scrub secrets from text a
|
|
137
|
+
caller chooses to send. The sender remains responsible for that content.
|
|
104
138
|
|
|
105
139
|
## Threat scenarios
|
|
106
140
|
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -24,6 +24,45 @@ requires plugin trust.
|
|
|
24
24
|
ACC does not launch a missing session. Open it normally after fixing the installation or
|
|
25
25
|
workspace path.
|
|
26
26
|
|
|
27
|
+
## A hook says `workspace contains ACC runtime state`
|
|
28
|
+
|
|
29
|
+
The current directory contains ACC's own state, so ACC cannot use it as a workspace.
|
|
30
|
+
This commonly happens when a client starts in your home directory (`~`). The client
|
|
31
|
+
continues normally, but ACC provides no coordination context there.
|
|
32
|
+
|
|
33
|
+
Open a project directory and restart the client from it. A project inside your home
|
|
34
|
+
works normally; Git is optional. If you intentionally need the broader directory as
|
|
35
|
+
a workspace, configure `ACC_DATA_HOME` outside it for all participating clients.
|
|
36
|
+
This changes the state location; it does not migrate existing history or integrations.
|
|
37
|
+
|
|
38
|
+
For a generic `coordination unavailable` warning, run `acc status --json` from the
|
|
39
|
+
same directory to see the detailed workspace error, and `acc doctor` to check the
|
|
40
|
+
installation. Hook warnings deliberately omit arbitrary paths and error details.
|
|
41
|
+
|
|
42
|
+
## CLI says `caller_identity_unresolved`
|
|
43
|
+
|
|
44
|
+
ACC cannot prove which session owns this shell command. A hook-created presence record
|
|
45
|
+
and the client's native session ID are not shell credentials. Restarting hooks alone does
|
|
46
|
+
not fix this CLI limitation.
|
|
47
|
+
|
|
48
|
+
In Grok, run public `acc status --json` through the terminal tool first. With the
|
|
49
|
+
updated integration, the ACC hook reminder arrives after that result and supplies
|
|
50
|
+
the session's own CLI arguments. Restart Grok after refreshing its integration;
|
|
51
|
+
a header returned with `finish` belongs to the session that just closed.
|
|
52
|
+
|
|
53
|
+
Use this session's ACC MCP tools if available. For a manual CLI workflow, open your own
|
|
54
|
+
session with `acc attach --participant my-session --json`, retain the returned `sessionId`
|
|
55
|
+
and `generation`, and pass both as `--session` and `--generation` on subsequent mutations
|
|
56
|
+
and inbox reads. This creates separate manual presence; finish it with the same pair.
|
|
57
|
+
An operator may explicitly configure `ACC_SESSION` and `ACC_GENERATION` instead.
|
|
58
|
+
Neither a new manual session nor a generic MCP connection inherits the hook participant's
|
|
59
|
+
inbox. Pending messages must be handled through the identity they address; if that
|
|
60
|
+
identity is unavailable, report the limitation.
|
|
61
|
+
|
|
62
|
+
Do not copy another session from `status`, read its binding, or guess a generation. Public
|
|
63
|
+
`status` and `sync` still work. If ownership is unavailable, report the coordination
|
|
64
|
+
limitation and continue the user's actual work.
|
|
65
|
+
|
|
27
66
|
## A message stays queued
|
|
28
67
|
|
|
29
68
|
Queued means the durable message is safe; it does not mean the recipient model saw it. The
|
|
@@ -39,28 +78,45 @@ idle session. Grok, generic MCP, unknown client versions, and other platforms po
|
|
|
39
78
|
reply acknowledges the original automatically; `acc ack` is for acknowledgement-only
|
|
40
79
|
messages.
|
|
41
80
|
|
|
81
|
+
A background inbox command is not evidence that the model will resume. If a reviewer
|
|
82
|
+
ends its turn or exits before the request arrives, the review is still incomplete. For
|
|
83
|
+
an agreed review in the current session, keep the turn active through bounded foreground
|
|
84
|
+
waits and inbox checks; if the wait must end, report the pending review and leave a partial
|
|
85
|
+
handoff. ACC does not restart an exited client.
|
|
86
|
+
|
|
42
87
|
## I enabled live delivery but got fallback
|
|
43
88
|
|
|
44
|
-
`--delivery actionable|all`
|
|
45
|
-
|
|
46
|
-
|
|
89
|
+
`--delivery actionable|all` records recipient intent; delivery also needs a
|
|
90
|
+
supported platform, current probe and exact session binding. Under `actionable`,
|
|
91
|
+
a `note` stays queued with `delivery_disabled`.
|
|
47
92
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
reports `delivery_disabled` on purpose.
|
|
55
|
-
- **Codex.** Its live capability was withdrawn, and `acc doctor` says why.
|
|
93
|
+
For Codex, use your ordinary launch command with 0.152.1 or newer on Apple Silicon
|
|
94
|
+
macOS. Its LocalDaemon must already be running, and trusted hooks must establish
|
|
95
|
+
the receiver's exact thread and workspace. Embedded sessions, an absent socket,
|
|
96
|
+
ambiguous recipients or failed identity checks retain durable inbox access.
|
|
97
|
+
`acc doctor` reports current eligibility. ACC preserves requested consent through
|
|
98
|
+
a temporary daemon outage and does not start the daemon for you.
|
|
56
99
|
|
|
57
|
-
|
|
58
|
-
|
|
100
|
+
For Claude Code, open a fresh interactive zsh after installation so its launcher
|
|
101
|
+
is on PATH, and accept its visible development-channel warning. A failed channel
|
|
102
|
+
connection may remain in Claude's `~/.claude/mcp-needs-auth-cache.json` for about
|
|
103
|
+
fifteen minutes; remove only the `acc` entry and restart if that is the cause.
|
|
104
|
+
|
|
105
|
+
Closing a Codex terminal can leave its daemon thread loaded and eligible. Use
|
|
106
|
+
`acc install --adapter codex --delivery off` to stop new ACC native offers.
|
|
107
|
+
Already accepted queue entries remain with the vendor. Actual thread archive
|
|
108
|
+
requires Codex's confirmation and produces `SessionEnd`.
|
|
59
109
|
|
|
60
110
|
## Codex plugin is listed but inactive
|
|
61
111
|
|
|
62
|
-
|
|
63
|
-
|
|
112
|
+
Open `/plugins` in Codex and check ACC is enabled. Open `/hooks`, review each ACC hook,
|
|
113
|
+
and enable/trust its current definition if needed; then restart the session. New or changed
|
|
114
|
+
definitions need review, and a trusted hook can still be disabled.
|
|
115
|
+
|
|
116
|
+
`acc doctor` reports installed files separately from hook readiness, which it leaves
|
|
117
|
+
unverified. A saved trust record cannot prove current activation. If installation preserved
|
|
118
|
+
your own sandbox configuration, doctor also names the ACC state directory whose access
|
|
119
|
+
you should check in `sandbox_workspace_write.writable_roots`.
|
|
64
120
|
|
|
65
121
|
## Gemini does not guard a write
|
|
66
122
|
|
|
@@ -76,8 +132,12 @@ or start the session somewhere trusted.
|
|
|
76
132
|
|
|
77
133
|
## Grok shows no injected message
|
|
78
134
|
|
|
79
|
-
Grok
|
|
80
|
-
|
|
135
|
+
Grok discards UserPromptSubmit context. On the observed 1.0.24 client, run public
|
|
136
|
+
`acc status --json` in its terminal first: the ACC hook reminder after the result
|
|
137
|
+
supplies your own `--session` and `--generation` pair for subsequent inbox reads and
|
|
138
|
+
mutations. Restart Grok after refreshing its installed hooks and skill. Its next-turn,
|
|
139
|
+
live delivery, and guard capabilities remain false; peer messages require explicit inbox
|
|
140
|
+
reads. If the header never arrives, report missing ownership rather than adopting a peer.
|
|
81
141
|
|
|
82
142
|
## Kimi sessions remain in history
|
|
83
143
|
|
|
@@ -92,8 +152,8 @@ Exit code `5` names the overlapping claim and owner. Ask the owner or wait for r
|
|
|
92
152
|
an explicit authority has decided to replace it:
|
|
93
153
|
|
|
94
154
|
```bash
|
|
95
|
-
acc release --claim claim_x --authority
|
|
96
|
-
--reason "
|
|
155
|
+
acc release --claim claim_x --authority human \
|
|
156
|
+
--reason "human approved the handover after agreement with the models"
|
|
97
157
|
```
|
|
98
158
|
|
|
99
159
|
## Protection says advisory
|
|
@@ -114,7 +174,29 @@ ACC removes only bytes that still match its install record. Anything edited by t
|
|
|
114
174
|
reported and retained. Remove those leftovers manually if desired.
|
|
115
175
|
|
|
116
176
|
Runtime state is outside the repository by design. `ACC_DATA_HOME` can relocate it, but ACC
|
|
117
|
-
refuses a path inside any workspace root.
|
|
177
|
+
refuses a path inside any workspace root. Relocate the whole data directory; a symlink for
|
|
178
|
+
that directory is supported. Install rejects a symlink that moves only the internal
|
|
179
|
+
`acc/runtime` tree, because runtime admission and the bootstrap cache need the same data home.
|
|
118
180
|
|
|
119
181
|
Next: [Getting started](GETTING_STARTED.md) · [Capabilities](CAPABILITIES.md) ·
|
|
120
182
|
[Configuration](CONFIGURATION.md)
|
|
183
|
+
|
|
184
|
+
## An automatic update is pending
|
|
185
|
+
|
|
186
|
+
Run `acc doctor` to see the update policy and pending notice. ACC process leases, including
|
|
187
|
+
persistent MCP servers, require confirmed process exit. Native bindings clear on observed
|
|
188
|
+
SessionEnd or confirmed process death; a vendor daemon may remain alive after SessionEnd.
|
|
189
|
+
Unknown PIDs remain holds until lifecycle cleanup. Close the relevant client sessions and
|
|
190
|
+
ACC processes; `finish`, presence TTL, and delivery off do not prove native end. ACC never
|
|
191
|
+
manages the daemon or expires safety holds merely by elapsed time.
|
|
192
|
+
|
|
193
|
+
Use `acc update` to retry a failed download or finish an interrupted integration refresh.
|
|
194
|
+
A download failure keeps the working version. A partial integration refresh blocks
|
|
195
|
+
workspace commands until recovery completes, while hooks let the client continue without
|
|
196
|
+
ACC context. `acc update` names the failed adapter, cause, and known configuration paths;
|
|
197
|
+
fix that problem and rerun it. Help and update recovery remain available. `ACC_NO_UPDATE_CHECK=1` prevents
|
|
198
|
+
new downloads but permits manual activation of an already verified pending update.
|
|
199
|
+
|
|
200
|
+
To stop automatic downloads, use `acc update --auto off`. To stay on the current release,
|
|
201
|
+
use `acc update --pin <version>`. Neither setting converts workspace data for an older
|
|
202
|
+
runtime. See the [upgrade guide](UPGRADING.md).
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Upgrading to 0.4.1
|
|
2
|
+
|
|
3
|
+
## From 0.4.0
|
|
4
|
+
|
|
5
|
+
This patch keeps the existing workspace data format. It fixes Grok CLI ownership,
|
|
6
|
+
relocated Grok profiles, automatic-update preferences after reinstall, and the warning
|
|
7
|
+
when a client starts in a directory containing ACC's own state.
|
|
8
|
+
|
|
9
|
+
Close the participating clients and persistent ACC MCP processes, then run:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
acc update
|
|
13
|
+
acc version
|
|
14
|
+
acc doctor
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
After publication, `acc version` should report 0.4.1. A managed update refreshes the
|
|
18
|
+
installed integrations and skills. Restart the clients and complete any hook/trust
|
|
19
|
+
review they request. Existing managed installations activate the selected runtime
|
|
20
|
+
through `acc update`; use the npm install steps below for pre-0.4 or unmanaged
|
|
21
|
+
installations. When pinned to 0.4.0, select 0.4.1 or clear the pin first.
|
|
22
|
+
|
|
23
|
+
In Grok, the refreshed skill runs public status through the terminal before its first
|
|
24
|
+
owned command. The hook reminder after that result supplies the session's own CLI
|
|
25
|
+
arguments. Grok still reads peer messages explicitly through inbox; this patch does not
|
|
26
|
+
add external wake or certify guards. Start clients in a project directory, rather than
|
|
27
|
+
in a home directory containing ACC state.
|
|
28
|
+
|
|
29
|
+
## From 0.3.1
|
|
30
|
+
|
|
31
|
+
Upgrade all ACC installations participating in a workspace together, then restart their
|
|
32
|
+
agent clients. The new runtime reads existing 0.3.1 messages, receipts, decisions, intent,
|
|
33
|
+
and claims. Installing it does not migrate or clear that history.
|
|
34
|
+
|
|
35
|
+
Mixed running versions are unsupported. Once a new session records an explicit decision
|
|
36
|
+
replacement or withdrawal, the published 0.3.1 reader rejects its `decisionChange` field.
|
|
37
|
+
Its doctor can label the valid new record as corrupt. Upgrading the remaining reader
|
|
38
|
+
restores access; deleting or editing the record is not a remedy.
|
|
39
|
+
|
|
40
|
+
## Update the runtime and client integrations
|
|
41
|
+
|
|
42
|
+
1. Finish or pause ongoing work and close the participating clients, including persistent
|
|
43
|
+
ACC MCP processes. A running process can retain the old code after npm replaces its files.
|
|
44
|
+
If rollback matters, take a copy of the complete ACC data directory and client settings
|
|
45
|
+
while those processes are stopped. Keep the copy outside the repository; see
|
|
46
|
+
[runtime locations](CONFIGURATION.md#override-local-paths-and-identity).
|
|
47
|
+
2. Install the released package, then refresh the client integrations:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm install --global agents-can-communicate@0.4.1
|
|
51
|
+
acc version
|
|
52
|
+
acc install
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Before publication, use the exact candidate `.tgz` supplied for testing instead of the
|
|
56
|
+
registry version. `acc version` must report the intended version. If it does not, fix
|
|
57
|
+
which `acc` your shell resolves before running the installer.
|
|
58
|
+
3. Run `acc doctor` from each project you use. Check the runtime and installed bundle
|
|
59
|
+
diagnostics, and follow any activation instructions from `acc install`. In Codex,
|
|
60
|
+
check `/plugins`, review and enable/trust the current ACC definitions in `/hooks`, then
|
|
61
|
+
restart the session. Doctor cannot establish that the client has activated its hooks.
|
|
62
|
+
In the observed stock Codex 0.153.4 upgrade from 0.3.1 to 0.4, command quoting changed
|
|
63
|
+
all five ACC hook definitions and required a fresh review of the modified hooks. After
|
|
64
|
+
that review, a subsequent restart retained all five active. This is activation evidence
|
|
65
|
+
for that transition, not a promise of trust across arbitrary future upgrades.
|
|
66
|
+
4. Resume the intended conversations and confirm peer presence with `acc status`. An
|
|
67
|
+
unrelated new conversation normally has a new participant id; it does not inherit the
|
|
68
|
+
previous conversation's addressed inbox. Historical decisions and handoffs remain
|
|
69
|
+
available through [history reads](CLI.md#historical-recovery).
|
|
70
|
+
|
|
71
|
+
`npm install` alone updates the package but does not refresh the skills and plugin copies
|
|
72
|
+
inside clients. `acc install` preserves user settings and the recorded delivery policy;
|
|
73
|
+
it does not turn experimental delivery on for a previously opted-out client. Effective
|
|
74
|
+
delivery still depends on the current client's capabilities.
|
|
75
|
+
|
|
76
|
+
## Automatic updates after installation
|
|
77
|
+
|
|
78
|
+
An initial `acc install` turns automatic updates on. Later installs preserve an explicit
|
|
79
|
+
`acc update --auto off` choice. Full uninstall pauses updates and preserves the setting
|
|
80
|
+
for the next install. ACC checks for stable releases in
|
|
81
|
+
an independent background process, normally at most once a day, downloads and verifies a
|
|
82
|
+
separate runtime copy, and refreshes the installed integrations and skills before switching.
|
|
83
|
+
The global npm package provides a launcher; the active runtime lives under ACC's data home.
|
|
84
|
+
|
|
85
|
+
Running ACC processes, including idle MCP servers, hold the current version until
|
|
86
|
+
confirmed process exit. Native bindings hold until observed client SessionEnd cleanup or
|
|
87
|
+
confirmed process death; the vendor daemon can remain running after that lifecycle event.
|
|
88
|
+
Unknown PIDs remain conservative holds until lifecycle cleanup. `acc finish`, presence TTL,
|
|
89
|
+
and delivery off alone do not prove native end. Close the relevant client sessions and
|
|
90
|
+
persistent ACC processes to release holds; ACC does not manage the vendor daemon.
|
|
91
|
+
Hooks never wait for a network download. If integration refresh temporarily prevents
|
|
92
|
+
coordination, a hook lets the client continue; its next genuine user turn can restore a
|
|
93
|
+
missing binding.
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
acc update # download and apply, or report what is keeping it pending
|
|
97
|
+
acc update --check # check without installing or changing update settings
|
|
98
|
+
acc update --auto off # disable background updates
|
|
99
|
+
acc update --auto on # enable them again
|
|
100
|
+
acc update --pin 0.4.1 # stay on this exact stable version
|
|
101
|
+
acc update --pin none # follow stable releases again
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
ACC 0.4.0 lost the previous update setting during a full uninstall. If you already ran
|
|
105
|
+
that version's `uninstall` and want updates enabled after reinstalling, run
|
|
106
|
+
`acc update --auto on` once. A later installer cannot distinguish that old uninstall
|
|
107
|
+
state from an explicit opt-out, so it keeps the recorded `off` value until you change it.
|
|
108
|
+
|
|
109
|
+
`--apply` remains an alias for the plain update command. Pins cannot downgrade an active
|
|
110
|
+
runtime. `ACC_NO_UPDATE_CHECK=1` disables update networking and background scheduling;
|
|
111
|
+
manual recovery of an already downloaded update still works. Downloading needs npm, but
|
|
112
|
+
does not require permission to replace a global installation and never runs package
|
|
113
|
+
lifecycle scripts. `acc doctor` reports the automatic-update policy and pending notice.
|
|
114
|
+
|
|
115
|
+
A failed download or verification keeps the active runtime. An interrupted integration
|
|
116
|
+
refresh keeps workspace admission closed until `acc update` finishes the refresh. It does
|
|
117
|
+
not roll workspace history back. A failed refresh exits with code `4` and reports the adapter
|
|
118
|
+
and configuration problem to fix before retrying; a verified update waiting for live clients
|
|
119
|
+
remains pending. Previous runtime and plugin cache versions are
|
|
120
|
+
retained so existing launch paths survive the change.
|
|
121
|
+
|
|
122
|
+
Client trust is still controlled by the client. Follow any reported activation or hook
|
|
123
|
+
review steps; copied files do not prove the client has activated them. The initial
|
|
124
|
+
published-0.3.1 transition above still requires a coordinated restart: old direct binaries
|
|
125
|
+
and existing embedded core consumers cannot be enrolled retroactively.
|
|
126
|
+
|
|
127
|
+
## Update scripts and MCP consumers
|
|
128
|
+
|
|
129
|
+
Default CLI/MCP inbox reads and `acc://inbox` now return `{items, nextCursor}` summary
|
|
130
|
+
pages. They omit bodies and do not mark messages retrieved. Code that expected a full
|
|
131
|
+
array must list a page, select a message id, then make an exact inbox read to retrieve its
|
|
132
|
+
body. Follow `nextCursor` until it is `null` when inspecting the whole pending inbox.
|
|
133
|
+
Exact inbox reads retain the one-item full-message array and receipt transitions.
|
|
134
|
+
See [CLI inbox](CLI.md#inbox-reply-and-acknowledgement) and [MCP](MCP.md).
|
|
135
|
+
|
|
136
|
+
New decision links remove superseded records from ordinary inbox and automatic attention,
|
|
137
|
+
while retaining their bodies and original receipts in history. A terminal withdrawal
|
|
138
|
+
remains visible. These changes do not acknowledge old obligations on the recipient's
|
|
139
|
+
behalf. Use `acc sync --scope history --type decision --current` to discover the current
|
|
140
|
+
explicit choices, withdrawals, and conflicts.
|
|
141
|
+
|
|
142
|
+
## Recovery and rollback
|
|
143
|
+
|
|
144
|
+
An old reader reporting `message.decisionChange is not a known field`, or old doctor
|
|
145
|
+
reporting an unreadable record immediately after a decision change, needs the new runtime.
|
|
146
|
+
Run the new `acc version`, refresh integrations, restart clients, and use the new
|
|
147
|
+
`acc doctor`. If that doctor still reports a fault, inspect its named paths as a separate
|
|
148
|
+
problem. Do not erase history or use an old repair command to resolve version mismatch.
|
|
149
|
+
|
|
150
|
+
There is no downgrade conversion for new decision records. Reinstalling 0.3.1, including
|
|
151
|
+
using `acc install --downgrade`, does not make them readable by old clients. A rollback
|
|
152
|
+
that restores a pre-upgrade data copy necessarily omits subsequent coordination records;
|
|
153
|
+
retain the newer copy separately. Prefer completing the upgrade so all history remains
|
|
154
|
+
available.
|
package/docs/WHY_ACC.md
CHANGED
|
@@ -35,7 +35,7 @@ retain their own authority and context.
|
|
|
35
35
|
| Mix clients and worktrees | Worktrees of one repository map to one local workspace while each session keeps its checkout identity. Git is optional. |
|
|
36
36
|
| Ask without granting authority | Messages are attributed untrusted data. A request expects a reply but is not an order. |
|
|
37
37
|
| Recover after compaction or restart | Messages and receipts commit before delivery; participant addressing survives when the participant id is stable. |
|
|
38
|
-
| Avoid overlapping edits | Intent warns;
|
|
38
|
+
| Avoid overlapping edits | Intent warns; CLI claims default to advisory. Explicit guarded enforcement also requires every live client's measured guard. |
|
|
39
39
|
| Trust delivery language | Recorded, queued, offered, retrieved, and acknowledged are separate observable facts. |
|
|
40
40
|
| Keep it private and removable | State is local and outside repositories; transcripts are excluded; uninstall preserves user edits. |
|
|
41
41
|
|
|
@@ -52,9 +52,10 @@ coordinate across machines.
|
|
|
52
52
|
|
|
53
53
|
ACC also does not merge model memory, read raw conversations, guarantee agent choices,
|
|
54
54
|
approve tools, operate CI,
|
|
55
|
-
or make guarded claims immune to unrelated local processes.
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
or make guarded claims immune to unrelated local processes. Experimental live delivery is
|
|
56
|
+
available through Claude Code Channel and Codex LocalDaemon on supported versions and
|
|
57
|
+
platforms, behind recipient opt-in and with possible token spend. Neither interrupts a
|
|
58
|
+
turn in progress; messages wait for it to finish. See [Capabilities](CAPABILITIES.md).
|
|
58
59
|
|
|
59
60
|
If the sessions should remain yours and simply stop working in isolation, that is the
|
|
60
61
|
product ACC is designed to be.
|
package/docs/index.md
CHANGED
|
@@ -13,6 +13,8 @@ decides what its task requires.
|
|
|
13
13
|
3. [Capabilities](CAPABILITIES.md) — check what your client and platform can actually do.
|
|
14
14
|
4. [Troubleshooting](TROUBLESHOOTING.md) — diagnose missing peers, queued messages, and
|
|
15
15
|
capability fallback.
|
|
16
|
+
5. [Upgrading ACC](UPGRADING.md) — update from 0.4.0, preserve history, refresh integrations,
|
|
17
|
+
and account for the data-format and inbox-response changes from 0.3.1.
|
|
16
18
|
|
|
17
19
|
## See it in context
|
|
18
20
|
|
|
@@ -48,5 +50,11 @@ decides what its task requires.
|
|
|
48
50
|
- [Design decisions](DESIGN_DECISIONS.md) — architectural decisions and reversals.
|
|
49
51
|
- [Releasing](RELEASING.md) — packed-artifact verification.
|
|
50
52
|
|
|
53
|
+
Dated planning/reference material under
|
|
54
|
+
[`docs/internal/`](https://github.com/automatis-tools/agents-can-communicate/tree/main/docs/internal)
|
|
55
|
+
and [`docs/superpowers/`](https://github.com/automatis-tools/agents-can-communicate/tree/main/docs/superpowers)
|
|
56
|
+
is not current product documentation. Published release-evidence records retain their
|
|
57
|
+
original source/artifact/capture provenance rather than certifying a later build.
|
|
58
|
+
|
|
51
59
|
Runtime state and raw transcripts are not documentation artifacts and never belong in the
|
|
52
60
|
repository.
|