@scotthuang/agent-knock-knock 0.9.0 → 0.10.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +18 -8
  3. package/dist/src/agent-session-provider.d.ts +1 -1
  4. package/dist/src/claude-local-transcript-provider.d.ts +29 -1
  5. package/dist/src/claude-local-transcript-provider.js +313 -0
  6. package/dist/src/claude-local-transcript-provider.js.map +1 -1
  7. package/dist/src/claude-terminal-agent-adapter.d.ts +6 -1
  8. package/dist/src/claude-terminal-agent-adapter.js +178 -0
  9. package/dist/src/claude-terminal-agent-adapter.js.map +1 -1
  10. package/dist/src/cli.js +4745 -355
  11. package/dist/src/cli.js.map +1 -1
  12. package/dist/src/codex-local-session-provider.d.ts +2 -2
  13. package/dist/src/codex-local-session-provider.js +2 -2
  14. package/dist/src/codex-local-session-provider.js.map +1 -1
  15. package/dist/src/codex-store-adapter.d.ts +11 -3
  16. package/dist/src/codex-store-adapter.js +371 -4
  17. package/dist/src/codex-store-adapter.js.map +1 -1
  18. package/dist/src/codex-terminal-agent-adapter.d.ts +6 -1
  19. package/dist/src/codex-terminal-agent-adapter.js +192 -0
  20. package/dist/src/codex-terminal-agent-adapter.js.map +1 -1
  21. package/dist/src/managed-session.d.ts +163 -0
  22. package/dist/src/managed-session.js +873 -0
  23. package/dist/src/managed-session.js.map +1 -0
  24. package/dist/src/native-thread-lifecycle-policy.d.ts +57 -0
  25. package/dist/src/native-thread-lifecycle-policy.js +116 -0
  26. package/dist/src/native-thread-lifecycle-policy.js.map +1 -0
  27. package/dist/src/openclaw-plugin-helpers.d.ts +31 -6
  28. package/dist/src/openclaw-plugin-helpers.js +226 -9
  29. package/dist/src/openclaw-plugin-helpers.js.map +1 -1
  30. package/dist/src/openclaw-plugin.js +238 -23
  31. package/dist/src/openclaw-plugin.js.map +1 -1
  32. package/dist/src/protocol.d.ts +6 -0
  33. package/dist/src/protocol.js.map +1 -1
  34. package/dist/src/session-store.d.ts +57 -0
  35. package/dist/src/session-store.js +529 -0
  36. package/dist/src/session-store.js.map +1 -0
  37. package/dist/src/store.d.ts +2 -1
  38. package/dist/src/store.js +233 -21
  39. package/dist/src/store.js.map +1 -1
  40. package/dist/src/terminal-agent-adapter.d.ts +153 -0
  41. package/dist/src/terminal-agent-adapter.js +12 -0
  42. package/dist/src/terminal-agent-adapter.js.map +1 -1
  43. package/dist/src/terminal-agent-bridge.d.ts +8 -0
  44. package/dist/src/terminal-agent-bridge.js +15 -0
  45. package/dist/src/terminal-agent-bridge.js.map +1 -1
  46. package/dist/src/terminal-control-provider.d.ts +2 -0
  47. package/dist/src/terminal-control-provider.js +1 -0
  48. package/dist/src/terminal-control-provider.js.map +1 -1
  49. package/docs/quickstart-tmux.md +12 -1
  50. package/openclaw.plugin.json +14 -2
  51. package/package.json +1 -1
  52. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +23 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-session.js","sourceRoot":"","sources":["../../src/managed-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { type ManagedSessionStatus } from "./managed-session.js";
