@scotthuang/agent-knock-knock 0.12.11 → 0.12.12

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 (322) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +5 -5
  3. package/dist/src/callback-cli-adapter.d.ts +47 -0
  4. package/dist/src/callback-cli-adapter.js +156 -0
  5. package/dist/src/callback-cli-adapter.js.map +1 -0
  6. package/dist/src/callback-outbox-policy.d.ts +95 -0
  7. package/dist/src/callback-outbox-policy.js +149 -0
  8. package/dist/src/callback-outbox-policy.js.map +1 -0
  9. package/dist/src/callback-outbox-service.d.ts +247 -0
  10. package/dist/src/callback-outbox-service.js +1053 -0
  11. package/dist/src/callback-outbox-service.js.map +1 -0
  12. package/dist/src/callback-outbox-settlement.d.ts +54 -0
  13. package/dist/src/callback-outbox-settlement.js +241 -0
  14. package/dist/src/callback-outbox-settlement.js.map +1 -0
  15. package/dist/src/canonical-json.d.ts +1 -0
  16. package/dist/src/canonical-json.js +14 -0
  17. package/dist/src/canonical-json.js.map +1 -0
  18. package/dist/src/claude-lifecycle-compatibility.js +15 -0
  19. package/dist/src/claude-lifecycle-compatibility.js.map +1 -1
  20. package/dist/src/claude-local-transcript-provider.d.ts +1 -1
  21. package/dist/src/claude-local-transcript-provider.js +19 -5
  22. package/dist/src/claude-local-transcript-provider.js.map +1 -1
  23. package/dist/src/cli-command-runtime.d.ts +14 -0
  24. package/dist/src/cli-command-runtime.js +164 -0
  25. package/dist/src/cli-command-runtime.js.map +1 -0
  26. package/dist/src/cli-core.d.ts +4 -42
  27. package/dist/src/cli-core.js +906 -28717
  28. package/dist/src/cli-core.js.map +1 -1
  29. package/dist/src/cli-runtime-context.d.ts +57 -0
  30. package/dist/src/cli-runtime-context.js +118 -0
  31. package/dist/src/cli-runtime-context.js.map +1 -0
  32. package/dist/src/codex-lifecycle-compatibility.js +2 -1
  33. package/dist/src/codex-lifecycle-compatibility.js.map +1 -1
  34. package/dist/src/codex-local-session-provider.d.ts +18 -0
  35. package/dist/src/codex-local-session-provider.js +67 -0
  36. package/dist/src/codex-local-session-provider.js.map +1 -1
  37. package/dist/src/codex-session-provider.js +1 -3
  38. package/dist/src/codex-session-provider.js.map +1 -1
  39. package/dist/src/conversation-trace.d.ts +30 -0
  40. package/dist/src/conversation-trace.js +185 -0
  41. package/dist/src/conversation-trace.js.map +1 -0
  42. package/dist/src/deferred-foreground-application-service.d.ts +84 -0
  43. package/dist/src/deferred-foreground-application-service.js +742 -0
  44. package/dist/src/deferred-foreground-application-service.js.map +1 -0
  45. package/dist/src/deferred-foreground-authority-cli-adapter.d.ts +78 -0
  46. package/dist/src/deferred-foreground-authority-cli-adapter.js +724 -0
  47. package/dist/src/deferred-foreground-authority-cli-adapter.js.map +1 -0
  48. package/dist/src/deferred-foreground-boundary.d.ts +61 -0
  49. package/dist/src/deferred-foreground-boundary.js +2 -0
  50. package/dist/src/deferred-foreground-boundary.js.map +1 -0
  51. package/dist/src/deferred-foreground-capability.d.ts +4 -0
  52. package/dist/src/deferred-foreground-capability.js +184 -0
  53. package/dist/src/deferred-foreground-capability.js.map +1 -0
  54. package/dist/src/deferred-foreground-preparation-cli-adapter.d.ts +53 -0
  55. package/dist/src/deferred-foreground-preparation-cli-adapter.js +210 -0
  56. package/dist/src/deferred-foreground-preparation-cli-adapter.js.map +1 -0
  57. package/dist/src/deferred-foreground-preparation-service.d.ts +72 -0
  58. package/dist/src/deferred-foreground-preparation-service.js +179 -0
  59. package/dist/src/deferred-foreground-preparation-service.js.map +1 -0
  60. package/dist/src/deferred-foreground-recovery-cli-adapter.d.ts +139 -0
  61. package/dist/src/deferred-foreground-recovery-cli-adapter.js +1125 -0
  62. package/dist/src/deferred-foreground-recovery-cli-adapter.js.map +1 -0
  63. package/dist/src/deferred-foreground-recovery-service.d.ts +48 -0
  64. package/dist/src/deferred-foreground-recovery-service.js +91 -0
  65. package/dist/src/deferred-foreground-recovery-service.js.map +1 -0
  66. package/dist/src/deferred-foreground-transfer-policy.d.ts +2 -0
  67. package/dist/src/deferred-foreground-transfer-policy.js +10 -0
  68. package/dist/src/deferred-foreground-transfer-policy.js.map +1 -0
  69. package/dist/src/deferred-foreground-transfer.js +43 -101
  70. package/dist/src/deferred-foreground-transfer.js.map +1 -1
  71. package/dist/src/doctor-capabilities.d.ts +9 -0
  72. package/dist/src/doctor-capabilities.js +22 -0
  73. package/dist/src/doctor-capabilities.js.map +1 -1
  74. package/dist/src/durable-json-file.d.ts +22 -0
  75. package/dist/src/durable-json-file.js +127 -0
  76. package/dist/src/durable-json-file.js.map +1 -0
  77. package/dist/src/file-lock-cli-adapter.d.ts +43 -0
  78. package/dist/src/file-lock-cli-adapter.js +150 -0
  79. package/dist/src/file-lock-cli-adapter.js.map +1 -0
  80. package/dist/src/herdr-terminal-control-provider.js +1 -3
  81. package/dist/src/herdr-terminal-control-provider.js.map +1 -1
  82. package/dist/src/install-doctor-command-adapter.d.ts +17 -0
  83. package/dist/src/install-doctor-command-adapter.js +225 -0
  84. package/dist/src/install-doctor-command-adapter.js.map +1 -0
  85. package/dist/src/live-lifecycle-evidence.js +76 -46
  86. package/dist/src/live-lifecycle-evidence.js.map +1 -1
  87. package/dist/src/live-lifecycle-smoke.js +74 -50
  88. package/dist/src/live-lifecycle-smoke.js.map +1 -1
  89. package/dist/src/managed-session.d.ts +2 -0
  90. package/dist/src/managed-session.js +24 -0
  91. package/dist/src/managed-session.js.map +1 -1
  92. package/dist/src/managed-turn-recovery-service.d.ts +86 -0
  93. package/dist/src/managed-turn-recovery-service.js +145 -0
  94. package/dist/src/managed-turn-recovery-service.js.map +1 -0
  95. package/dist/src/mutation-transaction.d.ts +48 -0
  96. package/dist/src/mutation-transaction.js +73 -0
  97. package/dist/src/mutation-transaction.js.map +1 -0
  98. package/dist/src/native-thread-lifecycle-cli-adapter.d.ts +154 -0
  99. package/dist/src/native-thread-lifecycle-cli-adapter.js +786 -0
  100. package/dist/src/native-thread-lifecycle-cli-adapter.js.map +1 -0
  101. package/dist/src/native-thread-lifecycle-ledger-cli-adapter.d.ts +25 -0
  102. package/dist/src/native-thread-lifecycle-ledger-cli-adapter.js +50 -0
  103. package/dist/src/native-thread-lifecycle-ledger-cli-adapter.js.map +1 -0
  104. package/dist/src/native-thread-lifecycle-query-service.d.ts +75 -0
  105. package/dist/src/native-thread-lifecycle-query-service.js +297 -0
  106. package/dist/src/native-thread-lifecycle-query-service.js.map +1 -0
  107. package/dist/src/native-thread-lifecycle-recovery-adapter.d.ts +45 -0
  108. package/dist/src/native-thread-lifecycle-recovery-adapter.js +154 -0
  109. package/dist/src/native-thread-lifecycle-recovery-adapter.js.map +1 -0
  110. package/dist/src/native-thread-lifecycle-recovery-service.d.ts +211 -0
  111. package/dist/src/native-thread-lifecycle-recovery-service.js +1093 -0
  112. package/dist/src/native-thread-lifecycle-recovery-service.js.map +1 -0
  113. package/dist/src/native-thread-resume-snapshot-policy.d.ts +73 -0
  114. package/dist/src/native-thread-resume-snapshot-policy.js +218 -0
  115. package/dist/src/native-thread-resume-snapshot-policy.js.map +1 -0
  116. package/dist/src/native-thread-resume-snapshot.d.ts +3 -61
  117. package/dist/src/native-thread-resume-snapshot.js +2 -143
  118. package/dist/src/native-thread-resume-snapshot.js.map +1 -1
  119. package/dist/src/native-thread-transition-application.d.ts +147 -0
  120. package/dist/src/native-thread-transition-application.js +974 -0
  121. package/dist/src/native-thread-transition-application.js.map +1 -0
  122. package/dist/src/native-thread-transition-policy.d.ts +127 -0
  123. package/dist/src/native-thread-transition-policy.js +154 -0
  124. package/dist/src/native-thread-transition-policy.js.map +1 -0
  125. package/dist/src/native-thread-transition-resource-adapter.d.ts +12 -0
  126. package/dist/src/native-thread-transition-resource-adapter.js +44 -0
  127. package/dist/src/native-thread-transition-resource-adapter.js.map +1 -0
  128. package/dist/src/native-thread-transition-settlement-service.d.ts +94 -0
  129. package/dist/src/native-thread-transition-settlement-service.js +134 -0
  130. package/dist/src/native-thread-transition-settlement-service.js.map +1 -0
  131. package/dist/src/native-thread-transition-verification-adapter.d.ts +62 -0
  132. package/dist/src/native-thread-transition-verification-adapter.js +451 -0
  133. package/dist/src/native-thread-transition-verification-adapter.js.map +1 -0
  134. package/dist/src/openclaw-callback-transport.d.ts +64 -0
  135. package/dist/src/openclaw-callback-transport.js +583 -0
  136. package/dist/src/openclaw-callback-transport.js.map +1 -0
  137. package/dist/src/openclaw-plugin-callback-adapter.d.ts +1 -0
  138. package/dist/src/openclaw-plugin-callback-adapter.js +341 -0
  139. package/dist/src/openclaw-plugin-callback-adapter.js.map +1 -0
  140. package/dist/src/openclaw-plugin-command-adapter.d.ts +16 -0
  141. package/dist/src/openclaw-plugin-command-adapter.js +1427 -0
  142. package/dist/src/openclaw-plugin-command-adapter.js.map +1 -0
  143. package/dist/src/openclaw-plugin-helpers.js +48 -38
  144. package/dist/src/openclaw-plugin-helpers.js.map +1 -1
  145. package/dist/src/openclaw-plugin-schemas.d.ts +382 -0
  146. package/dist/src/openclaw-plugin-schemas.js +394 -0
  147. package/dist/src/openclaw-plugin-schemas.js.map +1 -0
  148. package/dist/src/openclaw-plugin-supervisor.d.ts +6 -0
  149. package/dist/src/openclaw-plugin-supervisor.js +85 -0
  150. package/dist/src/openclaw-plugin-supervisor.js.map +1 -0
  151. package/dist/src/openclaw-plugin.js +7 -2212
  152. package/dist/src/openclaw-plugin.js.map +1 -1
  153. package/dist/src/protocol.d.ts +5 -0
  154. package/dist/src/protocol.js +59 -3
  155. package/dist/src/protocol.js.map +1 -1
  156. package/dist/src/session-store.d.ts +1 -0
  157. package/dist/src/session-store.js +84 -106
  158. package/dist/src/session-store.js.map +1 -1
  159. package/dist/src/store.js +2 -1
  160. package/dist/src/store.js.map +1 -1
  161. package/dist/src/terminal-acceptance-application-service.d.ts +65 -0
  162. package/dist/src/terminal-acceptance-application-service.js +63 -0
  163. package/dist/src/terminal-acceptance-application-service.js.map +1 -0
  164. package/dist/src/terminal-acceptance-cli-adapter.d.ts +210 -0
  165. package/dist/src/terminal-acceptance-cli-adapter.js +957 -0
  166. package/dist/src/terminal-acceptance-cli-adapter.js.map +1 -0
  167. package/dist/src/terminal-action-projection.d.ts +291 -0
  168. package/dist/src/terminal-action-projection.js +353 -0
  169. package/dist/src/terminal-action-projection.js.map +1 -0
  170. package/dist/src/terminal-agent-bridge.d.ts +3 -0
  171. package/dist/src/terminal-agent-bridge.js +29 -8
  172. package/dist/src/terminal-agent-bridge.js.map +1 -1
  173. package/dist/src/terminal-authority-policy.d.ts +141 -0
  174. package/dist/src/terminal-authority-policy.js +367 -0
  175. package/dist/src/terminal-authority-policy.js.map +1 -0
  176. package/dist/src/terminal-binding-authority.d.ts +118 -0
  177. package/dist/src/terminal-binding-authority.js +245 -0
  178. package/dist/src/terminal-binding-authority.js.map +1 -0
  179. package/dist/src/terminal-binding-reconciliation-service.d.ts +75 -0
  180. package/dist/src/terminal-binding-reconciliation-service.js +73 -0
  181. package/dist/src/terminal-binding-reconciliation-service.js.map +1 -0
  182. package/dist/src/terminal-command-cli-adapter.d.ts +375 -0
  183. package/dist/src/terminal-command-cli-adapter.js +3128 -0
  184. package/dist/src/terminal-command-cli-adapter.js.map +1 -0
  185. package/dist/src/terminal-control-ref.d.ts +4 -0
  186. package/dist/src/terminal-control-ref.js +11 -8
  187. package/dist/src/terminal-control-ref.js.map +1 -1
  188. package/dist/src/terminal-delegate-cli-adapter.d.ts +41 -0
  189. package/dist/src/terminal-delegate-cli-adapter.js +242 -0
  190. package/dist/src/terminal-delegate-cli-adapter.js.map +1 -0
  191. package/dist/src/terminal-dispatch-abort.d.ts +22 -0
  192. package/dist/src/terminal-dispatch-abort.js +30 -0
  193. package/dist/src/terminal-dispatch-abort.js.map +1 -0
  194. package/dist/src/terminal-dispatch-application.d.ts +115 -0
  195. package/dist/src/terminal-dispatch-application.js +478 -0
  196. package/dist/src/terminal-dispatch-application.js.map +1 -0
  197. package/dist/src/terminal-dispatch-capability.d.ts +63 -0
  198. package/dist/src/terminal-dispatch-capability.js +133 -0
  199. package/dist/src/terminal-dispatch-capability.js.map +1 -0
  200. package/dist/src/terminal-dispatch-completion-cli-adapter.d.ts +22 -0
  201. package/dist/src/terminal-dispatch-completion-cli-adapter.js +96 -0
  202. package/dist/src/terminal-dispatch-completion-cli-adapter.js.map +1 -0
  203. package/dist/src/terminal-dispatch-composition.d.ts +79 -0
  204. package/dist/src/terminal-dispatch-composition.js +2 -0
  205. package/dist/src/terminal-dispatch-composition.js.map +1 -0
  206. package/dist/src/terminal-dispatch-execution.d.ts +290 -0
  207. package/dist/src/terminal-dispatch-execution.js +916 -0
  208. package/dist/src/terminal-dispatch-execution.js.map +1 -0
  209. package/dist/src/terminal-dispatch-ledger-codec.d.ts +110 -0
  210. package/dist/src/terminal-dispatch-ledger-codec.js +399 -0
  211. package/dist/src/terminal-dispatch-ledger-codec.js.map +1 -0
  212. package/dist/src/terminal-dispatch-policy.d.ts +93 -0
  213. package/dist/src/terminal-dispatch-policy.js +122 -0
  214. package/dist/src/terminal-dispatch-policy.js.map +1 -0
  215. package/dist/src/terminal-dispatch-presenter.d.ts +65 -0
  216. package/dist/src/terminal-dispatch-presenter.js +258 -0
  217. package/dist/src/terminal-dispatch-presenter.js.map +1 -0
  218. package/dist/src/terminal-dispatch-receipt.d.ts +79 -0
  219. package/dist/src/terminal-dispatch-receipt.js +314 -0
  220. package/dist/src/terminal-dispatch-receipt.js.map +1 -0
  221. package/dist/src/terminal-dispatch-recovery-cli-adapter.d.ts +132 -0
  222. package/dist/src/terminal-dispatch-recovery-cli-adapter.js +1330 -0
  223. package/dist/src/terminal-dispatch-recovery-cli-adapter.js.map +1 -0
  224. package/dist/src/terminal-dispatch-recovery-service.d.ts +271 -0
  225. package/dist/src/terminal-dispatch-recovery-service.js +374 -0
  226. package/dist/src/terminal-dispatch-recovery-service.js.map +1 -0
  227. package/dist/src/terminal-dispatch-repository-cli-adapter.d.ts +35 -0
  228. package/dist/src/terminal-dispatch-repository-cli-adapter.js +257 -0
  229. package/dist/src/terminal-dispatch-repository-cli-adapter.js.map +1 -0
  230. package/dist/src/terminal-handoff-application-service.d.ts +7 -0
  231. package/dist/src/terminal-handoff-application-service.js +18 -0
  232. package/dist/src/terminal-handoff-application-service.js.map +1 -0
  233. package/dist/src/terminal-handoff-cli-adapter.d.ts +229 -0
  234. package/dist/src/terminal-handoff-cli-adapter.js +1389 -0
  235. package/dist/src/terminal-handoff-cli-adapter.js.map +1 -0
  236. package/dist/src/terminal-handoff-facts.d.ts +12 -0
  237. package/dist/src/terminal-handoff-facts.js +16 -0
  238. package/dist/src/terminal-handoff-facts.js.map +1 -0
  239. package/dist/src/terminal-identity-authority-cli-adapter.d.ts +318 -0
  240. package/dist/src/terminal-identity-authority-cli-adapter.js +1072 -0
  241. package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -0
  242. package/dist/src/terminal-identity-authority-service.d.ts +48 -0
  243. package/dist/src/terminal-identity-authority-service.js +45 -0
  244. package/dist/src/terminal-identity-authority-service.js.map +1 -0
  245. package/dist/src/terminal-list-cli-adapter.d.ts +250 -0
  246. package/dist/src/terminal-list-cli-adapter.js +2226 -0
  247. package/dist/src/terminal-list-cli-adapter.js.map +1 -0
  248. package/dist/src/terminal-list-renderer.d.ts +32 -0
  249. package/dist/src/terminal-list-renderer.js +568 -0
  250. package/dist/src/terminal-list-renderer.js.map +1 -0
  251. package/dist/src/terminal-maintenance-cli-adapter.d.ts +102 -0
  252. package/dist/src/terminal-maintenance-cli-adapter.js +1059 -0
  253. package/dist/src/terminal-maintenance-cli-adapter.js.map +1 -0
  254. package/dist/src/terminal-monitor-application-service.d.ts +275 -0
  255. package/dist/src/terminal-monitor-application-service.js +982 -0
  256. package/dist/src/terminal-monitor-application-service.js.map +1 -0
  257. package/dist/src/terminal-monitor-cli-adapter.d.ts +130 -0
  258. package/dist/src/terminal-monitor-cli-adapter.js +442 -0
  259. package/dist/src/terminal-monitor-cli-adapter.js.map +1 -0
  260. package/dist/src/terminal-monitor-decision-policy.d.ts +98 -0
  261. package/dist/src/terminal-monitor-decision-policy.js +246 -0
  262. package/dist/src/terminal-monitor-decision-policy.js.map +1 -0
  263. package/dist/src/terminal-monitor-launch-plan.d.ts +45 -0
  264. package/dist/src/terminal-monitor-launch-plan.js +94 -0
  265. package/dist/src/terminal-monitor-launch-plan.js.map +1 -0
  266. package/dist/src/terminal-monitor-ownership-policy.d.ts +31 -0
  267. package/dist/src/terminal-monitor-ownership-policy.js +64 -0
  268. package/dist/src/terminal-monitor-ownership-policy.js.map +1 -0
  269. package/dist/src/terminal-monitor-poll-policy.d.ts +48 -0
  270. package/dist/src/terminal-monitor-poll-policy.js +67 -0
  271. package/dist/src/terminal-monitor-poll-policy.js.map +1 -0
  272. package/dist/src/terminal-monitor-reconciliation-eligibility.d.ts +53 -0
  273. package/dist/src/terminal-monitor-reconciliation-eligibility.js +114 -0
  274. package/dist/src/terminal-monitor-reconciliation-eligibility.js.map +1 -0
  275. package/dist/src/terminal-monitor-state-cli-adapter.d.ts +106 -0
  276. package/dist/src/terminal-monitor-state-cli-adapter.js +1501 -0
  277. package/dist/src/terminal-monitor-state-cli-adapter.js.map +1 -0
  278. package/dist/src/terminal-monitor-state-reconciliation-service.d.ts +87 -0
  279. package/dist/src/terminal-monitor-state-reconciliation-service.js +106 -0
  280. package/dist/src/terminal-monitor-state-reconciliation-service.js.map +1 -0
  281. package/dist/src/terminal-monitor-supervision-cli-adapter.d.ts +122 -0
  282. package/dist/src/terminal-monitor-supervision-cli-adapter.js +685 -0
  283. package/dist/src/terminal-monitor-supervision-cli-adapter.js.map +1 -0
  284. package/dist/src/terminal-process-facts.d.ts +2 -0
  285. package/dist/src/terminal-process-facts.js +19 -0
  286. package/dist/src/terminal-process-facts.js.map +1 -0
  287. package/dist/src/terminal-process-source.d.ts +6 -4
  288. package/dist/src/terminal-process-source.js +25 -20
  289. package/dist/src/terminal-process-source.js.map +1 -1
  290. package/dist/src/terminal-runtime-cli-adapter.d.ts +80 -0
  291. package/dist/src/terminal-runtime-cli-adapter.js +488 -0
  292. package/dist/src/terminal-runtime-cli-adapter.js.map +1 -0
  293. package/dist/src/terminal-scoped-approval-authority.d.ts +62 -0
  294. package/dist/src/terminal-scoped-approval-authority.js +281 -0
  295. package/dist/src/terminal-scoped-approval-authority.js.map +1 -0
  296. package/dist/src/terminal-selector-projection-service.d.ts +26 -0
  297. package/dist/src/terminal-selector-projection-service.js +81 -0
  298. package/dist/src/terminal-selector-projection-service.js.map +1 -0
  299. package/dist/src/terminal-status-cli-adapter.d.ts +116 -0
  300. package/dist/src/terminal-status-cli-adapter.js +495 -0
  301. package/dist/src/terminal-status-cli-adapter.js.map +1 -0
  302. package/dist/src/terminal-status-facts.d.ts +56 -0
  303. package/dist/src/terminal-status-facts.js +199 -0
  304. package/dist/src/terminal-status-facts.js.map +1 -0
  305. package/dist/src/terminal-submission-acceptance.d.ts +6 -148
  306. package/dist/src/terminal-submission-acceptance.js +2 -229
  307. package/dist/src/terminal-submission-acceptance.js.map +1 -1
  308. package/dist/src/terminal-submission-facts.d.ts +123 -0
  309. package/dist/src/terminal-submission-facts.js +205 -0
  310. package/dist/src/terminal-submission-facts.js.map +1 -0
  311. package/dist/src/terminal-turn-binding-authority-cli-adapter.d.ts +14 -0
  312. package/dist/src/terminal-turn-binding-authority-cli-adapter.js +90 -0
  313. package/dist/src/terminal-turn-binding-authority-cli-adapter.js.map +1 -0
  314. package/dist/src/value-guards.d.ts +4 -0
  315. package/dist/src/value-guards.js +12 -0
  316. package/dist/src/value-guards.js.map +1 -0
  317. package/dist/src/verified-dead-agent-policy.d.ts +192 -0
  318. package/dist/src/verified-dead-agent-policy.js +262 -0
  319. package/dist/src/verified-dead-agent-policy.js.map +1 -0
  320. package/docs/quickstart-tmux.md +1 -1
  321. package/package.json +3 -1
  322. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +1 -1
