@vibe-commit/capture 0.6.1 → 0.7.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.
Files changed (143) hide show
  1. package/README.md +80 -5
  2. package/dist/agent_hooks.d.ts +8 -0
  3. package/dist/agent_hooks.js +31 -1
  4. package/dist/agent_hooks.js.map +1 -1
  5. package/dist/agents/claude_code.d.ts +34 -0
  6. package/dist/agents/claude_code.js +141 -8
  7. package/dist/agents/claude_code.js.map +1 -1
  8. package/dist/agents/codex_cli.d.ts +13 -0
  9. package/dist/agents/codex_cli.js +241 -2
  10. package/dist/agents/codex_cli.js.map +1 -1
  11. package/dist/agents/cursor.d.ts +34 -0
  12. package/dist/agents/cursor.js +115 -1
  13. package/dist/agents/cursor.js.map +1 -1
  14. package/dist/agents/session_listing.d.ts +29 -0
  15. package/dist/agents/session_listing.js +49 -0
  16. package/dist/agents/session_listing.js.map +1 -0
  17. package/dist/agents/types.d.ts +118 -8
  18. package/dist/agents/types.js +17 -3
  19. package/dist/agents/types.js.map +1 -1
  20. package/dist/commands/approval_pending.d.ts +9 -0
  21. package/dist/commands/approval_pending.js +23 -0
  22. package/dist/commands/approval_pending.js.map +1 -0
  23. package/dist/commands/auth.js +31 -11
  24. package/dist/commands/auth.js.map +1 -1
  25. package/dist/commands/backfill.d.ts +160 -0
  26. package/dist/commands/backfill.js +748 -0
  27. package/dist/commands/backfill.js.map +1 -0
  28. package/dist/commands/browser_credential.d.ts +2 -0
  29. package/dist/commands/browser_credential.js +31 -14
  30. package/dist/commands/browser_credential.js.map +1 -1
  31. package/dist/commands/connect.d.ts +137 -0
  32. package/dist/commands/connect.js +203 -109
  33. package/dist/commands/connect.js.map +1 -1
  34. package/dist/commands/connect_picker.d.ts +27 -0
  35. package/dist/commands/connect_picker.js +415 -0
  36. package/dist/commands/connect_picker.js.map +1 -0
  37. package/dist/commands/context.d.ts +16 -0
  38. package/dist/commands/context.js +27 -0
  39. package/dist/commands/context.js.map +1 -1
  40. package/dist/commands/credential_problem.d.ts +15 -4
  41. package/dist/commands/credential_problem.js +29 -22
  42. package/dist/commands/credential_problem.js.map +1 -1
  43. package/dist/commands/device_credential.d.ts +2 -0
  44. package/dist/commands/device_credential.js +16 -14
  45. package/dist/commands/device_credential.js.map +1 -1
  46. package/dist/commands/finalize.d.ts +95 -0
  47. package/dist/commands/finalize.js +249 -74
  48. package/dist/commands/finalize.js.map +1 -1
  49. package/dist/commands/finish_mint.d.ts +2 -6
  50. package/dist/commands/finish_mint.js +10 -2
  51. package/dist/commands/finish_mint.js.map +1 -1
  52. package/dist/commands/report.js +38 -30
  53. package/dist/commands/report.js.map +1 -1
  54. package/dist/commands/scan.d.ts +162 -0
  55. package/dist/commands/scan.js +507 -0
  56. package/dist/commands/scan.js.map +1 -0
  57. package/dist/commands/status.js +119 -22
  58. package/dist/commands/status.js.map +1 -1
  59. package/dist/commands/status_hooks.d.ts +14 -0
  60. package/dist/commands/status_hooks.js +81 -0
  61. package/dist/commands/status_hooks.js.map +1 -0
  62. package/dist/commands/status_machine.d.ts +18 -0
  63. package/dist/commands/status_machine.js +149 -0
  64. package/dist/commands/status_machine.js.map +1 -0
  65. package/dist/commands/why.js +44 -31
  66. package/dist/commands/why.js.map +1 -1
  67. package/dist/consent.d.ts +111 -0
  68. package/dist/consent.js +203 -1
  69. package/dist/consent.js.map +1 -1
  70. package/dist/copy/error_codes.d.ts +222 -0
  71. package/dist/copy/error_codes.js +105 -0
  72. package/dist/copy/error_codes.js.map +1 -0
  73. package/dist/copy/index.d.ts +2 -2
  74. package/dist/copy/index.js +2 -2
  75. package/dist/copy/index.js.map +1 -1
  76. package/dist/copy/strings.d.ts +497 -29
  77. package/dist/copy/strings.js +601 -35
  78. package/dist/copy/strings.js.map +1 -1
  79. package/dist/copy/time.d.ts +11 -0
  80. package/dist/copy/time.js +18 -0
  81. package/dist/copy/time.js.map +1 -1
  82. package/dist/credential.d.ts +5 -1
  83. package/dist/credential.js +2 -2
  84. package/dist/credential.js.map +1 -1
  85. package/dist/git.d.ts +43 -0
  86. package/dist/git.js +95 -0
  87. package/dist/git.js.map +1 -1
  88. package/dist/hooks/entry.d.ts +18 -1
  89. package/dist/hooks/entry.js +110 -13
  90. package/dist/hooks/entry.js.map +1 -1
  91. package/dist/hooks/post_commit.js +3 -3
  92. package/dist/hooks/post_commit.js.map +1 -1
  93. package/dist/hooks/post_rewrite.js +6 -4
  94. package/dist/hooks/post_rewrite.js.map +1 -1
  95. package/dist/hooks/session_start.d.ts +93 -0
  96. package/dist/hooks/session_start.js +199 -0
  97. package/dist/hooks/session_start.js.map +1 -0
  98. package/dist/index.d.ts +1 -1
  99. package/dist/index.js +56 -8
  100. package/dist/index.js.map +1 -1
  101. package/dist/install.d.ts +57 -0
  102. package/dist/install.js +54 -20
  103. package/dist/install.js.map +1 -1
  104. package/dist/json.d.ts +32 -9
  105. package/dist/json.js +35 -8
  106. package/dist/json.js.map +1 -1
  107. package/dist/machine_state.d.ts +52 -0
  108. package/dist/machine_state.js +63 -0
  109. package/dist/machine_state.js.map +1 -0
  110. package/dist/oauth/session.d.ts +1 -0
  111. package/dist/org_pending.d.ts +52 -0
  112. package/dist/org_pending.js +109 -0
  113. package/dist/org_pending.js.map +1 -0
  114. package/dist/paths.d.ts +50 -0
  115. package/dist/paths.js +64 -0
  116. package/dist/paths.js.map +1 -1
  117. package/dist/picker.d.ts +180 -0
  118. package/dist/picker.js +477 -0
  119. package/dist/picker.js.map +1 -0
  120. package/dist/picker_checklist.d.ts +125 -0
  121. package/dist/picker_checklist.js +375 -0
  122. package/dist/picker_checklist.js.map +1 -0
  123. package/dist/policy.d.ts +54 -0
  124. package/dist/policy.js +47 -0
  125. package/dist/policy.js.map +1 -1
  126. package/dist/post.d.ts +50 -16
  127. package/dist/post.js +220 -16
  128. package/dist/post.js.map +1 -1
  129. package/dist/state.d.ts +6 -0
  130. package/dist/state.js +38 -1
  131. package/dist/state.js.map +1 -1
  132. package/dist/system_message.d.ts +8 -1
  133. package/dist/system_message.js +19 -1
  134. package/dist/system_message.js.map +1 -1
  135. package/dist/term.d.ts +28 -2
  136. package/dist/term.js +23 -2
  137. package/dist/term.js.map +1 -1
  138. package/dist/verb_help.d.ts +13 -0
  139. package/dist/verb_help.js +40 -0
  140. package/dist/verb_help.js.map +1 -0
  141. package/dist/version.d.ts +1 -1
  142. package/dist/version.js +1 -1
  143. package/package.json +5 -9
