@productbrain/cli 0.1.0-beta.1919 → 0.1.0-beta.1963

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 (68) hide show
  1. package/dist/__tests__/conversation.test.d.ts +2 -0
  2. package/dist/__tests__/conversation.test.d.ts.map +1 -0
  3. package/dist/__tests__/conversation.test.js +113 -0
  4. package/dist/__tests__/conversation.test.js.map +1 -0
  5. package/dist/__tests__/ingest.test.js +9 -0
  6. package/dist/__tests__/ingest.test.js.map +1 -1
  7. package/dist/__tests__/orient.test.js +28 -1
  8. package/dist/__tests__/orient.test.js.map +1 -1
  9. package/dist/__tests__/profiles.test.js +10 -6
  10. package/dist/__tests__/profiles.test.js.map +1 -1
  11. package/dist/__tests__/session-label.test.d.ts +2 -0
  12. package/dist/__tests__/session-label.test.d.ts.map +1 -0
  13. package/dist/__tests__/session-label.test.js +46 -0
  14. package/dist/__tests__/session-label.test.js.map +1 -0
  15. package/dist/__tests__/session-list-show.test.d.ts +2 -0
  16. package/dist/__tests__/session-list-show.test.d.ts.map +1 -0
  17. package/dist/__tests__/session-list-show.test.js +174 -0
  18. package/dist/__tests__/session-list-show.test.js.map +1 -0
  19. package/dist/__tests__/session-reset.test.js +23 -7
  20. package/dist/__tests__/session-reset.test.js.map +1 -1
  21. package/dist/__tests__/session-resume-backstop.test.js +2 -0
  22. package/dist/__tests__/session-resume-backstop.test.js.map +1 -1
  23. package/dist/__tests__/session-state-machine.test.js +190 -9
  24. package/dist/__tests__/session-state-machine.test.js.map +1 -1
  25. package/dist/__tests__/session-switch.test.js +4 -2
  26. package/dist/__tests__/session-switch.test.js.map +1 -1
  27. package/dist/__tests__/vocabulary-leak.test.js +5 -0
  28. package/dist/__tests__/vocabulary-leak.test.js.map +1 -1
  29. package/dist/commands/connect.d.ts.map +1 -1
  30. package/dist/commands/connect.js +5 -4
  31. package/dist/commands/connect.js.map +1 -1
  32. package/dist/commands/ingest.d.ts.map +1 -1
  33. package/dist/commands/ingest.js +9 -0
  34. package/dist/commands/ingest.js.map +1 -1
  35. package/dist/commands/orient.d.ts.map +1 -1
  36. package/dist/commands/orient.js +35 -6
  37. package/dist/commands/orient.js.map +1 -1
  38. package/dist/commands/profile.d.ts.map +1 -1
  39. package/dist/commands/profile.js +10 -5
  40. package/dist/commands/profile.js.map +1 -1
  41. package/dist/commands/session.d.ts +29 -0
  42. package/dist/commands/session.d.ts.map +1 -1
  43. package/dist/commands/session.js +141 -23
  44. package/dist/commands/session.js.map +1 -1
  45. package/dist/formatters/__tests__/session-list-show.test.d.ts +2 -0
  46. package/dist/formatters/__tests__/session-list-show.test.d.ts.map +1 -0
  47. package/dist/formatters/__tests__/session-list-show.test.js +159 -0
  48. package/dist/formatters/__tests__/session-list-show.test.js.map +1 -0
  49. package/dist/formatters/session.d.ts +46 -0
  50. package/dist/formatters/session.d.ts.map +1 -1
  51. package/dist/formatters/session.js +111 -0
  52. package/dist/formatters/session.js.map +1 -1
  53. package/dist/index.js +16 -2
  54. package/dist/index.js.map +1 -1
  55. package/dist/lib/conversation.d.ts +36 -0
  56. package/dist/lib/conversation.d.ts.map +1 -0
  57. package/dist/lib/conversation.js +66 -0
  58. package/dist/lib/conversation.js.map +1 -0
  59. package/dist/lib/productbrain-files.d.ts.map +1 -1
  60. package/dist/lib/productbrain-files.js +1 -0
  61. package/dist/lib/productbrain-files.js.map +1 -1
  62. package/dist/lib/productbrain-files.test.js +4 -2
  63. package/dist/lib/productbrain-files.test.js.map +1 -1
  64. package/dist/lib/session.d.ts +58 -12
  65. package/dist/lib/session.d.ts.map +1 -1
  66. package/dist/lib/session.js +196 -24
  67. package/dist/lib/session.js.map +1 -1
  68. package/package.json +1 -1
