@vibe-commit/capture 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +238 -7
- package/dist/account_not_here.d.ts +15 -0
- package/dist/account_not_here.js +25 -0
- package/dist/account_not_here.js.map +1 -0
- package/dist/agents/claude_code.js +13 -0
- package/dist/agents/claude_code.js.map +1 -1
- package/dist/agents/codex_cli.js +11 -0
- package/dist/agents/codex_cli.js.map +1 -1
- package/dist/agents/cursor.js +7 -1
- package/dist/agents/cursor.js.map +1 -1
- package/dist/agents/registry.d.ts +7 -0
- package/dist/agents/registry.js +9 -0
- package/dist/agents/registry.js.map +1 -1
- package/dist/agents/types.d.ts +32 -0
- package/dist/agents/types.js.map +1 -1
- package/dist/bounded_id.d.ts +29 -0
- package/dist/bounded_id.js +42 -0
- package/dist/bounded_id.js.map +1 -0
- package/dist/codex_folders.d.ts +340 -0
- package/dist/codex_folders.js +1448 -0
- package/dist/codex_folders.js.map +1 -0
- package/dist/commands/auth.d.ts +7 -0
- package/dist/commands/auth.js +21 -0
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/backfill.d.ts +29 -7
- package/dist/commands/backfill.js +387 -109
- package/dist/commands/backfill.js.map +1 -1
- package/dist/commands/browser_credential.d.ts +4 -2
- package/dist/commands/browser_credential.js +5 -2
- package/dist/commands/browser_credential.js.map +1 -1
- package/dist/commands/connect.d.ts +10 -1
- package/dist/commands/connect.js +14 -9
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connect_account.d.ts +135 -0
- package/dist/commands/connect_account.js +321 -0
- package/dist/commands/connect_account.js.map +1 -0
- package/dist/commands/connect_picker.js +204 -29
- package/dist/commands/connect_picker.js.map +1 -1
- package/dist/commands/device_credential.d.ts +3 -1
- package/dist/commands/device_credential.js +1 -0
- package/dist/commands/device_credential.js.map +1 -1
- package/dist/commands/finalize.d.ts +67 -0
- package/dist/commands/finalize.js +450 -114
- package/dist/commands/finalize.js.map +1 -1
- package/dist/commands/finish_mint.d.ts +28 -0
- package/dist/commands/finish_mint.js +16 -4
- package/dist/commands/finish_mint.js.map +1 -1
- package/dist/commands/scan.d.ts +28 -0
- package/dist/commands/scan.js +11 -0
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/status.d.ts +19 -1
- package/dist/commands/status.js +123 -14
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/status_machine.d.ts +12 -3
- package/dist/commands/status_machine.js +111 -13
- package/dist/commands/status_machine.js.map +1 -1
- package/dist/commands/sync_reason.d.ts +17 -0
- package/dist/commands/sync_reason.js +25 -0
- package/dist/commands/sync_reason.js.map +1 -0
- package/dist/consent.d.ts +131 -3
- package/dist/consent.js +248 -14
- package/dist/consent.js.map +1 -1
- package/dist/copy/strings.d.ts +165 -4
- package/dist/copy/strings.js +190 -7
- package/dist/copy/strings.js.map +1 -1
- package/dist/folder_grants.d.ts +44 -0
- package/dist/folder_grants.js +101 -0
- package/dist/folder_grants.js.map +1 -0
- package/dist/git.d.ts +26 -4
- package/dist/git.js +82 -11
- package/dist/git.js.map +1 -1
- package/dist/grants_sync.d.ts +165 -0
- package/dist/grants_sync.js +289 -0
- package/dist/grants_sync.js.map +1 -0
- package/dist/grants_verb.d.ts +70 -0
- package/dist/grants_verb.js +121 -0
- package/dist/grants_verb.js.map +1 -0
- package/dist/hooks/entry.d.ts +30 -50
- package/dist/hooks/entry.js +601 -561
- package/dist/hooks/entry.js.map +1 -1
- package/dist/hooks/fire_lock.d.ts +31 -0
- package/dist/hooks/fire_lock.js +120 -12
- package/dist/hooks/fire_lock.js.map +1 -1
- package/dist/hooks/session_grants.d.ts +59 -0
- package/dist/hooks/session_grants.js +91 -0
- package/dist/hooks/session_grants.js.map +1 -0
- package/dist/hooks/session_start.d.ts +28 -7
- package/dist/hooks/session_start.js +55 -11
- package/dist/hooks/session_start.js.map +1 -1
- package/dist/index.js +22 -5
- package/dist/index.js.map +1 -1
- package/dist/machine_state.d.ts +44 -1
- package/dist/machine_state.js +75 -12
- package/dist/machine_state.js.map +1 -1
- package/dist/oauth/discovery.js +2 -1
- package/dist/oauth/discovery.js.map +1 -1
- package/dist/oauth/pkce.js +2 -1
- package/dist/oauth/pkce.js.map +1 -1
- package/dist/oauth/retire.d.ts +10 -0
- package/dist/oauth/retire.js +13 -0
- package/dist/oauth/retire.js.map +1 -1
- package/dist/paths.d.ts +54 -1
- package/dist/paths.js +88 -12
- package/dist/paths.js.map +1 -1
- package/dist/pending_revoke.d.ts +117 -0
- package/dist/pending_revoke.js +233 -0
- package/dist/pending_revoke.js.map +1 -0
- package/dist/pending_revoke_file.d.ts +55 -0
- package/dist/pending_revoke_file.js +74 -0
- package/dist/pending_revoke_file.js.map +1 -0
- package/dist/physical_path.d.ts +46 -0
- package/dist/physical_path.js +151 -0
- package/dist/physical_path.js.map +1 -0
- package/dist/picker.d.ts +82 -5
- package/dist/picker.js +183 -10
- package/dist/picker.js.map +1 -1
- package/dist/picker_checklist.d.ts +27 -3
- package/dist/picker_checklist.js +81 -6
- package/dist/picker_checklist.js.map +1 -1
- package/dist/policy.d.ts +24 -1
- package/dist/policy.js +30 -2
- package/dist/policy.js.map +1 -1
- package/dist/post.d.ts +55 -2
- package/dist/post.js +72 -22
- package/dist/post.js.map +1 -1
- package/dist/project.d.ts +89 -0
- package/dist/project.js +123 -0
- package/dist/project.js.map +1 -1
- package/dist/redact.d.ts +77 -2
- package/dist/redact.js +713 -47
- package/dist/redact.js.map +1 -1
- package/dist/session_targets.d.ts +713 -0
- package/dist/session_targets.js +2602 -0
- package/dist/session_targets.js.map +1 -0
- package/dist/spool.d.ts +12 -0
- package/dist/spool.js +29 -1
- package/dist/spool.js.map +1 -1
- package/dist/spool_union.d.ts +51 -0
- package/dist/spool_union.js +57 -0
- package/dist/spool_union.js.map +1 -0
- package/dist/state.d.ts +5 -0
- package/dist/state.js +19 -1
- package/dist/state.js.map +1 -1
- package/dist/system_message.d.ts +25 -2
- package/dist/system_message.js +29 -5
- package/dist/system_message.js.map +1 -1
- package/dist/text_tail.d.ts +8 -0
- package/dist/text_tail.js +19 -0
- package/dist/text_tail.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -25,12 +25,12 @@ the approved direction points at `Vibe-Commit/claude-plugin`, which vendors the
|
|
|
25
25
|
|
|
26
26
|
| Command | What it does |
|
|
27
27
|
|---|---|
|
|
28
|
-
| `vibecommit connect` | Choose the repositories to capture, from any folder, and connect them: whole owners, including repos you clone later, or single repos. It shows what is uploaded and asks before it signs in, adds commit hooks to each clone, and offers to upload sessions still on this machine. A repo with no remote keeps the one-repo flow. `--typed` uses the typed prompt instead of the arrow-key list. On a machine with no credential it signs you in through the browser first. |
|
|
29
|
-
| `vibecommit auth` | Replace this machine's credential: sign in through the browser, or `--paste` one you made in Settings. Run it again whenever `status` or a hook says the credential is no longer accepted. On a terminal it then goes on to `connect`: inside a git repo, or outside one on a machine that captures nothing yet; with `--stdin` or no terminal it only saves the credential. |
|
|
28
|
+
| `vibecommit connect` | Choose the repositories to capture, from any folder, and connect them: whole owners, including repos you clone later, or single repos. It shows what is uploaded and asks before it signs in, adds commit hooks to each clone, and offers to upload sessions still on this machine. A repo with no remote keeps the one-repo flow. `--typed` uses the typed prompt instead of the arrow-key list. On a machine with no credential it signs you in through the browser after you say yes; with a browser to sign in with, `g` instead signs in first to read the repositories your account already grants, then asks before anything is captured. |
|
|
29
|
+
| `vibecommit auth` | Replace this machine's credential: sign in through the browser, or `--paste` one you made in Settings. Run it again whenever `status` or a hook says the credential is no longer accepted. On a terminal it then goes on to `connect`: inside a git repo, or outside one on a machine that captures nothing yet; with `--stdin` or no terminal it only saves the credential. On a terminal, a credential it saves on a machine that has already synced with your account is synced before `auth` returns. |
|
|
30
30
|
| `vibecommit scan [--json]` | List the repositories you have used a coding agent in on this machine, from the agents' folder names and Codex's thread index. It opens no session file, uploads nothing and changes no setting. Exit `4` when none is found; `--json` prints one document, including what it could not list and why. |
|
|
31
31
|
| `vibecommit backfill` | Upload the earlier coding-agent sessions still on this machine, for the repositories you chose. It lists them first and asks (default no); a Claude Code session is sent only after reading one value from its transcript, the folder it started in, to check it belongs to that repository. Sessions arrive without commit links. Not offered: Cursor sessions (Cursor does not record that folder), sessions over 50 MiB, and sessions in a clone with no reflog. It asks again about each repository as it goes, so `vibecommit off` stops the rest of that repository. **Exit codes:** `0` done, declined at the question, or interrupted with Ctrl+C (sessions held for an organization's approval are done too), `1` stopped with the resume fix (the server asked to wait, could not be reached, or refused this machine's credential) or could not run, `2` no terminal, or an argument was given, `3` not connected, `4` nothing to upload. **Resuming:** a stopped or interrupted run loses nothing already sent; run it again and it offers only the sessions not yet uploaded. |
|
|
32
|
-
| `vibecommit status` | Show whether capture is on for this repo, or for this machine from outside a repo, and when it last succeeded. Inside a repo it also says why it is on (`basis`). |
|
|
33
|
-
| `vibecommit off` | Stop capturing for this repo. |
|
|
32
|
+
| `vibecommit status` | Show whether capture is on for this repo, or for this machine from outside a repo, and when it last succeeded. Inside a repo it also says why it is on (`basis`). On a machine with a credential it first syncs with your account (3 s at most), and lists what your account grants that this machine has not named. |
|
|
33
|
+
| `vibecommit off` | Stop capturing for this repo, for every clone of it on this machine. On a machine with a credential it also tells your account, so your other machines running VibeCommit 0.8.0 or later stop capturing it once they sync. |
|
|
34
34
|
| `vibecommit why <file>:<line>` | Show the conversation turns recorded against the commit that last changed this line. |
|
|
35
35
|
| `vibecommit report --since <when>` | Summarise capture coverage over a time window. |
|
|
36
36
|
| `vibecommit finalize --session <id>` \| `--latest` | Close a finished session's last turn so commits made in it can be recorded. |
|
|
@@ -173,14 +173,17 @@ has not approved capture yet now gets its hooks installed too: the "capture is a
|
|
|
173
173
|
printed without them. The ending reports hook setup first, then prints "Connected." and, when the server's reply
|
|
174
174
|
names the recorded session, a link to that session's page (`/app/conversations/<id>`), falling back to the
|
|
175
175
|
captures list; the PATH check and the unconfirmed-credential note follow it. Only `connect` reads that part of the
|
|
176
|
-
server's reply; the hooks never read a successful response body.
|
|
176
|
+
server's reply; the hooks never read a successful response body (from 0.8.0 one hook does: SessionStart's single, bounded `GET` of
|
|
177
|
+
your account's grants).
|
|
177
178
|
|
|
178
179
|
0.6.1 changes no contract. When the server answers an upload with an error, the client now stops reading that
|
|
179
180
|
error's body at 64 KiB even when the server does not declare its length; it used to buffer the whole body before
|
|
180
|
-
checking. The hooks still never read a successful response body.
|
|
181
|
+
checking. The hooks still never read a successful response body (from 0.8.0 one hook does: SessionStart's single, bounded `GET` of
|
|
182
|
+
your account's grants).
|
|
181
183
|
|
|
182
184
|
0.7.0 lets you connect from any folder, adds `scan` and `backfill`, puts a stable code on every error, and changes
|
|
183
|
-
the contracts below. The hooks still never read a successful response body.
|
|
185
|
+
the contracts below. The hooks still never read a successful response body (from 0.8.0 one hook does: SessionStart's
|
|
186
|
+
single, bounded `GET` of your account's grants).
|
|
184
187
|
|
|
185
188
|
*Connecting.* `vibecommit connect` no longer needs a git work tree. It lists the repositories you have used a coding
|
|
186
189
|
agent in (Claude Code, Codex CLI and Cursor) from the agents' folder names and Codex's thread index, without opening
|
|
@@ -249,6 +252,234 @@ issues page, and `repository` is dropped, because this repository is private.
|
|
|
249
252
|
digits, `connect`'s test capture looked in a Claude Code folder that does not exist and skipped the upload; it now
|
|
250
253
|
spells the folder name as Claude Code does.
|
|
251
254
|
|
|
255
|
+
0.8.0 lets your VibeCommit account remember which repositories you capture, so another machine can offer the same
|
|
256
|
+
choices. It changes the contracts below. It needs a server that has the account-grants routes; against one that has not
|
|
257
|
+
(a 404, a timeout, an answer it cannot read), a sync reads as unavailable: changes wait, and a machine that has never
|
|
258
|
+
synced decides capture by its own choices, as under 0.7.0.
|
|
259
|
+
|
|
260
|
+
*Account grants.* Your choices (the owners and repositories in `~/.vibecommit/grants.json`, and the repositories you
|
|
261
|
+
turn off) are sent to your account by a sync (`POST /ingest/v1/grants/sync`, in requests of at most 500 changes, all
|
|
262
|
+
within 3 s in total), which reads back what your account grants. A sync runs at the start of `connect` and `status`, at
|
|
263
|
+
the end of `off`, once more in `connect` after the picker's changes and before "Capture is on", and in a terminal `auth`
|
|
264
|
+
that saves a credential on a machine that has already synced, so that `auth` contacts the server before it returns (a
|
|
265
|
+
`--stdin`, piped or no-terminal `auth` only saves the credential and sends nothing else). Changes a sync could not
|
|
266
|
+
deliver wait in `grants.json` (`pending`) and go out with the next sync, and `status` and `off` say so. On a machine
|
|
267
|
+
that has synced before, a repository whose only basis here is a grant still waiting to be delivered is held: its
|
|
268
|
+
sessions wait on this machine, with nothing dropped, and go once a sync delivers the grant. What your account grants is
|
|
269
|
+
shown, never acted on: a repository your account grants but you have not named on this machine is not captured here
|
|
270
|
+
until you choose it in `connect`. What your account turns off does apply here: a repository turned off on your account,
|
|
271
|
+
or refused as turned off, is not captured on this machine once this machine has learned of it (at a sync, at a read of
|
|
272
|
+
your account, or from the refusal itself). The first sync on a machine also sends the choices it already holds
|
|
273
|
+
(including repositories consented to per clone by 0.6.x or 0.7.0), and says so on a terminal: `Saving this machine's
|
|
274
|
+
repository choices to your VibeCommit account: <names>.` Past three names it shows two and `and N more`, then all of
|
|
275
|
+
them. It waits off a terminal and under `--json`. The consent sentence of the disclosure now ends: "…and is saved to
|
|
276
|
+
your VibeCommit account so your other machines running VibeCommit 0.8.0 or later can offer it." Its other paragraphs are
|
|
277
|
+
unchanged.
|
|
278
|
+
|
|
279
|
+
*Hooks.* The hooks now read one successful response body. SessionStart makes a single `GET /ingest/v1/grants`, only when
|
|
280
|
+
all of these hold: this machine's account state is stale (an upload's answer carried an `X-Grant-Epoch` that differs
|
|
281
|
+
from the recorded one; no recorded state counts as epoch `0`), the last such request was over an hour ago (across all
|
|
282
|
+
clones), the machine has a credential, and the hook has time left. It waits at most 1,000 ms and reads at most 64 KiB;
|
|
283
|
+
if the answer stalls, is cut off, is too large or is not what the contract says, the state stays stale and nothing else
|
|
284
|
+
happens. The request carries the credential and the client version and nothing about the clone: no query, no repository,
|
|
285
|
+
no path. From a clone this machine does not capture it is made only when the cached account state already names an owner
|
|
286
|
+
or a repository. What the GET learns is written only to `~/.vibecommit/grants-account.json` (`account`, `refused`,
|
|
287
|
+
`stale`, `last_get_at`; written whole and atomically; an unreadable one is ignored, never read as "deny everything"),
|
|
288
|
+
never to `grants.json`: an upload's refusal writes `refused`, an upload's epoch header writes `stale`, and the GET
|
|
289
|
+
writes `account` and `last_get_at`, clears `stale`, and leaves `refused` alone. This amends three sentences above: "the
|
|
290
|
+
hooks never read a successful response body" in the 0.6.0 and 0.6.1 paragraphs and "The hooks still never read a
|
|
291
|
+
successful response body." in the 0.7.0 paragraph; each now carries a pointer here. The client reads `X-Grant-Epoch`
|
|
292
|
+
among the headers of every credential-lane upload answer, and nothing in the body of a successful one. When that GET
|
|
293
|
+
finds grants this machine has not named, SessionStart says so once per machine per account epoch, in Claude Code and
|
|
294
|
+
Codex on an npm install: "Your account grants 2 repositories not captured on this machine yet. Run `vibecommit status`."
|
|
295
|
+
(owners and repositories counted separately); Cursor makes no such request. The "installed but not connected" notice
|
|
296
|
+
that the plugin's Stop hook can show now names the connect command of the install channel, and falls back to `Connect
|
|
297
|
+
it: vibecommit.ai/install` when the line would pass 120 characters; on npm it is unchanged.
|
|
298
|
+
|
|
299
|
+
*Refusals.* A server that has seen a machine sync may answer an upload with `403` and the error `repository_not_granted`
|
|
300
|
+
or `repository_excluded`; the client tells them apart by that code alone. `repository_not_granted` is retried later: the
|
|
301
|
+
bytes wait. `repository_excluded` is not retried: the slug is remembered in `grants-account.json`, so this machine stops
|
|
302
|
+
capturing that repository until a sync clears it. A `403` with any other, missing, cut-off or unreadable body is retried
|
|
303
|
+
later, as before. On a machine that has synced, a grant that has not reached your account yet holds that repository's
|
|
304
|
+
uploads back on this machine (they wait; nothing is dropped), unless the clone's own per-clone consent admits it or the
|
|
305
|
+
last synced state already grants it. Under the server's contract (vibecommit-mcp), only a credential that has synced may
|
|
306
|
+
be refused; a machine running only 0.6.x or 0.7.0 never syncs. The refusal follows the credential, not the version. Once
|
|
307
|
+
a 0.8.0 command has synced on a machine, a 0.7.0 plugin hook there that uses the same credential is refused for a
|
|
308
|
+
repository your account doesn't grant yet. It holds what it would have uploaded, and drops the oldest of it once that is
|
|
309
|
+
more than 24 hours old or the total passes 8 MiB. A repository chosen in a 0.8.0 command reaches your account with that
|
|
310
|
+
command's sync or the next one, and what is still held then goes. A repository chosen with a 0.7.0 command after that
|
|
311
|
+
sync is never granted on your account (a sync names it but asks for no grant), so every hook on the machine is refused
|
|
312
|
+
for it, with the same holding and dropping, until you add it at vibecommit.ai/app/settings/repos. The plugin's update to
|
|
313
|
+
0.8.0 ends both cases for new choices.
|
|
314
|
+
|
|
315
|
+
*Connecting.* `vibecommit connect` on a machine with a credential syncs before it builds the picker, and the picker
|
|
316
|
+
gains a group, "on your account", of what your account grants and this machine has not named; choosing one is an
|
|
317
|
+
ordinary addition, with the same disclosure and question. A repository your account has turned off shows as `turn on …
|
|
318
|
+
(turned off on your account)`, and a yes there turns it back on for the account too. A machine that had no credential
|
|
319
|
+
when the picker was shown asks one more question after its own: `Your account also grants … Capture those here too?
|
|
320
|
+
[y/N]` (past three names, two and `and N more`, then all of them); no leaves them granted on your account and not
|
|
321
|
+
captured here, and `status` lists them. If the sync after the picker's changes does not reach your account, a muted line
|
|
322
|
+
under "Capture is on" says so: "Your account hasn't been told yet; running `status` retries." on a machine that had not
|
|
323
|
+
synced before, or when nothing you just chose waits for it, and otherwise "Your account hasn't been told yet. Until it
|
|
324
|
+
is, sessions in the repositories you just chose that it doesn't grant wait on this machine; running `status` retries."
|
|
325
|
+
(the install channel's command). On a terminal, on a machine with no credential, typing `g` instead of choosing signs in
|
|
326
|
+
first, reads the repositories your account grants with one request, and then shows them under the same disclosure and
|
|
327
|
+
asks; it is never offered by `auth` or without a terminal. The credential `g` makes is held in memory until you say yes:
|
|
328
|
+
the moment it is made, a row for it goes into `~/.vibecommit/pending-revoke.json` (mode 0600 in a 0700 folder, atomic,
|
|
329
|
+
never printed; it holds the token, so it is the same exposure as `credentials.json`), and `credentials.json` is written
|
|
330
|
+
only after the grants. Any other ending tries to revoke it, within 3 s, at the server that made it: no, Enter, Ctrl+C, a
|
|
331
|
+
run that grants nothing (including an account that grants nothing yet, if you then choose nothing here), a yes that only
|
|
332
|
+
removes, a failed write, an error, or a yes whose commit is refused because another command revoked the credential, its
|
|
333
|
+
record became unusable, or a credential was saved meanwhile (No, Enter, a run that grants nothing and a yes that only
|
|
334
|
+
removes exit `0`; Ctrl+C, a failed write, an error and a refused commit exit `1`, and a refused commit says which). A
|
|
335
|
+
revoke that gets no answer, or a kill that stops the process first, leaves the row, and the next command tries again. A
|
|
336
|
+
row leaves on a revoke that was answered (revoked, or already not accepted), on a server that cannot revoke it (`g` then
|
|
337
|
+
says where to revoke it in Settings), or 91 days after it was made, is never dropped before that, and the queue refuses
|
|
338
|
+
a ninth row rather than drop one. If the row cannot be written, `g` tries to revoke it at once, says where to revoke it
|
|
339
|
+
in Settings if that gets no answer, and ends with exit `1`. Every verb except `scan`, `--help`, `--version` and a
|
|
340
|
+
`--stdin`, piped or no-terminal `auth` retries waiting rows once at its start, silently, inside one 3 s bound; `scan`
|
|
341
|
+
stays free of network requests, and no hook retries.
|
|
342
|
+
|
|
343
|
+
*`status` and `off`.* Both now contact the server on a machine with a credential. `status` shows `on account` (what your
|
|
344
|
+
account grants that this machine has not named; an owner is written `owner/`) and `pending` (changes not yet sent, or
|
|
345
|
+
`your account didn't accept · report this: github.com/Vibe-Commit/claude-plugin/issues`); machine `status --json` gains
|
|
346
|
+
`account`, `account_not_here`, `pending` and `pending_rejected`, and a repository's `basis` gains the value
|
|
347
|
+
`"account_not_here"` (granted on your account, not on this machine; the exit is still `3`): read `outcome` for on or
|
|
348
|
+
off, not `basis !== null`. `off` turns the repository off here first, as before, and then tells your account: `Turned
|
|
349
|
+
off <slug> for every clone on this machine, and on your other machines running VibeCommit 0.8.0 or later once they
|
|
350
|
+
sync.`, with `N of your machines haven't synced and keep capturing it until they sync on VibeCommit 0.8.0 or later.`
|
|
351
|
+
when your account knows of unsynced machines, or `Stopped here. Your other machines running VibeCommit 0.8.0 or later
|
|
352
|
+
don't know yet; it will retry.` when it could not reach it; a repository your account has already turned off says so and
|
|
353
|
+
is turned off here too. A machine with no credential gets 0.7.0's `off` output, byte for byte, and makes no grants
|
|
354
|
+
request; a waiting revoke row is still retried.
|
|
355
|
+
|
|
356
|
+
*Files.* `grants.json` gains `pending` and `synced_at` and stays written only by the commands, never by a hook; a 0.7.0
|
|
357
|
+
command that rewrites it keeps both. `grants-account.json` is new, and the hooks' file. `pending-revoke.json` is new and
|
|
358
|
+
holds a bearer token while a revoke is waiting.
|
|
359
|
+
### Sessions started in a folder above your repositories
|
|
360
|
+
|
|
361
|
+
Claude Code resets its shell to the folder a session was launched in, so a session started in a parent folder
|
|
362
|
+
(`~/code`, with your repositories inside it) used to be attributed to nothing: the hook looked at the folder the
|
|
363
|
+
turn ended in, found no work tree, and stayed silent. A session is now attributed from two things, the folder the
|
|
364
|
+
turn ended in and the folders its own records name, and its bytes go to every repository **you have chosen** that it
|
|
365
|
+
touched, each under that repository's own name. A repository you have not chosen is never a target, and nothing is
|
|
366
|
+
read on a machine that has chosen nothing.
|
|
367
|
+
|
|
368
|
+
To read those folders the client now scans each Claude Code and Codex transcript (not Cursor's, see below) for two kinds of value, the folder each record ran in and
|
|
369
|
+
the file paths the redaction pass already parses. It keeps only the set of strings it finds, uses them to pick the
|
|
370
|
+
repositories, and sends none of them anywhere on their own.
|
|
371
|
+
|
|
372
|
+
*Folders.* `vibecommit connect` also lists folders you have used an agent in that are not git repositories, under
|
|
373
|
+
"folders outside a repository". Choosing one captures the Claude Code and Codex sessions launched in it whose records name no git
|
|
374
|
+
repository at all, as one repository of its own. Only Claude Code and Codex sessions are offered, counted and captured under a
|
|
375
|
+
folder: Cursor sessions are not (Cursor records no folder), and a folder that holds only those is not listed. A Codex session whose
|
|
376
|
+
records' folders could not all be told is never captured under a folder. It is **private to you**: no other member of your organization can read it unless
|
|
377
|
+
you share it, and if another member's machine uploads a folder at the same path, that upload is refused. A folder's
|
|
378
|
+
sessions are decided only once the session has ended (or `finalize` or `backfill` has read
|
|
379
|
+
every line), never mid-session. A folder never captures anything inside a git work tree nested under it: that belongs
|
|
380
|
+
to the repository's own choice. Saying No to a folder, or `-N` in the typed prompt, records it as not captured; the
|
|
381
|
+
picker offers it again with the hint for turning it on. Folder choices live in `~/.vibecommit/folders.json`, keyed by
|
|
382
|
+
the folder's real path, written only by commands (never by a hook) and never sent to your account. Older versions
|
|
383
|
+
ignore the file.
|
|
384
|
+
|
|
385
|
+
*What `status` shows.* The machine screen counts the repositories and folders that are on, and the count is the list
|
|
386
|
+
it prints: a clone with no remote, or whose folder is gone, is a row with the reason. A repository or folder the
|
|
387
|
+
client has seen sessions touch but you have neither chosen nor declined is listed under "not chosen" with the
|
|
388
|
+
`vibecommit connect` hint; hooks never say it. `status --json` adds `folders` and `undecided` only when they are not
|
|
389
|
+
empty. A folder the server refuses, because a folder at the same path was uploaded first from another member's machine, is
|
|
390
|
+
listed under `refused` in `status` (`refused_folders` in `--json`, only when there is one) until you turn that folder
|
|
391
|
+
off or the session record is forgotten after 30 days, and its sessions are skipped; every other repository keeps
|
|
392
|
+
sending.
|
|
393
|
+
|
|
394
|
+
*Backfill.* `vibecommit backfill` now offers the earlier sessions that were run from a folder outside a repository,
|
|
395
|
+
and reads each one only after you say yes, to find the repositories you chose that it touched (and the folder, if you
|
|
396
|
+
chose one). A session that touched none of them is skipped.
|
|
397
|
+
|
|
398
|
+
*What is withheld from every copy of a session, and what is not.* A file the agent reads, writes or edits outside the repository you
|
|
399
|
+
chose has its content replaced by a mark of the same length (a value too short for a mark is replaced by asterisks) in every record
|
|
400
|
+
that carries it: the structured copy, the text the agent was shown for that tool call, and the copy of the tool call's input that
|
|
401
|
+
Claude Code keeps on the record. When the result names no file itself (an image the agent read), the client keeps the file paths of
|
|
402
|
+
the tool calls that are still waiting for their results in its local session record, never sends them, and removes them once every
|
|
403
|
+
copy of the session is past the result; the result is withheld from the copy of any repository the file is outside of, and from every
|
|
404
|
+
copy when the client cannot tell which call it answers. These records are withheld from every copy whatever they say: the summary
|
|
405
|
+
Claude Code writes when it compacts a conversation, because it can quote any file the session read; the session's last prompt, its
|
|
406
|
+
queued prompts and its request records (`last-prompt`, `queue-operation`, `api-request`, `api-request-blob`, `api-request-shape`),
|
|
407
|
+
which repeat text from the conversation; the file-history records (`file-history-snapshot`, `file-history-delta`), whose file names
|
|
408
|
+
stay and whose other values do not; and an invoked skill that names no file. What is not withheld is the output of a command or tool
|
|
409
|
+
that names no file: a shell command's output, a hook's output, the result of a search (Grep or Glob) over a folder, or over a single file, a fetched page, or
|
|
410
|
+
an MCP tool's result; and the text of a command that ran inside the repository even when it writes a file outside it (`cat > /elsewhere/notes <<EOF`):
|
|
411
|
+
what the command carries is sent as written, because the client judges the paths a call names, not the shell text it runs. If the agent prints an outside file with `cat`, or searches a folder or file outside the repository, what comes back is
|
|
412
|
+
sent as written. Codex is the same: a command whose working folder is outside the repository has its own text withheld (one that ran inside the repository and writes an outside file keeps its text, as above), and a patch or an image that names a file outside the repository is withheld together with its output (the client matches an output to its call by the call's id; one outside file withholds the whole patch, and a script whose working folder is written outside the repository has its text withheld too). The output of a command that names only a folder, not a file, is sent as written. The instruction text Codex injects into a session is withheld from every
|
|
413
|
+
copy, whatever folder it came from: the world-state records (which carry your global `AGENTS.md` and your skills), the copies of
|
|
414
|
+
user and developer messages that Codex sends the model, the developer instructions, a review's instructions and the base
|
|
415
|
+
instructions. Your own prompts, the agent's messages, its tool calls and their output are kept; so is the agent's own message when
|
|
416
|
+
it quotes one of those files.
|
|
417
|
+
|
|
418
|
+
*What a repository's copy of a multi-repository session still contains.* When one session touched repositories A and
|
|
419
|
+
B, each repository receives its own copy of a Claude Code session, and records that ran inside the other repository's work tree are withheld from it:
|
|
420
|
+
every text value in them is replaced by a mark of the same length (a value too short for a mark is replaced by asterisks),
|
|
421
|
+
and a line that cannot be re-serialised exactly as written is withheld whole. The same applies to any line, in any session, that the
|
|
422
|
+
file-path rule would have withheld a value from (an out-of-tree file's content) but that cannot be re-serialised exactly: it is withheld
|
|
423
|
+
whole instead of being sent as written. Records that carry no folder of their own are withheld from such a copy too, except session
|
|
424
|
+
metadata that holds no text (the mode, the permission mode, a bridge session, the cost counters, the tools used, a fork reference): the
|
|
425
|
+
session's title, the agent's name, a pull-request link, a result and any kind of record Claude Code adds later are withheld, and so are
|
|
426
|
+
the summaries of earlier turns that do carry a folder (the idle-return summary and the prompt snapshot) and any attachment or system
|
|
427
|
+
message of a kind this release has not measured. A session counts as multi-repository from the moment the client has seen it name a work
|
|
428
|
+
tree other than the repository's, or cannot tell, and stays so; what was sent in a copy before that moment was sent as written. A
|
|
429
|
+
withheld title is sent as a mark; nothing reads or shows it. A copy of a repository is sent to the end of the transcript by each hook, and for the part of a
|
|
430
|
+
transcript the client has not scanned yet it learns two things as it goes, in order: which files a tool call named (so a result is judged by its
|
|
431
|
+
call, even when both are new) and whether a second work tree has been named (the first record that names a file or a folder inside
|
|
432
|
+
another work tree makes the rest of that send multi-repository; a path inside no work tree, such as your global instructions file, does
|
|
433
|
+
not). The same applies to a copy sent from the start of a transcript whose earlier tool calls the client has already cleared (a repository you
|
|
434
|
+
granted after the others were sent): it learns which files each call named from its own bytes, so its results are judged exactly. A copy of a folder is sent only up to what the client has scanned, so the bytes behind the scan wait for the next hook. Three things remain, by design:
|
|
435
|
+
|
|
436
|
+
- Records that ran from the launch folder, which is not inside either repository, are kept in every copy. That is
|
|
437
|
+
your prompts and the agent's prose from the parent folder, including anything in them about the other repository.
|
|
438
|
+
- The record's own folder path (`cwd`) stays readable in a record that was otherwise set aside, so a copy can show
|
|
439
|
+
the path of the other repository.
|
|
440
|
+
- A key inside a tool's input or result that looks like a field name (a package or customer name written like `acme_merger`)
|
|
441
|
+
cannot be told from a field name, so it stays as a key in the other repository's copy while its text values are withheld. A key
|
|
442
|
+
that is a path, a file name or a name with a space or a hyphen makes the whole line be withheld instead.
|
|
443
|
+
|
|
444
|
+
*Codex.* Codex records a folder only on its session and turn headers, on a finished command and on a thread-settings change, not on a prompt or the
|
|
445
|
+
agent's prose, so the client tells the folder every other record ran in:
|
|
446
|
+
|
|
447
|
+
- a record that carries its own folder takes it;
|
|
448
|
+
- a command takes its working folder (the folder the turn was running in, when it has none) and the files of any patch it carries; `apply_patch` takes the
|
|
449
|
+
files it changes, and `view_image` the folder of its file;
|
|
450
|
+
- an `exec` script takes the working folders written in it as plain string literals, the folder the turn was running in, and the folders of the processes it
|
|
451
|
+
polls by a numeric id written in it;
|
|
452
|
+
- `write_stdin` and `wait` take the folders of the process or script they poll. The client learns which process or script is which only from the line an
|
|
453
|
+
output starts with (`Process running with session ID n`, `Script running with cell ID n`) and from a `session_id` a script's output prints, never from text
|
|
454
|
+
further down an output, and an id it never saw announced is unknown. An id counts only from the line that announced it onward: a poll that comes before
|
|
455
|
+
the line announcing its id is unknown, however the id is announced later;
|
|
456
|
+
- an output takes the folders of its command, matched by the call's id;
|
|
457
|
+
- any other tool (an MCP tool, a tool Codex adds later), any kind of record the client has not measured (including `compacted`), a script whose working folder
|
|
458
|
+
or process id is not a plain literal, a script that holds a patch, and a script that names more than 4,096 places (its working folders, the turn's folder, and the folders and files of the processes it polls, together) are unknown;
|
|
459
|
+
- every other record (a prompt, the agent's prose, a token count) takes the folder the turn was running in, until a session or turn header whose folder
|
|
460
|
+
cannot be read, or a line too long to be read at all: from there the turn's folder is unknown, and so are the records that rely on it, until the next header
|
|
461
|
+
that can be read. A folder that exists but cannot be resolved (a link that no longer points anywhere) is unknown too, and a session that names one is
|
|
462
|
+
treated as having touched more than one repository.
|
|
463
|
+
|
|
464
|
+
A repository's copy then carries the records that ran in it and not the ones that ran in another repository you chose, as for Claude Code, and a
|
|
465
|
+
patch or script that spans two repositories is withheld from both copies. A record whose folder is unknown is kept in a copy of a session that has touched one
|
|
466
|
+
repository and withheld from the copies of one that has touched several. A record whose folder is unknown still names what it names: the folders and files that can be read from it are used to find the repositories a session touched, and each file is judged for the copy like any other. A file that a patch names, or `view_image` shows, outside the copy's repository (for a
|
|
467
|
+
folder, outside the folder) is withheld with its output from every copy, as for Claude Code; a file that was deleted since is judged by the nearest folder
|
|
468
|
+
that still exists, except behind a link that no longer resolves, which counts as outside. A review's findings name files too, and each is judged the same way, whether or not the record also carries a folder of its own or its folder is unknown;
|
|
469
|
+
a review that names more files than the client will walk (or nests them too deep) is withheld from every copy, and so is a command, patch or script that names a path the client cannot resolve, a call whose arguments cannot be read, a call (a script, a poll, a plan update, or a record of a kind the client has not measured) that holds a patch anywhere the client does not read for patches, and the output of a call the client no longer holds when that call may have named a file (it was dropped to stay within the bound, its entry was removed once every copy had passed it, or it came before a line too long to be read). A script that polls a process by an id it cannot name carries the files of every process the session knows at that point. A call that reuses the id of an earlier call of the same session is withheld from every copy, and so is every later output of that id; the earlier call may be withheld too. A call id reused after its earlier call has left the local record (more than 4,096 removed calls earlier, or sooner once the session reaches its 6 MiB limit) is judged as a new call, and a late duplicate output of the earlier call is then placed by the new one. A command or script whose working folder is not a plain value (including an explicit empty `null`) counts the session as having touched more than one repository. A call whose folder is known judges every file it names, up to 4,096 files and up to 1 MiB of path text (a script, up to 4,096 places, folders counted; a call past either limit is unknown and withheld); a call that names more, or whose folder cannot be told, keeps up to 64 of the places it names to look for repositories and, past 64, is withheld from every copy and counts the session as having touched more than one repository. What this does not do: a command that changes folder with `cd` inside itself still counts as the folder it started in; a script that builds the name of the patch tool or a patch at run time (`tools["apply" + "_patch"]`, a heredoc assembled from pieces) is read as the script it is; a process's output
|
|
470
|
+
that the agent reads some other way than `write_stdin` or `wait` is placed by that other call; the prompts, the agent's prose and the commands that name no working folder, of a turn that ran in a folder
|
|
471
|
+
that is no repository (the parent folder) are kept in every copy, as for Claude Code; and the output of a command that names only a folder outside the
|
|
472
|
+
repository is sent as written. The client keeps, in its local session record, the folders the session's turns ran in and, for each command, the folders it ran
|
|
473
|
+
in and the files it named, and for each process and script the folders it ran in; it never sends them, and removes a command's once every copy is past its
|
|
474
|
+
output. That record is bounded whatever a transcript holds: a path over 4,096 bytes (Linux's PATH_MAX, which counts its terminating NUL; macOS's is 1,024, so a macOS path between the two is still resolved as usual) is treated as unreadable and is never stored (for Codex, a folder of that length is not a folder, and a command, patch or script that names such a path is withheld with its output; for Claude Code the call's content, its result and its structured result are withheld, and the long path string itself stays in the copy, as for any file outside the repository), a call id, process id or script id longer than 128 bytes is kept as a short digest, each table of one transcript's record (the calls, the processes, the scripts, the folders the turns ran in) holds at most 1 MiB of path text, and the tables of a session, which holds one set for each transcript (the main one and each subagent's) plus a small envelope per transcript, are held to 6 MiB in all. A session that reaches those limits (none of the sessions measured comes near them) keeps each transcript's newest calls (its 64 newest go last) and its latest folder: past the session's 6 MiB the transcript that holds the most gives up its oldest calls first, and a call the client no longer holds is withheld as above. When a table of processes or scripts has to forget an id, that whole table reads unknown from then on (from that point in the transcript when the table's own limit does it, from the start of the transcript when the session's limit does it), and every poll it answers is withheld from every copy. An id whose folders are cut to keep its table within its 1 MiB of path text, or the session within its 6 MiB, is unknown the same way: every poll it answers is withheld from every copy, and the session counts as having touched more than one repository. A subagent's transcript is read on its own and inherits nothing from the main one.
|
|
475
|
+
|
|
476
|
+
*Cursor.* Keeping one repository's copy free of another's needs to know, for every record that carries text, which folder it ran in.
|
|
477
|
+
Cursor records no folder at all. So nothing changes for it: a session is captured only for the repository its turns end in, as in 0.7.0
|
|
478
|
+
and 0.8.0. Each repository receives the session from where its own copy last stopped, or from the start, up to the turn that ended in
|
|
479
|
+
it, so turns that ran in other folders can appear in its copy. A session run from a parent folder is not captured, even when its tool
|
|
480
|
+
calls name files inside a repository you chose, and it never gets a folder target. The client does not read its transcripts to look for
|
|
481
|
+
repositories. Backfill does not offer or upload Cursor sessions.
|
|
482
|
+
|
|
252
483
|
## Status
|
|
253
484
|
|
|
254
485
|
**Implemented**, not a scaffold. All six commands above have real bodies — OAuth sign-in
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the account grants that THIS machine has not named — the pure rule behind `status`'s "on account" row and SessionStart's notice 10.
|
|
3
|
+
*
|
|
4
|
+
* Its own module so the hook path can use the rule without importing `grants_verb.ts`, which is a verb's (it syncs, prints and reaches the
|
|
5
|
+
* network); the hook-path import-graph cell in `test/connect-g-lifecycle.test.ts` keeps hooks off that module.
|
|
6
|
+
*
|
|
7
|
+
* ⛔ "Not on this machine" is what THIS machine has not named: not in its owners, its repos, or a per-clone consent, and not turned off here
|
|
8
|
+
* or on the account. A repo under an owner the account grants is covered by that owner's row, not listed again. An owner or repo the user
|
|
9
|
+
* turned off is a choice, not a gap.
|
|
10
|
+
*/
|
|
11
|
+
import { type AccountGrants, type Grants } from "./consent.js";
|
|
12
|
+
/** `owner/` for an owner, the slug for a repo — the way every account row and the first-sync line name them. */
|
|
13
|
+
export declare const ownerName: (owner: string) => string;
|
|
14
|
+
/** The account's owners (as `owner/`) and then its repos this machine has not named. Pure. */
|
|
15
|
+
export declare function accountNotHere(grants: Grants, account: AccountGrants, perCloneSlugs: readonly string[]): string[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the account grants that THIS machine has not named — the pure rule behind `status`'s "on account" row and SessionStart's notice 10.
|
|
3
|
+
*
|
|
4
|
+
* Its own module so the hook path can use the rule without importing `grants_verb.ts`, which is a verb's (it syncs, prints and reaches the
|
|
5
|
+
* network); the hook-path import-graph cell in `test/connect-g-lifecycle.test.ts` keeps hooks off that module.
|
|
6
|
+
*
|
|
7
|
+
* ⛔ "Not on this machine" is what THIS machine has not named: not in its owners, its repos, or a per-clone consent, and not turned off here
|
|
8
|
+
* or on the account. A repo under an owner the account grants is covered by that owner's row, not listed again. An owner or repo the user
|
|
9
|
+
* turned off is a choice, not a gap.
|
|
10
|
+
*/
|
|
11
|
+
import { normalizeSlug, ownerOfSlug } from "./consent.js";
|
|
12
|
+
/** `owner/` for an owner, the slug for a repo — the way every account row and the first-sync line name them. */
|
|
13
|
+
export const ownerName = (owner) => `${owner}/`;
|
|
14
|
+
/** The account's owners (as `owner/`) and then its repos this machine has not named. Pure. */
|
|
15
|
+
export function accountNotHere(grants, account, perCloneSlugs) {
|
|
16
|
+
const off = new Set([...grants.excluded, ...account.excluded]);
|
|
17
|
+
const named = new Set([...grants.repos, ...perCloneSlugs.map(normalizeSlug)]);
|
|
18
|
+
const owners = account.owners.filter((o) => !grants.owners.includes(o));
|
|
19
|
+
const repos = account.repos.filter((r) => !off.has(r) &&
|
|
20
|
+
!named.has(r) &&
|
|
21
|
+
!grants.owners.includes(ownerOfSlug(r)) &&
|
|
22
|
+
!account.owners.includes(ownerOfSlug(r)));
|
|
23
|
+
return [...owners.map(ownerName), ...repos];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=account_not_here.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account_not_here.js","sourceRoot":"","sources":["../src/account_not_here.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAmC,MAAM,cAAc,CAAC;AAE3F,gHAAgH;AAChH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC;AAEhE,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,OAAsB,EAAE,aAAgC;IACrG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACX,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACb,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAC3C,CAAC;IACF,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -299,6 +299,19 @@ export const CLAUDE_CODE = {
|
|
|
299
299
|
// over. `CR-124`, D76.
|
|
300
300
|
delegatedTranscripts: "discover",
|
|
301
301
|
redaction: "claude-code",
|
|
302
|
+
// Every Claude Code record carries the shell's current `cwd` at its top level (measured, 2026-10-31).
|
|
303
|
+
cwdKeys: [{ path: ["cwd"] }],
|
|
304
|
+
// Every CONVERSATION record carries `cwd`; 27.9% of all records carry none (measured 2026-11-01, local corpus, counts only): session metadata
|
|
305
|
+
// (last-prompt, queue-operation, api-request blobs, titles, file-history ...), several of them content-bearing, and every one of them repeated
|
|
306
|
+
// text found only in other folders' records. So a record with no folder is decided by its TYPE, never by an inherited folder (C27, C38):
|
|
307
|
+
// - last-prompt, queue-operation, api-request-blob, api-request, api-request-shape, file-history-snapshot, file-history-delta: content withheld
|
|
308
|
+
// in EVERY copy (their path-shaped keys stay);
|
|
309
|
+
// - mode, permission-mode, atis-latch, bridge-session, cost-state, tools-used, fork-context-ref, launched: kept in a multi-repo copy within their
|
|
310
|
+
// measured keys;
|
|
311
|
+
// - everything else (titles, agent-name, pr-link, a type Claude Code adds next year): withheld from a multi-repo copy, kept in a single-repo one.
|
|
312
|
+
// "Multi-repo" is `Target.multi`: the session named a work tree other than the target's (see `resolveTargets`). A record that carries a folder is
|
|
313
|
+
// decided by that folder (R17). What stays is stated in the README.
|
|
314
|
+
isolatesContentRecords: true,
|
|
302
315
|
sessionIdFromEnv: claudeSessionIdFromEnv,
|
|
303
316
|
sessionSource: claudeSessionSource,
|
|
304
317
|
locateCurrentTranscript,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude_code.js","sourceRoot":"","sources":["../../src/agents/claude_code.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAShF;;;;;;;;;GASG;AACH,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAEtC;;;;;;;;;;;;;GAaG;AACH,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAC9C,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,kCAAkC,GAAG,yBAAyB,CAAC,CAAC,gCAAgC;AAEtG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAS,uBAAuB,CAC9B,IAAY,EACZ,GAAsB,EACtB,UAAkB;IAElB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC3C,+EAA+E;IAC/E,+EAA+E;IAC/E,mDAAmD;IACnD,IAAI,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE7B,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,GAA4E,IAAI,CAAC;IACzF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACpC,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,SAAS;QAChD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/C,IAAI,GAAG;gBACL,IAAI;gBACJ,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;gBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,OAAO;aACpB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAChG,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,sBAAsB,CAAC,GAAsB;IACpD,MAAM,GAAG,GAAG,GAAG,CAAC,sBAAsB,CAAC;IACvC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,GAAsB;IAChE,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,MAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAC3C,CAAC,CAAE,MAAiC,CAAC,QAAQ;YAC7C,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,GAAsB;IAC/D,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAoB,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBAChF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3D,IAAI,OAAO,KAAK,IAAI;oBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACtD,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO;QACP,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,EAAE,EAAE,aAAa;IACjB,SAAS,EAAE,QAAQ;IACnB,cAAc;IACd,8EAA8E;IAC9E,8EAA8E;IAC9E,+EAA+E;IAC/E,iDAAiD;IACjD,UAAU,EAAE,gBAAgB;IAC5B,2EAA2E;IAC3E,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,2EAA2E;IAC3E,UAAU,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,YAAY;QACxB,YAAY,EAAE,cAAc;KAC7B;IACD,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,0EAA0E;IAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACzD,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,mBAAmB,EAAE,yBAAyB;YAC9C,cAAc,EAAE,uBAAuB;SACxC;QACD,UAAU,EAAE;YACV,mBAAmB,EAAE,+BAA+B;YACpD,cAAc,EAAE,uBAAuB;SACxC;QACD,UAAU,EAAE;YACV,mBAAmB,EAAE,gCAAgC;YACrD,cAAc,EAAE,uBAAuB;SACxC;QACD,6EAA6E;QAC7E,2EAA2E;QAC3E,YAAY,EAAE;YACZ,mBAAmB,EAAE,kCAAkC;YACvD,cAAc,EAAE,uBAAuB;SACxC;KACF;IACD,4EAA4E;IAC5E,uBAAuB;IACvB,oBAAoB,EAAE,UAAU;IAChC,SAAS,EAAE,aAAa;IACxB,gBAAgB,EAAE,sBAAsB;IACxC,aAAa,EAAE,mBAAmB;IAClC,uBAAuB;CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"claude_code.js","sourceRoot":"","sources":["../../src/agents/claude_code.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/codex_cli.js
CHANGED
|
@@ -310,6 +310,17 @@ export const CODEX_CLI = {
|
|
|
310
310
|
// Claude glob cannot run against a layout that has no `subagents/`.
|
|
311
311
|
delegatedTranscripts: "announce",
|
|
312
312
|
redaction: "codex-cli",
|
|
313
|
+
// A Codex rollout names a folder on few record types (measured on 369 rollouts, 18,798 records): `session_meta` and `turn_context` carry
|
|
314
|
+
// `payload.cwd`, and a finished command item (`event_msg` / `item_completed` / `CommandExecution`) carries `item.cwd` as a `file://` URL. The folder
|
|
315
|
+
// of every other record is its EFFECTIVE folder (`codex_folders.ts`: a call's `workdir` or patched files, an output's call, else the turn folder).
|
|
316
|
+
cwdKeys: [
|
|
317
|
+
{ path: ["payload", "cwd"], types: ["session_meta", "turn_context"] },
|
|
318
|
+
{ path: ["payload", "item", "cwd"], types: ["event_msg"] },
|
|
319
|
+
],
|
|
320
|
+
// ⛔ TRUE (part (b)): every Codex record has an effective folder, told from the checkpoint the resolver writes (the turn-folder timeline and the call
|
|
321
|
+
// table) and, past the scan cursor, from the delivery's own bytes. A record that ran in another work tree is withheld from this repo's copy; one whose
|
|
322
|
+
// folder cannot be told is withheld in a multi-repo copy and kept in a single-repo one (a single-repo Codex session stays as 0.8.0 sends it).
|
|
323
|
+
isolatesContentRecords: true,
|
|
313
324
|
// ⛔ **UNMEASURED.** `null` here does NOT mean "Codex CLI has no session id in
|
|
314
325
|
// its environment" — it means nobody has run the measurement `M1` ran for
|
|
315
326
|
// Claude Code (agent commit, human commit, worktree commit) against Codex, so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex_cli.js","sourceRoot":"","sources":["../../src/agents/codex_cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex_cli.js","sourceRoot":"","sources":["../../src/agents/codex_cli.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/cursor.js
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import { join } from "node:path";
|
|
21
21
|
import { cursorHooksPath, cursorTranscriptRoot, isCursorTranscript } from "../paths.js";
|
|
22
22
|
import { readEntries, sessionFile, subdirectories } from "./session_listing.js";
|
|
23
|
+
import { stripEnds } from "../text_tail.js";
|
|
23
24
|
/**
|
|
24
25
|
* ⭐ **MEASURED. `D5`'s SECOND HALF IS ANSWERED (`TODOS[130]`), AND THE ANSWER IS
|
|
25
26
|
* THAT CURSOR IMPOSES NO NUMBER OF ITS OWN.**
|
|
@@ -105,7 +106,7 @@ export const CURSOR_NAME_LIMIT = 61;
|
|
|
105
106
|
* candidate rather than being assumed away.
|
|
106
107
|
*/
|
|
107
108
|
export function encodeProjectPath(path) {
|
|
108
|
-
return path.replace(/[^A-Za-z0-9]+/g, "-")
|
|
109
|
+
return stripEnds(path.replace(/[^A-Za-z0-9]+/g, "-"), "-");
|
|
109
110
|
}
|
|
110
111
|
/**
|
|
111
112
|
* Is this folder name one Cursor cut and hashed? See `CURSOR_NAME_LIMIT`.
|
|
@@ -248,6 +249,11 @@ export const CURSOR = {
|
|
|
248
249
|
// a wrong declaration here is no longer a line nobody reaches.
|
|
249
250
|
delegatedTranscripts: "announce",
|
|
250
251
|
redaction: "cursor",
|
|
252
|
+
// Cursor records no folder per record (A7, `commands/backfill.ts`).
|
|
253
|
+
// ⛔ EMPTY ON PURPOSE, and it is a gate (C14): Cursor cannot be isolated per record, so `session_targets`
|
|
254
|
+
// gives it the turn-end repo only and reads no transcript for evidence. Filling this in would switch that gate off.
|
|
255
|
+
cwdKeys: [],
|
|
256
|
+
isolatesContentRecords: false,
|
|
251
257
|
// ⛔ **UNMEASURED.** `null` here does NOT mean "Cursor has no session id in its
|
|
252
258
|
// environment" — it means nobody has run the measurement `M1` ran for Claude
|
|
253
259
|
// Code (agent commit, human commit, worktree commit) against Cursor, so this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/agents/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/agents/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,6 +83,13 @@ export declare function resolveAgentId(argv: readonly string[]): string;
|
|
|
83
83
|
* the id, not the dialect.
|
|
84
84
|
*/
|
|
85
85
|
export declare function dialectFor(agentId: string | undefined): TranscriptDialect;
|
|
86
|
+
/**
|
|
87
|
+
* ⛔ **THE ONE PREDICATE FOR "CAN THIS AGENT'S SESSIONS BE CAPTURED UNDER A FOLDER?" (C34).** A folder target needs the dialect to isolate
|
|
88
|
+
* its content records (`isolatesContentRecords`): the resolver gates on the same registry value (`dialectIsolates`, by transcript path),
|
|
89
|
+
* and everything that OFFERS a folder (the picker, `connect`'s counts and copy, the parent-folder backfill) asks it here, by agent id.
|
|
90
|
+
* Never a constant or a list of names: when Codex's isolation lands and its capability flips, every one of them follows.
|
|
91
|
+
*/
|
|
92
|
+
export declare function agentIsolatesRecords(agentId: AgentId): boolean;
|
|
86
93
|
/**
|
|
87
94
|
* ⛔ **WHICH OF THE THREE EVENTS IS THIS `hook_event_name`? — `CR-195`, D205.**
|
|
88
95
|
*
|
package/dist/agents/registry.js
CHANGED
|
@@ -100,6 +100,15 @@ export function resolveAgentId(argv) {
|
|
|
100
100
|
export function dialectFor(agentId) {
|
|
101
101
|
return DIALECTS.find((dialect) => dialect.id === agentId) ?? CLAUDE_CODE;
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* ⛔ **THE ONE PREDICATE FOR "CAN THIS AGENT'S SESSIONS BE CAPTURED UNDER A FOLDER?" (C34).** A folder target needs the dialect to isolate
|
|
105
|
+
* its content records (`isolatesContentRecords`): the resolver gates on the same registry value (`dialectIsolates`, by transcript path),
|
|
106
|
+
* and everything that OFFERS a folder (the picker, `connect`'s counts and copy, the parent-folder backfill) asks it here, by agent id.
|
|
107
|
+
* Never a constant or a list of names: when Codex's isolation lands and its capability flips, every one of them follows.
|
|
108
|
+
*/
|
|
109
|
+
export function agentIsolatesRecords(agentId) {
|
|
110
|
+
return DIALECTS.find((dialect) => dialect.id === agentId)?.isolatesContentRecords === true;
|
|
111
|
+
}
|
|
103
112
|
/**
|
|
104
113
|
* ⛔ **WHICH OF THE THREE EVENTS IS THIS `hook_event_name`? — `CR-195`, D205.**
|
|
105
114
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -109,6 +109,11 @@ export type SelectedAgentId = AgentId | typeof UNKNOWN_AGENT_ID;
|
|
|
109
109
|
* named after. Typing it as its own union is what stops a later edit passing an
|
|
110
110
|
* agent id here and quietly making the two things one.
|
|
111
111
|
*/
|
|
112
|
+
/** One place a record names its folder: the key path from the top level, and the record `type`s it is valid on (any when absent). */
|
|
113
|
+
export interface CwdKey {
|
|
114
|
+
readonly path: readonly string[];
|
|
115
|
+
readonly types?: readonly string[];
|
|
116
|
+
}
|
|
112
117
|
export type RedactionProfile = "claude-code" | "codex-cli" | "cursor";
|
|
113
118
|
/**
|
|
114
119
|
* How this agent's DELEGATED transcripts are found — announce vs discover.
|
|
@@ -418,6 +423,33 @@ export interface TranscriptDialect {
|
|
|
418
423
|
readonly events: Readonly<Record<HookEventName, EventBudget>>;
|
|
419
424
|
readonly delegatedTranscripts: DelegatedTranscripts;
|
|
420
425
|
readonly redaction: RedactionProfile;
|
|
426
|
+
/**
|
|
427
|
+
* ⛔ **WHERE A RECORD NAMES THE FOLDER IT RAN IN** — the dialect's own half of R2's evidence read (any-folder capture).
|
|
428
|
+
*
|
|
429
|
+
* `session_targets.ts` reads, from new transcript bytes, each record's folder plus the path keys redaction already parses
|
|
430
|
+
* (`rulesForTranscript(...).pathKeys`: ONE list, never a second copy), and keeps only the set of repo roots they map to.
|
|
431
|
+
* This is the folder half: the path of keys from the record's top level to the string, and optionally the record `type`s
|
|
432
|
+
* it is valid for. Claude Code carries a top-level `cwd`; Codex carries `payload.cwd` on `session_meta` and `turn_context`
|
|
433
|
+
* records; Cursor records no folder at all (`[]`, A7: stated, fails closed).
|
|
434
|
+
*
|
|
435
|
+
* ⛔ **REQUIRED, not optional**, `admitsFile`'s device: a dialect added later must ANSWER "does a record name its folder",
|
|
436
|
+
* and the compiler is what asks. `test/agent-registry.test.ts` pins the member.
|
|
437
|
+
*/
|
|
438
|
+
readonly cwdKeys: readonly CwdKey[];
|
|
439
|
+
/**
|
|
440
|
+
* ⛔ **CAN THIS DIALECT'S COPY FOR ONE REPOSITORY BE KEPT FREE OF ANOTHER REPOSITORY'S RECORDS?** (R17 · C24.) Record isolation withholds
|
|
441
|
+
* a record that ran inside a work tree other than the target's, so it is only as good as the dialect's answer to "which folder did
|
|
442
|
+
* THIS record run in" for EVERY record that carries content. Evidence targets (a repo named only by a record's path), folder targets
|
|
443
|
+
* and the transcript read for evidence are therefore allowed only when this is true: without it a session that touched repos A and B
|
|
444
|
+
* would upload B's prompts, outputs and prose inside A's copy.
|
|
445
|
+
*
|
|
446
|
+
* `cwdKeys` being non-empty is NOT this answer: it says some records name a folder, not that every content record does. Claude
|
|
447
|
+
* Code: `true` (each conversation record carries `cwd`; the cwd-less session-metadata records are a documented residual until the
|
|
448
|
+
* stateful isolation of C24 (b) covers them). Codex: `false` (only `session_meta` and `turn_context` carry a folder; prompts,
|
|
449
|
+
* outputs and prose do not). Cursor: `false` (no folder at all). A dialect that is `false` gets the turn-end repo only, exactly as in
|
|
450
|
+
* 0.7.0 and 0.8.0, and never a folder target. REQUIRED, `cwdKeys`' device; `test/agent-registry.test.ts` pins the member.
|
|
451
|
+
*/
|
|
452
|
+
readonly isolatesContentRecords: boolean;
|
|
421
453
|
/**
|
|
422
454
|
* ⛔ **WHICH SESSION IS COMMITTING — read from the environment, not inferred
|
|
423
455
|
* from HEAD (`D3`, `D183`).**
|
package/dist/agents/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AA4BH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AA4BH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAmE1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,CAAU,CAAC"}
|