@scotthuang/agent-knock-knock 0.8.0 → 0.9.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.
@@ -1,9 +1,10 @@
1
- import type { AgentSessionCapabilities, CodingAgentSessionProvider, ForkContextOptions } from "./agent-session-provider.js";
1
+ import type { ActiveAgentSessionIdentity, AgentSessionCapabilities, CodingAgentSessionProvider, ForkContextOptions } from "./agent-session-provider.js";
2
2
  import { type ActiveCodexProcess, type CodexProcessSnapshot, type CodexSessionSummary, type CodexThreadRow, type ForkContextPackage } from "./codex-session-provider.js";
3
3
  export interface CodexLocalSessionAdapter {
4
4
  listThreadRows(): Promise<CodexThreadRow[]>;
5
5
  readRollout(path: string): Promise<string | undefined>;
6
6
  listProcessSnapshots(): Promise<CodexProcessSnapshot[]>;
7
+ resolveActiveSessionIdentityForPid?(pid: number, cwd?: string): Promise<ActiveAgentSessionIdentity | undefined>;
7
8
  }
8
9
  export declare class CodexLocalSessionProvider implements CodingAgentSessionProvider {
9
10
  readonly agent: "codex";
@@ -12,6 +13,7 @@ export declare class CodexLocalSessionProvider implements CodingAgentSessionProv
12
13
  getCapabilities(): Promise<AgentSessionCapabilities>;
13
14
  listHistoricalSessions(): Promise<CodexSessionSummary[]>;
14
15
  listActiveSessions(): Promise<ActiveCodexProcess[]>;
16
+ resolveActiveSessionIdentityForPid(pid: number, cwd?: string): Promise<ActiveAgentSessionIdentity | undefined>;
15
17
  getSession(sessionId: string): Promise<CodexSessionSummary | undefined>;
16
18
  getForkContext(options: ForkContextOptions): Promise<ForkContextPackage | undefined>;
17
19
  }
@@ -44,6 +44,23 @@ export class CodexLocalSessionProvider {
44
44
  return discoverCodexProcesses(await this.adapter.listProcessSnapshots())
45
45
  .filter((process) => process.kind === "codex_cli");
46
46
  }
