@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
package/CHANGELOG.md CHANGED
@@ -8,12 +8,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
  This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
9
9
  and [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).
10
10
 
11
- ## [11.6.3-beta.2](https://github.com/Raidiant-io/notifai/compare/v11.6.2...v11.6.3-beta.2) (2026-10-02)
11
+ ## [11.7.0-beta.2](https://github.com/Raidiant-io/notifai/compare/v11.6.2...v11.7.0-beta.2) (2026-10-04)
12
+
13
+ ### Features
14
+
15
+ * Synchronize explicitly linked Codex questions with app answers while preserving unrelated native forms, distinct submissions, and answer acknowledgements.
16
+ * Approve a computer through QR-first setup, including text-only terminal QR presentation.
12
17
 
13
18
  ### Bug Fixes
14
19
 
15
- * Avoid redundant permission changes when private state already has the required modes, including in sandboxes that deny `chmod`.
16
- * Report Project Enablement write failures as actionable question-command errors before registration.
20
+ * Deliver input through working-turn hooks and defer wakes until native turn completion; reconcile only exact owned stale queue entries.
21
+ * Keep settled question IDs usable for explicit closure without repeating acknowledgement.
22
+ * Avoid redundant permission changes when writing private local state.
23
+
24
+ ### Dependencies and limits
25
+
26
+ * Update the WebSocket client to 8.21.0 to address published security advisories.
27
+ * Pin protocol 8.2.0-beta.2, including native-answer capability discovery and reporting.
28
+ * Live optional Codex native-control acceptance is limited to macOS Codex 0.160.0. Uncertain writes retain recovery state; cancellation can lose to dequeue.
17
29
 
18
30
  ## [11.6.2](https://github.com/Raidiant-io/notifai/compare/v11.6.1...v11.6.2) (2026-10-01)
19
31
 
