@raidiant/notifai 5.0.0 → 6.0.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 (104) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +2 -2
  3. package/dist/client.d.ts +8 -3
  4. package/dist/client.js +24 -3
  5. package/dist/client.js.map +1 -1
  6. package/dist/commands-auth.d.ts +14 -0
  7. package/dist/commands-auth.js +154 -0
  8. package/dist/commands-auth.js.map +1 -0
  9. package/dist/commands-config.d.ts +31 -0
  10. package/dist/commands-config.js +246 -0
  11. package/dist/commands-config.js.map +1 -0
  12. package/dist/commands-core.d.ts +102 -0
  13. package/dist/commands-core.js +135 -0
  14. package/dist/commands-core.js.map +1 -0
  15. package/dist/commands-devices.d.ts +31 -0
  16. package/dist/commands-devices.js +124 -0
  17. package/dist/commands-devices.js.map +1 -0
  18. package/dist/commands-doctor.d.ts +24 -0
  19. package/dist/commands-doctor.js +1011 -0
  20. package/dist/commands-doctor.js.map +1 -0
  21. package/dist/commands-harness-context.d.ts +61 -0
  22. package/dist/commands-harness-context.js +93 -0
  23. package/dist/commands-harness-context.js.map +1 -0
  24. package/dist/commands-hook-shape.d.ts +17 -0
  25. package/dist/commands-hook-shape.js +37 -0
  26. package/dist/commands-hook-shape.js.map +1 -0
  27. package/dist/commands-hooks.d.ts +115 -0
  28. package/dist/commands-hooks.js +1225 -0
  29. package/dist/commands-hooks.js.map +1 -0
  30. package/dist/commands-init.d.ts +35 -0
  31. package/dist/commands-init.js +580 -0
  32. package/dist/commands-init.js.map +1 -0
  33. package/dist/commands-io.d.ts +2 -0
  34. package/dist/commands-io.js +110 -0
  35. package/dist/commands-io.js.map +1 -0
  36. package/dist/commands-logs.d.ts +30 -0
  37. package/dist/commands-logs.js +201 -0
  38. package/dist/commands-logs.js.map +1 -0
  39. package/dist/commands-send-support.d.ts +44 -0
  40. package/dist/commands-send-support.js +180 -0
  41. package/dist/commands-send-support.js.map +1 -0
  42. package/dist/commands-send.d.ts +33 -0
  43. package/dist/commands-send.js +519 -0
  44. package/dist/commands-send.js.map +1 -0
  45. package/dist/commands-setup-proof.d.ts +15 -0
  46. package/dist/commands-setup-proof.js +53 -0
  47. package/dist/commands-setup-proof.js.map +1 -0
  48. package/dist/commands-skill.d.ts +10 -0
  49. package/dist/commands-skill.js +71 -0
  50. package/dist/commands-skill.js.map +1 -0
  51. package/dist/commands.d.ts +12 -387
  52. package/dist/commands.js +12 -4536
  53. package/dist/commands.js.map +1 -1
  54. package/dist/config-schema.js +1 -1
  55. package/dist/config-schema.js.map +1 -1
  56. package/dist/config.d.ts +1 -1
  57. package/dist/config.js +3 -1
  58. package/dist/config.js.map +1 -1
  59. package/dist/credentials.js +13 -3
  60. package/dist/credentials.js.map +1 -1
  61. package/dist/hooks.d.ts +2 -2
  62. package/dist/hooks.js +127 -99
  63. package/dist/hooks.js.map +1 -1
  64. package/dist/interactive.js +4 -4
  65. package/dist/interactive.js.map +1 -1
  66. package/dist/logging.js +1 -0
  67. package/dist/logging.js.map +1 -1
  68. package/dist/main.js +1 -1
  69. package/dist/main.js.map +1 -1
  70. package/dist/readiness.d.ts +3 -1
  71. package/dist/readiness.js.map +1 -1
  72. package/package.json +2 -2
  73. package/src/client.test.ts +90 -1
  74. package/src/client.ts +35 -2
  75. package/src/commands-auth.ts +174 -0
  76. package/src/commands-config.ts +307 -0
  77. package/src/commands-core.ts +240 -0
  78. package/src/commands-devices.ts +150 -0
  79. package/src/commands-doctor.ts +1209 -0
  80. package/src/commands-harness-context.ts +126 -0
  81. package/src/commands-hook-shape.ts +53 -0
  82. package/src/commands-hooks.ts +1586 -0
  83. package/src/commands-init.ts +721 -0
  84. package/src/commands-io.ts +108 -0
  85. package/src/commands-logs.ts +243 -0
  86. package/src/commands-send-support.ts +224 -0
  87. package/src/commands-send.ts +623 -0
  88. package/src/commands-setup-proof.ts +71 -0
  89. package/src/commands-skill.ts +84 -0
  90. package/src/commands.test.ts +493 -39
  91. package/src/commands.ts +58 -5614
  92. package/src/config-schema.ts +1 -1
  93. package/src/config.test.ts +9 -0
  94. package/src/config.ts +7 -2
  95. package/src/credentials.test.ts +25 -1
  96. package/src/credentials.ts +13 -3
  97. package/src/hooks.test.ts +351 -11
  98. package/src/hooks.ts +145 -97
  99. package/src/interactive.test.ts +19 -1
  100. package/src/interactive.ts +4 -4
  101. package/src/logging.test.ts +15 -2
  102. package/src/logging.ts +1 -0
  103. package/src/main.ts +1 -1
  104. package/src/readiness.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