47
+ async resolveActiveSessionIdentityForPid(pid, cwd) {
48
+ if (!Number.isSafeInteger(pid) || pid <= 1) {
49
+ throw new Error("Codex process pid must be a positive integer greater than 1");
50
+ }
51
+ if (this.adapter.resolveActiveSessionIdentityForPid) {
52
+ return this.adapter.resolveActiveSessionIdentityForPid(pid, cwd);
53
+ }
54
+ const sessionId = (await this.listActiveSessions())
55
+ .find((process) => process.pid === pid)?.sessionId;
56
+ return sessionId
57
+ ? {
58
+ sessionId,
59
+ processUuid: `static-pid:${pid}`,
60
+ evidence: "process_command_session_id"
61
+ }
62
+ : undefined;
63
+ }
47
64
  async getSession(sessionId) {
48
65
  const sessions = await this.listHistoricalSessions();
49
66
  return sessions.find((session) => session.id === sessionId);
@@ -1 +1 @@
1
- {"version":3,"file":"codex-local-session-provider.js","sourceRoot":"","sources":["../../src/codex-local-session-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-local-session-provider.js","sourceRoot":"","sources":["../../src/codex-local-session-provider.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ActiveAgentSessionIdentity } from "./agent-session-provider.js";
1
2
  import { type CodexProcessSnapshot, type CodexThreadRow } from "./codex-session-provider.js";
2
3
  import type { CodexLocalSessionAdapter } from "./codex-local-session-provider.js";
3
4
  import { type ProcessCommandResult } from "./terminal-process-source.js";
@@ -15,7 +16,23 @@ export declare class CodexStoreAdapter implements CodexLocalSessionAdapter {
15
16
  listThreadRows(): Promise<CodexThreadRow[]>;
16
17
  readRollout(rolloutPath: string): Promise<string | undefined>;
17
18
  listProcessSnapshots(): Promise<CodexProcessSnapshot[]>;
19
+ resolveActiveSessionIdentityForPid(pid: number, cwd?: string): Promise<ActiveAgentSessionIdentity | undefined>;
18
20
  private queryJson;
19
21
  }
20
22
  export declare function latestStateDbPath(codexHome: string): string | undefined;
23
+ export interface LsofOpenFileRecord {
24
+ fd?: string;
25
+ type?: string;
26
+ device?: string;
27
+ inode?: string;
28
+ path?: string;
29
+ }
30
+ export declare function parseLsofOpenFiles(text: string): LsofOpenFileRecord[];
31
+ export declare function resolveCodexOpenRolloutIdentity({ codexHome, pid, cwd, processBirth, lsofOutput }: {
32
+ codexHome: string;
33
+ pid: number;
34
+ cwd?: string;
35
+ processBirth: string;
36
+ lsofOutput: string;
37
+ }): ActiveAgentSessionIdentity | undefined;
21
38
  export declare function buildThreadSelect(columns: string[], limit: number): string;
@@ -35,6 +35,34 @@ export class CodexStoreAdapter {
35
35
  return new SystemTerminalProcessSource({ runCommand: this.runCommand })
36
36
  .listProcessSnapshots((snapshot) => discoverCodexProcesses([snapshot]).length > 0);
37
37
  }
38
+ async resolveActiveSessionIdentityForPid(pid, cwd) {
39
+ if (!Number.isSafeInteger(pid) || pid <= 1) {
40
+ throw new Error("Codex process pid must be a positive integer greater than 1");
41
+ }
42
+ const birthResult = this.runCommand("ps", ["-o", "lstart=", "-p", String(pid)]);
43
+ const processBirth = birthResult.stdout.trim();
44
+ if (birthResult.status !== 0 || !processBirth) {
45
+ throw new Error(birthResult.stderr || birthResult.error?.message ||
46
+ `could not inspect start time for Codex process ${pid}`);
47
+ }
48
+ const result = this.runCommand("lsof", [
49
+ "-a",
50
+ "-p",
51
+ String(pid),
52
+ "-FnfDit"
53
+ ]);
54
+ if (result.status !== 0) {
55
+ throw new Error(result.stderr || result.error?.message ||
56
+ `could not inspect open rollout files for Codex process ${pid}`);
57
+ }
58
+ return resolveCodexOpenRolloutIdentity({
59
+ codexHome: this.codexHome,
60
+ pid,
61
+ cwd,
62
+ processBirth,
63
+ lsofOutput: result.stdout
64
+ });
65
+ }
38
66
  queryJson(dbPath, sql) {
39
67
  const result = this.runCommand("sqlite3", ["-json", dbPath, sql]);
40
68
  if (result.status !== 0) {
@@ -52,6 +80,184 @@ export function latestStateDbPath(codexHome) {
52
80
  .map((entry) => path.join(codexHome, entry))
53
81
  .sort((left, right) => fs.statSync(right).mtimeMs - fs.statSync(left).mtimeMs)[0];
54
82
  }
83
+ export function parseLsofOpenFiles(text) {
84
+ const records = [];
85
+ let current;
86
+ const flush = () => {
87
+ if (current) {
88
+ records.push(current);
89
+ }
90
+ };
91
+ for (const line of text.split(/\r?\n/u)) {
92
+ if (line.startsWith("f")) {
93
+ flush();
94
+ current = { fd: line.slice(1) };
95
+ }
96
+ else if (current && line.startsWith("t")) {
97
+ current.type = line.slice(1);
98
+ }
99
+ else if (current && line.startsWith("D")) {
100
+ current.device = line.slice(1);
101
+ }
102
+ else if (current && line.startsWith("i")) {
103
+ current.inode = line.slice(1);
104
+ }
105
+ else if (current && line.startsWith("n")) {
106
+ current.path = line.slice(1);
107
+ }
108
+ }
109
+ flush();
110
+ return records;
111
+ }
112
+ export function resolveCodexOpenRolloutIdentity({ codexHome, pid, cwd, processBirth, lsofOutput }) {
113
+ const rolloutFiles = parseLsofOpenFiles(lsofOutput).filter((openFile) => {
114
+ if (!openFile.path) {
115
+ return false;
116
+ }
117
+ const openPath = openFile.path.replace(/\s+\(deleted\)$/u, "");
118
+ return /^rollout-.*\.jsonl$/u.test(path.basename(openPath));
119
+ });
120
+ // An absent sessions directory is only evidence of a virgin process when lsof
121
+ // also reported no rollout descriptor at all. Once a rollout FD exists, every
122
+ // part of its identity must be verified or the send fence fails closed.
123
+ if (rolloutFiles.length === 0) {
124
+ return undefined;
125
+ }
126
+ const configuredSessionsRoot = path.join(codexHome, "sessions");
127
+ let sessionsRoot;
128
+ try {
129
+ sessionsRoot = fs.realpathSync(configuredSessionsRoot);
130
+ }
131
+ catch {
132
+ throw new Error(`Codex process ${pid} has open rollout files but CODEX_HOME/sessions is unavailable`);
133
+ }
134
+ const expectedCwd = cwd ? path.resolve(cwd) : undefined;
135
+ const identities = [];
136
+ for (const openFile of rolloutFiles) {
137
+ const openPath = openFile.path;
138
+ const descriptorPath = openPath.replace(/\s+\(deleted\)$/u, "");
139
+ const lexicalRelative = path.relative(path.resolve(configuredSessionsRoot), path.resolve(descriptorPath));
140
+ if (!lexicalRelative ||
141
+ lexicalRelative.startsWith("..") ||
142
+ path.isAbsolute(lexicalRelative)) {
143
+ throw new Error(`Codex process ${pid} has an open rollout outside CODEX_HOME/sessions`);
144
+ }
145
+ if (openFile.type !== "REG" ||
146
+ !openFile.fd ||
147
+ !openFile.device ||
148
+ !openFile.inode ||
149
+ /\s+\(deleted\)$/u.test(openPath)) {
150
+ throw new Error(`Codex process ${pid} has an unverifiable open rollout descriptor`);
151
+ }
152
+ let realPath;
153
+ try {
154
+ realPath = fs.realpathSync(descriptorPath);
155
+ }
156
+ catch {
157
+ throw new Error(`Codex process ${pid} has an unreadable open rollout descriptor`);
158
+ }
159
+ const relative = path.relative(sessionsRoot, realPath);
160
+ if (!relative || relative.startsWith("..") || path.isAbsolute(relative)) {
161
+ throw new Error(`Codex process ${pid} has an open rollout outside CODEX_HOME/sessions`);
162
+ }
163
+ const expectedDevice = parseLsofInteger(openFile.device);
164
+ const expectedInode = parseLsofInteger(openFile.inode);
165
+ const metadata = readCodexSessionMetadata(descriptorPath, expectedDevice, expectedInode, pid);
166
+ let confirmedRealPath;
167
+ try {
168
+ confirmedRealPath = fs.realpathSync(descriptorPath);
169
+ }
170
+ catch {
171
+ throw new Error(`Codex process ${pid} has an unreadable open rollout descriptor`);
172
+ }
173
+ if (confirmedRealPath !== realPath) {
174
+ throw new Error(`Codex process ${pid} rollout path changed while it was being verified`);
175
+ }
176
+ const filenameSessionId = /([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/iu
177
+ .exec(path.basename(descriptorPath))?.[1];
178
+ if (!metadata || metadata.id !== filenameSessionId) {
179
+ throw new Error(`Codex process ${pid} has invalid rollout session metadata`);
180
+ }
181
+ if (typeof metadata.source === "object" &&
182
+ metadata.source !== null &&
183
+ "subagent" in metadata.source) {
184
+ continue;
185
+ }
186
+ if (metadata.originator !== "codex-tui" ||
187
+ metadata.source !== "cli" ||
188
+ (expectedCwd && path.resolve(metadata.cwd) !== expectedCwd)) {
189
+ throw new Error(`Codex process ${pid} has an indeterminate open root rollout`);
190
+ }
191
+ identities.push({
192
+ sessionId: metadata.id,
193
+ processUuid: `codex-pid:${pid}:birth:${processBirth}`,
194
+ processBirth,
195
+ rollout: {
196
+ fd: openFile.fd,
197
+ device: openFile.device,
198
+ inode: openFile.inode,
199
+ path: confirmedRealPath
200
+ },
201
+ evidence: "codex_open_root_rollout"
202
+ });
203
+ }
204
+ if (identities.length === 0) {
205
+ throw new Error(`Codex process ${pid} has open rollout files but no exact TUI root identity`);
206
+ }
207
+ if (identities.length !== 1) {
208
+ throw new Error(`Codex process ${pid} has ${identities.length} open root rollout files; ` +
209
+ "the foreground native session is ambiguous");
210
+ }
211
+ return identities[0];
212
+ }
213
+ function parseLsofInteger(value) {
214
+ try {
215
+ return BigInt(value);
216
+ }
217
+ catch {
218
+ return -1n;
219
+ }
220
+ }
221
+ function readCodexSessionMetadata(filePath, expectedDevice, expectedInode, pid) {
222
+ let fd;
223
+ try {
224
+ fd = fs.openSync(filePath, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW);
225
+ }
226
+ catch {
227
+ throw new Error(`Codex process ${pid} has an unreadable open rollout descriptor`);
228
+ }
229
+ try {
230
+ const stat = fs.fstatSync(fd, { bigint: true });
231
+ if (!stat.isFile() ||
232
+ stat.dev !== expectedDevice ||
233
+ stat.ino !== expectedInode) {
234
+ throw new Error(`Codex process ${pid} rollout descriptor no longer matches its file`);
235
+ }
236
+ const buffer = Buffer.alloc(1024 * 1024);
237
+ const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, 0);
238
+ const text = buffer.subarray(0, bytesRead).toString("utf8");
239
+ const newline = text.indexOf("\n");
240
+ if (newline < 0 && bytesRead === buffer.length) {
241
+ throw new Error(`Codex session metadata line is too large: ${filePath}`);
242
+ }
243
+ const parsed = JSON.parse(newline >= 0 ? text.slice(0, newline) : text);
244
+ const payload = parsed?.type === "session_meta" ? parsed.payload : undefined;
245
+ if (typeof payload?.id !== "string" ||
246
+ typeof payload?.cwd !== "string" ||
247
+ typeof payload?.originator !== "string") {
248
+ return undefined;
249
+ }
250
+ return {
251
+ id: payload.id,
252
+ cwd: payload.cwd,
253
+ originator: payload.originator,
254
+ source: payload.source
255
+ };
256
+ }
257
+ finally {
258
+ fs.closeSync(fd);
259
+ }
260
+ }
55
261
  export function buildThreadSelect(columns, limit) {
56
262
  const columnSet = new Set(columns);
57
263
  const updatedAtExpression = columnSet.has("updated_at_ms")
@@ -1 +1 @@
1
- {"version":3,"file":"codex-store-adapter.js","sourceRoot":"","sources":["../../src/codex-store-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-store-adapter.js","sourceRoot":"","sources":["../../src/codex-store-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAkD,MAAM,6BAA6B,CAAC;AAErH,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EAElB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,eAAe,EACf,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AAQtC,MAAM,OAAO,iBAAiB;IACX,SAAS,CAAS;IAClB,UAAU,CAA4D;IACtE,WAAW,CAAS;IAErC,YAAY,OAAO,GAA6B,EAAE;QAChD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAmB,MAAM,EAAE,4BAA4B,CAAC;aACnF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAiB,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,WAAmB;QACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,2BAA2B,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;aACpE,oBAAoB,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,kCAAkC,CACtC,GAAW,EACX,GAAY;QAEZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO;gBAChD,kDAAkD,GAAG,EAAE,CACxD,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACrC,IAAI;YACJ,IAAI;YACJ,MAAM,CAAC,GAAG,CAAC;YACX,SAAS;SACV,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO;gBACtC,0DAA0D,GAAG,EAAE,CAChE,CAAC;QACJ,CAAC;QACD,OAAO,+BAA+B,CAAC;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG;YACH,GAAG;YACH,YAAY;YACZ,UAAU,EAAE,MAAM,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAI,MAAc,EAAE,GAAW;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,sBAAsB,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAQ,CAAC;IAClD,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;SAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAC3C,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC;AAUD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,IAAI,OAAuC,CAAC;IAC5C,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,EAAE,CAAC;YACR,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,CAAC;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,EAC9C,SAAS,EACT,GAAG,EACH,GAAG,EACH,YAAY,EACZ,UAAU,EAOX;IACC,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;QACtE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IACH,8EAA8E;IAC9E,8EAA8E;IAC9E,wEAAwE;IACxE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChE,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,gEAAgE,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,MAAM,UAAU,GAAiC,EAAE,CAAC;IACpD,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAK,CAAC;QAChC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CACnC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,EACpC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAC7B,CAAC;QACF,IACE,CAAC,eAAe;YAChB,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAChC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,kDAAkD,CACvE,CAAC;QACJ,CAAC;QACD,IACE,QAAQ,CAAC,IAAI,KAAK,KAAK;YACvB,CAAC,QAAQ,CAAC,EAAE;YACZ,CAAC,QAAQ,CAAC,MAAM;YAChB,CAAC,QAAQ,CAAC,KAAK;YACf,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,8CAA8C,CACnE,CAAC;QACJ,CAAC;QACD,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,4CAA4C,CACjE,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,kDAAkD,CACvE,CAAC;QACJ,CAAC;QACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,wBAAwB,CACvC,cAAc,EACd,cAAc,EACd,aAAa,EACb,GAAG,CACJ,CAAC;QACF,IAAI,iBAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,4CAA4C,CACjE,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,mDAAmD,CACxE,CAAC;QACJ,CAAC;QACD,MAAM,iBAAiB,GAAG,0EAA0E;aACjG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,iBAAiB,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,uCAAuC,CAC5D,CAAC;QACJ,CAAC;QACD,IACE,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;YACnC,QAAQ,CAAC,MAAM,KAAK,IAAI;YACxB,UAAU,IAAI,QAAQ,CAAC,MAAM,EAC7B,CAAC;YACD,SAAS;QACX,CAAC;QACD,IACE,QAAQ,CAAC,UAAU,KAAK,WAAW;YACnC,QAAQ,CAAC,MAAM,KAAK,KAAK;YACzB,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,EAC3D,CAAC;YACD,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,yCAAyC,CAC9D,CAAC;QACJ,CAAC;QACD,UAAU,CAAC,IAAI,CAAC;YACd,SAAS,EAAE,QAAQ,CAAC,EAAE;YACtB,WAAW,EAAE,aAAa,GAAG,UAAU,YAAY,EAAE;YACrD,YAAY;YACZ,OAAO,EAAE;gBACP,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,IAAI,EAAE,iBAAiB;aACxB;YACD,QAAQ,EAAE,yBAAyB;SACpC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,wDAAwD,CAC7E,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,QAAQ,UAAU,CAAC,MAAM,4BAA4B;YACzE,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAAgB,EAChB,cAAsB,EACtB,aAAqB,EACrB,GAAW;IAOX,IAAI,EAAU,CAAC;IACf,IAAI,CAAC;QACH,EAAE,GAAG,EAAE,CAAC,QAAQ,CACd,QAAQ,EACR,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAChD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,4CAA4C,CACjE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IACE,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,IAAI,CAAC,GAAG,KAAK,cAAc;YAC3B,IAAI,CAAC,GAAG,KAAK,aAAa,EAC1B,CAAC;YACD,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,gDAAgD,CACrE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,OAAO,GAAG,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,IACE,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ;YAC/B,OAAO,OAAO,EAAE,GAAG,KAAK,QAAQ;YAChC,OAAO,OAAO,EAAE,UAAU,KAAK,QAAQ,EACvC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAiB,EAAE,KAAa;IAChE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,mBAAmB,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;QACxD,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;YAC3B,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,GAAG,CAAC;IACV,MAAM,MAAM,GAAG;QACb,IAAI;QACJ,KAAK;QACL,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,sBAAsB;QACvE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;QAClD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB;QACxD,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,4BAA4B;QACzF,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,uBAAuB;QAC/I,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe;KACzD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,UAAU,MAAM,0BAA0B,mBAAmB,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACtH,CAAC"}
@@ -7,28 +7,32 @@ export type AkkCommand = {
7
7
  action: "list";
8
8
  } | {
9
9
  action: "status";
10
- conversationId?: string;
10
+ turnId?: string;
11
11
  } | {
12
12
  action: "send";
13
- conversationId: string;
13
+ selector: string;
14
+ message: string;
15
+ } | {
16
+ action: "respond";
17
+ turnId: string;
14
18
  message: string;
15
19
  } | {
16
20
  action: "approve";
17
- conversationId: string;
21
+ turnId: string;
18
22
  expectedApprovalFingerprint: string;
19
23
  } | {
20
24
  action: "cancel";
21
- conversationId: string;
25
+ turnId: string;
22
26
  } | {
23
27
  action: "renew";
24
- conversationId: string;
28
+ turnId: string;
25
29
  minutes?: string;
26
30
  } | {
27
31
  action: "retry-callback";
28
- conversationId: string;
32
+ turnId: string;
29
33
  } | {
30
34
  action: "close";
31
- conversationId: string;
35
+ turnId: string;
32
36
  reason: string;
33
37
  expectedMessageId?: string;
34
38
  } | {
@@ -38,6 +42,10 @@ export type AkkCommand = {
38
42
  export declare function parseAkkCommand(args: unknown): AkkCommand;
39
43
  export declare function akkUsageText(): string;
40
44
  export declare function formatAkkListCommandResult(result: Record<string, unknown>): string;
45
+ export declare function formatAkkRespondCommandResult(result: Record<string, unknown>): {
46
+ text: string;
47
+ isError: boolean;
48
+ };
41
49
  export declare function buildAkkCommandCliArgs(command: AkkCommand, config: Record<string, unknown>, context?: {
42
50
  sessionKey?: unknown;
43
51
  }): string[] | undefined;