@scotthuang/agent-knock-knock 0.13.18 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/CONTRIBUTING.md +212 -0
  3. package/README.md +105 -166
  4. package/connectors/deepseek-harness/LICENSE +21 -0
  5. package/connectors/deepseek-harness/README.md +406 -0
  6. package/connectors/pi/LICENSE +21 -0
  7. package/connectors/pi/README.md +446 -0
  8. package/dist/src/backend-recovery-semantic.d.ts +16 -0
  9. package/dist/src/backend-recovery-semantic.js +113 -0
  10. package/dist/src/backend-recovery-semantic.js.map +1 -0
  11. package/dist/src/backend-task-recovery.d.ts +103 -0
  12. package/dist/src/backend-task-recovery.js +142 -0
  13. package/dist/src/backend-task-recovery.js.map +1 -0
  14. package/dist/src/callback-transport.d.ts +8 -0
  15. package/dist/src/callback-transport.js +14 -0
  16. package/dist/src/callback-transport.js.map +1 -1
  17. package/dist/src/cli-core.js +18 -8
  18. package/dist/src/cli-core.js.map +1 -1
  19. package/dist/src/cli-runtime-context.d.ts +5 -0
  20. package/dist/src/cli-runtime-context.js.map +1 -1
  21. package/dist/src/codex-native-cli-adapter.d.ts +6 -0
  22. package/dist/src/codex-native-cli-adapter.js +273 -0
  23. package/dist/src/codex-native-cli-adapter.js.map +1 -0
  24. package/dist/src/codex-native-client-interactions.d.ts +6 -0
  25. package/dist/src/codex-native-client-interactions.js +124 -0
  26. package/dist/src/codex-native-client-interactions.js.map +1 -0
  27. package/dist/src/codex-native-client-rpc.d.ts +21 -0
  28. package/dist/src/codex-native-client-rpc.js +137 -0
  29. package/dist/src/codex-native-client-rpc.js.map +1 -0
  30. package/dist/src/codex-native-client.d.ts +42 -0
  31. package/dist/src/codex-native-client.js +326 -0
  32. package/dist/src/codex-native-client.js.map +1 -0
  33. package/dist/src/codex-native-identity.d.ts +6 -0
  34. package/dist/src/codex-native-identity.js +42 -0
  35. package/dist/src/codex-native-identity.js.map +1 -0
  36. package/dist/src/codex-native-monitor.d.ts +4 -0
  37. package/dist/src/codex-native-monitor.js +92 -0
  38. package/dist/src/codex-native-monitor.js.map +1 -0
  39. package/dist/src/codex-native-outbox.d.ts +16 -0
  40. package/dist/src/codex-native-outbox.js +120 -0
  41. package/dist/src/codex-native-outbox.js.map +1 -0
  42. package/dist/src/codex-native-public-projection.d.ts +545 -0
  43. package/dist/src/codex-native-public-projection.js +182 -0
  44. package/dist/src/codex-native-public-projection.js.map +1 -0
  45. package/dist/src/codex-native-record-store.d.ts +27 -0
  46. package/dist/src/codex-native-record-store.js +111 -0
  47. package/dist/src/codex-native-record-store.js.map +1 -0
  48. package/dist/src/codex-native-response-service.d.ts +69 -0
  49. package/dist/src/codex-native-response-service.js +244 -0
  50. package/dist/src/codex-native-response-service.js.map +1 -0
  51. package/dist/src/codex-native-runtime.d.ts +46 -0
  52. package/dist/src/codex-native-runtime.js +112 -0
  53. package/dist/src/codex-native-runtime.js.map +1 -0
  54. package/dist/src/codex-native-semantic.d.ts +17 -0
  55. package/dist/src/codex-native-semantic.js +175 -0
  56. package/dist/src/codex-native-semantic.js.map +1 -0
  57. package/dist/src/codex-native-snapshot.d.ts +19 -0
  58. package/dist/src/codex-native-snapshot.js +160 -0
  59. package/dist/src/codex-native-snapshot.js.map +1 -0
  60. package/dist/src/codex-native-state-store.d.ts +61 -0
  61. package/dist/src/codex-native-state-store.js +132 -0
  62. package/dist/src/codex-native-state-store.js.map +1 -0
  63. package/dist/src/codex-native-task-service.d.ts +71 -0
  64. package/dist/src/codex-native-task-service.js +502 -0
  65. package/dist/src/codex-native-task-service.js.map +1 -0
  66. package/dist/src/codex-native-types.d.ts +92 -0
  67. package/dist/src/codex-native-types.js +15 -0
  68. package/dist/src/codex-native-types.js.map +1 -0
  69. package/dist/src/conversation-list.d.ts +12 -0
  70. package/dist/src/conversation-list.js +30 -0
  71. package/dist/src/conversation-list.js.map +1 -0
  72. package/dist/src/conversation-route-dispatch.d.ts +13 -0
  73. package/dist/src/conversation-route-dispatch.js +66 -0
  74. package/dist/src/conversation-route-dispatch.js.map +1 -0
  75. package/dist/src/conversation-route-legacy.d.ts +18 -0
  76. package/dist/src/conversation-route-legacy.js +54 -0
  77. package/dist/src/conversation-route-legacy.js.map +1 -0
  78. package/dist/src/conversation-route-store.d.ts +51 -0
  79. package/dist/src/conversation-route-store.js +126 -0
  80. package/dist/src/conversation-route-store.js.map +1 -0
  81. package/dist/src/conversation-routing-cli-adapter.d.ts +12 -0
  82. package/dist/src/conversation-routing-cli-adapter.js +211 -0
  83. package/dist/src/conversation-routing-cli-adapter.js.map +1 -0
  84. package/dist/src/conversation-routing-commands.d.ts +11 -0
  85. package/dist/src/conversation-routing-commands.js +85 -0
  86. package/dist/src/conversation-routing-commands.js.map +1 -0
  87. package/dist/src/conversation-routing-home.d.ts +26 -0
  88. package/dist/src/conversation-routing-home.js +105 -0
  89. package/dist/src/conversation-routing-home.js.map +1 -0
  90. package/dist/src/conversation-routing-identity.d.ts +40 -0
  91. package/dist/src/conversation-routing-identity.js +174 -0
  92. package/dist/src/conversation-routing-identity.js.map +1 -0
  93. package/dist/src/conversation-runtime-route-store.d.ts +11 -0
  94. package/dist/src/conversation-runtime-route-store.js +118 -0
  95. package/dist/src/conversation-runtime-route-store.js.map +1 -0
  96. package/dist/src/desktop-async-interactions.d.ts +15 -0
  97. package/dist/src/desktop-async-interactions.js +88 -0
  98. package/dist/src/desktop-async-interactions.js.map +1 -0
  99. package/dist/src/desktop-async-state.d.ts +5 -0
  100. package/dist/src/desktop-async-state.js +53 -0
  101. package/dist/src/desktop-async-state.js.map +1 -0
  102. package/dist/src/desktop-cli-adapter.d.ts +7 -0
  103. package/dist/src/desktop-cli-adapter.js +322 -0
  104. package/dist/src/desktop-cli-adapter.js.map +1 -0
  105. package/dist/src/desktop-cli-controls.d.ts +9 -0
  106. package/dist/src/desktop-cli-controls.js +45 -0
  107. package/dist/src/desktop-cli-controls.js.map +1 -0
  108. package/dist/src/desktop-command-presentation.d.ts +2 -0
  109. package/dist/src/desktop-command-presentation.js +31 -0
  110. package/dist/src/desktop-command-presentation.js.map +1 -0
  111. package/dist/src/desktop-control-semantic.d.ts +8 -0
  112. package/dist/src/desktop-control-semantic.js +68 -0
  113. package/dist/src/desktop-control-semantic.js.map +1 -0
  114. package/dist/src/desktop-identity.d.ts +5 -0
  115. package/dist/src/desktop-identity.js +40 -0
  116. package/dist/src/desktop-identity.js.map +1 -0
  117. package/dist/src/desktop-interaction-projection.d.ts +57 -0
  118. package/dist/src/desktop-interaction-projection.js +196 -0
  119. package/dist/src/desktop-interaction-projection.js.map +1 -0
  120. package/dist/src/desktop-interaction-state.d.ts +3 -0
  121. package/dist/src/desktop-interaction-state.js +48 -0
  122. package/dist/src/desktop-interaction-state.js.map +1 -0
  123. package/dist/src/desktop-ipc-async-answer.d.ts +9 -0
  124. package/dist/src/desktop-ipc-async-answer.js +71 -0
  125. package/dist/src/desktop-ipc-async-answer.js.map +1 -0
  126. package/dist/src/desktop-ipc-client.d.ts +47 -0
  127. package/dist/src/desktop-ipc-client.js +400 -0
  128. package/dist/src/desktop-ipc-client.js.map +1 -0
  129. package/dist/src/desktop-ipc-native-operations.d.ts +11 -0
  130. package/dist/src/desktop-ipc-native-operations.js +126 -0
  131. package/dist/src/desktop-ipc-native-operations.js.map +1 -0
  132. package/dist/src/desktop-ipc-transport.d.ts +13 -0
  133. package/dist/src/desktop-ipc-transport.js +123 -0
  134. package/dist/src/desktop-ipc-transport.js.map +1 -0
  135. package/dist/src/desktop-list.d.ts +25 -0
  136. package/dist/src/desktop-list.js +55 -0
  137. package/dist/src/desktop-list.js.map +1 -0
  138. package/dist/src/desktop-metadata-reader.d.ts +30 -0
  139. package/dist/src/desktop-metadata-reader.js +182 -0
  140. package/dist/src/desktop-metadata-reader.js.map +1 -0
  141. package/dist/src/desktop-monitor.d.ts +4 -0
  142. package/dist/src/desktop-monitor.js +101 -0
  143. package/dist/src/desktop-monitor.js.map +1 -0
  144. package/dist/src/desktop-public-projection.d.ts +6 -0
  145. package/dist/src/desktop-public-projection.js +134 -0
  146. package/dist/src/desktop-public-projection.js.map +1 -0
  147. package/dist/src/desktop-request-interactions.d.ts +14 -0
  148. package/dist/src/desktop-request-interactions.js +144 -0
  149. package/dist/src/desktop-request-interactions.js.map +1 -0
  150. package/dist/src/desktop-response-dispatch.d.ts +14 -0
  151. package/dist/src/desktop-response-dispatch.js +19 -0
  152. package/dist/src/desktop-response-dispatch.js.map +1 -0
  153. package/dist/src/desktop-response-evidence.d.ts +4 -0
  154. package/dist/src/desktop-response-evidence.js +19 -0
  155. package/dist/src/desktop-response-evidence.js.map +1 -0
  156. package/dist/src/desktop-response-service.d.ts +11 -0
  157. package/dist/src/desktop-response-service.js +188 -0
  158. package/dist/src/desktop-response-service.js.map +1 -0
  159. package/dist/src/desktop-response-store.d.ts +35 -0
  160. package/dist/src/desktop-response-store.js +58 -0
  161. package/dist/src/desktop-response-store.js.map +1 -0
  162. package/dist/src/desktop-response-types.d.ts +20 -0
  163. package/dist/src/desktop-response-types.js +2 -0
  164. package/dist/src/desktop-response-types.js.map +1 -0
  165. package/dist/src/desktop-response-value.d.ts +6 -0
  166. package/dist/src/desktop-response-value.js +31 -0
  167. package/dist/src/desktop-response-value.js.map +1 -0
  168. package/dist/src/desktop-runtime.d.ts +153 -0
  169. package/dist/src/desktop-runtime.js +88 -0
  170. package/dist/src/desktop-runtime.js.map +1 -0
  171. package/dist/src/desktop-semantic.d.ts +21 -0
  172. package/dist/src/desktop-semantic.js +140 -0
  173. package/dist/src/desktop-semantic.js.map +1 -0
  174. package/dist/src/desktop-session-catalog.d.ts +68 -0
  175. package/dist/src/desktop-session-catalog.js +225 -0
  176. package/dist/src/desktop-session-catalog.js.map +1 -0
  177. package/dist/src/desktop-session-controls.d.ts +145 -0
  178. package/dist/src/desktop-session-controls.js +176 -0
  179. package/dist/src/desktop-session-controls.js.map +1 -0
  180. package/dist/src/desktop-sidebar-metadata.d.ts +27 -0
  181. package/dist/src/desktop-sidebar-metadata.js +83 -0
  182. package/dist/src/desktop-sidebar-metadata.js.map +1 -0
  183. package/dist/src/desktop-sidebar-projects.d.ts +10 -0
  184. package/dist/src/desktop-sidebar-projects.js +31 -0
  185. package/dist/src/desktop-sidebar-projects.js.map +1 -0
  186. package/dist/src/desktop-sidebar-selection.d.ts +28 -0
  187. package/dist/src/desktop-sidebar-selection.js +85 -0
  188. package/dist/src/desktop-sidebar-selection.js.map +1 -0
  189. package/dist/src/desktop-snapshot-details.d.ts +4 -0
  190. package/dist/src/desktop-snapshot-details.js +116 -0
  191. package/dist/src/desktop-snapshot-details.js.map +1 -0
  192. package/dist/src/desktop-snapshot.d.ts +11 -0
  193. package/dist/src/desktop-snapshot.js +276 -0
  194. package/dist/src/desktop-snapshot.js.map +1 -0
  195. package/dist/src/desktop-state-store.d.ts +72 -0
  196. package/dist/src/desktop-state-store.js +269 -0
  197. package/dist/src/desktop-state-store.js.map +1 -0
  198. package/dist/src/desktop-task-interactions.d.ts +10 -0
  199. package/dist/src/desktop-task-interactions.js +93 -0
  200. package/dist/src/desktop-task-interactions.js.map +1 -0
  201. package/dist/src/desktop-task-recovery.d.ts +38 -0
  202. package/dist/src/desktop-task-recovery.js +171 -0
  203. package/dist/src/desktop-task-recovery.js.map +1 -0
  204. package/dist/src/desktop-task-service.d.ts +54 -0
  205. package/dist/src/desktop-task-service.js +441 -0
  206. package/dist/src/desktop-task-service.js.map +1 -0
  207. package/dist/src/desktop-types.d.ts +281 -0
  208. package/dist/src/desktop-types.js +13 -0
  209. package/dist/src/desktop-types.js.map +1 -0
  210. package/dist/src/host-monitor-reconciliation.js +36 -4
  211. package/dist/src/host-monitor-reconciliation.js.map +1 -1
  212. package/dist/src/host-profile-runtime.js +7 -3
  213. package/dist/src/host-profile-runtime.js.map +1 -1
  214. package/dist/src/local-codex-cli-adapter.d.ts +7 -0
  215. package/dist/src/local-codex-cli-adapter.js +13 -0
  216. package/dist/src/local-codex-cli-adapter.js.map +1 -0
  217. package/dist/src/openclaw-callback-transport.js +2 -1
  218. package/dist/src/openclaw-callback-transport.js.map +1 -1
  219. package/dist/src/semantic-conversation-target.d.ts +4 -0
  220. package/dist/src/semantic-conversation-target.js +20 -0
  221. package/dist/src/semantic-conversation-target.js.map +1 -0
  222. package/dist/src/semantic-permission-control.js +47 -9
  223. package/dist/src/semantic-permission-control.js.map +1 -1
  224. package/dist/src/semantic-private-authority-offers.d.ts +1 -1
  225. package/dist/src/semantic-private-authority-offers.js +3 -1
  226. package/dist/src/semantic-private-authority-offers.js.map +1 -1
  227. package/dist/src/semantic-tool-command-helpers.d.ts +6 -0
  228. package/dist/src/semantic-tool-command-helpers.js +199 -78
  229. package/dist/src/semantic-tool-command-helpers.js.map +1 -1
  230. package/dist/src/semantic-tool-descriptions.d.ts +2 -1
  231. package/dist/src/semantic-tool-descriptions.js +81 -35
  232. package/dist/src/semantic-tool-descriptions.js.map +1 -1
  233. package/dist/src/semantic-tool-list-projection.js +66 -2
  234. package/dist/src/semantic-tool-list-projection.js.map +1 -1
  235. package/dist/src/semantic-tool-presentation.js +76 -7
  236. package/dist/src/semantic-tool-presentation.js.map +1 -1
  237. package/dist/src/semantic-tool-runtime.js +129 -29
  238. package/dist/src/semantic-tool-runtime.js.map +1 -1
  239. package/dist/src/semantic-tool-schemas.d.ts +410 -27
  240. package/dist/src/semantic-tool-schemas.js +176 -88
  241. package/dist/src/semantic-tool-schemas.js.map +1 -1
  242. package/dist/src/terminal-action-contracts.js +10 -6
  243. package/dist/src/terminal-action-contracts.js.map +1 -1
  244. package/dist/src/terminal-list-cli-adapter.d.ts +1 -0
  245. package/dist/src/terminal-list-cli-adapter.js +6 -3
  246. package/dist/src/terminal-list-cli-adapter.js.map +1 -1
  247. package/dist/src/terminal-monitor-decision-policy.d.ts +1 -1
  248. package/dist/src/terminal-permission-control-list-projection.d.ts +1 -1
  249. package/dist/src/terminal-user-send-intent.d.ts +2 -0
  250. package/dist/src/terminal-user-send-intent.js +11 -3
  251. package/dist/src/terminal-user-send-intent.js.map +1 -1
  252. package/docs/architecture/current-architecture.md +313 -0
  253. package/docs/architecture/interactive-terminal-response.md +276 -0
  254. package/docs/architecture/issue-126-final-report.md +248 -0
  255. package/docs/architecture/orchestration-refactor-history.md +2987 -0
  256. package/docs/architecture/orchestration-refactor.md +21 -0
  257. package/docs/backend-task-recovery.md +89 -0
  258. package/docs/bidirectional-agent-protocol.md +260 -0
  259. package/docs/codex-cli-native-compatibility.md +246 -0
  260. package/docs/codex-desktop-compatibility.md +414 -0
  261. package/docs/openclaw-operations.md +281 -0
  262. package/docs/openclaw-session-turn-delivery-requirement.md +45 -0
  263. package/docs/operator-guide.md +543 -0
  264. package/docs/storage-and-logging.md +91 -0
  265. package/docs/test-performance-issue-108.md +80 -0
  266. package/docs/test-performance-issue-120.md +226 -0
  267. package/docs/testing.md +628 -0
  268. package/openclaw.plugin.json +7 -3
  269. package/package.json +6 -13
  270. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +66 -15
