@raidiant/notifai 11.6.3-beta.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 (105) hide show
  1. package/CHANGELOG.md +15 -3
  2. package/dist/atomic-file.d.ts +1 -1
  3. package/dist/atomic-file.js.map +1 -1
  4. package/dist/client.d.ts +5 -1
  5. package/dist/client.js +2 -0
  6. package/dist/client.js.map +1 -1
  7. package/dist/codex-answer-control.d.ts +14 -0
  8. package/dist/codex-answer-control.js +41 -0
  9. package/dist/codex-answer-control.js.map +1 -0
  10. package/dist/codex-answer-presentation.d.ts +18 -0
  11. package/dist/codex-answer-presentation.js +113 -0
  12. package/dist/codex-answer-presentation.js.map +1 -0
  13. package/dist/codex-input-lifecycle.d.ts +10 -0
  14. package/dist/codex-input-lifecycle.js +63 -0
  15. package/dist/codex-input-lifecycle.js.map +1 -0
  16. package/dist/codex-native-control.d.ts +13 -0
  17. package/dist/codex-native-control.js +120 -0
  18. package/dist/codex-native-control.js.map +1 -0
  19. package/dist/codex-native-turn.d.ts +18 -0
  20. package/dist/codex-native-turn.js +46 -4
  21. package/dist/codex-native-turn.js.map +1 -1
  22. package/dist/codex-question-bindings.d.ts +76 -0
  23. package/dist/codex-question-bindings.js +151 -0
  24. package/dist/codex-question-bindings.js.map +1 -0
  25. package/dist/codex-queue-control.d.ts +21 -0
  26. package/dist/codex-queue-control.js +59 -0
  27. package/dist/codex-queue-control.js.map +1 -0
  28. package/dist/codex-tool-messages.js +40 -16
  29. package/dist/codex-tool-messages.js.map +1 -1
  30. package/dist/commands-acknowledge.d.ts +2 -4
  31. package/dist/commands-acknowledge.js +7 -0
  32. package/dist/commands-acknowledge.js.map +1 -1
  33. package/dist/commands-ask.js +64 -12
  34. package/dist/commands-ask.js.map +1 -1
  35. package/dist/commands-auth.d.ts +3 -1
  36. package/dist/commands-auth.js +88 -28
  37. package/dist/commands-auth.js.map +1 -1
  38. package/dist/commands-close.js +51 -3
  39. package/dist/commands-close.js.map +1 -1
  40. package/dist/commands-core.d.ts +7 -0
  41. package/dist/commands-core.js +1 -0
  42. package/dist/commands-core.js.map +1 -1
  43. package/dist/commands-hook-attend.js +50 -10
  44. package/dist/commands-hook-attend.js.map +1 -1
  45. package/dist/commands-hook-run.js +2 -1
  46. package/dist/commands-hook-run.js.map +1 -1
  47. package/dist/commands-init.d.ts +2 -0
  48. package/dist/commands-init.js +3 -3
  49. package/dist/commands-init.js.map +1 -1
  50. package/dist/commands-io.js +7 -0
  51. package/dist/commands-io.js.map +1 -1
  52. package/dist/commands-native-acknowledge.d.ts +8 -0
  53. package/dist/commands-native-acknowledge.js +114 -0
  54. package/dist/commands-native-acknowledge.js.map +1 -0
  55. package/dist/credentials.d.ts +5 -0
  56. package/dist/credentials.js.map +1 -1
  57. package/dist/hermes-attendant.js +4 -0
  58. package/dist/hermes-attendant.js.map +1 -1
  59. package/dist/hook-acknowledgements.d.ts +1 -0
  60. package/dist/hook-acknowledgements.js +3 -1
  61. package/dist/hook-acknowledgements.js.map +1 -1
  62. package/dist/hook-lifecycle.d.ts +12 -1
  63. package/dist/hook-lifecycle.js +145 -79
  64. package/dist/hook-lifecycle.js.map +1 -1
  65. package/dist/hook-question-retirement.js +2 -1
  66. package/dist/hook-question-retirement.js.map +1 -1
  67. package/dist/hook-question-state.d.ts +6 -2
  68. package/dist/hook-question-state.js +19 -7
  69. package/dist/hook-question-state.js.map +1 -1
  70. package/dist/hook-session-state.d.ts +5 -1
  71. package/dist/hook-session-state.js +48 -14
  72. package/dist/hook-session-state.js.map +1 -1
  73. package/dist/hook-types.d.ts +23 -1
  74. package/dist/hook-types.js.map +1 -1
  75. package/dist/native-answer-operation.d.ts +70 -0
  76. package/dist/native-answer-operation.js +247 -0
  77. package/dist/native-answer-operation.js.map +1 -0
  78. package/dist/pairing-qr.d.ts +5 -0
  79. package/dist/pairing-qr.js +24 -0
  80. package/dist/pairing-qr.js.map +1 -0
  81. package/dist/pending-pairing.d.ts +1 -0
  82. package/dist/pending-pairing.js +7 -5
  83. package/dist/pending-pairing.js.map +1 -1
  84. package/dist/program.js +9 -3
  85. package/dist/program.js.map +1 -1
  86. package/dist/session-attendant-probe.d.ts +1 -1
  87. package/dist/session-attendant-probe.js +2 -1
  88. package/dist/session-attendant-probe.js.map +1 -1
  89. package/dist/session-attendant-state.d.ts +5 -0
  90. package/dist/session-attendant-state.js +29 -10
  91. package/dist/session-attendant-state.js.map +1 -1
  92. package/dist/session-delivery.d.ts +29 -0
  93. package/dist/session-delivery.js +3 -1
  94. package/dist/session-delivery.js.map +1 -1
  95. package/dist/session-input-wakes.d.ts +78 -0
  96. package/dist/session-input-wakes.js +239 -0
  97. package/dist/session-input-wakes.js.map +1 -0
  98. package/dist/session-inputs.d.ts +41 -6
  99. package/dist/session-inputs.js +199 -19
  100. package/dist/session-inputs.js.map +1 -1
  101. package/dist/skill-source/manifest.json +8 -4
  102. package/dist/skill-source/notifai/SKILL.md +30 -28
  103. package/dist/skill-source/notifai/references/harness-setup.md +33 -20
  104. package/dist/skill-source/notifai/references/native-questions.md +51 -0
  105. package/package.json +10 -3
