@vibe-commit/capture 0.2.3 → 0.4.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 (58) hide show
  1. package/README.md +33 -2
  2. package/dist/agent_hooks.d.ts +53 -8
  3. package/dist/agent_hooks.js +180 -19
  4. package/dist/agent_hooks.js.map +1 -1
  5. package/dist/agent_install.d.ts +0 -17
  6. package/dist/agent_install.js +1 -24
  7. package/dist/agent_install.js.map +1 -1
  8. package/dist/agents/cursor.js +54 -18
  9. package/dist/agents/cursor.js.map +1 -1
  10. package/dist/commands/auth.d.ts +24 -9
  11. package/dist/commands/auth.js +38 -10
  12. package/dist/commands/auth.js.map +1 -1
  13. package/dist/commands/browser_credential.d.ts +89 -0
  14. package/dist/commands/browser_credential.js +181 -0
  15. package/dist/commands/browser_credential.js.map +1 -0
  16. package/dist/commands/connect.d.ts +26 -9
  17. package/dist/commands/connect.js +52 -90
  18. package/dist/commands/connect.js.map +1 -1
  19. package/dist/commands/finalize.d.ts +35 -0
  20. package/dist/commands/finalize.js +283 -0
  21. package/dist/commands/finalize.js.map +1 -0
  22. package/dist/commands/status.js +56 -2
  23. package/dist/commands/status.js.map +1 -1
  24. package/dist/copy/index.d.ts +1 -1
  25. package/dist/copy/index.js +1 -1
  26. package/dist/copy/index.js.map +1 -1
  27. package/dist/copy/strings.d.ts +81 -2
  28. package/dist/copy/strings.js +94 -1
  29. package/dist/copy/strings.js.map +1 -1
  30. package/dist/exit.d.ts +7 -0
  31. package/dist/exit.js +7 -0
  32. package/dist/exit.js.map +1 -1
  33. package/dist/hooks/entry.d.ts +83 -0
  34. package/dist/hooks/entry.js +117 -28
  35. package/dist/hooks/entry.js.map +1 -1
  36. package/dist/hooks/post_rewrite.js +20 -3
  37. package/dist/hooks/post_rewrite.js.map +1 -1
  38. package/dist/index.d.ts +1 -1
  39. package/dist/index.js +14 -2
  40. package/dist/index.js.map +1 -1
  41. package/dist/oauth/mint.d.ts +97 -0
  42. package/dist/oauth/mint.js +120 -0
  43. package/dist/oauth/mint.js.map +1 -0
  44. package/dist/oauth/signin.d.ts +25 -0
  45. package/dist/oauth/signin.js +30 -0
  46. package/dist/oauth/signin.js.map +1 -1
  47. package/dist/post.d.ts +53 -0
  48. package/dist/post.js +73 -5
  49. package/dist/post.js.map +1 -1
  50. package/dist/spool.d.ts +37 -0
  51. package/dist/spool.js +244 -36
  52. package/dist/spool.js.map +1 -1
  53. package/dist/state.d.ts +152 -0
  54. package/dist/state.js +255 -2
  55. package/dist/state.js.map +1 -1
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/package.json +1 -1
@@ -12,17 +12,21 @@
12
12
  * - `CR-025` owns the ending: capture the current session and print the live
13
13
  * `/app/commits/<sha>` URL. The seam is marked below.
14
14
  *
15
- * `CR-084d` lands the browser sign-in beat (PKCE loopback → a user-principal
16
- * token for the READ lane) behind `--sign-in`. It is opt-in and not part of the
17
- * default install for one reason: **sign-in does not produce an ingest
18
- * credential**, so it cannot replace the beat below. No route in
19
- * `vibecommit-mcp` mints a `vcik_` — `mintIngestCredential` exists and has no
20
- * call site outside that repo's own tests — so `VIBECOMMIT_TOKEN` remains the
21
- * supported path for capture, exactly as before.
15
+ * `CR-084d` landed the browser sign-in beat (PKCE loopback → a user-principal
16
+ * token for the READ lane) behind `--sign-in`, opt-in because sign-in did not
17
+ * produce an ingest credential.
22
18
  *
