@vibe-commit/capture 0.6.1 → 0.8.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 (172) hide show
  1. package/README.md +191 -9
  2. package/dist/account_not_here.d.ts +15 -0
  3. package/dist/account_not_here.js +25 -0
  4. package/dist/account_not_here.js.map +1 -0
  5. package/dist/agent_hooks.d.ts +8 -0
  6. package/dist/agent_hooks.js +31 -1
  7. package/dist/agent_hooks.js.map +1 -1
  8. package/dist/agents/claude_code.d.ts +34 -0
  9. package/dist/agents/claude_code.js +141 -8
  10. package/dist/agents/claude_code.js.map +1 -1
  11. package/dist/agents/codex_cli.d.ts +13 -0
  12. package/dist/agents/codex_cli.js +241 -2
  13. package/dist/agents/codex_cli.js.map +1 -1
  14. package/dist/agents/cursor.d.ts +34 -0
  15. package/dist/agents/cursor.js +115 -1
  16. package/dist/agents/cursor.js.map +1 -1
  17. package/dist/agents/session_listing.d.ts +29 -0
  18. package/dist/agents/session_listing.js +49 -0
  19. package/dist/agents/session_listing.js.map +1 -0
  20. package/dist/agents/types.d.ts +118 -8
  21. package/dist/agents/types.js +17 -3
  22. package/dist/agents/types.js.map +1 -1
  23. package/dist/commands/approval_pending.d.ts +9 -0
  24. package/dist/commands/approval_pending.js +23 -0
  25. package/dist/commands/approval_pending.js.map +1 -0
  26. package/dist/commands/auth.d.ts +7 -0
  27. package/dist/commands/auth.js +52 -11
  28. package/dist/commands/auth.js.map +1 -1
  29. package/dist/commands/backfill.d.ts +160 -0
  30. package/dist/commands/backfill.js +748 -0
  31. package/dist/commands/backfill.js.map +1 -0
  32. package/dist/commands/browser_credential.d.ts +6 -2
  33. package/dist/commands/browser_credential.js +34 -14
  34. package/dist/commands/browser_credential.js.map +1 -1
  35. package/dist/commands/connect.d.ts +146 -0
  36. package/dist/commands/connect.js +216 -117
  37. package/dist/commands/connect.js.map +1 -1
  38. package/dist/commands/connect_account.d.ts +135 -0
  39. package/dist/commands/connect_account.js +321 -0
  40. package/dist/commands/connect_account.js.map +1 -0
  41. package/dist/commands/connect_picker.d.ts +27 -0
  42. package/dist/commands/connect_picker.js +549 -0
  43. package/dist/commands/connect_picker.js.map +1 -0
  44. package/dist/commands/context.d.ts +16 -0
  45. package/dist/commands/context.js +27 -0
  46. package/dist/commands/context.js.map +1 -1
  47. package/dist/commands/credential_problem.d.ts +15 -4
  48. package/dist/commands/credential_problem.js +29 -22
  49. package/dist/commands/credential_problem.js.map +1 -1
  50. package/dist/commands/device_credential.d.ts +5 -1
  51. package/dist/commands/device_credential.js +17 -14
  52. package/dist/commands/device_credential.js.map +1 -1
  53. package/dist/commands/finalize.d.ts +95 -0
  54. package/dist/commands/finalize.js +249 -74
  55. package/dist/commands/finalize.js.map +1 -1
  56. package/dist/commands/finish_mint.d.ts +30 -6
  57. package/dist/commands/finish_mint.js +26 -6
  58. package/dist/commands/finish_mint.js.map +1 -1
  59. package/dist/commands/report.js +38 -30
  60. package/dist/commands/report.js.map +1 -1
  61. package/dist/commands/scan.d.ts +162 -0
  62. package/dist/commands/scan.js +507 -0
  63. package/dist/commands/scan.js.map +1 -0
  64. package/dist/commands/status.d.ts +19 -1
  65. package/dist/commands/status.js +232 -26
  66. package/dist/commands/status.js.map +1 -1
  67. package/dist/commands/status_hooks.d.ts +14 -0
  68. package/dist/commands/status_hooks.js +81 -0
  69. package/dist/commands/status_hooks.js.map +1 -0
  70. package/dist/commands/status_machine.d.ts +27 -0
  71. package/dist/commands/status_machine.js +210 -0
  72. package/dist/commands/status_machine.js.map +1 -0
  73. package/dist/commands/sync_reason.d.ts +17 -0
  74. package/dist/commands/sync_reason.js +25 -0
  75. package/dist/commands/sync_reason.js.map +1 -0
  76. package/dist/commands/why.js +44 -31
  77. package/dist/commands/why.js.map +1 -1
  78. package/dist/consent.d.ts +217 -0
  79. package/dist/consent.js +400 -1
  80. package/dist/consent.js.map +1 -1
  81. package/dist/copy/error_codes.d.ts +222 -0
  82. package/dist/copy/error_codes.js +105 -0
  83. package/dist/copy/error_codes.js.map +1 -0
  84. package/dist/copy/index.d.ts +2 -2
  85. package/dist/copy/index.js +2 -2
  86. package/dist/copy/index.js.map +1 -1
  87. package/dist/copy/strings.d.ts +617 -30
  88. package/dist/copy/strings.js +741 -36
  89. package/dist/copy/strings.js.map +1 -1
  90. package/dist/copy/time.d.ts +11 -0
  91. package/dist/copy/time.js +18 -0
  92. package/dist/copy/time.js.map +1 -1
  93. package/dist/credential.d.ts +5 -1
  94. package/dist/credential.js +2 -2
  95. package/dist/credential.js.map +1 -1
  96. package/dist/git.d.ts +43 -0
  97. package/dist/git.js +95 -0
  98. package/dist/git.js.map +1 -1
  99. package/dist/grants_sync.d.ts +165 -0
  100. package/dist/grants_sync.js +289 -0
  101. package/dist/grants_sync.js.map +1 -0
  102. package/dist/grants_verb.d.ts +70 -0
  103. package/dist/grants_verb.js +121 -0
  104. package/dist/grants_verb.js.map +1 -0
  105. package/dist/hooks/entry.d.ts +18 -1
  106. package/dist/hooks/entry.js +117 -14
  107. package/dist/hooks/entry.js.map +1 -1
  108. package/dist/hooks/post_commit.js +3 -3
  109. package/dist/hooks/post_commit.js.map +1 -1
  110. package/dist/hooks/post_rewrite.js +6 -4
  111. package/dist/hooks/post_rewrite.js.map +1 -1
  112. package/dist/hooks/session_grants.d.ts +59 -0
  113. package/dist/hooks/session_grants.js +91 -0
  114. package/dist/hooks/session_grants.js.map +1 -0
  115. package/dist/hooks/session_start.d.ts +114 -0
  116. package/dist/hooks/session_start.js +243 -0
  117. package/dist/hooks/session_start.js.map +1 -0
  118. package/dist/index.d.ts +1 -1
  119. package/dist/index.js +76 -11
  120. package/dist/index.js.map +1 -1
  121. package/dist/install.d.ts +57 -0
  122. package/dist/install.js +54 -20
  123. package/dist/install.js.map +1 -1
  124. package/dist/json.d.ts +32 -9
  125. package/dist/json.js +35 -8
  126. package/dist/json.js.map +1 -1
  127. package/dist/machine_state.d.ts +52 -0
  128. package/dist/machine_state.js +63 -0
  129. package/dist/machine_state.js.map +1 -0
  130. package/dist/oauth/retire.d.ts +10 -0
  131. package/dist/oauth/retire.js +13 -0
  132. package/dist/oauth/retire.js.map +1 -1
  133. package/dist/oauth/session.d.ts +1 -0
  134. package/dist/org_pending.d.ts +52 -0
  135. package/dist/org_pending.js +109 -0
  136. package/dist/org_pending.js.map +1 -0
  137. package/dist/paths.d.ts +70 -0
  138. package/dist/paths.js +90 -0
  139. package/dist/paths.js.map +1 -1
  140. package/dist/pending_revoke.d.ts +117 -0
  141. package/dist/pending_revoke.js +233 -0
  142. package/dist/pending_revoke.js.map +1 -0
  143. package/dist/pending_revoke_file.d.ts +55 -0
  144. package/dist/pending_revoke_file.js +74 -0
  145. package/dist/pending_revoke_file.js.map +1 -0
  146. package/dist/picker.d.ts +208 -0
  147. package/dist/picker.js +526 -0
  148. package/dist/picker.js.map +1 -0
  149. package/dist/picker_checklist.d.ts +141 -0
  150. package/dist/picker_checklist.js +411 -0
  151. package/dist/picker_checklist.js.map +1 -0
  152. package/dist/policy.d.ts +70 -1
  153. package/dist/policy.js +68 -2
  154. package/dist/policy.js.map +1 -1
  155. package/dist/post.d.ts +91 -18
  156. package/dist/post.js +259 -27
  157. package/dist/post.js.map +1 -1
  158. package/dist/state.d.ts +6 -0
  159. package/dist/state.js +38 -1
  160. package/dist/state.js.map +1 -1
  161. package/dist/system_message.d.ts +32 -2
  162. package/dist/system_message.js +47 -5
  163. package/dist/system_message.js.map +1 -1
  164. package/dist/term.d.ts +28 -2
  165. package/dist/term.js +23 -2
  166. package/dist/term.js.map +1 -1
  167. package/dist/verb_help.d.ts +13 -0
  168. package/dist/verb_help.js +40 -0
  169. package/dist/verb_help.js.map +1 -0
  170. package/dist/version.d.ts +1 -1
  171. package/dist/version.js +1 -1
  172. package/package.json +5 -9