@@ -0,0 +1,199 @@
1
+ import { isExecutorKind } from "./executors.js";
2
+ import { executorForConversation, sessionIdForConversation, turnIdForConversation } from "./protocol.js";
3
+ import { isRecord, nonBlankString as stringValue } from "./value-guards.js";
4
+ export function summarizeConversation(conversation, ports) {
5
+ const executor = executorForConversation(conversation);
6
+ const callbackDelivery = isRecord(conversation.callback_delivery)
7
+ ? conversation.callback_delivery
8
+ : undefined;
9
+ const callbackDisposition = callbackDelivery
10
+ ? ports.callbackRetryDisposition(callbackDelivery)
11
+ : undefined;
12
+ return {
13
+ session_id: sessionIdForConversation(conversation),
14
+ turn_id: turnIdForConversation(conversation),
15
+ conversation_id: conversation.conversation_id,
16
+ agent: executor.kind,
17
+ executor,
18
+ session: executor.session,
19
+ status: conversation.status,
20
+ request: conversation.user_request,
21
+ workspace: conversation.workspace,
22
+ openclaw_session: conversation.openclaw_session,
23
+ response_rounds_used: conversation.response_rounds_used,
24
+ soft_limit: conversation.soft_limit,
25
+ hard_limit: conversation.hard_limit,
26
+ created_at: conversation.created_at,
27
+ updated_at: conversation.updated_at,
28
+ idle_since: conversation.idle_since,
29
+ closed_at: conversation.closed_at,
30
+ ...(callbackDelivery
31
+ ? {
32
+ callback_delivery: {
33
+ status: callbackDelivery.status,
34
+ attempts: callbackDelivery.attempts,
35
+ attempt_state: callbackDisposition?.state,
36
+ attempt_pid: callbackDelivery.attempt_pid,
37
+ lease_expires_at: callbackDelivery.attempt_lease_expires_at,
38
+ next_attempt_at: callbackDelivery.next_attempt_at,
39
+ last_error: callbackDelivery.last_error === undefined
40
+ ? undefined
41
+ : ports.textSummary(String(callbackDelivery.last_error))
42
+ }
43
+ }
44
+ : {}),
45
+ state_path: conversation.state_path,
46
+ event_log_path: conversation.event_log_path
47
+ };
48
+ }
49
+ export function isDiscoverableTmuxConversation(conversation) {
50
+ if (!isRecord(conversation) || !isRecord(conversation.executor)) {
51
+ return false;
52
+ }
53
+ const kind = stringValue(conversation.executor.kind)?.toLowerCase();
54
+ return kind !== undefined &&
55
+ isExecutorKind(kind) &&
56
+ conversation.executor.transport === "tmux";
57
+ }
58
+ export function persistedExecutorLogFields(conversation) {
59
+ if (isDiscoverableTmuxConversation(conversation)) {
60
+ const executor = executorForConversation(conversation);
61
+ return {
62
+ agent: executor.kind,
63
+ executor_session: executor.session
64
+ };
65
+ }
66
+ const rawExecutor = isRecord(conversation?.executor) ? conversation.executor : {};
67
+ return {
68
+ agent: stringValue(rawExecutor.kind) ?? "unsupported",
69
+ executor_session: stringValue(rawExecutor.session)
70
+ };
71
+ }
72
+ export function summarizeEvent(event) {
73
+ return {
74
+ ts: event.ts,
75
+ event: event.event,
76
+ from: event.from,
77
+ to: event.to,
78
+ type: event.type,
79
+ status: event.status,
80
+ round: event.round,
81
+ body: typeof event.body === "string" ? event.body.slice(0, 500) : undefined
82
+ };
83
+ }
84
+ export function codexTerminalContextFromHistory(input) {
85
+ const { id, confidence, match, process, context, terminalControl, terminalStatus, limitations, candidates } = input;
86
+ return {
87
+ conversation_id: id,
88
+ source: "terminal_control",
89
+ confidence,
90
+ match,
91
+ about: rolloutAbout(context, terminalStatus),
92
+ codex_session: context.source,
93
+ evidence: {
94
+ process,
95
+ terminal_control: terminalControl,
96
+ terminal_status: terminalStatus,
97
+ initial_request: bestSessionIntent(context),
98
+ title: context.source.title,
99
+ recent_messages: visibleRolloutMessages(context).slice(-8),
100
+ recent_commands: context.commands.slice(-8),
101
+ candidates
102
+ },
103
+ limitations
104
+ };
105
+ }
106
+ export function managedConversationAbout(conversation, events, terminalStatus) {
107
+ const request = truncateText(String(conversation.user_request ?? "").trim(), 220);
108
+ const recent = recentMessageEvidence(events).at(-1)?.body;
109
+ const parts = [
110
+ request ? `Initial request: ${request}` : undefined,
111
+ recent ? `Latest visible message: ${truncateText(recent, 180)}` : undefined,
112
+ terminalStatus?.activity_state
113
+ ? `Current terminal state: ${terminalStatus.activity_state}.`
114
+ : undefined
115
+ ].filter(Boolean);
116
+ return parts.length > 0
117
+ ? parts.join(" ")
118
+ : "No durable task content is available for this AKK-managed session.";
119
+ }
120
+ export function rolloutAbout(context, terminalStatus) {
121
+ const title = truncateText(String(context.source.title ?? "").trim(), 180);
122
+ const intent = bestSessionIntent(context);
123
+ const latestAssistant = [...visibleRolloutMessages(context)].reverse()
124
+ .find((message) => message.role === "assistant")?.text;
125
+ const latestCommand = context.commands.at(-1)?.command;
126
+ const parts = [
127
+ intent
128
+ ? `Initial request: ${truncateText(intent, 220)}`
129
+ : title ? `Codex title: ${title}` : undefined,
130
+ latestAssistant
131
+ ? `Latest visible progress: ${truncateText(latestAssistant, 180)}`
132
+ : undefined,
133
+ latestCommand
134
+ ? `Recent command: ${truncateText(latestCommand, 140)}`
135
+ : undefined,
136
+ terminalStatus?.activity_state
137
+ ? `Current terminal state: ${terminalStatus.activity_state}.`
138
+ : undefined
139
+ ].filter(Boolean);
140
+ return parts.length > 0
141
+ ? parts.join(" ")
142
+ : "Codex history was found, but it did not include enough visible message content to summarize the session.";
143
+ }
144
+ export function screenOnlyAbout(input) {
145
+ const { process, terminalStatus } = input;
146
+ const activity = terminalStatus?.activity_reason ?? terminalStatus?.activity_state;
147
+ const excerpt = terminalStatus?.screen?.excerpt;
148
+ const parts = [
149
+ process?.cwd ? `This Codex process is running in ${process.cwd}.` : undefined,
150
+ activity ? `Terminal activity: ${truncateText(String(activity), 180)}` : undefined,
151
+ excerpt ? `Visible screen: ${truncateText(String(excerpt), 220)}` : undefined
152
+ ].filter(Boolean);
153
+ return parts.length > 0
154
+ ? parts.join(" ")
155
+ : "Only active process metadata is available; no Codex conversation history or terminal screen content could be read.";
156
+ }
157
+ export function bestSessionIntent(context) {
158
+ const firstUser = visibleRolloutMessages(context)
159
+ .find((message) => message.role === "user")?.text;
160
+ if (firstUser) {
161
+ return firstUser;
162
+ }
163
+ const title = cleanIntentText(context.source.title);
164
+ if (title) {
165
+ return title;
166
+ }
167
+ return undefined;
168
+ }
169
+ export function visibleRolloutMessages(context) {
170
+ return context.messages.filter((message) => !isEnvironmentContextMessage(message.text));
171
+ }
172
+ export function cleanIntentText(value) {
173
+ const text = String(value ?? "").replace(/\s+/g, " ").trim();
174
+ return text && !isEnvironmentContextMessage(text) ? text : undefined;
175
+ }
176
+ export function isEnvironmentContextMessage(value) {
177
+ return /^\s*<environment_context[\s>]/u.test(String(value ?? ""));
178
+ }
179
+ function recentMessageEvidence(events) {
180
+ return events
181
+ .filter((event) => event.event === "message" && typeof event.body === "string")
182
+ .slice(-8)
183
+ .map((event) => ({
184
+ ts: event.ts,
185
+ from: event.from,
186
+ to: event.to,
187
+ type: event.type,
188
+ round: event.round,
189
+ body: truncateText(event.body, 800)
190
+ }));
191
+ }
192
+ export function truncateText(value, maxLength) {
193
+ const text = String(value ?? "").replace(/\s+/g, " ").trim();
194
+ if (text.length <= maxLength) {
195
+ return text;
196
+ }
197
+ return `${text.slice(0, Math.max(0, maxLength - 3))}...`;
198
+ }
199
+ //# sourceMappingURL=terminal-status-facts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-status-facts.js","sourceRoot":"","sources":["../../src/terminal-status-facts.ts"],"names":[],"mappings":"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"}
@@ -1,101 +1,8 @@
1
- import type { CodexOpenRootRolloutIdentity, CodexOpenRootRolloutInventory } from "./agent-session-provider.js";
1
+ import type { CodexOpenRootRolloutInventory } from "./agent-session-provider.js";
2
2
  import type { TerminalCompletionEvidence } from "./terminal-agent-adapter.js";