package/dist/hooks.d.ts CHANGED
@@ -282,12 +282,12 @@ export declare function clearSessionState(sessionId: string, env: NodeJS.Process
282
282
  export declare function pruneAbandonedSessions(env: NodeJS.ProcessEnv, now?: number, maxAgeMs?: number): number;
283
283
  export declare function claimQuestionPush(sessionId: string, env: NodeJS.ProcessEnv, now?: number, beforeStaleReplace?: () => void): boolean;
284
284
  export declare function releaseQuestionPush(sessionId: string, env: NodeJS.ProcessEnv): void;
285
- /** Records every live session working in a directory, for `notifai ask`. */
286
- export declare function writeProjectSession(cwd: string, env: NodeJS.ProcessEnv, sessionId: string, now: number, harness: HookHarness): void;
287
285
  export interface ProjectSessionPointer {
288
286
  sessionId: string;
289
287
  harness: HookHarness;
290
288
  }
289
+ /** Records every live session working in a directory, for `notifai ask`. */
290
+ export declare function writeProjectSession(cwd: string, env: NodeJS.ProcessEnv, sessionId: string, now: number, harness: HookHarness): void;
291
291
  /**
292
292
  * Resolves the session working in `cwd`. Stale pointers are ignored rather than
293
293
  * trusted: an id left by a session that ended days ago would send the question
package/dist/hooks.js CHANGED
@@ -7,6 +7,7 @@ import { loadConfig, projectSessionPointerPath, sanitizeSessionId, sessionConfig
7
7
  import { buildDraft } from './send.js';
8
8
  import { atomicWriteFileSync } from './atomic-file.js';
9
9
  import { withFileLock } from './file-lock.js';
10
+ import { inferInvocationContext } from './invocation-context.js';
10
11
  import { HARNESS_CAPABILITIES, HARNESSES, } from './harnesses.js';
11
12
  /**
12
13
  * A retirement is only worth syncing while the question it retires could still
@@ -20,6 +21,18 @@ import { HARNESS_CAPABILITIES, HARNESSES, } from './harnesses.js';
20
21
  const ORPHAN_TTL_MS = (REPLY_MAX_WINDOW_SECONDS + 3600) * 1000;
21
22
  /** More orphans than this means something is looping; keep the newest. */
22
23
  const ORPHAN_QUEUE_CAP = 50;
24
+ /** Keep immutable session grouping while replacing per-event Git location authoritatively. */
25
+ function sourceContextAtHookEvent(source, cwd) {
26
+ const invocation = cwd === undefined ? null : inferInvocationContext(cwd);
27
+ const current = {
28
+ ...(source?.session_id !== undefined ? { session_id: source.session_id } : {}),
29
+ ...(source?.session_label !== undefined ? { session_label: source.session_label } : {}),
30
+ ...(source?.harness !== undefined ? { harness: source.harness } : {}),
31
+ ...(invocation?.branch !== undefined ? { branch: invocation.branch } : {}),
32
+ ...(invocation?.worktree !== undefined ? { worktree: invocation.worktree } : {}),
33
+ };
34
+ return Object.keys(current).length === 0 ? undefined : current;
35
+ }
23
36
  function summarizeRequestIds(entries) {
24
37
  const ids = entries.flatMap((entry) => entry.request_id === undefined ? [] : [entry.request_id]);
25
38
  return { ids, display: ids.join(', ') };
@@ -322,52 +335,70 @@ function claimPath(sessionId, env) {
322
335
  * meantime, and keeps one runaway agent from writing megabytes per session.
323
336
  */
324
337
  const MAX_STORED_QUESTION_CHARS = 2000;
338
+ function storedProjectSessionPointer(candidate) {
339
+ if (typeof candidate !== 'object' || candidate === null || Array.isArray(candidate))
340
+ return null;
341
+ const entry = candidate;
342
+ if (typeof entry.session_id !== 'string' || entry.session_id === '')
343
+ return null;
344
+ if (typeof entry.updated_at !== 'number')
345
+ return null;
346
+ if (!HARNESSES.includes(entry.harness))
347
+ return null;
348
+ return {
349
+ sessionId: entry.session_id,
350
+ updatedAt: entry.updated_at,
351
+ harness: entry.harness,
352
+ };
353
+ }
354
+ function readStoredProjectSessionDocument(file) {
355
+ if (!existsSync(file))
356
+ return { root: {}, sessions: [] };
357
+ try {
358
+ const parsed = JSON.parse(readFileSync(file, 'utf8'));
359
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
360
+ return { root: {}, sessions: [] };
361
+ }
362
+ const root = parsed;
363
+ return {
364
+ root,
365
+ sessions: Array.isArray(root['sessions']) ? root['sessions'] : [],
366
+ };
367
+ }
368
+ catch {
369
+ return { root: {}, sessions: [] };
370
+ }
371
+ }
325
372
  /** Records every live session working in a directory, for `notifai ask`. */
326
373
  export function writeProjectSession(cwd, env, sessionId, now, harness) {
327
374
  const file = projectSessionPointerPath(cwd, env);
328
375
  withFileLock(`${file}.lock`, () => {
329
- const existing = readStoredProjectSessionPointers(file).filter((entry) => entry.sessionId !== sessionId && now - entry.updatedAt <= 24 * 3600 * 1000);
376
+ const stored = readStoredProjectSessionDocument(file);
377
+ const existing = [];
378
+ let refreshed = {};
379
+ for (const candidate of stored.sessions) {
380
+ const entry = storedProjectSessionPointer(candidate);
381
+ if (entry?.sessionId === sessionId) {
382
+ refreshed = { ...refreshed, ...candidate };
383
+ }
384
+ else if (entry === null || now - entry.updatedAt <= 24 * 3600 * 1000) {
385
+ existing.push(candidate);
386
+ }
387
+ }
330
388
  atomicWriteFileSync(file, `${JSON.stringify({
389
+ ...stored.root,
331
390
  sessions: [
332
- ...existing.map((entry) => ({
333
- session_id: entry.sessionId,
334
- updated_at: entry.updatedAt,
335
- harness: entry.harness,
336
- })),
337
- { session_id: sessionId, updated_at: now, harness },
391
+ ...existing,
392
+ { ...refreshed, session_id: sessionId, updated_at: now, harness },
338
393
  ],
339
394
  })}\n`);
340
395
  });
341
396
  }
342
397
  function readStoredProjectSessionPointers(file) {
343
- if (!existsSync(file))
344
- return [];
345
- try {
346
- const parsed = JSON.parse(readFileSync(file, 'utf8'));
347
- if (!Array.isArray(parsed.sessions))
348
- return [];
349
- return parsed.sessions.flatMap((candidate) => {
350
- if (typeof candidate !== 'object' || candidate === null || Array.isArray(candidate))
351
- return [];
352
- const entry = candidate;
353
- if (typeof entry.session_id !== 'string' || entry.session_id === '')
354
- return [];
355
- if (typeof entry.updated_at !== 'number')
356
- return [];
357
- if (!HARNESSES.includes(entry.harness))
358
- return [];
359
- return [
360
- {
361
- sessionId: entry.session_id,
362
- updatedAt: entry.updated_at,
363
- harness: entry.harness,
364
- },
365
- ];
366
- });
367
- }
368
- catch {
369
- return [];
370
- }
398
+ return readStoredProjectSessionDocument(file).sessions.flatMap((candidate) => {
399
+ const entry = storedProjectSessionPointer(candidate);
400
+ return entry === null ? [] : [entry];
401
+ });
371
402
  }
372
403
  /**
373
404
  * Resolves the session working in `cwd`. Stale pointers are ignored rather than
@@ -421,17 +452,19 @@ export function readMatchingProjectSessionPointer(cwd, env, now, sessionId, harn
421
452
  function clearMatchingProjectSession(cwd, env, sessionId) {
422
453
  const file = projectSessionPointerPath(cwd, env);
423
454
  withFileLock(`${file}.lock`, () => {
424
- const remaining = readStoredProjectSessionPointers(file).filter((entry) => entry.sessionId !== sessionId);
425
- if (remaining.length === 0) {
455
+ const stored = readStoredProjectSessionDocument(file);
456
+ const remaining = stored.sessions.filter((candidate) => {
457
+ const entry = storedProjectSessionPointer(candidate);
458
+ return entry === null || entry.sessionId !== sessionId;
459
+ });
460
+ const hasUnknownRootFields = Object.keys(stored.root).some((key) => key !== 'sessions');
461
+ if (remaining.length === 0 && !hasUnknownRootFields) {
426
462
  rmSync(file, { force: true });
427
463
  return;
428
464
  }
429
465
  atomicWriteFileSync(file, `${JSON.stringify({
430
- sessions: remaining.map((entry) => ({
431
- session_id: entry.sessionId,
432
- updated_at: entry.updatedAt,
433
- harness: entry.harness,
434
- })),
466
+ ...stored.root,
467
+ sessions: remaining,
435
468
  })}\n`);
436
469
  });
437
470
  }
@@ -600,7 +633,8 @@ async function answerableDevices(ctx) {
600
633
  return devices
601
634
  .filter((device) => (device.platform === 'ios' || device.platform === 'macos') &&
602
635
  device.registration_healthy &&
603
- device.reply_protocol_version === 2)
636
+ device.capabilities?.includes('answer') === true &&
637
+ device.derived_status !== 'must_update')
604
638
  .filter((device) => configured === null || configured.includes(device.device_id))
605
639
  .map((device) => device.device_id);
606
640
  }
@@ -661,7 +695,6 @@ const RETIREMENT_TITLES = {
661
695
  answered: 'Answered',
662
696
  answered_elsewhere: 'Answered in the terminal',
663
697
  expired: 'Question expired',
664
- superseded: 'Replaced by a newer question',
665
698
  };
666
699
  /**
667
700
  * Park a delivered question for retirement. Called at the moment we learn it is
@@ -696,7 +729,7 @@ export function parkForRetirement(sessionId, env, pending, state) {
696
729
  * question or retire a device that never received it. Fail explicitly and keep
697
730
  * the pending record instead of silently broadening or narrowing the fanout.
698
731
  */
699
- function retiringQuestion(pending, state) {
732
+ function retiringQuestion(pending, state, cwd) {
700
733
  const hasRequest = pending.request_id !== undefined;
701
734
  const hasCollapse = pending.collapse_key !== undefined;
702
735
  const hasDevices = pending.device_ids !== undefined && pending.device_ids.length > 0;
@@ -705,13 +738,14 @@ function retiringQuestion(pending, state) {
705
738
  if (!hasRequest || !hasCollapse || !hasDevices) {
706
739
  throw new Error('live question state is incomplete; refusing to retire it without request, collapse, and device identifiers');
707
740
  }
741
+ const source = sourceContextAtHookEvent(pending.source, cwd);
708
742
  return {
709
743
  request_id: pending.request_id,
710
744
  collapse_key: pending.collapse_key,
711
745
  device_ids: [...pending.device_ids],
712
746
  question: pending.question,
713
747
  ...(pending.project !== undefined ? { project: pending.project } : {}),
714
- ...(pending.source !== undefined ? { source: pending.source } : {}),
748
+ ...(source !== undefined ? { source } : {}),
715
749
  state,
716
750
  };
717
751
  }
@@ -1223,9 +1257,9 @@ async function reconcileAcknowledgementObligations(ctx, sessionId, due) {
1223
1257
  * grows with each settled generation, so the cap that bounds chained
1224
1258
  * answer-to-question loops is a real count rather than a constant 1.
1225
1259
  */
1226
- function settleAcceptedAnswers(ctx, sessionId, accepted) {
1260
+ function settleAcceptedAnswers(ctx, sessionId, accepted, cwd) {
1227
1261
  const retirements = accepted.answers
1228
- .map(({ pending }) => retiringQuestion(pending, 'answered'))
1262
+ .map(({ pending }) => retiringQuestion(pending, 'answered', cwd))
1229
1263
  .filter((entry) => entry !== null);
1230
1264
  updateSessionState(sessionId, ctx.env, (current) => {
1231
1265
  const retiring = [...(current.retiring ?? [])];
@@ -1249,7 +1283,7 @@ async function retirePendings(ctx, envelope, sessionId, entries, state) {
1249
1283
  updateSessionState(sessionId, ctx.env, (current) => {
1250
1284
  const retiring = [...(current.retiring ?? [])];
1251
1285
  for (const entry of entries) {
1252
- const retirement = retiringQuestion(entry, state);
1286
+ const retirement = retiringQuestion(entry, state, envelope.cwd);
1253
1287
  if (retirement !== null && !retiring.some((item) => item.request_id === retirement.request_id)) {
1254
1288
  retiring.push(retirement);
1255
1289
  }
@@ -1338,37 +1372,32 @@ export async function handleUserPromptSubmit(ctx, envelope) {
1338
1372
  const retiring = [...(current.retiring ?? [])];
1339
1373
  const unasked = pendingList(current).filter((entry) => entry.request_id === undefined);
1340
1374
  for (const entry of pendingList(current).filter((entry) => entry.request_id !== undefined)) {
1341
- const retirement = retiringQuestion(entry, 'answered_elsewhere');
1375
+ const retirement = retiringQuestion(entry, 'answered_elsewhere', envelope.cwd);
1342
1376
  if (retirement !== null &&
1343
1377
  !retiring.some((parked) => parked.request_id === retirement.request_id)) {
1344
1378
  retiring.push(retirement);
1345
1379
  }
1346
1380
  }
1347
- return {
1348
- last_prompt_at: ctx.now(),
1349
- ...(current.last_stop_at === undefined ? {} : { last_stop_at: current.last_stop_at }),
1350
- ...(unasked.length > 0 ? { pending: unasked } : {}),
1351
- ...(retiring.length > 0 ? { retiring } : {}),
1352
- ...(current.accepted === undefined ? {} : { accepted: current.accepted }),
1353
- // Carried across a prompt on purpose. This rewrite rebuilds the state
1354
- // from named fields, so anything omitted is silently erased — and an
1355
- // erased obligation means the user never learns their reply was read,
1356
- // which is the one thing acknowledgement exists to guarantee.
1357
- ...(current.acknowledgement_due === undefined
1358
- ? {}
1359
- : { acknowledgement_due: current.acknowledgement_due }),
1360
- ...(current.acknowledgement_blocks === undefined
1361
- ? {}
1362
- : { acknowledgement_blocks: current.acknowledgement_blocks }),
1363
- // The user typed, so whatever chain of answer-driven continuations was
1364
- // running, a human has taken the turn and the consecutive count starts
1365
- // over. Only a real prompt reaches here: the journal branch above returns
1366
- // first, and a wake route's injected message always arrives while its own
1367
- // answer is still journaled, so it can never pass for the user's presence.
1368
- ...(current.continuation === undefined
1369
- ? {}
1370
- : { continuation: { ...current.continuation, count: 0 } }),
1371
- };
1381
+ // Start from the whole document so fields introduced by a newer CLI remain
1382
+ // attached while this older writer applies the prompt transition it knows.
1383
+ const next = { ...current, last_prompt_at: ctx.now() };
1384
+ if (unasked.length > 0)
1385
+ next.pending = unasked;
1386
+ else
1387
+ delete next.pending;
1388
+ if (retiring.length > 0)
1389
+ next.retiring = retiring;
1390
+ else
1391
+ delete next.retiring;
1392
+ // The user typed, so whatever chain of answer-driven continuations was
1393
+ // running, a human has taken the turn and the consecutive count starts
1394
+ // over. Only a real prompt reaches here: the journal branch above returns
1395
+ // first, and a wake route's injected message always arrives while its own
1396
+ // answer is still journaled, so it can never pass for the user's presence.
1397
+ if (current.continuation !== undefined) {
1398
+ next.continuation = { ...current.continuation, count: 0 };
1399
+ }
1400
+ return next;
1372
1401
  });
1373
1402
  // The bridge that lets a plain `notifai ask` find the hook's canonical
1374
1403
  // session: an agent shell command gets no hook payload, and not every
@@ -1473,9 +1502,9 @@ export async function runEscalationWaiter(ctx, options) {
1473
1502
  if (!deliveryProven) {
1474
1503
  for (const answer of accepted.answers)
1475
1504
  reportAnswer(ctx, notes, answer, true);
1476
- return await deliverAcceptedAnswers(ctx, sessionId, options.route, accepted, notes);
1505
+ return await deliverAcceptedAnswers(ctx, sessionId, options.route, accepted, notes, envelope.cwd);
1477
1506
  }
1478
- settleAcceptedAnswers(ctx, sessionId, accepted);
1507
+ settleAcceptedAnswers(ctx, sessionId, accepted, envelope.cwd);
1479
1508
  settledAnswerThisPass = true;
1480
1509
  state = readSessionState(sessionId, ctx.env);
1481
1510
  const currentAcceptedIds = new Set(accepted.answers.flatMap(({ pending }) => pending.request_id === undefined ? [] : [pending.request_id]));
@@ -1540,7 +1569,7 @@ export function hookContinuationRoute() {
1540
1569
  * consults is not a backstop: that is how a single answer once reached a
1541
1570
  * session 250 times.
1542
1571
  */
1543
- async function deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes) {
1572
+ async function deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes, cwd) {
1544
1573
  const { answers: answered, remaining } = accepted;
1545
1574
  const requestIds = summarizeRequestIds(answered.map((entry) => entry.pending)).ids;
1546
1575
  const held = accepted.held_deliveries ?? 0;
@@ -1551,7 +1580,7 @@ async function deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes) {
1551
1580
  limit: MAX_HELD_DELIVERIES,
1552
1581
  request_ids: requestIds,
1553
1582
  });
1554
- settleAcceptedAnswers(ctx, sessionId, accepted);
1583
+ settleAcceptedAnswers(ctx, sessionId, accepted, cwd);
1555
1584
  notes.push(`no route could hand the user's answer over in ${MAX_HELD_DELIVERIES} turns; not holding it any longer`);
1556
1585
  return { notes };
1557
1586
  }
@@ -1566,7 +1595,7 @@ async function deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes) {
1566
1595
  // Settle rather than journal for ever. The answer has been offered as often
1567
1596
  // as any working route could need, it is already in the notes of each of
1568
1597
  // those turns, and the questions it answered still deserve retirement.
1569
- settleAcceptedAnswers(ctx, sessionId, accepted);
1598
+ settleAcceptedAnswers(ctx, sessionId, accepted, cwd);
1570
1599
  notes.push(`the user's answer reached the ${route.kind} route ${MAX_CONTINUATION_COUNT} times without being acknowledged; not delivering it again`);
1571
1600
  return { notes };
1572
1601
  }
@@ -1683,7 +1712,7 @@ async function handleClaimedStop(ctx, envelope, sessionId, state, pending, notes
1683
1712
  reportAnswer(ctx, notes, answer, true);
1684
1713
  // Anything still unasked rides the next Stop: the agent is being resumed
1685
1714
  // with answers right now, and may not even need the rest afterwards.
1686
- return deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes);
1715
+ return deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes, envelope.cwd);
1687
1716
  }
1688
1717
  const recoverableLive = live.filter((entry) => !permanentFailures.has(entry.request_id));
1689
1718
  liveToEscalate = recoverableLive;
@@ -1786,6 +1815,7 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
1786
1815
  // server accepts answers into changed.
1787
1816
  const ownerDeadlineAt = ceilingAt;
1788
1817
  const questions = pendingQuestions(entry);
1818
+ const eventSource = sourceContextAtHookEvent(entry.source, envelope.cwd);
1789
1819
  let intent = entry.submission;
1790
1820
  if (intent === undefined) {
1791
1821
  if (entry.body === undefined) {
@@ -1799,7 +1829,7 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
1799
1829
  questions,
1800
1830
  ...(entry.media !== undefined ? { media: entry.media } : {}),
1801
1831
  ...(entry.project !== undefined ? { project: entry.project } : {}),
1802
- ...(entry.source !== undefined ? { source: entry.source } : {}),
1832
+ ...(eventSource !== undefined ? { source: eventSource } : {}),
1803
1833
  event: 'agent_question',
1804
1834
  windowSeconds: replyWindowSeconds,
1805
1835
  ownerDeadlineAt,
@@ -1878,7 +1908,7 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
1878
1908
  questions,
1879
1909
  ...(entry.media !== undefined ? { media: entry.media } : {}),
1880
1910
  ...(entry.project !== undefined ? { project: entry.project } : {}),
1881
- ...(entry.source !== undefined ? { source: entry.source } : {}),
1911
+ ...(eventSource !== undefined ? { source: eventSource } : {}),
1882
1912
  event: 'agent_question',
1883
1913
  windowSeconds: replyWindowSeconds,
1884
1914
  ownerDeadlineAt,
@@ -1954,6 +1984,7 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
1954
1984
  : Date.parse(receipt.reply_expires_at);
1955
1985
  const live = {
1956
1986
  ...entry,
1987
+ ...(intent.draft.source !== undefined ? { source: intent.draft.source } : {}),
1957
1988
  request_id: intent.request_id,
1958
1989
  collapse_key: intent.collapse_key,
1959
1990
  device_ids: intent.device_ids,
@@ -1973,6 +2004,8 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
1973
2004
  ? committedReplyDeadline
1974
2005
  : intent.owner_deadline_at,
1975
2006
  };
2007
+ if (intent.draft.source === undefined)
2008
+ delete live.source;
1976
2009
  delete live.submission;
1977
2010
  submitted.push(live);
1978
2011
  // Record what is now live on the user's devices BEFORE any wait. If we
@@ -1992,7 +2025,7 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
1992
2025
  // The entry vanished while the submit was in flight (the user's prompt
1993
2026
  // wiped the queue). The delivered notification must still be retirable,
1994
2027
  // so park it rather than lose its only identifiers.
1995
- const retirement = retiringQuestion(live, 'answered_elsewhere');
2028
+ const retirement = retiringQuestion(live, 'answered_elsewhere', envelope.cwd);
1996
2029
  const retiring = [...(current.retiring ?? [])];
1997
2030
  if (!retiring.some((parked) => parked.request_id === retirement.request_id)) {
1998
2031
  retiring.push(retirement);
@@ -2022,7 +2055,7 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
2022
2055
  const accepted = stageAcceptedAnswers(ctx, sessionId, staleAnswers, remaining);
2023
2056
  for (const answer of staleAnswers)
2024
2057
  reportAnswer(ctx, notes, answer, true);
2025
- return deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes);
2058
+ return deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes, envelope.cwd);
2026
2059
  }
2027
2060
  const waitingOn = [
2028
2061
  ...alreadyLive.filter((entry) => entry.reply_deadline_at !== undefined && entry.reply_deadline_at > ctx.now()),
@@ -2082,7 +2115,7 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
2082
2115
  const accepted = stageAcceptedAnswers(ctx, sessionId, finalAnswers, remaining);
2083
2116
  for (const answer of finalAnswers)
2084
2117
  reportAnswer(ctx, notes, answer, false);
2085
- return deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes);
2118
+ return deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes, envelope.cwd);
2086
2119
  }
2087
2120
  const requestIdSummary = summarizeRequestIds(waitingOn);
2088
2121
  ctx.log?.info('hook.answer', {
@@ -2127,7 +2160,7 @@ async function escalate(ctx, envelope, sessionId, unasked, alreadyLive, notes, h
2127
2160
  const accepted = stageAcceptedAnswers(ctx, sessionId, answered, waitingOn.length - answered.length);
2128
2161
  for (const answer of answered)
2129
2162
  reportAnswer(ctx, notes, answer, false);
2130
- return deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes);
2163
+ return deliverAcceptedAnswers(ctx, sessionId, route, accepted, notes, envelope.cwd);
2131
2164
  }
2132
2165
  // ---------------------------------------------------------------------------
2133
2166
  // SessionEnd — local cleanup only
@@ -2151,7 +2184,7 @@ export function handleSessionEnd(env, envelope, now = Date.now()) {
2151
2184
  const orphans = [...(state.retiring ?? [])];
2152
2185
  for (const entry of pendingList(state)) {
2153
2186
  try {
2154
- const orphan = retiringQuestion(entry, 'expired');
2187
+ const orphan = retiringQuestion(entry, 'expired', envelope.cwd);
2155
2188
  if (orphan !== null)
2156
2189
  orphans.push(orphan);
2157
2190
  }
@@ -2170,18 +2203,13 @@ export function handleSessionEnd(env, envelope, now = Date.now()) {
2170
2203
  notes.push(`queued ${orphans.length} question${orphans.length > 1 ? 's' : ''} for retirement on the next hook`);
2171
2204
  }
2172
2205
  if (state.accepted !== undefined || (state.acknowledgement_due?.length ?? 0) > 0) {
2173
- const preserved = {};
2174
- if (state.accepted !== undefined)
2175
- preserved.accepted = state.accepted;
2176
- if (state.acknowledgement_due !== undefined && state.acknowledgement_due.length > 0) {
2177
- preserved.acknowledgement_due = state.acknowledgement_due;
2206
+ const preserved = { ...state };
2207
+ delete preserved.pending;
2208
+ delete preserved.retiring;
2209
+ delete preserved.acknowledgement_blocks;
2210
+ if ((preserved.acknowledgement_due?.length ?? 0) === 0) {
2211
+ delete preserved.acknowledgement_due;
2178
2212
  }
2179
- if (state.last_prompt_at !== undefined)
2180
- preserved.last_prompt_at = state.last_prompt_at;
2181
- if (state.last_stop_at !== undefined)
2182
- preserved.last_stop_at = state.last_stop_at;
2183
- if (state.continuation !== undefined)
2184
- preserved.continuation = state.continuation;
2185
2213
  writeSessionState(sessionId, env, preserved);
2186
2214
  notes.push(state.accepted !== undefined
2187
2215
  ? 'preserved an accepted device answer for this exact session to resume'