@scotthuang/agent-knock-knock 0.14.17 → 0.15.0
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 +10 -0
- package/README.md +5 -3
- package/connectors/deepseek-harness/README.md +17 -6
- package/connectors/pi/README.md +16 -5
- package/dist/src/claude-conversation-routing-cli-adapter.js +76 -6
- package/dist/src/claude-conversation-routing-cli-adapter.js.map +1 -1
- package/dist/src/claude-lifecycle-compatibility.js +3 -9
- package/dist/src/claude-lifecycle-compatibility.js.map +1 -1
- package/dist/src/claude-local-transcript-provider.d.ts +5 -15
- package/dist/src/claude-local-transcript-provider.js +38 -56
- package/dist/src/claude-local-transcript-provider.js.map +1 -1
- package/dist/src/claude-managed-send-route.d.ts +17 -0
- package/dist/src/claude-managed-send-route.js +51 -0
- package/dist/src/claude-managed-send-route.js.map +1 -0
- package/dist/src/claude-native-cli-adapter.js +11 -9
- package/dist/src/claude-native-cli-adapter.js.map +1 -1
- package/dist/src/claude-native-client.d.ts +2 -0
- package/dist/src/claude-native-client.js +6 -1
- package/dist/src/claude-native-client.js.map +1 -1
- package/dist/src/claude-native-discovery.js +14 -2
- package/dist/src/claude-native-discovery.js.map +1 -1
- package/dist/src/claude-native-observation.js +3 -1
- package/dist/src/claude-native-observation.js.map +1 -1
- package/dist/src/claude-native-outbox.js +15 -3
- package/dist/src/claude-native-outbox.js.map +1 -1
- package/dist/src/claude-native-peer-envelope.d.ts +3 -0
- package/dist/src/claude-native-peer-envelope.js +72 -0
- package/dist/src/claude-native-peer-envelope.js.map +1 -0
- package/dist/src/claude-native-public-projection.d.ts +635 -60
- package/dist/src/claude-native-public-projection.js +42 -11
- package/dist/src/claude-native-public-projection.js.map +1 -1
- package/dist/src/claude-native-runtime.d.ts +2 -0
- package/dist/src/claude-native-runtime.js +1 -1
- package/dist/src/claude-native-runtime.js.map +1 -1
- package/dist/src/claude-native-sender-policy.d.ts +3 -0
- package/dist/src/claude-native-sender-policy.js +14 -0
- package/dist/src/claude-native-sender-policy.js.map +1 -0
- package/dist/src/claude-native-state-store.d.ts +3 -0
- package/dist/src/claude-native-state-store.js +18 -6
- package/dist/src/claude-native-state-store.js.map +1 -1
- package/dist/src/claude-native-task-service.d.ts +2 -0
- package/dist/src/claude-native-task-service.js +37 -8
- package/dist/src/claude-native-task-service.js.map +1 -1
- package/dist/src/claude-reader-configuration.d.ts +14 -0
- package/dist/src/claude-reader-configuration.js +41 -0
- package/dist/src/claude-reader-configuration.js.map +1 -0
- package/dist/src/claude-terminal-agent-adapter.d.ts +4 -0
- package/dist/src/claude-terminal-agent-adapter.js +1 -1
- package/dist/src/claude-terminal-agent-adapter.js.map +1 -1
- package/dist/src/claude-terminal-agent-observation.d.ts +14 -0
- package/dist/src/claude-terminal-agent-observation.js +147 -0
- package/dist/src/claude-terminal-agent-observation.js.map +1 -0
- package/dist/src/claude-terminal-registry-observation.d.ts +29 -0
- package/dist/src/claude-terminal-registry-observation.js +122 -0
- package/dist/src/claude-terminal-registry-observation.js.map +1 -0
- package/dist/src/claude-transcript-config.d.ts +25 -0
- package/dist/src/claude-transcript-config.js +61 -0
- package/dist/src/claude-transcript-config.js.map +1 -0
- package/dist/src/cli-core.js +37 -13
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/codex-native-semantic.js +10 -2
- package/dist/src/codex-native-semantic.js.map +1 -1
- package/dist/src/codex-process-incarnation.js +3 -1
- package/dist/src/codex-process-incarnation.js.map +1 -1
- package/dist/src/conversation-list.d.ts +6 -0
- package/dist/src/conversation-list.js +61 -14
- package/dist/src/conversation-list.js.map +1 -1
- package/dist/src/conversation-route-dispatch.js +4 -3
- package/dist/src/conversation-route-dispatch.js.map +1 -1
- package/dist/src/conversation-route-store.d.ts +6 -1
- package/dist/src/conversation-route-store.js +13 -5
- package/dist/src/conversation-route-store.js.map +1 -1
- package/dist/src/conversation-runtime-route-store.js +5 -3
- package/dist/src/conversation-runtime-route-store.js.map +1 -1
- package/dist/src/semantic-tool-descriptions.d.ts +1 -1
- package/dist/src/semantic-tool-descriptions.js +10 -8
- package/dist/src/semantic-tool-descriptions.js.map +1 -1
- package/dist/src/semantic-tool-list-projection.js +24 -5
- package/dist/src/semantic-tool-list-projection.js.map +1 -1
- package/dist/src/semantic-tool-schemas.js +7 -5
- package/dist/src/semantic-tool-schemas.js.map +1 -1
- package/dist/src/terminal-action-projection.d.ts +1 -1
- package/dist/src/terminal-action-projection.js.map +1 -1
- package/dist/src/terminal-command-dispatch-preparation.js +6 -3
- package/dist/src/terminal-command-dispatch-preparation.js.map +1 -1
- package/dist/src/terminal-human-explicit-send-cli-adapter.js +14 -6
- package/dist/src/terminal-human-explicit-send-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-cli-adapter.d.ts +2 -0
- package/dist/src/terminal-list-cli-adapter.js +18 -3
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-ownership-service.js +1 -1
- package/dist/src/terminal-list-ownership-service.js.map +1 -1
- package/dist/src/terminal-list-projection-service.js +5 -0
- package/dist/src/terminal-list-projection-service.js.map +1 -1
- package/dist/src/terminal-list-renderer.js +1 -1
- package/dist/src/terminal-list-renderer.js.map +1 -1
- package/dist/src/terminal-managed-interaction-list-action.d.ts +17 -0
- package/dist/src/terminal-managed-interaction-list-action.js +59 -0
- package/dist/src/terminal-managed-interaction-list-action.js.map +1 -0
- package/dist/src/terminal-managed-send-cli-adapter.js +8 -1
- package/dist/src/terminal-managed-send-cli-adapter.js.map +1 -1
- package/dist/src/terminal-model-control-profile.d.ts +3 -2
- package/dist/src/terminal-model-control-profile.js +32 -9
- package/dist/src/terminal-model-control-profile.js.map +1 -1
- package/dist/src/terminal-monitor-decision-policy.d.ts +1 -1
- package/dist/src/terminal-process-source.js +3 -1
- package/dist/src/terminal-process-source.js.map +1 -1
- package/dist/src/terminal-questionnaire-adapter.js +11 -8
- package/dist/src/terminal-questionnaire-adapter.js.map +1 -1
- package/dist/src/terminal-runtime-cli-adapter.js +27 -72
- package/dist/src/terminal-runtime-cli-adapter.js.map +1 -1
- package/dist/src/terminal-watch-record.js +2 -0
- package/dist/src/terminal-watch-record.js.map +1 -1
- package/dist/src/terminal-watch-terminal-identity.js +1 -0
- package/dist/src/terminal-watch-terminal-identity.js.map +1 -1
- package/docs/claude-cli-direct.md +32 -13
- package/docs/list-output.md +8 -0
- package/docs/operator-guide.md +23 -4
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +23 -11
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { associateClaudeConversationRoutes } from "./claude-conversation-routing-identity.js";
|
|
2
|
+
import { claudeNativeControlCapabilities } from "./claude-native-public-projection.js";
|
|
3
|
+
import { claudeManagedSendRoute, claudeManagedTerminalSendBlockReason, withClaudeManagedSendAuthority } from "./claude-managed-send-route.js";
|
|
2
4
|
import { associateConversationRoutes } from "./conversation-routing-identity.js";
|
|
3
5
|
import { presentConversationList } from "./conversation-list-presentation.js";
|
|
4
6
|
import { recordValue } from "./value-guards.js";
|
|
@@ -9,8 +11,52 @@ const claudeSpecialActions = new Set(["approve", "respond", "respond_interaction
|
|
|
9
11
|
export function isTerminalSpecificConversationAction(agent, name) {
|
|
10
12
|
return terminalOnlyActions.has(name) || agent === "claude" && claudeSpecialActions.has(name);
|
|
11
13
|
}
|
|
14
|
+
/** Ordinary Claude Send keeps its canonical selector while choosing a managed terminal first. */
|
|
15
|
+
export function withClaudeSendRouteProjection(native, terminals) {
|
|
16
|
+
if (native.source !== "claude_cli")
|
|
17
|
+
return native;
|
|
18
|
+
const id = String(native.conversation_id ?? native.id ?? "");
|
|
19
|
+
const route = claudeManagedSendRoute(id, terminals);
|
|
20
|
+
if (route.kind === "native")
|
|
21
|
+
return { ...native, route_preference: "claude_native", route_status: "backend_available" };
|
|
22
|
+
const actions = { ...recordValue(native.available_actions) };
|
|
23
|
+
const send = route.kind === "managed";
|
|
24
|
+
if (send)
|
|
25
|
+
actions.send = { tool: "agent_knock_knock_send", input: { conversation_id: id } };
|
|
26
|
+
else
|
|
27
|
+
delete actions.send;
|
|
28
|
+
return { ...native, route_preference: "managed_terminal", route_status: send ? "terminal_available" : "terminal_blocked",
|
|
29
|
+
capabilities: { ...recordValue(native.capabilities), send }, available_actions: actions,
|
|
30
|
+
...(route.kind === "blocked" ? { send_blocked_reason: route.reason } : {}) };
|
|
31
|
+
}
|
|
32
|
+
/** Use the physical incarnation with the Store-filtered action offers from the same scan. */
|
|
33
|
+
function claudeSendTerminals(physical, projected, writable) {
|
|
34
|
+
return physical.map(terminal => {
|
|
35
|
+
const matches = projected.filter(row => row.id === terminal.id);
|
|
36
|
+
return withClaudeManagedSendAuthority(terminal, matches.length === 1 ? matches[0] : undefined, writable);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function standaloneConversation(terminal, physical) {
|
|
40
|
+
const actions = { ...recordValue(terminal.available_actions) };
|
|
41
|
+
const claude = terminal.agent === "claude", codex = terminal.agent === "codex";
|
|
42
|
+
const blocked = claude ? claudeManagedTerminalSendBlockReason({ ...(physical ?? terminal),
|
|
43
|
+
available_actions: terminal.available_actions }) : undefined;
|
|
44
|
+
if (blocked)
|
|
45
|
+
delete actions.send;
|
|
46
|
+
for (const name of ["send", "status", "watch", "native_inspect", "permission_options", "model_options"]) {
|
|
47
|
+
const action = recordValue(actions[name]);
|
|
48
|
+
if (action)
|
|
49
|
+
actions[name] = { tool: action.tool, input: { conversation_id: terminal.id,
|
|
50
|
+
...(name === "native_inspect" ? { inspection: "status" } : {}) } };
|
|
51
|
+
}
|
|
52
|
+
return { ...terminal, conversation_id: terminal.id, title: terminal.workspace ?? terminal.cwd ?? terminal.id,
|
|
53
|
+
route_preference: codex ? "codex_backend" : claude ? "managed_terminal" : "terminal",
|
|
54
|
+
route_status: codex ? "identity_unresolved" : "terminal_only", available_actions: actions,
|
|
55
|
+
...(claude ? { capabilities: { ...recordValue(terminal.capabilities), send: !blocked } } : {}),
|
|
56
|
+
...(blocked ? { send_blocked_reason: blocked } : {}) };
|
|
57
|
+
}
|
|
12
58
|
/** A single proven terminal may offer its own special controls; its exact action targets stay unchanged. */
|
|
13
|
-
function withExactTerminalActions(native) {
|
|
59
|
+
export function withExactTerminalActions(native) {
|
|
14
60
|
if (!["codex_cli", "claude_cli"].includes(String(native.source)))
|
|
15
61
|
return native;
|
|
16
62
|
const controls = rows(native.terminal_controls);
|
|
@@ -25,7 +71,14 @@ function withExactTerminalActions(native) {
|
|
|
25
71
|
capabilities[name === "respond_interaction" ? "interaction_respond" : name] = true;
|
|
26
72
|
}
|
|
27
73
|
}
|
|
28
|
-
|
|
74
|
+
if (native.source === "claude_cli")
|
|
75
|
+
Object.assign(capabilities, claudeNativeControlCapabilities(actions, controls[0]));
|
|
76
|
+
const actionable = capabilities.interaction_respond === true || capabilities.approve === true;
|
|
77
|
+
return { ...native, available_actions: actions, capabilities,
|
|
78
|
+
...(native.source === "claude_cli" && native.attention_required === true && actionable ? {
|
|
79
|
+
manual_required: false, next_action: "respond_to_interaction",
|
|
80
|
+
interaction_hint: { ...recordValue(native.interaction_hint), actionable: true, source: "verified_terminal" }
|
|
81
|
+
} : {}) };
|
|
29
82
|
}
|
|
30
83
|
/** Send/Watch on a proven alias select this backend; an old physical offer cannot bypass it. */
|
|
31
84
|
function routedTerminalControls(terminal, native) {
|
|
@@ -59,25 +112,19 @@ export function unifiedConversationList(result, terminals, identityOptions = {},
|
|
|
59
112
|
terminal_aliases: association.associations.filter(item => item.nativeId === row.conversation_id).map(item => item.terminalId),
|
|
60
113
|
terminal_controls: rows(result.terminals).filter(terminal => association.associations.some(item => item.nativeId === row.conversation_id && item.terminalId === terminal.id))
|
|
61
114
|
.map(terminal => routedTerminalControls(terminal, row)) }));
|
|
62
|
-
|
|
115
|
+
const claudeSendTargets = claudeSendTerminals(terminals, rows(result.terminals), recordValue(result.store)?.writable !== false);
|
|
116
|
+
conversations.push(...claude.map(row => withClaudeSendRouteProjection({ ...row,
|
|
63
117
|
terminal_aliases: claudeAssociations.filter(item => item.nativeId === row.conversation_id).map(item => item.terminalId),
|
|
64
|
-
terminal_controls: rows(result.terminals).filter(terminal => claudeAssociations.some(item => item.nativeId === row.conversation_id && item.terminalId === terminal.id)) })));
|
|
118
|
+
terminal_controls: rows(result.terminals).filter(terminal => claudeAssociations.some(item => item.nativeId === row.conversation_id && item.terminalId === terminal.id)) }, claudeSendTargets)));
|
|
65
119
|
for (const terminal of rows(result.terminals)) {
|
|
66
120
|
if (linked.has(String(terminal.id)))
|
|
67
121
|
continue;
|
|
68
|
-
|
|
69
|
-
for (const name of ["send", "status", "watch", "native_inspect", "permission_options", "model_options"]) {
|
|
70
|
-
const action = recordValue(actions[name]);
|
|
71
|
-
if (action)
|
|
72
|
-
actions[name] = { tool: action.tool, input: { conversation_id: terminal.id,
|
|
73
|
-
...(name === "native_inspect" ? { inspection: "status" } : {}) } };
|
|
74
|
-
}
|
|
75
|
-
conversations.push({ ...terminal, conversation_id: terminal.id, title: terminal.workspace ?? terminal.cwd ?? terminal.id,
|
|
76
|
-
route_preference: terminal.agent === "codex" ? "codex_backend" : "terminal", route_status: terminal.agent === "codex" ? "identity_unresolved" : "terminal_only", available_actions: actions });
|
|
122
|
+
conversations.push(standaloneConversation(terminal, claudeSendTargets.find(row => row.id === terminal.id)));
|
|
77
123
|
}
|
|
78
124
|
conversations.push(...rows(result.desktop_sessions).map(row => ({ ...row, route_preference: "desktop_ipc" })));
|
|
79
125
|
return { ...result, ...presentConversationList(conversations.map(withExactTerminalActions), terminals, presentationOptions),
|
|
80
|
-
conversation_routing: { policy: "
|
|
126
|
+
conversation_routing: { policy: "agent_specific", codex: "backend_first", claude: "managed_terminal_first",
|
|
127
|
+
exact_associations: association.associations.length + claudeAssociations.length,
|
|
81
128
|
unresolved_terminals: association.unassociated.filter(item => terminals.some(t => t.id === item.terminalId && t.agent === "codex")).length } };
|
|
82
129
|
}
|
|
83
130
|
/** Remove historical output only after exact association and blocking checks have run. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-list.js","sourceRoot":"","sources":["../../src/conversation-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAA2C,MAAM,oCAAoC,CAAC;AAC1H,OAAO,EAAE,uBAAuB,EAA4C,MAAM,qCAAqC,CAAC;AACxH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,IAAI,GAAG,CAAC,KAAc,EAAS,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5G,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc;IACzH,eAAe,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3H,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE7H,MAAM,UAAU,oCAAoC,CAAC,KAAc,EAAE,IAAY;IAC/E,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/F,CAAC;AAED,4GAA4G;AAC5G,
|
|
1
|
+
{"version":3,"file":"conversation-list.js","sourceRoot":"","sources":["../../src/conversation-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { ConversationRouteError } from "./conversation-route-store.js";
|
|
2
2
|
function choiceFromRecord(record) {
|
|
3
|
-
return { route: record.route, targetId: record.target_id };
|
|
3
|
+
return { route: record.route, targetId: record.target_id, ...(record.terminal_mode ? { terminalMode: record.terminal_mode, terminalToken: record.terminal_token } : {}) };
|
|
4
4
|
}
|
|
5
5
|
function sameChoice(left, right) {
|
|
6
|
-
return left.route === right.route && left.targetId === right.targetId;
|
|
6
|
+
return left.route === right.route && left.targetId === right.targetId && left.terminalMode === right.terminalMode && left.terminalToken === right.terminalToken;
|
|
7
7
|
}
|
|
8
8
|
function resultWithRoute(result, choice, input, replayed = false) {
|
|
9
9
|
return { ...result, ...(replayed ? { replayed: true } : {}),
|
|
10
10
|
...(input ? { message_id: input.messageId, requested_conversation_id: input.canonicalTarget } : {}),
|
|
11
11
|
routing: { policy: "backend_first", transport: choice.route === "native" ? "codex_backend" : "terminal",
|
|
12
|
-
selected_target: choice.targetId, ...(choice.
|
|
12
|
+
selected_target: choice.targetId, ...(choice.terminalMode ? { terminal_mode: choice.terminalMode } : {}),
|
|
13
|
+
...(choice.reason ? { reason: choice.reason } : {}) } };
|
|
13
14
|
}
|
|
14
15
|
function errorCode(error) {
|
|
15
16
|
const code = error && typeof error === "object" && "code" in error ? error.code : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-route-dispatch.js","sourceRoot":"","sources":["../../src/conversation-route-dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAC8B,MAAM,+BAA+B,CAAC;AAanG,SAAS,gBAAgB,CAAC,MAA+B;IACvD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation-route-dispatch.js","sourceRoot":"","sources":["../../src/conversation-route-dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAC8B,MAAM,+BAA+B,CAAC;AAanG,SAAS,gBAAgB,CAAC,MAA+B;IACvD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5K,CAAC;AACD,SAAS,UAAU,CAAC,IAA6B,EAAE,KAA8B;IAC/E,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,CAAC;AAClK,CAAC;AACD,SAAS,eAAe,CAAC,MAA+B,EAAE,MAAkC,EAC1F,KAA8B,EAAE,QAAQ,GAAG,KAAK;IAChD,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,yBAAyB,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU;YACrG,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9D,CAAC;AACD,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,IAAI,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5F,CAAC;AACD,SAAS,WAAW,CAAC,KAA6B,EAAE,KAA6B,EAAE,MAA+B,EAChH,MAA+B;IAC/B,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAAC,CAAC;IACjG,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,KAAK,YAAY,sBAAsB,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,6BAA6B;YAAE,MAAM,KAAK,CAAC;QAC5G,sGAAsG;QACtG,oGAAoG;QACpG,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAAE,MAAM,KAAK,CAAC;QACvF,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAAyC;IACvF,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,eAAe,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACjC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACzG,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM,EAAE,OAAO;QAAE,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACnG,IAAI,MAAkC,CAAC;IACvC,IAAI,MAAM;QAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;SACzC,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC3E,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9F,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC;QAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IAAC,CAAC;IACxC,OAAO,KAAK,EAAE,CAAC;QACb,2EAA2E;QAC3E,4EAA4E;QAC5E,KAAK,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,OAAO;QAAE,OAAO,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,oGAAoG;QACpG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -8,10 +8,12 @@ export interface ConversationRouteInput {
|
|
|
8
8
|
export interface ConversationRouteChoice {
|
|
9
9
|
route: "native" | "terminal";
|
|
10
10
|
targetId: string;
|
|
11
|
+
terminalMode?: "managed";
|
|
12
|
+
terminalToken?: string;
|
|
11
13
|
}
|
|
12
14
|
export interface ConversationRouteRecord {
|
|
13
15
|
schema: "agent-knock-knock/conversation-route";
|
|
14
|
-
version: 1;
|
|
16
|
+
version: 1 | 2;
|
|
15
17
|
revision: number;
|
|
16
18
|
id: string;
|
|
17
19
|
controller_session: string;
|
|
@@ -20,6 +22,9 @@ export interface ConversationRouteRecord {
|
|
|
20
22
|
canonical_target: string;
|
|
21
23
|
route: ConversationRouteChoice["route"];
|
|
22
24
|
target_id: string;
|
|
25
|
+
/** Absent on older physical routes. A managed route must not downgrade or upgrade a legacy retry. */
|
|
26
|
+
terminal_mode?: "managed";
|
|
27
|
+
terminal_token?: string;
|
|
23
28
|
created_at: string;
|
|
24
29
|
updated_at: string;
|
|
25
30
|
/** A recorded receipt is an observation, not proof of delivery or task acceptance. */
|
|
@@ -27,6 +27,10 @@ function assertInput(input) {
|
|
|
27
27
|
function assertChoice(choice) {
|
|
28
28
|
if (!choice || !["native", "terminal"].includes(choice.route) || !nonblank(choice.targetId))
|
|
29
29
|
invalid("Invalid conversation route choice");
|
|
30
|
+
if (choice.terminalMode !== undefined && (choice.terminalMode !== "managed" || choice.route !== "terminal"))
|
|
31
|
+
invalid("Invalid terminal conversation route mode");
|
|
32
|
+
if (choice.terminalMode === "managed" ? !nonblank(choice.terminalToken) : choice.terminalToken !== undefined)
|
|
33
|
+
invalid("Managed terminal route requires its original physical authority");
|
|
30
34
|
}
|
|
31
35
|
function assertMatches(record, input) {
|
|
32
36
|
if (record.controller_session !== input.controllerSession || record.message_id !== input.messageId ||
|
|
@@ -35,14 +39,16 @@ function assertMatches(record, input) {
|
|
|
35
39
|
}
|
|
36
40
|
function assertRecord(value) {
|
|
37
41
|
const r = value;
|
|
38
|
-
if (!r || r.schema !== "agent-knock-knock/conversation-route" || r.version
|
|
42
|
+
if (!r || r.schema !== "agent-knock-knock/conversation-route" || ![1, 2].includes(r.version) ||
|
|
39
43
|
!Number.isSafeInteger(r.revision) || r.revision < 1 || !nonblank(r.request_text) || !nonblank(r.canonical_target) ||
|
|
40
44
|
!validTime(r.created_at) || !validTime(r.updated_at) || !["reserved", "uncertain", "recorded"].includes(r.state)) {
|
|
41
45
|
invalid("Invalid conversation route record");
|
|
42
46
|
}
|
|
43
47
|
if (r.id !== conversationRouteId(r.controller_session, r.message_id))
|
|
44
48
|
invalid("Conversation route record identity mismatch");
|
|
45
|
-
assertChoice({ route: r.route, targetId: r.target_id });
|
|
49
|
+
assertChoice({ route: r.route, targetId: r.target_id, terminalMode: r.terminal_mode, terminalToken: r.terminal_token });
|
|
50
|
+
if ((r.version === 2) !== (r.terminal_mode === "managed"))
|
|
51
|
+
invalid("Conversation route mode requires its versioned contract");
|
|
46
52
|
if ((r.state === "recorded") !== (r.receipt !== undefined) || r.receipt !== undefined && !recordValue(r.receipt) ||
|
|
47
53
|
r.error_code !== undefined && !/^[a-zA-Z0-9_-]{1,100}$/.test(r.error_code))
|
|
48
54
|
invalid("Invalid conversation route outcome");
|
|
@@ -62,7 +68,7 @@ function assertExecutionPhase(r) {
|
|
|
62
68
|
}
|
|
63
69
|
}
|
|
64
70
|
function assertUpdate(previous, next) {
|
|
65
|
-
for (const key of ["id", "controller_session", "message_id", "request_text", "canonical_target", "route", "target_id", "created_at"]) {
|
|
71
|
+
for (const key of ["id", "version", "controller_session", "message_id", "request_text", "canonical_target", "route", "target_id", "terminal_mode", "terminal_token", "created_at"]) {
|
|
66
72
|
if (previous[key] !== next[key])
|
|
67
73
|
conflict();
|
|
68
74
|
}
|
|
@@ -95,7 +101,8 @@ export function createConversationRouteStore(storeDir, locks, options = {}) {
|
|
|
95
101
|
const current = load(input);
|
|
96
102
|
if (!current)
|
|
97
103
|
throw new ConversationRouteError("conversation_route_missing", "Conversation route must be reserved before recording an outcome");
|
|
98
|
-
if (current.route !== choice.route || current.target_id !== choice.targetId
|
|
104
|
+
if (current.route !== choice.route || current.target_id !== choice.targetId || current.terminal_mode !== choice.terminalMode
|
|
105
|
+
|| current.terminal_token !== choice.terminalToken)
|
|
99
106
|
conflict();
|
|
100
107
|
const next = operation(current);
|
|
101
108
|
return next === current ? current : repository.save({ ...next, updated_at: now().toISOString() }, current.revision);
|
|
@@ -111,10 +118,11 @@ export function createConversationRouteStore(storeDir, locks, options = {}) {
|
|
|
111
118
|
if (previous)
|
|
112
119
|
return { record: previous, created: false };
|
|
113
120
|
const date = now().toISOString();
|
|
114
|
-
return { created: true, record: repository.save({ schema: "agent-knock-knock/conversation-route", version: 1,
|
|
121
|
+
return { created: true, record: repository.save({ schema: "agent-knock-knock/conversation-route", version: choice.terminalMode ? 2 : 1,
|
|
115
122
|
revision: 1, id: conversationRouteId(input.controllerSession, input.messageId), controller_session: input.controllerSession,
|
|
116
123
|
message_id: input.messageId, request_text: input.requestText, canonical_target: input.canonicalTarget,
|
|
117
124
|
route: choice.route, target_id: choice.targetId, created_at: date, updated_at: date, state: "reserved",
|
|
125
|
+
...(choice.terminalMode ? { terminal_mode: choice.terminalMode, terminal_token: choice.terminalToken } : {}),
|
|
118
126
|
...(reservationOptions?.trackPreparation ? { preparation_tracked: true } : {}) }, null) };
|
|
119
127
|
});
|
|
120
128
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-route-store.js","sourceRoot":"","sources":["../../src/conversation-route-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation-route-store.js","sourceRoot":"","sources":["../../src/conversation-route-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ function privateDirectory(directory) {
|
|
|
41
41
|
function reconcileRecords(legacy, current) {
|
|
42
42
|
if (!legacy || !current)
|
|
43
43
|
return legacy ?? current;
|
|
44
|
-
const immutable = ["id", "controller_session", "message_id", "request_text", "canonical_target", "route", "target_id"];
|
|
44
|
+
const immutable = ["id", "controller_session", "message_id", "request_text", "canonical_target", "route", "target_id", "terminal_mode", "terminal_token"];
|
|
45
45
|
if (immutable.some(key => legacy[key] !== current[key]) ||
|
|
46
46
|
legacy.receipt !== undefined && current.receipt !== undefined && !isDeepStrictEqual(legacy.receipt, current.receipt)) {
|
|
47
47
|
throw new ConversationRouteError("conversation_route_conflict", "Managed Store and runtime journals disagree on this message's immutable route or receipt");
|
|
@@ -58,7 +58,8 @@ function reconcileRecords(legacy, current) {
|
|
|
58
58
|
return legacy;
|
|
59
59
|
return current;
|
|
60
60
|
}
|
|
61
|
-
const choiceOf = (record) => ({ route: record.route, targetId: record.target_id
|
|
61
|
+
const choiceOf = (record) => ({ route: record.route, targetId: record.target_id,
|
|
62
|
+
...(record.terminal_mode ? { terminalMode: record.terminal_mode, terminalToken: record.terminal_token } : {}) });
|
|
62
63
|
/** New reservations never acquire the managed Store writer lease. Existing development
|
|
63
64
|
* journals remain read-only authority; migration preserves their provider and outcome.
|
|
64
65
|
* Writers using this wrapper share a message lock. Older binaries that write only the
|
|
@@ -123,7 +124,8 @@ export function createConversationRuntimeRouteStore(storeDir, runtimeDir, locks,
|
|
|
123
124
|
}),
|
|
124
125
|
markPreparationRejected: (input, choice, errorCode) => update(input, () => {
|
|
125
126
|
const previous = read(input);
|
|
126
|
-
if (previous && (previous.route !== choice.route || previous.target_id !== choice.targetId
|
|
127
|
+
if (previous && (previous.route !== choice.route || previous.target_id !== choice.targetId || previous.terminal_mode !== choice.terminalMode
|
|
128
|
+
|| previous.terminal_token !== choice.terminalToken)) {
|
|
127
129
|
throw new ConversationRouteError("conversation_route_conflict", "Preparation rejection must retain the reserved conversation route");
|
|
128
130
|
}
|
|
129
131
|
return previous && (!previous.preparation_tracked || previous.state !== "reserved" || previous.execution_started_at)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-runtime-route-store.js","sourceRoot":"","sources":["../../src/conversation-runtime-route-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,4BAA4B,EAEnD,MAAM,+BAA+B,CAAC;AAErE,0EAA0E;AAC1E,SAAS,aAAa,CAAC,SAAiB;IACtC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QAAC,CAAC;QAC9D,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,OAAO;gBAAE,MAAM,KAAK,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;YAC3E,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,MAAM,KAAK,CAAC;QAC/C,SAAS,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAgC,EAAE,OAAiC;IAC3F,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,IAAI,OAAO,CAAC;IAClD,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation-runtime-route-store.js","sourceRoot":"","sources":["../../src/conversation-runtime-route-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,4 +26,4 @@ export declare const semanticToolDescriptions: {
|
|
|
26
26
|
readonly identify_foreground: string;
|
|
27
27
|
readonly identify_and_send: string;
|
|
28
28
|
};
|
|
29
|
-
export declare const semanticCommandGuidance: readonly ["For a requested new Desktop conversation use agent_knock_knock_desktop_create, optionally with an exact project and first task. Preserve its operation_id and automatic Watch; opening or uncertain operations may only be continued by that same ID. The terminal new_thread tool remains separate and must not be used to replace a Desktop conversation.", "Present conversations[] as CLI or Desktop using surface, with Codex/Claude as agent types. Select its displayed conversation_id and advertised action; AKK chooses the connection. Do not add raw discovery arrays to the list or count them or Watches as independent tasks. Same-project display grouping never proves session identity. Use terminalDebug for complete connection diagnostics. Bound Watch/Turn operations retain their original provider; never retry uncertain input on another route.", string, string, string];
|
|
29
|
+
export declare const semanticCommandGuidance: readonly ["For a requested new Desktop conversation use agent_knock_knock_desktop_create, optionally with an exact project and first task. Preserve its operation_id and automatic Watch; opening or uncertain operations may only be continued by that same ID. The terminal new_thread tool remains separate and must not be used to replace a Desktop conversation.", "Present conversations[] as CLI or Desktop using surface, with Codex/Claude as agent types. Select its displayed conversation_id and advertised action; AKK chooses the connection. New Claude sends prefer an exact managed terminal Turn, falling back to a native Watch only without a controllable exact terminal; Codex sends prefer the verified backend. Do not add raw discovery arrays to the list or count them or Watches as independent tasks. Same-project display grouping never proves session identity. Use terminalDebug for complete connection diagnostics. Bound Watch/Turn operations retain their original provider; never retry uncertain input on another route.", string, string, string];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Model-facing wording is data; execution and authority stay in the tool runtime.
|
|
2
2
|
export const semanticToolDescriptions = {
|
|
3
|
-
akk: "
|
|
3
|
+
akk: "Choose a conversation from AKK List. New Claude Code sends automatically use a managed terminal Turn when one controllable tmux/Herdr counterpart proves the same native session and process; without that terminal, native inbox delivery provides an exact Watch with notify-only waiting hints. Managed approvals follow the returned turn_id. Codex CLI continues to prefer its verified shared backend. Existing task receipts retain their route; never retry uncertain input through another connection. Control loaded Codex CLI threads through their backend: discover, " +
|
|
4
4
|
"send, watch completion, answer questions, approve requests and set permissions " +
|
|
5
5
|
"without tmux or Herdr. Discover Codex Desktop conversations, explicitly create new ones, send tasks and watch their completion; " +
|
|
6
6
|
"Desktop supports typed asynchronous and blocking answers, approvals, current-thread permissions/model settings and exact task cancellation. Send coding work " +
|
|
@@ -8,7 +8,7 @@ export const semanticToolDescriptions = {
|
|
|
8
8
|
"inspect managed Turns, observe a user-selected terminal with durable " +
|
|
9
9
|
"read-only Terminal Watch, manage native threads, and safely inspect or " +
|
|
10
10
|
"change an idle pane's native model selection or Codex permissions.",
|
|
11
|
-
watch: "Claude direct Watch observes one exact native input; idle alone is not success. Send already
|
|
11
|
+
watch: "Claude direct Watch observes one exact native input; idle alone is not success. Claude Send already starts either its managed Turn monitor or native Watch; do not add another Watch. Pass conversation_id from List for a standalone Watch; AKK prefers the exact backend observation route. Retain the returned watch_id; an existing Watch never changes its task or transport and a Claude native Watch cannot approve. For direct Codex CLI, watch its exact " +
|
|
12
12
|
"task with a default 720-minute hard deadline unless overridden. Send already returns its automatic Watch; do not create a duplicate for the same submission. Observe the " +
|
|
13
13
|
"active task; use the returned codex-cli-watch ID for Status and interactions. " +
|
|
14
14
|
"For Desktop, use the exact conversation_id from List to watch one currently " +
|
|
@@ -61,7 +61,7 @@ export const semanticToolDescriptions = {
|
|
|
61
61
|
"native_thread_id from a resumable=true row; AKK refreshes binding and " +
|
|
62
62
|
"candidate evidence privately. This creates or reactivates an AKK Session but " +
|
|
63
63
|
"no Turn.",
|
|
64
|
-
status: "Inspect conversation_id from List
|
|
64
|
+
status: "Inspect conversation_id from List for a read of the current native conversation, resolving an idle terminal alias with a safe native status probe when needed. For a task result or Claude managed approval, use the Send receipt's original turn_id or watch_id; task observations never migrate. Inspect direct Codex CLI conversation_id or codex-cli-watch watch_id through " +
|
|
65
65
|
"its backend. CLI/Desktop progress contains at most 800 Unicode code points of redacted public commentary and short action summaries for that exact task, with read_at, nullable native latest_item_at, and truncated. Distinguish no_public_progress from read_error; neither proves completion. List has no progress body. Inspect " +
|
|
66
66
|
"its backend, including current typed approvals and questions. Inspect one exact managed Turn by turn_id, a terminal or Desktop Watch " +
|
|
67
67
|
"by watch_id, or a conversation_id returned by List. Desktop status reads " +
|
|
@@ -74,7 +74,7 @@ export const semanticToolDescriptions = {
|
|
|
74
74
|
"may independently be managed. Automatic terminal_user_explicit fallback " +
|
|
75
75
|
"Watch status describes the exact request AKK physically sent without " +
|
|
76
76
|
"claiming a managed Turn. AKK never starts a coding agent.",
|
|
77
|
-
send: "Claude
|
|
77
|
+
send: "Pass request and conversation_id from List. For Claude Code, AKK automatically creates a managed terminal Turn through a unique controllable exact tmux/Herdr counterpart; retain turn_id for Status, supported approvals and questions. No extra background flag is needed. Without that terminal, native inbox delivery requires idle and returns a native Watch; its waiting notifications cannot approve or answer. An existing terminal's busy/blocked state, ownership or Store conflict never authorizes native bypass. Codex CLI prefers the verified shared backend. Existing receipts stay on their original route, and uncertain dispatch is never retried through another connection. Targeted identity reads may use safe /status input on an idle terminal; List sends no input. For direct Codex CLI, AKK " +
|
|
78
78
|
"uses a shared default 720-minute monitoring hard deadline unless overridden; terminal inactivity remains separate. Do not create another Watch when the receipt already provides automatic monitoring. AKK " +
|
|
79
79
|
"submits once to the loaded backend thread, inherits its settings and binds " +
|
|
80
80
|
"an exact native-task Watch for completion and interaction callbacks; no " +
|
|
@@ -83,10 +83,12 @@ export const semanticToolDescriptions = {
|
|
|
83
83
|
"requires a reachable idle original owner, inherits thread settings, sends " +
|
|
84
84
|
"once and monitors the exact accepted task. It never automatically opens a " +
|
|
85
85
|
"thread, approves, answers blocking questions or retries an uncertain Desktop send. " +
|
|
86
|
-
"For
|
|
86
|
+
"For other advertised terminal actions, start a new AKK Turn, use one advertised terminal_user_explicit " +
|
|
87
87
|
"user-priority send, or explicitly recover one current uncertain submission " +
|
|
88
88
|
"only through its advertised retry_submission action. Ordinary send requires " +
|
|
89
89
|
"request and may use session_id or terminal_id exactly as advertised. " +
|
|
90
|
+
"The physical fallback rules below apply to retained legacy routes/receipts and other explicitly advertised terminal_user_explicit paths; " +
|
|
91
|
+
"new ordinary Claude sends require managed terminal delivery and cannot degrade to unmanaged work after a Store or ownership failure. " +
|
|
90
92
|
"terminal_user_explicit requires one exact live physical terminal/process, a " +
|
|
91
93
|
"scanned non-blocked approval state, and no input-owning native " +
|
|
92
94
|
"questionnaire/editor, menu, or read-only viewer; parsed working activity, " +
|
|
@@ -122,7 +124,7 @@ export const semanticToolDescriptions = {
|
|
|
122
124
|
"This continues that turn and does not create a new turn; for later ordinary " +
|
|
123
125
|
"work refresh agent_knock_knock_list and use that terminal row's currently " +
|
|
124
126
|
"advertised send action.",
|
|
125
|
-
respond_interaction: "For Desktop use its conversation_id or desktop-watch watch_id after Status shows " +
|
|
127
|
+
respond_interaction: "Claude managed Sends retain their turn_id: refresh that exact Turn's Status and answer only a currently supported advertised questionnaire. A Claude native Watch has notify-only hints and cannot use this response path. Unverified questionnaire versions remain manual. For Desktop use its conversation_id or desktop-watch watch_id after Status shows " +
|
|
126
128
|
"the current async_question or blocking_question. Answer every question in that request using " +
|
|
127
129
|
"advertised single_select/free_text ids. For async questions only steer_current_turn is supported; omit delivery_mode for blocking questions. " +
|
|
128
130
|
"AKK rechecks the original owner, exact active task and unchanged request. Use approve for approvals. A displayed expiry " +
|
|
@@ -146,7 +148,7 @@ export const semanticToolDescriptions = {
|
|
|
146
148
|
"again instead of rejecting an otherwise live prompt. Raw keys, menu indexes, " +
|
|
147
149
|
"rendered labels, fingerprints, versions, and terminal commands are never " +
|
|
148
150
|
"accepted. An uncertain response must never be retried blindly.",
|
|
149
|
-
approve: "
|
|
151
|
+
approve: "For Claude Code, use the managed Send's original turn_id after fresh Status advertises a supported approval; native Claude Watches and raw Claude terminal selectors cannot approve. For Desktop or Codex CLI, use the listed conversation_id or its exact desktop-watch/codex-cli-watch watch_id " +
|
|
150
152
|
"plus the pending interaction_id from Status, and the authorized approve_once " +
|
|
151
153
|
"or reject decision. Dispatch one closed semantic decision for the current exact permission " +
|
|
152
154
|
"request only after the user reviews and explicitly chooses it. decision " +
|
|
@@ -255,7 +257,7 @@ export const semanticToolDescriptions = {
|
|
|
255
257
|
};
|
|
256
258
|
export const semanticCommandGuidance = [
|
|
257
259
|
"For a requested new Desktop conversation use agent_knock_knock_desktop_create, optionally with an exact project and first task. Preserve its operation_id and automatic Watch; opening or uncertain operations may only be continued by that same ID. The terminal new_thread tool remains separate and must not be used to replace a Desktop conversation.",
|
|
258
|
-
"Present conversations[] as CLI or Desktop using surface, with Codex/Claude as agent types. Select its displayed conversation_id and advertised action; AKK chooses the connection. Do not add raw discovery arrays to the list or count them or Watches as independent tasks. Same-project display grouping never proves session identity. Use terminalDebug for complete connection diagnostics. Bound Watch/Turn operations retain their original provider; never retry uncertain input on another route.",
|
|
260
|
+
"Present conversations[] as CLI or Desktop using surface, with Codex/Claude as agent types. Select its displayed conversation_id and advertised action; AKK chooses the connection. New Claude sends prefer an exact managed terminal Turn, falling back to a native Watch only without a controllable exact terminal; Codex sends prefer the verified backend. Do not add raw discovery arrays to the list or count them or Watches as independent tasks. Same-project display grouping never proves session identity. Use terminalDebug for complete connection diagnostics. Bound Watch/Turn operations retain their original provider; never retry uncertain input on another route.",
|
|
259
261
|
"Use /akk permissions on an advertised idle Codex terminal before /akk " +
|
|
260
262
|
"set-permissions. Read the current permission mode and returned built-in " +
|
|
261
263
|
"choices, then apply the requested or authorized mode. Full Access is an " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-tool-descriptions.js","sourceRoot":"","sources":["../../src/semantic-tool-descriptions.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"semantic-tool-descriptions.js","sourceRoot":"","sources":["../../src/semantic-tool-descriptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,18 +43,33 @@ export function compactAkkListModelProjection(value, params = {}) {
|
|
|
43
43
|
} : {}),
|
|
44
44
|
...(Array.isArray(result.claude_cli_sessions) || recordValue(result.claude_cli_scan) ? {
|
|
45
45
|
...(!Array.isArray(result.conversations) ? { claude_cli_sessions: arrayValue(result.claude_cli_sessions).map(compactNativeConversation) } : {}),
|
|
46
|
-
claude_cli_scan:
|
|
46
|
+
claude_cli_scan: compactClaudeListScan(recordValue(result.claude_cli_scan) ?? {})
|
|
47
47
|
} : {}),
|
|
48
48
|
...(Array.isArray(result.conversations)
|
|
49
49
|
? { conversations: arrayValue(result.conversations).map(row => compactConversation(row, routingDiagnostics)),
|
|
50
50
|
conversation_presentation: compactConversationPresentation(result.conversation_presentation),
|
|
51
|
-
...(routingDiagnostics ? { conversation_routing: compactAkkListScalars(recordValue(result.conversation_routing) ?? {}, ["policy", "exact_associations", "unresolved_terminals"]) } : {}) }
|
|
51
|
+
...(routingDiagnostics ? { conversation_routing: compactAkkListScalars(recordValue(result.conversation_routing) ?? {}, ["policy", "codex", "claude", "exact_associations", "unresolved_terminals"]) } : {}) }
|
|
52
52
|
: { terminals: arrayValue(result.terminals).map(compactAkkListTerminal) }),
|
|
53
53
|
...(recovery ? { recovery } : {}),
|
|
54
54
|
...(Object.keys(diagnostics).length > 0 ? { diagnostics } : {})
|
|
55
55
|
};
|
|
56
56
|
return paginateHostList(projected, params);
|
|
57
57
|
}
|
|
58
|
+
function compactClaudeListScan(scan) {
|
|
59
|
+
const output = compactAkkListScalars(scan, ["status", "returned", "loaded_count", "complete", "watch_error", "error_count"]);
|
|
60
|
+
const codes = [...new Set(stringArrayValue(scan.error_codes).filter(code => /^[a-z][a-z0-9_]{0,79}$/u.test(code)))].slice(0, 8);
|
|
61
|
+
if (codes.length)
|
|
62
|
+
output.error_codes = codes;
|
|
63
|
+
const reader = recordValue(scan.reader);
|
|
64
|
+
if (reader && ["option", "environment", "default"].includes(String(reader.source)) &&
|
|
65
|
+
typeof reader.executable === "string" && !/[\\/\u0000-\u001f\u007f]/u.test(reader.executable)) {
|
|
66
|
+
output.reader = { executable: truncateText(reader.executable, 128), source: reader.source,
|
|
67
|
+
path_omitted: reader.path_omitted === true };
|
|
68
|
+
}
|
|
69
|
+
if (scan.next_action === "check_claude_reader_in_host_environment")
|
|
70
|
+
output.next_action = scan.next_action;
|
|
71
|
+
return output;
|
|
72
|
+
}
|
|
58
73
|
function compactConversationPresentation(value) {
|
|
59
74
|
const row = recordValue(value) ?? { mode: "default" };
|
|
60
75
|
return { ...compactAkkListScalars(row, ["mode", "workspace_grouped_connections",
|
|
@@ -79,10 +94,12 @@ function compactNativeConversation(row) {
|
|
|
79
94
|
...compactAkkListScalars(row, ["id", "conversation_id", "title", "cwd", "source", "agent",
|
|
80
95
|
"native_thread_id", "native_turn_id", "native_input_id", "pid", "agent_version", "waiting_for", "manual_required", "activity_state", "connection_state", "backend_version",
|
|
81
96
|
"pending_interaction_count", "interaction_requests_scanned", "history_state", "unstarted_thread", "classification", "frontend_presence",
|
|
82
|
-
"attention_required", "updated_at", "observation_error"]),
|
|
97
|
+
"attention_required", "updated_at", "observation_error", "send_blocked_reason"]),
|
|
83
98
|
...(Array.isArray(row.active_flags) ? { active_flags: row.active_flags } : {}),
|
|
84
99
|
capabilities: compactAkkListScalars(recordValue(row.capabilities) ?? {}, [
|
|
85
|
-
"status", "send", "watch", "interaction_notify", "interaction_respond", "approve", "set_permissions"
|
|
100
|
+
"status", "send", "watch", "interaction_notify", "interaction_respond", "approve", "set_permissions",
|
|
101
|
+
"permission_options", "model_options", "set_model", "cancel", "new_thread", "clear_thread",
|
|
102
|
+
"resume_thread", "list_resumable_threads", "native_inspect"
|
|
86
103
|
]),
|
|
87
104
|
...(Array.isArray(row.terminal_controls)
|
|
88
105
|
? { terminal_controls: arrayValue(row.terminal_controls).map(compactAkkListTerminal) } : {}),
|
|
@@ -125,7 +142,8 @@ function projectCliConnection(output, row) {
|
|
|
125
142
|
output.scoped_controls = scoped;
|
|
126
143
|
const actions = recordValue(output.available_actions) ?? {};
|
|
127
144
|
const capabilities = { ...recordValue(output.capabilities) };
|
|
128
|
-
for (const name of ["status", "send", "watch", "approve", "set_permissions", "permission_options", "model_options", "set_model", "cancel"
|
|
145
|
+
for (const name of ["status", "send", "watch", "approve", "set_permissions", "permission_options", "model_options", "set_model", "cancel",
|
|
146
|
+
"new_thread", "clear_thread", "resume_thread", "list_resumable_threads", "native_inspect"]) {
|
|
129
147
|
if (actions[name] === true)
|
|
130
148
|
capabilities[name] = true;
|
|
131
149
|
}
|
|
@@ -196,6 +214,7 @@ function compactAkkListTerminal(terminal) {
|
|
|
196
214
|
"native_identity_state",
|
|
197
215
|
"native_agent_session_id",
|
|
198
216
|
"management_state",
|
|
217
|
+
"send_blocked_reason",
|
|
199
218
|
"handoff_state",
|
|
200
219
|
"confidence"
|
|
201
220
|
]);
|