3
- export interface TerminalSubmissionAcceptanceEvidence {
4
- source: "codex_rollout" | "claude_transcript";
5
- kind: "native_user_turn";
6
- nativeThreadId: string;
7
- requestHash: string;
8
- acceptanceId: string;
9
- acceptedAt?: string;
10
- anchorFingerprint: string;
11
- evidenceFingerprint: string;
12
- metadata?: Record<string, string | number>;
13
- }
14
- export interface CodexRolloutIdentity {
15
- fd: string;
16
- device: string;
17
- inode: string;
18
- path: string;
19
- }
20
- interface CodexRolloutAcceptanceAnchorBase {
21
- schema: "agent-knock-knock/codex-rollout-acceptance-anchor";
22
- process_uuid: string;
23
- process_birth: string;
24
- captured_at: string;
25
- file_existed: boolean;
26
- offset_bytes: number;
27
- anchor_fingerprint: string;
28
- }
29
- export interface CodexBoundRolloutAcceptanceAnchor extends CodexRolloutAcceptanceAnchorBase {
30
- version: 1;
31
- native_thread_id: string;
32
- mode: "existing" | "pre_materialization";
33
- rollout?: CodexRolloutIdentity;
34
- expected_empty_native_session?: true;
35
- }
36
- /**
37
- * A process-bound anchor for a genuinely virgin Codex TUI. Codex does not
38
- * assign a native thread UUID or open a rollout until its first prompt is
39
- * submitted, so the UUID cannot safely be named before transport. The exact
40
- * process incarnation is still pinned here; acceptance must additionally
41
- * prove the newly materialized UUID, rollout, and request hash.
42
- */
43
- export interface CodexVirginRolloutAcceptanceAnchor extends CodexRolloutAcceptanceAnchorBase {
44
- version: 2;
45
- mode: "pre_materialization";
46
- native_thread_id?: never;
47
- native_thread_binding: "post_submission";
48
- file_existed: false;
49
- offset_bytes: 0;
50
- rollout?: never;
51
- expected_empty_native_session: true;
52
- }
53
- export interface CodexCandidateRolloutAcceptanceAnchorEntry {
54
- native_thread_id: string;
55
- rollout: CodexRolloutIdentity;
56
- offset_bytes: number;
57
- }
58
- /**
59
- * A process-bound pre-submit snapshot for a terminal whose open-root
60
- * inventory is exact but cannot name one foreground root. Existing roots are
61
- * fenced at their byte offsets; roots opened after capture are admitted only
62
- * with a fresh exact session_meta header. No candidate is selected by mtime.
63
- */
64
- export interface CodexCandidateSetRolloutAcceptanceAnchor extends CodexRolloutAcceptanceAnchorBase {
65
- version: 3;
66
- mode: "candidate_set";
67
- native_thread_binding: "post_submission";
68
- file_existed: false;
69
- offset_bytes: 0;
70
- zero_file_baseline: boolean;
71
- inventory_pid: number;
72
- inventory_cwd?: string;
73
- inventory_fingerprint: string;
74
- candidate_rollouts: CodexCandidateRolloutAcceptanceAnchorEntry[];
75
- }
76
- export type CodexRolloutAcceptanceAnchor = CodexBoundRolloutAcceptanceAnchor | CodexVirginRolloutAcceptanceAnchor | CodexCandidateSetRolloutAcceptanceAnchor;
77
- export type CodexCandidateSetRolloutAcceptanceResult = {
78
- status: "accepted";
79
- identity: CodexOpenRootRolloutIdentity;
80
- evidence: TerminalSubmissionAcceptanceEvidence;
81
- } | {
82
- status: "pending";
83
- inspected_candidates: number;
84
- exact_matches: number;
85
- incomplete_candidates?: number;
86
- } | {
87
- status: "uncertain";
88
- code: "multiple_exact_request_acceptances" | "candidate_inventory_changed" | "candidate_scan_invalid";
89
- reason: string;
90
- inspected_candidates: number;
91
- exact_matches: number;
92
- };
93
- export interface CodexRolloutAcceptanceIdentity {
94
- sessionId: string;
95
- processUuid?: string;
96
- processBirth?: string;
97
- rollout?: CodexRolloutIdentity;
98
- }
3
+ import { validateCodexRolloutAcceptanceAnchor, validateTerminalSubmissionAcceptanceEvidence, type CaptureCodexRolloutAcceptanceAnchorOptions, type CodexCandidateSetRolloutAcceptanceAnchor, type CodexCandidateSetRolloutAcceptanceRequest, type CodexCandidateSetRolloutAcceptanceResult, type CodexRolloutAcceptanceAnchor, type CodexRolloutAcceptanceIdentity, type CodexRolloutAcceptanceRequest, type TerminalSubmissionAcceptanceEvidence } from "./terminal-submission-facts.js";
4
+ export { validateCodexRolloutAcceptanceAnchor, validateTerminalSubmissionAcceptanceEvidence };
5
+ export type { CodexBoundRolloutAcceptanceAnchor, CodexCandidateRolloutAcceptanceAnchorEntry, CodexCandidateSetRolloutAcceptanceAnchor, CodexRolloutAcceptanceAnchor, CodexCandidateSetRolloutAcceptanceResult, CodexRolloutAcceptanceIdentity, CodexRolloutIdentity, TerminalSubmissionAcceptanceEvidence, CodexVirginRolloutAcceptanceAnchor } from "./terminal-submission-facts.js";
99
6
  export type CodexBoundRolloutCompletionCode = "completion_found" | "exact_turn_not_complete" | "partial_rollout_record" | "rollout_changed_during_scan" | "invalid_anchor" | "invalid_acceptance_evidence" | "acceptance_anchor_mismatch" | "acceptance_turn_mismatch" | "binding_identity_mismatch" | "rollout_identity_mismatch" | "rollout_unreadable" | "rollout_truncated" | "scan_limit_exceeded" | "invalid_rollout_jsonl" | "duplicate_exact_completion" | "invalid_exact_completion";