@@ -6,8 +6,21 @@ export interface NativeTurnSnapshot {
6
6
  id: string;
7
7
  offset: number;
8
8
  ended: boolean;
9
+ outcome?: 'completed' | 'aborted';
9
10
  };
10
11
  positions: Map<string, number>;
12
+ /** Only populated by explicit question observation, never by activity polling. */
13
+ questions?: NativeQuestionEmission[];
14
+ }
15
+ export interface NativeQuestionEmission {
16
+ /** Byte position of the actual tool call, used to reject pre-registration calls. */
17
+ offset: number;
18
+ turn_id: string;
19
+ call_id: string;
20
+ index: number;
21
+ title: string;
22
+ options?: string[];
23
+ accepted: boolean;
11
24
  }
12
25
  /** Bounded filename discovery for an existing owner during an explicit update.
13
26
  * The reader below still verifies native metadata; filenames are not identity.
@@ -15,5 +28,10 @@ export interface NativeTurnSnapshot {
15
28
  export declare function findNativeTranscript(sessionId: string, env: NodeJS.ProcessEnv): string | null;
16
29
  /** Unknown, replaced, partial or unowned records never supply activity evidence. */
17
30
  export declare function readNativeTurnSnapshot(file: unknown, sessionId: string, env: NodeJS.ProcessEnv): NativeTurnSnapshot | null;
31
+ /** Observe actual native async-question calls plus their acceptance receipts.
32
+ * User messages, quoted examples and injected app-answer envelopes are never
33
+ * question emissions. This reads only the same owned, stable bounded tail.
34
+ */
35
+ export declare function readNativeQuestionSnapshot(file: unknown, sessionId: string, env: NodeJS.ProcessEnv): NativeTurnSnapshot | null;
18
36
  /** Ownership can be proved even when a long turn exceeds the activity bound. */
19
37
  export declare function nativeTranscriptOwned(file: unknown, sessionId: string, env: NodeJS.ProcessEnv): boolean;
@@ -1,4 +1,4 @@
1
- /** Read only typed lifecycle records from the transcript named by a native hook. */
1
+ /** Read typed lifecycle and optional question records from an owned native transcript. */
2
2
  import { closeSync, constants, fstatSync, lstatSync, openSync, readSync, realpathSync, readdirSync } from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { configHome } from './install-hooks.js';
@@ -36,11 +36,19 @@ export function readNativeTurnSnapshot(file, sessionId, env) {
36
36
  const observed = readNativeTranscript(file, sessionId, env, false);
37
37
  return observed !== null && 'latest' in observed ? observed : null;
38
38
  }
39
+ /** Observe actual native async-question calls plus their acceptance receipts.
40
+ * User messages, quoted examples and injected app-answer envelopes are never
41
+ * question emissions. This reads only the same owned, stable bounded tail.
42
+ */
43
+ export function readNativeQuestionSnapshot(file, sessionId, env) {
44
+ const observed = readNativeTranscript(file, sessionId, env, false, true);
45
+ return observed !== null && 'latest' in observed ? observed : null;
46
+ }
39
47
  /** Ownership can be proved even when a long turn exceeds the activity bound. */
40
48
  export function nativeTranscriptOwned(file, sessionId, env) {
41
49
  return readNativeTranscript(file, sessionId, env, true) !== null;
42
50
  }