2
+ export interface CodexLifecycleIdentityEvidence {
3
+ sessionId: string;
4
+ processUuid?: string;
5
+ processBirth?: string;
6
+ rollout?: {
7
+ fd: string;
8
+ device: string;
9
+ inode: string;
10
+ path: string;
11
+ };
12
+ }
13
+ export declare function hasStrongCodexLifecycleIdentity(identity: CodexLifecycleIdentityEvidence): boolean;
14
+ export declare function codexIdentityVerifiesLifecyclePostcondition(input: {
15
+ operation: "new_thread" | "resume_thread";
16
+ parsedNativeThreadId: string;
17
+ observationSucceeded: boolean;
18
+ observedIdentity?: CodexLifecycleIdentityEvidence;
19
+ beforeIdentity?: CodexLifecycleIdentityEvidence;
20
+ }): boolean;
21
+ export type CodexLifecyclePostconditionEvidence = "invalid" | "no_rollout" | "matching_after" | "lingering_before";
22
+ export declare function classifyCodexLifecyclePostcondition(input: {
23
+ operation: "new_thread" | "resume_thread";
24
+ parsedNativeThreadId: string;
25
+ observationSucceeded: boolean;
26
+ observedIdentity?: CodexLifecycleIdentityEvidence;
27
+ beforeIdentity?: CodexLifecycleIdentityEvidence;
28
+ }): CodexLifecyclePostconditionEvidence;
29
+ export declare function isFreshCodexPostProbeScreen(input: {
30
+ probeSent: boolean;
31
+ screenDigest?: string;
32
+ postProbeBaselineDigest?: string;
33
+ }): boolean;
34
+ export interface ResumeCandidateAvailabilityInput {
35
+ hasCandidateToken: boolean;
36
+ current: boolean;
37
+ activeElsewhere: boolean;
38
+ activeOwnershipUnverifiable: boolean;
39
+ managedSessionCount: number;
40
+ managedSessionStatus?: ManagedSessionStatus;
41
+ managedSessionBindingInactive?: boolean;
42
+ managedSessionWorkspaceMatches?: boolean;
43
+ archived: boolean;
44
+ }
45
+ export interface ResumeCandidateAvailability {
46
+ resumable: boolean;
47
+ unavailableReason?: string;
48
+ }
49
+ /**
50
+ * Resume is permitted only for a free historical native thread. A first-class
51
+ * Session is reusable after it was explicitly detached. A still-bound record
52
+ * is also selectable when its recorded process is conclusively no longer
53
+ * alive; the resume mutation must CAS-detach that stale binding before it
54
+ * prepares terminal input. Every unverifiable/live status remains
55
+ * authoritative and blocks implicit rebinding.
56
+ */
57
+ export declare function evaluateResumeCandidateAvailability(input: ResumeCandidateAvailabilityInput): ResumeCandidateAvailability;
@@ -0,0 +1,116 @@
1
+ import { isExactNativeThreadId } from "./managed-session.js";
2
+ export function hasStrongCodexLifecycleIdentity(identity) {
3
+ return Boolean(isExactNativeThreadId(identity.sessionId) &&
4
+ identity.processUuid &&
5
+ identity.processBirth &&
6
+ identity.rollout?.fd &&
7
+ identity.rollout.device &&
8
+ identity.rollout.inode &&
9
+ identity.rollout.path);
10
+ }
11
+ export function codexIdentityVerifiesLifecyclePostcondition(input) {
12
+ return classifyCodexLifecyclePostcondition(input) !== "invalid";
13
+ }
14
+ export function classifyCodexLifecyclePostcondition(input) {
15
+ if (!input.observationSucceeded ||
16
+ !isExactNativeThreadId(input.parsedNativeThreadId)) {
17
+ return "invalid";
18
+ }
19
+ if (input.observedIdentity === undefined) {
20
+ // A clean no-rollout observation is valid only immediately after /clear;
21
+ // exact resume must open and bind the requested historical rollout.
22
+ return input.operation === "new_thread" ? "no_rollout" : "invalid";
23
+ }
24
+ if (input.observedIdentity.sessionId.toLowerCase() ===
25
+ input.parsedNativeThreadId.toLowerCase() &&
26
+ hasStrongCodexLifecycleIdentity(input.observedIdentity)) {
27
+ return "matching_after";
28
+ }
29
+ if (input.operation === "new_thread" &&
30
+ input.beforeIdentity &&
31
+ input.parsedNativeThreadId.toLowerCase() !==
32
+ input.beforeIdentity.sessionId.toLowerCase() &&
33
+ sameStrongCodexLifecycleIdentity(input.observedIdentity, input.beforeIdentity)) {
34
+ // Codex 0.146.x can keep the before-thread rollout FD open after /clear
35
+ // even though a fresh /status card already proves a distinct current UUID.
36
+ // The stale descriptor is useful process-incarnation evidence only; callers
37
+ // must never attach its rollout tuple to the new UUID.
38
+ return "lingering_before";
39
+ }
40
+ return "invalid";
41
+ }
42
+ function sameStrongCodexLifecycleIdentity(left, right) {
43
+ return hasStrongCodexLifecycleIdentity(left) &&
44
+ hasStrongCodexLifecycleIdentity(right) &&
45
+ left.sessionId.toLowerCase() === right.sessionId.toLowerCase() &&
46
+ left.processUuid === right.processUuid &&
47
+ left.processBirth === right.processBirth &&
48
+ left.rollout?.fd === right.rollout?.fd &&
49
+ left.rollout?.device === right.rollout?.device &&
50
+ left.rollout?.inode === right.rollout?.inode &&
51
+ left.rollout?.path === right.rollout?.path;
52
+ }
53
+ export function isFreshCodexPostProbeScreen(input) {
54
+ return Boolean(input.probeSent &&
55
+ input.screenDigest &&
56
+ input.postProbeBaselineDigest &&
57
+ input.screenDigest !== input.postProbeBaselineDigest);
58
+ }
59
+ /**
60
+ * Resume is permitted only for a free historical native thread. A first-class
61
+ * Session is reusable after it was explicitly detached. A still-bound record
62
+ * is also selectable when its recorded process is conclusively no longer
63
+ * alive; the resume mutation must CAS-detach that stale binding before it
64
+ * prepares terminal input. Every unverifiable/live status remains
65
+ * authoritative and blocks implicit rebinding.
66
+ */
67
+ export function evaluateResumeCandidateAvailability(input) {
68
+ if (input.current) {
69
+ return { resumable: false, unavailableReason: "already_active" };
70
+ }
71
+ if (input.activeElsewhere) {
72
+ return {
73
+ resumable: false,
74
+ unavailableReason: "active_in_another_process"
75
+ };
76
+ }
77
+ if (input.activeOwnershipUnverifiable) {
78
+ return {
79
+ resumable: false,
80
+ unavailableReason: "active_thread_ownership_unverifiable"
81
+ };
82
+ }
83
+ if (input.managedSessionCount > 1) {
84
+ return {
85
+ resumable: false,
86
+ unavailableReason: "multiple_managed_sessions_reference_this_native_thread"
87
+ };
88
+ }
89
+ if (input.managedSessionCount === 1 &&
90
+ input.managedSessionStatus !== "detached" &&
91
+ !(input.managedSessionStatus === "bound" &&
92
+ input.managedSessionBindingInactive === true)) {
93
+ return {
94
+ resumable: false,
95
+ unavailableReason: `managed_session_${input.managedSessionStatus ?? "status_unavailable"}`
96
+ };
97
+ }
98
+ if (input.managedSessionCount === 1 &&
99
+ input.managedSessionWorkspaceMatches !== true) {
100
+ return {
101
+ resumable: false,
102
+ unavailableReason: "managed_session_workspace_mismatch"
103
+ };
104
+ }
105
+ if (input.archived) {
106
+ return { resumable: false, unavailableReason: "archived" };
107
+ }
108
+ if (!input.hasCandidateToken) {
109
+ return {
110
+ resumable: false,
111
+ unavailableReason: "candidate_token_unavailable"
112
+ };
113
+ }
114
+ return { resumable: true };
115
+ }
116
+ //# sourceMappingURL=native-thread-lifecycle-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-thread-lifecycle-policy.js","sourceRoot":"","sources":["../../src/native-thread-lifecycle-policy.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,34 @@
1
1
  export declare const AKK_CALLBACK_METHOD = "agent-knock-knock.callback";