@@ -0,0 +1,71 @@
1
+ import { type CallbackRouteV1 } from "./callback-transport.js";
2
+ import { type NativeOutboxDependencies } from "./codex-native-outbox.js";
3
+ import { type CodexNativeTaskRecord } from "./codex-native-state-store.js";
4
+ import type { CodexNativeIdentity, CodexNativeReceipt, CodexNativeSnapshot, CodexNativeTurn } from "./codex-native-types.js";
5
+ export interface CodexNativeTaskInput {
6
+ target: CodexNativeIdentity;
7
+ nativeId: string;
8
+ controllerSession: string;
9
+ callbackRoute?: CallbackRouteV1;
10
+ timeoutMs?: number;
11
+ }
12
+ export interface CodexNativeSendInput extends CodexNativeTaskInput {
13
+ messageId: string;
14
+ text: string;
15
+ }
16
+ export interface CodexNativeTransportPort {
17
+ observe(identity: CodexNativeIdentity, exactTurnId?: string): Promise<CodexNativeSnapshot>;
18
+ start(identity: CodexNativeIdentity, input: {
19
+ text: string;
20
+ clientUserMessageId: string;
21
+ beforeDispatch?(snapshot: CodexNativeSnapshot): Promise<void>;
22
+ }): Promise<CodexNativeReceipt>;
23
+ }
24
+ export interface CodexNativeTaskServiceDependencies extends CodexNativeTransportPort, NativeOutboxDependencies {
25
+ /** Briefly observe a returned native receipt while history materializes; never retry the send. */
26
+ acceptancePollAttempts?: number;
27
+ acceptancePollIntervalMs?: number;
28
+ sleep?(milliseconds: number): Promise<void>;
29
+ }
30
+ export declare class CodexNativeTaskError extends Error {
31
+ readonly code: string;
32
+ readonly dispatchState?: "not_sent" | undefined;
33
+ constructor(code: string, message: string, dispatchState?: "not_sent" | undefined);
34
+ }
35
+ export interface CodexNativeTaskService {
36
+ send(input: CodexNativeSendInput): Promise<CodexNativeTaskRecord>;
37
+ watch(input: CodexNativeTaskInput): Promise<CodexNativeTaskRecord>;
38
+ status(id: string): CodexNativeTaskRecord;
39
+ list(): CodexNativeTaskRecord[];
40
+ reconcile(id: string): Promise<CodexNativeTaskRecord>;
41
+ reconcileAll(): Promise<{
42
+ tasks: CodexNativeTaskRecord[];
43
+ errors: {
44
+ id: string;
45
+ error_code: string;
46
+ }[];
47
+ }>;
48
+ unwatch(id: string, input: {
49
+ controllerSession: string;
50
+ }): CodexNativeTaskRecord;
51
+ close(id: string, input: {
52
+ controllerSession: string;
53
+ reason?: string;
54
+ }): CodexNativeTaskRecord;
55
+ renew(id: string, input: {
56
+ controllerSession: string;
57
+ timeoutMs?: number;
58
+ }): Promise<CodexNativeTaskRecord>;
59
+ recover(id: string, input: {
60
+ controllerSession: string;
61
+ }): Promise<CodexNativeTaskRecord>;
62
+ retryCallback(id: string, input: {
63
+ controllerSession: string;
64
+ notificationId?: string;
65
+ }): Promise<CodexNativeTaskRecord>;
66
+ }
67
+ export declare const nativeDigest: (value: unknown) => string;
68
+ export declare function codexNativeTaskNeedsReconciliation(task: CodexNativeTaskRecord): boolean;
69
+ export declare function nativeErrorCode(error: unknown): string;
70
+ export declare function nativeTurn(snapshot: CodexNativeSnapshot, turnId: string): CodexNativeTurn | undefined;
71
+ export declare function createCodexNativeTaskService(deps: CodexNativeTaskServiceDependencies): CodexNativeTaskService;
@@ -0,0 +1,502 @@
1
+ import { backendObservationStopped, backendRenewalDeadline, isBackendCallbackRetryable, prepareBackendCallbackRetry, stopBackendObservation, closeBackendManagement } from "./backend-task-recovery.js";
2
+ import { createHash, randomUUID } from "node:crypto";
3
+ import { isDeepStrictEqual } from "node:util";
4
+ import { createCallbackEnvelope, parseCallbackRoute } from "./callback-transport.js";
5
+ import { canonicalJson } from "./canonical-json.js";
6
+ import { createNativeNotificationOutbox } from "./codex-native-outbox.js";
7
+ import { nativeInteractionProjection } from "./codex-native-public-projection.js";
8
+ import { assertNativeIdentity, persistNativeInteraction } from "./codex-native-state-store.js";
9
+ export class CodexNativeTaskError extends Error {
10
+ code;
11
+ dispatchState;
12
+ constructor(code, message, dispatchState) {
13
+ super(message);
14
+ this.code = code;
15
+ this.dispatchState = dispatchState;
16
+ this.name = "CodexNativeTaskError";
17
+ }
18
+ }
19
+ export const nativeDigest = (value) => createHash("sha256").update(canonicalJson(value)).digest("hex");
20
+ const stopped = backendObservationStopped;
21
+ const live = (task) => !stopped(task) && (task.status === "awaiting_acceptance" || task.status === "watching");
22
+ const unresolvedSend = (task) => task.kind === "send" && !task.closed_at &&
23
+ !task.native_turn_id && ["reserved", "uncertain"].includes(task.send_intent?.state ?? "");
24
+ export function codexNativeTaskNeedsReconciliation(task) {
25
+ return task.notifications.some(n => n.status === "leased") ||
26
+ !stopped(task) && (live(task) || task.notifications.some(n => ["ready", "retry_wait"].includes(n.status)));
27
+ }
28
+ export function nativeErrorCode(error) {
29
+ const code = error?.code;
30
+ return typeof code === "string" && /^[a-zA-Z0-9_-]{1,100}$/.test(code) ? code : "codex_native_observation_unavailable";
31
+ }
32
+ export function nativeTurn(snapshot, turnId) {
33
+ const turns = snapshot.turns.filter(turn => turn.id === turnId);
34
+ if (turns.length > 1)
35
+ return undefined;
36
+ return turns[0] ?? (snapshot.selectedTurn?.id === turnId ? snapshot.selectedTurn : undefined);
37
+ }
38
+ function assertSnapshot(target, snapshot) {
39
+ if (snapshot.threadId !== target.threadId || snapshot.thread.id !== target.threadId)
40
+ throw new CodexNativeTaskError("codex_native_identity_mismatch", "Native observation did not match the exact thread");
41
+ }
42
+ function submission(snapshot, clientId, text) {
43
+ const matches = snapshot.turns.flatMap(turn => turn.items.filter(item => item.type === "userMessage" && item.clientId === clientId)
44
+ .map(item => ({ turn, item })));
45
+ if (snapshot.selectedTurn && !snapshot.turns.some(turn => turn.id === snapshot.selectedTurn.id)) {
46
+ matches.push(...snapshot.selectedTurn.items.filter(item => item.type === "userMessage" && item.clientId === clientId).map(item => ({ turn: snapshot.selectedTurn, item })));
47
+ }
48
+ if (matches.length !== 1 || !matches[0].turn.itemsComplete)
49
+ return undefined;
50
+ const itemText = matches[0].item.content?.filter(item => item.type === "text").map(item => item.text ?? "").join("\n") ?? matches[0].item.text;
51
+ return itemText === text ? matches[0].turn : undefined;
52
+ }
53
+ function finalText(turn) {
54
+ const messages = turn.items.filter(item => item.type === "agentMessage" && typeof item.text === "string");
55
+ const final = messages.filter(item => item.phase === "final_answer");
56
+ return (final.length ? final : messages.filter(item => item.phase == null)).map(item => item.text).join("\n\n");
57
+ }
58
+ function interactionMessage(task, interaction) {
59
+ const summary = interaction.kind.endsWith("approval")
60
+ ? `${interaction.kind}: ${interaction.command ?? interaction.reason ?? interaction.itemId}`
61
+ : interaction.questions.map(question => `${question.title}${question.options.length ? ` (${question.options.join(" / ")})` : ""}`).join("\n");
62
+ return `Codex CLI task ${task.id} needs a response.\n${summary}\n` +
63
+ `conversation_id: ${task.native_id}\nwatch_id: ${task.id}\ninteraction_id: ${interaction.id}\n` +
64
+ `Use AKK ${interaction.kind.endsWith("approval") ? "Approve" : "Respond"} with this exact interaction_id. AKK continues watching the same task.\n` +
65
+ JSON.stringify(nativeInteractionProjection(interaction, task.native_id, task.id));
66
+ }
67
+ export function createCodexNativeTaskService(deps) {
68
+ return new CodexNativeTaskRuntime(deps);
69
+ }
70
+ class CodexNativeTaskRuntime {
71
+ deps;
72
+ repo;
73
+ now;
74
+ uuid;
75
+ outbox;
76
+ constructor(deps) {
77
+ this.deps = deps;
78
+ this.repo = deps.repository;
79
+ this.now = deps.now ?? (() => new Date());
80
+ this.uuid = deps.randomUUID ?? randomUUID;
81
+ this.outbox = createNativeNotificationOutbox(deps);
82
+ }
83
+ status(id) {
84
+ const task = this.repo.load(id);
85
+ if (!task)
86
+ throw new CodexNativeTaskError("codex_native_watch_not_found", "Codex CLI Watch was not found");
87
+ return task;
88
+ }
89
+ update(id, operation) {
90
+ return this.repo.withLock(id, () => { const task = this.status(id); operation(task); task.updated_at = this.now().toISOString(); return this.repo.save(task, task.revision); });
91
+ }
92
+ notify(task, key, body, interaction) {
93
+ if (!task.callback_route || stopped(task))
94
+ return;
95
+ const id = `${task.id}:${key}`;
96
+ if (task.notifications.some(n => n.id === id))
97
+ return;
98
+ task.notifications.push({ id, attempts: 0, status: "ready", envelope: createCallbackEnvelope({ route: task.callback_route,
99
+ source: { kind: "codex_native_watch", watch_id: task.id, native_id: task.native_id },
100
+ event: { id, type: `codex_native_watch.${key.split(":")[0]}`, body, requires_response: Boolean(interaction),
101
+ metadata: { watch_id: task.id, conversation_id: task.native_id, thread_id: task.target.threadId,
102
+ ...(task.native_turn_id ? { turn_id: task.native_turn_id } : {}),
103
+ ...(interaction ? { interaction_id: interaction.id, interaction: nativeInteractionProjection(interaction, task.native_id, task.id), action: interaction.kind.endsWith("approval") ? "approve" : "respond" } : {}) } }
104
+ }) });
105
+ }
106
+ make(input, id, kind) {
107
+ if (!input.controllerSession?.trim())
108
+ throw new CodexNativeTaskError("invalid_argument", "Native task controller is required");
109
+ assertNativeIdentity(input.nativeId, input.target);
110
+ const timeout = input.timeoutMs ?? 3_600_000;
111
+ if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 7 * 24 * 3_600_000)
112
+ throw new CodexNativeTaskError("invalid_argument", "Native Watch timeout must be between one millisecond and seven days");
113
+ const route = input.callbackRoute === undefined ? undefined : parseCallbackRoute(input.callbackRoute);
114
+ if (route && route.controller_session_id !== input.controllerSession)
115
+ throw new CodexNativeTaskError("callback_controller_mismatch", "Native callback belongs to a different controller");
116
+ const date = this.now();
117
+ return { schema: "agent-knock-knock/codex-native-task", version: 1, revision: 1, id, watch_id: id, native_id: input.nativeId,
118
+ target: structuredClone(input.target), controller_session: input.controllerSession, kind,
119
+ status: kind === "send" ? "awaiting_acceptance" : "watching", created_at: date.toISOString(), updated_at: date.toISOString(),
120
+ deadline_at: new Date(date.getTime() + timeout).toISOString(), ...(route ? { callback_route: route } : {}), pending_interactions: [], notifications: [] };
121
+ }
122
+ duplicate(task, input) {
123
+ if (task.kind !== "send" || task.controller_session !== input.controllerSession || !isDeepStrictEqual(task.target, input.target) ||
124
+ task.native_id !== input.nativeId || task.send_intent?.message_id !== input.messageId || task.send_intent.text !== input.text ||
125
+ !isDeepStrictEqual(task.callback_route, input.callbackRoute))
126
+ throw new CodexNativeTaskError("codex_native_message_id_conflict", "Message ID is already bound to different immutable send input");
127
+ return task;
128
+ }
129
+ bindSubmission(task, snapshot) {
130
+ const intent = task.send_intent;
131
+ if (intent && !task.native_turn_id) {
132
+ const turn = submission(snapshot, intent.client_user_message_id, intent.text);
133
+ if (turn && !intent.baseline_turn_ids.includes(turn.id) && (!intent.receipt_turn_id || intent.receipt_turn_id === turn.id)) {
134
+ task.native_turn_id = turn.id;
135
+ intent.state = "accepted";
136
+ task.status = "watching";
137
+ }
138
+ else {
139
+ if (intent.state !== "reserved")
140
+ intent.state = "uncertain";
141
+ task.observation_error = turn ? "codex_native_submission_turn_conflict" : "codex_native_submission_not_observed";
142
+ }
143
+ }
144
+ }
145
+ apply(task, snapshot, refresh = false) {
146
+ assertSnapshot(task.target, snapshot);
147
+ task.observed_at = this.now().toISOString();
148
+ delete task.observation_error;
149
+ if (task.closed_at || ["completed", "failed", "interrupted"].includes(task.status) || !refresh && !live(task))
150
+ return;
151
+ this.bindSubmission(task, snapshot);
152
+ if (!task.native_turn_id)
153
+ return;
154
+ const turn = nativeTurn(snapshot, task.native_turn_id);
155
+ if (!turn) {
156
+ task.observation_error = "codex_native_exact_turn_unavailable";
157
+ return;
158
+ }
159
+ const pending = turn.status === "inProgress" ? snapshot.pendingInteractions.filter(i => i.threadId === task.target.threadId && i.turnId === task.native_turn_id) : [];
160
+ task.pending_interactions = pending.map(persistNativeInteraction);
161
+ for (const n of task.notifications) {
162
+ const pendingId = n.envelope.event.metadata?.interaction_id;
163
+ if (typeof pendingId === "string" && !pending.some(i => i.id === pendingId) && ["ready", "retry_wait"].includes(n.status)) {
164
+ n.status = "failed";
165
+ n.outcome = { disposition: "permanent_failure", error_code: "codex_native_interaction_resolved" };
166
+ }
167
+ }
168
+ for (const interaction of pending)
169
+ this.notify(task, `interaction:${interaction.id}`, interactionMessage(task, interaction), interaction);
170
+ if (["completed", "failed", "interrupted"].includes(turn.status)) {
171
+ if (!turn.itemsComplete) {
172
+ task.observation_error = "codex_native_exact_items_incomplete";
173
+ return;
174
+ }
175
+ task.status = turn.status;
176
+ task.final_text = finalText(turn);
177
+ this.notify(task, "settled", `Codex CLI task ${task.id} ${task.status}.\n${task.final_text || turn.error || "No final text was recorded."}`);
178
+ }
179
+ }
180
+ async reconcile(id) {
181
+ const previous = this.status(id);
182
+ const recover = !stopped(previous) && previous.status === "timed_out" && unresolvedSend(previous);
183
+ if (live(previous) || recover) {
184
+ let snapshot;
185
+ let error;
186
+ try {
187
+ snapshot = await this.deps.observe(previous.target, previous.native_turn_id ?? previous.send_intent?.receipt_turn_id);
188
+ }
189
+ catch (caught) {
190
+ error = nativeErrorCode(caught);
191
+ }
192
+ this.update(id, task => {
193
+ if (stopped(task) || !live(task) && !(recover && task.status === "timed_out"))
194
+ return;
195
+ if (task.revision !== previous.revision)
196
+ return;
197
+ if (snapshot) {
198
+ if (recover)
199
+ task.status = "awaiting_acceptance";
200
+ this.apply(task, snapshot);
201
+ }
202
+ else
203
+ task.observation_error = error;
204
+ if (live(task) && this.now().getTime() >= Date.parse(task.deadline_at)) {
205
+ task.status = "timed_out";
206
+ this.notify(task, task.renewal_count ? `timed_out:${task.renewal_count}` : "timed_out", `Codex CLI Watch ${task.id} reached its deadline. The native task may still run; an uncertain send will not be replayed.`);
207
+ }
208
+ });
209
+ }
210
+ await this.outbox.deliverPending(id);
211
+ return this.status(id);
212
+ }
213
+ async settleAcceptance(id) {
214
+ const attempts = this.deps.acceptancePollAttempts ?? 16;
215
+ const intervalMs = this.deps.acceptancePollIntervalMs ?? 100;
216
+ const deadline = this.now().getTime() + Math.max(0, attempts - 1) * intervalMs;
217
+ const sleep = this.deps.sleep ?? (milliseconds => new Promise(resolve => setTimeout(resolve, milliseconds)));
218
+ for (let attempt = 0; attempt < attempts; attempt++) {
219
+ const task = this.status(id);
220
+ if (stopped(task) || task.status !== "awaiting_acceptance" || task.native_turn_id || !task.send_intent?.receipt_turn_id ||
221
+ this.now().getTime() >= Date.parse(task.deadline_at))
222
+ return;
223
+ if (attempt > 0) {
224
+ if (this.now().getTime() >= deadline)
225
+ return;
226
+ await sleep(Math.min(intervalMs, deadline - this.now().getTime()));
227
+ }
228
+ try {
229
+ const snapshot = await this.deps.observe(task.target, task.send_intent.receipt_turn_id);
230
+ this.update(id, current => { if (live(current) && current.revision === task.revision)
231
+ this.apply(current, snapshot); });
232
+ }
233
+ catch (error) {
234
+ this.update(id, current => { if (live(current))
235
+ current.observation_error = nativeErrorCode(error); });
236
+ }
237
+ }
238
+ }
239
+ list() { return this.repo.list(); }
240
+ async send(input) {
241
+ if (!input.messageId?.trim() || !input.text?.trim())
242
+ throw new CodexNativeTaskError("invalid_argument", "Send requires stable message ID and nonempty text");
243
+ const id = `codex-cli-watch:${nativeDigest([input.controllerSession, input.messageId])}`;
244
+ const previous = this.repo.load(id);
245
+ if (previous)
246
+ return this.duplicate(previous, input);
247
+ const task = this.make(input, id, "send");
248
+ const snapshot = await this.deps.observe(input.target);
249
+ assertSnapshot(input.target, snapshot);
250
+ if (!snapshot.loaded || !snapshot.canSend)
251
+ throw new CodexNativeTaskError("thread_not_idle", "Codex CLI thread must be loaded and idle before send");
252
+ task.send_intent = { message_id: input.messageId, client_user_message_id: this.uuid(), text: input.text,
253
+ baseline_turn_ids: snapshot.turns.map(turn => turn.id), state: "reserved", dispatched_at: this.now().toISOString() };
254
+ let created = false;
255
+ const reserved = this.repo.withLock(id, () => {
256
+ const existing = this.repo.load(id);
257
+ if (existing)
258
+ return this.duplicate(existing, input);
259
+ if (this.repo.list().some(other => unresolvedSend(other) && isDeepStrictEqual(other.target, input.target))) {
260
+ throw new CodexNativeTaskError("codex_native_send_pending", "A previous send to this exact thread is awaiting acceptance");
261
+ }
262
+ created = true;
263
+ return this.repo.save(task, null);
264
+ });
265
+ if (!created)
266
+ return reserved;
267
+ try {
268
+ const receipt = await this.deps.start(input.target, { text: input.text, clientUserMessageId: task.send_intent.client_user_message_id,
269
+ beforeDispatch: async (fresh) => {
270
+ assertSnapshot(task.target, fresh);
271
+ if (!fresh.loaded || !fresh.canSend)
272
+ throw new CodexNativeTaskError("thread_not_idle", "Codex CLI thread became busy before send", "not_sent");
273
+ this.update(id, current => {
274
+ if (stopped(current) || current.status !== "awaiting_acceptance" || current.send_intent?.state !== "reserved")
275
+ throw new CodexNativeTaskError("codex_native_send_cancelled", "Native send is no longer dispatchable", "not_sent");
276
+ current.send_intent.state = "uncertain";
277
+ });
278
+ } });
279
+ this.update(id, current => {
280
+ const intent = current.send_intent;
281
+ if (receipt.clientUserMessageId !== intent.client_user_message_id || !receipt.turnId || intent.baseline_turn_ids.includes(receipt.turnId) ||
282
+ current.native_turn_id && current.native_turn_id !== receipt.turnId) {
283
+ intent.error_code = "codex_native_submission_turn_conflict";
284
+ return;
285
+ }
286
+ intent.receipt_turn_id = receipt.turnId;
287
+ intent.state = current.native_turn_id ? "accepted" : "uncertain";
288
+ });
289
+ }
290
+ catch (error) {
291
+ this.update(id, current => {
292
+ const intent = current.send_intent;
293
+ intent.error_code = nativeErrorCode(error);
294
+ if (current.native_turn_id)
295
+ return;
296
+ if (error?.dispatchState === "not_sent") {
297
+ intent.state = "not_sent";
298
+ if (live(current)) {
299
+ current.status = "failed";
300
+ this.notify(current, "settled", `Codex CLI task ${id} was not sent (${intent.error_code}). This message ID will not be replayed.`);
301
+ }
302
+ }
303
+ else
304
+ intent.state = "uncertain";
305
+ });
306
+ }
307
+ await this.settleAcceptance(id);
308
+ return this.reconcile(id);
309
+ }
310
+ async watch(input) {
311
+ const task = this.make(input, `codex-cli-watch:${this.uuid()}`, "watch");
312
+ const snapshot = await this.deps.observe(input.target);
313
+ assertSnapshot(input.target, snapshot);
314
+ const active = snapshot.turns.filter(turn => turn.status === "inProgress");
315
+ if (!snapshot.loaded || active.length !== 1 || snapshot.latestTurnId !== active[0].id)
316
+ throw new CodexNativeTaskError("no_active_task", "Codex CLI has no unique active native task to Watch");
317
+ task.native_turn_id = active[0].id;
318
+ this.apply(task, snapshot);
319
+ this.repo.withLock(task.id, () => this.repo.save(task, null));
320
+ await this.outbox.deliverPending(task.id);
321
+ return this.status(task.id);
322
+ }
323
+ async reconcileAll() {
324
+ const scan = this.repo.scanForReconciliation();
325
+ const result = { tasks: [], errors: [...scan.errors] };
326
+ for (const task of scan.tasks) {
327
+ if (!codexNativeTaskNeedsReconciliation(task))
328
+ continue;
329
+ try {
330
+ result.tasks.push(await this.reconcile(task.id));
331
+ }
332
+ catch (error) {
333
+ result.errors.push({ id: task.id, error_code: nativeErrorCode(error) });
334
+ }
335
+ }
336
+ return result;
337
+ }
338
+ owned(id, controllerSession) {
339
+ const task = this.status(id);
340
+ this.assertOwner(task, controllerSession);
341
+ return task;
342
+ }
343
+ assertOwner(task, controllerSession) {
344
+ if (task.controller_session !== controllerSession)
345
+ throw new CodexNativeTaskError("codex_native_controller_mismatch", "Only the owning controller can manage this task");
346
+ }
347
+ assertOpen(task) {
348
+ if (task.closed_at)
349
+ throw new CodexNativeTaskError("codex_native_task_closed", "Closed tasks cannot resume observation or callbacks");
350
+ }
351
+ suppress(task, errorCode, timeoutOnly = false) {
352
+ for (const n of task.notifications)
353
+ if ((!timeoutOnly || n.envelope.event.type === "codex_native_watch.timed_out") &&
354
+ ["ready", "retry_wait", "failed"].includes(n.status) && n.outcome?.disposition !== "permanent_failure") {
355
+ n.status = "failed";
356
+ n.outcome = { disposition: "permanent_failure", error_code: errorCode };
357
+ delete n.retry_at;
358
+ }
359
+ }
360
+ unwatch(id, input) {
361
+ this.owned(id, input.controllerSession);
362
+ return this.update(id, task => {
363
+ this.assertOwner(task, input.controllerSession);
364
+ if (task.closed_at)
365
+ return;
366
+ stopBackendObservation(task, this.now());
367
+ this.suppress(task, "codex_native_watch_cancelled");
368
+ });
369
+ }
370
+ close(id, input) {
371
+ this.owned(id, input.controllerSession);
372
+ if (input.reason !== undefined && !input.reason.trim())
373
+ throw new CodexNativeTaskError("invalid_argument", "Close reason must be nonempty");
374
+ return this.update(id, task => {
375
+ this.assertOwner(task, input.controllerSession);
376
+ if (task.kind !== "send")
377
+ throw new CodexNativeTaskError("codex_native_unmanaged_watch", "Passive Watch must use Unwatch");
378
+ if (task.closed_at)
379
+ return;
380
+ closeBackendManagement(task, input, this.now());
381
+ this.suppress(task, "codex_native_task_closed");
382
+ });
383
+ }
384
+ async recover(id, input) {
385
+ const previous = this.owned(id, input.controllerSession);
386
+ this.assertOpen(previous);
387
+ const snapshot = await this.deps.observe(previous.target, previous.native_turn_id ?? previous.send_intent?.receipt_turn_id);
388
+ const refreshed = this.update(id, task => {
389
+ this.assertOwner(task, input.controllerSession);
390
+ this.assertOpen(task);
391
+ if (task.revision !== previous.revision)
392
+ throw new CodexNativeTaskError("codex_native_task_changed", "Task changed during recovery; retry against current state");
393
+ const priorStatus = task.status;
394
+ if (priorStatus === "cancelled")
395
+ task.unwatched_at ??= task.updated_at;
396
+ this.apply(task, snapshot, true);
397
+ if (["timed_out", "cancelled"].includes(priorStatus) && task.status === "watching")
398
+ task.status = priorStatus;
399
+ if (live(task) && this.now().getTime() >= Date.parse(task.deadline_at)) {
400
+ task.status = "timed_out";
401
+ this.notify(task, task.renewal_count ? `timed_out:${task.renewal_count}` : "timed_out", `Codex CLI Watch ${task.id} reached its deadline. The native task may still run; an uncertain send will not be replayed.`);
402
+ }
403
+ task.recovered_at = this.now().toISOString();
404
+ if (["completed", "failed", "interrupted"].includes(task.status))
405
+ this.suppress(task, "codex_native_timeout_superseded", true);
406
+ });
407
+ if (!stopped(refreshed))
408
+ await this.outbox.deliverPending(id);
409
+ return this.status(id);
410
+ }
411
+ async renew(id, input) {
412
+ const previous = this.owned(id, input.controllerSession);
413
+ this.assertOpen(previous);
414
+ backendRenewalDeadline(previous, this.now(), input.timeoutMs);
415
+ const snapshot = await this.deps.observe(previous.target, previous.native_turn_id ?? previous.send_intent?.receipt_turn_id);
416
+ let unavailable = false;
417
+ const refreshed = this.update(id, task => {
418
+ this.assertOwner(task, input.controllerSession);
419
+ this.assertOpen(task);
420
+ if (task.revision !== previous.revision)
421
+ throw new CodexNativeTaskError("codex_native_task_changed", "Task changed during renewal; retry against current state");
422
+ const priorStatus = task.status;
423
+ if (priorStatus === "cancelled")
424
+ task.unwatched_at ??= task.updated_at;
425
+ this.apply(task, snapshot, true);
426
+ if (["completed", "failed", "interrupted"].includes(task.status)) {
427
+ this.suppress(task, "codex_native_timeout_superseded", true);
428
+ return;
429
+ }
430
+ const exact = task.native_turn_id ? nativeTurn(snapshot, task.native_turn_id) : undefined;
431
+ if (!exact || exact.status === "inProgress" && !snapshot.loaded) {
432
+ task.status = priorStatus;
433
+ unavailable = true;
434
+ return;
435
+ }
436
+ if (exact.status !== "inProgress") {
437
+ if (!exact.itemsComplete)
438
+ unavailable = true;
439
+ else
440
+ this.suppress(task, "codex_native_timeout_superseded", true);
441
+ return;
442
+ }
443
+ task.deadline_at = backendRenewalDeadline(task, this.now(), input.timeoutMs);
444
+ task.renewed_at = this.now().toISOString();
445
+ task.renewal_count = (task.renewal_count ?? 0) + 1;
446
+ delete task.unwatched_at;
447
+ task.status = "watching";
448
+ this.suppress(task, "codex_native_timeout_superseded", true);
449
+ this.apply(task, snapshot);
450
+ });
451
+ if (unavailable)
452
+ throw new CodexNativeTaskError("codex_native_exact_turn_unavailable", "Renew requires proof of the original native task");
453
+ if (!stopped(refreshed))
454
+ await this.outbox.deliverPending(id);
455
+ return this.status(id);
456
+ }
457
+ async retryCallback(id, input) {
458
+ const previous = this.owned(id, input.controllerSession);
459
+ this.assertOpen(previous);
460
+ if (stopped(previous))
461
+ throw new CodexNativeTaskError("codex_native_watch_unwatched", "Renew observation before retrying callbacks");
462
+ const eligible = (task) => task.notifications.filter(note => (!input.notificationId || note.id === input.notificationId) && isBackendCallbackRetryable(task, note));
463
+ const candidates = eligible(previous);
464
+ if (candidates.length !== 1)
465
+ throw new CodexNativeTaskError("codex_native_callback_not_retryable", "Select exactly one callback with a retryable failure");
466
+ const selected = candidates[0];
467
+ const interactionId = selected.envelope.event.metadata?.interaction_id;
468
+ const snapshot = typeof interactionId === "string"
469
+ ? await this.deps.observe(previous.target, previous.native_turn_id ?? previous.send_intent?.receipt_turn_id) : undefined;
470
+ let stale = false;
471
+ this.update(id, task => {
472
+ this.assertOwner(task, input.controllerSession);
473
+ this.assertOpen(task);
474
+ if (stopped(task))
475
+ throw new CodexNativeTaskError("codex_native_watch_unwatched", "Renew observation before retrying callbacks");
476
+ const note = eligible(task).find(candidate => candidate.id === selected.id);
477
+ if (!note || note.attempts !== selected.attempts)
478
+ throw new CodexNativeTaskError("codex_native_callback_not_retryable", "Callback changed before retry authorization");
479
+ if (snapshot) {
480
+ if (task.revision !== previous.revision)
481
+ throw new CodexNativeTaskError("codex_native_task_changed", "Task changed while checking callback freshness; retry against current state");
482
+ const priorStatus = task.status;
483
+ this.apply(task, snapshot, true);
484
+ if (priorStatus === "timed_out" && task.status === "watching")
485
+ task.status = priorStatus;
486
+ if (!snapshot.loaded || !task.native_turn_id || nativeTurn(snapshot, task.native_turn_id)?.status !== "inProgress" ||
487
+ !snapshot.pendingInteractions.some(item => item.id === interactionId && item.threadId === task.target.threadId && item.turnId === task.native_turn_id)) {
488
+ note.status = "failed";
489
+ note.outcome = { disposition: "permanent_failure", error_code: "codex_native_interaction_resolved" };
490
+ stale = true;
491
+ return;
492
+ }
493
+ }
494
+ prepareBackendCallbackRetry(task, { ...input, notificationId: selected.id }, this.now());
495
+ });
496
+ if (stale)
497
+ throw new CodexNativeTaskError("codex_native_callback_stale", "The callback interaction is no longer pending on the original task");
498
+ await this.outbox.deliverPending(id, selected.id);
499
+ return this.status(id);
500
+ }
501
+ }
502
+ //# sourceMappingURL=codex-native-task-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-native-task-service.js","sourceRoot":"","sources":["../../src/codex-native-task-service.ts"],"names":[],"mappings":"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"}