23
- * @provenance vibecommit-mcp src/oauth/ingest_credential.ts — no route mints one, verified
19
+ * ⚠ `CR-226` CHANGED THAT, AND THIS NOTE USED TO SAY THE OPPOSITE. The server
20
+ * now has a route in front of `mintIngestCredential`, so a fresh machine that
21
+ * reaches the credential beat with a human at the terminal signs in through the
22
+ * browser and mints its own credential there (`browser_credential.ts`) — browser
23
+ * FIRST, with the old warning pointing at `vibecommit auth` as the fallback when
24
+ * any step fails. `--sign-in` keeps its meaning (sign in for the read lane even
25
+ * when a credential exists), and `VIBECOMMIT_TOKEN` still wins over everything.
26
+ *
27
+ * @provenance vibecommit-mcp src/transport/server.ts — POST /oauth/ingest-credential now mints one, verified
24
28
  */
25
- import { CONNECT, COMMANDS, AGENT_HOOKS, COMMIT_HOOK, ERRORS, HELP, PATH_CLASH, RUNTIME, SIGNIN, URLS, } from "../copy/index.js";
29
+ import { AUTH, CONNECT, COMMANDS, AGENT_HOOKS, COMMIT_HOOK, ERRORS, HELP, PATH_CLASH, RUNTIME, URLS, } from "../copy/index.js";
26
30
  import { dialectFor } from "../agents/registry.js";
27
31
  import { grantProject, isAffirmative, isProjectAllowed } from "../consent.js";
28
32
  import { loadCredential } from "../credential.js";
@@ -31,15 +35,14 @@ import { resolveRepoSlug } from "../git.js";
31
35
  import { confinementRoots, readSpan, DEFAULT_HOOK_BUDGET_MS } from "../hooks/entry.js";
32
36
  import { installAgentHooks } from "../agent_install.js";
33
37
  import { classifyInstall, installPostCommitHook } from "../install.js";
34
- import { mcpUrl } from "../oauth/discovery.js";
35
- import { loadSession } from "../oauth/session.js";
36
- import { openBrowser, signIn } from "../oauth/signin.js";
37
38
  import { CAPTURE_NOT_APPROVED, deliver, ingestUrl, } from "../post.js";
38
39
  import { resolveProjectKeys } from "../project.js";
39
40
  import { meetsNodeFloor, NODE_FLOOR_TEXT } from "../runtime.js";
40
- import { paint, renderErrorBlock, truncatePath, wrap } from "../term.js";
41
+ import { credentialsPath } from "../paths.js";
42
+ import { paint, renderErrorBlock, tildePath, truncatePath, wrap } from "../term.js";
41
43
  import { writeLines } from "./context.js";
