@scotthuang/agent-knock-knock 0.13.18 → 0.14.1

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 (289) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/CONTRIBUTING.md +212 -0
  3. package/README.md +106 -166
  4. package/connectors/deepseek-harness/LICENSE +21 -0
  5. package/connectors/deepseek-harness/README.md +406 -0
  6. package/connectors/pi/LICENSE +21 -0
  7. package/connectors/pi/README.md +446 -0
  8. package/dist/src/backend-public-progress.d.ts +38 -0
  9. package/dist/src/backend-public-progress.js +106 -0
  10. package/dist/src/backend-public-progress.js.map +1 -0
  11. package/dist/src/backend-recovery-semantic.d.ts +16 -0
  12. package/dist/src/backend-recovery-semantic.js +113 -0
  13. package/dist/src/backend-recovery-semantic.js.map +1 -0
  14. package/dist/src/backend-task-recovery.d.ts +103 -0
  15. package/dist/src/backend-task-recovery.js +143 -0
  16. package/dist/src/backend-task-recovery.js.map +1 -0
  17. package/dist/src/callback-transport.d.ts +8 -0
  18. package/dist/src/callback-transport.js +14 -0
  19. package/dist/src/callback-transport.js.map +1 -1
  20. package/dist/src/cli-core.js +20 -10
  21. package/dist/src/cli-core.js.map +1 -1
  22. package/dist/src/cli-runtime-context.d.ts +5 -0
  23. package/dist/src/cli-runtime-context.js.map +1 -1
  24. package/dist/src/codex-app-server-read-client.d.ts +3 -0
  25. package/dist/src/codex-app-server-read-client.js.map +1 -1
  26. package/dist/src/codex-native-cli-adapter.d.ts +6 -0
  27. package/dist/src/codex-native-cli-adapter.js +303 -0
  28. package/dist/src/codex-native-cli-adapter.js.map +1 -0
  29. package/dist/src/codex-native-client-interactions.d.ts +6 -0
  30. package/dist/src/codex-native-client-interactions.js +124 -0
  31. package/dist/src/codex-native-client-interactions.js.map +1 -0
  32. package/dist/src/codex-native-client-rpc.d.ts +21 -0
  33. package/dist/src/codex-native-client-rpc.js +137 -0
  34. package/dist/src/codex-native-client-rpc.js.map +1 -0
  35. package/dist/src/codex-native-client.d.ts +42 -0
  36. package/dist/src/codex-native-client.js +331 -0
  37. package/dist/src/codex-native-client.js.map +1 -0
  38. package/dist/src/codex-native-identity.d.ts +6 -0
  39. package/dist/src/codex-native-identity.js +42 -0
  40. package/dist/src/codex-native-identity.js.map +1 -0
  41. package/dist/src/codex-native-monitor.d.ts +4 -0
  42. package/dist/src/codex-native-monitor.js +92 -0
  43. package/dist/src/codex-native-monitor.js.map +1 -0
  44. package/dist/src/codex-native-outbox.d.ts +16 -0
  45. package/dist/src/codex-native-outbox.js +120 -0
  46. package/dist/src/codex-native-outbox.js.map +1 -0
  47. package/dist/src/codex-native-public-projection.d.ts +545 -0
  48. package/dist/src/codex-native-public-projection.js +182 -0
  49. package/dist/src/codex-native-public-projection.js.map +1 -0
  50. package/dist/src/codex-native-record-store.d.ts +27 -0
  51. package/dist/src/codex-native-record-store.js +111 -0
  52. package/dist/src/codex-native-record-store.js.map +1 -0
  53. package/dist/src/codex-native-response-service.d.ts +69 -0
  54. package/dist/src/codex-native-response-service.js +244 -0
  55. package/dist/src/codex-native-response-service.js.map +1 -0
  56. package/dist/src/codex-native-runtime.d.ts +46 -0
  57. package/dist/src/codex-native-runtime.js +112 -0
  58. package/dist/src/codex-native-runtime.js.map +1 -0
  59. package/dist/src/codex-native-semantic.d.ts +17 -0
  60. package/dist/src/codex-native-semantic.js +175 -0
  61. package/dist/src/codex-native-semantic.js.map +1 -0
  62. package/dist/src/codex-native-snapshot.d.ts +19 -0
  63. package/dist/src/codex-native-snapshot.js +160 -0
  64. package/dist/src/codex-native-snapshot.js.map +1 -0
  65. package/dist/src/codex-native-state-store.d.ts +61 -0
  66. package/dist/src/codex-native-state-store.js +132 -0
  67. package/dist/src/codex-native-state-store.js.map +1 -0
  68. package/dist/src/codex-native-task-service.d.ts +71 -0
  69. package/dist/src/codex-native-task-service.js +503 -0
  70. package/dist/src/codex-native-task-service.js.map +1 -0
  71. package/dist/src/codex-native-types.d.ts +92 -0
  72. package/dist/src/codex-native-types.js +15 -0
  73. package/dist/src/codex-native-types.js.map +1 -0
  74. package/dist/src/conversation-list.d.ts +12 -0
  75. package/dist/src/conversation-list.js +30 -0
  76. package/dist/src/conversation-list.js.map +1 -0
  77. package/dist/src/conversation-route-dispatch.d.ts +13 -0
  78. package/dist/src/conversation-route-dispatch.js +66 -0
  79. package/dist/src/conversation-route-dispatch.js.map +1 -0
  80. package/dist/src/conversation-route-legacy.d.ts +18 -0
  81. package/dist/src/conversation-route-legacy.js +54 -0
  82. package/dist/src/conversation-route-legacy.js.map +1 -0
  83. package/dist/src/conversation-route-store.d.ts +51 -0
  84. package/dist/src/conversation-route-store.js +126 -0
  85. package/dist/src/conversation-route-store.js.map +1 -0
  86. package/dist/src/conversation-routing-cli-adapter.d.ts +12 -0
  87. package/dist/src/conversation-routing-cli-adapter.js +211 -0
  88. package/dist/src/conversation-routing-cli-adapter.js.map +1 -0
  89. package/dist/src/conversation-routing-commands.d.ts +11 -0
  90. package/dist/src/conversation-routing-commands.js +85 -0
  91. package/dist/src/conversation-routing-commands.js.map +1 -0
  92. package/dist/src/conversation-routing-home.d.ts +26 -0
  93. package/dist/src/conversation-routing-home.js +105 -0
  94. package/dist/src/conversation-routing-home.js.map +1 -0
  95. package/dist/src/conversation-routing-identity.d.ts +40 -0
  96. package/dist/src/conversation-routing-identity.js +174 -0
  97. package/dist/src/conversation-routing-identity.js.map +1 -0
  98. package/dist/src/conversation-runtime-route-store.d.ts +11 -0
  99. package/dist/src/conversation-runtime-route-store.js +118 -0
  100. package/dist/src/conversation-runtime-route-store.js.map +1 -0
  101. package/dist/src/desktop-async-interactions.d.ts +15 -0
  102. package/dist/src/desktop-async-interactions.js +88 -0
  103. package/dist/src/desktop-async-interactions.js.map +1 -0
  104. package/dist/src/desktop-async-state.d.ts +5 -0
  105. package/dist/src/desktop-async-state.js +53 -0
  106. package/dist/src/desktop-async-state.js.map +1 -0
  107. package/dist/src/desktop-cli-adapter.d.ts +7 -0
  108. package/dist/src/desktop-cli-adapter.js +343 -0
  109. package/dist/src/desktop-cli-adapter.js.map +1 -0
  110. package/dist/src/desktop-cli-controls.d.ts +9 -0
  111. package/dist/src/desktop-cli-controls.js +45 -0
  112. package/dist/src/desktop-cli-controls.js.map +1 -0
  113. package/dist/src/desktop-command-presentation.d.ts +2 -0
  114. package/dist/src/desktop-command-presentation.js +31 -0
  115. package/dist/src/desktop-command-presentation.js.map +1 -0
  116. package/dist/src/desktop-control-semantic.d.ts +8 -0
  117. package/dist/src/desktop-control-semantic.js +68 -0
  118. package/dist/src/desktop-control-semantic.js.map +1 -0
  119. package/dist/src/desktop-identity.d.ts +5 -0
  120. package/dist/src/desktop-identity.js +40 -0
  121. package/dist/src/desktop-identity.js.map +1 -0
  122. package/dist/src/desktop-interaction-projection.d.ts +57 -0
  123. package/dist/src/desktop-interaction-projection.js +196 -0
  124. package/dist/src/desktop-interaction-projection.js.map +1 -0
  125. package/dist/src/desktop-interaction-state.d.ts +3 -0
  126. package/dist/src/desktop-interaction-state.js +48 -0
  127. package/dist/src/desktop-interaction-state.js.map +1 -0
  128. package/dist/src/desktop-ipc-async-answer.d.ts +9 -0
  129. package/dist/src/desktop-ipc-async-answer.js +71 -0
  130. package/dist/src/desktop-ipc-async-answer.js.map +1 -0
  131. package/dist/src/desktop-ipc-client.d.ts +47 -0
  132. package/dist/src/desktop-ipc-client.js +400 -0
  133. package/dist/src/desktop-ipc-client.js.map +1 -0
  134. package/dist/src/desktop-ipc-native-operations.d.ts +11 -0
  135. package/dist/src/desktop-ipc-native-operations.js +126 -0
  136. package/dist/src/desktop-ipc-native-operations.js.map +1 -0
  137. package/dist/src/desktop-ipc-transport.d.ts +13 -0
  138. package/dist/src/desktop-ipc-transport.js +123 -0
  139. package/dist/src/desktop-ipc-transport.js.map +1 -0
  140. package/dist/src/desktop-list.d.ts +25 -0
  141. package/dist/src/desktop-list.js +55 -0
  142. package/dist/src/desktop-list.js.map +1 -0
  143. package/dist/src/desktop-metadata-reader.d.ts +30 -0
  144. package/dist/src/desktop-metadata-reader.js +182 -0
  145. package/dist/src/desktop-metadata-reader.js.map +1 -0
  146. package/dist/src/desktop-monitor.d.ts +4 -0
  147. package/dist/src/desktop-monitor.js +101 -0
  148. package/dist/src/desktop-monitor.js.map +1 -0
  149. package/dist/src/desktop-public-projection.d.ts +6 -0
  150. package/dist/src/desktop-public-projection.js +134 -0
  151. package/dist/src/desktop-public-projection.js.map +1 -0
  152. package/dist/src/desktop-request-interactions.d.ts +14 -0
  153. package/dist/src/desktop-request-interactions.js +144 -0
  154. package/dist/src/desktop-request-interactions.js.map +1 -0
  155. package/dist/src/desktop-response-dispatch.d.ts +14 -0
  156. package/dist/src/desktop-response-dispatch.js +19 -0
  157. package/dist/src/desktop-response-dispatch.js.map +1 -0
  158. package/dist/src/desktop-response-evidence.d.ts +4 -0
  159. package/dist/src/desktop-response-evidence.js +19 -0
  160. package/dist/src/desktop-response-evidence.js.map +1 -0
  161. package/dist/src/desktop-response-service.d.ts +11 -0
  162. package/dist/src/desktop-response-service.js +188 -0
  163. package/dist/src/desktop-response-service.js.map +1 -0
  164. package/dist/src/desktop-response-store.d.ts +35 -0
  165. package/dist/src/desktop-response-store.js +58 -0
  166. package/dist/src/desktop-response-store.js.map +1 -0
  167. package/dist/src/desktop-response-types.d.ts +20 -0
  168. package/dist/src/desktop-response-types.js +2 -0
  169. package/dist/src/desktop-response-types.js.map +1 -0
  170. package/dist/src/desktop-response-value.d.ts +6 -0
  171. package/dist/src/desktop-response-value.js +31 -0
  172. package/dist/src/desktop-response-value.js.map +1 -0
  173. package/dist/src/desktop-runtime.d.ts +153 -0
  174. package/dist/src/desktop-runtime.js +88 -0
  175. package/dist/src/desktop-runtime.js.map +1 -0
  176. package/dist/src/desktop-semantic.d.ts +21 -0
  177. package/dist/src/desktop-semantic.js +140 -0
  178. package/dist/src/desktop-semantic.js.map +1 -0
  179. package/dist/src/desktop-session-catalog.d.ts +68 -0
  180. package/dist/src/desktop-session-catalog.js +225 -0
  181. package/dist/src/desktop-session-catalog.js.map +1 -0
  182. package/dist/src/desktop-session-controls.d.ts +145 -0
  183. package/dist/src/desktop-session-controls.js +176 -0
  184. package/dist/src/desktop-session-controls.js.map +1 -0
  185. package/dist/src/desktop-sidebar-metadata.d.ts +27 -0
  186. package/dist/src/desktop-sidebar-metadata.js +83 -0
  187. package/dist/src/desktop-sidebar-metadata.js.map +1 -0
  188. package/dist/src/desktop-sidebar-projects.d.ts +10 -0
  189. package/dist/src/desktop-sidebar-projects.js +31 -0
  190. package/dist/src/desktop-sidebar-projects.js.map +1 -0
  191. package/dist/src/desktop-sidebar-selection.d.ts +28 -0
  192. package/dist/src/desktop-sidebar-selection.js +85 -0
  193. package/dist/src/desktop-sidebar-selection.js.map +1 -0
  194. package/dist/src/desktop-snapshot-details.d.ts +4 -0
  195. package/dist/src/desktop-snapshot-details.js +116 -0
  196. package/dist/src/desktop-snapshot-details.js.map +1 -0
  197. package/dist/src/desktop-snapshot.d.ts +11 -0
  198. package/dist/src/desktop-snapshot.js +281 -0
  199. package/dist/src/desktop-snapshot.js.map +1 -0
  200. package/dist/src/desktop-state-store.d.ts +72 -0
  201. package/dist/src/desktop-state-store.js +269 -0
  202. package/dist/src/desktop-state-store.js.map +1 -0
  203. package/dist/src/desktop-task-interactions.d.ts +10 -0
  204. package/dist/src/desktop-task-interactions.js +93 -0
  205. package/dist/src/desktop-task-interactions.js.map +1 -0
  206. package/dist/src/desktop-task-recovery.d.ts +38 -0
  207. package/dist/src/desktop-task-recovery.js +172 -0
  208. package/dist/src/desktop-task-recovery.js.map +1 -0
  209. package/dist/src/desktop-task-service.d.ts +54 -0
  210. package/dist/src/desktop-task-service.js +442 -0
  211. package/dist/src/desktop-task-service.js.map +1 -0
  212. package/dist/src/desktop-types.d.ts +283 -0
  213. package/dist/src/desktop-types.js +13 -0
  214. package/dist/src/desktop-types.js.map +1 -0
  215. package/dist/src/host-monitor-reconciliation.js +36 -4
  216. package/dist/src/host-monitor-reconciliation.js.map +1 -1
  217. package/dist/src/host-profile-runtime.js +7 -3
  218. package/dist/src/host-profile-runtime.js.map +1 -1
  219. package/dist/src/local-codex-cli-adapter.d.ts +7 -0
  220. package/dist/src/local-codex-cli-adapter.js +13 -0
  221. package/dist/src/local-codex-cli-adapter.js.map +1 -0
  222. package/dist/src/monitor-deadline-policy.d.ts +8 -0
  223. package/dist/src/monitor-deadline-policy.js +16 -0
  224. package/dist/src/monitor-deadline-policy.js.map +1 -0
  225. package/dist/src/openclaw-callback-transport.js +2 -1
  226. package/dist/src/openclaw-callback-transport.js.map +1 -1
  227. package/dist/src/semantic-conversation-target.d.ts +4 -0
  228. package/dist/src/semantic-conversation-target.js +20 -0
  229. package/dist/src/semantic-conversation-target.js.map +1 -0
  230. package/dist/src/semantic-permission-control.js +47 -9
  231. package/dist/src/semantic-permission-control.js.map +1 -1
  232. package/dist/src/semantic-private-authority-offers.d.ts +1 -1
  233. package/dist/src/semantic-private-authority-offers.js +3 -1
  234. package/dist/src/semantic-private-authority-offers.js.map +1 -1
  235. package/dist/src/semantic-tool-command-helpers.d.ts +6 -0
  236. package/dist/src/semantic-tool-command-helpers.js +199 -78
  237. package/dist/src/semantic-tool-command-helpers.js.map +1 -1
  238. package/dist/src/semantic-tool-descriptions.d.ts +2 -1
  239. package/dist/src/semantic-tool-descriptions.js +84 -35
  240. package/dist/src/semantic-tool-descriptions.js.map +1 -1
  241. package/dist/src/semantic-tool-list-projection.js +66 -2
  242. package/dist/src/semantic-tool-list-projection.js.map +1 -1
  243. package/dist/src/semantic-tool-presentation.js +76 -7
  244. package/dist/src/semantic-tool-presentation.js.map +1 -1
  245. package/dist/src/semantic-tool-runtime.js +129 -29
  246. package/dist/src/semantic-tool-runtime.js.map +1 -1
  247. package/dist/src/semantic-tool-schemas.d.ts +410 -27
  248. package/dist/src/semantic-tool-schemas.js +176 -88
  249. package/dist/src/semantic-tool-schemas.js.map +1 -1
  250. package/dist/src/terminal-action-contracts.js +10 -6
  251. package/dist/src/terminal-action-contracts.js.map +1 -1
  252. package/dist/src/terminal-command-cli-adapter.js +4 -4
  253. package/dist/src/terminal-command-cli-adapter.js.map +1 -1
  254. package/dist/src/terminal-command-dispatch-preparation.js +2 -1
  255. package/dist/src/terminal-command-dispatch-preparation.js.map +1 -1
  256. package/dist/src/terminal-list-cli-adapter.d.ts +1 -0
  257. package/dist/src/terminal-list-cli-adapter.js +6 -3
  258. package/dist/src/terminal-list-cli-adapter.js.map +1 -1
  259. package/dist/src/terminal-monitor-decision-policy.d.ts +1 -1
  260. package/dist/src/terminal-monitor-launch-plan.js +3 -2
  261. package/dist/src/terminal-monitor-launch-plan.js.map +1 -1
  262. package/dist/src/terminal-monitor-supervision-cli-adapter.js +2 -2
  263. package/dist/src/terminal-monitor-supervision-cli-adapter.js.map +1 -1
  264. package/dist/src/terminal-submission-retry-reconciliation.js +2 -2
  265. package/dist/src/terminal-submission-retry-reconciliation.js.map +1 -1
  266. package/dist/src/terminal-user-send-intent.d.ts +2 -0
  267. package/dist/src/terminal-user-send-intent.js +11 -3
  268. package/dist/src/terminal-user-send-intent.js.map +1 -1
  269. package/dist/src/terminal-watch-cli-adapter.js +4 -4
  270. package/dist/src/terminal-watch-cli-adapter.js.map +1 -1
  271. package/docs/architecture/current-architecture.md +313 -0
  272. package/docs/architecture/interactive-terminal-response.md +276 -0
  273. package/docs/architecture/issue-126-final-report.md +248 -0
  274. package/docs/architecture/orchestration-refactor-history.md +2987 -0
  275. package/docs/architecture/orchestration-refactor.md +21 -0
  276. package/docs/backend-task-recovery.md +98 -0
  277. package/docs/bidirectional-agent-protocol.md +260 -0
  278. package/docs/codex-cli-native-compatibility.md +246 -0
  279. package/docs/codex-desktop-compatibility.md +414 -0
  280. package/docs/openclaw-operations.md +281 -0
  281. package/docs/openclaw-session-turn-delivery-requirement.md +45 -0
  282. package/docs/operator-guide.md +572 -0
  283. package/docs/storage-and-logging.md +91 -0
  284. package/docs/test-performance-issue-108.md +80 -0
  285. package/docs/test-performance-issue-120.md +226 -0
  286. package/docs/testing.md +628 -0
  287. package/openclaw.plugin.json +8 -4
  288. package/package.json +6 -13
  289. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +66 -15
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.1 - 2026-10-10
4
+
5
+ - Add bounded, redacted public progress to Codex CLI backend and Desktop conversation/task Status: the latest commentary and up to two action summaries share an 800-code-point, grapheme-safe budget. Keep exact Watch turn attribution, native timestamps and read failures explicit; List and terminal screen output are unchanged.
6
+ - Share a 720-minute default monitoring hard deadline across backend and terminal Send/Watch entry points and service fallbacks. Backend Renew uses the hard-timeout configuration; terminal managed Renew retains its independent inactivity window. Existing deadlines, replay identities and accepted callback records are unchanged.
7
+
8
+ ### Validation boundaries
9
+
10
+ - Verified public progress during an active task, 720-minute Send monitoring, a single local completion acknowledgement, and idempotent Send on macOS with Codex CLI and shared app-server both at 0.162.1. This does not establish a new numeric minimum or claim all native operations were repeated.
11
+ - Desktop behavior is covered by regression tests; Desktop live verification was explicitly skipped for this release. The existing exact supported app/build requirement remains unchanged.
12
+
13
+ ## 0.14.0 - 2026-10-10
14
+
15
+ ### Added
16
+
17
+ - Control loaded Codex CLI conversations through their shared app-server without tmux, Herdr, or terminal input. Add native discovery, exact task send/Watch, durable completion and interaction callbacks, command/file approvals, blocking and async answers, and per-thread permission settings.
18
+ - Discover Codex Desktop conversations alongside terminal sessions, with search, project filtering, pagination, and separate catalog and live-owner evidence. Keep unloaded and creator-unknown conversations discoverable without treating metadata as permission to send.
19
+ - Send tasks to an exact existing Desktop conversation through its original owner, record a durable send intent, and bind monitoring to the accepted native task. Repeated message IDs and uncertain submissions never automatically resend task text.
20
+ - Add Desktop Status and exact task Watch, with durable completion and manual-attention notifications. Monitoring retains its original native task when a later task starts; stopping a Watch leaves the Desktop task running.
21
+ - Add exact-task Recover, observation Renew, managed Close, and manual Retry Callback for direct Codex CLI and Desktop. Separate stopping observation from closing Send management, retain unresolved submission ownership until explicitly closed, and preserve callback identity and uncertain-outcome boundaries without terminal fallback.
22
+ - Add Desktop command/file approval decisions and blocking questionnaire responses through the original conversation owner, with exact native request and result evidence.
23
+ - Add typed responses for Desktop asynchronous questions in the exact active task, with durable response deduplication, native answer confirmation, and expiry of undelivered obsolete reminders.
24
+ - Add per-conversation Desktop Read Only/Default/Full Access settings, explicit model/effort and Plan/default controls, and exact-task cancellation. Verify effective settings instead of treating acknowledgements as success; report the unavailable model catalog explicitly.
25
+
26
+ ### Changed
27
+
28
+ - Present unified `conversations[]` for Send, Status, and Watch, preferring a verified Codex backend and preserving eligible terminal fallback. Coalesce only exact native identity matches, keep task/interaction routes fixed, and never replay an uncertain mutation through another transport. Preserve raw CLI provider arrays for diagnostics and existing clients.
29
+ - Apply backend-first capability selection across Codex conversation commands, including permission reads/updates and native interaction actions. Allow targeted Status and other eligible operations to resolve an idle terminal through the existing exact native status inspection; preserve no-input List, bound task/interaction identities, and terminal-only lifecycle semantics.
30
+ - Default Desktop List to persisted expanded sidebar membership, with explicit `desktop_view: "history"` / `--desktop-view history` for the broader historical catalog. Keep unconnected rows visible and report unsupported layouts without falling back to history; live counts describe the current page only.
31
+
32
+ ### Fixed
33
+
34
+ - Recover missed Codex Desktop asynchronous-question notifications by reading questions from native messages as well as pending requests.
35
+ - Preserve exact legacy terminal identifiers and explicit managed-only operations through conversation routing. Keep routing reservations independent of managed Store writer locks so eligible physical Send retains its existing compatibility and lock ordering.
36
+
37
+ ### Compatibility
38
+
39
+ - Review direct CLI operations on macOS with Codex CLI `0.160.0` and shared app-server `0.162.0`. The local CLI and daemon installation observed at `0.162.1` on 2026-10-10 is not a new end-to-end verification or a numeric minimum; runtime identity and protocol checks determine direct-control availability.
40
+ - Require the reviewed macOS Codex Desktop `26.1002.52244` build `13536` for native writes through its private IPC. This exact build is not a minimum-version promise. Loading inactive conversations and launching replacement CLI sessions remain unsupported.
41
+ - Preserve the existing tmux and Herdr adapters and their terminal-specific interaction controls.
42
+ - Keep Pi and DeepSeek Harness connector releases independent. Their current manifests still pin AKK `0.13.3`; releasing the core package does not upgrade those connector runtimes.
43
+
3
44
  ## 0.13.18 - 2026-10-04
