@scotthuang/agent-knock-knock 0.14.5 → 0.14.7
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.
- package/CHANGELOG.md +17 -0
- package/README.md +1 -1
- package/dist/src/conversation-list-presentation.d.ts +18 -0
- package/dist/src/conversation-list-presentation.js +79 -0
- package/dist/src/conversation-list-presentation.js.map +1 -0
- package/dist/src/conversation-list.d.ts +14 -2
- package/dist/src/conversation-list.js +28 -2
- package/dist/src/conversation-list.js.map +1 -1
- package/dist/src/desktop-cli-adapter.js +5 -2
- package/dist/src/desktop-cli-adapter.js.map +1 -1
- package/dist/src/desktop-compatibility.d.ts +4 -1
- package/dist/src/desktop-compatibility.js +9 -4
- package/dist/src/desktop-compatibility.js.map +1 -1
- package/dist/src/desktop-interaction-projection.d.ts +2 -1
- package/dist/src/desktop-interaction-projection.js +3 -1
- package/dist/src/desktop-interaction-projection.js.map +1 -1
- package/dist/src/desktop-ipc-client.js +3 -3
- package/dist/src/desktop-ipc-client.js.map +1 -1
- package/dist/src/desktop-ipc-native-operations.d.ts +2 -1
- package/dist/src/desktop-ipc-native-operations.js +5 -1
- package/dist/src/desktop-ipc-native-operations.js.map +1 -1
- package/dist/src/desktop-list.d.ts +1 -0
- package/dist/src/desktop-list.js +1 -0
- package/dist/src/desktop-list.js.map +1 -1
- package/dist/src/desktop-public-projection.js +16 -13
- package/dist/src/desktop-public-projection.js.map +1 -1
- package/dist/src/desktop-runtime.js +1 -1
- package/dist/src/desktop-runtime.js.map +1 -1
- package/dist/src/desktop-task-interactions.d.ts +2 -1
- package/dist/src/desktop-task-interactions.js +3 -1
- package/dist/src/desktop-task-interactions.js.map +1 -1
- package/dist/src/desktop-task-service.d.ts +2 -1
- package/dist/src/desktop-task-service.js.map +1 -1
- package/dist/src/semantic-tool-command-helpers.js +62 -0
- package/dist/src/semantic-tool-command-helpers.js.map +1 -1
- package/dist/src/semantic-tool-descriptions.d.ts +1 -1
- package/dist/src/semantic-tool-descriptions.js +6 -6
- package/dist/src/semantic-tool-descriptions.js.map +1 -1
- package/dist/src/semantic-tool-list-projection.d.ts +2 -0
- package/dist/src/semantic-tool-list-projection.js +89 -7
- package/dist/src/semantic-tool-list-projection.js.map +1 -1
- package/dist/src/semantic-tool-schemas.js +1 -1
- package/dist/src/semantic-tool-schemas.js.map +1 -1
- package/dist/src/terminal-list-cli-adapter.js +1 -1
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-monitor-decision-policy.d.ts +1 -1
- package/docs/codex-cli-native-compatibility.md +20 -10
- package/docs/codex-desktop-compatibility.md +47 -9
- package/docs/desktop-create.md +5 -3
- package/docs/operator-guide.md +13 -7
- package/package.json +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +8 -6
|
@@ -18,16 +18,19 @@ version and build. It is not a minimum-version promise:
|
|
|
18
18
|
| macOS Desktop application | Send to live owner / Status / Watch | Native approvals, answers, model/permission changes, cancellation | New conversation |
|
|
19
19
|
| --- | --- | --- | --- |
|
|
20
20
|
| `26.1002.52244` / `13536` | Existing verified adapter | Existing verified adapter | Not enabled |
|
|
21
|
-
| `26.1007.30912` / `20156` | Send profile for the new-conversation workflow; read-only observation retains exact owner/turn checks |
|
|
21
|
+
| `26.1007.30912` / `20156` | Send profile for the new-conversation workflow; read-only observation retains exact owner/turn checks | AKK 0.14.7 adds command/file approvals: allow once or reject. Answers, model/permission changes, and cancellation remain unavailable | Available in AKK 0.14.5; see the creation boundary below |
|
|
22
22
|
| Other builds | Compatible read-only observations may work; no native writes are advertised | Not enabled | Not enabled |
|
|
23
23
|
|
|
24
|
-
The `20156` profile does not inherit the old build's native
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
The `20156` profile does not inherit the old build's full native controls.
|
|
25
|
+
AKK 0.14.6 exposes pending interactions but requires handling them in
|
|
26
|
+
Desktop. AKK 0.14.7 adds an Approve action for recognized
|
|
27
|
+
command/file requests, with explicit `approve_once` or `reject` decisions.
|
|
28
|
+
Question replies and other unsupported controls still direct the user to
|
|
29
|
+
Desktop. Watch attention notifications follow the same per-operation boundary.
|
|
28
30
|
`desktop_scan.send_contract_verified` reports the Send profile;
|
|
31
|
+
`approval_contract_verified` reports the per-build approval profile;
|
|
29
32
|
`write_contract_verified` continues to mean the full native-control profile.
|
|
30
|
-
The
|
|
33
|
+
The Send profile and creation workflow are available starting in AKK 0.14.5.
|
|
31
34
|
|
|
32
35
|
The original fully reviewed application is macOS Codex Desktop `26.1002.52244`, build `13536`,
|
|
33
36
|
bundle ID `com.openai.codex`, installed as `/Applications/ChatGPT.app`. These
|
|
@@ -76,6 +79,40 @@ No Desktop operation types a slash command or uses terminal activity as exact
|
|
|
76
79
|
completion evidence. Existing terminal capabilities remain separate and retain
|
|
77
80
|
their previous checks.
|
|
78
81
|
|
|
82
|
+
## Approval validation on build 20156
|
|
83
|
+
|
|
84
|
+
The 2026-10-14 validation for AKK 0.14.7 uses macOS Desktop `26.1007.30912`,
|
|
85
|
+
build `20156`, and one dedicated test conversation.
|
|
86
|
+
|
|
87
|
+
Real semantic Send, Status and Approve calls passed four cases:
|
|
88
|
+
|
|
89
|
+
- Command allowed once: the original item completed with exit code 0 and the
|
|
90
|
+
expected output marker.
|
|
91
|
+
- Command rejected: the original item became `declined`; its target file was
|
|
92
|
+
never created.
|
|
93
|
+
- File change allowed once: the original item completed and the dedicated file
|
|
94
|
+
contained exactly the expected text.
|
|
95
|
+
- File change rejected: the original item became `declined`; its target file
|
|
96
|
+
was never created.
|
|
97
|
+
|
|
98
|
+
All four responses reached `confirmed` with `exact_approval_item_advanced` and
|
|
99
|
+
one dispatch attempt. Both conversation and exact Watch targets were exercised.
|
|
100
|
+
Repeated consumed semantic approval actions were rejected without another
|
|
101
|
+
dispatch. Approval-attention and completion callbacks were accepted once each by
|
|
102
|
+
an isolated local receiver. The conversation finished idle, with no pending
|
|
103
|
+
interaction and its original read-only/on-request settings unchanged.
|
|
104
|
+
An IPC acknowledgement alone is not confirmation.
|
|
105
|
+
|
|
106
|
+
Approval responses retain exact thread, turn, owner, and typed request identity
|
|
107
|
+
checks. A repeated response uses its durable record; a possibly submitted
|
|
108
|
+
response is observed without resending. The supported decisions do not grant
|
|
109
|
+
persistent permission or change the conversation's permission mode. This run
|
|
110
|
+
does not establish support for question replies, settings, cancellation, or
|
|
111
|
+
external-channel notification delivery on this build. Network-form command
|
|
112
|
+
approvals share the existing typed request path but were not separately
|
|
113
|
+
live-tested; persistent approvals and permission-request approvals remain
|
|
114
|
+
outside this operation's supported decisions.
|
|
115
|
+
|
|
79
116
|
## New-conversation boundary
|
|
80
117
|
|
|
81
118
|
Use `agent_knock_knock_desktop_create` or the `desktop-create` CLI command; see
|
|
@@ -102,9 +139,10 @@ No external channel delivery or newer-build native controls were exercised.
|
|
|
102
139
|
This route is intentionally separate from loading or replacing an existing
|
|
103
140
|
conversation. A failed or uncertain create/load/send stage must preserve its
|
|
104
141
|
record and exact identities; it must not silently create another conversation
|
|
105
|
-
or replay a task.
|
|
106
|
-
|
|
107
|
-
|
|
142
|
+
or replay a task. AKK 0.14.7 supports the command/file approvals described
|
|
143
|
+
above on build `20156`; question replies and the broader native controls remain
|
|
144
|
+
unavailable there. Those remain
|
|
145
|
+
enabled only for build `13536`, where their effects were previously verified.
|
|
108
146
|
|
|
109
147
|
## Find and select a conversation
|
|
110
148
|
|
package/docs/desktop-create.md
CHANGED
|
@@ -119,9 +119,11 @@ joining unrelated work.
|
|
|
119
119
|
|
|
120
120
|
The 0.14.5 profile enables new-conversation creation and Desktop Send on
|
|
121
121
|
macOS Desktop `26.1007.30912`, build `20156`. It preserves exact owner and task
|
|
122
|
-
checks for Status/Watch.
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
checks for Status/Watch. AKK 0.14.7 adds command/file approvals with explicit
|
|
123
|
+
allow-once or reject decisions. Question replies,
|
|
124
|
+
permission/model changes, and cancellation remain unavailable on this build;
|
|
125
|
+
handle those actions in Desktop. Approval does not change the permissions
|
|
126
|
+
inherited when the conversation was created.
|
|
125
127
|
|
|
126
128
|
The existing full native-control profile for Desktop `26.1002.52244`, build
|
|
127
129
|
`13536`, is unchanged; it does not enable this new creation workflow. These are
|
package/docs/operator-guide.md
CHANGED
|
@@ -53,13 +53,19 @@ Direct slash commands are available in every first-party Host integration:
|
|
|
53
53
|
| `/akk respond <turn-id> <answer>` | Answer a question inside the same managed Turn. |
|
|
54
54
|
| `/akk cancel <turn-id>` | Interrupt one exact active managed Turn. |
|
|
55
55
|
|
|
56
|
-
AKK List presents one `conversations[]` collection
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
AKK List presents **CLI** and **Desktop** in one `conversations[]` collection,
|
|
57
|
+
with Codex/Claude Code as the agent type. Choose the displayed conversation and
|
|
58
|
+
action; AKK selects the connection. The default view groups a one-to-one
|
|
59
|
+
same-agent/project terminal and direct candidate without changing the terminal's
|
|
60
|
+
identity, status, actions or dispatch checks. Multiple candidates and known
|
|
61
|
+
identity conflicts stay separate; direct-only CLI conversations remain visible.
|
|
62
|
+
Use `terminalDebug: true` or `list --terminal-debug` for all unassociated
|
|
63
|
+
connections and routing details. A display group is not proof that its candidates
|
|
64
|
+
are the same native session, and neither rows nor Watches are a task count.
|
|
65
|
+
Bound task and interaction IDs retain their original provider; uncertain input
|
|
66
|
+
is never retried through another transport. The
|
|
67
|
+
[CLI backend guide](codex-cli-native-compatibility.md#automatic-conversation-routing-2026-10-10)
|
|
68
|
+
describes routing evidence and presentation boundaries.
|
|
63
69
|
|
|
64
70
|
The terminal-specific commands in the table require a physical terminal;
|
|
65
71
|
Desktop interaction, model, permission, and cancellation controls use their
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scotthuang/agent-knock-knock",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.7",
|
|
4
4
|
"description": "Delegate to existing Codex CLI, Codex Desktop, and Claude Code sessions from OpenClaw or compatible controller Hosts, with native direct control and supported terminal fallbacks.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -19,9 +19,11 @@ Keep the user's requested scope and approval boundaries. Do not expand a task, a
|
|
|
19
19
|
|
|
20
20
|
## Choose a conversation
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Present `conversations[]` as **CLI** or **Desktop** using `surface`, and keep Codex/Claude Code as the agent type. Select the displayed `conversation_id` and its advertised operation; AKK chooses the connection internally. Do not make separate user-facing backend and terminal lists, repeat raw discovery arrays, or count Watches as additional conversations or tasks. Preserve unavailable actions, current questions/approvals, and management/recovery records. Scoped controls, when present, are operations on exact targets within a row, not extra conversations.
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Default CLI presentation folds one same-agent, same-project terminal/backend candidate pair into the original terminal row. This is display grouping only: the candidate contributes no identity, status or permissions, and does not authorize backend dispatch. Known conflicts or multiple candidates remain separate. Backend-only CLI conversations remain discoverable. If a particular connection is missing or ambiguous, use `terminalDebug: true` (CLI `list --terminal-debug`) to expand every unassociated connection and routing detail. A same-project embedded CLI and an independent direct CLI can share a default display row when their identities are unknown; the expanded view preserves both. Display entry counts are not proof of unique native tasks.
|
|
25
|
+
|
|
26
|
+
AKK prefers a reachable direct connection only after proving the exact selected native session and process or thread. An unavailable backend may retain an eligible terminal path; busy/blocked state or identity conflict cannot authorize bypass. Targeted operations on an idle terminal can use the existing advertised `/status` inspection to learn its identity; working or blocked terminals are not interrupted. List itself sends no terminal input. Keep an uncertain dispatch receipt and inspect it instead of retrying through another connection.
|
|
25
27
|
|
|
26
28
|
Use the returned `watch_id` or `turn_id` for that task's follow-up. Existing Watches and pending interactions keep their task and route. After a question or approval callback, refresh that exact Status and copy the current interaction action; do not translate its IDs to another transport. Permission operations prefer the verified backend. Backend task recovery retains the original task identity and provider. Terminal binding/menu recovery, model and lifecycle operations retain their separately advertised capability; the caller does not pick a transport. The route-specific guidance below explains those capabilities and result boundaries, not an additional route-selection step.
|
|
27
29
|
|
|
@@ -39,7 +41,7 @@ Callbacks already in flight cannot be recalled by Close or Unwatch. `accepted` p
|
|
|
39
41
|
|
|
40
42
|
## Direct Codex CLI
|
|
41
43
|
|
|
42
|
-
A
|
|
44
|
+
A direct Codex CLI conversation uses an exact `codex-cli:v1:...` conversation ID. This route addresses the existing loaded backend thread and works without tmux or Herdr. It never starts a replacement CLI or treats saved history as a live owner. Embedded CLI sessions without a reachable shared backend continue to use the terminal route. Desktop uses its separate route below.
|
|
43
45
|
|
|
44
46
|
- Select by the returned title, working directory and native thread identity. Copy the advertised action; do not construct IDs, infer thread ownership from the newest same-directory history, or substitute another target. Unresolved physical terminal and direct thread rows can refer to the same work; select one conversation and send once.
|
|
45
47
|
- Send with `agent_knock_knock_send({conversation_id,request})`. AKK preserves current settings, submits once and returns `codex-cli-watch:...` for the accepted native task. Keep the receipt if acceptance is uncertain; refresh its Status instead of blindly sending again.
|
|
@@ -51,7 +53,7 @@ Use AKK's advertised actions and read the actual operation result after backend
|
|
|
51
53
|
|
|
52
54
|
## Direct Claude Code
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
Direct Claude Code conversations use `claude-cli:v1:...` IDs for an already-running native CLI. This path is live-tested on macOS with Claude Code `2.1.296` and peer protocol `1`; Python 3 is required on the AKK side. It needs no Claude plugin, hook, special launch arguments or replacement process. Use actual advertised capabilities after upgrades, not a version number alone.
|
|
55
57
|
|
|
56
58
|
- Send to a verified idle conversation. Keep its `claude-cli-watch:...` receipt: Send already creates completion monitoring with the shared 720-minute hard deadline. Do not add another Watch for that Send. Busy/blocked, held/refused or uncertain delivery must not be retried through terminal input.
|
|
57
59
|
- Status on the conversation reads its latest input; Status on the Watch reads its original exact `native_input_id`. This is an input UUID, not a native turn ID. Public progress and tool-action summaries are bounded to 800 code points; List has no progress body. `agent_acceptance: proven` requires exact native sender/message/input evidence, not merely a socket write.
|
|
@@ -61,7 +63,7 @@ Rows with `source="claude_cli"` use `claude-cli:v1:...` IDs for an already-runni
|
|
|
61
63
|
|
|
62
64
|
## Codex Desktop
|
|
63
65
|
|
|
64
|
-
Desktop rows in `conversations[]` have `
|
|
66
|
+
Desktop rows in `conversations[]` have `surface="desktop"` and a full `desktop:v1:...` conversation ID. Their owner identity is separate from terminal selectors, managed Sessions, and managed Turns. The terminal-specific instructions below do not grant Desktop input authority.
|
|
65
67
|
|
|
66
68
|
- List defaults to `desktop_view: "sidebar"`: persisted expanded sidebar membership, including eligible pinned threads and expanded project members. This is not a live screen or scroll-viewport snapshot. Present all returned rows, including unconnected conversations, and distinguish them from rows that can receive tasks. Report `desktop_scan` limitations when the saved layout cannot be reconstructed; do not silently substitute the historical catalog.
|
|
67
69
|
- Find the intended row by title and project. Use `desktopSearch`, `desktopProject`, `desktopLimit`, and returned pagination cursor as `desktopCursor` within the same view. Use `desktop_view: "history"` explicitly to search the broader saved catalog for an older or hidden conversation. Do not assume the first page is complete or treat `live_count` as a count across unreturned pages. If several rows match, show their titles and project paths; do not invent IDs or ask for a deep link when List can discover the target.
|
|
@@ -75,7 +77,7 @@ Desktop rows in `conversations[]` have `source="codex_desktop"` and a full `desk
|
|
|
75
77
|
- `model_options({conversation_id})` reads the current model, reasoning effort, and Plan/default mode. Desktop does not expose a model catalog (`catalog_available=false`). Use `set_model({conversation_id,model,reasoning_effort,collaboration_mode?})` only with an explicitly requested model ID; optional `collaboration_mode` is `plan` or `default`. Omitting it preserves the existing mode. Effective settings do not prove a model is available to the account. An unconfirmed update must be inspected, not blindly replayed.
|
|
76
78
|
- Cancel with `cancel({watch_id})` for the exact watched task, or `cancel({conversation_id,expected_native_turn_id})` using the native task ID advertised by fresh Status. A late cancel must never interrupt a newer task. `unwatch` only stops observation. Arbitrary cold loading/resume remains unsupported; explicit creation uses the separate tool below.
|
|
77
79
|
|
|
78
|
-
Full Desktop control is reviewed for macOS Codex Desktop `26.1002.52244` build `13536` through private local IPC. The
|
|
80
|
+
Full Desktop control is reviewed for macOS Codex Desktop `26.1002.52244` build `13536` through private local IPC. The profile for `26.1007.30912` build `20156` supports creation and Send/Status/Watch; AKK 0.14.7 also supports command/file approvals with `approve_once` or `reject`. Answers, permission/model changes and cancellation remain unavailable on that build; handle them in Desktop. Use only the currently advertised action: approval support does not imply support for other interaction responses. Read the actual capability and error result after an app update; never downgrade to raw UI input or relax identity checks. The native protocol has no atomic idle-and-send operation, so concurrent human input can make acceptance uncertain. Preserve the returned Watch and reconcile it instead of repeating the task.
|
|
79
81
|
|
|
80
82
|
### Create a Desktop conversation
|
|
81
83
|
|