@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,281 @@
1
+ import { createHash } from "node:crypto";
2
+ import path from "node:path";
3
+ import { isExactNativeThreadId, managedSessionBindingToken, managedSessionRevision, unmanagedTerminalBindingToken } from "./managed-session.js";
4
+ import { sessionIdForConversation, turnIdForConversation } from "./protocol.js";
5
+ import { terminalActionFingerprint } from "./native-thread-resume-snapshot-policy.js";
6
+ import { hasCanonicalTerminalEndpoint, sameTerminalControlIncarnation, terminalEndpointFromControlRef } from "./terminal-control-ref.js";
7
+ import { isRecord, nonBlankString as nonEmptyString } from "./value-guards.js";
8
+ export function terminalScopedCodexApprovalPromptSnapshot(approvalState) {
9
+ if (!isRecord(approvalState) || approvalState.approvable !== true)
10
+ return;
11
+ const fingerprint = nonEmptyString(approvalState.fingerprint);
12
+ const fallbackKey = nonEmptyString(approvalState.key);
13
+ const rawKeys = Array.isArray(approvalState.keys) ? approvalState.keys : fallbackKey ? [fallbackKey] : [];
14
+ const keys = rawKeys.filter((value) => typeof value === "string" && value.length > 0);
15
+ if (!fingerprint || !/^[0-9a-f]{64}$/u.test(fingerprint) ||
16
+ keys.length === 0 || keys.length !== rawKeys.length ||
17
+ nonEmptyString(approvalState.decision_mode) !== "keys")
18
+ return;
19
+ const requestId = nonEmptyString(approvalState.request_id) ?? null;
20
+ return {
21
+ fingerprint, keys, requestId,
22
+ digest: terminalActionFingerprint({
23
+ version: 1,
24
+ kind: "terminal_scoped_codex_approval_prompt",
25
+ fingerprint, keys,
26
+ request_id: requestId
27
+ })
28
+ };
29
+ }
30
+ /** One fresh decision; lazy checks retain fail-closed I/O/error precedence. */
31
+ export function decideTerminalScopedCodexApprovalAuthority(request) {
32
+ const terminal = terminalSnapshot(request.terminal);
33
+ if (!isExactTerminalSnapshot(terminal) || !request.approval) {
34
+ throw new Error(request.kind === "current_dispatch_owner"
35
+ ? "terminal-scoped Codex approval requires an exact terminal and process incarnation"
36
+ : "terminal-scoped Codex approval requires an exact terminal, process, and prompt incarnation");
37
+ }
38
+ return request.kind === "current_dispatch_owner"
39
+ ? decideCurrentOwner(request, terminal, request.approval)
40
+ : decideNoOwner(request, terminal, request.approval);
41
+ }
42
+ function decideCurrentOwner(request, terminal, approval) {
43
+ const { session, owner, ledger, checks } = request;
44
+ const binding = exactSessionBinding(session, terminal);
45
+ if (!binding ||
46
+ sessionIdForConversation(owner) !== session.session_id ||
47
+ !["waiting_for_agent", "waiting_for_openclaw"].includes(owner.status)) {
48
+ throw new Error("terminal-scoped Codex approval has no single current managed owner");
49
+ }
50
+ assertSoleSession(checks.relatedBoundSessionIds(), session.session_id);
51
+ const blockingTurnIds = checks.blockingTurnIds();
52
+ if (blockingTurnIds.length !== 1 ||
53
+ blockingTurnIds[0] !== turnIdForConversation(owner)) {
54
+ throw new Error("terminal-scoped Codex approval has collateral unresolved Turn state");
55
+ }
56
+ assertNoRecovery(checks.hasNativeTransition() || checks.hasDeferredRecovery());
57
+ checks.assertDispatchOwner();
58
+ if (!checks.ledgerMatchesTerminal() ||
59
+ !["submitted", "agent_accepted"].includes(String(ledger.status))) {
60
+ throw new Error(`terminal-scoped Codex approval cannot use ${String(ledger.status)} dispatch ownership`);
61
+ }
62
+ assertNativeIdentity(terminal, binding);
63
+ const identity = terminal.nativeSessionId
64
+ ? {
65
+ sessionId: terminal.nativeSessionId, processUuid: terminal.processUuid,
66
+ processBirth: terminal.processBirth, rollout: terminal.rollout
67
+ }
68
+ : undefined;
69
+ if (checks.ownerMatchesNativeIdentity(identity)) {
70
+ throw new Error("the Codex managed identity is exact; use the managed Turn approval action");
71
+ }
72
+ return boundaryFor(request, terminal, approval);
73
+ }
74
+ function decideNoOwner(request, terminal, approval) {
75
+ const { session, ledger, checks } = request;
76
+ const binding = exactSessionBinding(session, terminal);
77
+ if (!binding || !isExactNativeThreadId(binding.native_thread_id)) {
78
+ throw new Error("terminal-scoped Codex approval has no single exact managed Session");
79
+ }
80
+ assertSoleSession(checks.relatedBoundSessionIds(), session.session_id);
81
+ if (!checks.dispatchOwnershipIsNone()) {
82
+ throw new Error("terminal-scoped Codex approval acquired a current or conflicted dispatch owner");
83
+ }
84
+ if (ledger &&
85
+ (ledger.status !== "resolved" || !checks.ledgerMatchesTerminal())) {
86
+ throw new Error(`terminal-scoped Codex approval cannot use ${String(ledger.status)} dispatch ownership`);
87
+ }
88
+ if (checks.blockingTurnIds().length > 0) {
89
+ throw new Error("terminal-scoped Codex approval has unresolved managed Turn state");
90
+ }
91
+ assertNoRecovery(checks.hasNativeTransition() ||
92
+ checks.hasOrphanedDispatch() ||
93
+ checks.hasDeferredRecovery());
94
+ assertNativeIdentity(terminal, binding);
95
+ return boundaryFor(request, terminal, approval);
96
+ }
97
+ function exactSessionBinding(session, terminal) {
98
+ const binding = session.binding;
99
+ return (session.status === "bound" &&
100
+ session.agent === "codex" &&
101
+ binding &&
102
+ binding.native_process.pid === terminal.pid &&
103
+ binding.native_process.process_uuid === terminal.processUuid &&
104
+ binding.native_process.process_birth === terminal.processBirth &&
105
+ terminalControlAliasMatches(binding.terminal_id, binding.terminal_control, terminal.rawId, terminal.terminalControl) &&
106
+ path.resolve(session.workspace) === path.resolve(terminal.workspace)) ? binding : undefined;
107
+ }
108
+ function assertSoleSession(sessionIds, expectedSessionId) {
109
+ if (sessionIds.length !== 1 || sessionIds[0] !== expectedSessionId) {
110
+ throw new Error("terminal-scoped Codex approval has ambiguous managed Session ownership");
111
+ }
112
+ }
113
+ function assertNoRecovery(blocked) {
114
+ if (blocked) {
115
+ throw new Error("terminal-scoped Codex approval is blocked by managed recovery state");
116
+ }
117
+ }
118
+ function assertNativeIdentity(terminal, binding) {
119
+ for (const knownSessionId of [
120
+ terminal.nativeSessionId,
121
+ terminal.statusCardSessionId
122
+ ]) {
123
+ if (knownSessionId &&
124
+ knownSessionId.toLowerCase() !==
125
+ String(binding.native_thread_id ?? "").toLowerCase()) {
126
+ throw new Error("terminal-scoped Codex approval observed a different native thread");
127
+ }
128
+ }
129
+ if (terminal.nativeSessionId &&
130
+ (terminal.processUuid !== binding.native_process.process_uuid ||
131
+ terminal.processBirth !== binding.native_process.process_birth ||
132
+ (binding.native_process.rollout &&
133
+ !exactNativeRolloutMatches(binding.native_process.rollout, terminal.rollout)))) {
134
+ throw new Error("terminal-scoped Codex approval observed a changed native rollout incarnation");
135
+ }
136
+ }
137
+ function boundaryFor(request, terminal, approval) {
138
+ return {
139
+ authority: { kind: request.kind },
140
+ approval,
141
+ token: approvalToken(request, terminal, approval)
142
+ };
143
+ }
144
+ function approvalToken(request, terminal, approval) {
145
+ const terminalToken = unmanagedTerminalBindingToken({
146
+ terminalId: terminal.id,
147
+ terminalControl: terminal.terminalControl,
148
+ agent: "codex",
149
+ pid: terminal.pid,
150
+ workspace: terminal.workspace,
151
+ processUuid: terminal.processUuid,
152
+ processBirth: terminal.processBirth
153
+ });
154
+ const owner = request.kind === "current_dispatch_owner"
155
+ ? request.owner
156
+ : undefined;
157
+ const takeover = owner && isRecord(owner.native_session_takeover)
158
+ ? owner.native_session_takeover
159
+ : undefined;
160
+ return createHash("sha256").update(JSON.stringify({
161
+ version: 2,
162
+ kind: "terminal_scoped_codex_manual_approval",
163
+ store_dir: path.resolve(request.storeDir),
164
+ terminal_token: terminalToken,
165
+ observation: terminalObservation(terminal),
166
+ authority: request.kind,
167
+ owner_session_id: request.session.session_id,
168
+ owner_session_revision: managedSessionRevision(request.session),
169
+ owner_binding_token: managedSessionBindingToken(request.session),
170
+ owner_turn_id: owner ? turnIdForConversation(owner) : null,
171
+ owner_turn_status: owner?.status ?? null,
172
+ owner_turn_updated_at: owner?.updated_at ?? null,
173
+ owner_message_id: nonEmptyString(takeover?.terminal_bridge_message_id) ?? null,
174
+ dispatch_snapshot: request.ledger
175
+ ? {
176
+ status: nonEmptyString(request.ledger.status),
177
+ fingerprint: terminalActionFingerprint(request.ledger)
178
+ }
179
+ : { status: "none", fingerprint: null },
180
+ approval_snapshot_digest: approval.digest,
181
+ approval_fingerprint: approval.fingerprint,
182
+ approval_keys: approval.keys,
183
+ approval_request_id: approval.requestId
184
+ })).digest("hex");
185
+ }
186
+ function terminalSnapshot(value) {
187
+ const terminal = isRecord(value) ? value : {};
188
+ const terminalControl = isRecord(terminal.terminal_control)
189
+ ? terminal.terminal_control
190
+ : undefined;
191
+ const observation = isRecord(terminal.native_agent_identity_observation)
192
+ ? terminal.native_agent_identity_observation
193
+ : undefined;
194
+ const observationValue = nonEmptyString(observation?.status);
195
+ const observationStatus = observationValue === "resolved" ||
196
+ observationValue === "verified_absent" ||
197
+ observationValue === "unavailable"
198
+ ? observationValue
199
+ : undefined;
200
+ return {
201
+ id: String(terminal.id),
202
+ rawId: terminal.id,
203
+ agent: nonEmptyString(terminal.agent),
204
+ pid: Number(terminal.pid),
205
+ workspace: nonEmptyString(terminal.workspace ?? terminal.cwd),
206
+ terminalControl,
207
+ nativeSessionId: nonEmptyString(terminal.native_agent_session_id),
208
+ statusCardSessionId: nonEmptyString(terminal.native_agent_status_card_session_id),
209
+ processUuid: nonEmptyString(terminal.native_agent_process_uuid),
210
+ processBirth: nonEmptyString(terminal.native_agent_process_birth),
211
+ rollout: nativeRollout(terminal.native_agent_rollout),
212
+ observationStatus
213
+ };
214
+ }
215
+ function isExactTerminalSnapshot(value) {
216
+ return value.agent === "codex" &&
217
+ Boolean(value.terminalControl) &&
218
+ hasCanonicalTerminalEndpoint(value.terminalControl) &&
219
+ Number.isSafeInteger(value.pid) && value.pid > 1 &&
220
+ Boolean(value.workspace) &&
221
+ Boolean(value.processUuid) &&
222
+ Boolean(value.processBirth) &&
223
+ Boolean(value.observationStatus);
224
+ }
225
+ function terminalObservation(terminal) {
226
+ if (terminal.observationStatus !== "resolved") {
227
+ return { status: terminal.observationStatus };
228
+ }
229
+ return {
230
+ status: terminal.observationStatus,
231
+ session_id: terminal.nativeSessionId ?? null,
232
+ process_uuid: terminal.processUuid ?? null,
233
+ process_birth: terminal.processBirth ?? null,
234
+ rollout: terminal.rollout
235
+ ? {
236
+ fd: terminal.rollout.fd,
237
+ device: terminal.rollout.device,
238
+ inode: terminal.rollout.inode,
239
+ path: terminal.rollout.path
240
+ }
241
+ : null
242
+ };
243
+ }
244
+ function terminalControlAliasMatches(storedTerminalId, storedControl, currentTerminalId, currentControl) {
245
+ if (!terminalControlsShareIncarnation(storedControl, currentControl)) {
246
+ return false;
247
+ }
248
+ return (hasCanonicalTerminalEndpoint(storedControl) &&
249
+ hasCanonicalTerminalEndpoint(currentControl)) || nonEmptyString(storedTerminalId) === nonEmptyString(currentTerminalId);
250
+ }
251
+ function terminalControlsShareIncarnation(left, right) {
252
+ try {
253
+ const leftPid = Number(terminalEndpointFromControlRef(left).processAnchorPid);
254
+ const rightPid = Number(terminalEndpointFromControlRef(right).processAnchorPid);
255
+ return Number.isSafeInteger(leftPid) && leftPid > 1 &&
256
+ Number.isSafeInteger(rightPid) && rightPid > 1 &&
257
+ sameTerminalControlIncarnation(left, right);
258
+ }
259
+ catch {
260
+ return false;
261
+ }
262
+ }
263
+ function exactNativeRolloutMatches(left, right) {
264
+ return Boolean(right &&
265
+ left.fd === right.fd &&
266
+ left.device === right.device &&
267
+ left.inode === right.inode &&
268
+ left.path === right.path);
269
+ }
270
+ function nativeRollout(value) {
271
+ if (!isRecord(value))
272
+ return;
273
+ const fd = nonEmptyString(value.fd);
274
+ const device = nonEmptyString(value.device);
275
+ const inode = nonEmptyString(value.inode);
276
+ const rolloutPath = nonEmptyString(value.path);
277
+ return fd && device && inode && rolloutPath
278
+ ? { fd, device, inode, path: rolloutPath }
279
+ : undefined;
280
+ }
281
+ //# sourceMappingURL=terminal-scoped-approval-authority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-scoped-approval-authority.js","sourceRoot":"","sources":["../../src/terminal-scoped-approval-authority.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { SessionSelectorCandidate } from "./session-selector.js";
2
+ export interface TerminalSelectorEntry {
3
+ agent?: string;
4
+ available_actions?: unknown;
5
+ command?: unknown;
6
+ created_at?: unknown;
7
+ cwd?: unknown;
8
+ elapsed?: unknown;
9
+ executor?: unknown;
10
+ id?: unknown;
11
+ managed?: unknown;
12
+ process_state?: unknown;
13
+ request?: unknown;
14
+ source?: unknown;
15
+ status?: unknown;
16
+ updated_at?: unknown;
17
+ workspace?: unknown;
18
+ [field: string]: unknown;
19
+ }
20
+ export interface TerminalSelectorProjectionPolicy {
21
+ isActiveStatus(status: string): boolean;
22
+ }
23
+ export declare function projectSessionSelectorCandidate(entry: TerminalSelectorEntry, commandName: string, observedAtMs: number, { defaultActionable, mutationsAllowed }: {
24
+ defaultActionable: boolean;
25
+ mutationsAllowed: boolean;
26
+ }, policy: TerminalSelectorProjectionPolicy): SessionSelectorCandidate;
@@ -0,0 +1,81 @@
1
+ import { resolveExecutor } from "./protocol.js";
2
+ import { parseProcessElapsedSeconds } from "./terminal-process-facts.js";
3
+ import { isRecord, nonBlankString as stringValue } from "./value-guards.js";
4
+ function managedTurnCanEnterApprovalPath(entry, policy) {
5
+ const executor = isRecord(entry.executor) ? entry.executor : undefined;
6
+ return (entry.source === "managed_turn" &&
7
+ executor?.transport === "tmux" &&
8
+ policy.isActiveStatus(String(entry.status)));
9
+ }
10
+ function actionForCommand(entry, commandName, policy) {
11
+ const actions = isRecord(entry.available_actions)
12
+ ? entry.available_actions
13
+ : {};
14
+ const actionName = commandName === "retry-callback"
15
+ ? "retry_callback"
16
+ : commandName;
17
+ if (isRecord(actions[actionName])) {
18
+ return actions[actionName];
19
+ }
20
+ if (commandName !== "approve") {
21
+ return undefined;
22
+ }
23
+ if (managedTurnCanEnterApprovalPath(entry, policy)) {
24
+ return {
25
+ tool: "agent_knock_knock_approve",
26
+ arguments: { conversation_id: String(entry.id) }
27
+ };
28
+ }
29
+ const managed = isRecord(entry.managed) ? entry.managed : undefined;
30
+ const currentTurn = isRecord(managed?.current_turn)
31
+ ? managed.current_turn
32
+ : undefined;
33
+ if (currentTurn &&
34
+ managedTurnCanEnterApprovalPath(currentTurn, policy)) {
35
+ return {
36
+ tool: "agent_knock_knock_approve",
37
+ arguments: {
38
+ conversation_id: String(currentTurn.conversation_id ?? currentTurn.id)
39
+ }
40
+ };
41
+ }
42
+ return undefined;
43
+ }
44
+ function actionTargetId(action) {
45
+ const actionArguments = isRecord(action?.arguments)
46
+ ? action.arguments
47
+ : undefined;
48
+ return stringValue(actionArguments?.session_id ??
49
+ actionArguments?.turn_id ??
50
+ actionArguments?.selector ??
51
+ actionArguments?.conversation_id);
52
+ }
53
+ function entryRecency(entry, observedAtMs) {
54
+ const timestamp = Date.parse(String(entry.updated_at ?? entry.created_at ?? ""));
55
+ if (Number.isFinite(timestamp)) {
56
+ return { updatedAtMs: timestamp };
57
+ }
58
+ const elapsedSeconds = parseProcessElapsedSeconds(entry.elapsed);
59
+ return elapsedSeconds === undefined
60
+ ? {}
61
+ : { updatedAtMs: observedAtMs - elapsedSeconds * 1000 };
62
+ }
63
+ export function projectSessionSelectorCandidate(entry, commandName, observedAtMs, { defaultActionable, mutationsAllowed }, policy) {
64
+ const action = mutationsAllowed || commandName === "status"
65
+ ? actionForCommand(entry, commandName, policy)
66
+ : undefined;
67
+ const targetId = actionTargetId(action);
68
+ return {
69
+ id: String(entry.id),
70
+ ...(targetId && targetId !== entry.id ? { targetId } : {}),
71
+ agent: resolveExecutor({ kind: entry.agent }).kind,
72
+ actionable: action !== undefined,
73
+ defaultActionable,
74
+ ...entryRecency(entry, observedAtMs),
75
+ source: stringValue(entry.source),
76
+ status: stringValue(entry.status ?? entry.process_state),
77
+ workspace: stringValue(entry.workspace ?? entry.cwd),
78
+ label: stringValue(entry.request ?? entry.command)
79
+ };
80
+ }
81
+ //# sourceMappingURL=terminal-selector-projection-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-selector-projection-service.js","sourceRoot":"","sources":["../../src/terminal-selector-projection-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import type { CodingAgentSessionProvider } from "./agent-session-provider.js";
2
+ import type { ActiveCodexProcess, ForkContextPackage } from "./codex-session-provider.js";
3
+ import type { ExecutorKind } from "./executors.js";
4
+ import { type Conversation } from "./protocol.js";
5
+ import type { ResolvedTerminalConversation, TerminalBridgeStatus } from "./terminal-agent-bridge.js";
6
+ import { type TerminalControlRef, type TerminalRuntimeIdentity } from "./terminal-agent-adapter.js";
7
+ import { type TerminalStatusJsonObject, type TerminalStatusSummaryPorts } from "./terminal-status-facts.js";
8
+ import type { TranscriptEvent } from "./transcript.js";
9
+ export interface TerminalStatusCliOptions {
10
+ conversation?: unknown;
11
+ conversationId?: unknown;
12
+ idleTimeoutMinutes?: unknown;
13
+ logDir?: unknown;
14
+ maxCommands?: unknown;
15
+ maxMessages?: unknown;
16
+ maxTextLength?: unknown;
17
+ reconcile?: unknown;
18
+ scrollbackLines?: unknown;
19
+ state?: unknown;
20
+ storeDir?: unknown;
21
+ trace?: unknown;
22
+ turn?: unknown;
23
+ workspace?: unknown;
24
+ [option: string]: unknown;
25
+ }
26
+ interface StatusStoreSelection {
27
+ storeDir: string;
28
+ reconciliationConversationId?: string;
29
+ }
30
+ interface LoadedStatusConversation {
31
+ conversation: Conversation;
32
+ statePath: string;
33
+ logPath: string;
34
+ }
35
+ interface TerminalStatusMonitorItem {
36
+ status?: string;
37
+ [field: string]: unknown;
38
+ }
39
+ interface TerminalStatusMonitorReconciliation {
40
+ checked: number;
41
+ launched: number;
42
+ repaired: number;
43
+ collateral_stalls_checked: number;
44
+ collateral_stalls_skipped: number;
45
+ already_running: number;
46
+ skipped: number;
47
+ errors: number;
48
+ items: TerminalStatusMonitorItem[];
49
+ }
50
+ export interface TerminalStatusSelectionPorts {
51
+ statusStoreSelection(options: TerminalStatusCliOptions): StatusStoreSelection;
52
+ resolveTerminalConversation(options: TerminalStatusCliOptions): Promise<ResolvedTerminalConversation | undefined>;
53
+ assertExpectedTerminalSelector(request: {
54
+ options: TerminalStatusCliOptions;
55
+ terminal: ResolvedTerminalConversation;
56
+ }): void;
57
+ loadConversation(options: TerminalStatusCliOptions): LoadedStatusConversation;
58
+ terminalControlFromTakeover(value: unknown): TerminalControlRef | undefined;
59
+ terminalRuntimeIdentity(conversation: Conversation, terminalControl: TerminalControlRef): TerminalRuntimeIdentity;
60
+ }
61
+ export interface TerminalStatusObservationPorts {
62
+ readEvents(logPath: string): TranscriptEvent[];
63
+ createCodexProvider(options: TerminalStatusCliOptions): CodingAgentSessionProvider;
64
+ listActiveCodexSessions(options: TerminalStatusCliOptions, provider: CodingAgentSessionProvider): Promise<ActiveCodexProcess[]>;
65
+ createTerminalBridge(options: TerminalStatusCliOptions): TerminalStatusBridgePort;
66
+ terminalAdapter(options: TerminalStatusCliOptions, agent: ExecutorKind): {
67
+ readonly displayName: string;
68
+ };
69
+ }
70
+ export interface TerminalStatusBridgePort {
71
+ status(agent: ExecutorKind, terminalControl: TerminalControlRef, options?: {
72
+ scrollbackLines?: number;
73
+ runtime?: TerminalRuntimeIdentity;
74
+ }): Promise<TerminalBridgeStatus>;
75
+ }
76
+ export interface TerminalStatusReconciliationPorts {
77
+ reconcileMonitors(options: TerminalStatusCliOptions, request: {
78
+ includeCallbackRecovery: false;
79
+ reason: "status_reconciliation";
80
+ conversationId?: string;
81
+ }): Promise<TerminalStatusMonitorReconciliation>;
82
+ workspaceMatches(configured: unknown, observed: unknown): boolean;
83
+ acquireStateLock(statePath: string): () => void;
84
+ terminalBridgeEnabled(conversation: Conversation): boolean;
85
+ }
86
+ export interface TerminalStatusWatchHintAuthorityPorts {
87
+ terminalListObservation(options: TerminalStatusCliOptions, terminalId: string): Promise<TerminalStatusListObservation | undefined>;
88
+ }
89
+ export interface TerminalStatusListObservation {
90
+ activityState: TerminalBridgeStatus["activity_state"];
91
+ activityReason: string;
92
+ watchActionAvailable: boolean;
93
+ terminalStatus?: TerminalBridgeStatus;
94
+ }
95
+ export interface TerminalStatusCliDependencies {
96
+ selection: TerminalStatusSelectionPorts;
97
+ observation: TerminalStatusObservationPorts;
98
+ reconciliation: TerminalStatusReconciliationPorts;
99
+ watchAuthority: TerminalStatusWatchHintAuthorityPorts;
100
+ projection: TerminalStatusSummaryPorts;
101
+ }
102
+ export interface TerminalStatusIdleReconciliation {
103
+ checked: number;
104
+ closed: number;
105
+ skipped: number;
106
+ idle_timeout_minutes: number;
107
+ }
108
+ export interface TerminalStatusCliFacade {
109
+ runStatus(options: TerminalStatusCliOptions): Promise<void>;
110
+ reconcileIdleConversations(storeDir: string, options?: TerminalStatusCliOptions, now?: Date, conversationId?: string): TerminalStatusIdleReconciliation;
111
+ terminalStatusForControl(agent: ExecutorKind, terminalControl: TerminalControlRef, options: TerminalStatusCliOptions, runtime?: TerminalRuntimeIdentity): Promise<TerminalBridgeStatus>;
112
+ activeCodexProcessForPid(options: TerminalStatusCliOptions, pid: number | undefined): Promise<ActiveCodexProcess | undefined>;
113
+ loadCodexCompletionContexts(input: {
114
+ nativeTakeover?: Readonly<Record<string, unknown>>;
115
+ options: TerminalStatusCliOptions;
116
+ }): Promise<readonly CodexCompletionContextMatch[]>;
117
+ summarizeConversation(conversation: Conversation): TerminalStatusJsonObject;
118
+ }
119
+ export interface CodexCompletionContextMatch {
120
+ context: ForkContextPackage;
121
+ process: ActiveCodexProcess | undefined;
122
+ match: string;
123
+ confidence: "high" | "medium" | "low";
124
+ }
125
+ export declare function createTerminalStatusCliFacade(dependencies: TerminalStatusCliDependencies): TerminalStatusCliFacade;
126
+ export {};