@@ -24,29 +24,50 @@
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, ownerOfSlug, readAccountState, readAllowList, readGrants, revokeProject, } from "../consent.js";
32
+ import { queueGrantOps } from "../grants_sync.js";
31
33
  import { endDateText, endingSoon, metaFor } from "../credential_meta.js";
32
34
  import { loadCredential, savedCredentialExists } from "../credential.js";
33
35
  import { EXIT } from "../exit.js";
34
- import { resolveRepoSlug } from "../git.js";
36
+ import { onceRepoSlug, remoteSlugOfCommonDir, resolveRepoSlug } from "../git.js";
35
37
  import { emitJson } from "../json.js";
36
38
  import { readInferredSkipped } from "../inferred_tally.js";
37
39
  import { readPruneTally } from "../pending_prune.js";
38
40
  import { resolveProjectKeys } from "../project.js";
39
41
  import { commitsWaitingForRepo, heldAtEndForRepo, inferredUnacknowledgedForRepo, lastReceiptForRepo, lastSendForRepo, leanHeldForRepo, leanSessionsForRepo, openTailForRepo, stuckForRepo, stoppedForRepo, stuckSpoolLinesForRepo, writtenOffForRepo, } from "../state.js";
40
42
  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";
43
+ import { credentialProblem, credentialProblemBlock, rejectedCredentialBlock } from "./credential_problem.js";
44
+ import { captureBasis } from "../machine_state.js";
45
+ import { accountRowsFor, machineStatus } from "./status_machine.js";
46
+ import { approvalPendingBlock } from "./approval_pending.js";
47
+ import { readOrgPending } from "../org_pending.js";
48
+ import { writeFailure, writeLines } from "./context.js";
49
+ import { stoppedSyncReason } from "./sync_reason.js";
50
+ import { hookStateLines } from "./status_hooks.js";
51
+ import { syncForVerb } from "../grants_verb.js";
43
52
  /** §10.3 indents the gutter rows four columns under the state line. */
44
53
  const ROW_INDENT = 4;
