@scotthuang/agent-knock-knock 0.14.6 → 0.14.8

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 (36) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +14 -15
  3. package/connectors/deepseek-harness/README.md +94 -66
  4. package/connectors/pi/README.md +93 -48
  5. package/dist/src/desktop-cli-adapter.js +5 -2
  6. package/dist/src/desktop-cli-adapter.js.map +1 -1
  7. package/dist/src/desktop-compatibility.d.ts +6 -1
  8. package/dist/src/desktop-compatibility.js +10 -4
  9. package/dist/src/desktop-compatibility.js.map +1 -1
  10. package/dist/src/desktop-interaction-projection.d.ts +2 -1
  11. package/dist/src/desktop-interaction-projection.js +3 -1
  12. package/dist/src/desktop-interaction-projection.js.map +1 -1
  13. package/dist/src/desktop-ipc-client.js +6 -4
  14. package/dist/src/desktop-ipc-client.js.map +1 -1
  15. package/dist/src/desktop-ipc-native-operations.d.ts +2 -1
  16. package/dist/src/desktop-ipc-native-operations.js +5 -1
  17. package/dist/src/desktop-ipc-native-operations.js.map +1 -1
  18. package/dist/src/desktop-list.d.ts +1 -0
  19. package/dist/src/desktop-list.js +1 -0
  20. package/dist/src/desktop-list.js.map +1 -1
  21. package/dist/src/desktop-public-projection.js +17 -13
  22. package/dist/src/desktop-public-projection.js.map +1 -1
  23. package/dist/src/desktop-runtime.js +1 -1
  24. package/dist/src/desktop-runtime.js.map +1 -1
  25. package/dist/src/desktop-task-interactions.d.ts +2 -1
  26. package/dist/src/desktop-task-interactions.js +3 -1
  27. package/dist/src/desktop-task-interactions.js.map +1 -1
  28. package/dist/src/desktop-task-service.d.ts +2 -1
  29. package/dist/src/desktop-task-service.js.map +1 -1
  30. package/dist/src/semantic-tool-list-projection.js +1 -1
  31. package/dist/src/semantic-tool-list-projection.js.map +1 -1
  32. package/docs/codex-desktop-compatibility.md +93 -12
  33. package/docs/desktop-create.md +11 -3
  34. package/docs/pi-dsh-compatibility.md +138 -0
  35. package/package.json +1 -1
  36. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.8 - 2026-10-14
4
+
5
+ - Enable blocking and asynchronous question answers on macOS Codex Desktop `26.1007.30912` / build `20156`, independently of model/permission settings and cancellation. Use the advertised Respond action from fresh conversation or exact Watch Status.
6
+ - Preserve exact task/request identity, one-dispatch response records and native answer confirmation. Real Desktop validation covered an asynchronous choice, free text, and a two-question Plan request; original tasks consumed the answers and completed. Local attention/completion callbacks were verified, not external chat delivery.
7
+
8
+ ## Connector releases - 2026-10-14
9
+
10
+ - Publish Pi connector `0.1.0-poc.3` and DeepSeek Harness connector `0.1.0-rc.5` independently under npm `next`; neither changes the core `0.14.7` version or promotes a connector to stable `latest`.
11
+ - Pin both connectors to published AKK `0.14.7`, aligning the installed HostAdapter, lockfiles, 26 registered tools and canonical Skill handshake. The connectors now expose that core's direct CLI/Desktop capabilities under the existing per-target limits.
12
+ - Support Pi `1.2.0`, retaining the reviewed `0.84.4` runtime. Use the actual Host version in the callback profile, adapt the tool execution context, and support exact conversation/Watch approval confirmations with explicit allow/reject labels.
13
+ - Adapt DSH `0.2.0-rc.2` and separately reviewed `0.2.1-alpha.2` package contracts: coherent Host/Cordis peers, AKK-specific message source typing, and current schema/Skill validation. DSH `latest` remains a release candidate, not a stable release.
14
+ - Preserve exact live controller ownership, callback deduplication and conservative recovery: an accepted callback is not a model-consumption or external-chat-delivery guarantee; old routes do not migrate automatically to a restarted Host.
15
+
16
+ See [connector compatibility and validation](docs/pi-dsh-compatibility.md) for the version matrix and evidence boundaries.
17
+
18
+ ## 0.14.7 - 2026-10-14
19
+
20
+ - Enable explicit command and file approvals on macOS Codex Desktop `26.1007.30912` / build `20156`: allow once or reject from the controller, through the original Desktop conversation.
21
+ - Advertise approvals independently from broader native controls across List, Status, Watch and interaction notifications. Question answers, model/permission changes and cancellation remain unavailable on this build; the reviewed build `13536` retains its existing controls.
22
+ - Preserve exact owner, task and pending-request checks, one-dispatch response records and effect verification. An IPC acknowledgement alone does not confirm approval; consumed or uncertain responses are not blindly replayed.
23
+
24
+ ### Validation boundaries
25
+
26
+ - A dedicated Desktop conversation verified real semantic Send/Status/Approve for command allow/reject and file allow/reject, including successful execution or file changes after approval and absent side effects after rejection. Local attention/completion callbacks were accepted once each; no external chat-delivery claim is made.
27
+ - This release adds no persistent authorization rules or full-access mode changes.
28
+
3
29
  ## 0.14.6 - 2026-10-13
