@scotthuang/agent-knock-knock 0.12.11 → 0.12.13

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 (344) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +43 -30
  3. package/dist/src/approval-policy.d.ts +11 -2
  4. package/dist/src/approval-policy.js +33 -7
  5. package/dist/src/approval-policy.js.map +1 -1
  6. package/dist/src/callback-cli-adapter.d.ts +47 -0
  7. package/dist/src/callback-cli-adapter.js +156 -0
  8. package/dist/src/callback-cli-adapter.js.map +1 -0
  9. package/dist/src/callback-outbox-policy.d.ts +95 -0
  10. package/dist/src/callback-outbox-policy.js +149 -0
  11. package/dist/src/callback-outbox-policy.js.map +1 -0
  12. package/dist/src/callback-outbox-service.d.ts +247 -0
  13. package/dist/src/callback-outbox-service.js +1053 -0
  14. package/dist/src/callback-outbox-service.js.map +1 -0
  15. package/dist/src/callback-outbox-settlement.d.ts +54 -0
  16. package/dist/src/callback-outbox-settlement.js +241 -0
  17. package/dist/src/callback-outbox-settlement.js.map +1 -0
  18. package/dist/src/canonical-json.d.ts +1 -0
  19. package/dist/src/canonical-json.js +14 -0
  20. package/dist/src/canonical-json.js.map +1 -0
  21. package/dist/src/claude-lifecycle-compatibility.js +15 -0
  22. package/dist/src/claude-lifecycle-compatibility.js.map +1 -1
  23. package/dist/src/claude-local-transcript-provider.d.ts +82 -1
  24. package/dist/src/claude-local-transcript-provider.js +873 -23
  25. package/dist/src/claude-local-transcript-provider.js.map +1 -1
  26. package/dist/src/cli-command-runtime.d.ts +14 -0
  27. package/dist/src/cli-command-runtime.js +164 -0
  28. package/dist/src/cli-command-runtime.js.map +1 -0
  29. package/dist/src/cli-core.d.ts +4 -42
  30. package/dist/src/cli-core.js +958 -28684
  31. package/dist/src/cli-core.js.map +1 -1
  32. package/dist/src/cli-runtime-context.d.ts +57 -0
  33. package/dist/src/cli-runtime-context.js +118 -0
  34. package/dist/src/cli-runtime-context.js.map +1 -0
  35. package/dist/src/codex-lifecycle-compatibility.js +2 -1
  36. package/dist/src/codex-lifecycle-compatibility.js.map +1 -1
  37. package/dist/src/codex-local-session-provider.d.ts +18 -0
  38. package/dist/src/codex-local-session-provider.js +67 -0
  39. package/dist/src/codex-local-session-provider.js.map +1 -1
  40. package/dist/src/codex-session-provider.js +1 -3
  41. package/dist/src/codex-session-provider.js.map +1 -1
  42. package/dist/src/conversation-trace.d.ts +30 -0
  43. package/dist/src/conversation-trace.js +185 -0
  44. package/dist/src/conversation-trace.js.map +1 -0
  45. package/dist/src/deferred-foreground-application-service.d.ts +84 -0
  46. package/dist/src/deferred-foreground-application-service.js +742 -0
  47. package/dist/src/deferred-foreground-application-service.js.map +1 -0
  48. package/dist/src/deferred-foreground-authority-cli-adapter.d.ts +78 -0
  49. package/dist/src/deferred-foreground-authority-cli-adapter.js +795 -0
  50. package/dist/src/deferred-foreground-authority-cli-adapter.js.map +1 -0
  51. package/dist/src/deferred-foreground-boundary.d.ts +61 -0
  52. package/dist/src/deferred-foreground-boundary.js +2 -0
  53. package/dist/src/deferred-foreground-boundary.js.map +1 -0
  54. package/dist/src/deferred-foreground-capability.d.ts +4 -0
  55. package/dist/src/deferred-foreground-capability.js +184 -0
  56. package/dist/src/deferred-foreground-capability.js.map +1 -0
  57. package/dist/src/deferred-foreground-preparation-cli-adapter.d.ts +53 -0
  58. package/dist/src/deferred-foreground-preparation-cli-adapter.js +210 -0
  59. package/dist/src/deferred-foreground-preparation-cli-adapter.js.map +1 -0
  60. package/dist/src/deferred-foreground-preparation-service.d.ts +72 -0
  61. package/dist/src/deferred-foreground-preparation-service.js +179 -0
  62. package/dist/src/deferred-foreground-preparation-service.js.map +1 -0
  63. package/dist/src/deferred-foreground-recovery-cli-adapter.d.ts +139 -0
  64. package/dist/src/deferred-foreground-recovery-cli-adapter.js +1125 -0
  65. package/dist/src/deferred-foreground-recovery-cli-adapter.js.map +1 -0
  66. package/dist/src/deferred-foreground-recovery-service.d.ts +48 -0
  67. package/dist/src/deferred-foreground-recovery-service.js +91 -0
  68. package/dist/src/deferred-foreground-recovery-service.js.map +1 -0
  69. package/dist/src/deferred-foreground-transfer-policy.d.ts +2 -0
  70. package/dist/src/deferred-foreground-transfer-policy.js +10 -0
  71. package/dist/src/deferred-foreground-transfer-policy.js.map +1 -0
  72. package/dist/src/deferred-foreground-transfer.js +46 -105
  73. package/dist/src/deferred-foreground-transfer.js.map +1 -1
  74. package/dist/src/doctor-capabilities.d.ts +9 -0
  75. package/dist/src/doctor-capabilities.js +22 -0
  76. package/dist/src/doctor-capabilities.js.map +1 -1
  77. package/dist/src/durable-json-file.d.ts +22 -0
  78. package/dist/src/durable-json-file.js +127 -0
  79. package/dist/src/durable-json-file.js.map +1 -0
  80. package/dist/src/file-lock-cli-adapter.d.ts +43 -0
  81. package/dist/src/file-lock-cli-adapter.js +150 -0
  82. package/dist/src/file-lock-cli-adapter.js.map +1 -0
  83. package/dist/src/herdr-terminal-control-provider.js +1 -3
  84. package/dist/src/herdr-terminal-control-provider.js.map +1 -1
  85. package/dist/src/install-doctor-command-adapter.d.ts +17 -0
  86. package/dist/src/install-doctor-command-adapter.js +225 -0
  87. package/dist/src/install-doctor-command-adapter.js.map +1 -0
  88. package/dist/src/live-lifecycle-evidence.js +76 -46
  89. package/dist/src/live-lifecycle-evidence.js.map +1 -1
  90. package/dist/src/live-lifecycle-smoke.js +74 -50
  91. package/dist/src/live-lifecycle-smoke.js.map +1 -1
  92. package/dist/src/managed-session.d.ts +2 -0
  93. package/dist/src/managed-session.js +24 -0
  94. package/dist/src/managed-session.js.map +1 -1
  95. package/dist/src/managed-turn-recovery-service.d.ts +86 -0
  96. package/dist/src/managed-turn-recovery-service.js +145 -0
  97. package/dist/src/managed-turn-recovery-service.js.map +1 -0
  98. package/dist/src/mutation-transaction.d.ts +48 -0
  99. package/dist/src/mutation-transaction.js +73 -0
  100. package/dist/src/mutation-transaction.js.map +1 -0
  101. package/dist/src/native-thread-lifecycle-cli-adapter.d.ts +154 -0
  102. package/dist/src/native-thread-lifecycle-cli-adapter.js +786 -0
  103. package/dist/src/native-thread-lifecycle-cli-adapter.js.map +1 -0
  104. package/dist/src/native-thread-lifecycle-ledger-cli-adapter.d.ts +25 -0
  105. package/dist/src/native-thread-lifecycle-ledger-cli-adapter.js +50 -0
  106. package/dist/src/native-thread-lifecycle-ledger-cli-adapter.js.map +1 -0
  107. package/dist/src/native-thread-lifecycle-query-service.d.ts +75 -0
  108. package/dist/src/native-thread-lifecycle-query-service.js +297 -0
  109. package/dist/src/native-thread-lifecycle-query-service.js.map +1 -0
  110. package/dist/src/native-thread-lifecycle-recovery-adapter.d.ts +45 -0
  111. package/dist/src/native-thread-lifecycle-recovery-adapter.js +154 -0
  112. package/dist/src/native-thread-lifecycle-recovery-adapter.js.map +1 -0
  113. package/dist/src/native-thread-lifecycle-recovery-service.d.ts +211 -0
  114. package/dist/src/native-thread-lifecycle-recovery-service.js +1093 -0
  115. package/dist/src/native-thread-lifecycle-recovery-service.js.map +1 -0
  116. package/dist/src/native-thread-resume-snapshot-policy.d.ts +73 -0
  117. package/dist/src/native-thread-resume-snapshot-policy.js +218 -0
  118. package/dist/src/native-thread-resume-snapshot-policy.js.map +1 -0
  119. package/dist/src/native-thread-resume-snapshot.d.ts +3 -61
  120. package/dist/src/native-thread-resume-snapshot.js +2 -143
  121. package/dist/src/native-thread-resume-snapshot.js.map +1 -1
  122. package/dist/src/native-thread-transition-application.d.ts +147 -0
  123. package/dist/src/native-thread-transition-application.js +974 -0
  124. package/dist/src/native-thread-transition-application.js.map +1 -0
  125. package/dist/src/native-thread-transition-policy.d.ts +127 -0
  126. package/dist/src/native-thread-transition-policy.js +154 -0
  127. package/dist/src/native-thread-transition-policy.js.map +1 -0
  128. package/dist/src/native-thread-transition-resource-adapter.d.ts +12 -0
  129. package/dist/src/native-thread-transition-resource-adapter.js +44 -0
  130. package/dist/src/native-thread-transition-resource-adapter.js.map +1 -0
  131. package/dist/src/native-thread-transition-settlement-service.d.ts +94 -0
  132. package/dist/src/native-thread-transition-settlement-service.js +134 -0
  133. package/dist/src/native-thread-transition-settlement-service.js.map +1 -0
  134. package/dist/src/native-thread-transition-verification-adapter.d.ts +62 -0
  135. package/dist/src/native-thread-transition-verification-adapter.js +451 -0
  136. package/dist/src/native-thread-transition-verification-adapter.js.map +1 -0
  137. package/dist/src/openclaw-callback-transport.d.ts +69 -0
  138. package/dist/src/openclaw-callback-transport.js +583 -0
  139. package/dist/src/openclaw-callback-transport.js.map +1 -0
  140. package/dist/src/openclaw-plugin-callback-adapter.d.ts +1 -0
  141. package/dist/src/openclaw-plugin-callback-adapter.js +423 -0
  142. package/dist/src/openclaw-plugin-callback-adapter.js.map +1 -0
  143. package/dist/src/openclaw-plugin-command-adapter.d.ts +16 -0
  144. package/dist/src/openclaw-plugin-command-adapter.js +1868 -0
  145. package/dist/src/openclaw-plugin-command-adapter.js.map +1 -0
  146. package/dist/src/openclaw-plugin-helpers.d.ts +27 -4
  147. package/dist/src/openclaw-plugin-helpers.js +356 -81
  148. package/dist/src/openclaw-plugin-helpers.js.map +1 -1
  149. package/dist/src/openclaw-plugin-schemas.d.ts +358 -0
  150. package/dist/src/openclaw-plugin-schemas.js +366 -0
  151. package/dist/src/openclaw-plugin-schemas.js.map +1 -0
  152. package/dist/src/openclaw-plugin-supervisor.d.ts +6 -0
  153. package/dist/src/openclaw-plugin-supervisor.js +123 -0
  154. package/dist/src/openclaw-plugin-supervisor.js.map +1 -0
  155. package/dist/src/openclaw-plugin.js +7 -2212
  156. package/dist/src/openclaw-plugin.js.map +1 -1
  157. package/dist/src/openclaw-private-authority-offers.d.ts +22 -0
  158. package/dist/src/openclaw-private-authority-offers.js +177 -0
  159. package/dist/src/openclaw-private-authority-offers.js.map +1 -0
  160. package/dist/src/protocol.d.ts +5 -0
  161. package/dist/src/protocol.js +59 -3
  162. package/dist/src/protocol.js.map +1 -1
  163. package/dist/src/session-store.d.ts +1 -0
  164. package/dist/src/session-store.js +84 -106
  165. package/dist/src/session-store.js.map +1 -1
  166. package/dist/src/store.d.ts +1 -0
  167. package/dist/src/store.js +5 -2
  168. package/dist/src/store.js.map +1 -1
  169. package/dist/src/terminal-acceptance-application-service.d.ts +65 -0
  170. package/dist/src/terminal-acceptance-application-service.js +63 -0
  171. package/dist/src/terminal-acceptance-application-service.js.map +1 -0
  172. package/dist/src/terminal-acceptance-cli-adapter.d.ts +210 -0
  173. package/dist/src/terminal-acceptance-cli-adapter.js +957 -0
  174. package/dist/src/terminal-acceptance-cli-adapter.js.map +1 -0
  175. package/dist/src/terminal-action-projection.d.ts +309 -0
  176. package/dist/src/terminal-action-projection.js +376 -0
  177. package/dist/src/terminal-action-projection.js.map +1 -0
  178. package/dist/src/terminal-agent-bridge.d.ts +3 -0
  179. package/dist/src/terminal-agent-bridge.js +29 -8
  180. package/dist/src/terminal-agent-bridge.js.map +1 -1
  181. package/dist/src/terminal-authority-policy.d.ts +141 -0
  182. package/dist/src/terminal-authority-policy.js +367 -0
  183. package/dist/src/terminal-authority-policy.js.map +1 -0
  184. package/dist/src/terminal-binding-authority.d.ts +118 -0
  185. package/dist/src/terminal-binding-authority.js +245 -0
  186. package/dist/src/terminal-binding-authority.js.map +1 -0
  187. package/dist/src/terminal-binding-reconciliation-service.d.ts +75 -0
  188. package/dist/src/terminal-binding-reconciliation-service.js +73 -0
  189. package/dist/src/terminal-binding-reconciliation-service.js.map +1 -0
  190. package/dist/src/terminal-command-cli-adapter.d.ts +380 -0
  191. package/dist/src/terminal-command-cli-adapter.js +3288 -0
  192. package/dist/src/terminal-command-cli-adapter.js.map +1 -0
  193. package/dist/src/terminal-control-ref.d.ts +4 -0
  194. package/dist/src/terminal-control-ref.js +11 -8
  195. package/dist/src/terminal-control-ref.js.map +1 -1
  196. package/dist/src/terminal-delegate-cli-adapter.d.ts +41 -0
  197. package/dist/src/terminal-delegate-cli-adapter.js +242 -0
  198. package/dist/src/terminal-delegate-cli-adapter.js.map +1 -0
  199. package/dist/src/terminal-dispatch-abort.d.ts +22 -0
  200. package/dist/src/terminal-dispatch-abort.js +30 -0
  201. package/dist/src/terminal-dispatch-abort.js.map +1 -0
  202. package/dist/src/terminal-dispatch-application.d.ts +115 -0
  203. package/dist/src/terminal-dispatch-application.js +478 -0
  204. package/dist/src/terminal-dispatch-application.js.map +1 -0
  205. package/dist/src/terminal-dispatch-capability.d.ts +63 -0
  206. package/dist/src/terminal-dispatch-capability.js +133 -0
  207. package/dist/src/terminal-dispatch-capability.js.map +1 -0
  208. package/dist/src/terminal-dispatch-completion-cli-adapter.d.ts +22 -0
  209. package/dist/src/terminal-dispatch-completion-cli-adapter.js +96 -0
  210. package/dist/src/terminal-dispatch-completion-cli-adapter.js.map +1 -0
  211. package/dist/src/terminal-dispatch-composition.d.ts +79 -0
  212. package/dist/src/terminal-dispatch-composition.js +2 -0
  213. package/dist/src/terminal-dispatch-composition.js.map +1 -0
  214. package/dist/src/terminal-dispatch-execution.d.ts +290 -0
  215. package/dist/src/terminal-dispatch-execution.js +916 -0
  216. package/dist/src/terminal-dispatch-execution.js.map +1 -0
  217. package/dist/src/terminal-dispatch-ledger-codec.d.ts +110 -0
  218. package/dist/src/terminal-dispatch-ledger-codec.js +399 -0
  219. package/dist/src/terminal-dispatch-ledger-codec.js.map +1 -0
  220. package/dist/src/terminal-dispatch-policy.d.ts +93 -0
  221. package/dist/src/terminal-dispatch-policy.js +122 -0
  222. package/dist/src/terminal-dispatch-policy.js.map +1 -0
  223. package/dist/src/terminal-dispatch-presenter.d.ts +65 -0
  224. package/dist/src/terminal-dispatch-presenter.js +258 -0
  225. package/dist/src/terminal-dispatch-presenter.js.map +1 -0
  226. package/dist/src/terminal-dispatch-receipt.d.ts +79 -0
  227. package/dist/src/terminal-dispatch-receipt.js +314 -0
  228. package/dist/src/terminal-dispatch-receipt.js.map +1 -0
  229. package/dist/src/terminal-dispatch-recovery-cli-adapter.d.ts +132 -0
  230. package/dist/src/terminal-dispatch-recovery-cli-adapter.js +1330 -0
  231. package/dist/src/terminal-dispatch-recovery-cli-adapter.js.map +1 -0
  232. package/dist/src/terminal-dispatch-recovery-service.d.ts +271 -0
  233. package/dist/src/terminal-dispatch-recovery-service.js +374 -0
  234. package/dist/src/terminal-dispatch-recovery-service.js.map +1 -0
  235. package/dist/src/terminal-dispatch-repository-cli-adapter.d.ts +35 -0
  236. package/dist/src/terminal-dispatch-repository-cli-adapter.js +483 -0
  237. package/dist/src/terminal-dispatch-repository-cli-adapter.js.map +1 -0
  238. package/dist/src/terminal-handoff-application-service.d.ts +7 -0
  239. package/dist/src/terminal-handoff-application-service.js +18 -0
  240. package/dist/src/terminal-handoff-application-service.js.map +1 -0
  241. package/dist/src/terminal-handoff-cli-adapter.d.ts +229 -0
  242. package/dist/src/terminal-handoff-cli-adapter.js +1389 -0
  243. package/dist/src/terminal-handoff-cli-adapter.js.map +1 -0
  244. package/dist/src/terminal-handoff-facts.d.ts +12 -0
  245. package/dist/src/terminal-handoff-facts.js +16 -0
  246. package/dist/src/terminal-handoff-facts.js.map +1 -0
  247. package/dist/src/terminal-identity-authority-cli-adapter.d.ts +318 -0
  248. package/dist/src/terminal-identity-authority-cli-adapter.js +1072 -0
  249. package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -0
  250. package/dist/src/terminal-identity-authority-service.d.ts +48 -0
  251. package/dist/src/terminal-identity-authority-service.js +45 -0
  252. package/dist/src/terminal-identity-authority-service.js.map +1 -0
  253. package/dist/src/terminal-list-cli-adapter.d.ts +274 -0
  254. package/dist/src/terminal-list-cli-adapter.js +2444 -0
  255. package/dist/src/terminal-list-cli-adapter.js.map +1 -0
  256. package/dist/src/terminal-list-renderer.d.ts +34 -0
  257. package/dist/src/terminal-list-renderer.js +643 -0
  258. package/dist/src/terminal-list-renderer.js.map +1 -0
  259. package/dist/src/terminal-maintenance-cli-adapter.d.ts +102 -0
  260. package/dist/src/terminal-maintenance-cli-adapter.js +1059 -0
  261. package/dist/src/terminal-maintenance-cli-adapter.js.map +1 -0
  262. package/dist/src/terminal-monitor-application-service.d.ts +275 -0
  263. package/dist/src/terminal-monitor-application-service.js +982 -0
  264. package/dist/src/terminal-monitor-application-service.js.map +1 -0
  265. package/dist/src/terminal-monitor-cli-adapter.d.ts +130 -0
  266. package/dist/src/terminal-monitor-cli-adapter.js +442 -0
  267. package/dist/src/terminal-monitor-cli-adapter.js.map +1 -0
  268. package/dist/src/terminal-monitor-decision-policy.d.ts +98 -0
  269. package/dist/src/terminal-monitor-decision-policy.js +246 -0
  270. package/dist/src/terminal-monitor-decision-policy.js.map +1 -0
  271. package/dist/src/terminal-monitor-launch-plan.d.ts +45 -0
  272. package/dist/src/terminal-monitor-launch-plan.js +94 -0
  273. package/dist/src/terminal-monitor-launch-plan.js.map +1 -0
  274. package/dist/src/terminal-monitor-ownership-policy.d.ts +31 -0
  275. package/dist/src/terminal-monitor-ownership-policy.js +64 -0
  276. package/dist/src/terminal-monitor-ownership-policy.js.map +1 -0
  277. package/dist/src/terminal-monitor-poll-policy.d.ts +48 -0
  278. package/dist/src/terminal-monitor-poll-policy.js +67 -0
  279. package/dist/src/terminal-monitor-poll-policy.js.map +1 -0
  280. package/dist/src/terminal-monitor-reconciliation-eligibility.d.ts +53 -0
  281. package/dist/src/terminal-monitor-reconciliation-eligibility.js +114 -0
  282. package/dist/src/terminal-monitor-reconciliation-eligibility.js.map +1 -0
  283. package/dist/src/terminal-monitor-state-cli-adapter.d.ts +106 -0
  284. package/dist/src/terminal-monitor-state-cli-adapter.js +1492 -0
  285. package/dist/src/terminal-monitor-state-cli-adapter.js.map +1 -0
  286. package/dist/src/terminal-monitor-state-reconciliation-service.d.ts +87 -0
  287. package/dist/src/terminal-monitor-state-reconciliation-service.js +106 -0
  288. package/dist/src/terminal-monitor-state-reconciliation-service.js.map +1 -0
  289. package/dist/src/terminal-monitor-supervision-cli-adapter.d.ts +122 -0
  290. package/dist/src/terminal-monitor-supervision-cli-adapter.js +685 -0
  291. package/dist/src/terminal-monitor-supervision-cli-adapter.js.map +1 -0
  292. package/dist/src/terminal-process-facts.d.ts +2 -0
  293. package/dist/src/terminal-process-facts.js +19 -0
  294. package/dist/src/terminal-process-facts.js.map +1 -0
  295. package/dist/src/terminal-process-source.d.ts +6 -4
  296. package/dist/src/terminal-process-source.js +25 -20
  297. package/dist/src/terminal-process-source.js.map +1 -1
  298. package/dist/src/terminal-runtime-cli-adapter.d.ts +80 -0
  299. package/dist/src/terminal-runtime-cli-adapter.js +488 -0
  300. package/dist/src/terminal-runtime-cli-adapter.js.map +1 -0
  301. package/dist/src/terminal-scoped-approval-authority.d.ts +62 -0
  302. package/dist/src/terminal-scoped-approval-authority.js +281 -0
  303. package/dist/src/terminal-scoped-approval-authority.js.map +1 -0
  304. package/dist/src/terminal-selector-projection-service.d.ts +26 -0
  305. package/dist/src/terminal-selector-projection-service.js +81 -0
  306. package/dist/src/terminal-selector-projection-service.js.map +1 -0
  307. package/dist/src/terminal-status-cli-adapter.d.ts +126 -0
  308. package/dist/src/terminal-status-cli-adapter.js +577 -0
  309. package/dist/src/terminal-status-cli-adapter.js.map +1 -0
  310. package/dist/src/terminal-status-facts.d.ts +56 -0
  311. package/dist/src/terminal-status-facts.js +199 -0
  312. package/dist/src/terminal-status-facts.js.map +1 -0
  313. package/dist/src/terminal-submission-acceptance.d.ts +62 -145
  314. package/dist/src/terminal-submission-acceptance.js +555 -222
  315. package/dist/src/terminal-submission-acceptance.js.map +1 -1
  316. package/dist/src/terminal-submission-facts.d.ts +123 -0
  317. package/dist/src/terminal-submission-facts.js +205 -0
  318. package/dist/src/terminal-submission-facts.js.map +1 -0
  319. package/dist/src/terminal-turn-binding-authority-cli-adapter.d.ts +14 -0
  320. package/dist/src/terminal-turn-binding-authority-cli-adapter.js +90 -0
  321. package/dist/src/terminal-turn-binding-authority-cli-adapter.js.map +1 -0
  322. package/dist/src/terminal-watch-callback-cli-adapter.d.ts +20 -0
  323. package/dist/src/terminal-watch-callback-cli-adapter.js +55 -0
  324. package/dist/src/terminal-watch-callback-cli-adapter.js.map +1 -0
  325. package/dist/src/terminal-watch-cli-adapter.d.ts +64 -0
  326. package/dist/src/terminal-watch-cli-adapter.js +508 -0
  327. package/dist/src/terminal-watch-cli-adapter.js.map +1 -0
  328. package/dist/src/terminal-watch-service.d.ts +97 -0
  329. package/dist/src/terminal-watch-service.js +714 -0
  330. package/dist/src/terminal-watch-service.js.map +1 -0
  331. package/dist/src/terminal-watch-store.d.ts +149 -0
  332. package/dist/src/terminal-watch-store.js +861 -0
  333. package/dist/src/terminal-watch-store.js.map +1 -0
  334. package/dist/src/value-guards.d.ts +4 -0
  335. package/dist/src/value-guards.js +12 -0
  336. package/dist/src/value-guards.js.map +1 -0
  337. package/dist/src/verified-dead-agent-policy.d.ts +192 -0
  338. package/dist/src/verified-dead-agent-policy.js +262 -0
  339. package/dist/src/verified-dead-agent-policy.js.map +1 -0
  340. package/docs/quickstart-herdr.md +8 -0
  341. package/docs/quickstart-tmux.md +33 -6
  342. package/openclaw.plugin.json +11 -3
  343. package/package.json +3 -1
  344. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +58 -40