@@ -8,7 +8,17 @@
8
8
  type SessionStartOptions = {
9
9
  /** @deprecated Use global --json flag instead. Preserved for backward compatibility. */
10
10
  json?: boolean;
11
+ /** WP-479 E2: explicit conversation-identity override (the manual seam — same tier as
12
+ * PB_CONVERSATION_ID, takes priority over every env-detected channel). */
13
+ conversation?: string;
11
14
  };
15
+ /**
16
+ * Auto-populate the session `label` (WP-479 E2, founder-day fix Pass 2) — the founder's recall
17
+ * cue for "which of my N conversations" is the worktree/branch, never a UUID. Priority:
18
+ * SUPERSET_WORKSPACE_NAME env → git branch (silent fail) → cwd basename. Server-side clamps to
19
+ * ~120 chars (mirrors MAX_TASK_LEN) — no client-side truncation needed here.
20
+ */
21
+ export declare function resolveSessionLabel(): string;
12
22
  export declare function runSessionStart(options?: SessionStartOptions): Promise<void>;
13
23
  /**
14
24
  * pb session id — print current session ID bare to stdout (machine-readable).
@@ -33,6 +43,13 @@ export declare function runSessionId(): void;
33
43
  * Guard (R4): if there IS an active session, confirm before discarding so in-flight captures
34
44
  * aren't silently stranded. `--force` skips the prompt. In a non-interactive context the prompt
35
45
  * can't run, so `--force` is required there.
46
+ *
47
+ * WP-479 review fix (Codex re-review): reset clears ALL session markers — the legacy session.json
48
+ * AND every per-conversation marker under `.productbrain/sessions/`. This is the recovery the
49
+ * pb:real/pb:preview binding-flip guard prints, and that guard refuses on ANY active marker; a
50
+ * conversation-scoped reset couldn't clear a sibling marker it has no env to resolve, so the flip
51
+ * would stay blocked unless `--force` (which strands the server session). A hard reset legitimately
52
+ * clears the whole worktree's local session state.
36
53
  */