4
30
 
5
31
  - Present CLI and Desktop conversations together, with Codex/Claude Code as the agent type. Keep transport details in diagnostics instead of showing backend and terminal connections as separate user-facing categories.
package/README.md CHANGED
@@ -74,24 +74,23 @@ That is the terminal first-task flow. For terminal setup and multiple panes, see
74
74
 
75
75
  ## Install for Pi
76
76
 
77
- Pi can be the controller Host without OpenClaw. The current connector targets Pi `0.84.4`:
78
-
79
- This connector currently depends on AKK `0.13.3`; the new 0.14 direct CLI and Desktop capabilities described above apply to the OpenClaw plugin. Follow the connector guide for its supported features.
77
+ Pi can be the controller Host without OpenClaw. The connector supports Pi `1.2.0`
78
+ and retains `0.84.4` compatibility. It includes AKK `0.14.7`, with direct CLI and
79
+ Desktop capabilities governed by the same target-specific boundaries above.
80
80
 
81
81
  ```bash
82
- npm install -g @earendil-works/pi-coding-agent@0.84.4
82
+ npm install -g @earendil-works/pi-coding-agent@1.2.0
83
83
  pi install npm:@scotthuang/agent-knock-knock-pi@next
84
84
  pi
85
85
  ```
86
86
 
87
- 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).
87
+ Pi should show `AKK ready`. With a supported coding-agent conversation open, 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).
88
88
 
89
89
  ## Install for DeepSeek Harness
90
90
 
91
- The connector supports DeepSeek Harness Web `0.1.1-rc.2`, `0.1.2-alpha.1`, and
92
- `0.1.5-rc.2`:
93
-
94
- This connector currently depends on AKK `0.13.3`; its supported features are documented separately from the OpenClaw plugin's 0.14 direct CLI and Desktop capabilities.
91
+ The connector targets DeepSeek Harness Web `0.2.0-rc.2` (upstream `latest`,
92
+ **still a release candidate**). It includes AKK `0.14.7`. See the connector guide
93
+ for the separate alpha and older-version validation boundaries.
95
94
 