45
- export function status(ctx, argv = []) {
54
+ /**
55
+ * The real `status`: one bounded sync, then the screen (slice 2, S4). `status` stays a synchronous renderer over local files —
56
+ * the sync only refreshes the files it reads — so every other caller keeps its synchronous contract.
57
+ */
58
+ export async function statusVerb(ctx, argv, deps) {
59
+ // `--help` reads and writes nothing, the network included.
60
+ if (argv.includes("--help") || argv.includes("-h"))
61
+ return status(ctx, argv);
62
+ const sync = await syncForVerb(ctx, argv.includes("--json"), deps);
63
+ return status(ctx, argv, sync);
64
+ }
65
+ export function status(ctx, argv = [], sync = { kind: "skipped" }) {
46
66
  // `TODOS[184]`. Check-first, before any git/credential/consent resolution — same ordering principle
47
67
  // every other verb's `--help` check uses. Reads and writes nothing.
48
68
  if (argv.includes("--help") || argv.includes("-h")) {
49
- writeLines(ctx.stdout, [HELP.commands.status]);
69
+ const helpVerb = "status"; // an identifier, not a literal, at the writer: `copy-inline-literals` follows argument positions
70
+ writeLines(ctx.stdout, renderVerbHelp(helpVerb));
50
71
  return EXIT.ok;
51
72
  }
52
73
  // ⛔ THIS SCREEN USES BOTH ROLES AT ONCE (`D184 §1`), which is why the whole
@@ -55,16 +76,18 @@ export function status(ctx, argv = []) {
55
76
  // REPO IDENTITY and stay on the worktree toplevel. The `--json` field is
56
77
  // literally named `toplevel`, so moving it would make the document lie.
57
78
  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
- }
79
+ // 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".
80
+ if (keys === null)
81
+ return machineStatus(ctx, argv, sync);
62
82
  const projectKey = keys.worktree;
63
83
  // ⛔ CONSENT STATE, on the common dir. A worktree of a consented clone must
64
84
  // report ON here, because the hook that runs there is now admitted — a
65
85
  // `status` still keyed on the toplevel would tell that user they are
66
86
  // disconnected while their session was being captured.
67
- const on = isProjectAllowed(ctx.home, keys.consent);
87
+ //
88
+ // ⛔ THE GATE IS `isCaptureAllowed` (0.7.0): the same decision the hooks make, so `status` cannot say "on" over a
89
+ // clone the hook is refusing (an excluded slug, an unreadable `grants.json`) or "off" over one it is admitting.
90
+ const on = isCaptureAllowed(ctx.home, keys, onceRepoSlug(projectKey));
68
91
  // ⛔ `ok` IS A HEALTH CLAIM, NOT ONLY A CONSENT ONE (`CR-228`, `TODOS[142]`).
69
92
  // The line beside the glyph is consent state and stays so; the glyph is what a
70
93
  // user reads as "fine". It printed `ok` over a session that had written off
@@ -124,7 +147,11 @@ export function status(ctx, argv = []) {
124
147
  // from what the hook last heard (`X-Credential-Expires`), so it is as fresh as the last capture.
125
148
  const endsAt = fingerprint === null ? null : endingSoon(metaFor(ctx.home, fingerprint), ctx.now().getTime());
126
149
  const endsText = endsAt === null ? null : endDateText(endsAt);
150
+ // 0.7.0: this repo's own last upload was refused because its org has not approved capture (a hook's `later`, remembered
151
+ // by `org_pending.ts`). Raised only for a repo that is on, and cleared by the next delivery.
152
+ const orgPending = on ? readOrgPending(ctx.home, resolveRepoSlug(projectKey)) : null;
127
153
  const kind = on &&
154
+ orgPending === null &&
128
155
  stopped === null &&
129
156
  endsText === null &&
130
157
  writtenOff.gaps === 0 &&
@@ -135,9 +162,16 @@ export function status(ctx, argv = []) {
135
162
  stuck.heldIdle.bytes === 0
136
163
  ? "ok"
137
164
  : "warn";
165
+ // Slice 2 (S4): not on here, but the last synced account state grants it. One answer for the text row and the `--json` basis.
166
+ const accountOnly = !on && grantedOnAccountOnly(ctx.home, resolveRepoSlug(projectKey));
138
167
  const lines = [
139
168
  ` ${paint(ctx.colour, kind, glyph(ctx.colour, kind))} ${paint(ctx.colour, "strong", on ? STATUS.onForRepo : STATUS.offForRepo)}`,
140
169
  labelled(ROW_INDENT, STATUS.repoLabel, repoValue(ctx, projectKey)),
170
+ ...(on
171
+ ? [labelled(ROW_INDENT, STATUS.basisLabel, basisValue(ctx, projectKey))]
172
+ : accountOnly
173
+ ? [labelled(ROW_INDENT, STATUS.basisLabel, STATUS.basisAccountOnly)]
174
+ : []),
141
175
  ];
142
176
  // Question 2: the last successful send FOR THIS REPO. `status` has no
143
177
  // session_id — it is interactive — so this is a scan of the repo's session
@@ -147,6 +181,8 @@ export function status(ctx, argv = []) {
147
181
  lines.push(labelled(ROW_INDENT, STATUS.lastSuccessLabel, STATUS.lastSuccessValue(relativeAge(lastSend.at, ctx.now().getTime()), lastSend.seq)));
148
182
  }
149
183
  lines.push(labelled(ROW_INDENT, STATUS.dashboardLabel, paint(ctx.colour, "accent", URLS.dashboard)));
184
+ // F6: the account rows, after the repo's own rows, only when there is something to say.
185
+ lines.push(...accountRowsFor(ctx, sync));
150
186
  // §13.3 — `--json` emits NOTHING BUT the JSON document on stdout, so the
151
187
  // screen assembled above is DISCARDED rather than printed beside it.
152
188
  //
@@ -161,12 +197,21 @@ export function status(ctx, argv = []) {
161
197
  // `outcome` carries the on/off distinction the glyph carries on screen.
162
198
  if (argv.includes("--json")) {
163
199
  if (load.kind !== "ok" && load.kind !== "absent") {
164
- writeLines(ctx.stderr, credentialProblem(load, ctx.colour, authCommand));
200
+ writeFailure(ctx, credentialProblemBlock(load, authCommand), "status");
165
201
  return EXIT.failure;
166
202
  }
167
203
  emitJson(ctx.stdout, "status", on ? "on" : "off", {
204
+ scope: "repo",
168
205
  repo: resolveRepoSlug(projectKey),
169
206
  toplevel: projectKey,
207
+ // 0.7.0, D6: why this repo is on — `owner`, `repo` or `per_clone`; `null` when it is off. A contract change,
208
+ // recorded in `json-read-verbs.test.ts`.
209
+ // Slice 2 (S4): `"account_not_here"` when the repo is not on but the account grants it (the machine document's
210
+ // `account_not_here` key, spelled the same). A new value of an existing key: a contract change for the 0.8.0 release list.
211
+ basis: on ? basisKind(ctx, projectKey) : accountOnly ? "account_not_here" : null,
212
+ // 0.7.0: `{ at_ms }` when this repo's last upload was refused because its org has not approved capture, else `null`.
213
+ // A contract change, recorded in `json-read-verbs.test.ts`.
214
+ org_pending: orgPending === null ? null : { at_ms: orgPending.at },
170
215
  last_send: lastSend === null ? null : { at_ms: lastSend.at, seq: lastSend.seq },
171
216
  dashboard: URLS.dashboard,
172
217
  // `CR-216/U3`. A SOURCE NAME, never the credential — `IngestCredential.source`
@@ -229,7 +274,7 @@ export function status(ctx, argv = []) {
229
274
  stuckLines.push("", ...wrap(STATUS.liveStuck(stuck.liveStuck.bytes, stuck.liveStuck.sessions, stuckSpoolLines.liveCommits, stuck.liveStuck.ids), 2));
230
275
  }
231
276
  if (stuck.heldIdle.bytes > 0) {
232
- stuckLines.push("", ...wrap(STATUS.heldIdle(stuck.heldIdle.bytes, stuck.heldIdle.sessions, stuckSpoolLines.idleCommits, stuck.heldIdle.ids), 2));
277
+ 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
278
  }
234
279
  const stuckCommitsTotal = stuckSpoolLines.liveCommits + stuckSpoolLines.idleCommits;
235
280
  // Absence is a SENTENCE, not a blank row. Triggered on the send record rather
@@ -258,7 +303,7 @@ export function status(ctx, argv = []) {
258
303
  // `TODOS[145]`/`[146]`: the consequence first (a session is over and its last turn never closed), then the
259
304
  // neutral fact (commits are waiting for a turn). Both omitted when zero — absence here is the healthy case.
260
305
  if (openTail.ids.length > 0) {
261
- lines.push("", ...wrap(STATUS.openTail(openTail.ids.length), 2));
306
+ lines.push("", ...wrap(STATUS.openTail(openTail.ids.length, channelCommand(ctx.env, ctx.selfPath, COMMANDS.finalize)), 2));
262
307
  }
263
308
  else if (waiting - stuckCommitsTotal > 0) {
264
309
  lines.push("", ...wrap(STATUS.commitsWaiting(waiting - stuckCommitsTotal), 2));
@@ -295,6 +340,20 @@ export function status(ctx, argv = []) {
295
340
  standing: true,
296
341
  }));
297
342
  }
343
+ // 0.7.0. Loud, because the hook that is refusing cannot say why: an unreadable `grants.json` stops every clone
344
+ // that has a remote, whatever `projects.json` holds.
345
+ if (grantsUnreadable(ctx.home)) {
346
+ lines.push("", ...wrap(STATUS.grantsUnreadable(channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)), 2));
347
+ }
348
+ // 0.7.0, `SessionStart`: a missing registration (npm channel only), commit hooks that are off, or `core.hooksPath`.
349
+ lines.push(...hookStateLines(ctx, projectKey, on));
350
+ // §10.2's held beat, with its existing copy, for the repo whose own upload got the 403. Not a new sentence.
351
+ if (orgPending !== null) {
352
+ lines.push("", ...approvalPendingBlock(ctx.colour, resolveRepoSlug(projectKey), orgPending.ownersNotified));
353
+ }
354
+ // Codex runs no user-level hook until the user trusts it. Said, never detected (VQ + Alexander, 2026-10-24).
355
+ if (on)
356
+ lines.push("", ...wrap(AGENT_HOOKS.codexTrust, 2));
298
357
  lines.push("", ...actionLines(ctx, on));
299
358
  writeLines(ctx.stdout, lines);
300
359
  return on ? EXIT.ok : EXIT.notConnected;
@@ -330,6 +389,35 @@ function repoValue(ctx, toplevel) {
330
389
  }
331
390
  return value;
332
391
  }
392
+ /**
393
+ * Slice 2 (S4), brief §3.3: this repo is NOT on here, but the last synced account state grants it (the repo, or its owner) and
394
+ * neither the account nor this machine has turned it off. The account never admits a repo by itself (R3-22), so the row names
395
+ * the gap and the fix row below it is `connect`. It does not change the exit code: a repo that is not on is `notConnected`.
396
+ */
397
+ function grantedOnAccountOnly(home, slug) {
398
+ if (isLocalSlug(slug))
399
+ return false;
400
+ const name = normalizeSlug(slug);
401
+ const account = readAccountState(home).account;
402
+ if (account === null)
403
+ return false;
404
+ const read = readGrants(home);
405
+ if (read.kind === "ok" && read.grants.excluded.includes(name))
406
+ return false;
407
+ if (account.excluded.includes(name))
408
+ return false;
409
+ return account.repos.includes(name) || account.owners.includes(ownerOfSlug(name));
410
+ }
411
+ /** The `basis` row's value (D6): which of the three reasons admits this repo. */
412
+ function basisValue(ctx, projectKey) {
413
+ const basis = captureBasis(ctx.home, resolveRepoSlug(projectKey));
414
+ return basis.kind === "owner" ? STATUS.basisOwner(basis.owner) : basis.kind === "repo" ? STATUS.basisRepo : STATUS.basisClone;
415
+ }
416
+ /** The `--json` spelling of the same three reasons. */
417
+ function basisKind(ctx, projectKey) {
418
+ const basis = captureBasis(ctx.home, resolveRepoSlug(projectKey));
419
+ return basis.kind === "clone" ? "per_clone" : basis.kind;
420
+ }
333
421
  /**
334
422
  * The two trailing actions, aligned as one pair — §10.3 draws their values in a
335
423
  * shared column, which only holds if both labels pad to the longer of the two.
@@ -340,11 +428,11 @@ function repoValue(ctx, toplevel) {
340
428
  function actionLines(ctx, on) {
341
429
  const pairs = on
342
430
  ? [
343
- [STATUS.turnOffLabel, COMMANDS.off],
431
+ [STATUS.turnOffLabel, channelCommand(ctx.env, ctx.selfPath, COMMANDS.off)],
344
432
  [STATUS.revokeLabel, URLS.settings],
345
433
  ]
346
434
  : [
347
- [STATUS.fixCommandLabel, COMMANDS.connect],
435
+ [STATUS.fixCommandLabel, channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)],
348
436
  [STATUS.revokeLabel, URLS.settings],
349
437
  ];
350
438
  const width = Math.max(...pairs.map(([label]) => label.length));
@@ -361,38 +449,156 @@ function actionLines(ctx, on) {
361
449
  * coupling. If a second global flag is ever added at `index.ts`'s site, add it here too.
362
450
  */
363
451
  const OFF_RECOGNIZED_GLOBAL_FLAGS = ["--no-color"];
364
- export function off(ctx, argv = []) {
452
+ function offLocal(ctx, argv) {
365
453
  // `TODOS[184]`. `off` used to take no `argv` at all, so EVERY trailing token — including `--help`
366
454
  // landing here by accident — silently revoked consent (measured on 0.4.3 and 0.4.4 alike). `--help`/
367
455
  // `-h` print help and change nothing; any other argument is refused the same way, also changing
368
456
  // nothing — a revoke must never run on an argument this verb did not parse.
369
457
  if (argv.includes("--help") || argv.includes("-h")) {
370
458
  writeLines(ctx.stdout, [HELP.commands.off]);
371
- return EXIT.ok;
459
+ return { kind: "exit", code: EXIT.ok };
372
460
  }
373
461
  // `--no-color` is a global flag 0.4.4's `off` (which parsed no argv at all) tolerated by construction;
374
462
  // every OTHER argument (including `--json`, which `off` has no mode for) still refuses.
375
463
  const rest = argv.filter((arg) => !OFF_RECOGNIZED_GLOBAL_FLAGS.includes(arg));
376
464
  if (rest.length > 0) {
377
- writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: OFF.unrecognizedArgWhat, why: [OFF.unrecognizedArgWhy] }, ctx.colour));
378
- return EXIT.usage;
465
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", code: "UNRECOGNIZED_ARGUMENT", what: OFF.unrecognizedArgWhat, why: [OFF.unrecognizedArgWhy] }, ctx.colour));
466
+ return { kind: "exit", code: EXIT.usage };
379
467
  }
380
468
  const keys = resolveProjectKeys(ctx.cwd);
381
469
  if (keys === null) {
382
- writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: ERRORS.notAGitRepo, why: [] }, ctx.colour));
383
- return EXIT.failure;
470
+ // D31 · 25B. Outside a work tree there is no repository to turn off, and the picker is where an owner or
471
+ // another repo is unticked. Exit 2: this is the verb used wrongly, not a failure of the machine.
472
+ writeLines(ctx.stderr, renderErrorBlock({
473
+ kind: "bad",
474
+ code: "OFF_NEEDS_REPO",
475
+ what: OFF.outsideRepoWhat,
476
+ why: [],
477
+ fixLabel: OFF.outsideRepoFixLabel,
478
+ fixes: [channelCommand(ctx.env, ctx.selfPath, COMMANDS.connect)],
479
+ }, ctx.colour));
480
+ return { kind: "exit", code: EXIT.usage };
384
481
  }
482
+ const slug = normalizeSlug(resolveRepoSlug(keys.worktree));
483
+ // Asked BEFORE anything is revoked: "was it on" decides whether there is an exclusion to record at all, and the
484
+ // answer after the revoke would always be no.
485
+ const wasOn = isCaptureAllowed(ctx.home, keys, slug);
385
486
  // ⛔ THE REVOKE SIDE, AND IT MUST DELETE THE KEY `connect` WROTE (`D184 §9`).
386
487
  // `revokeProject` deletes by exact string and reports `false` when the key is
387
488
  // absent — so a revoke still keyed on the toplevel would find nothing, print
388
489
  // "already off", and LEAVE THE GRANT IN PLACE. The user believes they
389
490
  // withdrew consent; capture continues. That is the worse direction of this
390
491
  // same bug, and it is the second mutation the cells below pin.
391
- const changed = revokeProject(ctx.home, keys.consent);
492
+ let changed = revokeProject(ctx.home, keys.consent);
493
+ if (isLocalSlug(slug)) {
494
+ // No remote, no identity to turn off but this clone's own: 0.6.x behaviour, byte for byte.
495
+ writeLines(ctx.stdout, [
496
+ ...wrap(changed ? OFF.done : OFF.alreadyOff, 2),
497
+ ...wrap(OFF.note, 2),
498
+ ]);
499
+ return { kind: "exit", code: EXIT.ok };
500
+ }
501
+ // ⛔ A repo with a remote is turned off BY SLUG, so the exclusion does not depend on `grants.json` alone: every
502
+ // OTHER clone on this machine whose consent survives in `projects.json` and names the same repo loses it too.
503
+ // An entry whose directory is gone or has no readable remote is unknown, and unknown matches nothing.
504
+ for (const other of Object.keys(readAllowList(ctx.home))) {
505
+ const otherSlug = remoteSlugOfCommonDir(other);
506
+ if (otherSlug !== null && normalizeSlug(otherSlug) === slug) {
507
+ changed = revokeProject(ctx.home, other) || changed;
508
+ }
509
+ }
510
+ // An unreadable `grants.json` reads as "not on" above (it denies), but the user's `off` still has to be recorded, or
511
+ // be reported as not recorded: `excludeSlug` throws on it rather than rewrite a file whose exclusions it cannot see.
512
+ //
513
+ // Slice 2: a repo the ACCOUNT has turned off is not "on" here either (`account.excluded` denies), yet the user running `off`
514
+ // in it is asking for it to be off on THIS machine too, so that is recorded as well.
515
+ const accountWasOff = readAccountState(ctx.home).account?.excluded.includes(slug) === true;
516
+ let recorded = false;
517
+ if (wasOn || accountWasOff || grantsUnreadable(ctx.home)) {
518
+ try {
519
+ changed = excludeSlug(ctx.home, slug) || changed;
520
+ recorded = true;
521
+ }
522
+ catch (error) {
523
+ if (!(error instanceof GrantsUnreadableError))
524
+ throw error;
525
+ // Fail closed already holds (an unreadable file denies this clone), and the clones' own consent is withdrawn
526
+ // above. What is missing is the record, and a rewrite would drop exclusions we cannot see.
527
+ writeLines(ctx.stderr, renderErrorBlock({
528
+ kind: "bad",
529
+ code: "GRANTS_UNREADABLE",
530
+ what: OFF.grantsUnreadableWhat,
531
+ why: [OFF.grantsUnreadableWhy],
532
+ fixLabel: OFF.grantsUnreadableFixLabel,
533
+ fixes: [channelCommand(ctx.env, ctx.selfPath, COMMANDS.off)],
534
+ }, ctx.colour));
535
+ return { kind: "exit", code: EXIT.failure };
536
+ }
537
+ }
538
+ return { kind: "slug", slug, changed, recorded, accountWasOff };
539
+ }
540
+ /** `off`, local only: no credential means no account to tell, and its words are the 0.7.0 ones byte for byte. */
541
+ export function off(ctx, argv = []) {
542
+ const local = offLocal(ctx, argv);
543
+ if (local.kind === "exit")
544
+ return local.code;
392
545
  writeLines(ctx.stdout, [
393
- ...wrap(changed ? OFF.done : OFF.alreadyOff, 2),
546
+ ...wrap(local.changed ? OFF.doneSlug(local.slug) : OFF.alreadyOff, 2),
394
547
  ...wrap(OFF.note, 2),
395
548
  ]);
396
549
  return EXIT.ok;
397
550
  }