4
45
 
5
46
  - Adapt Codex 0.160.0 async-question Option-key hints while preserving exact versioned input checks and older keymaps.
@@ -0,0 +1,212 @@
1
+ # Contributing
2
+
3
+ Thanks for taking the time to improve Agent Knock Knock.
4
+
5
+ ## Development Setup
6
+
7
+ Use Node.js 22.19 or newer; Node.js 24 is recommended. GitHub Actions runners are intentionally disabled during the current rapid-iteration phase, so pull requests must include the local verification results described below. The supported Node.js boundary remains part of release compatibility even though GitHub does not currently run a hosted matrix.
8
+
9
+ ```bash
10
+ npm ci
11
+ npm run build
12
+ npm run test:fast
13
+ ```
14
+
15
+ The fast tier is the only test tier for normal development, review, and local
16
+ installation, as required by [AGENTS.md](AGENTS.md). Do not run integration or
17
+ full suites merely to open a pull request. Full/release tests are reserved for
18
+ the immediate gate before an actual npm or ClawHub publication. See
19
+ [docs/testing.md](docs/testing.md) for the tier manifest and release workflow.
20
+
21
+ For local OpenClaw testing, link the plugin from this checkout:
22
+
23
+ ```bash
24
+ openclaw plugins install --link .
25
+ openclaw plugins enable agent-knock-knock
26
+ openclaw gateway restart
27
+ ```
28
+
29
+ ## Checks
30
+
31
+ Before opening a pull request, run:
32
+
33
+ ```bash
34
+ npm run typecheck
35
+ npm run test:fast
36
+ npm pack --dry-run
37
+ ```
38
+
39
+ `npm run test:fast` includes the build and Skill consistency check. `npm test`
40
+ is an alias for `test:full` and belongs to release validation, not this
41
+ development loop. Build, type checking, architecture/evidence validators, and
42
+ non-test packaging checks do not authorize a broader test tier.
43
+
44
+ The pull request description is the verification record while hosted Actions
45
+ are disabled: include the local Node.js version, exact commands, pass counts,
46
+ and any intentionally skipped credentialed smoke. `package.json` currently has
47
+ no separate lint script, so use `git diff --check` as the whitespace/patch
48
+ format gate and report that fact explicitly.
49
+
50
+ Routine releases verify the current build-pinned OpenClaw host through
51
+ `npm run test:release`. Run the complete isolated host matrix periodically and
52
+ whenever a declared OpenClaw compatibility floor changes:
53
+
54
+ ```bash
55
+ npm run compat:openclaw
56
+ ```
57
+
58
+ The complete matrix derives the supported Host, Plugin API, and build versions
59
+ from `package.json`, then verifies the adjacent failing API boundary. It uses
60
+ only temporary OpenClaw state and does not make credentialed coding-agent
61
+ turns.
62
+
63
+ If your change touches logging, callbacks, or trace output, also review the output for secrets and local-only data. Trace output must not expose agent thinking text, raw callback payloads, gateway tokens, API keys, passwords, or proxy credentials.
64
+
65
+ ## Native Lifecycle Live-Smoke Diagnostic
66
+
67
+ This optional diagnostic runs a fresh real-agent check in addition to the
68
+ deterministic suite. The runner uses existing authenticated coding-agent
69
+ processes and can incur API cost. It never launches, upgrades, restarts, kills,
70
+ or arbitrarily selects a process, and ordinary `npm test` never invokes it.
71
+ During the current rapid-iteration phase, npm and ClawHub publishing do not
72
+ require this diagnostic or consume its evidence.
73
+
74
+ Prepare one supported Codex pane and one supported Claude Code pane in tmux.
75
+ Both must be idle with an empty composer and have no active Turn, approval,
76
+ callback, dispatch, or lifecycle transition. Record each exact target, tmux
77
+ pane PID, and running agent version:
78
+
79
+ ```bash
80
+ tmux list-panes -a -F '#{session_name}:#{window_index}.#{pane_index} #{pane_pid} #{pane_current_command}'
81
+ npm run build
82
+ node dist/src/cli.js list --terminal-debug
83
+ ```
84
+
85
+ Each starting native thread `A` must already be persisted by its agent as an
86
+ exact same-workspace resume candidate. In particular, a newly launched Codex
87
+ composer with no completed native turn is not a safe origin: `/clear` can erase
88
+ its only identity before Codex writes a resumable thread row and rollout. Seed
89
+ that pane with one harmless native turn, wait until it is idle, and verify the
90
+ thread is listed before running the diagnostic. The diagnostic's internal New preflight
91
+ rechecks unique Session ownership and a fresh candidate token before `/clear`.
92
+ Do not type in either selected pane while the matrix is running: AKK's locks
93
+ serialize AKK operations, but they cannot fence direct human tmux input.
94
+
95
+ Keep the evidence outside the repository. The worktree must be clean because
96
+ the result is bound to `git rev-parse HEAD` and the current `package.json`
97
+ version. The runner also fingerprints its compiled JavaScript before and after
98
+ the matrix and fails closed if it changes. Run the complete matrix with both
99
+ explicit opt-ins:
100
+
101
+ ```bash
102
+ AKK_RUN_LIVE_LIFECYCLE_SMOKE=1 npm run smoke:lifecycle -- \
103
+ --confirm-live \
104
+ --codex-target <session:window.pane> \
105
+ --codex-expected-pane-pid <pane-pid> \
106
+ --codex-expected-version <codex-version> \
107
+ --claude-target <session:window.pane> \
108
+ --claude-expected-pane-pid <pane-pid> \
109
+ --claude-expected-version <claude-version> \
110
+ --evidence </absolute/private/path/live-lifecycle-evidence.json>
111
+ ```
112
+
113
+ Omit all three `--claude-*` arguments for a Codex-only diagnostic run, or all
114
+ three `--codex-*` arguments for a Claude-only run. Complete matrix evidence
115
+ still requires both agents.
116
+
117
+ The runner reports one of three outcomes:
118
+
119
+ - `passed`: the exact pane completed `A → new B → one Send in B → resume A`
120
+ and finished idle on A with the same process and workspace.
121
+ - `failed`: a check failed with a proven outcome. Inspect the named pane and
122
+ evidence before deciding whether to run again.
123
+ - `uncertain`: AKK cannot prove whether submitted terminal input completed.
124
+ Do not rerun the lifecycle command. Inspect that exact pane, run
125
+ `node dist/src/cli.js list --terminal-debug`, and recover manually with only
126
+ the newly advertised exact action once the current native thread is known.
127
+
128
+ The persisted starting thread `A` may already have a managed AKK Session or
129
+ may be an unmanaged, verified native thread. Evidence records that distinction
130
+ explicitly.
131
+ For an unmanaged start, New has no source Session, creates `B` at binding
132
+ generation 1, and exact Resume materializes a new Session for `A` at generation
133
+ 1. For a managed start, exact Resume returns to the same `A` Session and advances
134
+ its binding generation by exactly one. Neither lifecycle operation may create a
135
+ Turn in either path.
136
+
137
+ The JSON contains only allowlisted diagnostic facts and salted fingerprints. It
138
+ does not contain prompts, replies, transcripts, raw native/Session/Turn/
139
+ transition/binding IDs, callback payloads, or credentials. A non-passing run
140
+ still writes evidence for diagnosis, but it cannot pass local verification.
141
+
142
+ To validate passing evidence against the exact clean commit locally:
143
+
144
+ ```bash
145
+ release_version="$(node -p "require('./package.json').version")"
146
+ release_commit="$(git rev-parse HEAD)"
147
+
148
+ npm run smoke:lifecycle:attest -- \
149
+ --evidence </absolute/private/path/live-lifecycle-evidence.json> \
150
+ --expected-version "${release_version}" \
151
+ --expected-commit "${release_commit}" \
152
+ --require-matrix \
153
+ --max-age-hours 72
154
+ ```
155
+
156
+ The verifier and attestation format remain available so a mandatory release
157
+ gate can be restored later without redesigning the lifecycle evidence model.
158
+
159
+ ### Opt-in monitor fault injection
160
+
161
+ #93 adds a separate liveness check to the #88 diagnostic contract. Run it only
162
+ against a disposable, already managed Turn while the OpenClaw Gateway and its
163
+ AKK plugin service are running:
164
+
165
+ 1. Start one real background Turn in an explicitly selected idle tmux pane and
166
+ retain its `state_path` and `event_log_path` from the send result.
167
+ 2. From that Turn's event log, read the latest
168
+ `terminal_bridge_monitor_launch.pid`. Verify it is neither the tmux pane PID
169
+ nor the Codex/Claude process PID, then terminate only that monitor process.
170
+ 3. Do not invoke AKK `status`, `list`, or `reconcile-monitors`. Let the native
171
+ Turn finish normally.
172
+ 4. Within 30 seconds after durable completion, while the Store remains
173
+ writable, require evidence for `terminal_bridge_monitor_exit_observed`, a
174
+ `terminal_bridge_monitor_launch` whose reason is
175
+ `unexpected_exit_recovery`, and the replacement
176
+ `terminal_bridge_monitor_started`. The detached child and supervisor append
177
+ their records independently, so do not require those diagnostic records to
178
+ have a total ordering. Require exactly one
179
+ `terminal_bridge_completion_detected`, exactly one
180
+ `terminal_bridge_completion_claimed`, and one immutable `done` callback or
181
+ outbox entry.
182
+ 5. Verify the replacement kept the same Session, Turn, terminal binding ID and
183
+ binding generation. A changed binding must fence the old monitor instead of
184
+ completing the Turn.
185
+
186
+ This scenario deliberately kills only AKK's detached monitor. It does not
187
+ weaken the lifecycle runner's promise never to launch, restart, upgrade, or
188
+ kill a coding-agent process. Store-lock fault injection is deterministic in the
189
+ test suite: holding `.akk-writer.lock` beyond ten seconds must produce a
190
+ deferred diagnostic, resume after release, and never be reported as binding
191
+ supersession.
192
+
193
+ ## Adding a Terminal Agent Adapter
194
+
195
+ - Implement the `TerminalAgentAdapter` interface defined in `src/terminal-agent-adapter.ts`, including process classification, screen parsing, declared capabilities, ordered approval keys, ordered cancellation keys, and any screen or durable completion detection.
196
+ - Add the complete adapter once to `productionTerminalAgentAdapters` in `src/terminal-agent-registry.ts`. Unsupported capabilities must stay disabled so the bridge fails closed.
197
+ - Keep tmux discovery, capture, and input in `TerminalControlProvider`; agent-specific prompt and completion parsing belongs in the adapter.
198
+ - Add adapter and bridge tests covering discovery, agent-aware IDs, status, send, cancel, approval revalidation and key order, monitoring, completion, and disabled capabilities. Keep legacy `terminal:tmux:<target>:<pid>` IDs working as Codex.
199
+
200
+ ## Pull Requests
201
+
202
+ - Keep changes focused on one behavior or feature.
203
+ - Include tests for CLI behavior, protocol changes, callback delivery, or trace parsing.
204
+ - Update `README.md` or `CHANGELOG.md` when user-visible behavior changes.
205
+ - Do not commit `dist/`, `node_modules/`, runtime logs, local OpenClaw state, or `.env` files.
206
+ - Complete the pull request checklist and attach local typecheck, full test, package, and compatibility results. When hosted Actions are re-enabled, the Node.js 22 and 24 jobs become required again.
207
+
208
+ For installation and usage help, see [SUPPORT.md](SUPPORT.md).
209
+
210
+ ## Security Reports
211
+
212
+ Do not report vulnerabilities through public issues. See `SECURITY.md`.
package/README.md CHANGED
@@ -2,204 +2,144 @@
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/%40scotthuang%2Fagent-knock-knock)](https://www.npmjs.com/package/@scotthuang/agent-knock-knock)
4
4
  [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D22.19-339933)](https://nodejs.org/)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/scotthuang/agent-knock-knock/blob/main/LICENSE)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
6
 
7
- Agent Knock Knock lets **OpenClaw, Pi, or DeepSeek Harness** control Codex and Claude Code already running in **tmux or Herdr**. Watch work without staring at a remote terminal, send the next instruction from chat, and get callbacks when the coding agent finishes or needs attention.
7
+ **Let your agent orchestrate the coding conversations you already use.**
8
+ AKK lets a controller such as OpenClaw discover your conversations, send tasks,
9
+ and receive completion or question notifications while you stay in chat.
8
10
 
9
- AKK never launches a hidden replacement agent. The controller Host, the human, and AKK all use the same visible terminal and native coding-agent session.
11
+ **Codex CLI shared-backend connections and Codex Desktop work without tmux or
12
+ Herdr.** AKK controls the original conversation, so you see the same work in
13
+ Codex. Claude Code and applicable Codex terminal workflows use tmux or Herdr.
14
+ AKK does not launch a hidden replacement agent.
10
15
 
11
- **Stay in the terminal. Stay in control. No hooks. No agent-side plugins. No YOLO.**
16
+ AKK 0.14.0 introduces Codex CLI shared-backend control, Codex Desktop support,
17
+ unified conversation routing, and exact-task recovery. **0.14.1 adds bounded
18
+ public progress in Status and shared 12-hour monitoring defaults.** See the
19
+ [release notes](CHANGELOG.md#0141---2026-10-10) for changes and validation limits.
12
20
 
13
- ## Install for OpenClaw
21
+ ## What you can do
14
22
 
15
- You need OpenClaw `2026.6.5`+, Node.js `22.19.0`+, and an authenticated `codex` or `claude` CLI running as the same OS user.
23
+ - **Find and select conversations** by project and title. Desktop also lists
24
+ saved sidebar entries that are not connected; those rows cannot receive tasks.
25
+ - **Send and follow an exact task**, or Watch work you started yourself.
26
+ Results and attention notifications return to the initiating controller.
27
+ - **Answer supported questions, approve requests, and set permissions** through
28
+ the selected provider's advertised actions. Desktop also supports explicit
29
+ model settings and exact task cancellation.
30
+ - **Recover monitoring and callback failures** without resending the task.
31
+ [Backend Recovery](docs/backend-task-recovery.md) distinguishes Recover,
32
+ Renew, Close, Unwatch, and Retry Callback.
16
33
 
17
- ```bash
18
- openclaw plugins install clawhub:@scotthuang/agent-knock-knock
19
- openclaw gateway restart
20
- ```
21
-
22
- Start a shared coding-agent terminal in your project:
23
-
24
- ```bash
25
- cd /absolute/path/to/project
26
- tmux new-session -s akk-work -c "$(pwd -P)" codex
27
- ```
28
-
29
- Use `claude` instead of `codex` if preferred. Herdr users can follow the [Herdr quick start](docs/quickstart-herdr.md).
30
-
31
- In OpenClaw, first send:
32
-
33
- ```text
34
- /akk doctor
35
- ```
34
+ ## Quick start with OpenClaw
36
35
 
37
- After `AKK doctor: ready`, send a separate message:
36
+ Use Node.js `22.19.0`+, OpenClaw `2026.6.5`+, and an authenticated coding agent
37
+ under the same OS user as AKK.
38
38
 
39
- ```text
40
- /akk inspect this repository and summarize it
41
- ```
42
-
43
- That is the complete first-task flow. For terminal setup and multiple panes, see the [tmux quick start](docs/quickstart-tmux.md). Direct `/akk ...` commands need no OpenClaw tool-policy changes.
44
-
45
- ## Install for Pi
39
+ ### 1. Install AKK
46
40
 
47
- Pi can be the controller Host without OpenClaw. The current connector targets Pi `0.84.4`:
41
+ Use ClawHub for the OpenClaw plugin, including the 0.14 backend and Desktop
42
+ features:
48
43
 
49
44
  ```bash
50
- npm install -g @earendil-works/pi-coding-agent@0.84.4
51
- pi install npm:@scotthuang/agent-knock-knock-pi@next
52
- pi
53
- ```
54
-
55
- Pi should show `AKK ready`. With Codex or Claude Code already running in tmux or Herdr, enter `/akk list`. The connector provides `/akk`, the complete capability-handshake-verified semantic tool catalog, the bundled `agent-knock-knock` skill, callbacks to the initiating Pi session, and native approval dialogs. See the [Pi connector guide](connectors/pi/README.md).
56
-
57
- ## Install for DeepSeek Harness
58
-
59
- The connector supports DeepSeek Harness Web `0.1.1-rc.2`, `0.1.2-alpha.1`, and
60
- `0.1.5-rc.2`:
61
-
62
- ```bash
63
- dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@next
64
- dsh web
45
+ openclaw plugins install clawhub:@scotthuang/agent-knock-knock
46
+ openclaw gateway restart
65
47
  ```
66
48
 
67
- Open a Web conversation and enter `/akk list`. The connector gives every conversation `/akk`, the same capability-handshake-verified semantic tool catalog, the bundled `agent-knock-knock` skill, and callbacks to the exact Harness Agent that initiated the work. See the [DeepSeek Harness connector guide](connectors/deepseek-harness/README.md).
68
-
69
- ## See It in Action
49
+ The [installation guide](docs/openclaw-operations.md#choose-one-installation-path)
50
+ also covers npm. Building a reviewed checkout is optional; see
51
+ [local development installation](docs/openclaw-operations.md#local-development-build).
52
+ Choose one installation path per OpenClaw profile.
70
53
 
71
- [![AKK orchestrating a Claude Code-to-Codex handoff through tmux](https://raw.githubusercontent.com/scotthuang/agent-knock-knock/main/docs/assets/akk-tmux-handoff-demo.gif)](https://github.com/scotthuang/agent-knock-knock/blob/main/docs/assets/akk-tmux-handoff-demo.mp4)
54
+ ### 2. Make your conversation available
72
55
 
73
- *OpenClaw asks Claude Code to write a file, waits for AKK to report completion, then hands the result to Codex. Both terminals remain available for direct human control. Click the preview for the full-quality video.*
56
+ - **Codex CLI direct:** keep a main CLI conversation connected to a reachable
57
+ local shared backend. No terminal container is required. An embedded backend
58
+ or unloaded history is not a direct-control target; see the
59
+ [CLI guide](docs/codex-cli-native-compatibility.md).
60
+ - **Codex Desktop:** open the intended local conversation in the reviewed app
61
+ build. A saved conversation with no verified live owner must be opened in
62
+ Desktop before AKK can send to it. See the [Desktop guide](docs/codex-desktop-compatibility.md).
63
+ - **Claude Code or Codex terminal control:** follow the [tmux](docs/quickstart-tmux.md)
64
+ or [Herdr](docs/quickstart-herdr.md) quick start, including `/akk doctor`.
74
65
 
75
- ## What AKK Gives You
66
+ ### 3. List, select, and send
76
67
 
77
- Suppose several Codex or Claude Code jobs are already running in tmux or Herdr:
78
-
79
- Codex CLI 0.158.0/0.159.0/0.159.2/0.159.3/0.160.0 supports exact paginated task Watches for ordinary terminal
80
- Send, native question responses, and durable completion callbacks. The adapter
81
- checks the foreground thread and server version before attaching; uncertain
82
- answers are never automatically replayed. See the [0.158.0/0.159.0/0.159.2/0.159.3/0.160.0 compatibility
83
- review](docs/codex-0.160.0-compatibility.md) for managed-session and already-open
84
- question boundaries. Codex 0.157.x retains its [partial compatibility](docs/codex-0.157.1-compatibility.md).
85
-
86
- - **Watch without babysitting.** `/akk watch <terminal>` observes work already in progress and sends a callback when it finishes, needs approval, or becomes blocked. You can leave the terminal and continue from your phone or another chat client.
87
- - **Send without typing in a tiny remote console.** `/akk <selector>: <message>` sends your natural-language instruction to the selected live coding-agent terminal. An explicit user Send has priority over stale AKK management state.
88
- - **Identify an ambiguous Codex foreground explicitly.** When several rollout files or a recent `/clear` prevent durable attribution, an advertised foreground-identification action can inspect one exact idle pane without guessing which rollout is current.
89
- - **Set Codex permissions before a task.** `/akk permissions <exact-terminal-id>` reads the current setting and native choices; `/akk set-permissions <exact-terminal-id> <advertised-mode-id>` applies your selected mode to that idle session and verifies it before Send. Full Access works like the other options; AKK handles its native confirmation automatically without an extra user prompt. See [Codex permissions](docs/codex-permissions.md).
90
- - **Switch models through the native catalog.** `/akk models <exact-terminal-id>` lists the choices currently offered by one exact physical Codex or Claude Code pane; a Codex rollout/native-thread attribution is not required, so this also works before the first rollout materializes. `/akk set-model ...` consumes one exact advertised model/reasoning-effort tuple without accepting raw slash commands, keys, or menu indexes. Codex synchronizes the model and ordinary efforts through `max` to the current and future-session defaults; its `ultra` effort is current-session-only, and the native UI does not expose the exact non-Ultra effort chosen for future sessions, so AKK omits that unobservable field. Claude Code changes only the current session.
91
- - **Continue or clear only a proven model-control residue.** If a failed profiled Codex 0.154.0/0.155.1 model-control attempt leaves an exact `/model` completion surface or bare `/model` Composer, a fresh List may advertise both `/akk models <exact-terminal-id>` and `/akk repair-model-control <exact-terminal-id>`. Models uses a separate residual-bound authority to continue that exact native slash command into read-only catalog discovery without retyping it. If the exact native picker is already open, List marks the pane non-idle and advertises repair only. Repair remains the cleanup-only escape hatch, never presses Enter, and must prove an empty Composer.
92
- - **Inspect and recover.** `/akk status <turn-or-watch>` shows current state when a callback is delayed. Durable callback records and Watches provide a recovery path after transient Host failures.
93
- - **Approve deliberately.** AKK can surface Codex or Claude Code permission requests and submit an explicit human decision. It preserves the coding agent's existing permission mode.
94
- - **Hand control back and forth.** Attach to the same tmux or Herdr pane whenever you want. AKK does not create a parallel hidden conversation.
95
-
96
- The common workflow is:
68
+ In your OpenClaw chat, send:
97
69
 
98
70
  ```text
99
71
  /akk list
100
- /akk watch <exact-terminal-id>
101
- /akk models <exact-terminal-id>
102
- /akk set-model <exact-terminal-id> <advertised-model-id> <advertised-reasoning-effort>
103
- /akk codex: run the tests and explain any failures
104
- /akk status <turn-id-or-watch-id>
105
72
  ```
106
73
 
107
- If List advertises `repair-model-control`, it is an alternative cleanup flow:
74
+ Then send a separate message asking OpenClaw to use the listed conversation:
108
75
 
109
76
  ```text
110
- /akk repair-model-control <exact-terminal-id>
111
- /akk list
112
- /akk models <exact-terminal-id>
113
- /akk set-model <exact-terminal-id> <advertised-model-id> <advertised-reasoning-effort>
77
+ Use AKK to send “Summarize this project's test setup” to the Codex conversation
78
+ for my-project, and tell me when that task finishes.
114
79
  ```
115
80
 
116
- Use identifiers and actions from a fresh `/akk list`; do not guess or cache terminal IDs. Model switching is fail-closed: the same exact physical pane/process must still be free of an active Turn or any input-owning approval, questionnaire/editor, or read-only viewer, and must show either an exact idle empty Composer or one stable profiled Codex 0.154.0/0.155.1 `/model` residual. A profiled Codex 0.154.0/0.155.1 zero-rollout pane does not require `identify_foreground` or a resolved native rollout identity; Claude Code still requires its exact current native Session. When List advertises both actions for a Composer residual, `model_options` may continue it into the catalog while `repair_model_control` only clears it. An open exact picker is non-idle and exposes repair only. If continuation, repair, or model switching reports `uncertain`, inspect the pane instead of retrying automatically.
81
+ If several rows match, select the exact listed conversation. The controller
82
+ uses its returned ID and available Send action; you do not need to choose a
83
+ transport. Enable [natural-language tool routing](docs/openclaw-operations.md#optional-natural-language-routing)
84
+ if your OpenClaw tool policy restricts AKK. Direct `/akk ...` commands do not
85
+ require that policy change.
117
86
 
118
- ## How It Works
119
-
120
- ```text
121
- OpenClaw / Pi / DeepSeek Harness
122
- │
123
- AKK Host adapter
124
- │
125
- Session · Turn · Watch · Callback
126
- │
127
- tmux / Herdr
128
- │
129
- Codex / Claude Code
130
- ```
87
+ Keep the returned task/Watch ID to query `/akk status <id>` later. To observe
88
+ work already running, ask OpenClaw to Watch that listed conversation. A
89
+ callback accepted by OpenClaw does not itself prove delivery to WeChat or
90
+ another downstream channel.
131
91
 
132
- For a managed Send, AKK verifies the selected terminal and coding-agent process, writes one user request, monitors that exact Turn, and returns completion or attention callbacks to the initiating Host session. If stale AKK bookkeeping blocks an explicit Codex Send before terminal input, AKK can fall back to a verified one-time physical Send and attach a task Watch for callback and Status recovery.
92
+ ## Compatibility at a glance
133
93
 
134
- Native Pi and DeepSeek Harness connectors accept the shared catalog through a
135
- versioned, secretless Host Adapter capability handshake. Startup verifies the
136
- ordered semantic tool registration and the bundled Skill against catalog and
137
- Skill SHA-256 digests; an older, missing, or drifted handshake fails closed
138
- instead of mounting a partial tool surface. Connector package versions remain
139
- independent of one another.
94
+ These are distinct provider boundaries, not a blanket minimum Codex version.
140
95
 
141
- In the current OpenClaw plugin and core Host Adapter, an idle Codex pane with ambiguous foreground rollout identity may advertise `identify_foreground`. That action issues one closed `/status` command to the exact pane. It does not mutate the AKK Store, but it does type into the visible terminal. Its 30-second result is diagnostic only and grants no later authority. The separate `identify_and_send` action keeps one terminal lock across the probe and one requested task, then relies on exact request acceptance—not the status card—for durable Session and Turn identity. List and Status never run this probe. Codex 0.158.0/0.159.0/0.159.2/0.159.3/0.160.0 exact Send and active-task Watch use a separate closed `/status` transaction to bind the foreground paginated thread; subsequent observation is read-only.
142
-
143
- AKK is local-first: there is no hosted control plane or telemetry. It stores only the local state needed for routing, lifecycle recovery, callback delivery, and idempotency.
144
-
145
- ## Compatibility
146
-
147
- | Component | Supported boundary |
96
+ | Connection | Requirements and verified scope |
148
97
  | --- | --- |
149
- | Terminal hosts | tmux; local Herdr `0.8.0` protocol `19` |
150
- | Coding agents | Codex and Claude Code; unknown complete versions are allowed with a compatibility warning and fail naturally if behavior changed |
151
- | OpenClaw | `2026.6.5`+; plugin API and Gateway `2026.5.12`+ |
152
- | Pi connector | Pi `0.84.4` |
153
- | DeepSeek Harness connector | `0.1.1-rc.2`, `0.1.2-alpha.1`, and `0.1.5-rc.2` |
154
- | Runtime | Node.js `22.19.0`+ on macOS or Linux |
155
-
156
- The adjacent OpenClaw boundary `2026.5.10-beta.2` is intentionally unsupported. Herdr support is exact-version because its local control protocol is not yet a stable public API. See each connector guide for its tested release status and limitations.
98
+ | **Codex CLI direct** | Loaded main CLI thread on a compatible local shared backend. Live-tested on **macOS: CLI 0.160.0 + app-server 0.162.0**. Runtime identity/protocol checks determine availability; no numeric minimum has been established. |
99
+ | **Codex Desktop** | Verified **macOS app 26.1002.52244, build 13536**, bundle `com.openai.codex` at `/Applications/ChatGPT.app`. Native writes require that **exact version/build** and a verified live owner. |
100
+ | **Codex / Claude Code terminals** | tmux or local Herdr **0.8.0 / protocol 19**. Reviewed Codex TUI profiles include **0.160.0**; Claude Code **2.1.285** was verified on macOS arm64. Operations depend on the agent version and current UI. |
101
+ | **OpenClaw / runtime** | OpenClaw **2026.6.5+**, plugin API/Gateway **2026.5.12+**; Node.js **22.19.0+**. Core terminal support targets macOS/Linux; the Desktop profile is macOS-only. |
102
+
103
+ Additional targeted verification on 2026-10-10 used **CLI 0.162.1 + backend
104
+ 0.162.1** for public Status progress, 12-hour Send monitoring and an isolated
105
+ completion callback. Other native capabilities were not repeated in that run.
106
+ Frontend and backend versions need not match. The [CLI evidence](docs/codex-cli-native-compatibility.md#compatibility-and-limits)
107
+ and [Desktop profile](docs/codex-desktop-compatibility.md#version-and-platform-evidence)
108
+ separate current observations, tested operations, and unsupported cases.
109
+
110
+ Direct CLI currently lacks model control, cancellation, and native new/resume
111
+ operations. Some can use a verified terminal capability; others, including
112
+ paginated Codex new/resume, remain unsupported. Desktop has no terminal fallback
113
+ and cannot create or cold-load conversations. Backend busy/blocked states or
114
+ uncertain execution never trigger a retry through another transport. See
115
+ [routing and operation limits](docs/codex-cli-native-compatibility.md#automatic-conversation-routing-2026-10-10).
116
+
117
+ ## Other controller Hosts
118
+
119
+ [Pi](connectors/pi/README.md) and [DeepSeek Harness](connectors/deepseek-harness/README.md)
120
+ have independent connector packages and installation guides. Their current
121
+ package manifests pin AKK **0.13.3**; their published capabilities must not be
122
+ inferred from this 0.14 README. See each guide for its reviewed
123
+ Host versions, callbacks, and upgrade procedure.
157
124
 
158
125
  ## Documentation
159
126
 
160
- Choose the guide that matches what you are trying to do:
161
-
162
- | Guide | Use it for |
127
+ | Guide | What it covers |
163
128
  | --- | --- |
164
- | [tmux quick start](docs/quickstart-tmux.md) | First OpenClaw task, multiple panes, and selectors |
165
- | [Herdr quick start](docs/quickstart-herdr.md) | Local Herdr discovery and exact-version checks |
166
- | [Pi connector](connectors/pi/README.md) | Pi installation, semantic tool catalog, bundled skill, native approval, callbacks, upgrade, and uninstall |
167
- | [DeepSeek Harness connector](connectors/deepseek-harness/README.md) | Harness installation, approval contract, callbacks, upgrade, and troubleshooting |
168
- | [Operator guide](docs/operator-guide.md) | Complete command reference, reliable Send, Watch, Status, approval, recovery, Sessions, and native threads |
169
- | [OpenClaw operations](docs/openclaw-operations.md) | npm alternative, configuration, auto-approval policy, supervisor behavior, and troubleshooting |
170
- | [Host Bridge and Profiles](docs/host-bridge-profiles.md) | Connect another controller Host through MCP/stdio and a declarative Profile |
171
- | [Terminal handoff protocol](docs/bidirectional-agent-protocol.md) | Identity, Turn lifecycle, callback guarantees, safety fences, and handoff semantics |
172
- | [Storage and logging](docs/storage-and-logging.md) | State directories, permissions, protocol migration, logs, and privacy |
173
- | [Testing](docs/testing.md) | Test tiers, architecture checks, and evidence workflows |
174
- | [Contributing](CONTRIBUTING.md) | Local development and contribution workflow |
175
-
176
- ## Installation Alternatives
177
-
178
- OpenClaw users who prefer npm can install the same core package directly:
179
-
180
- ```bash
181
- npm install -g @scotthuang/agent-knock-knock
182
- agent-knock-knock install-openclaw --verify
183
- ```
184
-
185
- ClawHub remains the recommended OpenClaw path. Do not install both variants into the same OpenClaw profile.
186
-
187
- To build the repository locally:
188
-
189
- ```bash
190
- npm install
191
- npm run build
192
- npm run test:fast
193
- ```
194
-
195
- Connector development uses `npm run pi:build` from the repository root, or `cd connectors/pi && npm run build`; DeepSeek Harness has the matching `npm run deepseek:build` script.
196
-
197
- ## Security and Privacy
198
-
199
- AKK controls terminals, so treat installation as privileged local automation. Use an unprivileged OS account, restrict tmux and Herdr sockets, keep the state directory private, and review approval prompts before allowing input. Ordinary AKK Send does not change agent permissions. The explicit Codex permission tool applies only the user-selected native mode; model-facing tools never receive terminal-control tokens, callback credentials, Composer text, or approval fingerprints.
200
-
201
- Report vulnerabilities privately using [GitHub Security Advisories](https://github.com/scotthuang/agent-knock-knock/security/advisories/new). Please do not include secrets, private terminal output, or credentials in a public issue.
202
-
203
- ## License
204
-
205
- [MIT](LICENSE)
129
+ | [CLI direct control](docs/codex-cli-native-compatibility.md) | Discovery, sending, Watch, interactions, routing, and version evidence |
130
+ | [Codex Desktop](docs/codex-desktop-compatibility.md) | Sidebar discovery, live-owner requirements, native controls, and tested build |
131
+ | [Backend Recovery](docs/backend-task-recovery.md) | Exact-task recovery, renewal, Close versus Unwatch, and callback retry |
132
+ | [tmux](docs/quickstart-tmux.md) · [Herdr](docs/quickstart-herdr.md) | Terminal setup and the first task |
133
+ | [Operator guide](docs/operator-guide.md) | Command reference, terminal models/lifecycle, identity, and advanced controls |
134
+ | [OpenClaw operations](docs/openclaw-operations.md) | Installation, tool policy, configuration, and troubleshooting |
135
+ | [Codex permissions](docs/codex-permissions.md) | Terminal permission choices and verification |
136
+ | [Host Bridge](docs/host-bridge-profiles.md) | Connect another controller through MCP/stdio and a Host Profile |
137
+ | [Storage and logging](docs/storage-and-logging.md) | Local state, privacy, logs, and protocol migration |
138
+ | [Testing](docs/testing.md) · [Contributing](CONTRIBUTING.md) | Development checks and contribution workflow |
139
+
140
+ AKK runs locally, with no hosted control plane or telemetry. Send preserves the
141
+ agent's permissions; explicit settings and approval actions apply the user's
142
+ choice. Keep local control sockets and AKK state private. Report vulnerabilities
143
+ through [GitHub Security Advisories](https://github.com/scotthuang/agent-knock-knock/security/advisories/new).
144
+
145
+ [MIT license](LICENSE).
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Agent Knock Knock contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.