96
95
  ```bash
97
96
  dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@next
@@ -102,9 +101,9 @@ Open a Web conversation and enter `/akk list`. The connector gives every convers
102
101
 
103
102
  ## See It in Action
104
103
 
105
- [![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)
104
+ https://github.com/user-attachments/assets/cc20a609-7907-4996-977e-0b88d8ba6388
106
105
 
107
- *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. This demo uses tmux; supported Codex CLI and Desktop connections no longer need it. Click the preview for the full-quality video.*
106
+ *Send a task from your phone. AKK creates a Codex Desktop conversation, handles approvals with your permission, and brings the result back to chat.*
108
107
 
109
108
  ## What AKK Gives You
110
109
 
@@ -200,16 +199,16 @@ can use a supported terminal route. Claude Code direct control is available unde
200
199
  | Component | Supported boundary |
201
200
  | --- | --- |
202
201
  | Terminal hosts | tmux; local Herdr `0.8.0` protocol `19` |
203
- | Codex Desktop | macOS app `26.1002.52244`, build `13536`; this **exact build**, plus an open connected conversation, is required for sending and other controls. Supports Status, exact Watch, approvals/answers, settings, and cancellation. |
202
+ | Codex Desktop | macOS, exact app/build profiles: `26.1002.52244` / `13536` supports the reviewed full controls; `26.1007.30912` / `20156` supports creation and Send/Status/Watch. AKK 0.14.7 adds command/file approvals (allow once or reject) on `20156`, and 0.14.8 adds blocking and asynchronous answers; settings and cancellation remain unavailable there. See the [operation matrix](docs/codex-desktop-compatibility.md#version-and-platform-evidence). |
204
203
  | Codex CLI shared backend | Live-tested on macOS: CLI `0.162.1` + backend `0.162.1`, and previously `0.160.0` + `0.162.0`. Requires a loaded main CLI conversation and compatible live protocol. These are tested combinations, **not a numeric minimum**. |
205
204
  | Claude Code direct connection | macOS, live-tested `2.1.296`, compatible native peer protocol `1`, and Python 3 available to AKK. Basic task sending, progress and completion observation; unsupported controls require the original terminal. See the [direct guide](docs/claude-cli-direct.md). |
206
205
  | Terminal coding agents | Reviewed Codex profiles include `0.160.0` and `0.162.1`; Claude Code `2.1.285` was tested on macOS. Unknown versions may expose limited capabilities; native controls depend on the reviewed profile and current UI. |
207
206
  | OpenClaw | `2026.6.5`+; plugin API and Gateway `2026.5.12`+ |
208
- | Pi connector | Pi `0.84.4`; connector currently depends on AKK `0.13.3` |
209
- | DeepSeek Harness connector | `0.1.1-rc.2`, `0.1.2-alpha.1`, and `0.1.5-rc.2`; connector currently depends on AKK `0.13.3` |
207
+ | Pi connector | Pi `1.2.0` and `0.84.4`; connector `0.1.0-poc.3` (`next`), pinned AKK `0.14.7` |
208
+ | DeepSeek Harness connector | Web `0.2.0-rc.2` (RC); connector `0.1.0-rc.5` (`next`), pinned AKK `0.14.7`. See its guide for alpha and legacy coverage. |
210
209
  | Runtime | Node.js `22.19.0`+ on macOS or Linux |
211
210
 
212
- The adjacent OpenClaw boundary `2026.5.10-beta.2` is intentionally unsupported. Herdr and Desktop controls depend on reviewed private protocol versions. Desktop catalog presence alone does not prove the conversation is open or controllable. See each connector guide and the Desktop guide for tested boundaries and limitations.
211
+ The adjacent OpenClaw boundary `2026.5.10-beta.2` is intentionally unsupported. Herdr and Desktop controls depend on reviewed private protocol versions. Desktop catalog presence alone does not prove the conversation is open or controllable. See each connector guide, the [Pi/DSH validation matrix](docs/pi-dsh-compatibility.md), and the Desktop guide for tested boundaries and limitations.
213
212
 
214
213
  Codex CLI model changes and cancellation still require an eligible terminal.
215
214
  New/clear/resume operations for paginated Codex CLI `0.158+`, and creating or
@@ -13,26 +13,39 @@ tests, lockfile, bundle manifest, and connector-specific release tag.
13
13
 
14
14
  ## Compatibility
15
15
 
16
- This connector pins AKK **0.13.3** in its package and lockfile. Its terminal
17
- workflow is separate from the AKK 0.14.0 CLI direct, Desktop, and Recovery
18
- features in the [root README](../../README.md). Neither a newer core release
19
- nor a root checkout replaces the connector's pinned runtime automatically.
20
-
21
- This prerelease supports DeepSeek Harness `0.1.1-rc.2`, `0.1.2-alpha.1`, and
22
- `0.1.5-rc.2` on the resident Web Host and Node.js `>=22.19.0`. Activation locates the real
23
- `@deepseek-ai/dsh` launcher and requires that launcher plus its `dsh-base`,
24
- `dsh-agent`, `dsh-commands`, `dsh-llm`, and `dsh-tools` packages to form one
25
- coherent set at one reviewed version. An unsupported, missing, or split Host
26
- fails before mounting. The detected launcher version is also projected into the
27
- private AKK Host Profile instead of being replaced with a connector build-time
28
- version. Runtime message and schema helpers are imported from that verified
29
- Host package tree, so a source checkout's development dependencies cannot
30
- replace them.
31
-
32
- Headless/one-shot Harness processes, Host-exit callback continuity, and Windows
33
- named pipes are not supported in this release. AKK discovers existing Codex and
34
- Claude Code processes in tmux or Herdr; this connector does not start those
35
- processes or create terminal panes.
16
+ This connector pins AKK **0.14.7** in its package and lockfile. It exposes
17
+ that runtime's 26 semantic tools, including Codex CLI backend and Desktop
18
+ operations when the selected conversation advertises them. A newer root
19
+ checkout does not silently replace this published dependency.
20
+
21
+ The development baseline is DeepSeek Harness **0.2.0-rc.2** (the upstream
22
+ `latest` channel). **0.2.1-alpha.2** is separately reviewed preview support.
23
+ Neither is a stable release. The older reviewed Hosts `0.1.1-rc.2`,
24
+ `0.1.2-alpha.1`, and `0.1.5-rc.2` remain accepted. Use a resident POSIX Web Host
25
+ and Node.js `>=22.19.0`.
26
+
27
+ Activation locates the real `@deepseek-ai/dsh` launcher and requires the
28
+ launcher, `dsh-base`, `dsh-agent`, `dsh-commands`, `dsh-llm`, `dsh-skill`, and
29
+ `dsh-tools` to form one coherent reviewed version. Unsupported, missing, and
30
+ split runtime sets fail before mounting. The Host's own plugin peer preflight
31
+ must also pass without a version-risk exemption. Message and schema helpers
32
+ come from that verified Host tree, not checkout development dependencies.
33
+
34
+ Callbacks use AKK's producer-specific message source and the same live Agent's
35
+ Inbox. Idle Agents receive a waking `followup`; running Agents receive
36
+ `inject` context at a later step. Acceptance means Inbox admission, not proof
37
+ that a model has consumed it or a user has seen it. Host exit or plugin unload
38
+ invalidates that Host instance's routes; callbacks do not migrate to a new
39
+ Agent merely because it has the same session ID.
40
+
41
+ Headless/one-shot Harness processes, Host-exit callback continuity, Windows
42
+ named pipes, and DSH Desktop's embedded launcher are outside this connector's
43
+ validated scope. Existing Codex CLI backend and Desktop connections need no
44
+ terminal container when their advertised capability is available. Claude Code
45
+ and terminal-specific operations retain their documented transport conditions;
46
+ see [core compatibility](../../README.md#compatibility) and the
47
+ [Pi/DSH validation matrix](../../docs/pi-dsh-compatibility.md). This connector does
48
+ not launch replacement coding processes or create terminal panes.
36
49
 
37
50
  ## Five-minute quick start
38
51
 
@@ -72,34 +85,38 @@ tool invocation.
72
85
 
73
86
  ### 3. Verify discovery in a Web conversation
74
87
 
75
- Make sure at least one Codex or Claude Code process is already running inside a
76
- tmux or Herdr pane, then enter:
88
+ Open a supported Codex CLI or Desktop conversation, or a supported coding
89
+ agent in tmux/Herdr for the terminal workflow, then enter:
77
90
 
78
91
  ```text