43
- function readNativeTranscript(file, sessionId, env, identityOnly) {
51
+ function readNativeTranscript(file, sessionId, env, identityOnly, includeQuestions = false) {
44
52
  if (typeof file !== 'string' || !path.isAbsolute(file))
45
53
  return null;
46
54
  let fd;
@@ -78,6 +86,9 @@ function readNativeTranscript(file, sessionId, env, identityOnly) {
78
86
  return null;
79
87
  let latest;
80
88
  const positions = new Map();
89
+ const questions = [];
90
+ const questionCalls = new Set();
91
+ const outputs = new Map();
81
92
  while (offset < bytes.length) {
82
93
  const end = bytes.indexOf(10, offset);
83
94
  if (end < 0)
@@ -92,15 +103,46 @@ function readNativeTranscript(file, sessionId, env, identityOnly) {
92
103
  positions.set(event.turn_id, at + offset);
93
104
  }
94
105
  else if (latest !== undefined && event?.turn_id === latest.id &&
95
- ['task_complete', 'turn_aborted'].includes(event.type ?? ''))
106
+ ['task_complete', 'turn_aborted'].includes(event.type ?? '')) {
96
107
  latest.ended = true;
108
+ latest.outcome = event.type === 'turn_aborted' ? 'aborted' : 'completed';
109
+ }
110
+ }
111
+ if (includeQuestions && line.includes('"response_item"')) {
112
+ const record = JSON.parse(line);
113
+ const item = record.type === 'response_item' ? record.payload : undefined;
114
+ if (latest !== undefined && item?.type === 'function_call' && item.name === 'request_user_input_async') {
115
+ if (latest.ended || typeof item.call_id !== 'string' || item.call_id.trim() === '' ||
116
+ questionCalls.has(item.call_id) || typeof item.arguments !== 'string')
117
+ return null;
118
+ questionCalls.add(item.call_id);
119
+ const args = JSON.parse(item.arguments);
120
+ if (!Array.isArray(args.questions) || args.questions.length === 0)
121
+ return null;
122
+ for (const [index, question] of args.questions.entries()) {
123
+ if (question === null || typeof question.title !== 'string' ||
124
+ (question.options !== undefined && (!Array.isArray(question.options) || !question.options.every(option => typeof option === 'string'))))
125
+ return null;
126
+ questions.push({ offset: at + offset, turn_id: latest.id, call_id: item.call_id, index, title: question.title,
127
+ ...(question.options === undefined ? {} : { options: question.options }), accepted: false });
128
+ }
129
+ }
130
+ else if (item?.type === 'function_call_output' && typeof item.call_id === 'string' &&
131
+ questions.some(question => question.call_id === item.call_id)) {
132
+ // Missing, conflicting or repeated receipts cannot prove one emission.
133
+ if (outputs.has(item.call_id) || typeof item.output !== 'string')
134
+ return null;
135
+ const output = JSON.parse(item.output);
136
+ outputs.set(item.call_id, output?.accepted === true);
137
+ }
97
138
  }
98
139
  offset = end + 1;
99
140
  }
100
141
  const after = fstatSync(fd);
101
142
  if (latest === undefined || after.size !== stat.size || after.mtimeMs !== stat.mtimeMs)
102
143
  return null;
103
- return { file: canonical, identity: `${stat.dev}:${stat.ino}`, size: stat.size, latest, positions };
144
+ return { file: canonical, identity: `${stat.dev}:${stat.ino}`, size: stat.size, latest, positions,
145
+ ...(includeQuestions ? { questions: questions.map(question => ({ ...question, accepted: outputs.get(question.call_id) === true })) } : {}) };
104
146
  }