551
+ /**
552
+ * The real `off` (slice 2, S4, brief §2 and §5): the local turn-off first, then — on a machine that has a credential — the
553
+ * exclusion is queued for the account and synced once (3 s, silent on failure; a failed write stays queued and is retried by
554
+ * the next verb). What it says depends on how far the account got:
555
+ *
556
+ * - synced: "…and on your other machines once they sync." plus, if any of them have not caught up, how many keep capturing
557
+ * - not: the local line, and "Stopped here. Your other machines don't know yet; it will retry."
558
+ *
559
+ * A machine with no credential (never connected, or a pre-0.8.0 per-clone consent only) has no account, and says what 0.7.0 said.
560
+ */
561
+ export async function offVerb(ctx, argv, deps) {
562
+ const local = offLocal(ctx, argv);
563
+ if (local.kind === "exit")
564
+ return local.code;
565
+ const { slug, changed, recorded, accountWasOff } = local;
566
+ const hasCredential = loadCredential({ env: ctx.env, home: ctx.home }).kind !== "absent";
567
+ if (!hasCredential) {
568
+ writeLines(ctx.stdout, [...wrap(changed ? OFF.doneSlug(slug) : OFF.alreadyOff, 2), ...wrap(OFF.note, 2)]);
569
+ return EXIT.ok;
570
+ }
571
+ // Queued BEFORE the sync, so a sync that cannot happen (offline, a first sync waiting for a terminal) loses nothing.
572
+ if (recorded)
573
+ queueGrantOps(ctx.home, [{ op: "exclude", kind: "repo", value: slug }], ctx.now());
574
+ const sync = await syncForVerb(ctx, false, deps);
575
+ const synced = sync.kind === "ran" && sync.result.kind === "synced" ? sync.result : null;
576
+ const lines = [];
577
+ if (!changed) {
578
+ lines.push(...wrap(OFF.alreadyOff, 2));
579
+ }
580
+ else if (accountWasOff) {
581
+ lines.push(...wrap(OFF.alreadyOffAccount, 2));
582
+ }
583
+ else {
584
+ lines.push(...wrap(synced !== null ? OFF.doneSlugAccount(slug) : OFF.doneSlug(slug), 2));
585
+ }
586
+ if (synced !== null && changed && !accountWasOff && synced.unsyncedMachines > 0) {
587
+ lines.push(...wrap(OFF.unsyncedOthers(synced.unsyncedMachines), 2));
588
+ }
589
+ if (synced === null && recorded) {
590
+ // "it will retry" is true only of a write that could not be sent or was not attempted; a 400, a 401, a body over the cap or an
591
+ // unreadable `grants.json` stops it ("0.8.0 truth fixes" F5), and the sentence must not promise a retry that will fail the same way.
592
+ const stopped = sync.kind === "ran" &&
593
+ (sync.result.kind === "rejected" || sync.result.kind === "unauthorized" || sync.result.kind === "too-large" || sync.result.kind === "unreadable");
594
+ lines.push(...wrap(stopped ? OFF.notSentStopped : OFF.notSentYet, 2));
595
+ // R2-1: say WHY it stopped, as `connect` does (a 400: the account didn't accept it; a 401: the credential is no longer accepted).
596
+ // An over-cap body or an unreadable file has no reason line of its own: "Stopped here …" alone.
597
+ if (stopped && sync.kind === "ran")
598
+ lines.push(...(stoppedSyncReason(ctx, sync.result) ?? []));
599
+ }
600
+ lines.push(...wrap(OFF.note, 2));
601
+ writeLines(ctx.stdout, lines);
602
+ return EXIT.ok;
603
+ }
398
604
  //# sourceMappingURL=status.js.map
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,KAAK,EACL,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,IAAI,GACL,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAoC,MAAM,mBAAmB,CAAC;AAElF,uEAAuE;AACvE,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAmB,EAAE,IAAuB,EAAE,IAAkB;IAC/F,2DAA2D;IAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAmB,EAAE,OAA0B,EAAE,EAAE,OAAiB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5G,oGAAoG;IACpG,oEAAoE;IACpE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,QAAiB,CAAC,CAAC,iGAAiG;QACrI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,4EAA4E;IAC5E,2EAA2E;IAC3E,8EAA8E;IAC9E,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,6HAA6H;IAC7H,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;IAEjC,2EAA2E;IAC3E,uEAAuE;IACvE,qEAAqE;IACrE,uDAAuD;IACvD,EAAE;IACF,iHAAiH;IACjH,gHAAgH;IAChH,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,6EAA6E;IAC7E,+EAA+E;IAC/E,4EAA4E;IAC5E,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3D,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,+EAA+E;IAC/E,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,wGAAwG;IACxG,0GAA0G;IAC1G,0GAA0G;IAC1G,2FAA2F;IAC3F,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,2FAA2F;IAC3F,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,iIAAiI;IACjI,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,iHAAiH;IACjH,MAAM,sBAAsB,GAAG,6BAA6B,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACnF,gHAAgH;IAChH,6GAA6G;IAC7G,2GAA2G;IAC3G,0EAA0E;IAC1E,0GAA0G;IAC1G,mGAAmG;IACnG,0GAA0G;IAC1G,yGAAyG;IACzG,4FAA4F;IAC5F,0FAA0F;IAC1F,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAC/E,sGAAsG;IACtG,+FAA+F;IAC/F,4EAA4E;IAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/D,kGAAkG;IAClG,kGAAkG;IAClG,sEAAsE;IACtE,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,+FAA+F;IAC/F,sGAAsG;IACtG,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,MAAM,OAAO,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAChG,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1D,wGAAwG;IACxG,iGAAiG;IACjG,MAAM,MAAM,GACV,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9D,wHAAwH;IACxH,6FAA6F;IAC7F,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,MAAM,IAAI,GACR,EAAE;QACF,UAAU,KAAK,IAAI;QACnB,OAAO,KAAK,IAAI;QAChB,QAAQ,KAAK,IAAI;QACjB,UAAU,CAAC,IAAI,KAAK,CAAC;QACrB,SAAS,CAAC,KAAK,KAAK,CAAC;QACrB,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;QACzB,aAAa,KAAK,CAAC;QACnB,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC;QAC3B,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC;QACxB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC;IACb,8HAA8H;IAC9H,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IACvF,MAAM,KAAK,GAAa;QACtB,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,CAC5D,GAAG,CAAC,MAAM,EACV,QAAQ,EACR,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAC1C,EAAE;QACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAClE,GAAG,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,WAAW;gBACX,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACpE,CAAC,CAAC,EAAE,CAAC;KACV,CAAC;IAEF,sEAAsE;IACtE,2EAA2E;IAC3E,kDAAkD;IAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CACR,QAAQ,CACN,UAAU,EACV,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CACrF,CACF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CACzF,CAAC;IACF,wFAAwF;IACxF,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAEzC,yEAAyE;IACzE,qEAAqE;IACrE,EAAE;IACF,2EAA2E;IAC3E,+EAA+E;IAC/E,6EAA6E;IAC7E,8EAA8E;IAC9E,EAAE;IACF,0EAA0E;IAC1E,8EAA8E;IAC9E,4EAA4E;IAC5E,wEAAwE;IACxE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjD,YAAY,CAAC,GAAG,EAAE,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;YAChD,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC;YACjC,QAAQ,EAAE,UAAU;YACpB,6GAA6G;YAC7G,yCAAyC;YACzC,+GAA+G;YAC/G,2HAA2H;YAC3H,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;YAChF,qHAAqH;YACrH,4DAA4D;YAC5D,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE;YAClE,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE;YAC/E,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,+EAA+E;YAC/E,yEAAyE;YACzE,4EAA4E;YAC5E,4EAA4E;YAC5E,+CAA+C;YAC/C,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC9D,2EAA2E;YAC3E,qEAAqE;YACrE,uEAAuE;YACvE,WAAW,EAAE;gBACX,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ;aAC9B;YACD,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE;YACrE,wGAAwG;YACxG,wGAAwG;YACxG,kFAAkF;YAClF,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;YACrF,eAAe,EAAE,OAAO;YACxB,8GAA8G;YAC9G,eAAe,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE;YAC/E,gBAAgB,EAAE;gBAChB,QAAQ,EAAE,eAAe,EAAE,QAAQ,IAAI,CAAC;gBACxC,MAAM,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;gBACpC,SAAS,EAAE,eAAe,EAAE,SAAS,IAAI,CAAC;gBAC1C,MAAM,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;aACrC;YACD,uBAAuB,EAAE,sBAAsB;YAC/C,iGAAiG;YACjG,qGAAqG;YACrG,6BAA6B;YAC7B,SAAS,EAAE,aAAa;YACxB,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE;YAC/D,4FAA4F;YAC5F,iGAAiG;YACjG,mGAAmG;YACnG,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE;YAChF,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC7E,aAAa,EAAE,YAAY;YAC3B,8FAA8F;YAC9F,+FAA+F;YAC/F,kBAAkB,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE;SAClG,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,mGAAmG;IACnG,uGAAuG;IACvG,oGAAoG;IACpG,+CAA+C;IAC/C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9B,UAAU,CAAC,IAAI,CACb,EAAE,EACF,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAChI,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC7B,UAAU,CAAC,IAAI,CACb,EAAE,EACF,GAAG,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,KAAK,CAAC,QAAQ,CAAC,KAAK,EACpB,KAAK,CAAC,QAAQ,CAAC,QAAQ,EACvB,eAAe,CAAC,WAAW,EAC3B,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClE,KAAK,CAAC,QAAQ,CAAC,GAAG,CACnB,EACD,CAAC,CACF,CACF,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,eAAe,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;IACpF,8EAA8E;IAC9E,sEAAsE;IACtE,gFAAgF;IAChF,IAAI,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,uGAAuG;QACvG,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC5B,CAAC;IACD,8EAA8E;IAC9E,+EAA+E;IAC/E,8EAA8E;IAC9E,sCAAsC;IACtC,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,wGAAwG;IACxG,8CAA8C;IAC9C,IAAI,CAAC,CAAC,EAAE,IAAI,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC5B,CAAC;IACD,2GAA2G;IAC3G,4GAA4G;IAC5G,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7H,CAAC;SAAM,IAAI,OAAO,GAAG,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1J,CAAC;IACD,IAAI,sBAAsB,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,4EAA4E;IAC5E,gFAAgF;IAChF,+EAA+E;IAC/E,8EAA8E;IAC9E,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CACR,EAAE,EACF,GAAG,uBAAuB,CAAC;YACzB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW;YACX,KAAK;YACL,WAAW;YACX,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAED,+GAA+G;IAC/G,qDAAqD;IACrD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,oHAAoH;IACpH,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;IAEnD,4GAA4G;IAC5G,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9G,CAAC;IACD,6GAA6G;IAC7G,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,SAAS,CAAC,GAAmB,EAAE,QAAgB;IACtD,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IAElF,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC;IACnD,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IACxE,2EAA2E;IAC3E,mEAAmE;IACnE,OAAO,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,YAAY,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QAC1F,MAAM,IAAI,CAAC,CAAC;QACZ,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,IAAY;IACtD,IAAI,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAC/C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,iFAAiF;AACjF,SAAS,UAAU,CAAC,GAAmB,EAAE,UAAkB;IACzD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;AAChI,CAAC;AAED,uDAAuD;AACvD,SAAS,SAAS,CAAC,GAAmB,EAAE,UAAkB;IACxD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,GAAmB,EAAE,EAAW;IACnD,MAAM,KAAK,GAAuB,EAAE;QAClC,CAAC,CAAC;YACE,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1E,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;SACpC;QACH,CAAC,CAAC;YACE,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjF,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;SACpC,CAAC;IACN,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1F,OAAO,KAAK,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAsB,CAAC,YAAY,CAAC,CAAC;AAoBtE,SAAS,QAAQ,CAAC,GAAmB,EAAE,IAAuB;IAC5D,kGAAkG;IAClG,qGAAqG;IACrG,gGAAgG;IAChG,4EAA4E;IAC5E,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,uGAAuG;IACvG,wFAAwF;IACxF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,UAAU,CACR,GAAG,CAAC,MAAM,EACV,gBAAgB,CACd,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,EAC5G,GAAG,CAAC,MAAM,CACX,CACF,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,yGAAyG;QACzG,iGAAiG;QACjG,UAAU,CACR,GAAG,CAAC,MAAM,EACV,gBAAgB,CACd;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,GAAG,CAAC,eAAe;YACzB,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,GAAG,CAAC,mBAAmB;YACjC,KAAK,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;SACjE,EACD,GAAG,CAAC,MAAM,CACX,CACF,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,gHAAgH;IAChH,8CAA8C;IAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,sEAAsE;IACtE,2EAA2E;IAC3E,+DAA+D;IAC/D,IAAI,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,2FAA2F;QAC3F,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;YACrB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/C,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;SACrB,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,+GAA+G;IAC/G,8GAA8G;IAC9G,sGAAsG;IACtG,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,IAAI,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5D,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC;QACtD,CAAC;IACH,CAAC;IACD,qHAAqH;IACrH,qHAAqH;IACrH,EAAE;IACF,6HAA6H;IAC7H,qFAAqF;IACrF,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3F,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAK,IAAI,aAAa,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC;YACjD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,qBAAqB,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC3D,6GAA6G;YAC7G,2FAA2F;YAC3F,UAAU,CACR,GAAG,CAAC,MAAM,EACV,gBAAgB,CACd;gBACE,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,GAAG,CAAC,oBAAoB;gBAC9B,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC;gBAC9B,QAAQ,EAAE,GAAG,CAAC,wBAAwB;gBACtC,KAAK,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC7D,EACD,GAAG,CAAC,MAAM,CACX,CACF,CAAC;YACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AAClE,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,GAAG,CAAC,GAAmB,EAAE,OAA0B,EAAE;IACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAC7C,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;QACrB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;KACrB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAmB,EAAE,IAAuB,EAAE,IAAkB;IAC5F,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IACzD,MAAM,aAAa,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;IACzF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,qHAAqH;IACrH,IAAI,QAAQ;QAAE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACjG,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,EAAE,CAAC;QAChC,+HAA+H;QAC/H,qIAAqI;QACrI,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,KAAK;YACnB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACpJ,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,kIAAkI;QAClI,gGAAgG;QAChG,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC"}
@@ -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,27 @@
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`, `grants-account.json`, `projects.json` and session state; opens no transcript, makes no request and
9
+ * writes nothing — the one bounded account sync (slice 2) is `statusVerb`'s, which runs before this and hands in its outcome.
10
+ * It spawns one `git remote get-url` per per-clone consent (to count them as repos), and nothing else.
11
+ *
12
+ * ⚠ **`last sent` names no repo.** The drawn screen says `4 minutes ago · alexvibecommit/example-repo`, but session state
13
+ * 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
14
+ * needs the digest inverted or a slug recorded beside it — a state-format change for another PR, reported to the design.
15
+ * ⚠ **`owners` rows carry no clone count** ("3 clones here"): counting them is a filesystem scan (`scan`'s 2-3 s on a
16
+ * heavy machine), which `status` must not pay. The row says what is true without one: later clones are covered.
17
+ */
18
+ import { type CommandContext } from "./context.js";
19
+ import { type VerbSync } from "../grants_verb.js";
20
+ /**
21
+ * "0.8.0 truth fixes" F6: the same `on account` and `pending` rows, for the screen of a repo. They are about the machine and the
22
+ * account, not the repo, but they are what notice 10, `connect`'s "They stay granted on your account" and the README say `status`
23
+ * lists, and a person reads `status` from inside a clone. Empty when there is nothing to say (or `grants.json` is unreadable).
24
+ * Text only: the in-repo `--json` document is unchanged.
25
+ */
26
+ export declare function accountRowsFor(ctx: CommandContext, sync: VerbSync): string[];
27
+ export declare function machineStatus(ctx: CommandContext, argv: readonly string[], sync?: VerbSync): number;