@raidiant/notifai 11.6.2 → 11.7.0-beta.2

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 (106) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/atomic-file.d.ts +1 -1
  3. package/dist/atomic-file.js +8 -3
  4. package/dist/atomic-file.js.map +1 -1
  5. package/dist/client.d.ts +5 -1
  6. package/dist/client.js +2 -0
  7. package/dist/client.js.map +1 -1
  8. package/dist/codex-answer-control.d.ts +14 -0
  9. package/dist/codex-answer-control.js +41 -0
  10. package/dist/codex-answer-control.js.map +1 -0
  11. package/dist/codex-answer-presentation.d.ts +18 -0
  12. package/dist/codex-answer-presentation.js +113 -0
  13. package/dist/codex-answer-presentation.js.map +1 -0
  14. package/dist/codex-input-lifecycle.d.ts +10 -0
  15. package/dist/codex-input-lifecycle.js +63 -0
  16. package/dist/codex-input-lifecycle.js.map +1 -0
  17. package/dist/codex-native-control.d.ts +13 -0
  18. package/dist/codex-native-control.js +120 -0
  19. package/dist/codex-native-control.js.map +1 -0
  20. package/dist/codex-native-turn.d.ts +18 -0
  21. package/dist/codex-native-turn.js +46 -4
  22. package/dist/codex-native-turn.js.map +1 -1
  23. package/dist/codex-question-bindings.d.ts +76 -0
  24. package/dist/codex-question-bindings.js +151 -0
  25. package/dist/codex-question-bindings.js.map +1 -0
  26. package/dist/codex-queue-control.d.ts +21 -0
  27. package/dist/codex-queue-control.js +59 -0
  28. package/dist/codex-queue-control.js.map +1 -0
  29. package/dist/codex-tool-messages.js +40 -16
  30. package/dist/codex-tool-messages.js.map +1 -1
  31. package/dist/commands-acknowledge.d.ts +2 -4
  32. package/dist/commands-acknowledge.js +7 -0
  33. package/dist/commands-acknowledge.js.map +1 -1
  34. package/dist/commands-ask.js +70 -13
  35. package/dist/commands-ask.js.map +1 -1
  36. package/dist/commands-auth.d.ts +3 -1
  37. package/dist/commands-auth.js +88 -28
  38. package/dist/commands-auth.js.map +1 -1
  39. package/dist/commands-close.js +51 -3
  40. package/dist/commands-close.js.map +1 -1
  41. package/dist/commands-core.d.ts +7 -0
  42. package/dist/commands-core.js +1 -0
  43. package/dist/commands-core.js.map +1 -1
  44. package/dist/commands-hook-attend.js +50 -10
  45. package/dist/commands-hook-attend.js.map +1 -1
  46. package/dist/commands-hook-run.js +2 -1
  47. package/dist/commands-hook-run.js.map +1 -1
  48. package/dist/commands-init.d.ts +2 -0
  49. package/dist/commands-init.js +3 -3
  50. package/dist/commands-init.js.map +1 -1
  51. package/dist/commands-io.js +7 -0
  52. package/dist/commands-io.js.map +1 -1
  53. package/dist/commands-native-acknowledge.d.ts +8 -0
  54. package/dist/commands-native-acknowledge.js +114 -0
  55. package/dist/commands-native-acknowledge.js.map +1 -0
  56. package/dist/credentials.d.ts +5 -0
  57. package/dist/credentials.js.map +1 -1
  58. package/dist/hermes-attendant.js +4 -0
  59. package/dist/hermes-attendant.js.map +1 -1
  60. package/dist/hook-acknowledgements.d.ts +1 -0
  61. package/dist/hook-acknowledgements.js +3 -1
  62. package/dist/hook-acknowledgements.js.map +1 -1
  63. package/dist/hook-lifecycle.d.ts +12 -1
  64. package/dist/hook-lifecycle.js +145 -79
  65. package/dist/hook-lifecycle.js.map +1 -1
  66. package/dist/hook-question-retirement.js +2 -1
  67. package/dist/hook-question-retirement.js.map +1 -1
  68. package/dist/hook-question-state.d.ts +6 -2
  69. package/dist/hook-question-state.js +19 -7
  70. package/dist/hook-question-state.js.map +1 -1
  71. package/dist/hook-session-state.d.ts +5 -1
  72. package/dist/hook-session-state.js +48 -14
  73. package/dist/hook-session-state.js.map +1 -1
  74. package/dist/hook-types.d.ts +23 -1
  75. package/dist/hook-types.js.map +1 -1
  76. package/dist/native-answer-operation.d.ts +70 -0
  77. package/dist/native-answer-operation.js +247 -0
  78. package/dist/native-answer-operation.js.map +1 -0
  79. package/dist/pairing-qr.d.ts +5 -0
  80. package/dist/pairing-qr.js +24 -0
  81. package/dist/pairing-qr.js.map +1 -0
  82. package/dist/pending-pairing.d.ts +1 -0
  83. package/dist/pending-pairing.js +7 -5
  84. package/dist/pending-pairing.js.map +1 -1
  85. package/dist/program.js +9 -3
  86. package/dist/program.js.map +1 -1
  87. package/dist/session-attendant-probe.d.ts +1 -1
  88. package/dist/session-attendant-probe.js +2 -1
  89. package/dist/session-attendant-probe.js.map +1 -1
  90. package/dist/session-attendant-state.d.ts +5 -0
  91. package/dist/session-attendant-state.js +29 -10
  92. package/dist/session-attendant-state.js.map +1 -1
  93. package/dist/session-delivery.d.ts +29 -0
  94. package/dist/session-delivery.js +3 -1
  95. package/dist/session-delivery.js.map +1 -1
  96. package/dist/session-input-wakes.d.ts +78 -0
  97. package/dist/session-input-wakes.js +239 -0
  98. package/dist/session-input-wakes.js.map +1 -0
  99. package/dist/session-inputs.d.ts +41 -6
  100. package/dist/session-inputs.js +199 -19
  101. package/dist/session-inputs.js.map +1 -1
  102. package/dist/skill-source/manifest.json +8 -4
  103. package/dist/skill-source/notifai/SKILL.md +30 -28
  104. package/dist/skill-source/notifai/references/harness-setup.md +33 -20
  105. package/dist/skill-source/notifai/references/native-questions.md +51 -0
  106. package/package.json +10 -3
