@scotthuang/agent-knock-knock 0.12.12 → 0.12.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +39 -26
- package/dist/src/approval-policy.d.ts +11 -2
- package/dist/src/approval-policy.js +33 -7
- package/dist/src/approval-policy.js.map +1 -1
- package/dist/src/claude-local-transcript-provider.d.ts +81 -0
- package/dist/src/claude-local-transcript-provider.js +854 -18
- package/dist/src/claude-local-transcript-provider.js.map +1 -1
- package/dist/src/cli-core.js +85 -0
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/deferred-foreground-authority-cli-adapter.js +90 -19
- package/dist/src/deferred-foreground-authority-cli-adapter.js.map +1 -1
- package/dist/src/deferred-foreground-transfer.js +3 -4
- package/dist/src/deferred-foreground-transfer.js.map +1 -1
- package/dist/src/openclaw-callback-transport.d.ts +5 -0
- package/dist/src/openclaw-callback-transport.js +1 -1
- package/dist/src/openclaw-callback-transport.js.map +1 -1
- package/dist/src/openclaw-plugin-callback-adapter.js +96 -14
- package/dist/src/openclaw-plugin-callback-adapter.js.map +1 -1
- package/dist/src/openclaw-plugin-command-adapter.js +548 -107
- package/dist/src/openclaw-plugin-command-adapter.js.map +1 -1
- package/dist/src/openclaw-plugin-helpers.d.ts +27 -4
- package/dist/src/openclaw-plugin-helpers.js +309 -44
- package/dist/src/openclaw-plugin-helpers.js.map +1 -1
- package/dist/src/openclaw-plugin-schemas.d.ts +44 -68
- package/dist/src/openclaw-plugin-schemas.js +63 -91
- package/dist/src/openclaw-plugin-schemas.js.map +1 -1
- package/dist/src/openclaw-plugin-supervisor.js +48 -10
- package/dist/src/openclaw-plugin-supervisor.js.map +1 -1
- package/dist/src/openclaw-private-authority-offers.d.ts +22 -0
- package/dist/src/openclaw-private-authority-offers.js +177 -0
- package/dist/src/openclaw-private-authority-offers.js.map +1 -0
- package/dist/src/store.d.ts +1 -0
- package/dist/src/store.js +3 -1
- package/dist/src/store.js.map +1 -1
- package/dist/src/terminal-action-projection.d.ts +19 -1
- package/dist/src/terminal-action-projection.js +23 -0
- package/dist/src/terminal-action-projection.js.map +1 -1
- package/dist/src/terminal-command-cli-adapter.d.ts +5 -0
- package/dist/src/terminal-command-cli-adapter.js +249 -89
- package/dist/src/terminal-command-cli-adapter.js.map +1 -1
- package/dist/src/terminal-dispatch-repository-cli-adapter.js +305 -79
- package/dist/src/terminal-dispatch-repository-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-cli-adapter.d.ts +31 -7
- package/dist/src/terminal-list-cli-adapter.js +285 -67
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-renderer.d.ts +2 -0
- package/dist/src/terminal-list-renderer.js +116 -41
- package/dist/src/terminal-list-renderer.js.map +1 -1
- package/dist/src/terminal-monitor-cli-adapter.js +1 -1
- package/dist/src/terminal-monitor-cli-adapter.js.map +1 -1
- package/dist/src/terminal-monitor-state-cli-adapter.js +6 -15
- package/dist/src/terminal-monitor-state-cli-adapter.js.map +1 -1
- package/dist/src/terminal-status-cli-adapter.d.ts +10 -0
- package/dist/src/terminal-status-cli-adapter.js +89 -7
- package/dist/src/terminal-status-cli-adapter.js.map +1 -1
- package/dist/src/terminal-submission-acceptance.d.ts +60 -1
- package/dist/src/terminal-submission-acceptance.js +560 -0
- package/dist/src/terminal-submission-acceptance.js.map +1 -1
- package/dist/src/terminal-watch-callback-cli-adapter.d.ts +20 -0
- package/dist/src/terminal-watch-callback-cli-adapter.js +55 -0
- package/dist/src/terminal-watch-callback-cli-adapter.js.map +1 -0
- package/dist/src/terminal-watch-cli-adapter.d.ts +64 -0
- package/dist/src/terminal-watch-cli-adapter.js +508 -0
- package/dist/src/terminal-watch-cli-adapter.js.map +1 -0
- package/dist/src/terminal-watch-service.d.ts +97 -0
- package/dist/src/terminal-watch-service.js +714 -0
- package/dist/src/terminal-watch-service.js.map +1 -0
- package/dist/src/terminal-watch-store.d.ts +149 -0
- package/dist/src/terminal-watch-store.js +861 -0
- package/dist/src/terminal-watch-store.js.map +1 -0
- package/docs/quickstart-herdr.md +8 -0
- package/docs/quickstart-tmux.md +33 -6
- package/openclaw.plugin.json +11 -3
- package/package.json +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +57 -39
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-watch-store.js","sourceRoot":"","sources":["../../src/terminal-watch-store.ts"],"names":[],"mappings":"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"}
|
package/docs/quickstart-herdr.md
CHANGED
|
@@ -26,6 +26,14 @@ Wait for the empty idle composer. After the AKK OpenClaw plugin is installed and
|
|
|
26
26
|
|
|
27
27
|
AKK enumerates every running local Herdr session, identifies a terminal by its session socket plus stable `terminal_id`, and treats the current `pane_id` only as a refreshable route. Moving a live pane does not silently rebind ownership. Every side effect revalidates the terminal resource, shell PID, agent PID, cwd, native-session evidence, and current composer first.
|
|
28
28
|
|
|
29
|
+
The v18 structured model contract carries semantic IDs only. Ordinary send is `send({session_id,request})` for strict continuation or `send({terminal_id,request})` for the current verified Herdr pane; the targets are mutually exclusive. Watch and native/lifecycle actions likewise expose `terminal_id` (plus `inspection` or `native_thread_id` where applicable), never a pane route, selector, token, fingerprint, revision, or binding generation. AKK resolves the current Herdr route and derives all opaque freshness fences privately, then revalidates them under lock before terminal input.
|
|
30
|
+
|
|
31
|
+
To observe a task that you started directly in the Herdr Codex or Claude Code TUI, wait until it is actively working or awaiting approval, run a fresh `/akk list`, and use only that terminal row's advertised `watch` action. Both the structured action and `/akk watch <exact-terminal-id>` take only that exact terminal ID; Watch resolves and revalidates current binding authority internally. The result's `watch_id` is the sole target for `/akk status <watch-id>` and `/akk unwatch <watch-id>`.
|
|
32
|
+
|
|
33
|
+
Terminal Watch is only for human-started external work. If the terminal already has an active AKK-managed Turn, list and status do not offer Watch and a direct Watch attempt is rejected; use that Turn's existing monitor, status, and callback path instead.
|
|
34
|
+
|
|
35
|
+
This creates an independent Terminal Watch schema-v1 record, not an AKK Session or Turn. It sends no input and does not adopt, claim, reserve, block, or interrupt the human's task. Approval is notification-only and must be decided in the live TUI; Terminal Watch cannot auto-approve. Its exact Herdr endpoint, process/native-task identity, and privacy-safe rollout or transcript anchor fail closed on any identity, file, boundary, or fingerprint drift. Durable settlement and callback-outbox state let OpenClaw supervision recover and retry an idempotent notification after restart.
|
|
36
|
+
|
|
29
37
|
Herdr's raw `pane send-text` command is not used for task delivery. AKK uses the Unix-socket `pane.send_input` method so multiline text follows Herdr's bracketed-paste-aware path, persists the text-injected stage, resolves the stable terminal again, and then dispatches one separate Enter.
|
|
30
38
|
|
|
31
39
|
Current boundary:
|
package/docs/quickstart-tmux.md
CHANGED
|
@@ -68,7 +68,7 @@ Success returns a managed turn and, when the work finishes, its result. The same
|
|
|
68
68
|
|
|
69
69
|
`/akk list` keeps that physical pane as the primary resource: it appears once in `terminals[]` with live `process_state` and `activity_state`. Its managed context follows terminal → native coding-agent session → AKK `session_id` → Turns. AKK places the active Turn under `managed.current_turn`, or the newest retained Turn under `managed.recent_turn`; retained Turns do not occupy or hide the pane.
|
|
70
70
|
|
|
71
|
-
For another request, refresh `/akk list` and use only that terminal row's listed `send` action
|
|
71
|
+
For another request, refresh `/akk list` and use only that terminal row's listed v18 `send` action. A `session_exact` action carries `session_id`; a `terminal_follow_current` action carries `terminal_id`, including for a rollout-backed Codex pane. Add only the new request text. The two targets are mutually exclusive, and a structured model call never carries a selector or opaque token. AKK derives and revalidates its freshness fences internally. Every accepted ordinary send creates a new `turn_id`; a completed Turn is history, not the destination of the next send. Human-friendly selectors such as `codex`, `only`, or `@a1b2c3d4` remain slash-command discovery conveniences; they are not structured action authority.
|
|
72
72
|
|
|
73
73
|
If the coding agent asks a question and the active Turn becomes `waiting_for_openclaw`, use the listed `respond` action with its prefilled `turn_id`, or the equivalent form:
|
|
74
74
|
|
|
@@ -76,7 +76,7 @@ If the coding agent asks a question and the active Turn becomes `waiting_for_ope
|
|
|
76
76
|
/akk respond <turn-selector>: <answer>
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
This answer stays in the same Turn. Managed status, approval, cancellation, renewal, callback retry, and close also use the exact `turn_id`.
|
|
79
|
+
This answer stays in the same Turn. Managed status, approval, cancellation, renewal, callback retry, and close also use the exact `turn_id`. Other structured actions use only the semantic IDs advertised on their row; never construct a target or authority field.
|
|
80
80
|
|
|
81
81
|
Starting a new native context, clearing it, or resuming an older native thread is an explicit lifecycle operation, not an ordinary send. Copy the full `terminal_id` from `/akk list`, then use:
|
|
82
82
|
|
|
@@ -84,12 +84,39 @@ Starting a new native context, clearing it, or resuming an older native thread i
|
|
|
84
84
|
/akk threads <exact-terminal-id>
|
|
85
85
|
/akk new-thread <exact-terminal-id>
|
|
86
86
|
/akk clear-thread <exact-terminal-id>
|
|
87
|
-
/akk resume-thread <exact-terminal-id> [uuid|previous|number|@short-id
|
|
87
|
+
/akk resume-thread <exact-terminal-id> [uuid|previous|number|@short-id]
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
Omitting the resume selection lists exact verified candidates. You may use the complete UUID, the deterministic number or collision-safe `@short-id` from that same displayed snapshot
|
|
90
|
+
Omitting the resume selection lists exact verified candidates. You may use the complete UUID, or the deterministic number or collision-safe `@short-id` from that same displayed snapshot. Numbers and short IDs are valid only for the latest list shown in the same OpenClaw conversation incarnation and expire after five minutes or any relevant terminal, process, workspace, binding, or candidate change. `previous` / `刚才那个` works only when the list advertises a single verified source from the current Session's latest committed lifecycle transition; AKK never treats “previous” as “newest”. AKK resolves these display selectors privately to the complete UUID; the structured mutation is only `resume_thread({terminal_id,native_thread_id})`, while binding and candidate fences stay inside the plugin/CLI. A successful switch creates or activates an AKK Session but creates no Turn, so send the next request separately. There is no background binding poll: after an old coding-agent process exits, the next lifecycle listing can expose its sole historical Session as resumable, and resume safely detaches that stale binding before terminal input. Unsupported, busy, ambiguous, stale, expired, active-elsewhere, or unverifiable transitions stop without falling back to raw `/clear`, `/new`, `/resume`, `/status`, Codex `/fork`, `/side`, or `/btw`, or Claude `/branch` text.
|
|
91
91
|
|
|
92
|
-
AKK Turn status and the coding agent's native status are separate. `/akk status` and `agent_knock_knock_status` inspect AKK-managed state and a bounded current screen; they never type `/status`. For native status, start from `/akk list` and use only an advertised `
|
|
92
|
+
AKK Turn status and the coding agent's native status are separate. `/akk status` and `agent_knock_knock_status` inspect AKK-managed state and a bounded current screen; they never type `/status`. For native status, start from `/akk list` and use only an advertised `agent_knock_knock_native_inspect({terminal_id,inspection:"status"})` action. AKK derives and revalidates the binding fence internally. Supported profiles are Codex 0.146.0/0.146.1/0.147.0/0.148.0 and Claude Code 2.1.218/2.1.226/2.1.237. Claude's modal Status panel is parsed and dismissed before the action proves the original idle composer. The action creates no Session, Turn, receipt, monitor, or callback. `/usage`, `/cost`, `/stats`, `/usage-credits`, `/model`, `/compact`, and arbitrary slash commands remain unavailable. Bare Codex `/usage` is not read-only automation: it opens a menu whose later Enter can select an account-side usage-limit reset.
|
|
93
|
+
|
|
94
|
+
## 5. Watch work you started in the TUI
|
|
95
|
+
|
|
96
|
+
You can start a task yourself by typing it directly in the Codex or Claude Code TUI, then let OpenClaw observe it without handing the task to AKK. While that exact task is actively working or awaiting approval, send a fresh:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
/akk list
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Proceed only if that terminal row advertises `available_actions.watch`. For either the structured tool or slash form, pass only that row's exact terminal ID. Watch resolves the current internal binding authority, then scans again while holding the terminal lock before creating the Watch:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
/akk watch <exact-terminal-id>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Terminal Watch is only for human-started external work. If the terminal already has an active AKK-managed Turn, list and status do not offer Watch and a direct Watch attempt is rejected; use that Turn's existing monitor, status, and callback path instead.
|
|
109
|
+
|
|
110
|
+
The result contains a durable `watch_id`. Use that ID—not a `session_id`, `turn_id`, terminal selector, or short reference—to inspect or stop observation:
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
/akk status <watch-id>
|
|
114
|
+
/akk unwatch <watch-id>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Terminal Watch schema v1 is independent of managed Sessions and Turns. It sends no terminal input and does not adopt, claim, reserve, or block the task; `unwatch` only marks the Watch cancelled and does not interrupt the TUI. An approval event is notification-only: inspect and approve or deny it yourself in the live TUI. Terminal Watch never invokes an approval action or participates in `autoApprove`.
|
|
118
|
+
|
|
119
|
+
The Watch remains pinned to the exact terminal endpoint, process incarnation, native task, and privacy-safe Codex rollout or Claude transcript boundary captured at creation. An exact durable completion already written to that anchor wins; otherwise a replaced process, switched native thread, moved/replaced/truncated evidence file, changed boundary, or ambiguous successor invalidates the Watch instead of following current work. Its schema-v1 record, outcome, and notification outbox are durable, so startup and periodic supervision can resume observation and retry an idempotent callback after AKK, OpenClaw, or the Gateway restarts.
|
|
93
120
|
|
|
94
121
|
## Optional: Enable natural-language routing
|
|
95
122
|
|
|
@@ -123,4 +150,4 @@ Do not run `install-openclaw` after a ClawHub install. The two commands are alte
|
|
|
123
150
|
|
|
124
151
|
## Permissions and monitoring
|
|
125
152
|
|
|
126
|
-
AKK keeps the coding agent's own permission settings. Trusted, exact `autoApprove` rules may approve a supported prompt; each rule can authorize multiple canonical roots through `autoApprove.rules[].workspaces`. Those entries are the only workspace boundary for automatic approval and do not limit pane discovery or manual control. Everything else remains manual. If monitoring stalls while the same Turn is still live, inspect `/akk status only` and use `/akk renew only <minutes>` to resume monitoring without sending terminal input.
|
|
153
|
+
AKK keeps the coding agent's own permission settings. Trusted, exact `autoApprove` rules may approve a supported managed-Turn prompt; each rule can authorize multiple canonical roots through `autoApprove.rules[].workspaces`. Those entries are the only workspace boundary for automatic approval and do not limit pane discovery or manual control. Terminal Watch approval notifications are never eligible for automatic approval. Everything else remains manual. If monitoring stalls while the same managed Turn is still live, inspect `/akk status only` and use `/akk renew only <minutes>` to resume monitoring without sending terminal input.
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "agent-knock-knock",
|
|
3
3
|
"name": "Agent Knock Knock",
|
|
4
|
-
"description": "Control local Codex and Claude Code through shared tmux or Herdr terminals, with exact-version native status inspection, native-thread lifecycle controls,
|
|
4
|
+
"description": "Control local Codex and Claude Code through shared tmux or Herdr terminals, with exact-version native status inspection, native-thread lifecycle controls, managed monitoring, durable Terminal Watch, approvals, and human takeover.",
|
|
5
5
|
"icon": "https://raw.githubusercontent.com/scotthuang/agent-knock-knock/main/docs/assets/agent-knock-knock-icon.png",
|
|
6
6
|
"activation": {
|
|
7
7
|
"onStartup": true,
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"contracts": {
|
|
17
17
|
"tools": [
|
|
18
18
|
"agent_knock_knock_list",
|
|
19
|
+
"agent_knock_knock_watch",
|
|
20
|
+
"agent_knock_knock_unwatch",
|
|
19
21
|
"agent_knock_knock_list_resumable_threads",
|
|
20
22
|
"agent_knock_knock_native_inspect",
|
|
21
23
|
"agent_knock_knock_new_thread",
|
|
@@ -35,6 +37,12 @@
|
|
|
35
37
|
"agent_knock_knock_list": {
|
|
36
38
|
"optional": true
|
|
37
39
|
},
|
|
40
|
+
"agent_knock_knock_watch": {
|
|
41
|
+
"optional": true
|
|
42
|
+
},
|
|
43
|
+
"agent_knock_knock_unwatch": {
|
|
44
|
+
"optional": true
|
|
45
|
+
},
|
|
38
46
|
"agent_knock_knock_list_resumable_threads": {
|
|
39
47
|
"optional": true
|
|
40
48
|
},
|
|
@@ -84,7 +92,7 @@
|
|
|
84
92
|
"properties": {
|
|
85
93
|
"storeDir": {
|
|
86
94
|
"type": "string",
|
|
87
|
-
"description": "Stable AKK Store root. Defaults to ~/.agent-knock-knock/store and contains the compatibility manifest, authoritative managed Sessions
|
|
95
|
+
"description": "Stable AKK Store root. Defaults to ~/.agent-knock-knock/store and contains the compatibility manifest, authoritative managed Sessions and Turns, plus durable Terminal Watch records."
|
|
88
96
|
},
|
|
89
97
|
"openclawBin": {
|
|
90
98
|
"type": "string",
|
|
@@ -105,7 +113,7 @@
|
|
|
105
113
|
"agentHardTimeoutMinutes": {
|
|
106
114
|
"type": "number",
|
|
107
115
|
"exclusiveMinimum": 0,
|
|
108
|
-
"description": "Fallback lifetime ceiling for a terminal bridge monitor that has not produced approval or completion. Defaults to 720 minutes."
|
|
116
|
+
"description": "Fallback lifetime ceiling for a managed terminal bridge monitor or Terminal Watch that has not produced approval or completion. Defaults to 720 minutes."
|
|
109
117
|
},
|
|
110
118
|
"autoApprove": {
|
|
111
119
|
"type": "object",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scotthuang/agent-knock-knock",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.13",
|
|
4
4
|
"description": "Control local Codex and Claude Code from OpenClaw through shared tmux or Herdr terminals, with seamless human-agent handoff.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -25,75 +25,95 @@ Core slash-command forms:
|
|
|
25
25
|
|
|
26
26
|
- `/akk <task>`: send a new task only when exactly one eligible idle coding-agent pane exists across all workspaces.
|
|
27
27
|
- `/akk <selector>: <message>`: resolve one exact eligible AKK session and create a new Turn for the message.
|
|
28
|
-
- `/akk list`: list live coding-agent terminals
|
|
28
|
+
- `/akk list`: list live coding-agent terminals, their current or recent managed-turn context, and durable Terminal Watches.
|
|
29
|
+
- `/akk watch <exact-terminal-id>`: observe one exact supported task that the human already started in the TUI, without sending input or creating a Session or Turn.
|
|
30
|
+
- `/akk unwatch <watch-id>`: cancel only that observation; do not interrupt or otherwise change the TUI task.
|
|
29
31
|
- `/akk threads <exact-terminal-id>`: list verified native threads that may be resumed in one exact terminal.
|
|
30
32
|
- `/akk new-thread <exact-terminal-id>` or `/akk clear-thread <exact-terminal-id>`: switch that idle terminal to a verified clean native context without creating a Turn.
|
|
31
|
-
- `/akk resume-thread <exact-terminal-id> [uuid|previous|number|@short-id
|
|
32
|
-
- `/akk status [turn-selector]`: inspect one live terminal or exact
|
|
33
|
+
- `/akk resume-thread <exact-terminal-id> [uuid|previous|number|@short-id]`: list candidates when the selection is omitted, or resume one exact snapshot-bound choice without creating a Turn. `previous` also accepts the human phrase `刚才那个`.
|
|
34
|
+
- `/akk status [turn-selector|terminal-watch-id]`: inspect one live terminal, exact managed Turn, or exact Terminal Watch.
|
|
33
35
|
- `/akk respond <turn-selector>: <answer>`: answer a coding-agent question inside a `waiting_for_openclaw` Turn.
|
|
34
36
|
- `/akk cancel <turn-selector>`: interrupt the exact Turn without closing its terminal pane.
|
|
35
37
|
|
|
36
|
-
For human-facing ordinary-send slash forms, a selector may be `codex`, `claude`, `only`, `latest`, or an `@short-ref` returned by `AKK list`. These selectors are only a resolution layer and fail closed when the target is missing or ambiguous.
|
|
38
|
+
For human-facing ordinary-send slash forms, a selector may be `codex`, `claude`, `only`, `latest`, or an `@short-ref` returned by `AKK list`. These selectors are only a resolution layer and fail closed when the target is missing or ambiguous. The v18 structured-tool contract never exposes a selector or opaque authority value: the model supplies semantic IDs only. `send({session_id,request})` is strict `session_exact`; `send({terminal_id,request})` is `terminal_follow_current`; the two targets are mutually exclusive, and both may be omitted only when AKK must prove one unique eligible pane. Native-thread actions use the full `terminal_id`, never an `@short-ref`. Managed controls use `turn_id`; terminal-scoped approval uses `terminal_id` after explicit user confirmation. The trusted plugin/CLI derives terminal, binding, candidate, prompt, handoff, and compare-and-swap fences privately, then revalidates them under the canonical terminal and Store locks. Never ask the user or model to copy a token, fingerprint, revision, binding ID/generation, or handoff-only live native UUID from an action; `native_thread_id` is the intentional semantic UUID for resume. For every side effect, AKK must revalidate the selected agent PID and provider-owned terminal identity, confirm that the process and pane working directories match, and revalidate the relevant composer or approval prompt.
|
|
37
39
|
|
|
38
|
-
|
|
40
|
+
The human-priority Codex path may proceed when the pane/process and complete open-rollout candidate inventory are exact even though no single foreground UUID can be selected, including a supported manual `/clear` whose new logical thread appears before its rollout materializes. The complete exact inventory domain binds the provider terminal, PID and process birth, workspace and canonical endpoint, and every open rollout's UUID, descriptor, device, inode, canonical path, and pre-submit byte offset. A `/clear` resume hint is advisory only, never routing or acceptance authority. Under the terminal lock, AKK isolates the predecessor, creates a separate zero-UUID provisional Session and Turn, sends the real task once, and binds only the single candidate rollout that durably accepts that exact request. A rollout-backed Codex row therefore advertises `terminal_follow_current` with `terminal_id`, not `session_exact`; a cached strict Session attempt rejects before task text and never downgrades itself. Only released predecessor Turn history from a strictly earlier binding epoch is excluded from current-send authority; unresolved current-epoch state still blocks. Use only the freshly listed semantic-ID action. Until promotion commits, strict `session_id` send, `respond`, managed `approve`, `cancel`, native lifecycle, callback delivery, and `native_inspect` remain unavailable. If delivery or acceptance is uncertain, do not retry automatically. Terminal-scoped manual Codex approval likewise exposes only `terminal_id`, requires explicit confirmation, leaves managed identity unchanged, never participates in auto-approval, and must not be retried blindly after an uncertain result.
|
|
39
41
|
|
|
40
|
-
|
|
42
|
+
The private approval fence remains prompt-scoped. It binds the adapter-isolated exact unredacted approval region plus terminal/process identity, decision keys and label, prompt kind, working directory, reason/detail, and request or policy evidence. The whole-screen digest and redacted excerpt are diagnostic only: output outside the approval region may continue scrolling without invalidating the same reviewed prompt. After explicit user confirmation, the plugin/CLI retains a private confirmation offer and recaptures the region under lock. Any change inside the exact region—including a command or otherwise identically redacted secret—rejects and sends zero approval keys. Never expose, persist as public action data, log, infer, or reconstruct the raw prompt evidence or its opaque fingerprint.
|
|
41
43
|
|
|
42
|
-
AKK discovers eligible panes across workspaces. When more than one target matches,
|
|
44
|
+
AKK discovers eligible panes across workspaces. When more than one target matches, choose one exact listed `terminal_id` for a structured tool or a listed selector for a human slash command; never guess based on a workspace name or path.
|
|
43
45
|
|
|
44
46
|
Natural-language forms:
|
|
45
47
|
|
|
46
|
-
- `AKK: <task>`: call `agent_knock_knock_send` with `request=<task>` and
|
|
47
|
-
- `AKK Codex: <task>`: call `agent_knock_knock_send` with `
|
|
48
|
-
- `AKK Claude: <task>`: call `agent_knock_knock_send` with `
|
|
48
|
+
- `AKK: <task>`: call `agent_knock_knock_send` with `request=<task>` and neither target ID. This succeeds only when exactly one eligible idle pane exists.
|
|
49
|
+
- `AKK Codex: <task>`: list first, require one exact eligible Codex row, then call `agent_knock_knock_send` with that row's `terminal_id` and `request=<task>`.
|
|
50
|
+
- `AKK Claude: <task>`: list first, require one exact eligible Claude row, then call `agent_knock_knock_send` with that row's `terminal_id` and `request=<task>`.
|
|
49
51
|
- Requests to list AKK or local coding-agent work: call `agent_knock_knock_list`.
|
|
50
|
-
- Requests to
|
|
51
|
-
- Requests
|
|
52
|
+
- Requests to observe work the human started directly in the Codex or Claude Code TUI: first call `agent_knock_knock_list`, then call `agent_knock_knock_watch` only from that exact active terminal row's freshly advertised `watch` action. Pass its complete `terminal_id`; AKK resolves and revalidates the current binding authority internally, so no binding token crosses the model-facing Watch boundary.
|
|
53
|
+
- Requests to inspect an existing Terminal Watch: call `agent_knock_knock_status` with its authoritative `watch_id`. Requests to stop observing it: call `agent_knock_knock_unwatch` with that same `watch_id`. Never substitute a Session, Turn, terminal selector, or short reference.
|
|
54
|
+
- Requests to continue in the current terminal context after the human may have run `/clear`, `/new`, `/resume`, or an equivalent native operation: first call `agent_knock_knock_list`, then use only that exact terminal row's advertised `send({terminal_id,request})`; do not substitute the stale `session_id`.
|
|
55
|
+
- Requests for the coding agent's native Codex status card or Claude Status panel: first call `agent_knock_knock_list`, then call `agent_knock_knock_native_inspect({terminal_id,inspection:"status"})` only when the exact terminal row advertises it; do not substitute AKK Turn status or ordinary send.
|
|
52
56
|
- Requests to list resumable native threads for an exact terminal: call `agent_knock_knock_list_resumable_threads` with the terminal row's prefilled `terminal_id`.
|
|
53
|
-
- Explicit requests to start a new thread or clear context: call `agent_knock_knock_new_thread` only from an advertised `new_thread` action
|
|
54
|
-
- Explicit requests for low-level recovery of a listed binding conflict:
|
|
55
|
-
- Explicit requests to resume prior native context: first call `agent_knock_knock_list_resumable_threads`; then call `agent_knock_knock_resume_thread
|
|
57
|
+
- Explicit requests to start a new thread or clear context: call `agent_knock_knock_new_thread({terminal_id})` only from an advertised `new_thread` action.
|
|
58
|
+
- Explicit requests for low-level recovery of a listed binding conflict: after explicit user confirmation, call only the advertised `agent_knock_knock_reconcile_binding({terminal_id,conflicting_session_id})`. AKK derives its revision and binding fences privately, detaches the stale/conflicting binding without adopting the live thread, and requires a fresh list afterward. Do not use it in place of an advertised follow-current send.
|
|
59
|
+
- Explicit requests to resume prior native context: first call `agent_knock_knock_list_resumable_threads`; then call `agent_knock_knock_resume_thread({terminal_id,native_thread_id})` for one `resumable=true` candidate using its complete UUID. For “previous” / “刚才那个”, proceed only when the fresh result advertises `previous.available_actions.resume_thread`; use that exact semantic-ID action and never substitute the newest row. Human-facing numbers and short IDs are resolved privately and are never structured tool arguments.
|
|
56
60
|
- Requests to inspect current output or ask what a task is doing: call `agent_knock_knock_status`.
|
|
57
|
-
- A later ordinary request: refresh `agent_knock_knock_list` and use only the selected terminal row's
|
|
58
|
-
- Requests to continue the current terminal context are ordinary terminal-scoped sends, not lifecycle actions. Use only a freshly advertised action carrying the exact
|
|
61
|
+
- A later ordinary request: refresh `agent_knock_knock_list` and use only the selected terminal row's advertised send. Use `send({session_id,request})` for `session_exact` or `send({terminal_id,request})` for `terminal_follow_current`; never substitute a retained Session or Turn identity.
|
|
62
|
+
- Requests to continue the current terminal context are ordinary terminal-scoped sends, not lifecycle actions. Use only a freshly advertised action carrying the exact `terminal_id` when a human-driven switch is present.
|
|
59
63
|
- An answer to a coding-agent question in a `waiting_for_openclaw` Turn: call `agent_knock_knock_respond` with its authoritative `turn_id` and `request=<answer>`.
|
|
60
64
|
- Requests to stop current work: call `agent_knock_knock_cancel`.
|
|
61
65
|
|
|
62
66
|
## Sessions and Turns
|
|
63
67
|
|
|
64
|
-
AKK's identity hierarchy is terminal → native Codex or Claude Code session → AKK session → Turns.
|
|
68
|
+
AKK's identity hierarchy is terminal → native Codex or Claude Code session → AKK session → Turns. `session_id` is the strict ordinary-send target for one exact native context. `terminal_id` is the deliberately different follow-current target that lets the user hand the pane's currently verified context back to AKK after a safe human-driven switch. Each accepted send creates a distinct `turn_id` without clearing the native agent context. A `turn_id` is only for history, callbacks, respond, status, approval, cancellation, renewal, callback retry, and close.
|
|
65
69
|
|
|
66
|
-
Use `agent_knock_knock_send` with `request` and neither `session_id` nor `
|
|
70
|
+
Use `agent_knock_knock_send` with `request` and neither `session_id` nor `terminal_id` only when the target is unspecified. AKK must resolve exactly one eligible Codex or Claude Code pane across all workspaces, attach or discover its AKK session, and verify that it is idle immediately before writing the request. If no eligible pane exists, report AKK's setup guidance; do not substitute another execution path.
|
|
71
|
+
|
|
72
|
+
On first attach, the target terminal must be explicitly named by the user; never guess which already-running pane should receive the task.
|
|
67
73
|
|
|
68
74
|
For ordinary send or an in-flight answer:
|
|
69
75
|
|
|
70
76
|
1. Reuse an AKK session only when the user's reference uniquely identifies its verified native session and terminal incarnation.
|
|
71
77
|
2. If no ID is supplied and more than one eligible pane may exist, call `agent_knock_knock_list`.
|
|
72
78
|
3. Treat `terminals[]` as the primary resource list. Its managed context exposes `session_id`; `managed.current_turn` is the only current AKK owner, while `managed.recent_turn` and `managed.history` are retained Turn history. Records in `unavailable_managed_turns[]` have no live pane in this snapshot.
|
|
73
|
-
4. Read the selected resource's `available_actions`. Use only an action present there, start with its prefilled
|
|
74
|
-
5. If an existing managed Session advertises
|
|
79
|
+
4. Read the selected resource's `available_actions`. Use only an action present there, start with its prefilled semantic IDs, supply every `missing_required` field, and consult the top-level v18 `action_contracts`. The only additional action sources are a terminal row's `handoff_decision.choices.take_over_current.action` and an exact `blocking_turns[].recovery_action`: use either only after explicit user confirmation and refresh the list immediately afterward.
|
|
80
|
+
5. If an existing managed Session advertises send with `session_id`, call `agent_knock_knock_send({session_id,request})`; it creates a new Turn strictly in that Session's native context. If the selected row instead advertises follow-current send, call `agent_knock_knock_send({terminal_id,request})`; this action may adopt a safe human-driven handoff or send once within an exact, complete Codex rollout-candidate inventory before binding the uniquely accepting native thread. The status-card-only first-task path remains the zero-rollout special case. Never construct or pass an opaque fence. Use `respond` with its `turn_id` only when that Turn is explicitly `waiting_for_openclaw`; the answer stays in the same Turn. Do not add timeout fields for ordinary use; `timeoutSeconds` is unsupported.
|
|
75
81
|
6. If multiple terminals match, show their `short_ref`, agent, provider, and terminal target, then ask the user to choose. If a human switch has an unresolved Turn, ambiguous ownership, or unverifiable identity and no follow-current send is advertised, report that blocker and ask the user which context to resolve; never guess, supersede active work, or bypass the fence.
|
|
76
82
|
|
|
77
83
|
An idle pane is at a verified ready prompt, with no current work or unresolved permission request. A previously completed managed turn alone is not proof that the pane is still idle.
|
|
78
84
|
|
|
79
85
|
Do not treat ordinary send as native clear, new-session, fork, branch, side thread, status probe, or resume. Do not send `/clear`, `/new`, `/resume`, `/status`, Codex `/fork`, `/side`, `/btw`, Claude `/branch`, or any other first-line native slash command as ordinary task or answer text. Dedicated native lifecycle and inspection tools own their closed commands, capability checks, serialization, identity verification, and binding fences; express other requests in natural language or leave unsupported native commands to a human in the terminal UI. Each successful lifecycle transition creates no Turn, and native inspection creates no Session or Turn.
|
|
80
86
|
|
|
87
|
+
## Terminal Watch
|
|
88
|
+
|
|
89
|
+
Terminal Watch is only for one task that the human started directly in the live TUI. The required sequence is human starts the task in Codex or Claude Code → fresh `agent_knock_knock_list` or `/akk list` while it is working or awaiting approval → copy only that row's complete advertised `watch` action → retain the returned `watch_id` for status or unwatch. The slash form `/akk watch <exact-terminal-id>` performs its own fresh list lookup and requires that exact row to still advertise `watch`.
|
|
90
|
+
|
|
91
|
+
Never suggest or call Terminal Watch for an active AKK-managed Turn. List and status omit the Watch prompt for that Turn, and a direct Watch attempt is rejected; use its existing managed monitor, status, and callback path instead.
|
|
92
|
+
|
|
93
|
+
The Watch is an independent durable schema-v1 aggregate, not a Conversation, Session, Turn, dispatch receipt, monitor owner, or terminal-input authority. It neither sends input nor adopts, claims, reserves, blocks, interrupts, or continues the human's task. `unwatch` marks only the Watch `cancelled`; it does not press a key or stop the coding agent.
|
|
94
|
+
|
|
95
|
+
Its authority is the exact terminal endpoint and process incarnation, native thread/task, supported agent behavior profile, and privacy-safe provider anchor captured at creation. Codex binds the exact rollout file plus the current human task's request/turn byte boundaries. Claude binds the exact transcript file, root prompt, and current-turn byte boundaries. Process, endpoint, native-thread, file identity, truncation/replacement, boundary, successor-task, version, fingerprint, missing-evidence, or ambiguity drift invalidates the Watch. Never follow the pane's current task or reconstruct a new anchor.
|
|
96
|
+
|
|
97
|
+
Approval is notification-only. Show the user that the watched TUI needs attention and tell them to inspect and decide there. Never call an approve tool for a Watch, send approval keys, or apply `autoApprove`; a new exact approval fingerprint is notified once while the Watch remains active. Terminal outcomes settle once. The durable outbox uses deterministic notification IDs/idempotency and leased retry, so startup and periodic supervision can safely recover callback delivery after AKK, OpenClaw, or Gateway restart.
|
|
98
|
+
|
|
99
|
+
The current plugin registers 16 OpenClaw tools and list action-contract v18. Every structured model action carries semantic IDs only; opaque fences are derived and revalidated privately. Watch uses `agent_knock_knock_watch({terminal_id})`, `agent_knock_knock_status({watch_id})`, and `agent_knock_knock_unwatch({watch_id})`; its internal CLI boundary is `watch-terminal`, `watch-status`, `unwatch-terminal`, and `reconcile-watches`.
|
|
100
|
+
|
|
81
101
|
For native status inspection:
|
|
82
102
|
|
|
83
|
-
1. Use only a current `available_actions.native_inspect` entry.
|
|
103
|
+
1. Use only a current `available_actions.native_inspect({terminal_id,inspection:"status"})` entry. Those semantic arguments are complete; never add a command or authority field.
|
|
84
104
|
2. Supported exact profiles are Codex 0.146.0/0.146.1/0.147.0/0.148.0 and Claude Code 2.1.218/2.1.226/2.1.237 `inspection="status"`. Claude success includes parsing and safely dismissing the newly opened Status panel. The tool does not accept `/status` text or any arbitrary command string. `/usage`, `/cost`, `/stats`, `/usage-credits`, `/model`, `/compact`, and unsupported versions remain unavailable. Never automate bare Codex `/usage`: it opens an interactive menu whose later Enter can select an account-side usage-limit reset.
|
|
85
|
-
3. Treat this as terminal input even though the native command is read-only. AKK requires an idle empty composer,
|
|
105
|
+
3. Treat this as terminal input even though the native command is read-only. AKK privately derives a fresh binding fence and requires an idle empty composer, exact PID/process/pane/cwd/version identity, and no conflicting Turn, transition, dispatch, approval, or owner.
|
|
86
106
|
4. Codex `/status` requires an exact viewport of at least 80 columns so the full Session UUID can be proven. That pre-UUID gate applies to native inspection, lifecycle, and strict Session operations that must know the UUID before terminal input. An otherwise eligible terminal-scoped ordinary task may send once and bind from exact native acceptance afterward, so it does not run `/status` or fail merely because the pane is narrow.
|
|
87
107
|
5. The result is valid only when AKK proves one fresh bounded native status result and the pane returns to idle. On an uncertain or unproven submission, do not retry, send Enter, clear the composer, or bypass AKK with raw terminal input.
|
|
88
108
|
6. Native inspection creates no AKK Session, Turn, receipt, monitor, callback, or response round.
|
|
89
109
|
|
|
90
110
|
For native-thread lifecycle discovery or mutation:
|
|
91
111
|
|
|
92
|
-
1. Start from the exact terminal row's currently advertised `list_resumable_threads` or `new_thread` action. Listing is read-only
|
|
93
|
-
2. Before
|
|
94
|
-
3. For resume, list candidates first and invoke only
|
|
112
|
+
1. Start from the exact terminal row's currently advertised `list_resumable_threads({terminal_id})` or `new_thread({terminal_id})` action. Listing is read-only and creates no Turn.
|
|
113
|
+
2. Before `new_thread` or `resume_thread`, the terminal must be verified idle and have no active or unresolved Turn. The plugin/CLI derives and revalidates the current binding fence internally; the model never supplies one.
|
|
114
|
+
3. For resume, list candidates first and invoke only `resume_thread({terminal_id,native_thread_id})` for one row with `resumable=true`, using its complete UUID. Never select by title, preview, recency, or partial UUID. Human slash-command numbers and collision-safe short IDs refer only to the current private snapshot and are resolved inside AKK; they are never structured tool arguments. If the user says “previous” or “刚才那个”, proceed only when AKK advertises one exact previous candidate derived from the latest committed transition; if absent, explain that AKK cannot prove it and ask the user to list/select instead.
|
|
95
115
|
4. Treat mutation success as a Session/native-context transition, not as task delivery. It creates or activates an AKK `session_id`, advances the terminal binding generation, and creates no `turn_id`. The next ordinary send creates the first Turn in that context.
|
|
96
|
-
5. If the agent/version is unsupported, a candidate is ambiguous or active elsewhere, the
|
|
116
|
+
5. If the agent/version is unsupported, a candidate is ambiguous or active elsewhere, the private fence is stale, or post-transition identity cannot be verified, fail closed and report the error. Do not fall back to raw terminal commands.
|
|
97
117
|
|
|
98
118
|
Useful examples:
|
|
99
119
|
|
|
@@ -130,7 +150,7 @@ After an asynchronous send operation is accepted, end the OpenClaw turn. Wait fo
|
|
|
130
150
|
|
|
131
151
|
## Status
|
|
132
152
|
|
|
133
|
-
For managed terminal entries, `agent_knock_knock_status` captures AKK Turn state plus a bounded terminal screen and returns `terminal_screen`.
|
|
153
|
+
For managed terminal entries, `agent_knock_knock_status` captures AKK Turn state plus a bounded terminal screen and returns `terminal_screen`. With `watch_id`, it returns the exact durable Terminal Watch and describes it as observed external work; it must not imply AKK sent or adopted the task. Neither form actively executes the coding agent's native `/status`. Use `agent_knock_knock_native_inspect` only for a terminal row's advertised, version-scoped native status action. Do not inspect the pane with raw provider or shell commands unless the relevant AKK inspection is unavailable or fails.
|
|
134
154
|
|
|
135
155
|
## Cancellation and Recovery
|
|
136
156
|
|
|
@@ -140,26 +160,24 @@ Use `agent_knock_knock_renew` only when AKK marked the same live terminal Turn `
|
|
|
140
160
|
|
|
141
161
|
Use `agent_knock_knock_retry_callback` only for a `callback_failed` managed turn, for example `/akk retry-callback @a1b2c3d4`.
|
|
142
162
|
|
|
143
|
-
Use `agent_knock_knock_close` only when the user explicitly wants to close AKK's managed record. If `AKK list` reports an orphaned terminal dispatch or lifecycle transition, inspect the pane first and use the exact
|
|
163
|
+
Use `agent_knock_knock_close` only when the user explicitly wants to close AKK's managed record. If `AKK list` reports an orphaned terminal dispatch or lifecycle transition, inspect the pane first and use the exact recovery action it returns. `expected_message_id` and `expected_transition_id` remain public because they identify durable entities; they are not authority tokens. If a terminal row exposes `blocking_turns[]`, do not send, inspect natively, or mutate lifecycle state; present the exact collateral blocking Turn and invoke its nested Store-only `recovery_action` only after explicit user confirmation, then refresh the list. An active human-handoff source Turn is deliberately excluded from this generic recovery list. If a verified human native-thread switch conflicts with one active Turn, do not redirect or close it automatically. Present `handoff_decision` to the user. Only after the user chooses takeover may you invoke `agent_knock_knock_close({turn_id,reason:"superseded_by_human_context_switch"})`. AKK privately resolves and revalidates the exact advertised handoff decision; the model does not carry a handoff token or live native UUID. This close sends no terminal input. Refresh `agent_knock_knock_list` afterward and use only its new follow-current send. If the user keeps the source Turn, make no AKK mutation; ask them to restore its native thread in the TUI and then refresh. Closing a managed record does not close the coding agent or terminal pane.
|
|
144
164
|
|
|
145
165
|
Use `/akk doctor` only for installation checks or troubleshooting.
|
|
146
166
|
|
|
147
167
|
## Terminal Approval
|
|
148
168
|
|
|
149
|
-
Approval is a sensitive action.
|
|
169
|
+
Approval is a sensitive action. On an unmanaged raw-terminal row, the terminal-scoped Codex approval action is prefilled with its exact `terminal_id`; never construct or guess that target.
|
|
170
|
+
|
|
171
|
+
A Terminal Watch approval callback is not an approval action. Notify the user and require them to inspect and decide in the live TUI; never continue with the steps below for a `watch_id`.
|
|
150
172
|
|
|
151
173
|
1. Call `agent_knock_knock_status`.
|
|
152
174
|
2. Show the detected request details to the user.
|
|
153
175
|
3. Require explicit approval of that exact current request.
|
|
154
|
-
4. Call the
|
|
176
|
+
4. Call only the current advertised managed `approve({turn_id})` or terminal-scoped `approve({terminal_id})` action. Do not add a token or fingerprint.
|
|
155
177
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
```text
|
|
159
|
-
/akk approve @a1b2c3d4 --expected-approval-fingerprint <fresh-fingerprint>
|
|
160
|
-
```
|
|
178
|
+
AKK retains a private confirmation offer, then recaptures and revalidates the exact prompt, process, pane, owner, and decision under lock immediately before one approval key. If anything changed, the action fails closed and requires a fresh review.
|
|
161
179
|
|
|
162
|
-
For hookless Claude Code, the callback intentionally omits the raw command. Require the user to inspect the named live terminal pane personally; never approve from a hash or summary alone. Claude manual approval accepts only the strictly recognized one-time **Yes** Bash dialog for the current managed turn. Codex approval also requires the current visible prompt.
|
|
180
|
+
For hookless Claude Code, the callback intentionally omits the raw command. Require the user to inspect the named live terminal pane personally; never approve from a hash or summary alone. Claude manual approval accepts only the strictly recognized one-time **Yes** Bash dialog for the current managed turn. Codex approval also requires the current visible prompt. A terminal-scoped Codex approval is manual-only, carries `terminal_id`, leaves managed identity unchanged, and must not be retried blindly after an uncertain transport result.
|
|
163
181
|
|
|
164
182
|
Unknown, stale, expired, ambiguous, persistent-permission, replayed, or changed requests must not be approved. Deny or interrupt them with `agent_knock_knock_cancel`, or tell the user to resolve them directly in the terminal.
|
|
165
183
|
|
|
@@ -167,9 +185,9 @@ A trusted, default-disabled plugin `autoApprove` policy may independently approv
|
|
|
167
185
|
|
|
168
186
|
## Terminal Sessions
|
|
169
187
|
|
|
170
|
-
`agent_knock_knock_list` is terminal-first: every eligible already-running Codex or Claude Code pane appears once in `terminals[]`, even when retained managed Turns reference it. The resource chain is terminal → verified native session → managed AKK `session_id` → Turns
|
|
188
|
+
`agent_knock_knock_list` is terminal-first: every eligible already-running Codex or Claude Code pane appears once in `terminals[]`, even when retained managed Turns reference it. The resource chain is terminal → verified native session → managed AKK `session_id` → Turns; independent observation-only records appear in `terminal_watches[]` and are addressed only by `watch_id`. `process_state` reports process liveness and `activity_state` reports the parsed screen state. `managed.current_turn` is the authoritative active Turn for that terminal; otherwise `managed.recent_turn` shows the newest retained context. A human-driven thread mismatch remains `management_state="conflict"`; `handoff_state="external_handoff_adoptable"` authorizes only the exact fenced `send` advertised on that row, while `external_handoff_blocked` means do not send or guess a recovery. Listing itself never adopts the new context. Request `all=true` only when older `managed.history`, settled Terminal Watches, or retained unavailable history is needed. By default, `unavailable_managed_turns[]` contains attention-needed records whose terminal is unavailable.
|
|
171
189
|
|
|
172
|
-
The top-level
|
|
190
|
+
The top-level v18 `action_contracts` summarizes each tool's semantic-ID inputs; `available_actions` is the authoritative current-action source after listing except for the explicitly modeled nested handoff decision and `blocking_turns[].recovery_action`. Approval, handoff takeover, and `reconcile_binding` require explicit user confirmation and a fresh list after success. Model-facing shapes are: `watch({terminal_id})`; `send({session_id|terminal_id,request})`, with the targets mutually exclusive; managed `approve({turn_id})` or terminal-scoped `approve({terminal_id})`; `native_inspect({terminal_id,inspection})`; `new_thread({terminal_id})`; `resume_thread({terminal_id,native_thread_id})`; and `reconcile_binding({terminal_id,conflicting_session_id})`. A top-level `previous` block, when present, is the only authority for a “previous/刚才那个” request; human-facing numbers and short IDs remain slash-navigation aids and are never structured tool arguments. The model never carries terminal, binding, candidate, handoff, approval, revision, binding ID/generation, or handoff-only live-native-UUID fences; `native_thread_id` remains the semantic resume identity. AKK derives those private fences and revalidates them under lock before side effects. Orphan-close `expected_message_id` and `expected_transition_id` remain because they are entity IDs. Store format remains 1 and writer protocol remains 5.
|
|
173
191
|
|
|
174
192
|
Before every terminal operation, AKK revalidates the expected agent PID and provider-owned terminal identity, then confirms that the process and pane working directories match. Sending new work additionally requires a verified idle prompt. Humans can attach to the same tmux or Herdr session and continue directly at any time.
|
|
175
193
|
|