105
147
  catch {
106
148
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-native-turn.js","sourceRoot":"","sources":["../src/codex-native-turn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-native-turn.js","sourceRoot":"","sources":["../src/codex-native-turn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { QuestionT, ReplyAnswerT } from '@raidiant/notifai-protocol';
2
+ import type { ServiceIdentity } from './credentials.js';
3
+ import type { PendingQuestion, SessionState } from './hook-types.js';
4
+ import type { NativeTurnSnapshot } from './codex-native-turn.js';
5
+ export interface CodexQuestionBinding {
6
+ question: QuestionT;
7
+ marker: string;
8
+ native?: {
9
+ turn_id: string;
10
+ call_id: string;
11
+ index: number;
12
+ };
13
+ /** Recomputed from a fresh full registration-turn snapshot before use. */
14
+ verified?: true;
15
+ /** A second occurrence permanently removes this marker's authority. */
16
+ ambiguous?: true;
17
+ }
18
+ export interface CodexQuestionRegistration {
19
+ question_id: string;
20
+ owner_key: string;
21
+ registration_turn_id: string;
22
+ transcript: {
23
+ file: string;
24
+ identity: string;
25
+ registered_offset: number;
26
+ };
27
+ service_identity: ServiceIdentity;
28
+ questions: CodexQuestionBinding[];
29
+ /** Positive receipt evidence only; never an unconfirmed reserved ID. */
30
+ confirmed_request_id?: string;
31
+ /** Ordinary presentation is sticky, including an uncertain stdout write. */
32
+ ordinary_only?: true;
33
+ /** Explicit retirement/withdrawal cannot become native authority again. */
34
+ terminated?: true;
35
+ }
36
+ export declare function nativeQuestionTitle(binding: CodexQuestionBinding): string;
37
+ /** Invocation-local service permission; never stored or reused for later asks. */
38
+ export interface NativeQuestionAdmission {
39
+ owner_key: string;
40
+ turn_id: string;
41
+ service: ServiceIdentity;
42
+ }
43
+ /** Read-only local eligibility. Registration repeats this under its lock. */
44
+ export declare function currentCodexQuestionContext(state: SessionState, sessionId: string, env: NodeJS.ProcessEnv): {
45
+ owner_key: string;
46
+ snapshot: NativeTurnSnapshot;
47
+ } | null;
48
+ /** Called by registration while holding the session lock. Capability absence
49
+ * leaves the ordinary registration untouched and creates no native authority.
50
+ */
51
+ export declare function reserveCurrentCodexQuestion(state: SessionState, pending: PendingQuestion, sessionId: string, env: NodeJS.ProcessEnv, admission?: NativeQuestionAdmission): SessionState;
52
+ /** Caller holds the registration transaction and has proved the current owner.
53
+ * Reservation and pending registration must be saved in that single write.
54
+ * This creates no native question; only the agent's real tool call can do that.
55
+ */
56
+ export declare function reserveCodexQuestion(state: SessionState, pending: PendingQuestion, key: string, snapshot: NativeTurnSnapshot): SessionState;
57
+ /** Count every marker occurrence before shape filtering. A changed-options
58
+ * duplicate is still ambiguous. Missing/truncated/replaced evidence removes
59
+ * current eligibility without forgetting the original tuple or ambiguity.
60
+ */
61
+ export declare function observeCodexQuestions(state: SessionState, key: string, snapshot: NativeTurnSnapshot | null): SessionState;
62
+ /** Mark in the same transaction that consumes the ordinary app answer. */
63
+ export declare function markCodexOrdinaryPresentation(state: SessionState, questionIds: ReadonlySet<string>): SessionState;
64
+ /** Explicit cancellation only, in the transaction selecting the questions. */
65
+ export declare function terminateCodexQuestions(state: SessionState, ids: ReadonlySet<string>): SessionState;
66
+ /** Reservation protects early native answers before the emission observer runs.
67
+ * Apply after matching all pending questions, so sibling ambiguity is preserved.
68
+ */
69
+ export declare function mayRetireFromPrompt(state: SessionState, pending: PendingQuestion): boolean;
70
+ /** The caller refreshes observation under the owner fence before admission.
71
+ * A fresh native answer remains reportable after ordinary app presentation.
72
+ */
73
+ export declare function admitBoundNativeAnswer(state: SessionState, questionId: string, key: string, service: ServiceIdentity, answers: ReplyAnswerT[]): {
74
+ requestId?: string;
75
+ service: ServiceIdentity;
76
+ };
@@ -0,0 +1,151 @@
1
+ /** Local association of registered questions with actual accepted Codex forms. */
2
+ import { isDeepStrictEqual } from 'node:util';
3
+ import { readNativeQuestionSnapshot } from './codex-native-turn.js';
4
+ import { readSessionIncarnation, sessionHasEnded } from './hook-session-state.js';
5
+ import { currentCodexTurn } from './session-attendant-state.js';
6
+ import { processIdentityLiveness } from './process-identity.js';
7
+ export function nativeQuestionTitle(binding) {
8
+ return `[nf:${binding.marker}] ${binding.question.text}`;
9
+ }
10
+ /** Read-only local eligibility. Registration repeats this under its lock. */
11
+ export function currentCodexQuestionContext(state, sessionId, env) {
12
+ const owner = readSessionIncarnation(sessionId, env);
13
+ const proof = state.codex_native_turn;
14
+ if (state.harness !== 'codex' || owner === null || proof?.key !== owner.key || sessionHasEnded(sessionId, env) ||
15
+ owner.harness_process === undefined || processIdentityLiveness(owner.harness_process) !== 'alive' ||
16
+ state.codex_tool_hook?.incarnation !== owner.incarnation || state.codex_tool_hook.root_observed?.turn_id !== proof.turn_id ||
17
+ currentCodexTurn(sessionId, env, owner.key) !== proof.turn_id)
18
+ return null;
19
+ const snapshot = readNativeQuestionSnapshot(proof.transcript_path, sessionId, env);
20
+ if (snapshot === null || snapshot.latest.id !== proof.turn_id || snapshot.latest.ended)
21
+ return null;
22
+ return { owner_key: owner.key, snapshot };
23
+ }
24
+ /** Called by registration while holding the session lock. Capability absence
25
+ * leaves the ordinary registration untouched and creates no native authority.
26
+ */
27
+ export function reserveCurrentCodexQuestion(state, pending, sessionId, env, admission) {
28
+ if (admission === undefined || !isDeepStrictEqual(admission.service, pending.service_identity))
29
+ return state;
30
+ const current = currentCodexQuestionContext(state, sessionId, env);
31
+ if (current === null || current.owner_key !== admission.owner_key || current.snapshot.latest.id !== admission.turn_id)
32
+ return state;
33
+ return reserveCodexQuestion(state, pending, current.owner_key, current.snapshot);
34
+ }
35
+ /** Caller holds the registration transaction and has proved the current owner.
36
+ * Reservation and pending registration must be saved in that single write.
37
+ * This creates no native question; only the agent's real tool call can do that.
38
+ */
39
+ export function reserveCodexQuestion(state, pending, key, snapshot) {
40
+ if (state.harness !== 'codex' || pending.question_id === undefined || pending.service_identity === undefined ||
41
+ snapshot.latest.ended || snapshot.questions === undefined || !snapshot.positions.has(snapshot.latest.id) ||
42
+ pending.questions === undefined || pending.questions.length === 0 ||
43
+ pending.questions.some(question => question.multi === true) ||
44
+ state.codex_question_bindings?.some(item => item.question_id === pending.question_id))
45
+ return state;
46
+ const used = new Set((state.codex_question_bindings ?? []).flatMap(item => item.questions.map(q => q.marker)));
47
+ // Avoid even an unrelated previously emitted marker visible in this turn.
48
+ for (const emission of snapshot.questions) {
49
+ for (const match of emission.title.matchAll(/\[nf:([0-9A-Z]+)\]/g))
50
+ used.add(match[1]);
51
+ }
52
+ let counter = state.codex_question_marker_counter ?? 0;
53
+ if (!Number.isSafeInteger(counter) || counter < 0)
54
+ return state;
55
+ const questions = [];
56
+ for (const question of pending.questions) {
57
+ let marker;
58
+ do {
59
+ if (counter >= Number.MAX_SAFE_INTEGER)
60
+ return state;
61
+ marker = (++counter).toString(36).toUpperCase().padStart(3, '0');
62
+ } while (used.has(marker));
63
+ used.add(marker);
64
+ questions.push({ question: structuredClone(question), marker });
65
+ }
66
+ return { ...state, codex_question_marker_counter: counter, codex_question_bindings: [
67
+ ...(state.codex_question_bindings ?? []), {
68
+ question_id: pending.question_id, owner_key: key, registration_turn_id: snapshot.latest.id,
69
+ transcript: { file: snapshot.file, identity: snapshot.identity, registered_offset: snapshot.size },
70
+ service_identity: { ...pending.service_identity }, questions,
71
+ },
72
+ ] };
73
+ }
74
+ /** Count every marker occurrence before shape filtering. A changed-options
75
+ * duplicate is still ambiguous. Missing/truncated/replaced evidence removes
76
+ * current eligibility without forgetting the original tuple or ambiguity.
77
+ */
78
+ export function observeCodexQuestions(state, key, snapshot) {
79
+ if (state.codex_question_bindings === undefined)
80
+ return state;
81
+ return { ...state, codex_question_bindings: state.codex_question_bindings.map(registration => {
82
+ const covered = registration.terminated !== true && registration.owner_key === key && snapshot !== null &&
83
+ snapshot.file === registration.transcript.file && snapshot.identity === registration.transcript.identity &&
84
+ snapshot.size >= registration.transcript.registered_offset && snapshot.positions.has(registration.registration_turn_id);
85
+ return { ...registration, questions: registration.questions.map(binding => {
86
+ const next = { ...binding };
87
+ delete next.verified;
88
+ if (!covered || binding.ambiguous === true)
89
+ return next;
90
+ const matches = snapshot.questions?.filter(emission => emission.accepted && emission.title.includes(`[nf:${binding.marker}]`)) ?? [];
91
+ // Count multiple copies of the token in a single title as ambiguous too.
92
+ if (matches.length > 1 || matches.some(emission => emission.title.split(`[nf:${binding.marker}]`).length !== 2)) {
93
+ return { ...next, ambiguous: true };
94
+ }
95
+ const emission = matches[0];
96
+ if (emission === undefined || emission.offset < registration.transcript.registered_offset ||
97
+ emission.turn_id !== registration.registration_turn_id ||
98
+ emission.title !== nativeQuestionTitle(binding) ||
99
+ !isDeepStrictEqual(emission.options, binding.question.choices?.map(choice => choice.label)))
100
+ return next;
101
+ const native = { turn_id: emission.turn_id, call_id: emission.call_id, index: emission.index };
102
+ if (binding.native !== undefined && !isDeepStrictEqual(binding.native, native))
103
+ return { ...next, ambiguous: true };
104
+ return { ...next, native, verified: true };
105
+ }) };
106
+ }) };
107
+ }
108
+ /** Mark in the same transaction that consumes the ordinary app answer. */
109
+ export function markCodexOrdinaryPresentation(state, questionIds) {
110
+ if (!state.codex_question_bindings?.some(item => questionIds.has(item.question_id)))
111
+ return state;
112
+ return { ...state, codex_question_bindings: state.codex_question_bindings.map(item => questionIds.has(item.question_id) ? { ...item, ordinary_only: true } : item) };
113
+ }
114
+ /** Explicit cancellation only, in the transaction selecting the questions. */
115
+ export function terminateCodexQuestions(state, ids) {
116
+ if (state.codex_question_bindings === undefined)
117
+ return state;
118
+ return { ...state, codex_question_bindings: state.codex_question_bindings.map(binding => ids.has(binding.question_id) || (binding.confirmed_request_id !== undefined && ids.has(binding.confirmed_request_id))
119
+ ? { ...binding, terminated: true } : binding),
120
+ };
121
+ }
122
+ /** Reservation protects early native answers before the emission observer runs.
123
+ * Apply after matching all pending questions, so sibling ambiguity is preserved.
124
+ */
125
+ export function mayRetireFromPrompt(state, pending) {
126
+ return !state.codex_question_bindings?.some(item => item.question_id === pending.question_id);
127
+ }
128
+ /** The caller refreshes observation under the owner fence before admission.
129
+ * A fresh native answer remains reportable after ordinary app presentation.
130
+ */
131
+ export function admitBoundNativeAnswer(state, questionId, key, service, answers) {
132
+ const registration = state.codex_question_bindings?.find(item => item.question_id === questionId);
133
+ if (registration === undefined || registration.terminated === true || registration.owner_key !== key || !isDeepStrictEqual(registration.service_identity, service)) {
134
+ throw new Error('The native question is not registered to this owner and Approved Machine.');
135
+ }
136
+ if (answers.length === 0 || new Set(answers.map(answer => answer.question_id)).size !== answers.length)
137
+ throw new Error('Native answers must name distinct registered questions.');
138
+ for (const answer of answers) {
139
+ const binding = registration.questions.find(item => item.question.id === answer.question_id);
140
+ const choices = answer.choice_ids ?? [];
141
+ if (binding?.verified !== true || binding.native === undefined || binding.ambiguous === true ||
142
+ new Set(choices).size !== choices.length || (binding.question.multi !== true && choices.length > 1) ||
143
+ choices.some(id => !binding.question.choices?.some(choice => choice.id === id)) ||
144
+ (choices.length === 0 && !answer.text?.trim())) {
145
+ throw new Error('The answer does not match one verified native question and its registered choices.');
146
+ }
147
+ }
148
+ return { service: registration.service_identity,
149
+ ...(registration.confirmed_request_id === undefined ? {} : { requestId: registration.confirmed_request_id }) };
150
+ }
151
+ //# sourceMappingURL=codex-question-bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-question-bindings.js","sourceRoot":"","sources":["../src/codex-question-bindings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface NativeQueueItem {
2
+ id: string;
3
+ clientUserMessageId: string;
4
+ input: Array<{
5
+ type: string;
6
+ text?: string;
7
+ }>;
8
+ }
9
+ export interface QueueControl {
10
+ namespace: string;
11
+ threadId: string;
12
+ add(token: string, text: string): Promise<string>;
13
+ find(token: string, text: string): Promise<'absent' | 'ambiguous' | {
14
+ id: string;
15
+ }>;
16
+ remove(id: string): Promise<boolean>;
17
+ close(): void;
18
+ }
19
+ /** Missing queue capability is a preflight result. Errors after add starts
20
+ * remain uncertain acceptance and cannot authorize another writer. */
21
+ export declare function connectCodexQueue(sessionId: string, env: NodeJS.ProcessEnv, deadlineAt: number, now?: () => number, unavailable?: (stage: string) => void): Promise<QueueControl | null>;
@@ -0,0 +1,59 @@
1
+ /** Optional exact queue capability on a verified existing Codex connection. */
2
+ import { connectCodexControl } from './codex-native-control.js';
3
+ /** Missing queue capability is a preflight result. Errors after add starts
4
+ * remain uncertain acceptance and cannot authorize another writer. */
5
+ export async function connectCodexQueue(sessionId, env, deadlineAt, now = () => performance.now(), unavailable) {
6
+ const control = await connectCodexControl(sessionId, env, deadlineAt, now, unavailable);
7
+ if (control === null)
8
+ return null;
9
+ const call = control.call;
10
+ try {
11
+ const list = async () => {
12
+ const all = [];
13
+ let cursor = null;
14
+ for (let page = 0; page < 16; page += 1) {
15
+ const result = await call('thread/queue/list', { threadId: sessionId, ...(cursor === null ? {} : { cursor }) });
16
+ if (!Array.isArray(result.data) || !result.data.every(item => typeof item.id === 'string' && typeof item.clientUserMessageId === 'string' && Array.isArray(item.input)))
17
+ throw new Error('Unrecognized native queue response');
18
+ all.push(...result.data);
19
+ if (result.nextCursor === null)
20
+ return all;
21
+ if (typeof result.nextCursor !== 'string' || result.nextCursor === cursor)
22
+ throw new Error('Unrecognized native queue cursor');
23
+ cursor = result.nextCursor;
24
+ }
25
+ throw new Error('Native queue inspection exceeded its bound');
26
+ };
27
+ await list(); // Capability check before any mutation or election.
28
+ return {
29
+ namespace: control.namespace,
30
+ threadId: sessionId,
31
+ add: async (token, text) => {
32
+ const response = await call('thread/queue/add', { threadId: sessionId, clientUserMessageId: token, input: [{ type: 'text', text }] });
33
+ if (typeof response.queuedSubmission?.id !== 'string' || response.queuedSubmission.clientUserMessageId !== token)
34
+ throw new Error('Native queue receipt unknown');
35
+ return response.queuedSubmission.id;
36
+ },
37
+ find: async (token, text) => {
38
+ const matches = (await list()).filter(item => item.clientUserMessageId === token);
39
+ if (matches.length === 0)
40
+ return 'absent';
41
+ const match = matches[0];
42
+ return matches.length === 1 && match.input.length === 1 && match.input[0]?.type === 'text' && match.input[0].text === text ? { id: match.id } : 'ambiguous';
43
+ },
44
+ remove: async (id) => {
45
+ const result = await call('thread/queue/delete', { threadId: sessionId, queuedSubmissionId: id });
46
+ if (typeof result.deleted !== 'boolean')
47
+ throw new Error('Native queue deletion unknown');
48
+ return result.deleted;
49
+ },
50
+ close: () => control.close(),
51
+ };
52
+ }
53
+ catch {
54
+ control.close();
55
+ unavailable?.('queue-list');
56
+ return null;
57
+ }
58
+ }
59
+ //# sourceMappingURL=codex-queue-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-queue-control.js","sourceRoot":"","sources":["../src/codex-queue-control.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@ import { readSessionIncarnation, readSessionState, sessionHasEnded, updateSessio
5
5
  import { codexHookIdentityHash, codexTrustKey, codexTrustProblems, findInstallations, handlerEvent } from './install-hooks.js';