100
7
  export interface CodexBoundRolloutCompletionDiagnostics {
101
8
  detector: "codex_exact_bound_rollout";
@@ -121,60 +28,13 @@ export type CodexBoundRolloutCompletionResult = {
121
28
  status: "failure";
122
29
  diagnostics: CodexBoundRolloutCompletionDiagnostics;
123
30
  };
124
- export declare function validateTerminalSubmissionAcceptanceEvidence(value: unknown, expected: {
125
- source: TerminalSubmissionAcceptanceEvidence["source"];
126
- nativeThreadId: string;
127
- requestHash: string;
128
- }): TerminalSubmissionAcceptanceEvidence;
129
- export declare function terminalSubmissionReplayReceipt(options: {
130
- proofLevel: "submitted" | "enter_dispatched" | "agent_accepted";
131
- evidence?: unknown;
132
- expected: {
133
- source: TerminalSubmissionAcceptanceEvidence["source"];
134
- nativeThreadId: string;
135
- requestHash: string;
136
- };
137
- }): {
138
- replayed: true;
139
- delivered: boolean;
140
- status: "async_pending" | "submission_pending_acceptance" | "submission_uncertain";
141
- submission_outcome: "agent_accepted" | "pending_acceptance" | "uncertain";
142
- delivery_receipt: "agent_accepted" | "enter_dispatched" | "submitted";
143
- do_not_retry?: true;
144
- evidence_error?: string;
145
- };
146
- type CaptureCodexRolloutAcceptanceAnchorOptions = {
147
- processUuid: string;
148
- processBirth: string;
149
- now?: Date;
150
- } & ({
151
- nativeThreadId: string;
152
- mode: "existing";
153
- rollout: CodexRolloutIdentity;
154
- } | {
155
- nativeThreadId: string;
156
- mode: "pre_materialization";
157
- expectedEmptyNativeSession: true;
158
- } | {
159
- nativeThreadId?: undefined;
160
- mode: "pre_materialization";
161
- expectedEmptyNativeSession: true;
162
- });
163
31
  export declare function captureCodexRolloutAcceptanceAnchor(options: CaptureCodexRolloutAcceptanceAnchorOptions): CodexRolloutAcceptanceAnchor;
164
32
  export declare function captureCodexCandidateSetRolloutAcceptanceAnchor({ inventory: inventoryValue, now }: {
165
33
  inventory: CodexOpenRootRolloutInventory;
166
34
  now?: Date;
167
35
  }): CodexCandidateSetRolloutAcceptanceAnchor;
168
- export declare function detectCodexCandidateSetRolloutAcceptance({ anchor: anchorValue, currentInventory: inventoryValue, requestHash: requestHashValue }: {
169
- anchor: CodexCandidateSetRolloutAcceptanceAnchor;
170
- currentInventory: CodexOpenRootRolloutInventory;
171
- requestHash: string;
172
- }): CodexCandidateSetRolloutAcceptanceResult;
173
- export declare function detectCodexRolloutAcceptance(options: {
174
- anchor: CodexRolloutAcceptanceAnchor;
175
- currentIdentity: CodexRolloutAcceptanceIdentity;
176
- requestHash: string;
177
- }): TerminalSubmissionAcceptanceEvidence | undefined;
36
+ export declare function detectCodexCandidateSetRolloutAcceptance({ anchor: anchorValue, currentInventory: inventoryValue, requestHash: requestHashValue }: CodexCandidateSetRolloutAcceptanceRequest): CodexCandidateSetRolloutAcceptanceResult;
37
+ export declare function detectCodexRolloutAcceptance(options: CodexRolloutAcceptanceRequest): TerminalSubmissionAcceptanceEvidence | undefined;
178
38
  /**
179
39
  * Scans the exact rollout and native turn proven by terminal acceptance.
180
40
  *
@@ -189,5 +49,3 @@ export declare function detectCodexBoundRolloutCompletion(options: {
189
49
  currentIdentity: CodexRolloutAcceptanceIdentity;
190
50
  requestHash: string;
191
51
  }): CodexBoundRolloutCompletionResult;
192
- export declare function validateCodexRolloutAcceptanceAnchor(value: CodexRolloutAcceptanceAnchor): CodexRolloutAcceptanceAnchor;
193
- export {};
@@ -2,108 +2,11 @@ import { createHash } from "node:crypto";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { redactString } from "./runtime-log.js";
5
- export function validateTerminalSubmissionAcceptanceEvidence(value, expected) {
6
- if (!isRecord(value)) {
7
- throw new Error("native acceptance evidence is unavailable");
8
- }
9
- const allowedKeys = new Set([
10
- "source",
11
- "kind",
12
- "nativeThreadId",
13
- "requestHash",
14
- "acceptanceId",
15
- "acceptedAt",
16
- "anchorFingerprint",
17
- "evidenceFingerprint",
18
- "metadata"
19
- ]);
20
- if (Object.keys(value).some((key) => !allowedKeys.has(key))) {
21
- throw new Error("native acceptance evidence contains unsupported fields");
22
- }
23
- if (value.source !== expected.source || value.kind !== "native_user_turn") {
24
- throw new Error("native acceptance evidence has the wrong agent or kind");
25
- }
26
- if (requiredString(value.nativeThreadId, "native acceptance thread") !==
27
- requiredString(expected.nativeThreadId, "expected native acceptance thread") ||
28
- sha256Value(value.requestHash, "native acceptance request hash") !==
29
- sha256Value(expected.requestHash, "expected native acceptance request hash")) {
30
- throw new Error("native acceptance evidence does not match the exact request binding");
31
- }
32
- requiredString(value.acceptanceId, "native acceptance id");
33
- sha256Value(value.anchorFingerprint, "native acceptance anchor fingerprint");
34
- sha256Value(value.evidenceFingerprint, "native acceptance evidence fingerprint");
35
- if (value.acceptedAt !== undefined && !validTimestamp(value.acceptedAt)) {
36
- throw new Error("native acceptance evidence timestamp is invalid");
37
- }
38
- if (value.metadata !== undefined) {
39
- if (!isRecord(value.metadata)) {
40
- throw new Error("native acceptance evidence metadata is invalid");
41
- }
42
- const allowedMetadata = value.source === "codex_rollout"
43
- ? new Set([
44
- "turn_id",
45
- "anchor_offset_bytes",
46
- "observed_end_offset_bytes"
47
- ])
48
- : new Set([
49
- "prompt_uuid",
50
- "claude_version",
51
- "transcript_file_id",
52
- "anchor_offset_bytes",
53
- "observed_end_offset_bytes",
54
- "agent_started_at_ms"
55
- ]);
56
- for (const [key, item] of Object.entries(value.metadata)) {
57
- if (!allowedMetadata.has(key) ||
58
- !(typeof item === "string" ||
59
- (typeof item === "number" && Number.isFinite(item)))) {
60
- throw new Error("native acceptance evidence metadata is not allowlisted");
61
- }
62
- }
63
- }
64
- const { evidenceFingerprint, ...base } = value;
65
- if (fingerprint(base) !== evidenceFingerprint) {
66
- throw new Error("native acceptance evidence fingerprint does not match");
67
- }
68
- return value;
69
- }
70
- export function terminalSubmissionReplayReceipt(options) {
71
- if (options.proofLevel !== "agent_accepted") {
72
- return {
73
- replayed: true,
74
- delivered: false,
75
- status: "submission_pending_acceptance",
76
- submission_outcome: "pending_acceptance",
77
- delivery_receipt: options.proofLevel,
78
- do_not_retry: true
79
- };
80
- }
81
- try {
82
- validateTerminalSubmissionAcceptanceEvidence(options.evidence, options.expected);
83
- return {
84
- replayed: true,
85
- delivered: true,
86
- status: "async_pending",
87
- submission_outcome: "agent_accepted",
88
- delivery_receipt: "agent_accepted"
89
- };
90
- }
91
- catch (error) {
92
- return {
93
- replayed: true,
94
- delivered: false,
95
- status: "submission_uncertain",
96
- submission_outcome: "uncertain",
97
- delivery_receipt: "enter_dispatched",
98
- do_not_retry: true,
99
- evidence_error: error instanceof Error ? error.message : String(error)
100
- };
101
- }
102
- }
5
+ import { exactNativeThreadId, fingerprint, normalizedRolloutIdentity, parsedInteger, requiredString, sha256Value, validTimestamp, validateCodexRolloutAcceptanceAnchor, validateTerminalSubmissionAcceptanceEvidence } from "./terminal-submission-facts.js";
6
+ export { validateCodexRolloutAcceptanceAnchor, validateTerminalSubmissionAcceptanceEvidence };
103
7
  const CODEX_ACCEPTANCE_MAX_BYTES = 16 * 1024 * 1024;
104
8
  const CODEX_COMPLETION_MAX_BYTES = 256 * 1024 * 1024;
105
9
  const CODEX_COMPLETION_MAX_TEXT_LENGTH = 4000;
106
- const NATIVE_THREAD_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu;
107
10
  const NO_FOLLOW_FLAG = typeof fs.constants.O_NOFOLLOW === "number"
108
11
  ? fs.constants.O_NOFOLLOW
109
12
  : 0;
@@ -898,91 +801,6 @@ function assertVirginRolloutHeader(options) {
898
801
  throw new Error("virgin Codex rollout predates its terminal submission anchor");
899
802
  }
900
803
  }
901
- export function validateCodexRolloutAcceptanceAnchor(value) {
902
- if (!isRecord(value) ||
903
- value.schema !== "agent-knock-knock/codex-rollout-acceptance-anchor" ||
904
- (value.version !== 1 && value.version !== 2 && value.version !== 3) ||
905
- !["existing", "pre_materialization", "candidate_set"].includes(String(value.mode)) ||
906
- !Number.isSafeInteger(value.offset_bytes) ||
907
- value.offset_bytes < 0 ||
908
- typeof value.file_existed !== "boolean") {
909
- throw new Error("Codex rollout acceptance anchor is invalid");
910
- }
911
- if (value.version === 1) {
912
- exactNativeThreadId(value.native_thread_id);
913
- if ("native_thread_binding" in value) {
914
- throw new Error("bound Codex acceptance anchor has deferred binding state");
915
- }
916
- }
917
- else if (value.version === 2 && (value.mode !== "pre_materialization" ||
918
- value.native_thread_binding !== "post_submission" ||
919
- "native_thread_id" in value)) {
920
- throw new Error("virgin Codex acceptance anchor is inconsistent");
921
- }
922
- else if (value.version === 3 && (value.mode !== "candidate_set" ||
923
- value.native_thread_binding !== "post_submission" ||
924
- "native_thread_id" in value ||
925
- value.file_existed !== false ||
926
- value.offset_bytes !== 0 ||
927
- typeof value.zero_file_baseline !== "boolean" ||
928
- !Number.isSafeInteger(value.inventory_pid) ||
929
- value.inventory_pid <= 1 ||
930
- (value.inventory_cwd !== undefined &&
931
- !path.isAbsolute(value.inventory_cwd)) ||
932
- !/^[0-9a-f]{64}$/u.test(String(value.inventory_fingerprint)) ||
933
- !Array.isArray(value.candidate_rollouts) ||
934
- value.candidate_rollouts.length > 128 ||
935
- value.zero_file_baseline !== (value.candidate_rollouts.length === 0))) {
936
- throw new Error("candidate-set Codex acceptance anchor is inconsistent");
937
- }
938
- requiredString(value.process_uuid, "Codex process UUID");
939
- requiredString(value.process_birth, "Codex process birth");
940
- if (!validTimestamp(value.captured_at)) {
941
- throw new Error("Codex acceptance capture timestamp is invalid");
942
- }
943
- sha256Value(value.anchor_fingerprint, "Codex acceptance anchor fingerprint");
944
- const { anchor_fingerprint: _fingerprint, ...base } = value;
945
- if (fingerprint(base) !== value.anchor_fingerprint) {
946
- throw new Error("Codex rollout acceptance anchor fingerprint does not match");
947
- }
948
- if (value.version === 3) {
949
- const seenThreads = new Set();
950
- const seenFiles = new Set();
951
- for (const candidate of value.candidate_rollouts) {
952
- if (!isRecord(candidate)) {
953
- throw new Error("Codex candidate-set rollout entry is invalid");
954
- }
955
- const nativeThreadId = exactNativeThreadId(candidate.native_thread_id);
956
- const rollout = normalizedRolloutIdentity(candidate.rollout);
957
- if (!Number.isSafeInteger(candidate.offset_bytes) ||
958
- candidate.offset_bytes < 0 ||
959
- seenThreads.has(nativeThreadId) ||
960
- seenFiles.has(`${rollout.device}:${rollout.inode}`)) {
961
- throw new Error("Codex candidate-set rollout entries are ambiguous");
962
- }
963
- seenThreads.add(nativeThreadId);
964
- seenFiles.add(`${rollout.device}:${rollout.inode}`);
965
- }
966
- return value;
967
- }
968
- const rollout = "rollout" in value ? value.rollout : undefined;
969
- if (value.file_existed !== (value.mode === "existing") ||
970
- value.file_existed !== Boolean(rollout)) {
971
- throw new Error("Codex rollout acceptance anchor file state is inconsistent");
972
- }
973
- if (value.mode === "existing" && rollout) {
974
- normalizedRolloutIdentity(rollout);
975
- if (value.expected_empty_native_session !== undefined) {
976
- throw new Error("existing Codex acceptance anchor has pre-materialization state");
977
- }
978
- }
979
- else if (value.offset_bytes !== 0 ||
980
- rollout !== undefined ||
981
- value.expected_empty_native_session !== true) {
982
- throw new Error("Codex pre-materialization acceptance anchor is inconsistent");
983
- }
984
- return value;
985
- }
986
804
  function validateCodexOpenRootInventoryForAcceptance(value) {
987
805
  if (!isRecord(value) ||
988
806
  value.schema !==
@@ -1087,65 +905,20 @@ function sameStableFile(left, right) {
1087
905
  left.mtimeMs === right.mtimeMs &&
1088
906
  left.ctimeMs === right.ctimeMs;
1089
907
  }
1090
- function normalizedRolloutIdentity(value) {
1091
- const normalized = {
1092
- fd: requiredString(value.fd, "Codex rollout descriptor"),
1093
- device: requiredString(value.device, "Codex rollout device"),
1094
- inode: requiredString(value.inode, "Codex rollout inode"),
1095
- path: requiredString(value.path, "Codex rollout path")
1096
- };
1097
- parsedInteger(normalized.device);
1098
- parsedInteger(normalized.inode);
1099
- return normalized;
1100
- }
1101
908
  function sameRolloutIdentity(left, right) {
1102
909
  return left.fd === right.fd &&
1103
910
  left.device === right.device &&
1104
911
  left.inode === right.inode &&
1105
912
  left.path === right.path;
1106
913
  }
1107
- function exactNativeThreadId(value) {
1108
- const text = requiredString(value, "Codex native thread ID").toLowerCase();
1109
- if (!NATIVE_THREAD_ID_PATTERN.test(text)) {
1110
- throw new Error("Codex native thread ID is not an exact UUID");
1111
- }
1112
- return text;
1113
- }
1114
- function parsedInteger(value) {
1115
- try {
1116
- return BigInt(value);
1117
- }
1118
- catch {
1119
- throw new Error("Codex rollout file identity is not numeric");
1120
- }
1121
- }
1122
- function sha256Value(value, label) {
1123
- const text = requiredString(value, label).toLowerCase();
1124
- if (!/^[0-9a-f]{64}$/u.test(text)) {
1125
- throw new Error(`${label} is not a SHA-256 value`);
1126
- }
1127
- return text;
1128
- }
1129
- function requiredString(value, label) {
1130
- if (typeof value !== "string" || value.trim().length === 0) {
1131
- throw new Error(`${label} is unavailable`);
1132
- }
1133
- return value.trim();
1134
- }
1135
914
  function optionalString(value) {
1136
915
  return typeof value === "string" && value.trim().length > 0
1137
916
  ? value.trim()
1138
917
  : undefined;
1139
918
  }
1140
- function validTimestamp(value) {
1141
- return typeof value === "string" && Number.isFinite(Date.parse(value));
1142
- }
1143
919
  function fingerprintText(value) {
1144
920
  return createHash("sha256").update(value).digest("hex");
1145
921
  }
1146
- function fingerprint(value) {
1147
- return createHash("sha256").update(JSON.stringify(value)).digest("hex");
1148
- }
1149
922
  function isRecord(value) {
1150
923
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
1151
924
  }