79
92
  /akk list
80
93
  ```
81
94
 
82
- The compact result contains that live terminal, current action names, and only
95
+ The compact result contains the visible CLI/Desktop conversations, current action names, and only
83
96
  the dynamic inputs needed for those actions. Static action meanings and safety
84
97
  rules come from the automatically registered `agent-knock-knock` skill. AKK
85
98
  never asks callers to invent identifiers: copy only the complete
86
- `terminal_id`, `session_id`, `turn_id`, `watch_id`, or `native_thread_id`
99
+ `conversation_id`, `terminal_id`, `session_id`, `turn_id`, `watch_id`, or `native_thread_id`
87
100
  returned by AKK.
88
101
 
89
102
  ### 4. Send one task and receive its callback
90
103
 
91
- If exactly one matching terminal is send-ready, this is a complete smoke test:
104
+ For the terminal shortcut, if exactly one matching terminal is send-ready,
105
+ this is a complete smoke test:
92
106
 
93
107
  ```text
94
108
  /akk codex: Inspect package.json and report the package name. Do not modify files.
95
109
  ```
96
110
 
97
- Use `claude:` instead when testing Claude Code. With multiple matching panes,
98
- run `/akk list` first and use the displayed session selector, or let the Agent
99
- call `agent_knock_knock_send` with the exact semantic identifier in that row's
100
- advertised action.
111
+ Use `claude:` instead when testing Claude Code. For backend/Desktop routes or multiple matches,
112
+ run `/akk list` and let the Agent call `agent_knock_knock_send` with the exact
113
+ identifier in the selected row's advertised action. AKK chooses the available
114
+ transport; do not reconstruct IDs from project paths.
101
115
 
102
- An accepted managed Send creates a `turn_id`. When the coding agent finishes,
116
+ A backend/Desktop Send normally returns its exact task Watch. Terminal managed
117
+ Send returns a `turn_id`; preserve the actual receipt instead of assuming one
118
+ record type. An existing automatic Watch does not need a second subscription.
119
+ When the coding agent finishes,
103
120
  asks a question, becomes blocked, or requests approval, AKK sends a callback to
104
121
  the same live DeepSeek Harness Agent. A running Agent receives the update via
105
122
  `inject()`; an idle Agent receives it via `followup()`.
@@ -133,24 +150,28 @@ behavior through the complete capability-handshake-verified tool catalog:
133
150
 
134
151
  | Tool | Purpose |
135
152
  | --- | --- |
136
- | `agent_knock_knock_list` | List live Codex/Claude terminals, managed state, Terminal Watches, and each row's currently available actions. |
137
- | `agent_knock_knock_watch` | Start durable, read-only observation of one exact `terminal_id`. |
153
+ | `agent_knock_knock_list` | List CLI/Desktop conversations, monitoring records, and each row's currently available actions. |
154
+ | `agent_knock_knock_watch` | Observe one advertised conversation or terminal, preserving its exact task anchor when available. |
138
155
  | `agent_knock_knock_unwatch` | Stop one exact `watch_id` without sending terminal input. |
139
156
  | `agent_knock_knock_list_resumable_threads` | List structurally verified native threads for one terminal. |
140
157
  | `agent_knock_knock_native_inspect` | Run only the adapter-owned native `status` inspection advertised for an idle terminal. |
141
158
  | `agent_knock_knock_model_options` | Read one exact idle terminal's native model and reasoning catalog and create a single-use typed offer. |
142
159
  | `agent_knock_knock_repair_model_control` | Dismiss only an exactly recognized stale model-control surface; it never selects a model or submits work. |
160
+ | `agent_knock_knock_permission_options` | Read currently available permission choices for one exact target. |
161
+ | `agent_knock_knock_set_permissions` | Apply one currently advertised permission choice. |
162
+ | `agent_knock_knock_desktop_create` | Create a Codex Desktop conversation only when the creation capability is advertised. |
163
+ | `agent_knock_knock_recover` | Perform an advertised recovery action on its original observation or callback record. |
143
164
  | `agent_knock_knock_set_model` | Consume the current catalog offer to choose one advertised semantic model and reasoning effort. |
144
165
  | `agent_knock_knock_identify_foreground` | Run a bounded diagnostic native identity probe without creating durable authority. |
145
166
  | `agent_knock_knock_identify_and_send` | Keep one terminal lock across identity observation and one explicit Send when foreground identity is ambiguous. |
146
167
  | `agent_knock_knock_new_thread` | Start and verify a clean native coding-agent thread after explicit user intent. |
147
168
  | `agent_knock_knock_reconcile_binding` | Detach one proven stale conflicting binding after explicit confirmation; it neither sends work nor adopts a thread. |
148
169
  | `agent_knock_knock_resume_thread` | Resume one complete `native_thread_id` from a fresh resumable-thread listing. |
149
- | `agent_knock_knock_status` | Inspect one AKK `turn_id` or Terminal Watch `watch_id` plus a bounded current screen. |
170
+ | `agent_knock_knock_status` | Read one conversation, Turn, or Watch; backend progress is bounded and belongs to the exact native task. |
150
171
  | `agent_knock_knock_send` | Send a new task through the exact action advertised by `list`. |
151
172
  | `agent_knock_knock_respond` | Answer a question or unblock one existing managed Turn; it does not create a new Turn. |
152
173
  | `agent_knock_knock_respond_interaction` | Answer the current typed native questionnaire step for one exact response-capable Turn or Watch. |
153
- | `agent_knock_knock_approve` | Approve the current exact permission request once, only after human review and confirmation. |
174
+ | `agent_knock_knock_approve` | Apply the advertised allow-once or reject decision to the current exact permission request, after human review. |
154
175
  | `agent_knock_knock_renew` | Renew monitoring for a still-live stalled Turn without typing into the terminal. |
155
176
  | `agent_knock_knock_retry_callback` | Retry one persisted failed callback with its original message and delivery identity. |
156
177
  | `agent_knock_knock_cancel` | Interrupt one exact active Turn while leaving the shared pane open. |
@@ -158,15 +179,15 @@ behavior through the complete capability-handshake-verified tool catalog:
158
179
 
159
180
  The ordinary closed loop is:
160
181
 
161
- 1. Call `list` and select one exact terminal row.
182
+ 1. Call `list` and select one exact conversation or terminal row.
162
183
  2. Use only that row's advertised `send` action and semantic identifier.
163
- 3. Retain the returned `turn_id` for managed delivery, or the `watch_id` from an
164
- automatic physical-Send fallback. Completion or attention callbacks return
184
+ 3. Retain the returned `turn_id` or automatic `watch_id`. Completion or attention callbacks return
165
185
  to the originating DeepSeek Harness Agent.
166
186
  4. For a managed question or blocked callback, use `respond` with its `turn_id`.
167
187
  For a permission request, follow the approval procedure below.
168
- 5. Use `status` when a callback is late or uncertain. Use an explicit `watch`
169
- for other work that was not sent as a managed AKK Turn.
188
+ 5. Use `status` when a callback is late or uncertain. Add an explicit `watch`
189
+ only when the user requests monitoring of ongoing work that has no suitable
190
+ active monitor. A Send-created Watch already owns its completion subscription.
170
191
 
171
192
  Do not cache `available_actions` or private terminal state. Refresh `list` or
172
193
  `status` before a mutation, and never blindly retry an uncertain Send,
@@ -180,16 +201,18 @@ dialog around that tool. Explicit human confirmation is therefore a required
180
201
  calling contract for the Agent and user, not a UI gate enforced by this
181
202
  connector. With the default configuration, the manual flow is:
182
203
 
183
- 1. Receive the approval callback, then call
184
- `agent_knock_knock_status({turn_id})` to refresh the exact current request and
185
- terminal screen.
204
+ 1. Receive the approval callback, then refresh Status using its exact
205
+ `watch_id`, `conversation_id`, or managed `turn_id`. Read the current native
206
+ request; terminal routes may also return a screen excerpt.
186
207
  2. Present the current request, tool name, and relevant arguments to the user.
187
- 3. Obtain an explicit approve or reject decision in the same Web conversation.
188
- 4. Only for an explicit approval, invoke the currently advertised
189
- `agent_knock_knock_approve({turn_id})`, or let the user enter
190
- `/akk approve <turn-selector>`.
191
- 5. If approval was interrupted or returned an uncertain result, refresh status
192
- and let the human inspect the live TUI. Never retry it blindly.
208
+ 3. Obtain an explicit allow-once or reject decision in the same Web conversation.
209
+ 4. Copy the currently advertised `agent_knock_knock_approve` action, keeping its
210
+ exact target and `interaction_id` where supplied. Pass `decision: "approve_once"`
211
+ or `decision: "reject"` only when that target advertises the corresponding
212
+ decision. The legacy `/akk approve <turn-selector>` shortcut is for managed
213
+ Turn approval, not a replacement for direct interaction identifiers.
214
+ 5. If the operation was interrupted or returned an uncertain result, refresh
215
+ Status and inspect the original conversation. Never retry it blindly.
193
216
 
194
217
  AKK's deterministic `pluginConfig.autoApprove` policy remains disabled by
195
218
  default. If an administrator deliberately enables it, only the exact configured
@@ -221,12 +244,15 @@ to the exact DeepSeek Harness Agent's inbox/session log. It does not prove that
221
244
  the model consumed the message or that asynchronous persistence reached stable
222
245
  storage. `status` and Terminal Watch are the recovery path.
223
246
 
224
- - If the exact Agent and Host are still live, inspect the `turn_id` with
225
- `status`. A persisted callback failure can be retried with
226
- `agent_knock_knock_retry_callback`; AKK reuses the original callback message
227
- id and Turn identity for idempotent delivery.
228
- - For a Terminal Watch, inspect its `watch_id` with `status`. If the route is no
229
- longer valid, `unwatch` it and start a fresh Watch from a current `list` row.
247
+ - Inspect the original `turn_id` or `watch_id` with `status`. If that exact
248
+ record advertises `retry_callback`, a requested retry reuses the persisted
249
+ callback message and delivery identity. An uncertain result is not evidence
250
+ of non-delivery; do not replay it without a supported recovery action.
251
+ - A completed Watch still provides its exact result even when the original
252
+ callback route is gone. Read that result; creating another Watch does not
253
+ recover or replay the historical notification. For work that is still
254
+ running, a fresh observation from a current `list` row requires the user's
255
+ monitoring request. Do not transfer an old record's callback ownership.
230
256
  - A Host restart creates a new private Profile revision. Existing watches retain
231
257
  their original route, so callbacks owned by the old Host incarnation fail
232
258
  closed instead of being redirected to a new Agent. There is deliberately no
@@ -292,11 +318,11 @@ The optional bundle patch mounts only the Host plugin:
292
318
  | `@next` cannot be resolved | Run `npm view @scotthuang/agent-knock-knock-deepseek-harness dist-tags --json`. Use an exact published version if your registry has no `next` tag, or use the local-development installation below. |
293
319
  | `/akk` and AKK tools are missing | Verify installation with `dsh plugin --profile web why @scotthuang/agent-knock-knock-deepseek-harness`, then fully restart the Web Host. Existing Host processes do not gain a newly added bundle. |
294
320
  | Activation reports an unsupported or split Harness | Check `dsh --version` and run `dsh plugin --profile web why @deepseek-ai/dsh-base @deepseek-ai/dsh-agent @deepseek-ai/dsh-commands @deepseek-ai/dsh-llm @deepseek-ai/dsh-tools`. Update the whole Host coherently; do not repair it with a standalone connector npm install. |
295
- | `/akk list` finds no terminals | Start or locate a real Codex/Claude Code process inside tmux or Herdr. AKK never launches the coding agent or creates its pane. |
321
+ | `/akk list` finds no live conversations | Check the selected target's direct-connection or terminal discovery diagnostics and core compatibility. A supported Codex CLI backend/Desktop connection does not require tmux/Herdr; terminal-only control needs an eligible live pane. Do not infer missing identity from cwd alone. |
296
322
  | A mutation is absent or rejected | Refresh `/akk list` or structured `list` and use only the action currently advertised for that exact row. Resolve a current approval first when it blocks input. Do not reuse stale IDs or action payloads. |
297
- | The callback never appears | Run `/akk status <turn-or-watch-id>`. If the same route is live, use the persisted `retry_callback` tool for a failed Turn callback. After a Host restart or Agent replacement, old delivery fails closed; recreate a Watch or start new work from the current Agent. |
323
+ | The callback never appears | Query the original Turn/Watch Status and separate task result, callback admission, and user visibility. Use only a retry/recovery action advertised for that record and requested by the user. A new Host does not inherit old callback ownership. |
298
324
  | Callback delivery reports IPC unavailable or timeout | Keep the originating Web Host alive and inspect whether it was restarted or disposed. The socket is Host-process-private and has an eight-second callback boundary; there is no cross-process fallback route. |
299
- | A Watch completed but its callback was missed | Query `status` by `watch_id`. Under a new Host incarnation, unwatch the old record and create a fresh Watch from a current terminal row. |
325
+ | A Watch completed but its callback was missed | Read the original `watch_id` Status for its exact task result and callback disposition. Do not create a replacement Watch for completed work or treat it as historical-notification recovery. |
300
326
  | A tool call fails schema validation | Pass only the documented fields and complete semantic IDs returned by AKK. DeepSeek's discovery schema is a projection; the connector always enforces the full original AKK schema before execution. |
301
327
  | Windows, headless, or one-shot use fails | These surfaces are outside this prerelease's supported scope. Use the resident POSIX Web Host. |
302
328
 
@@ -313,7 +339,7 @@ Update to the registry's current prerelease, or pin an exact reviewed version:
313
339
 
314
340
  ```sh