42
- export async function connect(ctx, options = {}) {
44
+ import { signInBeat } from "./browser_credential.js";
45
+ export async function connect(ctx, options = {}, deps = {}) {
43
46
  // (1) The runtime floor refuses LOUDLY here, unlike in the hook: the user is
44
47
  // watching and can act, and D57 §DX11 asks for exactly that asymmetry.
45
48
  if (!meetsNodeFloor(ctx.nodeVersion)) {
@@ -72,7 +75,7 @@ export async function connect(ctx, options = {}) {
72
75
  }
73
76
  if (isProjectAllowed(ctx.home, keys.consent)) {
74
77
  writeLines(ctx.stdout, wrap(CONNECT.alreadyConnected, 2));
75
- return await afterConsent(ctx, keys, options);
78
+ return await afterConsent(ctx, keys, options, deps);
76
79
  }
77
80
  // (3) The disclosure, then the gate.
78
81
  writeLines(ctx.stdout, disclosure(ctx));
@@ -97,7 +100,7 @@ export async function connect(ctx, options = {}) {
97
100
  return EXIT.ok;
98
101
  }
99
102
  grantProject(ctx.home, keys.consent, ctx.now());
100
- return await afterConsent(ctx, keys, options);
103
+ return await afterConsent(ctx, keys, options, deps);
101
104
  }
102
105
  /**
103
106
  * Consent is settled. Sign in if asked, then do the credential beat.
@@ -108,81 +111,13 @@ export async function connect(ctx, options = {}) {
108
111
  * A failure in one says nothing about the other — which is why a failed sign-in
109
112
  * returns here rather than falling through to report the install as fine.
110
113
  */
111
- async function afterConsent(ctx, keys, options) {
114
+ async function afterConsent(ctx, keys, options, deps) {
112
115
  if (options.signIn === true) {
113
- const code = await signInBeat(ctx);
116
+ const code = await signInBeat(ctx, { retry: "sign-in" });
114
117
  if (code !== EXIT.ok)
115
118
  return code;
116
119
  }
117
- return await credentialBeat(ctx, keys);
118
- }
119
- /**
120
- * The browser sign-in beat — `CR-084d`.
121
- *
122
- * Reachable only behind `--sign-in`. That is deliberate and not timidity: an
123
- * unconditional beat here would open a browser during every `connect`, including
124
- * the ones run by a wrapper, and sign-in cannot mint the credential the rest of
125
- * `connect` is about. When a read verb lands (`why` — `CR-086`; `report` —
126
- * `CR-108`) it calls `readWithSession`, which drives the same session and needs
127
- * no beat here at all.
128
- */
129
- async function signInBeat(ctx) {
130
- if (loadSession(ctx.home).kind === "ok") {
131
- writeLines(ctx.stdout, wrap(SIGNIN.alreadySignedIn, 2));
132
- return EXIT.ok;
133
- }
134
- const endpoint = mcpUrl(ctx.env);
135
- if (endpoint === null) {
136
- writeLines(ctx.stderr, signInError(ctx, SIGNIN.noServerWhat, SIGNIN.noServerRefusedWhy));
137
- return EXIT.failure;
138
- }
139
- const outcome = await signIn({
140
- home: ctx.home,
141
- mcpEndpoint: endpoint,
142
- fetch,
143
- nowMs: () => ctx.now().getTime(),
144
- openBrowser,
145
- onAuthorizeUrl: (url, opened) => {
146
- writeLines(ctx.stdout, [
147
- "",
148
- ...wrap(opened ? SIGNIN.opening : SIGNIN.manualLabel, 2),
149
- // `accent` on a URL is §13.1's one exception, and the line carries no
150
- // second colour. Printed on BOTH paths: a user who wants to open it in a
151
- // different browser than the default should not have to guess it.
152
- ` ${paint(ctx.colour, "accent", url)}`,
153
- ...(opened ? wrap(SIGNIN.waiting, 2) : []),
154
- ]);
155
- },
156
- page: { done: SIGNIN.browserDone, refused: SIGNIN.browserRefused },
157
- });
158
- if (outcome.kind === "ok") {
159
- writeLines(ctx.stdout, ["", ...wrap(SIGNIN.done, 2)]);
160
- return EXIT.ok;
161
- }
162
- writeLines(ctx.stderr, ["", ...signInFailure(ctx, outcome)]);
163
- return EXIT.failure;
164
- }
165
- /** §13.6's shape for a sign-in failure. One renderer, six outcomes. */
166
- function signInFailure(ctx, outcome) {
167
- switch (outcome.kind) {
168
- case "no-server":
169
- return signInError(ctx, SIGNIN.noServerWhat, outcome.detail === "unreachable"
170
- ? SIGNIN.noServerUnreachableWhy
171
- : SIGNIN.noServerMalformedWhy, SIGNIN.noServerFix);
172
- case "denied":
173
- return signInError(ctx, SIGNIN.deniedWhat, SIGNIN.deniedWhy, SIGNIN.deniedFix);
174
- case "timeout":
175
- return signInError(ctx, SIGNIN.timeoutWhat, SIGNIN.timeoutWhy, SIGNIN.timeoutFix);
176
- case "rejected":
177
- return signInError(ctx, SIGNIN.rejectedWhat, SIGNIN.rejectedWhy, SIGNIN.rejectedFix);
178
- case "unreachable":
179
- return signInError(ctx, SIGNIN.unreachableWhat, SIGNIN.unreachableWhy, SIGNIN.unreachableFix);
180
- case "malformed":
181
- return signInError(ctx, SIGNIN.malformedWhat, SIGNIN.malformedWhy, SIGNIN.malformedFix);
182
- }
183
- }
184
- function signInError(ctx, what, why, fixLabel = SIGNIN.noServerFix) {
185
- return renderErrorBlock({ kind: "bad", what, why: [why], fixLabel, fixes: [COMMANDS.signIn] }, ctx.colour);
120
+ return await credentialBeat(ctx, keys, deps);
186
121
  }
187
122
  /**
188
123
  * The disclosure block — `CR-111d`, style guide §10.2 transcribed.
@@ -242,11 +177,33 @@ function disclosure(ctx) {
242
177
  * name, and on npm >= 7 the clash surfaces as EEXIST during the first install of
243
178
  * exactly the population that installs commit tooling.
244
179
  */
245
- async function credentialBeat(ctx, keys) {
180
+ async function credentialBeat(ctx, keys, deps) {
246
181
  const load = loadCredential({ env: ctx.env, home: ctx.home });
247
182
  if (load.kind === "ok") {
248
183
  return await captureBeat(ctx, keys, load.credential);
249
184
  }
185
+ // ⛔ ONLY FOR `absent`, AND ONLY WITH A HUMAN AT THE TERMINAL (`CR-226`).
186
+ // - `absent`: a credential that is present but wrong-class, unreadable or
187
+ // insecure is a FAULT, and a fault's fix is `vibecommit auth` (D206 §5,
188
+ // `credential-fix-copy.test.ts`). Minting over it would hide the fault.
189
+ // - `stdinIsTty`: a wrapper or a CI job runs `connect` too, and a browser
190
+ // opened there waits five minutes for nobody. The old warning is the
191
+ // right answer for them, and it is what they still get.
192
+ if (load.kind === "absent" && ctx.stdinIsTty && deps.browser !== undefined) {
193
+ const minted = await deps.browser(ctx, "connect");
194
+ if (minted.kind === "saved") {
195
+ writeLines(ctx.stdout, [
196
+ "",
197
+ ...renderErrorBlock({
198
+ kind: "ok",
199
+ what: AUTH.savedWhat,
200
+ why: [AUTH.savedWhy(tildePath(credentialsPath(ctx.home), ctx.home))],
201
+ }, ctx.colour),
202
+ ]);
203
+ return await captureBeat(ctx, keys, minted.credential);
204
+ }
205
+ // Failed: the reason is already on stderr. Fall through to the paste path.
206
+ }
250
207
  writeLines(ctx.stderr, renderErrorBlock({
251
208
  kind: "warn",
252
209
  what: CONNECT.credentialNeededWhat,
@@ -267,8 +224,10 @@ async function credentialBeat(ctx, keys) {
267
224
  * the client may render but may not analyze (D60 §D6). It is not obtainable
268
225
  * from the server either: `send()` returns a status and discards the body,
269
226
  * so no id, sha or count exists on this side of the wire.
270
- * - **`Opening your browser to sign in...`.** That beat is the oauth lane's.
271
- * Until PKCE lands, `VIBECOMMIT_TOKEN` is the supported path.
227
+ * - **`Opening your browser to sign in...`.** That beat runs BEFORE this one
228
+ * now (`credentialBeat` → `browser_credential.ts`, `CR-226`), and only when
229
+ * there was no credential to start with — by the time this function runs,
230
+ * the credential exists however it arrived.
272
231
  */
273
232
  async function captureBeat(ctx, keys, credential) {
274
233
  // ⚠ EVERY USE BELOW BUT ONE IS THE TOPLEVEL ROLE — locating the transcript,
@@ -320,6 +279,9 @@ async function captureBeat(ctx, keys, credential) {
320
279
  transcriptPath: found.path,
321
280
  timeoutMs: DEFAULT_HOOK_BUDGET_MS,
322
281
  nowMs: ctx.now().getTime(),
282
+ // ⛔ NOT A HOOK. `connect` backfills the located transcript, which is not evidence that the session is alive: it
283
+ // would otherwise rewrite an old session's state file and (under the mtime clock) make it "live" — the D2 shape.
284
+ byHook: false,
323
285
  }, found.size,
324
286
  // ⛔ THE ROOT SET, and it is `confinementRoots` — THE SAME FUNCTION THE
325
287
  // HOOK PATH CALLS (`entry.ts`), not a set built here. `D184 §3`: the
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * `vibecommit finalize` — the CALLER asserts a session is over (`TODOS[146]`, VD decision 5).
3
+ *
4
+ * ## ⛔ THE DEFECT, AND WHY THE ANSWER IS A VERB
5
+ *
6
+ * The server holds the last turn of a delta as a tentative tail, because a chunk boundary is not a turn
7
+ * boundary, and seals a turn only when a following prompt opens the next one. A session that is never
8
+ * followed by another prompt — a one-shot `claude -p`, the last turn of any session that is not resumed —
9
+ * therefore seals NOTHING: no capture, no turn, no commit edge, however many commits it made. Nothing
10
+ * inside the process can say honestly that the session is over (`SessionEnd`'s `reason` is `"other"`
11
+ * whether or not a resume follows). The caller can. A script that just ran `claude -p` knows it is done.
12
+ *
13
+ * This verb sends that assertion as `X-Session-Final: 1` on the session's MAIN stream and keeps what the
14
+ * server answers: `sealed` (the last turn is now recorded), `already` (nothing was left open — a repeat is
15
+ * a no-op), or silence (an older server, which ignores the header). ⛔ Silence is NOT success, and has its
16
+ * own exit code: a script must be able to separate a close that was confirmed from a delivery that merely hoped.
17
+ *
18
+ * ## What it reuses, and why it is not a second pipeline
19
+ *
20
+ * The same consent gate, credential, spool, pending-promotion and rewrite-spool as a `Stop` hook, so a
21
+ * commit the hook was holding rides THIS request and binds on the turn it seals. Sub-agent streams go
22
+ * FIRST: the server folds them into the parent turn when it seals it, so sealing before they arrive would
23
+ * seal a poorer turn.
24
+ *
25
+ * ## What it refuses to do
26
+ *
27
+ * - Guess. `--latest` closes the ONE session that delivered in the last 24 hours and lists them when there
28
+ * are several — the attribution ladder's rule: ambiguity is named, never picked.
29
+ * - Touch a session this repo never captured, or one still being written (`--force` overrides the second:
30
+ * closing a live session seals a turn that is not complete, and a later resume opens a new turn rather
31
+ * than extending it).
32
+ * - Read anywhere but the agent's own transcript root (`admitsTranscript`, the same confinement as a hook).
33
+ */
34
+ import { type CommandContext } from "./context.js";
35
+ export declare function finalize(ctx: CommandContext, argv: readonly string[]): Promise<number>;
@@ -0,0 +1,283 @@
1
+ /**
2
+ * `vibecommit finalize` — the CALLER asserts a session is over (`TODOS[146]`, VD decision 5).
3
+ *
4
+ * ## ⛔ THE DEFECT, AND WHY THE ANSWER IS A VERB
5
+ *
6
+ * The server holds the last turn of a delta as a tentative tail, because a chunk boundary is not a turn
7
+ * boundary, and seals a turn only when a following prompt opens the next one. A session that is never
8
+ * followed by another prompt — a one-shot `claude -p`, the last turn of any session that is not resumed —
9
+ * therefore seals NOTHING: no capture, no turn, no commit edge, however many commits it made. Nothing
10
+ * inside the process can say honestly that the session is over (`SessionEnd`'s `reason` is `"other"`
11
+ * whether or not a resume follows). The caller can. A script that just ran `claude -p` knows it is done.
12
+ *
13
+ * This verb sends that assertion as `X-Session-Final: 1` on the session's MAIN stream and keeps what the
14
+ * server answers: `sealed` (the last turn is now recorded), `already` (nothing was left open — a repeat is
15
+ * a no-op), or silence (an older server, which ignores the header). ⛔ Silence is NOT success, and has its
16
+ * own exit code: a script must be able to separate a close that was confirmed from a delivery that merely hoped.
17
+ *
18
+ * ## What it reuses, and why it is not a second pipeline
19
+ *
20
+ * The same consent gate, credential, spool, pending-promotion and rewrite-spool as a `Stop` hook, so a
21
+ * commit the hook was holding rides THIS request and binds on the turn it seals. Sub-agent streams go
22
+ * FIRST: the server folds them into the parent turn when it seals it, so sealing before they arrive would
23
+ * seal a poorer turn.
24
+ *
25
+ * ## What it refuses to do
26
+ *
27
+ * - Guess. `--latest` closes the ONE session that delivered in the last 24 hours and lists them when there
28
+ * are several — the attribution ladder's rule: ambiguity is named, never picked.
29
+ * - Touch a session this repo never captured, or one still being written (`--force` overrides the second:
30
+ * closing a live session seals a turn that is not complete, and a later resume opens a new turn rather
31
+ * than extending it).
32
+ * - Read anywhere but the agent's own transcript root (`admitsTranscript`, the same confinement as a hook).
33
+ */
34
+ import { existsSync, readdirSync, statSync } from "node:fs";
35
+ import { join } from "node:path";
36
+ import { DEFAULT_AGENT_ID, admitsTranscript, transcriptRoots } from "../agents/registry.js";
37
+ import { ERRORS, FINALIZE } from "../copy/index.js";
38
+ import { isProjectAllowed } from "../consent.js";
39
+ import { loadCredential } from "../credential.js";
40
+ import { EXIT } from "../exit.js";
41
+ import { headRef, resolveRepoSlug } from "../git.js";
42
+ import { confinementRoots, deliverSubagents, fileSize, readSpan, sendTimeoutMs } from "../hooks/entry.js";
43
+ import { repoSessionsDir, sessionStatePath } from "../paths.js";
44
+ import { deliver, ingestUrl } from "../post.js";
45
+ import { resolveProjectKeys } from "../project.js";
46
+ import { capSpool, capSuccessors, readRewrites, readSpool } from "../spool.js";
47
+ import { fileState, loadSessionState, saveSessionState } from "../state.js";
48
+ import { renderErrorBlock, wrap } from "../term.js";
49
+ import { writeLines } from "./context.js";
50
+ /** A transcript modified this recently is a session still being written. */
51
+ const STILL_WRITING_MS = 5_000;
52
+ /** `--latest` considers sessions that delivered inside this window. */
53
+ const LATEST_WINDOW_MS = 24 * 60 * 60 * 1000;
54
+ /** One wall-clock budget for the whole verb: not a hook, so not the hook's few seconds. */
55
+ const SEND_BUDGET_MS = 60_000;
56
+ /** The id becomes a filename component; keep it to what a session id is. */
57
+ const SESSION_ID = /^[A-Za-z0-9._-]{1,128}$/;
58
+ function parseArgs(argv) {
59
+ let session = null;
60
+ let latest = false;
61
+ let force = false;
62
+ for (let i = 0; i < argv.length; i += 1) {
63
+ const a = argv[i];
64
+ if (a === "--latest")
65
+ latest = true;
66
+ else if (a === "--force")
67
+ force = true;
68
+ else if (a === "--session") {
69
+ const v = argv[i + 1];
70
+ if (v === undefined)
71
+ return null;
72
+ session = v;
73
+ i += 1;
74
+ }
75
+ else if (a.startsWith("--session="))
76
+ session = a.slice("--session=".length);
77
+ else
78
+ return null;
79
+ }
80
+ if ((session === null) === !latest)
81
+ return null; // exactly one of the two
82
+ return { session, latest, force };
83
+ }
84
+ export async function finalize(ctx, argv) {
85
+ const args = parseArgs(argv);
86
+ if (args === null) {
87
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.needTarget, why: [] }, ctx.colour));
88
+ return EXIT.usage;
89
+ }
90
+ const keys = resolveProjectKeys(ctx.cwd);
91
+ if (keys === null) {
92
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: ERRORS.notAGitRepo, why: [] }, ctx.colour));
93
+ return EXIT.failure;
94
+ }
95
+ const projectKey = keys.worktree;
96
+ if (!isProjectAllowed(ctx.home, keys.consent)) {
97
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: ERRORS.notConnected, why: [] }, ctx.colour));
98
+ return EXIT.notConnected;
99
+ }
100
+ const load = loadCredential({ env: ctx.env, home: ctx.home });
101
+ if (load.kind !== "ok") {
102
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: ERRORS.notConnected, why: [] }, ctx.colour));
103
+ return EXIT.notConnected;
104
+ }
105
+ const url = ingestUrl(ctx.env);
106
+ if (url === null) {
107
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.notDelivered, why: [] }, ctx.colour));
108
+ return EXIT.failure;
109
+ }
110
+ // ── Which session. ──
111
+ const nowMs = ctx.now().getTime();
112
+ let sessionId;
113
+ if (args.session !== null) {
114
+ if (!SESSION_ID.test(args.session)) {
115
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.badSessionId, why: [] }, ctx.colour));
116
+ return EXIT.usage;
117
+ }
118
+ sessionId = args.session;
119
+ }
120
+ else {
121
+ const recent = recentSessions(ctx.home, projectKey, nowMs);
122
+ if (recent.length === 0) {
123
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.noRecentSession, why: [] }, ctx.colour));
124
+ return EXIT.usage;
125
+ }
126
+ if (recent.length > 1) {
127
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.severalRecent, why: recent.map((r) => FINALIZE.recentRow(r.id, Math.round((nowMs - r.at) / 60000))) }, ctx.colour));
128
+ return EXIT.usage;
129
+ }
130
+ sessionId = recent[0].id;
131
+ }
132
+ // ── The session must be one THIS repo captured (it has a state file here) and its transcript must be findable inside the agent's own root. ──
133
+ const state = sessionStatePath(ctx.home, { repoKey: projectKey, sessionId });
134
+ if (state === null || !existsSync(state)) {
135
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.unknownSession(sessionId), why: [] }, ctx.colour));
136
+ return EXIT.usage;
137
+ }
138
+ const transcriptPath = findTranscript(ctx.home, ctx.env, sessionId);
139
+ if (transcriptPath === null) {
140
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.transcriptMissing(sessionId), why: [] }, ctx.colour));
141
+ return EXIT.failure;
142
+ }
143
+ try {
144
+ if (!args.force && nowMs - statSync(transcriptPath).mtimeMs < STILL_WRITING_MS) {
145
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.stillWriting, why: [] }, ctx.colour));
146
+ return EXIT.usage;
147
+ }
148
+ }
149
+ catch {
150
+ return EXIT.failure;
151
+ }
152
+ const eof = fileSize(transcriptPath);
153
+ if (eof === null)
154
+ return EXIT.failure;
155
+ // ── Deliver: promote what was pending, then sub-agents FIRST, then the main stream with the assertion. ──
156
+ // ⛔ NO PENDING-LINE PROMOTION HERE, deliberately. Every hook fire of this session already ran it (`hooks/entry.ts`), and
157
+ // the session necessarily has a state file (required above), so a first-turn commit was promoted by the first
158
+ // `Stop` that wrote one. Promoting from this verb would add a second call site to a function whose only call site
159
+ // is a pinned property (`post-commit-spool.test.ts`, D208): a dead session must never reach it.
160
+ const spoolKey = { repoKey: projectKey, sessionId };
161
+ const spooled = capSpool(readSpool(ctx.home, spoolKey));
162
+ const rewritten = capSuccessors(readRewrites(ctx.home, spoolKey));
163
+ const redactionRoots = confinementRoots(keys);
164
+ const repoSlug = resolveRepoSlug(projectKey);
165
+ const hookEnv = {
166
+ env: ctx.env,
167
+ home: ctx.home,
168
+ nodeVersion: ctx.nodeVersion,
169
+ agentId: ctx.agentId ?? DEFAULT_AGENT_ID,
170
+ readStdin: async () => "",
171
+ };
172
+ const input = { sessionId, transcriptPath, cwd: ctx.cwd, eventName: "Stop" };
173
+ const startedAt = Date.now();
174
+ await deliverSubagents({
175
+ ctx: hookEnv,
176
+ input,
177
+ url,
178
+ credential: load.credential,
179
+ projectKey,
180
+ redactionRoots,
181
+ repoSlug,
182
+ startedAt,
183
+ sendBudget: SEND_BUDGET_MS,
184
+ byHook: false,
185
+ });
186
+ const delivery = await deliver({
187
+ home: ctx.home,
188
+ env: ctx.env,
189
+ url,
190
+ credential: load.credential,
191
+ repoKey: projectKey,
192
+ repoSlug,
193
+ sessionId,
194
+ fileKey: "main",
195
+ transcriptPath,
196
+ timeoutMs: sendTimeoutMs(SEND_BUDGET_MS, Date.now() - startedAt),
197
+ nowMs: Date.now(),
198
+ head: headRef(projectKey),
199
+ commits: spooled,
200
+ rewrites: rewritten.pairs,
201
+ final: true,
202
+ byHook: false,
203
+ }, eof, (from, to) => readSpan(transcriptPath, from, to, redactionRoots, ctx.home, ctx.env));
204
+ // ── What the server said. ──
205
+ if (delivery.kind === "stopped") {
206
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.credentialStopped, why: [] }, ctx.colour));
207
+ return EXIT.failure;
208
+ }
209
+ if (delivery.kind !== "attempted" || delivery.disposition !== "ok") {
210
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.notDelivered, why: [] }, ctx.colour));
211
+ return EXIT.failure;
212
+ }
213
+ if (delivery.finalAck === "sealed" || delivery.finalAck === "already") {
214
+ clearDeliveredHold(ctx.home, spoolKey);
215
+ writeLines(ctx.stdout, wrap(delivery.finalAck === "sealed" ? FINALIZE.closed(sessionId) : FINALIZE.alreadyClosed(sessionId), 2));
216
+ return EXIT.ok;
217
+ }
218
+ if (delivery.finalAck === "refused") {
219
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "bad", what: FINALIZE.refused, why: [] }, ctx.colour));
220
+ return EXIT.failure;
221
+ }
222
+ // 2xx and no acknowledgement: an older server. Delivered, NOT closed — and the exit code says so.
223
+ writeLines(ctx.stderr, renderErrorBlock({ kind: "warn", what: FINALIZE.notAcknowledged, why: [] }, ctx.colour));
224
+ return EXIT.unacknowledged;
225
+ }
226
+ /** Sessions of this repo whose state file was touched in the last 24 h, newest first. */
227
+ function recentSessions(home, repoKey, nowMs) {
228
+ const dir = repoSessionsDir(home, repoKey);
229
+ if (dir === null)
230
+ return [];
231
+ let entries;
232
+ try {
233
+ entries = readdirSync(dir);
234
+ }
235
+ catch {
236
+ return [];
237
+ }
238
+ const out = [];
239
+ for (const entry of entries) {
240
+ if (!entry.endsWith(".json"))
241
+ continue;
242
+ try {
243
+ const at = statSync(join(dir, entry)).mtimeMs;
244
+ if (nowMs - at <= LATEST_WINDOW_MS)
245
+ out.push({ id: entry.slice(0, -".json".length), at });
246
+ }
247
+ catch {
248
+ /* a vanished file is not recent */
249
+ }
250
+ }
251
+ return out.sort((a, b) => b.at - a.at);
252
+ }
253
+ /** `<root>/<project dir>/<session>.jsonl` under any of the agents' transcript roots, confined as a hook's is. */
254
+ function findTranscript(home, env, sessionId) {
255
+ for (const root of transcriptRoots(home, env)) {
256
+ let dirs;
257
+ try {
258
+ dirs = readdirSync(root);
259
+ }
260
+ catch {
261
+ continue;
262
+ }
263
+ for (const d of dirs) {
264
+ const candidate = join(root, d, `${sessionId}.jsonl`);
265
+ if (existsSync(candidate) && admitsTranscript(home, env, candidate))
266
+ return candidate;
267
+ }
268
+ }
269
+ return null;
270
+ }
271
+ /** After a successful close, forget end-of-session holds whose bytes have now been delivered. */
272
+ function clearDeliveredHold(home, key) {
273
+ const session = loadSessionState(home, key);
274
+ if (session.endHold === null)
275
+ return;
276
+ const eof = {};
277
+ for (const [fileKey, size] of Object.entries(session.endHold.eof)) {
278
+ if (fileState(session, fileKey).sentOffset < size)
279
+ eof[fileKey] = size;
280
+ }
281
+ saveSessionState(home, key, { ...session, endHold: Object.keys(eof).length > 0 ? { at: session.endHold.at, eof } : null });
282
+ }
283
+ //# sourceMappingURL=finalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../src/commands/finalize.ts"],"names":[],"mappings":"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"}