@@ -24,29 +24,36 @@
24
24
  * invented here: `CR-112` (W8) owns the five-absence grammar as one set, and
25
25
  * adding a variant now is what that task exists to prevent.
26
26
  */
27
- import { COMMANDS, ERRORS, HELP, OFF, STATUS, URLS, relativeAge } from "../copy/index.js";
28
- import { authCommandFor } from "../install.js";
27
+ import { AGENT_HOOKS, COMMANDS, FINALIZE, HELP, OFF, STATUS, URLS, relativeAge } from "../copy/index.js";
28
+ import { renderVerbHelp } from "../verb_help.js";
29
+ import { authCommandFor, channelCommand } from "../install.js";
29
30
  import { credentialFingerprint } from "../post.js";
30
- import { isProjectAllowed, revokeProject } from "../consent.js";
31
+ import { GrantsUnreadableError, excludeSlug, grantsUnreadable, isCaptureAllowed, isLocalSlug, normalizeSlug, readAllowList, revokeProject, } from "../consent.js";
31
32
  import { endDateText, endingSoon, metaFor } from "../credential_meta.js";
32
33
  import { loadCredential, savedCredentialExists } from "../credential.js";
33
34
  import { EXIT } from "../exit.js";
34
- import { resolveRepoSlug } from "../git.js";
35
+ import { onceRepoSlug, remoteSlugOfCommonDir, resolveRepoSlug } from "../git.js";
35
36
  import { emitJson } from "../json.js";
36
37
  import { readInferredSkipped } from "../inferred_tally.js";
37
38
  import { readPruneTally } from "../pending_prune.js";
38
39
  import { resolveProjectKeys } from "../project.js";
39
40
  import { commitsWaitingForRepo, heldAtEndForRepo, inferredUnacknowledgedForRepo, lastReceiptForRepo, lastSendForRepo, leanHeldForRepo, leanSessionsForRepo, openTailForRepo, stuckForRepo, stoppedForRepo, stuckSpoolLinesForRepo, writtenOffForRepo, } from "../state.js";
40
41
  import { LABEL_GUTTER, WRAP_COLUMNS, glyph, labelled, paint, renderErrorBlock, tildePath, truncatePath, wrap, } from "../term.js";
41
- import { credentialProblem, rejectedCredentialBlock } from "./credential_problem.js";
42
- import { writeLines } from "./context.js";
42
+ import { credentialProblem, credentialProblemBlock, rejectedCredentialBlock } from "./credential_problem.js";
43
+ import { captureBasis } from "../machine_state.js";
44
+ import { machineStatus } from "./status_machine.js";
45
+ import { approvalPendingBlock } from "./approval_pending.js";
46
+ import { readOrgPending } from "../org_pending.js";
47
+ import { writeFailure, writeLines } from "./context.js";
48
+ import { hookStateLines } from "./status_hooks.js";
43
49
  /** §10.3 indents the gutter rows four columns under the state line. */
44
50
  const ROW_INDENT = 4;