6
6
  import { currentProcessIdentity, processIdentityLiveness } from './process-identity.js';
7
7
  import { currentCodexTurn, readAttendantLease, recordTurnStart } from './session-attendant-state.js';
8
+ import { refreshCodexInputActivity } from './codex-input-lifecycle.js';
9
+ import { readNativeQuestionSnapshot } from './codex-native-turn.js';
10
+ import { observeCodexQuestions } from './codex-question-bindings.js';
11
+ import { codexAnswerPresentation } from './codex-answer-presentation.js';
12
+ import { isDeepStrictEqual } from 'node:util';
8
13
  /** Missing, disabled, changed or untrusted hooks retain ordinary queue delivery. */
9
14
  function toolHookFingerprint(deps) {
10
15
  const installations = findInstallations(deps.env, deps.hookAdapterHome, deps.hookPlatform)
@@ -38,25 +43,20 @@ export async function deliverCodexToolMessage(deps, envelope, logger) {
38
43
  typeof envelope.turn_id !== 'string' || envelope.turn_id === '')
39
44
  return;
40
45
  const incarnation = readSessionIncarnation(sessionId, deps.env);
41
- const lease = readAttendantLease(sessionId, deps.env);
42
46
  const sourcePid = Number(deps.env['NOTIFAI_HOOK_SOURCE_PID']);
43
47
  const owner = incarnation?.harness_process;
44
- if (incarnation === null || lease === null || owner === undefined ||
45
- owner.pid !== sourcePid || lease.incarnation !== incarnation.incarnation)
48
+ if (incarnation === null || owner === undefined || owner.pid !== sourcePid)
46
49
  return;
47
- const mayWrite = () => {
48
- const current = readAttendantLease(sessionId, deps.env);
49
- return !sessionHasEnded(sessionId, deps.env) &&
50
- readSessionIncarnation(sessionId, deps.env)?.incarnation === lease.incarnation &&
51
- current?.incarnation === lease.incarnation && current.generation === lease.generation &&
52
- currentCodexTurn(sessionId, deps.env, incarnation.key) === envelope.turn_id &&
50
+ const ownsRoot = () => {
51
+ const current = readSessionIncarnation(sessionId, deps.env);
52
+ return !sessionHasEnded(sessionId, deps.env) && current?.key === incarnation.key &&
53
+ current.incarnation === incarnation.incarnation &&
53
54
  processIdentityLiveness(owner) === 'alive';
54
55
  };
55
56
  // Seeing a definition on disk does not prove an already-running Codex loaded
56
57
  // it. Only this exact session's real tool invocation enables busy delivery.
57
58
  const fingerprint = toolHookFingerprint(deps);
58
- if (fingerprint === null || sessionHasEnded(sessionId, deps.env) ||
59
- processIdentityLiveness(owner) !== 'alive')
59
+ if (fingerprint === null || !ownsRoot())
60
60
  return;
61
61
  // Automatic continuations need not emit UserPromptSubmit. A trusted,
62
62
  // synchronous tool callback from this exact owner is also a turn observation.
@@ -65,16 +65,34 @@ export async function deliverCodexToolMessage(deps, envelope, logger) {
65
65
  if (currentCodexTurn(sessionId, deps.env, incarnation.key) !== envelope.turn_id) {
66
66
  recordTurnStart(sessionId, deps.env, incarnation.key, envelope.turn_id);
67
67
  }
68
- if (!mayWrite())
68
+ const mayObserve = () => ownsRoot() &&
69
+ currentCodexTurn(sessionId, deps.env, incarnation.key) === envelope.turn_id;
70
+ if (!mayObserve())
69
71
  return;
72
+ refreshCodexInputActivity(sessionId, deps.env, incarnation.key, envelope.transcript_path);
73
+ if (!mayObserve())
74
+ return;
75
+ if (readSessionState(sessionId, deps.env).codex_question_bindings?.length) {
76
+ const snapshot = readNativeQuestionSnapshot(envelope.transcript_path, sessionId, deps.env);
77
+ updateSessionState(sessionId, deps.env, state => mayObserve() ? observeCodexQuestions(state, incarnation.key, snapshot) : state);
78
+ }
70
79
  const proof = readSessionState(sessionId, deps.env).codex_tool_hook;
71
- if (proof?.incarnation !== lease.incarnation || proof.fingerprint !== fingerprint ||
80
+ if (proof?.incarnation !== incarnation.incarnation || proof.fingerprint !== fingerprint ||
72
81
  proof.root_observed?.turn_id !== envelope.turn_id) {
73
- updateSessionState(sessionId, deps.env, (state) => ({
74
- ...state, codex_tool_hook: { incarnation: lease.incarnation, fingerprint,
82
+ updateSessionState(sessionId, deps.env, (state) => !mayObserve() ? state : ({
83
+ ...state, codex_tool_hook: { incarnation: incarnation.incarnation, fingerprint,
75
84
  root_observed: { turn_id: envelope.turn_id, at: (deps.now ?? Date.now)() } },
76
85
  }));
77
86
  }
87
+ // A fresh session may have no service lease until its first question exists.
88
+ // Callback evidence permits registration; only a current lease permits input.
89
+ const lease = readAttendantLease(sessionId, deps.env);
90
+ if (lease === null || lease.incarnation !== incarnation.incarnation)
91
+ return;
92
+ const mayWrite = () => {
93
+ const current = readAttendantLease(sessionId, deps.env);
94
+ return mayObserve() && current?.incarnation === lease.incarnation && current.generation === lease.generation;
95
+ };
78
96
  if (!hasSessionInputs(sessionId, deps.env, lease) || !mayWrite())
79
97
  return;
80
98
  const credential = deps.store.load();
@@ -83,12 +101,18 @@ export async function deliverCodexToolMessage(deps, envelope, logger) {
83
101
  return;
84
102
  const now = deps.now ?? Date.now;
85
103
  const deadlineAt = now() + 2_000;
104
+ const mayDeliver = () => now() < deadlineAt && mayWrite();
86
105
  const client = makeClient(deps, credential.baseUrl, `Bearer nfm_${credential.machineId}.${credential.secret}`, {
87
106
  timeoutMs: 750, deadlineAt, now,
88
107
  });
89
108
  await drainSessionInputs({
90
109
  lease,
91
- mayWrite: () => now() < deadlineAt && mayWrite(),
110
+ mayWrite: mayDeliver,
111
+ nativeAnswers: codexAnswerPresentation({ sessionId, env: deps.env, lease, ownerKey: incarnation.key,
112
+ turnId: envelope.turn_id, transcriptPath: envelope.transcript_path,
113
+ service: { base_url: credential.baseUrl, machine_id: credential.machineId },
114
+ deadline: performance.now() + 2_000, mayWrite: mayDeliver,
115
+ serviceCurrent: () => isDeepStrictEqual(deps.store.load(), credential) }),
92
116
  sequencer: {
93
117
  sessionId, env: deps.env, client, writer, log: logger,
94
118
  monotonic: () => performance.now(), wall: now,
@@ -1 +1 @@
1
- {"version":3,"file":"codex-tool-messages.js","sourceRoot":"","sources":["../src/codex-tool-messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-tool-messages.js","sourceRoot":"","sources":["../src/codex-tool-messages.ts"],"names":[],"mappings":"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"}