315
341
  dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@next
316
- dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@0.1.0-rc.4
342
+ dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@0.1.0-rc.5
317
343
  ```
318
344
 
319
345
  Restart the Web Host after either operation. The connector pins the exact AKK
@@ -341,14 +367,14 @@ dsh plugin --profile web add "file:$(pwd -P)/connectors/deepseek-harness"
341
367
  ```
342
368
 
343
369
  Restart `dsh web` after installation. The child package currently installs and
344
- tests against its pinned published AKK runtime `0.13.3`; building the current
370
+ tests against its pinned published AKK runtime `0.14.7`; building the current
345
371
  repository root does not silently replace that dependency. Testing connector
346
372
  changes against another AKK runtime requires an explicit dependency change and
347
373
  compatibility review rather than an implicit local link.
348
374
 
349
375
  ## Tests and release status
350
376
 
351
- The package manifest is currently `0.1.0-rc.4`, so this remains a prerelease and
377
+ The package manifest is currently `0.1.0-rc.5`, so this remains a prerelease and
352
378
  is published under `next`; `latest` remains on the earlier `0.1.0-rc.1` tag.
353
379
  Registry state can change independently of this source file, so the `npm view`
354
380
  commands above remain authoritative.
@@ -364,11 +390,13 @@ npm run pack:check
364
390
 