45
51
  export function status(ctx, argv = []) {
46
52
  // `TODOS[184]`. Check-first, before any git/credential/consent resolution — same ordering principle
47
53
  // every other verb's `--help` check uses. Reads and writes nothing.
48
54
  if (argv.includes("--help") || argv.includes("-h")) {
49
- writeLines(ctx.stdout, [HELP.commands.status]);
55
+ const helpVerb = "status"; // an identifier, not a literal, at the writer: `copy-inline-literals` follows argument positions
56
+ writeLines(ctx.stdout, renderVerbHelp(helpVerb));
50
57
  return EXIT.ok;
51
58
  }
52
59
  // ⛔ THIS SCREEN USES BOTH ROLES AT ONCE (`D184 §1`), which is why the whole
@@ -55,16 +62,18 @@ export function status(ctx, argv = []) {
55
62
  // REPO IDENTITY and stay on the worktree toplevel. The `--json` field is
56
63
  // literally named `toplevel`, so moving it would make the document lie.
57
64
  const keys = resolveProjectKeys(ctx.cwd);
58
- if (keys === null) {
59
- writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: ERRORS.notAGitRepo, why: [] }, ctx.colour));
60
- return EXIT.failure;
61
- }
65
+ // 0.7.0, D6 · 2A: from a folder that is not a work tree `status` answers for the MACHINE, instead of "Not a git repository".
66
+ if (keys === null)
67
+ return machineStatus(ctx, argv);
62
68
  const projectKey = keys.worktree;
63
69
  // ⛔ CONSENT STATE, on the common dir. A worktree of a consented clone must
64
70
  // report ON here, because the hook that runs there is now admitted — a
65
71
  // `status` still keyed on the toplevel would tell that user they are
66
72
  // disconnected while their session was being captured.
67
- const on = isProjectAllowed(ctx.home, keys.consent);
73
+ //
74
+ // ⛔ THE GATE IS `isCaptureAllowed` (0.7.0): the same decision the hooks make, so `status` cannot say "on" over a
75
+ // clone the hook is refusing (an excluded slug, an unreadable `grants.json`) or "off" over one it is admitting.
76
+ const on = isCaptureAllowed(ctx.home, keys, onceRepoSlug(projectKey));
68
77
  // ⛔ `ok` IS A HEALTH CLAIM, NOT ONLY A CONSENT ONE (`CR-228`, `TODOS[142]`).
69
78
  // The line beside the glyph is consent state and stays so; the glyph is what a
70
79
  // user reads as "fine". It printed `ok` over a session that had written off