2
+ type AkkCloseCommand = {
3
+ action: "close";
4
+ turnId: string;
5
+ reason: string;
6
+ } & ({
7
+ expectedMessageId?: undefined;
8
+ expectedTransitionId?: undefined;
9
+ } | {
10
+ expectedMessageId: string;
11
+ expectedTransitionId?: never;
12
+ } | {
13
+ expectedMessageId?: never;
14
+ expectedTransitionId: string;
15
+ });
2
16
  export type AkkCommand = {
3
17
  action: "help";
4
18
  } | {
5
19
  action: "doctor";
6
20
  } | {
7
21
  action: "list";
22
+ } | {
23
+ action: "list-resumable-threads";
24
+ terminalId: string;
25
+ } | {
26
+ action: "new-thread";
27
+ terminalId: string;
28
+ } | {
29
+ action: "resume-thread";
30
+ terminalId: string;
31
+ nativeThreadId?: string;
8
32
  } | {
9
33
  action: "status";
10
34
  turnId?: string;
@@ -30,12 +54,7 @@ export type AkkCommand = {
30
54
  } | {
31
55
  action: "retry-callback";
32
56
  turnId: string;
33
- } | {
34
- action: "close";
35
- turnId: string;
36
- reason: string;
37
- expectedMessageId?: string;
38
- } | {
57
+ } | AkkCloseCommand | {
39
58
  action: "delegate";
40
59
  request: string;
41
60
  };
@@ -46,7 +65,13 @@ export declare function formatAkkRespondCommandResult(result: Record<string, unk
46
65
  text: string;
47
66
  isError: boolean;
48
67
  };
68
+ export declare function formatAkkThreadsCommandResult(result: Record<string, unknown>): string;
69
+ export declare function formatAkkThreadTransitionCommandResult(result: Record<string, unknown>): string;
70
+ export declare function isAkkThreadTransitionSuccess(result: unknown): boolean;
49
71
  export declare function buildAkkCommandCliArgs(command: AkkCommand, config: Record<string, unknown>, context?: {
50
72
  sessionKey?: unknown;
73
+ expectedBindingToken?: unknown;
74
+ candidateToken?: unknown;
51
75
  }): string[] | undefined;
52
76
  export declare function resolvePluginStoreDir(config: Record<string, unknown>, gatewayCwd?: string): string | undefined;
77
+ export {};
@@ -24,6 +24,43 @@ export function parseAkkCommand(args) {
24
24
  }
25
25
  return { action: "doctor" };
26
26
  }
