@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.
- package/CHANGELOG.md +15 -3
- package/dist/atomic-file.d.ts +1 -1
- package/dist/atomic-file.js.map +1 -1
- package/dist/client.d.ts +5 -1
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -1
- package/dist/codex-answer-control.d.ts +14 -0
- package/dist/codex-answer-control.js +41 -0
- package/dist/codex-answer-control.js.map +1 -0
- package/dist/codex-answer-presentation.d.ts +18 -0
- package/dist/codex-answer-presentation.js +113 -0
- package/dist/codex-answer-presentation.js.map +1 -0
- package/dist/codex-input-lifecycle.d.ts +10 -0
- package/dist/codex-input-lifecycle.js +63 -0
- package/dist/codex-input-lifecycle.js.map +1 -0
- package/dist/codex-native-control.d.ts +13 -0
- package/dist/codex-native-control.js +120 -0
- package/dist/codex-native-control.js.map +1 -0
- package/dist/codex-native-turn.d.ts +18 -0
- package/dist/codex-native-turn.js +46 -4
- package/dist/codex-native-turn.js.map +1 -1
- package/dist/codex-question-bindings.d.ts +76 -0
- package/dist/codex-question-bindings.js +151 -0
- package/dist/codex-question-bindings.js.map +1 -0
- package/dist/codex-queue-control.d.ts +21 -0
- package/dist/codex-queue-control.js +59 -0
- package/dist/codex-queue-control.js.map +1 -0
- package/dist/codex-tool-messages.js +40 -16
- package/dist/codex-tool-messages.js.map +1 -1
- package/dist/commands-acknowledge.d.ts +2 -4
- package/dist/commands-acknowledge.js +7 -0
- package/dist/commands-acknowledge.js.map +1 -1
- package/dist/commands-ask.js +64 -12
- package/dist/commands-ask.js.map +1 -1
- package/dist/commands-auth.d.ts +3 -1
- package/dist/commands-auth.js +88 -28
- package/dist/commands-auth.js.map +1 -1
- package/dist/commands-close.js +51 -3
- package/dist/commands-close.js.map +1 -1
- package/dist/commands-core.d.ts +7 -0
- package/dist/commands-core.js +1 -0
- package/dist/commands-core.js.map +1 -1
- package/dist/commands-hook-attend.js +50 -10
- package/dist/commands-hook-attend.js.map +1 -1
- package/dist/commands-hook-run.js +2 -1
- package/dist/commands-hook-run.js.map +1 -1
- package/dist/commands-init.d.ts +2 -0
- package/dist/commands-init.js +3 -3
- package/dist/commands-init.js.map +1 -1
- package/dist/commands-io.js +7 -0
- package/dist/commands-io.js.map +1 -1
- package/dist/commands-native-acknowledge.d.ts +8 -0
- package/dist/commands-native-acknowledge.js +114 -0
- package/dist/commands-native-acknowledge.js.map +1 -0
- package/dist/credentials.d.ts +5 -0
- package/dist/credentials.js.map +1 -1
- package/dist/hermes-attendant.js +4 -0
- package/dist/hermes-attendant.js.map +1 -1
- package/dist/hook-acknowledgements.d.ts +1 -0
- package/dist/hook-acknowledgements.js +3 -1
- package/dist/hook-acknowledgements.js.map +1 -1
- package/dist/hook-lifecycle.d.ts +12 -1
- package/dist/hook-lifecycle.js +145 -79
- package/dist/hook-lifecycle.js.map +1 -1
- package/dist/hook-question-retirement.js +2 -1
- package/dist/hook-question-retirement.js.map +1 -1
- package/dist/hook-question-state.d.ts +6 -2
- package/dist/hook-question-state.js +19 -7
- package/dist/hook-question-state.js.map +1 -1
- package/dist/hook-session-state.d.ts +5 -1
- package/dist/hook-session-state.js +48 -14
- package/dist/hook-session-state.js.map +1 -1
- package/dist/hook-types.d.ts +23 -1
- package/dist/hook-types.js.map +1 -1
- package/dist/native-answer-operation.d.ts +70 -0
- package/dist/native-answer-operation.js +247 -0
- package/dist/native-answer-operation.js.map +1 -0
- package/dist/pairing-qr.d.ts +5 -0
- package/dist/pairing-qr.js +24 -0
- package/dist/pairing-qr.js.map +1 -0
- package/dist/pending-pairing.d.ts +1 -0
- package/dist/pending-pairing.js +7 -5
- package/dist/pending-pairing.js.map +1 -1
- package/dist/program.js +9 -3
- package/dist/program.js.map +1 -1
- package/dist/session-attendant-probe.d.ts +1 -1
- package/dist/session-attendant-probe.js +2 -1
- package/dist/session-attendant-probe.js.map +1 -1
- package/dist/session-attendant-state.d.ts +5 -0
- package/dist/session-attendant-state.js +29 -10
- package/dist/session-attendant-state.js.map +1 -1
- package/dist/session-delivery.d.ts +29 -0
- package/dist/session-delivery.js +3 -1
- package/dist/session-delivery.js.map +1 -1
- package/dist/session-input-wakes.d.ts +78 -0
- package/dist/session-input-wakes.js +239 -0
- package/dist/session-input-wakes.js.map +1 -0
- package/dist/session-inputs.d.ts +41 -6
- package/dist/session-inputs.js +199 -19
- package/dist/session-inputs.js.map +1 -1
- package/dist/skill-source/manifest.json +8 -4
- package/dist/skill-source/notifai/SKILL.md +30 -28
- package/dist/skill-source/notifai/references/harness-setup.md +33 -20
- package/dist/skill-source/notifai/references/native-questions.md +51 -0
- 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.
|
|
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
|
-
*
|
|
16
|
-
*
|
|
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
|
|
package/dist/atomic-file.d.ts
CHANGED
|
@@ -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
|
*
|
package/dist/atomic-file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic-file.js","sourceRoot":"","sources":["../src/atomic-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAA;AAChB,OAAO,IAAI,MAAM,WAAW,CAAA;AAiB5B;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,
|
|
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),
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|