@@ -124,7 +133,11 @@ export function status(ctx, argv = []) {
124
133
  // from what the hook last heard (`X-Credential-Expires`), so it is as fresh as the last capture.
125
134
  const endsAt = fingerprint === null ? null : endingSoon(metaFor(ctx.home, fingerprint), ctx.now().getTime());
126
135
  const endsText = endsAt === null ? null : endDateText(endsAt);
136
+ // 0.7.0: this repo's own last upload was refused because its org has not approved capture (a hook's `later`, remembered
137
+ // by `org_pending.ts`). Raised only for a repo that is on, and cleared by the next delivery.
138
+ const orgPending = on ? readOrgPending(ctx.home, resolveRepoSlug(projectKey)) : null;
127
139
  const kind = on &&
140
+ orgPending === null &&
128
141
  stopped === null &&
129
142
  endsText === null &&
130
143
  writtenOff.gaps === 0 &&
@@ -138,6 +151,7 @@ export function status(ctx, argv = []) {
138
151
  const lines = [
139
152
  ` ${paint(ctx.colour, kind, glyph(ctx.colour, kind))} ${paint(ctx.colour, "strong", on ? STATUS.onForRepo : STATUS.offForRepo)}`,
140
153
  labelled(ROW_INDENT, STATUS.repoLabel, repoValue(ctx, projectKey)),
154
+ ...(on ? [labelled(ROW_INDENT, STATUS.basisLabel, basisValue(ctx, projectKey))] : []),
141
155
  ];
142
156
  // Question 2: the last successful send FOR THIS REPO. `status` has no
143
157
  // session_id — it is interactive — so this is a scan of the repo's session
@@ -161,12 +175,19 @@ export function status(ctx, argv = []) {
161
175
  // `outcome` carries the on/off distinction the glyph carries on screen.
162
176
  if (argv.includes("--json")) {
163
177
  if (load.kind !== "ok" && load.kind !== "absent") {
164
- writeLines(ctx.stderr, credentialProblem(load, ctx.colour, authCommand));
178
+ writeFailure(ctx, credentialProblemBlock(load, authCommand), "status");
165
179
  return EXIT.failure;
166
180
  }
167
181
  emitJson(ctx.stdout, "status", on ? "on" : "off", {
182
+ scope: "repo",
168
183
  repo: resolveRepoSlug(projectKey),
169
184
  toplevel: projectKey,
185
+ // 0.7.0, D6: why this repo is on — `owner`, `repo` or `per_clone`; `null` when it is off. A contract change,
186
+ // recorded in `json-read-verbs.test.ts`.
187
+ basis: on ? basisKind(ctx, projectKey) : null,
188
+ // 0.7.0: `{ at_ms }` when this repo's last upload was refused because its org has not approved capture, else `null`.
189
+ // A contract change, recorded in `json-read-verbs.test.ts`.
190
+ org_pending: orgPending === null ? null : { at_ms: orgPending.at },
170
191
  last_send: lastSend === null ? null : { at_ms: lastSend.at, seq: lastSend.seq },
171
192
  dashboard: URLS.dashboard,
172
193
  // `CR-216/U3`. A SOURCE NAME, never the credential — `IngestCredential.source`
@@ -229,7 +250,7 @@ export function status(ctx, argv = []) {
229
250
  stuckLines.push("", ...wrap(STATUS.liveStuck(stuck.liveStuck.bytes, stuck.liveStuck.sessions, stuckSpoolLines.liveCommits, stuck.liveStuck.ids), 2));
230
251
  }
231
252
  if (stuck.heldIdle.bytes > 0) {
232
- stuckLines.push("", ...wrap(STATUS.heldIdle(stuck.heldIdle.bytes, stuck.heldIdle.sessions, stuckSpoolLines.idleCommits, stuck.heldIdle.ids), 2));
253
+ stuckLines.push("", ...wrap(STATUS.heldIdle(stuck.heldIdle.bytes, stuck.heldIdle.sessions, stuckSpoolLines.idleCommits, channelCommand(ctx.env, ctx.selfPath, FINALIZE.commandSessionBase), stuck.heldIdle.ids), 2));
233
254
  }
234
255
  const stuckCommitsTotal = stuckSpoolLines.liveCommits + stuckSpoolLines.idleCommits;
235
256
  // Absence is a SENTENCE, not a blank row. Triggered on the send record rather
@@ -258,7 +279,7 @@ export function status(ctx, argv = []) {
258
279
  // `TODOS[145]`/`[146]`: the consequence first (a session is over and its last turn never closed), then the
259
280
  // neutral fact (commits are waiting for a turn). Both omitted when zero — absence here is the healthy case.
260
281
  if (openTail.ids.length > 0) {
261
- lines.push("", ...wrap(STATUS.openTail(openTail.ids.length), 2));
282
+ lines.push("", ...wrap(STATUS.openTail(openTail.ids.length, channelCommand(ctx.env, ctx.selfPath, COMMANDS.finalize)), 2));
262
283
  }
263
284
  else if (waiting - stuckCommitsTotal > 0) {
264
285
  lines.push("", ...wrap(STATUS.commitsWaiting(waiting - stuckCommitsTotal), 2));
@@ -295,6 +316,20 @@ export function status(ctx, argv = []) {
295
316
  standing: true,
296
317
  }));
297
318
  }
319
+ // 0.7.0. Loud, because the hook that is refusing cannot say why: an unreadable `grants.json` stops every clone
320
+ // that has a remote, whatever `projects.json` holds.
321
+ if (grantsUnreadable(ctx.home)) {
322
+ lines.push("", ...wrap(STATUS.grantsUnreadable(channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)), 2));
323
+ }
324
+ // 0.7.0, `SessionStart`: a missing registration (npm channel only), commit hooks that are off, or `core.hooksPath`.
325
+ lines.push(...hookStateLines(ctx, projectKey, on));
326
+ // §10.2's held beat, with its existing copy, for the repo whose own upload got the 403. Not a new sentence.
327
+ if (orgPending !== null) {
328
+ lines.push("", ...approvalPendingBlock(ctx.colour, resolveRepoSlug(projectKey), orgPending.ownersNotified));
329
+ }
330
+ // Codex runs no user-level hook until the user trusts it. Said, never detected (VQ + Alexander, 2026-10-24).
331
+ if (on)
332
+ lines.push("", ...wrap(AGENT_HOOKS.codexTrust, 2));
298
333
  lines.push("", ...actionLines(ctx, on));
299
334
  writeLines(ctx.stdout, lines);
300
335
  return on ? EXIT.ok : EXIT.notConnected;
@@ -330,6 +365,16 @@ function repoValue(ctx, toplevel) {
330
365
  }
331
366
  return value;
332
367
  }
368
+ /** The `basis` row's value (D6): which of the three reasons admits this repo. */
369
+ function basisValue(ctx, projectKey) {
370
+ const basis = captureBasis(ctx.home, resolveRepoSlug(projectKey));
371
+ return basis.kind === "owner" ? STATUS.basisOwner(basis.owner) : basis.kind === "repo" ? STATUS.basisRepo : STATUS.basisClone;
372
+ }
373
+ /** The `--json` spelling of the same three reasons. */
374
+ function basisKind(ctx, projectKey) {
375
+ const basis = captureBasis(ctx.home, resolveRepoSlug(projectKey));
376
+ return basis.kind === "clone" ? "per_clone" : basis.kind;
377
+ }
333
378
  /**
334
379
  * The two trailing actions, aligned as one pair — §10.3 draws their values in a
335
380
  * shared column, which only holds if both labels pad to the longer of the two.
@@ -340,11 +385,11 @@ function repoValue(ctx, toplevel) {
340
385
  function actionLines(ctx, on) {
341
386
  const pairs = on
342
387
  ? [
343
- [STATUS.turnOffLabel, COMMANDS.off],
388
+ [STATUS.turnOffLabel, channelCommand(ctx.env, ctx.selfPath, COMMANDS.off)],
344
389
  [STATUS.revokeLabel, URLS.settings],
345
390
  ]
346
391
  : [
347
- [STATUS.fixCommandLabel, COMMANDS.connect],
392
+ [STATUS.fixCommandLabel, channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)],
348
393
  [STATUS.revokeLabel, URLS.settings],
349
394
  ];
350
395
  const width = Math.max(...pairs.map(([label]) => label.length));
@@ -374,23 +419,75 @@ export function off(ctx, argv = []) {
374
419
  // every OTHER argument (including `--json`, which `off` has no mode for) still refuses.
375
420
  const rest = argv.filter((arg) => !OFF_RECOGNIZED_GLOBAL_FLAGS.includes(arg));
376
421
  if (rest.length > 0) {
377
- writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: OFF.unrecognizedArgWhat, why: [OFF.unrecognizedArgWhy] }, ctx.colour));
422
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", code: "UNRECOGNIZED_ARGUMENT", what: OFF.unrecognizedArgWhat, why: [OFF.unrecognizedArgWhy] }, ctx.colour));
378
423
  return EXIT.usage;
379
424
  }
380
425
  const keys = resolveProjectKeys(ctx.cwd);
381
426
  if (keys === null) {
382
- writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: ERRORS.notAGitRepo, why: [] }, ctx.colour));
383
- return EXIT.failure;
427
+ // D31 · 25B. Outside a work tree there is no repository to turn off, and the picker is where an owner or
428
+ // another repo is unticked. Exit 2: this is the verb used wrongly, not a failure of the machine.
429
+ writeLines(ctx.stderr, renderErrorBlock({
430
+ kind: "bad",
431
+ code: "OFF_NEEDS_REPO",
432
+ what: OFF.outsideRepoWhat,
433
+ why: [],
434
+ fixLabel: OFF.outsideRepoFixLabel,
435
+ fixes: [channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)],
436
+ }, ctx.colour));
437
+ return EXIT.usage;
384
438
  }
439
+ const slug = normalizeSlug(resolveRepoSlug(keys.worktree));
440
+ // Asked BEFORE anything is revoked: "was it on" decides whether there is an exclusion to record at all, and the
441
+ // answer after the revoke would always be no.
442
+ const wasOn = isCaptureAllowed(ctx.home, keys, slug);
385
443
  // ⛔ THE REVOKE SIDE, AND IT MUST DELETE THE KEY `connect` WROTE (`D184 §9`).
386
444
  // `revokeProject` deletes by exact string and reports `false` when the key is
387
445
  // absent — so a revoke still keyed on the toplevel would find nothing, print
388
446
  // "already off", and LEAVE THE GRANT IN PLACE. The user believes they
389
447
  // withdrew consent; capture continues. That is the worse direction of this
390
448
  // same bug, and it is the second mutation the cells below pin.
391
- const changed = revokeProject(ctx.home, keys.consent);
449
+ let changed = revokeProject(ctx.home, keys.consent);
450
+ if (isLocalSlug(slug)) {
451
+ // No remote, no identity to turn off but this clone's own: 0.6.x behaviour, byte for byte.
452
+ writeLines(ctx.stdout, [
453
+ ...wrap(changed ? OFF.done : OFF.alreadyOff, 2),
454
+ ...wrap(OFF.note, 2),
455
+ ]);
456
+ return EXIT.ok;
457
+ }
458
+ // ⛔ A repo with a remote is turned off BY SLUG, so the exclusion does not depend on `grants.json` alone: every
459
+ // OTHER clone on this machine whose consent survives in `projects.json` and names the same repo loses it too.
460
+ // An entry whose directory is gone or has no readable remote is unknown, and unknown matches nothing.
461
+ for (const other of Object.keys(readAllowList(ctx.home))) {
462
+ const otherSlug = remoteSlugOfCommonDir(other);
463
+ if (otherSlug !== null && normalizeSlug(otherSlug) === slug) {
464
+ changed = revokeProject(ctx.home, other) || changed;
465
+ }
466
+ }
467
+ // An unreadable `grants.json` reads as "not on" above (it denies), but the user's `off` still has to be recorded, or
468
+ // be reported as not recorded: `excludeSlug` throws on it rather than rewrite a file whose exclusions it cannot see.
469
+ if (wasOn || grantsUnreadable(ctx.home)) {
470
+ try {
471
+ changed = excludeSlug(ctx.home, slug) || changed;
472
+ }
473
+ catch (error) {
474
+ if (!(error instanceof GrantsUnreadableError))
475
+ throw error;
476
+ // Fail closed already holds (an unreadable file denies this clone), and the clones' own consent is withdrawn
477
+ // above. What is missing is the record, and a rewrite would drop exclusions we cannot see.
478
+ writeLines(ctx.stderr, renderErrorBlock({
479
+ kind: "bad",
480
+ code: "GRANTS_UNREADABLE",
481
+ what: OFF.grantsUnreadableWhat,
482
+ why: [OFF.grantsUnreadableWhy],
483
+ fixLabel: OFF.grantsUnreadableFixLabel,
484
+ fixes: [channelCommand(ctx.env, ctx.selfPath, COMMANDS.off)],
485
+ }, ctx.colour));
486
+ return EXIT.failure;
487
+ }
488
+ }
392
489
  writeLines(ctx.stdout, [
393
- ...wrap(changed ? OFF.done : OFF.alreadyOff, 2),
490
+ ...wrap(changed ? OFF.doneSlug(slug) : OFF.alreadyOff, 2),
394
491
  ...wrap(OFF.note, 2),
395
492
  ]);
396
493
  return EXIT.ok;
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The hook facts `status` states about the clone it is run in, and the agents it is run for (0.7.0).
3
+ *
4
+ * Read-only by construction: nothing here writes, spawns a long-lived process or reaches the network. `status`
5
+ * reports and `connect` repairs — a settings file or a git hook is never changed from a read verb.
6
+ *
7
+ * Three facts, each said once and only when it is true:
8
+ * - an agent whose config holds our hooks but not `SessionStart` (npm channel only; T21);
9
+ * - a captured clone whose commit hooks are off, with `connect` named as the fix (D4 · A);
10
+ * - a captured clone under `core.hooksPath`, with the shipped runnable fix block (state 7 sends users here).
11
+ */
12
+ import type { CommandContext } from "./context.js";
13
+ /** The lines to add to `status`, already wrapped, each block preceded by a blank line. */
14
+ export declare function hookStateLines(ctx: CommandContext, toplevel: string, captured: boolean): string[];
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The hook facts `status` states about the clone it is run in, and the agents it is run for (0.7.0).
3
+ *
4
+ * Read-only by construction: nothing here writes, spawns a long-lived process or reaches the network. `status`
5
+ * reports and `connect` repairs — a settings file or a git hook is never changed from a read verb.
6
+ *
7
+ * Three facts, each said once and only when it is true:
8
+ * - an agent whose config holds our hooks but not `SessionStart` (npm channel only; T21);
9
+ * - a captured clone whose commit hooks are off, with `connect` named as the fix (D4 · A);
10
+ * - a captured clone under `core.hooksPath`, with the shipped runnable fix block (state 7 sends users here).
11
+ */
12
+ import { readFileSync } from "node:fs";
13
+ import { agentPresent, registrationsFor } from "../agent_install.js";
14
+ import { hasRegistration } from "../agent_hooks.js";
15
+ import { DIALECTS } from "../agents/registry.js";
16
+ import { COMMANDS, COMMIT_HOOK, STATUS } from "../copy/index.js";
17
+ import { channelCommand, installChannel, inspectCaptureHooks } from "../install.js";
18
+ import { renderErrorBlock, wrap } from "../term.js";
19
+ /** What each agent is called in prose. The ids are wire values, not labels. */
20
+ const AGENT_LABELS = {
21
+ "claude-code": "Claude Code",
22
+ "codex-cli": "Codex CLI",
23
+ cursor: "Cursor",
24
+ };
25
+ /** Agents on this machine that hold our hooks but no `SessionStart`. Empty on the plugin channel. */
26
+ function agentsMissingSessionStart(ctx) {
27
+ if (installChannel(ctx.env, ctx.selfPath).kind === "plugin")
28
+ return [];
29
+ const missing = [];
30
+ for (const dialect of DIALECTS) {
31
+ if (!agentPresent(dialect, ctx.home, ctx.env))
32
+ continue;
33
+ let raw = null;
34
+ try {
35
+ raw = readFileSync(dialect.hookConfig.path(ctx.home, ctx.env), "utf8");
36
+ }
37
+ catch {
38
+ raw = null;
39
+ }
40
+ const registrations = registrationsFor(dialect, ctx.selfPath);
41
+ const ours = (event) => {
42
+ const registration = registrations.find((r) => r.event === event);
43
+ return registration !== undefined && hasRegistration(raw, dialect.hookConfig.shape, registration);
44
+ };
45
+ // An agent we were never connected to has none of ours and is not "missing" anything.
46
+ const connected = registrations.some((r) => ours(r.event));
47
+ if (connected && !ours(dialect.eventNames.SessionStart))
48
+ missing.push(dialect.id);
49
+ }
50
+ return missing;
51
+ }
52
+ /** The lines to add to `status`, already wrapped, each block preceded by a blank line. */
53
+ export function hookStateLines(ctx, toplevel, captured) {
54
+ const lines = [];
55
+ // ⛔ ONLY WHERE `connect` WOULD FIX IT. In a repo that is not captured, `connect`'s No exits before it registers
56
+ // any agent, so naming it as the fix would send the user to a command that changes nothing. (Machine-level
57
+ // `status` has no such restriction; it arrives with the picker.)
58
+ const missing = captured ? agentsMissingSessionStart(ctx) : [];
59
+ if (missing.length > 0) {
60
+ lines.push("", ...wrap(STATUS.sessionStartMissing(missing.map((id) => AGENT_LABELS[id]).join(", "), channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)), 2));
61
+ }
62
+ // The plugin ships no git hooks, so "commit hooks are off" would be a false alarm there.
63
+ if (captured && installChannel(ctx.env, ctx.selfPath).kind !== "plugin") {
64
+ const hooks = inspectCaptureHooks(toplevel);
65
+ if (hooks.kind === "off")
66
+ lines.push("", ...wrap(STATUS.commitHooksOff(channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)), 2));
67
+ else if (hooks.kind === "foreign")
68
+ lines.push("", ...wrap(STATUS.commitHooksForeign(channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)), 2));
69
+ else if (hooks.kind === "hooks-path") {
70
+ lines.push("", ...renderErrorBlock({
71
+ kind: "warn",
72
+ what: COMMIT_HOOK.hooksPathWhat,
73
+ why: [COMMIT_HOOK.hooksPathWhy(hooks.configured)],
74
+ fixLabel: COMMIT_HOOK.hooksPathFixLabel,
75
+ fixes: [COMMIT_HOOK.hooksPathFixUnset, COMMIT_HOOK.hooksPathFixManual(channelCommand(ctx.env, ctx.selfPath, COMMANDS.postCommit))],
76
+ }, ctx.colour));
77
+ }
78
+ }
79
+ return lines;
80
+ }
81
+ //# sourceMappingURL=status_hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status_hooks.js","sourceRoot":"","sources":["../../src/commands/status_hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `vibecommit status` from a folder that is not a git work tree — the MACHINE-level screen (0.7.0, design review D6 · 2A).
3
+ *
4
+ * Inside a repo `status` answers about that repo (§10.3). From anywhere else there is no repo to be about, and the old
5
+ * answer — "Not a git repository" — was the very precondition 0.7.0 removes from `connect`. So it answers for the machine:
6
+ * what is on, what is turned off, when anything last sent, where the dashboard is, and the three things to do next.
7
+ *
8
+ * Reads `grants.json`, `projects.json` and session state; opens no transcript, makes no request and writes nothing. It
9
+ * spawns one `git remote get-url` per per-clone consent (to count them as repos), and nothing else.
10
+ *
11
+ * ⚠ **`last sent` names no repo.** The drawn screen says `4 minutes ago · alexvibecommit/example-repo`, but session state
12
+ * is kept under a one-way digest of the repo's path, so the machine-wide scan can say WHEN and not WHICH. Naming the repo
13
+ * needs the digest inverted or a slug recorded beside it — a state-format change for another PR, reported to the design.
14
+ * ⚠ **`owners` rows carry no clone count** ("3 clones here"): counting them is a filesystem scan (`scan`'s 2-3 s on a
15
+ * heavy machine), which `status` must not pay. The row says what is true without one: later clones are covered.
16
+ */
17
+ import { type CommandContext } from "./context.js";
18
+ export declare function machineStatus(ctx: CommandContext, argv: readonly string[]): number;
@@ -0,0 +1,149 @@
1
+ /**
2
+ * `vibecommit status` from a folder that is not a git work tree — the MACHINE-level screen (0.7.0, design review D6 · 2A).
3
+ *
4
+ * Inside a repo `status` answers about that repo (§10.3). From anywhere else there is no repo to be about, and the old
5
+ * answer — "Not a git repository" — was the very precondition 0.7.0 removes from `connect`. So it answers for the machine:
6
+ * what is on, what is turned off, when anything last sent, where the dashboard is, and the three things to do next.
7
+ *
8
+ * Reads `grants.json`, `projects.json` and session state; opens no transcript, makes no request and writes nothing. It
9
+ * spawns one `git remote get-url` per per-clone consent (to count them as repos), and nothing else.
10
+ *
11
+ * ⚠ **`last sent` names no repo.** The drawn screen says `4 minutes ago · alexvibecommit/example-repo`, but session state
12
+ * is kept under a one-way digest of the repo's path, so the machine-wide scan can say WHEN and not WHICH. Naming the repo
13
+ * needs the digest inverted or a slug recorded beside it — a state-format change for another PR, reported to the design.
14
+ * ⚠ **`owners` rows carry no clone count** ("3 clones here"): counting them is a filesystem scan (`scan`'s 2-3 s on a
15
+ * heavy machine), which `status` must not pay. The row says what is true without one: later clones are covered.
16
+ */
17
+ import { EXIT } from "../exit.js";
18
+ import { AGENT_HOOKS, COMMANDS, PICKER, STATUS, URLS, relativeAge } from "../copy/index.js";
19
+ import { emitJson } from "../json.js";
20
+ import { credentialProblemBlock } from "./credential_problem.js";
21
+ import { authCommandFor, channelCommand } from "../install.js";
22
+ import { loadCredential } from "../credential.js";
23
+ import { machineCapture, machineSummary } from "../machine_state.js";
24
+ import { isLocalSlug, normalizeSlug, ownerOfSlug } from "../consent.js";
25
+ import { listOrgPending } from "../org_pending.js";
26
+ import { lastSendOnMachine } from "../state.js";
27
+ import { LABEL_GUTTER, WRAP_COLUMNS, glyph, labelled, paint, wrap } from "../term.js";
28
+ import { writeFailure, writeLines } from "./context.js";
29
+ /** §10.3 indents the gutter rows four columns under the state line. */
30
+ const ROW_INDENT = 4;
31
+ /** `rows` on the label gutter: the first carries the label, the rest hang under it. Values wrap at 80 columns. */
32
+ function rows(label, values) {
33
+ if (values.length === 0)
34
+ return [];
35
+ const out = [];
36
+ let line = "";
37
+ const flush = () => {
38
+ out.push(out.length === 0 ? labelled(ROW_INDENT, label, line) : `${" ".repeat(ROW_INDENT + LABEL_GUTTER)}${line}`);
39
+ line = "";
40
+ };
41
+ for (const [i, value] of values.entries()) {
42
+ const piece = i === 0 || line === "" ? value : `, ${value}`;
43
+ if (line !== "" && ROW_INDENT + LABEL_GUTTER + line.length + piece.length > WRAP_COLUMNS) {
44
+ flush();
45
+ line = value;
46
+ }
47
+ else
48
+ line += piece;
49
+ }
50
+ flush();
51
+ return out;
52
+ }
53
+ /**
54
+ * The repos waiting on an organization's approval: every standing marker in `org_pending.ts`'s slug directory (written when
55
+ * THAT repo's own upload got `403 capture_not_approved`, cleared by a 2xx from ANY clone of it), reduced by VT's conditions.
56
+ * (i) Only a slug still ON under the current grants and exclusions — a repo turned off, or no longer granted, is not "waiting".
57
+ * (ii) Deduped by slug (one file per slug already; kept defensively). (iii) A marker with no slug is skipped, never an unnamed
58
+ * row. A `local:` slug names a path and cannot belong to an organization.
59
+ */
60
+ function waitingRepos(ctx, capture) {
61
+ const { grants } = capture;
62
+ const perClone = new Set(capture.perClone.flatMap((c) => (c.slug === null ? [] : [normalizeSlug(c.slug)])));
63
+ const waiting = new Set();
64
+ for (const marker of listOrgPending(ctx.home)) {
65
+ if (marker.slug === null)
66
+ continue;
67
+ const slug = normalizeSlug(marker.slug);
68
+ if (isLocalSlug(slug) || grants.excluded.includes(slug))
69
+ continue;
70
+ if (grants.owners.includes(ownerOfSlug(slug)) || grants.repos.includes(slug) || perClone.has(slug))
71
+ waiting.add(slug);
72
+ }
73
+ return [...waiting].sort();
74
+ }
75
+ export function machineStatus(ctx, argv) {
76
+ const capture = machineCapture(ctx.home);
77
+ const waiting = capture.kind === "on" ? waitingRepos(ctx, capture) : [];
78
+ const load = loadCredential({ env: ctx.env, home: ctx.home });
79
+ const last = lastSendOnMachine(ctx.home);
80
+ const nowMs = ctx.now().getTime();
81
+ if (argv.includes("--json")) {
82
+ if (load.kind !== "ok" && load.kind !== "absent") {
83
+ writeFailure(ctx, credentialProblemBlock(load, authCommandFor(ctx.env, ctx.selfPath)), "status");
84
+ return EXIT.failure;
85
+ }
86
+ const on = capture.kind === "on";
87
+ emitJson(ctx.stdout, "status", on ? "on" : "off", {
88
+ scope: "machine",
89
+ owners: on ? capture.grants.owners : [],
90
+ repos: on ? capture.grants.repos : [],
91
+ excluded: on ? capture.grants.excluded : [],
92
+ per_clone: on ? capture.perClone.length : 0,
93
+ // 0.7.0: the slugs whose own last upload was refused because their org has not approved capture (still on, deduped,
94
+ // named). A machine key for the release paragraph; it does not change the exit code.
95
+ org_pending: waiting,
96
+ grants_unreadable: capture.kind === "unreadable",
97
+ last_send: last === null ? null : { at_ms: last.at, seq: last.seq },
98
+ dashboard: URLS.dashboard,
99
+ credential: load.kind === "ok" ? load.credential.source : null,
100
+ });
101
+ return on ? EXIT.ok : EXIT.notConnected;
102
+ }
103
+ // `ok` only when something is on; `warn` for "nothing is" and for an unreadable file (§13.2 glyph).
104
+ const kind = capture.kind === "on" ? "ok" : "warn";
105
+ const heading = capture.kind === "on" ? PICKER.onFor(machineSummary(capture)) : STATUS.offMachine;
106
+ const lines = [` ${paint(ctx.colour, kind, glyph(ctx.colour, kind))} ${paint(ctx.colour, "strong", heading)}`];
107
+ if (capture.kind === "unreadable") {
108
+ lines.push("", ...wrap(STATUS.grantsUnreadable(channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)), 2));
109
+ }
110
+ else if (capture.kind === "on") {
111
+ const { grants } = capture;
112
+ for (const [i, owner] of grants.owners.entries()) {
113
+ lines.push(labelled(ROW_INDENT, i === 0 ? STATUS.ownersLabel : "", `${owner}/ ${STATUS.ownerTail}`));
114
+ }
115
+ const covered = (slug) => grants.owners.includes(ownerOfSlug(slug));
116
+ const repos = [
117
+ ...grants.repos.filter((r) => !grants.excluded.includes(r) && !covered(r)),
118
+ ...capture.perClone
119
+ .filter((c) => c.slug !== null && !grants.excluded.includes(c.slug.toLowerCase()) && !covered(c.slug.toLowerCase()))
120
+ .map((c) => c.slug.toLowerCase()),
121
+ ];
122
+ lines.push(...rows(STATUS.reposLabel, [...new Set(repos)]));
123
+ lines.push(...rows(STATUS.offLabel, grants.excluded));
124
+ // §10.2's held vocabulary: the beat word and "the org must approve capture". One row, naming the repos; never an unnamed one.
125
+ if (waiting.length > 0) {
126
+ lines.push(...rows(STATUS.heldLabel, waiting), `${" ".repeat(ROW_INDENT + LABEL_GUTTER)}${STATUS.heldReason}`);
127
+ }
128
+ }
129
+ if (last !== null)
130
+ lines.push(labelled(ROW_INDENT, STATUS.lastSuccessLabel, relativeAge(last.at, nowMs)));
131
+ lines.push(labelled(ROW_INDENT, STATUS.dashboardLabel, paint(ctx.colour, "accent", URLS.dashboard)));
132
+ // Codex runs no user-level hook until the user trusts it. Said, never detected (VQ + Alexander, 2026-10-24).
133
+ if (capture.kind === "on")
134
+ lines.push("", ...wrap(AGENT_HOOKS.codexTrust, 2));
135
+ const pairs = [
136
+ [STATUS.changeLabel, channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)],
137
+ ...(capture.kind === "on" ? [[STATUS.turnOffInside, channelCommand(ctx.env, ctx.selfPath, COMMANDS.off)]] : []),
138
+ [STATUS.revokeLabel, URLS.settings],
139
+ ];
140
+ const width = Math.max(...pairs.map(([label]) => label.length));
141
+ lines.push("", ...pairs.map(([label, value]) => {
142
+ const painted = value.startsWith("https://") ? paint(ctx.colour, "accent", value) : value;
143
+ return ` ${`${label}:`.padEnd(width + 2)}${painted}`;
144
+ }));
145
+ writeLines(ctx.stdout, lines);
146
+ // Exit 3 when nothing is captured, as `status` in a repo that is off does — a wrapper can branch on it.
147
+ return capture.kind === "on" ? EXIT.ok : EXIT.notConnected;
148
+ }
149
+ //# sourceMappingURL=status_machine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status_machine.js","sourceRoot":"","sources":["../../src/commands/status_machine.ts"],"names":[],"mappings":"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"}