@@ -0,0 +1,376 @@
1
+ import { managedSessionBindingToken } from "./managed-session.js";
2
+ import { isSessionSendBlockingStatus, sessionIdForConversation } from "./protocol.js";
3
+ /** Canonical send authority used by list projection and fresh mutation prep. */
4
+ export function decideTerminalSendAuthority(facts) {
5
+ if (facts.ownership === "current")
6
+ return { mode: "current" };
7
+ const verifiedEmpty = facts.verifiedEmpty ??
8
+ facts.verifiedEmptyToken !== undefined;
9
+ const externalHandoff = facts.externalHandoff ??
10
+ facts.externalToken !== undefined;
11
+ const deferred = facts.deferred ?? facts.deferredToken !== undefined;
12
+ const conflictMode = verifiedEmpty
13
+ ? { mode: "verified_empty", token: facts.verifiedEmptyToken }
14
+ : externalHandoff
15
+ ? { mode: "external_handoff", token: facts.externalToken }
16
+ : deferred
17
+ ? { mode: "deferred", token: facts.deferredToken }
18
+ : undefined;
19
+ if (facts.ownership === "conflict") {
20
+ return conflictMode ?? { mode: "conflict" };
21
+ }
22
+ if (deferred)
23
+ return { mode: "deferred", token: facts.deferredToken };
24
+ return facts.managedSendSessionId
25
+ ? { mode: "managed", sessionId: facts.managedSendSessionId }
26
+ : { mode: "raw" };
27
+ }
28
+ export function decideTerminalSessionAuthorityConflict({ unresolvedSessionClaims, conflictingBoundSessionClaims, matchingSessions }) {
29
+ if (unresolvedSessionClaims.length > 0) {
30
+ return {
31
+ reason: "a first-class managed Session has an unresolved lifecycle binding on this terminal",
32
+ session_ids: unresolvedSessionClaims.map((session) => session.session_id),
33
+ binding_statuses: unresolvedSessionClaims.map((session) => session.status),
34
+ transition_ids: unresolvedSessionClaims.map((session) => session.last_transition_id ?? null),
35
+ recovery: "use only the lifecycle recovery action listed for this terminal"
36
+ };
37
+ }
38
+ if (conflictingBoundSessionClaims.length === 1) {
39
+ return singleBindingConflict(conflictingBoundSessionClaims[0]);
40
+ }
41
+ if (conflictingBoundSessionClaims.length > 1) {
42
+ return {
43
+ kind: "ambiguous_bound_claims",
44
+ reason: "multiple non-exact bound managed Sessions claim the same live terminal",
45
+ session_ids: conflictingBoundSessionClaims.map(({ session }) => session.session_id),
46
+ recovery: "inspect Session state; AKK will not reconcile ambiguous claims"
47
+ };
48
+ }
49
+ if (matchingSessions.length > 1) {
50
+ return {
51
+ reason: "multiple first-class managed Sessions claim the same live terminal binding",
52
+ session_ids: matchingSessions.map((session) => session.session_id),
53
+ recovery: "inspect Session state before performing a side effect"
54
+ };
55
+ }
56
+ return undefined;
57
+ }
58
+ function singleBindingConflict(claim) {
59
+ const { session, kind } = claim;
60
+ return {
61
+ kind,
62
+ reason: kind === "provisional_orphan"
63
+ ? "a failed raw attach left a bound Session without an authoritative native-thread identity"
64
+ : kind === "live_external_thread_change"
65
+ ? "the live coding-agent thread changed outside AKK while its previous Session binding remained bound"
66
+ : "the live terminal no longer matches a bound managed Session and the process relationship is unverifiable",
67
+ session_ids: [session.session_id],
68
+ binding_ids: [session.binding?.binding_id ?? null],
69
+ session_revisions: [session.revision ?? null],
70
+ recovery: kind === "unverifiable"
71
+ ? "inspect the terminal and Session identity; AKK cannot safely reconcile an unverifiable binding"
72
+ : "use only the exact reconcile_binding action listed for this terminal"
73
+ };
74
+ }
75
+ /**
76
+ * Terminal Watch is only for work started outside AKK. A durable blocking
77
+ * Turn wins even when its dispatch ledger is temporarily absent, while a
78
+ * current or conflicted dispatch owner must also fail closed.
79
+ */
80
+ export function decideTerminalWatchExternalTaskAuthority({ blockingTurn, dispatchOwnership }) {
81
+ if (blockingTurn) {
82
+ return { state: "managed_turn", conversation: blockingTurn };
83
+ }
84
+ if (dispatchOwnership.state === "current") {
85
+ return {
86
+ state: "managed_turn",
87
+ conversation: dispatchOwnership.conversation
88
+ };
89
+ }
90
+ if (dispatchOwnership.state === "conflict") {
91
+ return {
92
+ state: "dispatch_conflict",
93
+ conflict: dispatchOwnership.conflict
94
+ };
95
+ }
96
+ return { state: "external_task" };
97
+ }
98
+ export function applySessionAuthorityToDispatch({ localOwnership, sessionAuthorityConflict, authoritativeSession, dispatchOwnerMismatch }) {
99
+ if (sessionAuthorityConflict) {
100
+ return { state: "conflict", conflict: sessionAuthorityConflict };
101
+ }
102
+ if (localOwnership.state === "current" && authoritativeSession &&
103
+ dispatchOwnerMismatch) {
104
+ return {
105
+ state: "conflict",
106
+ conflict: {
107
+ reason: "the current dispatch Turn and first-class Session binding disagree",
108
+ owner_session_id: dispatchOwnerMismatch.ownerSessionId,
109
+ bound_session_id: authoritativeSession.session_id,
110
+ recovery: "inspect Session and Turn state before performing a side effect"
111
+ }
112
+ };
113
+ }
114
+ return localOwnership;
115
+ }
116
+ export function compareManagedConversationRecency(left, right) {
117
+ const leftTime = Date.parse(String(left.updated_at ?? left.created_at ?? ""));
118
+ const rightTime = Date.parse(String(right.updated_at ?? right.created_at ?? ""));
119
+ if (Number.isFinite(leftTime) && Number.isFinite(rightTime) &&
120
+ leftTime !== rightTime)
121
+ return rightTime - leftTime;
122
+ if (Number.isFinite(leftTime) !== Number.isFinite(rightTime)) {
123
+ return Number.isFinite(leftTime) ? -1 : 1;
124
+ }
125
+ return left.conversation_id.localeCompare(right.conversation_id);
126
+ }
127
+ export function decideManagedTerminalAssociation({ allRelated, displayedRelated, authoritativeSession, sessionAuthorityRequired, currentOwner }) {
128
+ if (currentOwner && !allRelated.some((conversation) => conversation.conversation_id === currentOwner.conversation_id))
129
+ allRelated.push(currentOwner);
130
+ const sessionIds = new Set(allRelated.map((conversation) => sessionIdForConversation(conversation)));
131
+ const legacySessionId = [...displayedRelated]
132
+ .sort(compareManagedConversationRecency)
133
+ .map((conversation) => sessionIdForConversation(conversation))[0] ??
134
+ [...allRelated]
135
+ .sort(compareManagedConversationRecency)
136
+ .map((conversation) => sessionIdForConversation(conversation))[0];
137
+ const managedSessionId = authoritativeSession?.session_id ??
138
+ (!sessionAuthorityRequired
139
+ ? currentOwner
140
+ ? sessionIdForConversation(currentOwner)
141
+ : legacySessionId
142
+ : undefined);
143
+ const historySessionId = managedSessionId ?? legacySessionId;
144
+ return {
145
+ managedSessionId,
146
+ historySessionId,
147
+ sessionIds,
148
+ sessionAllRelated: historySessionId
149
+ ? allRelated.filter((conversation) => sessionIdForConversation(conversation) === historySessionId)
150
+ : [],
151
+ sessionDisplayedRelated: historySessionId
152
+ ? displayedRelated.filter((conversation) => sessionIdForConversation(conversation) === historySessionId)
153
+ : []
154
+ };
155
+ }
156
+ export function selectManagedTerminalHistory({ displayedRelated, currentConversationId, hasCurrentTurn, includeAll }) {
157
+ const sorted = [...displayedRelated]
158
+ .filter((conversation) => conversation.conversation_id !== currentConversationId)
159
+ .sort(compareManagedConversationRecency);
160
+ const recentConversation = hasCurrentTurn ? undefined : sorted[0];
161
+ return {
162
+ recentConversation,
163
+ historyConversations: includeAll
164
+ ? sorted.filter((conversation) => conversation.conversation_id !== recentConversation?.conversation_id)
165
+ : []
166
+ };
167
+ }
168
+ export function managedTurnNeedsAttention(facts) {
169
+ return isSessionSendBlockingStatus(facts.status) ||
170
+ ["pending", "failed"].includes(facts.callbackDeliveryStatus ?? "");
171
+ }
172
+ export function projectTerminalDispatchConflict(facts) {
173
+ return {
174
+ reason: facts.reason,
175
+ dispatch_status: facts.dispatchStatus,
176
+ owner_conversation_id: facts.ownerConversationId,
177
+ message_id: facts.messageId,
178
+ recovery: "inspect the shared terminal pane and explicitly resolve the current dispatch before performing a side effect"
179
+ };
180
+ }
181
+ export function decideLocalTerminalDispatchOwnership(facts) {
182
+ if (facts.localOwner) {
183
+ if (!facts.localOwnerMatchesLiveTerminal) {
184
+ return {
185
+ state: "conflict",
186
+ conflict: {
187
+ reason: "the terminal dispatch owner no longer matches the live coding-agent process identity or workspace",
188
+ owner_conversation_id: facts.ledgerOwnerId,
189
+ recovery: "inspect the shared terminal pane and explicitly resolve the stale dispatch before performing a side effect"
190
+ }
191
+ };
192
+ }
193
+ return { state: "current", conversation: facts.localOwner };
194
+ }
195
+ return {
196
+ state: "conflict",
197
+ conflict: {
198
+ reason: "the terminal dispatch owner belongs to another AKK store or is not supported by this list view",
199
+ owner_conversation_id: facts.ledgerOwnerId,
200
+ recovery: "inspect the shared terminal pane and use the AKK store that owns the current dispatch"
201
+ }
202
+ };
203
+ }
204
+ export function selectTerminalAvailableActions({ ownership, currentActions, sessionAwareRawActions, nonOwnerRawActions, authoritativeSendAction, reconcileBindingAction, terminalScopedApprovalAction, isAction = (value) => Boolean(value) }) {
205
+ const base = ownership === "current"
206
+ ? currentActions
207
+ : ownership === "conflict"
208
+ ? {
209
+ ...safeConflictActions(sessionAwareRawActions, isAction),
210
+ ...(authoritativeSendAction ? { send: authoritativeSendAction } : {}),
211
+ ...(reconcileBindingAction
212
+ ? { reconcile_binding: reconcileBindingAction }
213
+ : {})
214
+ }
215
+ : {
216
+ ...nonOwnerRawActions,
217
+ ...(authoritativeSendAction ? { send: authoritativeSendAction } : {})
218
+ };
219
+ return terminalScopedApprovalAction
220
+ ? { ...base, approve: terminalScopedApprovalAction }
221
+ : base;
222
+ }
223
+ function safeConflictActions(actions, isAction) {
224
+ return {
225
+ ...(isAction(actions.status) ? { status: actions.status } : {}),
226
+ ...(isAction(actions.close) ? { close: actions.close } : {})
227
+ };
228
+ }
229
+ export function nonOwnerTerminalActions(actions, facts) {
230
+ if (!facts.hasAuthoritativeSession)
231
+ return actions;
232
+ const next = {};
233
+ for (const name of Object.keys(actions)) {
234
+ if (name !== "approve" &&
235
+ !(facts.rolloutBackedCodexSession && name === "send"))
236
+ next[name] = actions[name];
237
+ }
238
+ return next;
239
+ }
240
+ export function projectTerminalManagement({ managedSessionId, managedSessionShortRef, currentTurn, recentTurn, sessionAllRelatedCount, hiddenTurnCount, sessionCount, authoritativeSession, history }) {
241
+ return {
242
+ session_id: managedSessionId ?? null,
243
+ session_short_ref: managedSessionShortRef,
244
+ current_turn: currentTurn ?? null,
245
+ recent_turn: recentTurn ?? null,
246
+ turn_count: sessionAllRelatedCount,
247
+ hidden_turn_count: hiddenTurnCount,
248
+ session_count: sessionCount,
249
+ ...(authoritativeSession ? managedBindingProjection(authoritativeSession) : {}),
250
+ ...(history ? { history } : {})
251
+ };
252
+ }
253
+ function managedBindingProjection(session) {
254
+ return {
255
+ binding_status: session.status,
256
+ binding_id: session.binding?.binding_id ?? null,
257
+ binding_generation: session.binding?.generation ?? null,
258
+ native_thread_id: session.binding?.native_thread_id ?? null,
259
+ binding_token: managedSessionBindingToken(session)
260
+ };
261
+ }
262
+ export function authoritativeTerminalIdentity(session) {
263
+ const binding = session?.binding;
264
+ return binding?.native_thread_id && session
265
+ ? {
266
+ native_agent_session_id: binding.native_thread_id,
267
+ native_agent_process_uuid: binding.native_process.process_uuid,
268
+ native_agent_process_birth: binding.native_process.process_birth,
269
+ native_agent_rollout: binding.native_process.rollout,
270
+ native_agent_identity_evidence: binding.native_process.evidence,
271
+ lifecycle_binding_token: managedSessionBindingToken(session)
272
+ }
273
+ : {};
274
+ }
275
+ export function projectPublicManagementConflict({ conflict, verifiedEmptyToken, deferredToken, explicitlyAbandonedPredecessor }) {
276
+ if (!conflict)
277
+ return undefined;
278
+ if (verifiedEmptyToken) {
279
+ return {
280
+ ...conflict,
281
+ kind: "verified_empty_native_session",
282
+ reason: "the previously bound Codex rollout is conclusively closed while the same terminal process is at an exact empty prompt",
283
+ recovery: "use only the exact snapshot-bound send action listed for this terminal"
284
+ };
285
+ }
286
+ if (deferredToken && explicitlyAbandonedPredecessor) {
287
+ return {
288
+ ...conflict,
289
+ kind: "explicitly_abandoned_predecessor_adoptable",
290
+ reason: "the explicitly abandoned Codex predecessor rollout is no longer open and the current exact rollout inventory is unclaimed",
291
+ recovery: "use only the exact snapshot-bound follow-current send action listed for this terminal"
292
+ };
293
+ }
294
+ return conflict;
295
+ }
296
+ export function projectHandoffPresentation(facts) {
297
+ const external = facts.externalHandoffDetected
298
+ ? {
299
+ handoff_state: facts.externalHandoffAdoptable
300
+ ? "external_handoff_adoptable"
301
+ : "external_handoff_blocked",
302
+ ...(handoffBlockedReason(facts)
303
+ ? { handoff_blocked_reason: handoffBlockedReason(facts) }
304
+ : {})
305
+ }
306
+ : {};
307
+ return facts.verifiedEmptyToken
308
+ ? { ...external, handoff_state: "verified_empty_native_session_adoptable" }
309
+ : external;
310
+ }
311
+ function handoffBlockedReason(facts) {
312
+ if (facts.recoveryBlockingTurnCount > 0) {
313
+ return "the terminal has unresolved managed Turn state; use only a listed blocking_turns recovery action";
314
+ }
315
+ if (facts.hasHandoffDecision) {
316
+ return "the source Session has one active Turn; use only the snapshot-bound handoff_decision after explicit confirmation";
317
+ }
318
+ if (facts.sourceBlockingTurnCount > 0) {
319
+ return "the conflicting source Session has unresolved Turn state but no snapshot-bound handoff decision is currently safe; inspect the conflict and refresh";
320
+ }
321
+ return facts.automatedInputComposerReady
322
+ ? undefined
323
+ : "the current terminal composer is not an exact empty idle frame";
324
+ }
325
+ export function projectReconcileBindingAction(facts) {
326
+ return {
327
+ tool: "agent_knock_knock_reconcile_binding",
328
+ arguments: {
329
+ terminal_id: facts.terminalId,
330
+ conflicting_session_id: facts.conflictingSession.session_id,
331
+ expected_session_revision: facts.conflictingSessionRevision,
332
+ expected_binding_token: managedSessionBindingToken(facts.conflictingSession),
333
+ expected_terminal_token: facts.expectedTerminalToken
334
+ },
335
+ requires_user_intent: true
336
+ };
337
+ }
338
+ export function projectHandoffDecision(facts) {
339
+ return {
340
+ kind: "active_turn_requires_decision",
341
+ source_session_id: facts.sourceSessionId,
342
+ source_turn_id: facts.sourceTurnId,
343
+ live_native_thread_id: facts.liveNativeThreadId,
344
+ choices: {
345
+ take_over_current: {
346
+ action: {
347
+ tool: "agent_knock_knock_close",
348
+ arguments: {
349
+ turn_id: facts.actionTurnId ?? facts.sourceTurnId,
350
+ reason: "superseded_by_human_context_switch",
351
+ expected_handoff_token: facts.handoffDecisionToken
352
+ },
353
+ requires_explicit_user_confirmation: true
354
+ },
355
+ after: "refresh list and use its follow-current send"
356
+ },
357
+ keep_source: {
358
+ effect: "no Store or terminal mutation",
359
+ after: "restore source native thread in the Codex/Claude TUI, then refresh list"
360
+ }
361
+ }
362
+ };
363
+ }
364
+ export function projectBlockingTurn(facts) {
365
+ return {
366
+ session_id: facts.sessionId,
367
+ turn_id: facts.turnId,
368
+ status: facts.status,
369
+ recovery_action: {
370
+ tool: "agent_knock_knock_close",
371
+ arguments: { turn_id: facts.recoveryTurnId ?? facts.turnId },
372
+ requires_explicit_user_confirmation: true
373
+ }
374
+ };
375
+ }
376
+ //# sourceMappingURL=terminal-action-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-action-projection.js","sourceRoot":"","sources":["../../src/terminal-action-projection.ts"],"names":[],"mappings":"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"}
@@ -376,6 +376,9 @@ export declare function isExactClaudeIdleComposer(screen: string): boolean;
376
376
  * name before the same exact-frame proof was reused by lifecycle handoff.