@@ -19,7 +19,7 @@ export interface AtomicWriteOptions {
19
19
  * supported filesystem. The contents are flushed before the rename, and a
20
20
  * symlink target is refused instead of silently writing through it.
21
21
  */
22
- export declare function atomicWriteFileSync(file: string, contents: string, options?: AtomicWriteOptions): void;
22
+ export declare function atomicWriteFileSync(file: string, contents: string | Uint8Array, options?: AtomicWriteOptions): void;
23
23
  /**
24
24
  * Create (or tighten) a directory that must not be world-readable.
25
25
  *
@@ -1 +1 @@
1
- {"version":3,"file":"atomic-file.js","sourceRoot":"","sources":["../src/atomic-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atomic-file.js","sourceRoot":"","sources":["../src/atomic-file.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AttendanceRequestT, AttendanceResponse, AlphaAccessRequestResponse, AccountAccessResponse, BeginPairingResponse, CapabilityDocument, CreateMediaUploadRequestT, CreateMediaUploadResponse, FinalizeMediaUploadResponse, EvidenceSnapshot, GetAgentAcknowledgementResponse, ListDevicesResponse, ListSoundsResponse, ClaimDeliveryAttemptRequestT, ClaimDeliveryAttemptResponse, ClientCapability, CloseDisposition, CloseRepliesResponse, CompatibilityResponse, GetSessionMessageAcknowledgementResponse, RecoveryAction, ListRepliesResponse, Platform, PollPairingResponse, PutAgentAcknowledgementRequestT, PutAgentAcknowledgementResponse, PutAgentSessionLabelRequestT, PutSessionMessageAcknowledgementRequestT, PutSessionMessageAcknowledgementResponse, ReportDeliveryAttemptRequestT, ReportDeliveryAttemptResponse, AgentSessionView, SubmissionReceipt, SubmitNotificationRequestT } from '@raidiant/notifai-protocol';
1
+ import type { AttendanceRequestT, AttendanceResponse, AlphaAccessRequestResponse, AccountAccessResponse, BeginPairingResponse, CapabilityDocument, CreateMediaUploadRequestT, CreateMediaUploadResponse, FinalizeMediaUploadResponse, EvidenceSnapshot, GetAgentAcknowledgementResponse, ListDevicesResponse, ListSoundsResponse, ClaimDeliveryAttemptRequestT, ClaimDeliveryAttemptResponse, ClientCapability, CloseDisposition, CloseRepliesResponse, CompatibilityResponse, GetSessionMessageAcknowledgementResponse, RecoveryAction, ListRepliesResponse, Platform, PollPairingResponse, PutAgentAcknowledgementRequestT, PutAgentAcknowledgementResponse, RecordHarnessAnswerRequestT, RecordHarnessAnswerResponse, PutAgentSessionLabelRequestT, PutSessionMessageAcknowledgementRequestT, PutSessionMessageAcknowledgementResponse, ReportDeliveryAttemptRequestT, ReportDeliveryAttemptResponse, AgentSessionView, SubmissionReceipt, SubmitNotificationRequestT } from '@raidiant/notifai-protocol';
2
2
  import type { Logger } from './logging.js';
3
3
  export declare class ApiCallError extends Error {
4
4
  status: number;
@@ -25,6 +25,9 @@ export interface ApiClient {
25
25
  confirmation_hash: string;
26
26
  }): Promise<BeginPairingResponse>;
27
27
  pollPairing(pairingId: string, pollVerifier: string): Promise<PollPairingResponse>;
28
+ requestPairingNotification(pairingId: string, pollVerifier: string, email: string): Promise<{
29
+ status: 'requested';
30
+ }>;
28
31
  accessStatus(): Promise<AccountAccessResponse>;
29
32
  /**
30
33
  * Read-only. There is no client-side write: filing this errand is the
@@ -51,6 +54,7 @@ export interface ApiClient {
51
54
  closeReplies(requestId: string, disposition: CloseDisposition): Promise<CloseRepliesResponse>;
52
55
  closeReplies(requestId: string, disposition?: CloseDisposition): Promise<ListRepliesResponse | CloseRepliesResponse>;
53
56
  putAgentAcknowledgement(requestId: string, body: PutAgentAcknowledgementRequestT): Promise<PutAgentAcknowledgementResponse>;
57
+ recordHarnessAnswer(requestId: string, body: RecordHarnessAnswerRequestT): Promise<RecordHarnessAnswerResponse>;
54
58
  putAgentSessionLabel(body: PutAgentSessionLabelRequestT): Promise<AgentSessionView>;
55
59
  agentAcknowledgement(requestId: string, options: {
56
60
  waitSeconds: number;
package/dist/client.js CHANGED
@@ -141,6 +141,7 @@ export function createClient(baseUrl, bearer, options = {}) {
141
141
  pollPairing: (pairingId, pollVerifier) => call('POST', `/api/v1/pairings/${encodeURIComponent(pairingId)}/poll`, {
142
142
  poll_verifier: pollVerifier,
143
143
  }),
144
+ requestPairingNotification: (pairingId, pollVerifier, email) => call('POST', `/api/v1/pairings/${encodeURIComponent(pairingId)}/notification`, { poll_verifier: pollVerifier, email }),
144
145
  accessStatus: () => call('GET', '/api/v1/account/access'),
145
146
  accessRequest: () => call('GET', '/api/v1/account/alpha-access-request'),
146
147
  listDevices: () => call('GET', '/api/v1/devices'),
@@ -160,6 +161,7 @@ export function createClient(baseUrl, bearer, options = {}) {
160
161
  replies: (requestId, { waitSeconds, afterSeq }) => call('GET', `/api/v1/notifications/${encodeURIComponent(requestId)}/replies?wait_seconds=${waitSeconds}&after_seq=${afterSeq}`, undefined, waitSeconds),
161
162
  closeReplies: ((requestId, disposition) => call('POST', `/api/v1/notifications/${encodeURIComponent(requestId)}/replies/close`, disposition === undefined ? undefined : { disposition })),
162
163
  putAgentAcknowledgement: (requestId, body) => call('PUT', `/api/v1/notifications/${encodeURIComponent(requestId)}/agent-acknowledgement`, body),
164
+ recordHarnessAnswer: (requestId, body) => call('POST', `/api/v1/notifications/${encodeURIComponent(requestId)}/harness-answers`, body),
163
165
  putAgentSessionLabel: (body) => call('PUT', '/api/v1/agent-sessions/label', body),
164
166
  agentAcknowledgement: (requestId, { waitSeconds }) => call('GET', `/api/v1/notifications/${encodeURIComponent(requestId)}/agent-acknowledgement?wait_seconds=${waitSeconds}`, undefined, waitSeconds),
165
167
  createMediaUpload: (body) => call('POST', '/api/v1/media', body),
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAuCA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAA;AAGnC,MAAM,OAAO,YAAa,SAAQ,KAAK;IAE5B;IACA;IAEA;IACA;IACA;IANT,YACS,MAAc,EACd,IAAY,EACnB,OAAe,EACR,aAA4B,IAAI,EAChC,UAAmB,IAAI,EACvB,iBAAwC,IAAI;QAEnD,KAAK,CAAC,OAAO,CAAC,CAAA;QAPP,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAEZ,eAAU,GAAV,UAAU,CAAsB;QAChC,YAAO,GAAP,OAAO,CAAgB;QACvB,mBAAc,GAAd,cAAc,CAA8B;IAGrD,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;CAAG;AAE1C;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,IAAI,GAAG,YAAY,YAAY;QAAE,OAAO,IAAI,CAAA;IAC5C,IAAI,CAAC,CAAC,GAAG,YAAY,YAAY,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,OAAO,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAA;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAY,EAAE,IAAY,EAAE,OAAe;IACjE,MAAM,IAAI,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IACjD,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACrD,OAAO,IAAI,YAAY,CAAC,GAAG,IAAI,2BAA2B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1F,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,mBAAmB,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACpE,CAAC;AAgHD,iFAAiF;AACjF,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAEjC,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,MAAqB,EACrB,UAAyB,EAAE;IAE3B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAA;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAA;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,MAAM,aAAa,GAA2B,MAAM;QAClD,CAAC,CAAC;YACE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,OAAO,CAAC,YAAY;gBACtB,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC3D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,+BAA+B;gBACzC,CAAC,CAAC,EAAE,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC,+BAA+B,EAAE;gBAC7E,CAAC,CAAC,EAAE,CAAC;SACR;QACH,CAAC,CAAC,EAAE,CAAA;IAEN,KAAK,UAAU,IAAI,CACjB,MAAc,EACd,OAAe,EACf,IAAc;IACd,gEAAgE;IAChE,iBAAiB,GAAG,CAAC,EACrB,KAAmB;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAI,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;YACjF,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE;gBACzB,MAAM;gBACN,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,IAAI;gBACR,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACpC,CAAC,CAAA;YACF,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE;gBACzB,MAAM;gBACN,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,KAAK;gBACT,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACnC,GAAG,CAAC,GAAG,YAAY,YAAY;oBAC7B,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;oBACpF,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;aAC9B,CAAC,CAAA;YACF,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,KAAK,UAAU,QAAQ,CACrB,MAAc,EACd,OAAe,EACf,IAAc,EACd,iBAAiB,GAAG,CAAC,EACrB,KAAmB;QAEnB,4EAA4E;QAC5E,6EAA6E;QAC7E,8DAA8D;QAC9D,gDAAgD;QAChD,MAAM,eAAe,GAAG,QAAQ,GAAG,iBAAiB,GAAG,IAAI,CAAA;QAC3D,MAAM,WAAW,GACf,OAAO,CAAC,UAAU,KAAK,SAAS;YAC9B,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,CAAA;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QAChF,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,EAAE,EAAE;gBAC1C,MAAM;gBACN,OAAO,EAAE;oBACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,GAAG,aAAa;iBACjB;gBACD,MAAM;gBACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9D,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,MAAM,GAAwB,IAAI,CAAA;YACtC,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAA;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB;YAClB,CAAC;YACD,MAAM,IAAI,YAAY,CACpB,QAAQ,CAAC,MAAM,EACf,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,gBAAgB,EACtC,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,8BAA8B,QAAQ,CAAC,MAAM,EAAE,EACxE,MAAM,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,EACjC,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,EAC7B,MAAM,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI,CACtC,CAAA;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAc,CAAA;QAClD,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAA;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uEAAuE;YACvE,wEAAwE;YACxE,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC;QAC9D,WAAW,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CACvC,IAAI,CAAC,MAAM,EAAE,oBAAoB,kBAAkB,CAAC,SAAS,CAAC,OAAO,EAAE;YACrE,aAAa,EAAE,YAAY;SAC5B,CAAC;QACJ,0BAA0B,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,kBAAkB,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QACtL,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAwB,CAAC;QACzD,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,sCAAsC,CAAC;QACxE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC;QACjD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC;QAC/C,YAAY,EAAE,CAAC,QAAQ,GAAG,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;YACvD,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAA;YACnC,IAAI,UAAU,KAAK,SAAS;gBAAE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;YAClE,IAAI,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC3D,OAAO,IAAI,CAAC,KAAK,EAAE,wBAAwB,kBAAkB,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC,CAAA;QACrF,CAAC;QACD,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC;QACzD,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,MAAM,EAAE,sCAAsC,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC;QACtF,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9F,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAChD,IAAI,CACF,KAAK,EACL,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,yBAAyB,WAAW,cAAc,QAAQ,EAAE,EAClH,SAAS,EACT,WAAW,CACZ;QACH,YAAY,EAAE,CAAC,CAAC,SAAiB,EAAE,WAA8B,EAAE,EAAE,CACnE,IAAI,CACF,MAAM,EACN,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,EACtE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CACxD,CAA8B;QACjC,uBAAuB,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAC3C,IAAI,CACF,KAAK,EACL,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,wBAAwB,EAC9E,IAAI,CACL;QACH,mBAAmB,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CACvC,IAAI,CAA8B,MAAM,EAAE,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC;QAC3H,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAC7B,IAAI,CAAmB,KAAK,EAAE,8BAA8B,EAAE,IAAI,CAAC;QACrE,oBAAoB,EAAE,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CACnD,IAAI,CACF,KAAK,EACL,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,uCAAuC,WAAW,EAAE,EAC1G,SAAS,EACT,WAAW,CACZ;QACH,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC;QAChE,0EAA0E;QAC1E,4DAA4D;QAC5D,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,CAC/B,IAAI,CAAC,MAAM,EAAE,iBAAiB,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;QACvE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAClC,IAAI,QAAkB,CAAA;YACtB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,KAAK,CAAC,cAAc;oBAC7B,IAAI,EAAE,KAAK;oBACX,qEAAqE;oBACrE,+CAA+C;oBAC/C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBACvD,oEAAoE;oBACpE,kEAAkE;oBAClE,kDAAkD;oBAClD,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,YAAY,CAAC,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACzD,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACpD,MAAM,IAAI,YAAY,CACpB,oGAAoG,CACrG,CAAA;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,YAAY,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YAC1E,CAAC;YACD,wEAAwE;YACxE,0EAA0E;YAC1E,sEAAsE;YACtE,MAAM,IAAI,CACR,MAAM,EACN,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAC/D,CAAA;QACH,CAAC;QACD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;gBAC7B,OAAO,IAAI,CAAA;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CACnD,IAAI,CACF,MAAM,EACN,0BAA0B,kBAAkB,CAAC,SAAS,CAAC,4BAA4B,WAAW,EAAE,EAChG,IAAI,EACJ,WAAW,EACX,MAAM,CACP;QACH,oBAAoB,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CACxC,IAAI,CACF,MAAM,EACN,0BAA0B,kBAAkB,CAAC,SAAS,CAAC,oBAAoB,EAC3E,IAAI,CACL;QACH,qBAAqB,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CACzC,IAAI,CACF,MAAM,EACN,6BAA6B,kBAAkB,CAAC,SAAS,CAAC,SAAS,EACnE,IAAI,CACL;QACH,gCAAgC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CACpD,IAAI,CACF,KAAK,EACL,4BAA4B,kBAAkB,CAAC,SAAS,CAAC,wBAAwB,EACjF,IAAI,CACL;QACH,6BAA6B,EAAE,CAAC,SAAS,EAAE,EAAE,CAC3C,IAAI,CACF,KAAK,EACL,4BAA4B,kBAAkB,CAAC,SAAS,CAAC,wBAAwB,CAClF;KACJ,CAAA;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface CodexAnswerControl {
2
+ namespace: string;
3
+ threadId: string;
4
+ /** Revalidate after preparation; this is not proof a form is unanswered. */
5
+ currentTurn(turnId: string): Promise<boolean>;
6
+ /** A success receipt proves admission to this turn, not agent acknowledgement. */
7
+ steer(turnId: string, text: string): Promise<void>;
8
+ close(): void;
9
+ }
10
+ /** Optional bounded-turn capability, independent of queue support. A missing
11
+ * read API returns null before answer bytes; the caller uses ordinary input.
12
+ * The owner, lease and bound question must still be fenced by the caller.
13
+ */
14
+ export declare function connectCodexAnswerControl(sessionId: string, turnId: string, env: NodeJS.ProcessEnv, deadlineAt: number, now?: () => number): Promise<CodexAnswerControl | null>;
@@ -0,0 +1,41 @@
1
+ /** Bounded native answer transport. Exact question evidence belongs to bindings. */
2
+ import { connectCodexControl } from './codex-native-control.js';
3
+ /** Optional bounded-turn capability, independent of queue support. A missing
4
+ * read API returns null before answer bytes; the caller uses ordinary input.
5
+ * The owner, lease and bound question must still be fenced by the caller.
6
+ */
7
+ export async function connectCodexAnswerControl(sessionId, turnId, env, deadlineAt, now = () => performance.now()) {
8
+ const control = await connectCodexControl(sessionId, env, deadlineAt, now);
9
+ if (control === null)
10
+ return null;
11
+ const currentTurn = async (expected) => {
12
+ // Full thread/read can exceed the response bound in an ordinary long
13
+ // session. Question identity comes from the owned accepted transcript.
14
+ const result = await control.call('thread/turns/list', {
15
+ threadId: sessionId, limit: 1, sortDirection: 'desc', itemsView: 'notLoaded',
16
+ });
17
+ return result !== null && Array.isArray(result.data) && result.data.length === 1 &&
18
+ result.data[0]?.id === expected && result.data[0]?.status === 'inProgress' &&
19
+ result.data[0]?.itemsView === 'notLoaded';
20
+ };
21
+ try {
22
+ if (!await currentTurn(turnId)) {
23
+ control.close();
24
+ return null;
25
+ }
26
+ return { namespace: control.namespace, threadId: control.threadId, currentTurn,
27
+ steer: async (expected, text) => {
28
+ const result = await control.call('turn/steer', {
29
+ threadId: sessionId, expectedTurnId: expected, input: [{ type: 'text', text }],
30
+ });
31
+ if (result === null || result.turnId !== expected)
32
+ throw new Error('Native answer receipt is unknown; do not replay it.');
33
+ },
34
+ close: () => control.close(), };
35
+ }
36
+ catch {
37
+ control.close();
38
+ return null;
39
+ }
40
+ }
41
+ //# sourceMappingURL=codex-answer-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-answer-control.js","sourceRoot":"","sources":["../src/codex-answer-control.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAY/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EAAE,MAAc,EAAE,GAAsB,EAAE,UAAkB,EAC7E,MAAoB,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;IAE3C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC1E,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACjC,MAAM,WAAW,GAAG,KAAK,EAAE,QAAgB,EAAoB,EAAE;QAC/D,qEAAqE;QACrE,uEAAuE;QACvE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACrD,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW;SAC7E,CAAkF,CAAA;QACnF,OAAO,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,YAAY;YAC1E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,WAAW,CAAA;IAC7C,CAAC,CAAA;IACD,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAChE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW;YAC5E,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;oBAC9C,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBAC/E,CAA+B,CAAA;gBAChC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;YAC3H,CAAC;YACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAC7B,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ServiceIdentity } from './credentials.js';
2
+ import { connectCodexAnswerControl } from './codex-answer-control.js';
3
+ import type { DeliveryLease } from './session-delivery.js';
4
+ import type { NativeInputAnswers } from './session-inputs.js';
5
+ export declare function codexAnswerPresentation(input: {
6
+ sessionId: string;
7
+ env: NodeJS.ProcessEnv;
8
+ lease: DeliveryLease;
9
+ ownerKey: string;
10
+ turnId: string;
11
+ transcriptPath: string | undefined;
12
+ service: ServiceIdentity;
13
+ deadline: number;
14
+ mayWrite(): boolean;
15
+ /** Credential stores may invoke the OS: call only outside state locks. */
16
+ serviceCurrent(): boolean;
17
+ connect?: typeof connectCodexAnswerControl;
18
+ }): NativeInputAnswers;
@@ -0,0 +1,113 @@
1
+ /** Present one claimed app submission through its exact accepted native form. */
2
+ import { createHash } from 'node:crypto';
3
+ import { isDeepStrictEqual } from 'node:util';
4
+ import { acknowledgementContext } from './hook-acknowledgements.js';
5
+ import { TRANSPORT_LIMIT } from './injection-render.js';
6
+ import { nativeQuestionTitle, observeCodexQuestions } from './codex-question-bindings.js';
7
+ import { readNativeQuestionSnapshot } from './codex-native-turn.js';
8
+ import { readSessionIncarnation, updateSessionState } from './hook-session-state.js';
9
+ import { connectCodexAnswerControl } from './codex-answer-control.js';
10
+ import { CodexControlNotSent } from './codex-native-control.js';
11
+ /** Multipart, malformed and unsupported answers keep the ordinary input path. */
12
+ function boundAnswer(answer, state, ownerKey, service) {
13
+ if (answer.delivery_claim !== true || answer.replies.length !== 1 ||
14
+ !isDeepStrictEqual(answer.reply, answer.replies[0]) || !isDeepStrictEqual(answer.pending.service_identity, service))
15
+ return null;
16
+ const registration = state.codex_question_bindings?.find(item => item.question_id === answer.pending.question_id);
17
+ if (registration === undefined || registration.owner_key !== ownerKey || registration.ordinary_only === true ||
18
+ registration.terminated === true || registration.confirmed_request_id !== answer.pending.request_id ||
19
+ !isDeepStrictEqual(registration.service_identity, service) ||
20
+ !isDeepStrictEqual(registration.questions.map(item => item.question), answer.pending.questions))
21
+ return null;
22
+ const parts = answer.reply.answers;
23
+ if (parts.length === 0 || new Set(parts.map(part => part.question_id)).size !== parts.length)
24
+ return null;
25
+ for (const part of parts) {
26
+ const binding = registration.questions.find(item => item.question.id === part.question_id);
27
+ if (binding?.verified !== true || binding.native === undefined || binding.ambiguous === true ||
28
+ binding.question.multi === true || part.choice_ids.length > 1 ||
29
+ part.choice_ids.some(id => !binding.question.choices?.some(choice => choice.id === id)) ||
30
+ (part.choice_ids.length === 0 && !part.text?.trim()))
31
+ return null;
32
+ }
33
+ return registration;
34
+ }
35
+ export function codexAnswerPresentation(input) {
36
+ const eligible = (answer, state) => boundAnswer(answer, state, input.ownerKey, input.service);
37
+ const refresh = (state) => {
38
+ const snapshot = readNativeQuestionSnapshot(input.transcriptPath, input.sessionId, input.env);
39
+ return { state: observeCodexQuestions(state, input.ownerKey, snapshot),
40
+ current: snapshot?.latest.id === input.turnId && !snapshot.latest.ended };
41
+ };
42
+ const owned = () => input.mayWrite() && readSessionIncarnation(input.sessionId, input.env)?.key === input.ownerKey;
43
+ return {
44
+ eligible: (answer, state) => eligible(answer, state) !== null,
45
+ prepare: async (answer, _state, deadline) => {
46
+ let registration = null;
47
+ updateSessionState(input.sessionId, input.env, state => {
48
+ const observed = refresh(state);
49
+ if (owned() && observed.current)
50
+ registration = eligible(answer, observed.state);
51
+ return observed.state;
52
+ });
53
+ if (registration === null)
54
+ return null;
55
+ // Freeze the binding independently of later state changes and retries.
56
+ const binding = structuredClone(registration);
57
+ const control = await (input.connect ?? connectCodexAnswerControl)(input.sessionId, input.turnId, input.env, Math.min(input.deadline, deadline));
58
+ if (control === null)
59
+ return null;
60
+ try {
61
+ if (!owned() || !await control.currentTurn(input.turnId)) {
62
+ control.close();
63
+ return null;
64
+ }
65
+ const reply = answer.reply;
66
+ const text = '<send_user_message_question_reply>\n' + JSON.stringify(reply.answers.map(part => {
67
+ const question = binding.questions.find(item => item.question.id === part.question_id);
68
+ const selected = part.choice_ids.map(id => question.question.choices.find(choice => choice.id === id).label);
69
+ return { questionItemId: JSON.stringify(['request_user_input_async', question.native.call_id, question.native.index]),
70
+ question: nativeQuestionTitle(question), answer: [...selected, ...(part.text == null ? [] : [part.text])].join('\n'),
71
+ notifai: { origin: 'companion', request_id: answer.pending.request_id, question_id: part.question_id,
72
+ reply_id: reply.reply_id, reply_seq: reply.seq,
73
+ instruction: 'This is the existing Notifai app submission, not a new native submission. Do not report it as a native answer.' +
74
+ acknowledgementContext([answer]) + TRANSPORT_LIMIT } };
75
+ })) + '\n</send_user_message_question_reply>';
76
+ const validate = (state) => {
77
+ const observed = refresh(state);
78
+ return { state: observed.state, valid: owned() && observed.current &&
79
+ isDeepStrictEqual(eligible(answer, observed.state), binding) };
80
+ };
81
+ return {
82
+ presentation: { kind: 'codex-answer', request_id: answer.pending.request_id, question_id: binding.question_id,
83
+ replies: [{ reply_id: reply.reply_id, seq: reply.seq }],
84
+ questions: reply.answers.map(part => ({ question_id: part.question_id,
85
+ ...binding.questions.find(item => item.question.id === part.question_id).native })),
86
+ owner_key: input.ownerKey, ...input.lease, service_identity: input.service,
87
+ namespace: control.namespace, thread_id: control.threadId, expected_turn_id: input.turnId,
88
+ envelope_sha256: createHash('sha256').update(text).digest('hex') },
89
+ validate,
90
+ write: async (mayWrite) => {
91
+ if (!input.serviceCurrent())
92
+ throw new CodexControlNotSent('Native answer Machine changed before send');
93
+ let valid = false;
94
+ updateSessionState(input.sessionId, input.env, state => {
95
+ const checked = validate(state);
96
+ valid = checked.valid;
97
+ return checked.state;
98
+ });
99
+ if (!valid || !owned() || !mayWrite())
100
+ throw new CodexControlNotSent('Native answer authority changed before send');
101
+ await control.steer(input.turnId, text);
102
+ },
103
+ close: () => control.close(),
104
+ };
105
+ }
106
+ catch {
107
+ control.close();
108
+ return null;
109
+ }
110
+ },
111
+ };
112
+ }
113
+ //# sourceMappingURL=codex-answer-presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-answer-presentation.js","sourceRoot":"","sources":["../src/codex-answer-presentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type CodexInputActivity = 'working' | 'idle' | 'aborted' | 'unknown';
2
+ /** Never infers idle from missing callbacks or a Stop hook. */
3
+ export declare function refreshCodexInputActivity(sessionId: string, env: NodeJS.ProcessEnv, expectedKey: string, transcriptPath?: string): CodexInputActivity;
4
+ /** One observer owns the grace interval across probes and final wake checks.
5
+ * Only a continuous read failure permits the bounded queue fallback. */
6
+ export declare function codexInputObserver(sessionId: string, env: NodeJS.ProcessEnv, expectedKey: string, monotonic: () => number, transcriptPath?: string): {
7
+ observe: () => CodexInputActivity;
8
+ mayWake: () => boolean;
9
+ unknownAllowed: () => boolean;
10
+ };
@@ -0,0 +1,63 @@
1
+ /** Exact native activity used by the existing input scheduler. */
2
+ import { readNativeTurnSnapshot } from './codex-native-turn.js';
3
+ import { readSessionIncarnation, readSessionState, sessionHasEnded, updateSessionState } from './hook-session-state.js';
4
+ import { processIdentityLiveness } from './process-identity.js';
5
+ import { reconcileNativeTurn } from './session-attendant-state.js';
6
+ /** Never infers idle from missing callbacks or a Stop hook. */
7
+ export function refreshCodexInputActivity(sessionId, env, expectedKey, transcriptPath) {
8
+ const owner = readSessionIncarnation(sessionId, env);
9
+ const owns = () => owner !== null && owner.key === expectedKey && !sessionHasEnded(sessionId, env) &&
10
+ readSessionIncarnation(sessionId, env)?.key === expectedKey &&
11
+ readSessionIncarnation(sessionId, env)?.incarnation === owner.incarnation &&
12
+ owner.harness_process !== undefined && processIdentityLiveness(owner.harness_process) === 'alive';
13
+ if (!owns() || owner === null)
14
+ return 'unknown';
15
+ const proof = readSessionState(sessionId, env).codex_native_turn;
16
+ const file = transcriptPath ?? (proof?.key === owner.key ? proof.transcript_path : undefined);
17
+ const native = readNativeTurnSnapshot(file, sessionId, env);
18
+ if (native === null)
19
+ return 'unknown';
20
+ try {
21
+ if (!reconcileNativeTurn(sessionId, env, owner.key, native.latest.id, native, owns))
22
+ return 'unknown';
23
+ updateSessionState(sessionId, env, state => !owns() ? state : ({ ...state, codex_native_turn: {
24
+ key: owner.key, turn_id: native.latest.id, transcript_path: native.file, observed_at: Date.now(),
25
+ } }));
26
+ }
27
+ catch {
28
+ return 'unknown';
29
+ }
30
+ if (!owns())
31
+ return 'unknown';
32
+ return native.latest.ended ? native.latest.outcome === 'aborted' ? 'aborted' : 'idle' : 'working';
33
+ }
34
+ /** One observer owns the grace interval across probes and final wake checks.
35
+ * Only a continuous read failure permits the bounded queue fallback. */
36
+ export function codexInputObserver(sessionId, env, expectedKey, monotonic, transcriptPath) {
37
+ let unknownSince;
38
+ const observe = () => {
39
+ const activity = refreshCodexInputActivity(sessionId, env, expectedKey, transcriptPath);
40
+ if (activity === 'unknown')
41
+ unknownSince ??= monotonic();
42
+ else
43
+ unknownSince = undefined;
44
+ return activity;
45
+ };
46
+ return {
47
+ observe,
48
+ unknownAllowed: () => unknownSince !== undefined && monotonic() - unknownSince >= 6_000,
49
+ mayWake: () => {
50
+ if (readSessionIncarnation(sessionId, env)?.key !== expectedKey || sessionHasEnded(sessionId, env))
51
+ return false;
52
+ const activity = observe();
53
+ const owner = readSessionIncarnation(sessionId, env);
54
+ if (owner?.key !== expectedKey || sessionHasEnded(sessionId, env) ||
55
+ owner.harness_process === undefined || processIdentityLiveness(owner.harness_process) !== 'alive')
56
+ return false;
57
+ // Aborting fences its turn; it does not cancel pending User input.
58
+ return activity === 'idle' || activity === 'aborted' ||
59
+ (activity === 'unknown' && monotonic() - unknownSince >= 6_000);
60
+ },
61
+ };
62
+ }
63
+ //# sourceMappingURL=codex-input-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-input-lifecycle.js","sourceRoot":"","sources":["../src/codex-input-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type CodexControlMethod = 'thread/queue/list' | 'thread/queue/add' | 'thread/queue/delete' | 'thread/turns/list' | 'turn/steer';
2
+ export interface CodexControl {
3
+ namespace: string;
4
+ threadId: string;
5
+ call(method: CodexControlMethod, params: unknown): Promise<unknown>;
6
+ close(): void;
7
+ }
8
+ /** Positive evidence that this request sent no bytes. RPC refusal is uncertain. */
9
+ export declare class CodexControlNotSent extends Error {
10
+ }
11
+ /** Discovery proves a running endpoint, its namespace and an already loaded
12
+ * thread. It never loads, resumes or takes ownership of a thread. */
13
+ export declare function connectCodexControl(sessionId: string, env: NodeJS.ProcessEnv, deadlineAt: number, now?: () => number, unavailable?: (stage: string) => void): Promise<CodexControl | null>;
@@ -0,0 +1,120 @@
1
+ /** Verified existing Codex connection shared by queue and answer adapters. */
2
+ import { execFile } from 'node:child_process';
3
+ import { lstatSync, realpathSync } from 'node:fs';
4
+ import { promisify } from 'node:util';
5
+ import WebSocket from 'ws';
6
+ import { codexHome } from './codex-wake.js';
7
+ const execute = promisify(execFile);
8
+ /** Positive evidence that this request sent no bytes. RPC refusal is uncertain. */
9
+ export class CodexControlNotSent extends Error {
10
+ }
11
+ /** Discovery proves a running endpoint, its namespace and an already loaded
12
+ * thread. It never loads, resumes or takes ownership of a thread. */
13
+ export async function connectCodexControl(sessionId, env, deadlineAt, now = () => performance.now(), unavailable) {
14
+ let socket;
15
+ let stage = 'discovery';
16
+ try {
17
+ const remaining = () => Math.max(1, Math.ceil(deadlineAt - now()));
18
+ const { stdout } = await execute('codex', ['app-server', 'daemon', 'version'], {
19
+ env, timeout: remaining(), maxBuffer: 16_384,
20
+ });
21
+ const version = JSON.parse(stdout);
22
+ if (version.status !== 'running' || typeof version.socketPath !== 'string')
23
+ throw new Error('No running daemon');
24
+ stage = 'endpoint';
25
+ const socketPath = realpathSync(version.socketPath);
26
+ const endpoint = lstatSync(socketPath);
27
+ if (!endpoint.isSocket() || (process.getuid !== undefined && endpoint.uid !== process.getuid()))
28
+ throw new Error('Endpoint ownership unavailable');
29
+ stage = 'connection';
30
+ const home = realpathSync(codexHome(env));
31
+ socket = new WebSocket(`ws+unix://${socketPath}:/`, { maxPayload: 2 * 1024 * 1024 });
32
+ const connected = socket;
33
+ const timer = setTimeout(() => connected.terminate(), remaining());
34
+ connected.once('close', () => clearTimeout(timer));
35
+ let seq = 0;
36
+ const pending = new Map();
37
+ const fail = (error) => { for (const p of pending.values())
38
+ p.reject(error); pending.clear(); };
39
+ connected.on('error', fail);
40
+ connected.on('close', () => fail(new Error('Native queue connection closed; acceptance unknown')));
41
+ connected.on('message', raw => {
42
+ let value;
43
+ try {
44
+ value = JSON.parse(raw.toString());
45
+ }
46
+ catch {
47
+ return;
48
+ }
49
+ if (value === null || typeof value !== 'object' || typeof value.id !== 'number')
50
+ return;
51
+ const waiting = pending.get(value.id);
52
+ if (waiting === undefined)
53
+ return;
54
+ pending.delete(value.id);
55
+ if (value.error !== undefined)
56
+ waiting.reject(new Error('Native queue RPC refused; acceptance not established'));
57
+ else
58
+ waiting.resolve(value.result);
59
+ });
60
+ await new Promise((resolve, reject) => {
61
+ connected.once('open', resolve);
62
+ connected.once('error', reject);
63
+ connected.once('close', () => reject(new Error('Native queue unavailable')));
64
+ });
65
+ const call = (method, params) => {
66
+ try {
67
+ const current = lstatSync(socketPath);
68
+ if (realpathSync(version.socketPath) !== socketPath || current.dev !== endpoint.dev ||
69
+ current.ino !== endpoint.ino || now() >= deadlineAt || connected.readyState !== WebSocket.OPEN) {
70
+ throw new Error('Native queue endpoint, connection or deadline changed');
71
+ }
72
+ }
73
+ catch {
74
+ return Promise.reject(new CodexControlNotSent('Native queue request was not sent'));
75
+ }
76
+ const id = ++seq;
77
+ return new Promise((resolve, reject) => {
78
+ pending.set(id, { resolve, reject });
79
+ connected.send(JSON.stringify({ id, method, params }), error => {
80
+ if (error) {
81
+ pending.delete(id);
82
+ reject(error);
83
+ }
84
+ });
85
+ });
86
+ };
87
+ stage = 'initialize';
88
+ const initialized = await call('initialize', { clientInfo: { name: 'notifai_control', version: '1' }, capabilities: { experimentalApi: true } });
89
+ stage = 'namespace';
90
+ if (initialized.codexHome === undefined || realpathSync(initialized.codexHome) !== home)
91
+ throw new Error('Different native queue namespace');
92
+ connected.send(JSON.stringify({ method: 'initialized', params: {} }));
93
+ stage = 'loaded-thread';
94
+ let loaded = false;
95
+ let loadedCursor = null;
96
+ for (let page = 0; page < 16; page += 1) {
97
+ const result = await call('thread/loaded/list', loadedCursor === null ? {} : { cursor: loadedCursor });
98
+ if (!Array.isArray(result.data))
99
+ throw new Error('Unrecognized loaded-thread response');
100
+ if (result.data.includes(sessionId)) {
101
+ loaded = true;
102
+ break;
103
+ }
104
+ if (result.nextCursor == null)
105
+ break;
106
+ if (result.nextCursor === loadedCursor)
107
+ throw new Error('Unrecognized loaded-thread cursor');
108
+ loadedCursor = result.nextCursor;
109
+ }
110
+ if (!loaded)
111
+ throw new Error('Exact owner thread is not loaded; refuse to load it');
112
+ return { namespace: home, threadId: sessionId, call, close: () => connected.terminate() };
113
+ }
114
+ catch {
115
+ socket?.terminate();
116
+ unavailable?.(stage);
117
+ return null;
118
+ }
119
+ }
120
+ //# sourceMappingURL=codex-native-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-native-control.js","sourceRoot":"","sources":["../src/codex-native-control.ts"],"names":[],"mappings":"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"}