27
+ if (action === "threads" || action === "list-resumable-threads") {
28
+ const usage = "Usage: /akk threads <exact-terminal-id>";
29
+ const { token: terminalId, rest: extra } = takeRequiredToken(rest, usage);
30
+ assertExactTerminalId(terminalId, usage);
31
+ if (extra.trim()) {
32
+ throw new Error(usage);
33
+ }
34
+ return { action: "list-resumable-threads", terminalId };
35
+ }
36
+ if (action === "new-thread" || action === "clear-thread") {
37
+ const usage = `Usage: /akk ${action} <exact-terminal-id>`;
38
+ const { token: terminalId, rest: extra } = takeRequiredToken(rest, usage);
39
+ assertExactTerminalId(terminalId, usage);
40
+ if (extra.trim()) {
41
+ throw new Error(usage);
42
+ }
43
+ return { action: "new-thread", terminalId };
44
+ }
45
+ if (action === "resume-thread") {
46
+ const usage = "Usage: /akk resume-thread <exact-terminal-id> [native-thread-uuid]";
47
+ const { token: terminalId, rest: nativeInput } = takeRequiredToken(rest, usage);
48
+ assertExactTerminalId(terminalId, usage);
49
+ const { token: nativeThreadId, rest: extra } = takeToken(nativeInput);
50
+ if (extra.trim()) {
51
+ throw new Error(usage);
52
+ }
53
+ if (nativeThreadId && !isExactNativeThreadId(nativeThreadId)) {
54
+ throw new Error(`${usage}; native-thread-uuid must be the complete UUID returned by /akk threads`);
55
+ }
56
+ return {
57
+ action: "resume-thread",
58
+ terminalId,
59
+ ...(nativeThreadId
60
+ ? { nativeThreadId: nativeThreadId.toLowerCase() }
61
+ : {})
62
+ };
63
+ }
27
64
  if (action === "status" || action === "show") {
28
65
  const { token: turnId, rest: extra } = takeToken(rest);
29
66
  if (extra.trim()) {
@@ -77,17 +114,36 @@ export function parseAkkCommand(args) {
77
114
  return { action: "retry-callback", turnId };
78
115
  }
79
116
  if (action === "close" || action === "done") {
80
- const { token: turnId, rest: reason } = takeRequiredToken(rest, "Usage: /akk close <turn-selector> [--expected-message-id <id>] [reason]");
81
- const recovery = /^--expected-message-id\s+(\S+)(?:\s+([\s\S]*))?$/u.exec(reason.trim());
117
+ const usage = "Usage: /akk close <turn-selector> " +
118
+ "[(--expected-message-id <id> | --expected-transition-id <id>)] [reason]";
119
+ const { token: turnId, rest: reasonInput } = takeRequiredToken(rest, usage);
120
+ const recoveryInput = reasonInput.trim();
121
+ const recoveryFlags = recoveryInput.match(/(?:^|\s)--expected-(?:message|transition)-id(?=\s|$)/gu) ?? [];
122
+ if (recoveryFlags.length > 1) {
123
+ throw new Error(`${usage}; expected-message-id and expected-transition-id are mutually exclusive`);
124
+ }
125
+ const recovery = /^--expected-(message|transition)-id\s+(\S+)(?:\s+([\s\S]*))?$/u.exec(recoveryInput);
126
+ if (recoveryFlags.length === 1 && !recovery) {
127
+ throw new Error(usage);
128
+ }
129
+ const recoveryKind = recovery?.[1];
130
+ const recoveryId = recovery?.[2];
131
+ const recoveryReason = recovery?.[3]?.trim();
132
+ const defaultRecoveryReason = recoveryKind === "transition"
133
+ ? "Native-thread lifecycle transition recovered from /akk command"
134
+ : "Orphaned terminal dispatch resolved from /akk command";
82
135
  return {
83
136
  action: "close",
84
137
  turnId,
85
- reason: recovery?.[2]?.trim() ||
138
+ reason: recoveryReason ||
86
139
  (recovery
87
- ? "Orphaned terminal dispatch resolved from /akk command"
88
- : reason.trim() || "Closed from /akk command"),
89
- ...(recovery?.[1]
90
- ? { expectedMessageId: recovery[1] }
140
+ ? defaultRecoveryReason
141
+ : recoveryInput || "Closed from /akk command"),
142
+ ...(recoveryKind === "message" && recoveryId
143
+ ? { expectedMessageId: recoveryId }
144
+ : {}),
145
+ ...(recoveryKind === "transition" && recoveryId
146
+ ? { expectedTransitionId: recoveryId }
91
147
  : {})
92
148
  };
93
149
  }
@@ -101,6 +157,10 @@ export function akkUsageText() {
101
157
  "/akk claude: <request>",
102
158
  "/akk <session-selector>: <message>",
103
159
  "/akk list",
160
+ "/akk threads <exact-terminal-id>",
161
+ "/akk new-thread <exact-terminal-id>",
162
+ "/akk clear-thread <exact-terminal-id>",
163
+ "/akk resume-thread <exact-terminal-id> [native-thread-uuid]",
104
164
  "/akk doctor",
105
165
  "/akk status [turn-selector]",
106
166
  "/akk respond <turn-selector>: <answer>",
@@ -124,8 +184,18 @@ export function formatAkkListCommandResult(result) {
124
184
  const sessionShortRef = nonEmptyString(managed.session_short_ref);
125
185
  const hiddenTurnCount = finiteNumber(managed.hidden_turn_count) ?? 0;
126
186
  const recovery = orphanedTerminalDispatchRecovery(terminal);
187
+ const terminalId = nonEmptyString(terminal.id);
188
+ const availableActions = recordValue(terminal.available_actions) ?? {};
189
+ const hasLifecycleAction = [
190
+ "list_resumable_threads",
191
+ "new_thread",
192
+ "resume_thread"
193
+ ].some((name) => Object.hasOwn(availableActions, name));
127
194
  return [
128
195
  `- ${formatTerminalLine(terminal)}`,
196
+ ...(hasLifecycleAction && terminalId
197
+ ? [` lifecycle terminal_id: ${terminalId}`]
198
+ : []),
129
199
  ...(sessionId || sessionShortRef
130
200
  ? [` AKK session: ${sessionShortRef ?? sessionId}`]
131
201
  : []),
@@ -230,6 +300,95 @@ export function formatAkkRespondCommandResult(result) {
230
300
  isError: true
231
301
  };
232
302
  }
303
+ export function formatAkkThreadsCommandResult(result) {
304
+ const terminalId = nonEmptyString(result.terminal_id) ?? "unknown";
305
+ const currentSessionId = nonEmptyString(result.current_session_id);
306
+ const currentNativeThreadId = nonEmptyString(result.current_native_thread_id);
307
+ const threads = arrayValue(result.threads);
308
+ const resumableCount = threads.filter((thread) => thread.resumable === true).length;
309
+ const threadLines = threads.slice(0, 30).flatMap((thread) => {
310
+ const nativeThreadId = nonEmptyString(thread.native_thread_id) ?? "unknown";
311
+ const status = thread.resumable === true
312
+ ? "resumable"
313
+ : nonEmptyString(thread.unavailable_reason) ?? "unavailable";
314
+ const context = [
315
+ nonEmptyString(thread.title),
316
+ nonEmptyString(thread.preview)
317
+ ].filter((value) => Boolean(value)).join(" · ");
318
+ return [
319
+ `- ${nativeThreadId} | ${status}`,
320
+ ...(nonEmptyString(thread.updated_at)
321
+ ? [` updated: ${nonEmptyString(thread.updated_at)}`]
322
+ : []),
323
+ ...(context ? [` context: ${truncateText(context, 180)}`] : [])
324
+ ];
325
+ });
326
+ return [
327
+ `AKK native threads (${threads.length} found, ${resumableCount} resumable):`,
328
+ `terminal: ${terminalId}`,
329
+ `current session: ${currentSessionId ?? "none"}`,
330
+ `current native thread: ${currentNativeThreadId ?? "none"}`,
331
+ ...(threadLines.length > 0
332
+ ? ["threads:", ...threadLines]
333
+ : ["threads: none"]),
334
+ ...(resumableCount > 0
335
+ ? [
336
+ `next: /akk resume-thread ${terminalId} <native-thread-uuid>`
337
+ ]
338
+ : []),
339
+ "Listing or switching native threads does not create an AKK Turn."
340
+ ].join("\n");
341
+ }
342
+ export function formatAkkThreadTransitionCommandResult(result) {
343
+ if (!isAkkThreadTransitionSuccess(result)) {
344
+ const status = nonEmptyString(result.status) ?? "unknown";
345
+ const heading = status === "verified_recovery_required"
346
+ ? "AKK verified the native thread transition, but its Session commit requires recovery."
347
+ : "AKK could not verify the native thread transition outcome.";
348
+ return [
349
+ heading,
350
+ `status: ${status}`,
351
+ `terminal: ${nonEmptyString(result.terminal_id) ?? "unknown"}`,
352
+ ...(nonEmptyString(result.transition_id)
353
+ ? [`transition: ${nonEmptyString(result.transition_id)}`]
354
+ : []),
355
+ ...(nonEmptyString(result.reason)
356
+ ? [`reason: ${nonEmptyString(result.reason)}`]
357
+ : []),
358
+ "No AKK Turn was created.",
359
+ "Next: do not retry automatically; refresh /akk list and use only its exact lifecycle recovery action."
360
+ ].join("\n");
361
+ }
362
+ const alreadyActive = result.status === "already_active";
363
+ const operation = nonEmptyString(result.operation) ?? "resume_thread";
364
+ const heading = alreadyActive
365
+ ? "AKK native thread was already active; no switch was needed."
366
+ : operation === "new_thread"
367
+ ? "AKK started and verified a new native thread."
368
+ : "AKK resumed and verified the selected native thread.";
369
+ return [
370
+ heading,
371
+ `terminal: ${nonEmptyString(result.terminal_id) ?? "unknown"}`,
372
+ ...(nonEmptyString(result.previous_session_id)
373
+ ? [`previous session: ${nonEmptyString(result.previous_session_id)}`]
374
+ : []),
375
+ `session: ${nonEmptyString(result.session_id) ?? "none"}`,
376
+ ...(nonEmptyString(result.previous_native_thread_id)
377
+ ? [
378
+ `previous native thread: ${nonEmptyString(result.previous_native_thread_id)}`
379
+ ]
380
+ : []),
381
+ `native thread: ${nonEmptyString(result.native_thread_id) ?? "unknown"}`,
382
+ ...(finiteNumber(result.binding_generation) !== undefined
383
+ ? [`binding generation: ${finiteNumber(result.binding_generation)}`]
384
+ : []),
385
+ "No AKK Turn was created. The next ordinary send creates the first Turn in this native context."
386
+ ].join("\n");
387
+ }
388
+ export function isAkkThreadTransitionSuccess(result) {
389
+ const record = recordValue(result);
390
+ return record?.status === "committed" || record?.status === "already_active";
391
+ }
233
392
  export function buildAkkCommandCliArgs(command, config, context = {}) {
234
393
  switch (command.action) {
235
394
  case "help":
@@ -243,6 +402,39 @@ export function buildAkkCommandCliArgs(command, config, context = {}) {
243
402
  switch (command.action) {
244
403
  case "list":
245
404
  return withOptionalArgs(["list", "--reconcile"], ["--store-dir", storeDir], ["--idle-timeout-minutes", idleTimeoutMinutes]);
405
+ case "list-resumable-threads":
406
+ return withOptionalArgs([
407
+ "list-resumable-threads",
408
+ "--terminal",
409
+ command.terminalId
410
+ ], ["--store-dir", storeDir]);
411
+ case "new-thread":
412
+ return withOptionalArgs([
413
+ "new-thread",
414
+ "--terminal",
415
+ command.terminalId,
416
+ "--expected-binding-token",
417
+ requiredExpectedBindingToken(context.expectedBindingToken)
418
+ ], ["--store-dir", storeDir]);
419
+ case "resume-thread":
420
+ if (!command.nativeThreadId) {
421
+ return withOptionalArgs([
422
+ "list-resumable-threads",
423
+ "--terminal",
424
+ command.terminalId
425
+ ], ["--store-dir", storeDir]);
426
+ }
427
+ return withOptionalArgs([
428
+ "resume-thread",
429
+ "--terminal",
430
+ command.terminalId,
431
+ "--native-thread",
432
+ command.nativeThreadId,
433
+ "--expected-binding-token",
434
+ requiredExpectedBindingToken(context.expectedBindingToken),
435
+ "--candidate-token",
436
+ requiredCandidateToken(context.candidateToken)
437
+ ], ["--store-dir", storeDir]);
246
438
  case "status":
247
439
  return withOptionalArgs([
248
440
  "status",
@@ -296,7 +488,7 @@ export function buildAkkCommandCliArgs(command, config, context = {}) {
296
488
  command.turnId,
297
489
  "--reason",
298
490
  command.reason
299
- ], ["--expected-message-id", command.expectedMessageId], ["--store-dir", storeDir]);
491
+ ], ["--expected-message-id", command.expectedMessageId], ["--expected-transition-id", command.expectedTransitionId], ["--store-dir", storeDir]);
300
492
  }
301
493
  }
302
494
  function parseSelectorMessage(input) {
@@ -322,6 +514,28 @@ function parseTurnResponse(input) {
322
514
  }
323
515
  return { selector, message };
324
516
  }
517
+ function assertExactTerminalId(value, usage) {
518
+ if (!/^terminal:v\d+:[^\s]+$/u.test(value)) {
519
+ throw new Error(`${usage}; use the exact terminal_id returned by /akk list`);
520
+ }
521
+ }
522
+ function isExactNativeThreadId(value) {
523
+ return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu.test(value);
524
+ }
525
+ function requiredExpectedBindingToken(value) {
526
+ const token = nonEmptyString(value);
527
+ if (!token) {
528
+ throw new Error("expected binding token is required; refresh the lifecycle snapshot before switching native threads");
529
+ }
530
+ return token;
531
+ }
532
+ function requiredCandidateToken(value) {
533
+ const token = nonEmptyString(value);
534
+ if (!token) {
535
+ throw new Error("candidate token is required; select an exact resumable row from the current lifecycle snapshot");
536
+ }
537
+ return token;
538
+ }
325
539
  export function resolvePluginStoreDir(config, gatewayCwd = process.cwd()) {
326
540
  const configured = nonEmptyString(config.storeDir);
327
541
  if (!configured) {
@@ -433,7 +647,10 @@ function formatAvailableActions(label, resource) {
433
647
  "cancel",
434
648
  "renew",
435
649
  "retry_callback",
436
- "close"
650
+ "close",
651
+ "list_resumable_threads",
652
+ "new_thread",
653
+ "resume_thread"
437
654
  ]);
438
655
  const names = Object.keys(actions)
439
656
  .filter((name) => displayedActions.has(name))