37
54
  export declare function runSessionReset(options?: {
38
55
  force?: boolean;
@@ -40,5 +57,17 @@ export declare function runSessionReset(options?: {
40
57
  export declare function runSessionClose(options?: {
41
58
  force?: boolean;
42
59
  }): Promise<void>;
60
+ /**
61
+ * pb session list — active sessions (with the per-key quota gauge) + a handful of recent
62
+ * non-active ones. Pure read over `agent.listSessions`; no local session required — this is
63
+ * exactly the command you run when you're NOT sure which session is yours.
64
+ */
65
+ export declare function runSessionList(): Promise<void>;
66
+ /**
67
+ * pb session show <id-or-conversation> — reconstruct the full conversation lineage (all
68
+ * agentSessions rows across 2h resumes + legacy linkedPreviousSessionId chains) plus the
69
+ * governance serves recorded for the conversation.
70
+ */
71
+ export declare function runSessionShow(idOrConversation: string): Promise<void>;
43
72
  export {};
44
73
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgDH,KAAK,mBAAmB,GAAG;IACzB,wFAAwF;IACxF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAgDF,wBAAsB,eAAe,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtF;AA+LD;;;GAGG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAUnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCtF;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkKtF"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+DH,KAAK,mBAAmB,GAAG;IACzB,wFAAwF;IACxF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;+EAC2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAc5C;AAgDD,wBAAsB,eAAe,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtF;AAuND;;;GAGG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAUnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CtF;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkKtF;AAID;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAQpD;AAWD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B5E"}
@@ -5,20 +5,45 @@
5
5
  * BET-181 Slice 0: uses isJsonMode() for output branching. Existing --json flag
6
6
  * on session start preserved for backward compatibility.
7
7
  */
8
+ import { execSync } from 'child_process';
9
+ import { basename } from 'path';
8
10
  import { getConfigOrGuide } from '../lib/config.js';
9
11
  import { kernelCall } from '../lib/client.js';
10
- import { readSession, writeSession, clearSession, discardSession, sessionFileExists, readClosedMarker } from '../lib/session.js';
11
- import { isJsonMode } from '../lib/runner.js';
12
+ import { readSession, writeSession, clearSession, discardSession, discardAllSessions, hasAnySessionMarker, hasAnyActiveSession, readClosedMarker, RESUME_WINDOW_MS, } from '../lib/session.js';
13
+ import { resolveConversationId } from '../lib/conversation.js';
14
+ import { isJsonMode, runCliCommand } from '../lib/runner.js';
12
15
  import { confirm, isInteractive } from '../lib/prompts.js';
13
- import { formatSessionStart, formatSessionClose, formatLoopUnfinished, buildPromoteCommand, } from '../formatters/session.js';
16
+ import { formatSessionStart, formatSessionClose, formatLoopUnfinished, formatSessionList, formatSessionShow, buildPromoteCommand, } from '../formatters/session.js';
14
17
  import { runHandshake } from './handshake.js';
15
18
  import { CLIError, ErrorCode } from '../lib/errors.js';
16
19
  import { getActiveProfile } from '../lib/profiles.js';
17
20
  import { readLocalProjectConfig, resolveEffectiveProfile, refreshPreviewApiKeyFromDisk } from '../lib/config.js';
18
21
  import { resolveAppUrl } from '../lib/constants.js';
19
22
  import { composeWrapupView } from '../lib/compose-wrapup-view.js';
20
- /** 2-hour window for auto-resume (WP-322 E1). */
21
- const RESUME_WINDOW_MS = 2 * 60 * 60 * 1000;
23
+ /**
24
+ * Auto-populate the session `label` (WP-479 E2, founder-day fix Pass 2) — the founder's recall
25
+ * cue for "which of my N conversations" is the worktree/branch, never a UUID. Priority:
26
+ * SUPERSET_WORKSPACE_NAME env → git branch (silent fail) → cwd basename. Server-side clamps to
27
+ * ~120 chars (mirrors MAX_TASK_LEN) — no client-side truncation needed here.
28
+ */
29
+ export function resolveSessionLabel() {
30
+ const superset = process.env.SUPERSET_WORKSPACE_NAME;
31
+ if (superset && superset.trim())
32
+ return superset.trim();
33
+ try {
34
+ const branch = execSync('git rev-parse --abbrev-ref HEAD', {
35
+ stdio: ['ignore', 'pipe', 'ignore'],
36
+ })
37
+ .toString()
38
+ .trim();
39
+ if (branch)
40
+ return branch;
41
+ }
42
+ catch {
43
+ // Silent fail — not a git repo, git not installed, detached HEAD edge cases, etc.
44
+ }
45
+ return basename(process.cwd());
46
+ }
22
47
  /**
23
48
  * True for the auth/INTERNAL failure a stale preview apiKey produces (WP-458 E2). The server
24
49
  * returns an opaque INTERNAL for a rejected key, and a true 401 maps to category 'auth' — either
@@ -112,15 +137,30 @@ async function establishSession(options) {
112
137
  // Effective profile for this start — used both for the switch-backstop decision and to
113
138
  // stamp the session (one read, one value, so they can't disagree mid-start).
114
139
  const effectiveProfile = resolveEffectiveProfile().profile;
140
+ // WP-479 E2: resolve the conversation identity ONCE here (explicit --conversation flag wins
141
+ // over every env-detected channel — see lib/conversation.ts). Every session.ts read/write call
142
+ // below reuses this exact value (re-normalizing an already-normalized value is a no-op) so a
143
+ // single `pb session start` invocation can never target two different markers.
144
+ const conversationId = resolveConversationId(options.conversation);
145
+ // Review fix (Codex): `--conversation` is a manual override only `pb session start` sees — later
146
+ // bare `pb` commands (orient, capture, close) resolve identity from env only. If the flag resolves
147
+ // to a DIFFERENT conversation than a bare env-only resolution would, those follow-ups fall back to
148
+ // the wrong marker (or the legacy one) and can't find this session. Warn so the "advertised manual
149
+ // seam" gap is surfaced, not silent (the flag's documented contract is to pair it with
150
+ // PB_CONVERSATION_ID — index.ts). Compare RESOLVED identities so a normalized value doesn't
151
+ // false-trigger.
152
+ if (options.conversation && !json && resolveConversationId() !== conversationId) {
153
+ process.stderr.write(`⚠ --conversation is only read by \`pb session start\`. Set PB_CONVERSATION_ID=${conversationId} in this shell so later bare \`pb\` commands attribute to the same conversation.\n`);
154
+ }
115
155
  // Check for existing session
116
- const existing = readSession();
156
+ const existing = readSession(conversationId ?? undefined);
117
157
  if (existing) {
118
158
  // Backstop (TEN-2163): if the effective profile changed since this session started,
119
159
  // it's pinned to the old workspace — discard it and start fresh. Local, offline-safe.
120
160
  const currentProfile = effectiveProfile;
121
161
  const switched = existing.profile && currentProfile && existing.profile !== currentProfile;
122
162
  if (switched) {
123
- discardSession();
163
+ discardSession(conversationId ?? undefined);
124
164
  // fall through to the fresh-start path below
125
165
  }
126
166
  else {
@@ -149,7 +189,7 @@ async function establishSession(options) {
149
189
  }
150
190
  }
151
191
  // WP-322 E1: Check for a recent closed session — auto-resume within 2h window
152
- const closedMarker = readClosedMarker();
192
+ const closedMarker = readClosedMarker(conversationId ?? undefined);
153
193
  if (closedMarker) {
154
194
  const elapsed = Date.now() - new Date(closedMarker.closedAt).getTime();
155
195
  if (elapsed < RESUME_WINDOW_MS) {
@@ -162,7 +202,7 @@ async function establishSession(options) {
162
202
  // to a fresh start instead. This mirrors the active-session profile backstop above, keyed
163
203
  // on workspaceId — the resume path previously had no such guard, which is the gap E2 closes.
164
204
  if (wsForResume?._id && closedMarker.workspaceId !== wsForResume._id) {
165
- discardSession();
205
+ discardSession(conversationId ?? undefined);
166
206
  // fall through to the fresh-start path below
167
207
  }
168
208
  else if (wsForResume?.keyId) {
@@ -173,6 +213,7 @@ async function establishSession(options) {
173
213
  apiKeyId: wsForResume.keyId,
174
214
  previousSessionId: closedMarker.sessionId,
175
215
  clientKind: 'cli',
216
+ conversationId: conversationId ?? undefined,
176
217
  });
177
218
  const shortPrevId = closedMarker.sessionId.slice(-8);
178
219
  const state = {
@@ -183,7 +224,7 @@ async function establishSession(options) {
183
224
  entriesCaptured: [],
184
225
  profile: effectiveProfile ?? undefined,
185
226
  };
186
- writeSession(state);
227
+ writeSession(state, conversationId ?? undefined);
187
228
  if (json) {
188
229
  process.stdout.write(JSON.stringify({
189
230
  sessionId: state.sessionId,
@@ -207,7 +248,7 @@ async function establishSession(options) {
207
248
  }
208
249
  else {
209
250
  // Marker is stale (>2h) — clear it so next session starts fresh
210
- clearSession();
251
+ clearSession(conversationId ?? undefined);
211
252
  }
212
253
  }
213
254
  // Resolve workspace + keyId
@@ -219,13 +260,17 @@ async function establishSession(options) {
219
260
  guidance: 'Generate a readwrite key: Product Brain app → Settings → API Keys.',
220
261
  });
221
262
  }
222
- // Start agent session with clientKind attribution (DEC-184)
263
+ // Start agent session with clientKind attribution (DEC-184). WP-479 E2: thread the resolved
264
+ // conversationId and an auto-populated label — parentSessionId is dormant, never set here.
265
+ const label = resolveSessionLabel();
223
266
  if (!json)
224
267
  process.stdout.write('Starting session...\n');
225
268
  const result = await kernelCall('agent.startSession', {
226
269
  workspaceId: workspace._id,
227
270
  apiKeyId: workspace.keyId,
228
271
  clientKind: 'cli',
272
+ conversationId: conversationId ?? undefined,
273
+ label,
229
274
  });
230
275
  // Persist session state
231
276
  const state = {
@@ -236,7 +281,7 @@ async function establishSession(options) {
236
281
  entriesCaptured: [],
237
282
  profile: effectiveProfile ?? undefined,
238
283
  };
239
- writeSession(state);
284
+ writeSession(state, conversationId ?? undefined);
240
285
  if (json) {
241
286
  process.stdout.write(JSON.stringify({
242
287
  sessionId: state.sessionId,
@@ -285,27 +330,43 @@ export function runSessionId() {
285
330
  * Guard (R4): if there IS an active session, confirm before discarding so in-flight captures
286
331
  * aren't silently stranded. `--force` skips the prompt. In a non-interactive context the prompt
287
332
  * can't run, so `--force` is required there.
333
+ *
334
+ * WP-479 review fix (Codex re-review): reset clears ALL session markers — the legacy session.json
335
+ * AND every per-conversation marker under `.productbrain/sessions/`. This is the recovery the
336
+ * pb:real/pb:preview binding-flip guard prints, and that guard refuses on ANY active marker; a
337
+ * conversation-scoped reset couldn't clear a sibling marker it has no env to resolve, so the flip
338
+ * would stay blocked unless `--force` (which strands the server session). A hard reset legitimately
339
+ * clears the whole worktree's local session state.
288
340
  */
289
341
  export async function runSessionReset(options = {}) {
290
342
  const active = readSession();
291
- // Nothing local to reset neither an active session nor a closed marker. (A lone
343
+ // Reset clears ALL markers, so the confirmation guard must consider ANY active session including a
344
+ // SIBLING conversation's — not just the current one (Codex re-review): otherwise reset would
345
+ // silently delete a sibling active marker (even non-interactively) and strand that server session.
346
+ const anyActive = active !== null || hasAnyActiveSession();
347
+ // Nothing local to reset — no active session and no marker of any conversation. (A lone
292
348
  // PREVIEW_MODE marker is binding state, not session state — `npm run pb:real` clears it.)
293
- if (!active && !sessionFileExists()) {
349
+ if (!active && !hasAnySessionMarker()) {
294
350
  process.stdout.write('Nothing to reset — no local session state.\n');
295
351
  return;
296
352
  }
297
- // Active session present: confirm before discarding (R4) unless --force.
298
- if (active && !options.force) {
353
+ // Any active session present (current OR sibling): confirm before discarding (R4) unless --force.
354
+ if (anyActive && !options.force) {
299
355
  if (!isInteractive()) {
300
356
  throw new CLIError('Active session present — refusing to reset without confirmation.', {
301
357
  code: ErrorCode.NON_INTERACTIVE,
302
358
  category: 'session',
303
- guidance: 'Re-run with `pb session reset --force` to discard the active session.',
359
+ guidance: 'Re-run with `pb session reset --force` to discard the active session(s).',
304
360
  });
305
361
  }
306
- process.stdout.write(`Active session: ${active.sessionId} (${active.entriesCaptured.length} entries captured)\n`);
362
+ if (active) {
363
+ process.stdout.write(`Active session: ${active.sessionId} (${active.entriesCaptured.length} entries captured)\n`);
364
+ }
365
+ else {
366
+ process.stdout.write('An active session exists in another conversation in this worktree.\n');
367
+ }
307
368
  const ok = await confirm({
308
- message: 'Discard this active session and any in-flight captures?',
369
+ message: 'Discard all local sessions and any in-flight captures?',
309
370
  initialValue: false,
310
371
  });
311
372
  if (!ok) {
@@ -313,9 +374,9 @@ export async function runSessionReset(options = {}) {
313
374
  return;
314
375
  }
315
376
  }
316
- // Hard-reset: discard session.json (no resume marker). Binding state is left untouched.
317
- discardSession();
318
- process.stdout.write('Session state reset — session.json cleared.\n');
377
+ // Hard-reset: discard ALL session markers (no resume marker). Binding state is left untouched.
378
+ discardAllSessions();
379
+ process.stdout.write('Session state reset — all local session markers cleared.\n');
319
380
  }
320
381
  export async function runSessionClose(options = {}) {
321
382
  const config = await getConfigOrGuide(() => runSessionClose(options));
@@ -445,4 +506,61 @@ export async function runSessionClose(options = {}) {
445
506
  process.stdout.write('Refreshing context...\n');
446
507
  await runHandshake({ force: false, apply: true, lenient: true, invocationPath: 'session-close' });
447
508
  }
509
+ // ─── WP-479 E4: pb session list / pb session show ────────────────────────────
510
+ /**
511
+ * pb session list — active sessions (with the per-key quota gauge) + a handful of recent
512
+ * non-active ones. Pure read over `agent.listSessions`; no local session required — this is
513
+ * exactly the command you run when you're NOT sure which session is yours.
514
+ */
515
+ export async function runSessionList() {
516
+ const config = await getConfigOrGuide(() => runSessionList());
517
+ if (!config)
518
+ return;
519
+ await runCliCommand({
520
+ fn: () => kernelCall('agent.listSessions', {}),
521
+ formatPretty: (data) => formatSessionList(data),
522
+ });
523
+ }
524
+ /**
525
+ * Convex document ids are ~32 chars of lowercase base32 — used only to decide which arg KIND to
526
+ * try first. It is a routing heuristic, not a validator: a conversationId can coincidentally match
527
+ * (it allows the same charset), so a shaped arg that fails as a sessionId is retried as a
528
+ * conversationId before giving up (the spec's contract: a copied `list` row id — either column —
529
+ * must be directly usable by `show`).
530
+ */
531
+ const CONVEX_DOC_ID_RE = /^[a-z0-9]{25,40}$/;
532
+ /**
533
+ * pb session show <id-or-conversation> — reconstruct the full conversation lineage (all
534
+ * agentSessions rows across 2h resumes + legacy linkedPreviousSessionId chains) plus the
535
+ * governance serves recorded for the conversation.
536
+ */
537
+ export async function runSessionShow(idOrConversation) {
538
+ const config = await getConfigOrGuide(() => runSessionShow(idOrConversation));
539
+ if (!config)
540
+ return;
541
+ const arg = idOrConversation.trim();
542
+ if (!arg) {
543
+ throw new CLIError('Provide a session id or conversation id.', {
544
+ code: ErrorCode.VALIDATION_FAILED,
545
+ category: 'validation',
546
+ guidance: 'Copy one from `pb session list`.',
547
+ });
548
+ }
549
+ const fetchShow = async () => {
550
+ if (CONVEX_DOC_ID_RE.test(arg)) {
551
+ try {
552
+ return await kernelCall('agent.showConversation', { sessionId: arg });
553
+ }
554
+ catch {
555
+ // Not a session doc id after all (validation reject or not-found) — fall through and
556
+ // retry the same string as a conversationId before reporting failure.
557
+ }
558
+ }
559
+ return await kernelCall('agent.showConversation', { conversationId: arg });
560
+ };
561
+ await runCliCommand({
562
+ fn: fetchShow,
563
+ formatPretty: (data) => formatSessionShow(data),
564
+ });
565
+ }
448
566
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session-list-show.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-list-show.test.d.ts","sourceRoot":"","sources":["../../../src/formatters/__tests__/session-list-show.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * pb session list / show formatters — WP-479 E4 (traceback + quota observability).
3
+ *
4
+ * Covers the founder-facing contract from the design spec:
5
+ * - list: quota gauge ("N of CAP active"), copyable ids, truncated conversationId,
6
+ * and the label-collision cue (≥2 ACTIVE rows sharing a label get ordinal suffixes).
7
+ * - show: lineage header + per-session blocks + bounded serves rendering.
8
+ */
9
+ import { describe, it, expect } from 'vitest';
10
+ import { formatSessionList, formatSessionShow, } from '../session.js';
11
+ function listRow(overrides = {}) {
12
+ return {
13
+ sessionId: 'js7abc123def456ghi789jkl012mno',
14
+ conversationId: 'conv-a',
15
+ label: 'session-attribution',
16
+ clientKind: 'cli',
17
+ initiatedBy: 'Randy',
18
+ status: 'active',
19
+ startedAt: Date.now() - 10 * 60_000,
20
+ lastToolCallAt: Date.now() - 60_000,
21
+ entriesCreatedCount: 2,
22
+ entriesModifiedCount: 1,
23
+ purpose: null,
24
+ ...overrides,
25
+ };
26
+ }
27
+ function showRow(overrides = {}) {
28
+ return {
29
+ ...listRow(),
30
+ entriesCreated: ['e1', 'e2'],
31
+ entriesModified: ['e3'],
32
+ relationsCreated: 4,
33
+ gateFailures: 0,
34
+ contradictionWarnings: 1,
35
+ ...overrides,
36
+ };
37
+ }
38
+ function serve(overrides = {}) {
39
+ return {
40
+ servedAt: Date.now() - 5 * 60_000,
41
+ entryId: 'STD-12',
42
+ surface: 'orient',
43
+ renderMode: 'brief',
44
+ task: 'build the thing',
45
+ sessionId: 'js7abc123def456ghi789jkl012mno',
46
+ ...overrides,
47
+ };
48
+ }
49
+ describe('formatSessionList', () => {
50
+ it('renders the quota gauge as "N of CAP active"', () => {
51
+ const data = {
52
+ active: [listRow()],
53
+ recent: [],
54
+ quota: { activeCount: 1, cap: 50 },
55
+ };
56
+ expect(formatSessionList(data)).toContain('Quota: 1 of 50 active');
57
+ });
58
+ it('appends ordinal suffixes when two ACTIVE rows share a label (collision cue), stable oldest-first', () => {
59
+ const older = listRow({ sessionId: 'sess-older', startedAt: Date.now() - 60 * 60_000 });
60
+ const newer = listRow({ sessionId: 'sess-newer', startedAt: Date.now() - 5 * 60_000 });
61
+ const data = {
62
+ active: [newer, older], // deliberately newest-first input — ordinals must still be oldest-first
63
+ recent: [],
64
+ quota: { activeCount: 2, cap: 50 },
65
+ };
66
+ const out = formatSessionList(data);
67
+ expect(out).toContain('session-attribution (1)');
68
+ expect(out).toContain('session-attribution (2)');
69
+ // The OLDER session gets (1): find each row line and check pairing.
70
+ const olderLine = out.split('\n').find((l) => l.includes('sess-older'));
71
+ const newerLine = out.split('\n').find((l) => l.includes('sess-newer'));
72
+ expect(olderLine).toContain('session-attribution (1)');
73
+ expect(newerLine).toContain('session-attribution (2)');
74
+ });
75
+ it('does not add ordinals for unique labels or for a collision that spans only non-active rows', () => {
76
+ const active = listRow({ sessionId: 'sess-a', label: 'wt-unique' });
77
+ const recentSameLabel = listRow({ sessionId: 'sess-b', label: 'wt-unique', status: 'closed' });
78
+ const data = {
79
+ active: [active],
80
+ recent: [recentSameLabel],
81
+ quota: { activeCount: 1, cap: 50 },
82
+ };
83
+ const out = formatSessionList(data);
84
+ expect(out).not.toContain('wt-unique (1)');
85
+ expect(out).toContain('wt-unique');
86
+ });
87
+ it('truncates a long conversationId to ~12 chars in the table', () => {
88
+ const sha = 'a'.repeat(64);
89
+ const data = {
90
+ active: [listRow({ conversationId: sha })],
91
+ recent: [],
92
+ quota: { activeCount: 1, cap: 50 },
93
+ };
94
+ const out = formatSessionList(data);
95
+ expect(out).toContain(`${'a'.repeat(12)}…`);
96
+ expect(out).not.toContain(sha);
97
+ });
98
+ it('renders the empty state and the recent section', () => {
99
+ const data = {
100
+ active: [],
101
+ recent: [listRow({ sessionId: 'sess-closed', status: 'closed' })],
102
+ quota: { activeCount: 0, cap: 50 },
103
+ };
104
+ const out = formatSessionList(data);
105
+ expect(out).toContain('No active sessions.');
106
+ expect(out).toContain('Recent (1):');
107
+ expect(out).toContain('sess-closed');
108
+ });
109
+ });
110
+ describe('formatSessionShow', () => {
111
+ it('renders the lineage header (conversationId, label, N sessions) and per-session blocks', () => {
112
+ const out = formatSessionShow({
113
+ conversationId: 'conv-lineage',
114
+ sessions: [
115
+ showRow({ sessionId: 'sess-new', status: 'active' }),
116
+ showRow({ sessionId: 'sess-old', status: 'closed' }),
117
+ ],
118
+ serves: [],
119
+ });
120
+ expect(out).toContain('Conversation: conv-lineage');
121
+ expect(out).toContain('Label: session-attribution');
122
+ expect(out).toContain('2 session(s) in lineage');
123
+ expect(out).toContain('sess-new');
124
+ expect(out).toContain('sess-old');
125
+ expect(out).toContain('Created: e1, e2');
126
+ expect(out).toContain('Modified: e3');
127
+ expect(out).toContain('Relations: 4');
128
+ });
129
+ it('marks a legacy lineage that has no conversationId', () => {
130
+ const out = formatSessionShow({
131
+ conversationId: null,
132
+ sessions: [showRow({ conversationId: null })],
133
+ serves: [],
134
+ });
135
+ expect(out).toContain('(legacy — no conversationId)');
136
+ });
137
+ it('shows at most 10 serves, newest first, with entry id + renderMode, and the total count', () => {
138
+ const serves = Array.from({ length: 12 }, (_, i) => serve({ entryId: `STD-${i + 1}`, servedAt: Date.now() - i * 60_000 }));
139
+ const out = formatSessionShow({
140
+ conversationId: 'conv-served',
141
+ sessions: [showRow()],
142
+ serves,
143
+ });
144
+ expect(out).toContain('Serves (10 of 12 shown, most recent first):');
145
+ expect(out).toContain('STD-1 ');
146
+ expect(out).toContain('STD-10');
147
+ expect(out).not.toContain('STD-11');
148
+ expect(out).toContain('brief');
149
+ });
150
+ it('renders the no-serves state', () => {
151
+ const out = formatSessionShow({
152
+ conversationId: 'conv-quiet',
153
+ sessions: [showRow()],
154
+ serves: [],
155
+ });
156
+ expect(out).toContain('No governance serves recorded for this conversation.');
157
+ });
158
+ });
159
+ //# sourceMappingURL=session-list-show.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-list-show.test.js","sourceRoot":"","sources":["../../../src/formatters/__tests__/session-list-show.test.ts"],"names":[],"mappings":"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"}
@@ -45,4 +45,50 @@ export declare function formatSessionClose(session: SessionState, wrapup: Sessio
45
45
  * session was closed.
46
46
  */
47
47
  export declare function formatLoopUnfinished(wrapup: SessionCloseWrapup): string;
48
+ /** One session row as returned by `agent.listSessions` / carried in `agent.showConversation`. */
49
+ export interface SessionListRow {
50
+ sessionId: string;
51
+ conversationId: string | null;
52
+ label: string | null;
53
+ clientKind: string | null;
54
+ initiatedBy: string;
55
+ status: string;
56
+ startedAt: number;
57
+ lastToolCallAt: number;
58
+ entriesCreatedCount: number;
59
+ entriesModifiedCount: number;
60
+ purpose: string | null;
61
+ }
62
+ export interface SessionListData {
63
+ active: SessionListRow[];
64
+ recent: SessionListRow[];
65
+ quota: {
66
+ activeCount: number;
67
+ cap: number;
68
+ };
69
+ }
70
+ /** A lineage row as returned by `agent.showConversation` — SessionListRow plus per-session activity detail. */
71
+ export interface ShowLineageRow extends SessionListRow {
72
+ entriesCreated: string[];
73
+ entriesModified: string[];
74
+ relationsCreated: number;
75
+ gateFailures: number;
76
+ contradictionWarnings: number;
77
+ }
78
+ /** One governanceServedLog row surfaced by `agent.showConversation`. */
79
+ export interface ShowServeRow {
80
+ servedAt: number;
81
+ entryId: string;
82
+ surface: string;
83
+ renderMode: string | null;
84
+ task: string | null;
85
+ sessionId: string | null;
86
+ }
87
+ export interface ShowConversationData {
88
+ conversationId: string | null;
89
+ sessions: ShowLineageRow[];
90
+ serves: ShowServeRow[];
91
+ }
92
+ export declare function formatSessionList(data: SessionListData): string;
93
+ export declare function formatSessionShow(data: ShowConversationData): string;
48
94
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/formatters/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,kGAAkG;IAClG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAaD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE9D;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,UAAU,CAAC,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAClF,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,MAAM,CAoBR;AAiCD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,CA4DR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAuCvE"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/formatters/session.ts"],"names":[],"mappings":"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"}