365
391
  These commands typecheck the connector, run its fast wiring/profile/IPC/schema
366
392
  tests, and inspect the package tarball. They do not publish anything. The
367
- `0.1.0-rc.4` compatibility work is typechecked against the published DeepSeek
368
- Harness `0.1.5-rc.2` SDK packages and runtime-smoked against that exact official
369
- launcher package tree. The reproducible development lock therefore uses
370
- `0.1.5-rc.2`, while peer and runtime checks retain the two older reviewed Host
371
- versions for existing installations.
393
+ `0.1.0-rc.5` lockfile uses the published DeepSeek Harness `0.2.0-rc.2`
394
+ SDK packages. The same source is checked separately against preview
395
+ `0.2.1-alpha.2` and retained `0.1.5-rc.2`. The older `0.1.1-rc.2` and
396
+ `0.1.2-alpha.1` compatibility policy is retained; it is not a new full Web
397
+ acceptance claim for those releases. Deterministic Host-loop checks use the
398
+ real upstream registries and Inbox with a scripted model provider; they are
399
+ not evidence of a live paid model or external-channel delivery.
372
400
 
373
401
  ## Release safety
374
402
 
@@ -398,7 +426,7 @@ gate to both connectors. Their package versions are validated independently.
398
426
  Publishing additionally requires both explicit flags:
399
427
 
400
428
  ```sh
401
- npm run release:check -- --publish --confirm-version 0.1.0-rc.4
429
+ npm run release:check -- --publish --confirm-version 0.1.0-rc.5
402
430
  ```
403
431
 
404
432
  Prereleases use npm tag `next`; stable versions use `latest`. Repository tags