377
377
  */
378
378
  export declare function isExactClaudeNativeInspectionIdleComposer(screen: string): boolean;
379
+ export declare function exactCodexReadyStyledComposerCapture(screen: string): {
380
+ digest: string;
381
+ } | undefined;
379
382
  export declare function terminalApprovalFingerprint(agent: ExecutorKind, terminalControl: TerminalControlRef, inspection: TerminalScreenInspection, options?: {
380
383
  screen?: string;
381
384
  runtime?: TerminalRuntimeIdentity;
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { formatTerminalConversationId, parseTerminalConversationId, terminalControlCapabilitiesForAdapter } from "./terminal-agent-adapter.js";
3
3
  import { enrichActiveProcessesWithTerminalControl, TerminalControlInputNotSentError } from "./terminal-control-provider.js";
4
4
  import { hasCanonicalTerminalEndpoint, sameTerminalControlIncarnation, terminalEndpointFromControlRef, terminalEndpointIdentityKey } from "./terminal-control-ref.js";
5
- // Verified Codex profiles through 0.147.0 keep Enter in paste/newline mode for
5
+ // Verified Codex profiles through 0.148.0 keep Enter in paste/newline mode for
6
6
  // 120ms after burst input. Cross that boundary rather than landing on it, and
7
7
  // also require observable composer stability instead of treating this delay
8
8
  // alone as acceptance.
@@ -26,6 +26,10 @@ const CODEX_NATIVE_STATUS_POPUP_BY_PROFILE = {
26
26
  "codex-tui-0.147.0": [
27
27
  " /status show current session configuration and token usage",
28
28
  " /statusline configure which items appear in the status line"
29
+ ],
30
+ "codex-tui-0.148.0": [
31
+ " /status show current session configuration and token usage",
32
+ " /statusline configure which items appear in the status line"
29
33
  ]
30
34
  };
31
35
  // Codex's verified `/status` profiles are exercised against its canonical
@@ -36,7 +40,8 @@ const CODEX_NATIVE_STATUS_POPUP_BY_PROFILE = {
36
40
  const CODEX_NATIVE_STATUS_MIN_VIEWPORT_BY_PROFILE = {
37
41
  "codex-tui-0.146.0": 80,
38
42
  "codex-tui-0.146.1": 80,
39
- "codex-tui-0.147.0": 80
43
+ "codex-tui-0.147.0": 80,
44
+ "codex-tui-0.148.0": 80
40
45
  };
41
46
  const CLAUDE_NATIVE_STATUS_POPUP_BY_PROFILE = {
42
47
  "claude-code-2.1.218-native-status": [
@@ -50,8 +55,28 @@ const CLAUDE_NATIVE_STATUS_POPUP_BY_PROFILE = {
50
55
  "/statusline Set up Claude Code's status line UI",
51
56
  "/ide Manage IDE integrations and show status",
52
57
  "/usage Show session cost, plan usage, and activity stats"
58
+ ],
59
+ "claude-code-2.1.237-native-status": [
60
+ "/status Show Claude Code status including version, model, account, API connectivity, and tool statuses",
61
+ "/statusline Set up Claude Code's status line UI",
62
+ "/ide Manage IDE integrations and show status",
63
+ "/usage Show session cost, plan usage, and activity stats"
53
64
  ]
54
65
  };
66
+ const CLAUDE_NATIVE_STATUS_SETTLE_BY_PROFILE = {
67
+ "claude-code-2.1.218-native-status": {
68
+ minimumStableMs: 80,
69
+ maximumSettleMs: 2_000
70
+ },
71
+ "claude-code-2.1.226-native-status": {
72
+ minimumStableMs: 80,
73
+ maximumSettleMs: 5_000
74
+ },
75
+ "claude-code-2.1.237-native-status": {
76
+ minimumStableMs: 80,
77
+ maximumSettleMs: 5_000
78
+ }
79
+ };
55
80
  const CODEX_LARGE_PASTE_CHAR_THRESHOLD = 1_000;
56
81
  /** A terminal send failed at a boundary that proves input never started. */
57
82
  export class TerminalInputNotStartedError extends Error {
@@ -1471,11 +1496,7 @@ function assertClosedStatusInspectionPlan(adapter, terminalControl, plan) {
1471
1496
  CLAUDE_NATIVE_STATUS_POPUP_BY_PROFILE[plan.behaviorProfile] !== undefined;
1472
1497
  const expectedSettle = codexProfile
1473
1498
  ? { minimumStableMs: CODEX_PASTE_ENTER_SETTLE_MS, maximumSettleMs: 2_000 }
1474
- : plan.behaviorProfile === "claude-code-2.1.218-native-status"
1475
- ? { minimumStableMs: 80, maximumSettleMs: 2_000 }
1476
- : plan.behaviorProfile === "claude-code-2.1.226-native-status"
1477
- ? { minimumStableMs: 80, maximumSettleMs: 5_000 }
1478
- : undefined;
1499
+ : CLAUDE_NATIVE_STATUS_SETTLE_BY_PROFILE[plan.behaviorProfile];
1479
1500
  const exactPresentation = codexProfile
1480
1501
  ? plan.expectedResult.presentation === "inline" &&
1481
1502
  plan.expectedResult.dismissal === undefined &&
@@ -1697,7 +1718,7 @@ function bareDigestFromNativeInspectionScreenFingerprint(fingerprint) {
1697
1718
  function stripTerminalEscapeSequences(value) {
1698
1719
  return value.replace(/\x1B(?:\[[0-?]*[ -/]*[@-~]|\][^\x07]*(?:\x07|\x1B\\))/gu, "");
1699
1720
  }
1700
- function exactCodexReadyStyledComposerCapture(screen) {
1721
+ export function exactCodexReadyStyledComposerCapture(screen) {
1701
1722
  const lines = screen.replace(/\r\n?/gu, "\n").split("\n");
1702
1723
  while (lines.length > 0 &&
1703
1724
  stripTerminalEscapeSequences(lines.at(-1) ?? "").trim().length === 0) {