@@ -4,6 +4,8 @@
4
4
  * presentation. A late wake therefore cannot resurrect an acknowledged answer.
5
5
  */
6
6
  import { randomUUID } from 'node:crypto';
7
+ import { isDeepStrictEqual } from 'node:util';
8
+ import { markCodexOrdinaryPresentation } from './codex-question-bindings.js';
7
9
  import { readFileSync } from 'node:fs';
8
10
  import path from 'node:path';
9
11
  import { atomicWriteFileSync } from './atomic-file.js';
@@ -14,7 +16,14 @@ import { readSessionIncarnation, readSessionState, recordSessionNotified, sessio
14
16
  import { sessionMessageContext } from './injection-render.js';
15
17
  import { currentProcessIdentity, processIdentityLiveness } from './process-identity.js';
16
18
  import { answerWriterGone, beginHandOff, readDeliveryJournal } from './session-delivery.js';
17
- export function sessionInputWake() {
19
+ import { CodexControlNotSent } from './codex-native-control.js';
20
+ import { connectCodexQueue } from './codex-queue-control.js';
21
+ import { readNativeTurnSnapshot } from './codex-native-turn.js';
22
+ import { admitInputWake, detachInputWakes, electInputWake, observeInputWake, readInputWakes, reconcileInputWakes, recoverUncertainInputWake } from './session-input-wakes.js';
23
+ import { readAttendantLease, nativeTurnContinues } from './session-attendant-state.js';
24
+ export function sessionInputWake(token) {
25
+ if (token !== undefined)
26
+ return `Notifai wake ${token}. Use any Notifai input supplied with this turn. Only if none was supplied, run \`notifai receive\` once; if it is empty, continue your work. This wake contains no note, answer, or approval.`;
18
27
  return `Notifai — user input may be waiting for this session. Run \`notifai receive\` before continuing. If no input remains, continue your work. This wake-up contains no note, answer, or approval.`;
19
28
  }
20
29
  /** Atomically coalesce native wakes until one actually reaches its consumer. */
@@ -56,6 +65,15 @@ export async function wakeSessionInputs(sessionId, env, send, log) {
56
65
  }
57
66
  }
58
67
  export function observeSessionInputWake(sessionId, env, prompt) {
68
+ if (prompt !== undefined) {
69
+ const matched = /^Notifai wake ([0-9a-f-]{36})\. /.exec(prompt);
70
+ if (matched !== null) {
71
+ const owned = readInputWakes({ sessionId, env }).find(a => a.token === matched[1] && a.text === prompt);
72
+ if (owned !== undefined)
73
+ observeInputWake({ sessionId, env }, owned.token);
74
+ return;
75
+ }
76
+ }
59
77
  if (prompt !== sessionInputWake())
60
78
  return;
61
79
  updateSessionState(sessionId, env, (state) => {
@@ -82,9 +100,17 @@ export function stageSessionAnswers(sessionId, env, accepted) {
82
100
  recordSessionNotified(sessionId, env, accepted.recorded_at);
83
101
  }
84
102
  /** The existing route wakes the exact owner, but no longer owns answer text. */
85
- export function sessionInputRoute(sessionId, env, route, log) {
103
+ export function sessionInputRoute(sessionId, env, route, log, wakeOwner = 'producer') {
86
104
  return { ...route, defer: async (accepted) => {
87
105
  stageSessionAnswers(sessionId, env, accepted);
106
+ // A live resident owns scheduling; its completion probe also covers the
107
+ // case where no more tool callbacks occur. Preserve return when absent.
108
+ if (wakeOwner === 'attendant') {
109
+ const owner = readSessionIncarnation(sessionId, env);
110
+ const lease = readAttendantLease(sessionId, env);
111
+ if (owner !== null && lease?.incarnation === owner.incarnation)
112
+ return;
113
+ }
88
114
  await wakeSessionInputs(sessionId, env, async (text) => {
89
115
  const result = await route.deliver({
90
116
  context: text, answers: 0, remaining: 0, request_ids: [], journal_recorded_at: accepted.recorded_at,
@@ -99,25 +125,30 @@ function messagesPath(sessionId, env) {
99
125
  }
100
126
  /** Cache only: the service remains authoritative and claims fence stale copies. */
101
127
  export function stageSessionMessages(sessionId, env, lease, messages) {
102
- atomicWriteFileSync(messagesPath(sessionId, env), JSON.stringify({ session_id: sessionId, ...lease, messages }));
128
+ updateSessionState(sessionId, env, state => {
129
+ atomicWriteFileSync(messagesPath(sessionId, env), JSON.stringify({ session_id: sessionId, ...lease, messages }));
130
+ return state;
131
+ });
103
132
  }
104
133
  export function readSessionMessages(sessionId, env, lease) {
134
+ return readSessionMessageCache(sessionId, env, lease) ?? [];
135
+ }
136
+ function readSessionMessageCache(sessionId, env, lease) {
105
137
  try {
106
138
  const data = JSON.parse(readFileSync(messagesPath(sessionId, env), 'utf8'));
107
139
  if (data.session_id !== sessionId || data.incarnation !== lease.incarnation || data.generation !== lease.generation || !Array.isArray(data.messages))
108
- return [];
140
+ return null;
109
141
  if (!data.messages.every((m) => typeof m.message_id === 'string' && /^sm_[A-Za-z0-9_-]+$/.test(m.message_id) &&
110
142
  typeof m.created_at === 'string' && typeof m.agent_acknowledgement_text_required === 'boolean' &&
111
143
  (m.kind === 'note' ? typeof m.body === 'string' : m.kind === 'answer_edit' && typeof m.request_id === 'string' && typeof m.text === 'string' && Array.isArray(m.answers))))
112
- return [];
144
+ return null;
113
145
  return data.messages;
114
146
  }
115
147
  catch {
116
- return [];
148
+ return null;
117
149
  }
118
150
  }
119
- function pendingSessionInputs(sessionId, env, lease) {
120
- const state = readSessionState(sessionId, env);
151
+ function pendingSessionInputs(sessionId, env, lease, state = readSessionState(sessionId, env), cachedMessages) {
121
152
  const written = new Set(readDeliveryJournal(sessionId, env)
122
153
  .filter((entry) => ['writing', 'written', 'failed'].includes(entry.stage))
123
154
  .map((entry) => entry.subject.type === 'answer' ? entry.subject.request_id : entry.subject.message_id));
@@ -125,7 +156,7 @@ function pendingSessionInputs(sessionId, env, lease) {
125
156
  const answers = (state.waiting_answers ?? []).filter((answer) => answer.pending.request_id !== undefined && !written.has(answer.pending.request_id) &&
126
157
  owed.has(answer.pending.request_id)).slice(0, 20);
127
158
  // Answers precede their edits; notes retain the service's immutable order.
128
- const messages = (lease === null ? [] : readSessionMessages(sessionId, env, lease))
159
+ const messages = (cachedMessages ?? (lease === null ? [] : readSessionMessages(sessionId, env, lease)))
129
160
  .filter((message) => !written.has(message.message_id)).slice(0, 20 - answers.length);
130
161
  return { answers, messages };
131
162
  }
@@ -133,10 +164,113 @@ export function hasSessionInputs(sessionId, env, lease) {
133
164
  const { answers, messages } = pendingSessionInputs(sessionId, env, lease);
134
165
  return answers.length + messages.length > 0;
135
166
  }
136
- /** One stdout document, at most 20 inputs, with ownership checked at the byte. */
137
- export async function drainSessionInputs(input) {
167
+ /** Read-only under the state lock. Unknown cache state is not an empty inbox. */
168
+ export function pendingInputRevisionIds(sessionId, env, lease, state) {
169
+ const cached = lease === null ? [] : readSessionMessageCache(sessionId, env, lease);
170
+ if (cached === null)
171
+ return null;
172
+ const { answers, messages } = pendingSessionInputs(sessionId, env, lease, state, cached);
173
+ return [
174
+ ...answers.map(a => `answer:${a.pending.request_id}:${a.replies.map(r => r.seq).join(',')}`),
175
+ ...messages.map(m => `message:${m.message_id}`),
176
+ ];
177
+ }
178
+ /** Optional exact queue integration. False means capability was unavailable
179
+ * before election, so the existing supported CLI wake remains the fallback. */
180
+ export async function wakeCodexSessionInputs(input) {
181
+ const owner = readSessionIncarnation(input.sessionId, input.env);
182
+ if (owner === null || owner.incarnation !== input.lease.incarnation || !input.mayWrite())
183
+ return true;
184
+ const generic = readSessionState(input.sessionId, input.env).input_wake;
185
+ if (generic?.incarnation === owner.incarnation && (generic.queued || processIdentityLiveness(generic.writer) !== 'gone'))
186
+ return true;
187
+ const initial = pendingInputRevisionIds(input.sessionId, input.env, input.lease);
188
+ if (initial === null || (initial.length === 0 && !readInputWakes(input).some(a => !['consumed', 'cancelled'].includes(a.phase))))
189
+ return true;
190
+ const control = await (input.connect ?? connectCodexQueue)(input.sessionId, input.env, performance.now() + 2_000);
191
+ if (control === null) {
192
+ const pending = pendingInputRevisionIds(input.sessionId, input.env, input.lease);
193
+ return pending === null || readInputWakes(input).some(a => a.incarnation === owner.incarnation &&
194
+ !['consumed', 'cancelled'].includes(a.phase) && a.inputIds.some(id => pending.includes(id)));
195
+ }
196
+ try {
197
+ // Mutating lifecycle/attendant observers run outside the wake-state lock.
198
+ const allowed = input.mayWrite() && input.mayWake();
199
+ const native = () => {
200
+ const proof = readSessionState(input.sessionId, input.env).codex_native_turn;
201
+ return proof?.key === owner.key ? readNativeTurnSnapshot(proof.transcript_path, input.sessionId, input.env) : null;
202
+ };
203
+ const gate = { ...input, owner: { key: owner.key, incarnation: owner.incarnation, generation: input.lease.generation },
204
+ namespace: control.namespace, control, native,
205
+ pendingIds: () => {
206
+ const lease = readAttendantLease(input.sessionId, input.env);
207
+ return lease?.incarnation === input.lease.incarnation && lease.generation === input.lease.generation
208
+ ? pendingInputRevisionIds(input.sessionId, input.env, lease) : null;
209
+ },
210
+ mayWake: () => { const observed = native(); return allowed && (observed === null ? input.unknownAllowed?.() === true : observed.latest.ended && nativeTurnContinues(input.sessionId, input.env, owner.key, observed)); },
211
+ text: (token) => sessionInputWake(token) };
212
+ detachInputWakes(gate);
213
+ await reconcileInputWakes(input, control);
214
+ if (!allowed || !input.mayWrite())
215
+ return true;
216
+ const elected = electInputWake(gate) ?? await recoverUncertainInputWake(gate);
217
+ if (elected !== null)
218
+ await admitInputWake({ ...gate, token: elected.token, control: {
219
+ ...control, add: async (token, text) => {
220
+ // Recovery may have awaited a native lookup. Refresh in-process lease
221
+ // authority at the actual byte boundary, outside every state lock.
222
+ if (!input.mayWrite() || !input.mayWake())
223
+ throw new CodexControlNotSent('Wake authorization changed before send');
224
+ return control.add(token, text);
225
+ },
226
+ } });
227
+ return true;
228
+ }
229
+ finally {
230
+ control.close();
231
+ }
232
+ }
233
+ /** Hook drains and the resident observer both call this bounded cleanup path.
234
+ * It never elects a wake, claims input, or acquires the delivery sequencer. */
235
+ export async function reconcileSessionInputWakes(sessionId, env, connect = connectCodexQueue) {
236
+ const scope = { sessionId, env };
237
+ const attempts = readInputWakes(scope);
238
+ if (!attempts.some(a => !['consumed', 'cancelled'].includes(a.phase)))
239
+ return;
240
+ const lease = readAttendantLease(sessionId, env);
241
+ // Losing the lease does not prove cached Session Messages disappeared.
242
+ if (lease !== null || attempts.every(a => a.generation === null)) {
243
+ detachInputWakes({ ...scope, pendingIds: () => {
244
+ const current = readAttendantLease(sessionId, env);
245
+ if (current?.incarnation !== lease?.incarnation || current?.generation !== lease?.generation)
246
+ return null;
247
+ return pendingInputRevisionIds(sessionId, env, current);
248
+ } });
249
+ }
250
+ if (!readInputWakes(scope).some(a => a.detached && !['consumed', 'cancelled'].includes(a.phase) && (a.nextCheckAt ?? 0) <= Date.now()))
251
+ return;
252
+ const control = await connect(sessionId, env, performance.now() + 750);
253
+ if (control === null)
254
+ return;
255
+ try {
256
+ await reconcileInputWakes(scope, control);
257
+ }
258
+ finally {
259
+ control.close();
260
+ }
261
+ }
262
+ function samePendingAnswer(state, answer) {
263
+ return state.acknowledgement_due?.some(entry => entry.request_id === answer.pending.request_id) === true &&
264
+ state.waiting_answers?.some(entry => isDeepStrictEqual(entry, answer)) === true;
265
+ }
266
+ /** One ordered prefix, at most 20 inputs, with ownership checked at the byte. */
267
+ async function drainSessionInputsOnce(input) {
138
268
  const { sequencer: deps, lease } = input;
139
- const { answers, messages } = pendingSessionInputs(deps.sessionId, deps.env, lease);
269
+ const initial = readSessionState(deps.sessionId, deps.env);
270
+ const batch = pendingSessionInputs(deps.sessionId, deps.env, lease, initial);
271
+ const nativeAt = input.nativeAnswers === undefined ? -1 : batch.answers.findIndex(answer => answer.delivery_claim === true && input.nativeAnswers.eligible(answer, initial));
272
+ const answers = nativeAt < 0 ? batch.answers : batch.answers.slice(0, nativeAt === 0 ? 1 : nativeAt);
273
+ const messages = nativeAt < 0 ? batch.messages : [];
140
274
  if (answers.length + messages.length === 0 || !input.mayWrite())
141
275
  return false;
142
276
  // An unfenced answer has no server claim to reject a stale local copy.
@@ -176,8 +310,11 @@ export async function drainSessionInputs(input) {
176
310
  // A concurrent consumer may have drained an unclaimed answer while this
177
311
  // reader waited for the delivery lock. Re-read while holding that lock.
178
312
  const current = readSessionState(deps.sessionId, deps.env);
179
- const readyAnswers = answers.filter((answer) => current.waiting_answers?.some((entry) => entry.pending.request_id === answer.pending.request_id) &&
180
- current.acknowledgement_due?.some((entry) => entry.request_id === answer.pending.request_id) &&
313
+ if (answers.some(answer => current.waiting_answers?.some(entry => entry.pending.request_id === answer.pending.request_id && !isDeepStrictEqual(entry, answer)))) {
314
+ await handOff.finish('not-written');
315
+ return false;
316
+ }
317
+ const readyAnswers = answers.filter((answer) => samePendingAnswer(current, answer) &&
181
318
  (answer.delivery_claim !== true || ids.has(answer.pending.request_id)));
182
319
  const readyMessages = messages.filter((message) => ids.has(message.message_id));
183
320
  if (readyAnswers.length + readyMessages.length === 0 || !input.mayWrite() || !handOff.writable()) {
@@ -190,6 +327,8 @@ export async function drainSessionInputs(input) {
190
327
  ].join('\n\n');
191
328
  let began = false;
192
329
  let outputAttempted = false;
330
+ let consumedState = false;
331
+ let prepared = null;
193
332
  const restoreUnwritten = () => {
194
333
  updateSessionState(deps.sessionId, deps.env, (latest) => ({
195
334
  ...latest, waiting_answers: [
@@ -205,22 +344,41 @@ export async function drainSessionInputs(input) {
205
344
  }
206
345
  };
207
346
  try {
208
- if (!handOff.begin(() => !sessionHasEnded(deps.sessionId, deps.env))) {
347
+ if (nativeAt === 0 && readyAnswers.length === 1 && input.nativeAnswers !== undefined) {
348
+ prepared = await input.nativeAnswers.prepare(readyAnswers[0], current, deps.monotonic() + handOff.remainingMs());
349
+ }
350
+ if (!handOff.begin(() => !sessionHasEnded(deps.sessionId, deps.env), prepared === null ? {} : { presentation: prepared.presentation })) {
209
351
  await handOff.finish('not-written');
210
352
  return false;
211
353
  }
212
354
  began = true;
213
- // Persist consumption before stdout; an ambiguous output is never replayed.
355
+ // Persist the selected revision and consumption before bytes. A changed
356
+ // revision remains pending for a fresh handoff, never this prepared write.
214
357
  const consumed = new Set(readyAnswers.map((answer) => answer.pending.request_id));
215
358
  updateSessionState(deps.sessionId, deps.env, (latest) => {
359
+ if (prepared !== null) {
360
+ const checked = prepared.validate(latest);
361
+ latest = checked.state;
362
+ if (!checked.valid)
363
+ return latest;
364
+ }
365
+ if (!input.mayWrite() || !handOff.writable() || !readyAnswers.every(answer => samePendingAnswer(latest, answer)))
366
+ return latest;
367
+ if (prepared === null)
368
+ latest = markCodexOrdinaryPresentation(latest, new Set(readyAnswers.flatMap(answer => answer.pending.question_id === undefined ? [] : [answer.pending.question_id])));
216
369
  const retiring = [...(latest.retiring ?? [])];
217
370
  for (const answer of readyAnswers) {
218
371
  const entry = retiringQuestion(answer.pending, 'answered');
219
372
  if (entry !== null && !retiring.some((item) => item.request_id === entry.request_id))
220
373
  retiring.push(entry);
221
374
  }
375
+ consumedState = true;
222
376
  return { ...latest, waiting_answers: (latest.waiting_answers ?? []).filter((answer) => !consumed.has(answer.pending.request_id)), retiring };
223
377
  });
378
+ if (!consumedState) {
379
+ await handOff.finish('aborted');
380
+ return false;
381
+ }
224
382
  for (const message of readyMessages)
225
383
  recordMessageAcknowledgementDue(deps.sessionId, deps.env, {
226
384
  message_id: message.message_id, recorded_at: deps.wall(), text_required: message.agent_acknowledgement_text_required,
@@ -231,24 +389,46 @@ export async function drainSessionInputs(input) {
231
389
  return false;
232
390
  }
233
391
  outputAttempted = true;
234
- input.write(text);
392
+ if (prepared === null)
393
+ input.write(text);
394
+ else
395
+ await prepared.write(() => input.mayWrite() && handOff.writable());
235
396
  if (readyAnswers.length > 0)
236
397
  updateSessionState(deps.sessionId, deps.env, (latest) => ({
237
398
  ...latest, continuation: { answered_at: deps.wall(), count: (latest.continuation?.count ?? 0) + 1 },
238
399
  }));
239
400
  await handOff.finish('written');
240
401
  deps.log?.info('delivery.handoff', {
241
- route: 'input-drain', stage: 'presented', answers: readyAnswers.length, messages: readyMessages.length,
402
+ route: prepared === null ? 'input-drain' : 'native-answer', stage: 'presented', answers: readyAnswers.length, messages: readyMessages.length,
242
403
  request_ids: readyAnswers.map((answer) => answer.pending.request_id), message_ids: readyMessages.map((message) => message.message_id),
243
404
  oldest_message_age_ms: Math.max(0, ...readyMessages.map((message) => deps.wall() - Date.parse(message.created_at))),
244
405
  });
245
406
  return true;
246
407
  }
247
408
  catch (error) {
248
- if (began && !outputAttempted)
409
+ // Only the native transport can positively prove that no bytes left. Do
410
+ // not echo now: a new handoff must reacquire claims and recheck revisions.
411
+ if (prepared !== null && error instanceof CodexControlNotSent)
412
+ outputAttempted = false;
413
+ if (consumedState && !outputAttempted)
249
414
  restoreUnwritten();
250
415
  await handOff.finish(outputAttempted ? 'failed' : began ? 'aborted' : 'not-written');
416
+ if (prepared !== null && error instanceof CodexControlNotSent)
417
+ return false;
251
418
  throw error;
252
419
  }
420
+ finally {
421
+ prepared?.close();
422
+ }
423
+ }
424
+ export async function drainSessionInputs(input) {
425
+ try {
426
+ return await drainSessionInputsOnce(input);
427
+ }
428
+ finally {
429
+ // Delivery bookkeeping has released its sequencer before native cleanup.
430
+ await reconcileSessionInputWakes(input.sequencer.sessionId, input.sequencer.env)
431
+ .catch(() => undefined);
432
+ }
253
433
  }
254
434
  //# sourceMappingURL=session-inputs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-inputs.js","sourceRoot":"","sources":["../src/session-inputs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-inputs.js","sourceRoot":"","sources":["../src/session-inputs.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "package_version": "11.6.2",
3
+ "package_version": "11.7.0-beta.2",
4
4
  "skill": "notifai",
5
- "digest": "sha256:06c88ac5938524d64da912a1c743d41a96dc4c81eb4d54a0edd749cb80e481ac",
5
+ "digest": "sha256:f57bf9551a6beac3ef9df52be9ae452e0d40bd0e883b590e3e4a49624f774cd2",
6
6
  "files": [
7
7
  {
8
8
  "path": "SKILL.md",
9
- "sha256": "2eb952db3a6042050efd46c7b8e5cf92f655aed0ed5e0d8b31840af580839e79"
9
+ "sha256": "0e68dc7246a00897f05f0200c347d2a45638c099c228d5538570f5cbe8091bc8"
10
10
  },
11
11
  {
12
12
  "path": "references/diagnostics.md",
@@ -14,7 +14,11 @@
14
14
  },
15
15
  {
16
16
  "path": "references/harness-setup.md",
17
- "sha256": "5cf2bdcf062ad744a527bee037d262739d3ed5b88e2c6d0c8637a27881a5f41b"
17
+ "sha256": "58881bd4e672ce6dcfce5f3548e3661fad5970e41ad7d842e27eecea97b1a33e"
18
+ },
19
+ {
20
+ "path": "references/native-questions.md",
21
+ "sha256": "9db5421427544a60d20c8fb01adbce774a6dd427f227f5a1bda7abda6ca1366d"
18
22
  },
19
23
  {
20
24
  "path": "references/notes-and-edits.md",
@@ -35,9 +35,8 @@ or time and do not retry automatically. Re-run the exact semantic send with
35
35
  Parent owns by default. Ordinary workers report Agent Events and do not load or send.
36
36
  Explicit textual delegation makes a worker the owner.
37
37
 
38
- An **Agent Event** is a meaningful occurrence in the work. A **Notification
39
- Request** is a deliberate User-visible message or question about one, submitted
40
- through Notifai. Internal worker reports are not Notification Requests.
38
+ An **Agent Event** happens in the work. A **Notification Request** sends it to
39
+ the User. Worker reports stay internal.
41
40
 
42
41
  Owner session lifecycle context normally includes bounded, effective guidance
43
42
  under provenance markers. When context is absent or says guidance exceeded its
@@ -48,8 +47,8 @@ notifai guidance
48
47
  ```
49
48
 
50
49
  `notifai guidance` prints `when-to-notify`, `titles`, `content`, `questions`, and
51
- `acknowledgements` under `from=you`, `from=this repository`, then
52
- `from=shipped default`. The first decides whether to notify; the rest own the words.
50
+ `acknowledgements`, ordered by `from=you`, `from=this repository`, then
51
+ `from=shipped default`. The first governs when; the rest govern wording.
53
52
 
54
53
  Two limits no topic can override:
55
54
 
@@ -177,9 +176,9 @@ notifai ask "Which environment should I roll out to?" \
177
176
 
178
177
  `--json` returns choice ids and `question_id`.
179
178
 
180
- `registered: true` confirms local registration only, not submission or
181
- Provider Acceptance. Background submission starts immediately. Never call a question sent
182
- or delivered from registration alone. Settlement adds `request_id`, keeping
179
+ `registered: true` proves local registration, not submission or
180
+ Provider Acceptance. Submission starts immediately; never call a question sent or
181
+ delivered from registration alone. Settlement adds `request_id`, keeping
183
182
  `question_id`. Inspect:
184
183
 
185
184
  ```bash
@@ -188,21 +187,23 @@ notifai status <question_id> --json
188
187
 
189
188
  States: `local`, `frozen`, `live`, `answered`, `withdrawn`, `retired`.
190
189
 
191
- **Registering is not the end of the turn.** Ask in plain conversational text,
192
- say what each answer will make you do, and continue independent work.
193
- Submission does not wait for turn end; answer-dependent work waits for the reply.
194
- A harness form can remain pending after a reply; neither path retires the other.
190
+ **Registering is not the end of the turn.** Say what each answer will make you do
191
+ and continue independent work. Submission starts immediately; dependent work
192
+ waits for the reply.
193
+ A harness form can remain pending after a reply; never promise linked closure.
194
+ When `ask` returns `native_question`, read [native questions](references/native-questions.md)
195
+ before emitting its form or acting on its answer.
195
196
 
196
- **Never say where the answer must arrive** ("tell me here"). The harness owns routing.
197
+ **Never say where the answer must arrive** ("tell me here").
197
198
 
198
199
  Use `--multi` for combined answers, `--body-file` for Body, `--image` for
199
200
  evidence, or `--form <path|->` for up to 10 questions with one `summary`.
200
201
 
201
- Register independent questions separately. Retire an obsolete registration or
202
- one answered in the conversation with
202
+ Register independent questions separately. Retire obsolete questions or unlinked
203
+ ones answered in the conversation with
203
204
  `notifai close <question_id>` or `notifai close --pending`.
204
205
 
205
- Keep every ID after a timeout or unavailable route. Inspect the original with
206
+ After a timeout or unavailable route, keep IDs and inspect
206
207
  `notifai status <question_id|request_id> --json` and `notifai replies
207
208
  <request_id> --json`; never create a duplicate.
208
209
 
@@ -246,19 +247,18 @@ to read pending notes and answers together. An empty result means continue.
246
247
  The wake-up contains no answer and needs no acknowledgement; never recover an
247
248
  old answer from it. Hooks may have delivered the input already.
248
249
 
249
- The latest reply is the user's current word: later choices correct earlier
250
- ones; typed parts are read together in order. A relayed answer uses the chosen
251
- label; `notifai replies <request_id> --json` has stable choice ids.
250
+ Within one submission, the latest reply corrects earlier choices; read typed
251
+ parts in order. Preserve distinct submissions and clarify conflicts before
252
+ acting. Relays use choice labels; `notifai replies <request_id> --json` has IDs.
252
253
 
253
- Questions normally remain answerable for a day. Without a relayed answer,
254
- inspect the original `question_id`; if lost, list outstanding questions:
254
+ Questions default to a day. Inspect `question_id` for a missing answer, or list:
255
255
 
256
256
  ```bash
257
257
  notifai replies --pending --json
258
258
  ```
259
259
 
260
260
  **Acknowledge before you resume.** The user needs to know their reply was read.
261
- Notifai tells you the exact command; run it once per answered request or
261
+ Notifai tells you the exact command; run it once per presented submission or
262
262
  [note or edit](references/notes-and-edits.md) (`sm_…`) that arrived through
263
263
  Notifai, before the work it unblocks:
264
264
 
@@ -269,8 +269,8 @@ notifai acknowledge <request_id> --text "Rolling out to staging now; I'll report
269
269
  Keep it under 200 characters and name only the concrete work their reply
270
270
  causes: it is a receipt, not a report.
271
271
 
272
- If written replies are off, run the printed command without `--text`.
273
- Acknowledgement is required.
272
+ For app answers, notes and edits, omit `--text` when written replies are off.
273
+ Acknowledgement remains required.
274
274
 
275
275
  Then resume the committed work without asking them to confirm again; it is
276
276
  work you are resuming, not approval you received.
@@ -292,10 +292,12 @@ Never tell the user to run a command you could have run yourself.
292
292
  do not ask again. Run the send. If setup is missing, run `notifai init --json`
293
293
  and retry the exact send. Projectless requests never enable a Project.
294
294
 
295
- `notifai init --json` starts browser approval without prompting and returns;
296
- its `credential` state carries `technical.pairing.approve_url` and `.code`.
297
- Relay both as T2 in <https://app.notifai.sh/setup.md>; once the User says it
298
- is approved, run it again to resume.
295
+ For a QR-first credential gap, read [computer approval and browser fallback](references/harness-setup.md#signing-this-machine-in)
296
+ before proceeding. Present the local image or library-generated text QR with
297
+ its matching code before asking for a scan or result; a path alone is insufficient.
298
+ Only the User approves. Keep the QR and proof-bearing link local; never infer
299
+ an Account email. Resume the same pairing after approval.
300
+
299
301
  Two independent decisions remain: Question Routing — devices or
300
302
  terminal only — and the skill: this project or every project here.
301
303
  Lifecycle wiring has no scope: one install per harness for this machine;