@scotthuang/agent-knock-knock 0.8.1 → 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.
- package/CHANGELOG.md +42 -0
- package/README.md +45 -17
- package/dist/src/agent-session-provider.d.ts +13 -0
- package/dist/src/claude-local-transcript-provider.d.ts +29 -1
- package/dist/src/claude-local-transcript-provider.js +313 -0
- package/dist/src/claude-local-transcript-provider.js.map +1 -1
- package/dist/src/claude-terminal-agent-adapter.d.ts +6 -1
- package/dist/src/claude-terminal-agent-adapter.js +178 -0
- package/dist/src/claude-terminal-agent-adapter.js.map +1 -1
- package/dist/src/cli.js +5671 -317
- package/dist/src/cli.js.map +1 -1
- package/dist/src/codex-local-session-provider.d.ts +3 -1
- package/dist/src/codex-local-session-provider.js +17 -0
- package/dist/src/codex-local-session-provider.js.map +1 -1
- package/dist/src/codex-store-adapter.d.ts +26 -1
- package/dist/src/codex-store-adapter.js +575 -2
- package/dist/src/codex-store-adapter.js.map +1 -1
- package/dist/src/codex-terminal-agent-adapter.d.ts +6 -1
- package/dist/src/codex-terminal-agent-adapter.js +192 -0
- package/dist/src/codex-terminal-agent-adapter.js.map +1 -1
- package/dist/src/managed-session.d.ts +163 -0
- package/dist/src/managed-session.js +873 -0
- package/dist/src/managed-session.js.map +1 -0
- package/dist/src/native-thread-lifecycle-policy.d.ts +57 -0
- package/dist/src/native-thread-lifecycle-policy.js +116 -0
- package/dist/src/native-thread-lifecycle-policy.js.map +1 -0
- package/dist/src/openclaw-plugin-helpers.d.ts +45 -12
- package/dist/src/openclaw-plugin-helpers.js +386 -47
- package/dist/src/openclaw-plugin-helpers.js.map +1 -1
- package/dist/src/openclaw-plugin.js +814 -144
- package/dist/src/openclaw-plugin.js.map +1 -1
- package/dist/src/protocol.d.ts +28 -1
- package/dist/src/protocol.js +93 -4
- package/dist/src/protocol.js.map +1 -1
- package/dist/src/session-store.d.ts +57 -0
- package/dist/src/session-store.js +529 -0
- package/dist/src/session-store.js.map +1 -0
- package/dist/src/store.d.ts +5 -3
- package/dist/src/store.js +422 -17
- package/dist/src/store.js.map +1 -1
- package/dist/src/terminal-agent-adapter.d.ts +175 -0
- package/dist/src/terminal-agent-adapter.js +12 -0
- package/dist/src/terminal-agent-adapter.js.map +1 -1
- package/dist/src/terminal-agent-bridge.d.ts +9 -0
- package/dist/src/terminal-agent-bridge.js +17 -1
- package/dist/src/terminal-agent-bridge.js.map +1 -1
- package/dist/src/terminal-control-provider.d.ts +2 -0
- package/dist/src/terminal-control-provider.js +1 -0
- package/dist/src/terminal-control-provider.js.map +1 -1
- package/docs/quickstart-tmux.md +23 -2
- package/openclaw.plugin.json +19 -3
- package/package.json +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +42 -17
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
1
2
|
import fs from "node:fs";
|
|
2
3
|
import os from "node:os";
|
|
3
4
|
import path from "node:path";
|
|
4
5
|
import { discoverCodexProcesses } from "./codex-session-provider.js";
|
|
5
6
|
import { SystemTerminalProcessSource, runProcessCommand } from "./terminal-process-source.js";
|
|
6
7
|
export { parseLsofCwdMap, parsePsProcessSnapshots } from "./terminal-process-source.js";
|
|
8
|
+
const CODEX_LIFECYCLE_VERSION = "0.146.0";
|
|
9
|
+
const NATIVE_THREAD_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu;
|
|
10
|
+
const MAX_CODEX_SESSION_META_BYTES = 1024 * 1024;
|
|
11
|
+
const NO_FOLLOW_FLAG = typeof fs.constants.O_NOFOLLOW === "number"
|
|
12
|
+
? fs.constants.O_NOFOLLOW
|
|
13
|
+
: 0;
|
|
7
14
|
export class CodexStoreAdapter {
|
|
8
15
|
codexHome;
|
|
9
16
|
runCommand;
|
|
@@ -25,6 +32,96 @@ export class CodexStoreAdapter {
|
|
|
25
32
|
}
|
|
26
33
|
return this.queryJson(dbPath, buildThreadSelect(columns, this.maxSessions));
|
|
27
34
|
}
|
|
35
|
+
async listThreadLifecycleCandidates(request) {
|
|
36
|
+
assertCodexLifecycleCandidateRequest(request);
|
|
37
|
+
const candidates = [];
|
|
38
|
+
for (const row of await this.listThreadRows()) {
|
|
39
|
+
try {
|
|
40
|
+
const candidate = codexLifecycleCandidateFromRow({
|
|
41
|
+
row,
|
|
42
|
+
codexHome: this.codexHome,
|
|
43
|
+
request
|
|
44
|
+
});
|
|
45
|
+
if (candidate) {
|
|
46
|
+
candidates.push(candidate);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Historical rows are untrusted discovery input. Unsafe or unstable rows
|
|
51
|
+
// are hidden and can never become resume targets.
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return candidates.sort((left, right) => Number(right.updatedAtMs ?? 0) - Number(left.updatedAtMs ?? 0));
|
|
55
|
+
}
|
|
56
|
+
async revalidateThreadLifecycleCandidate(candidate, request) {
|
|
57
|
+
try {
|
|
58
|
+
assertCodexLifecycleCandidateRequest(request);
|
|
59
|
+
const token = "candidateToken" in candidate
|
|
60
|
+
? candidate.candidateToken
|
|
61
|
+
: candidate;
|
|
62
|
+
if (token.schema !== "agent-knock-knock/thread-candidate-token" ||
|
|
63
|
+
token.version !== 1 ||
|
|
64
|
+
token.agent !== "codex" ||
|
|
65
|
+
token.source !== "codex_rollout" ||
|
|
66
|
+
token.agentVersion !== request.agentVersion ||
|
|
67
|
+
!path.isAbsolute(token.cwd) ||
|
|
68
|
+
path.resolve(token.cwd) !== path.resolve(request.cwd) ||
|
|
69
|
+
!NATIVE_THREAD_ID_PATTERN.test(token.nativeThreadId)) {
|
|
70
|
+
return {
|
|
71
|
+
status: "unsafe",
|
|
72
|
+
reason: "candidate is not an exact Codex root-thread identity"
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const row = await this.getThreadRow(token.nativeThreadId);
|
|
76
|
+
if (!row) {
|
|
77
|
+
return {
|
|
78
|
+
status: "unavailable",
|
|
79
|
+
reason: "the Codex thread row no longer exists"
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const current = codexLifecycleCandidateFromRow({
|
|
83
|
+
row,
|
|
84
|
+
codexHome: this.codexHome,
|
|
85
|
+
request
|
|
86
|
+
});
|
|
87
|
+
if (!current) {
|
|
88
|
+
return {
|
|
89
|
+
status: "unavailable",
|
|
90
|
+
reason: "the Codex thread is no longer a resumable root CLI session"
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (!sameThreadFileToken(current.fileToken, token.fileToken) ||
|
|
94
|
+
current.metadataFingerprint !== token.metadataFingerprint ||
|
|
95
|
+
current.modelProvider !== token.modelProvider) {
|
|
96
|
+
return {
|
|
97
|
+
status: "changed",
|
|
98
|
+
candidate: current,
|
|
99
|
+
reason: "the Codex rollout changed after candidate discovery"
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return { status: "valid", candidate: current };
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return {
|
|
106
|
+
status: "unsafe",
|
|
107
|
+
reason: error instanceof Error ? error.message : String(error)
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async getThreadRow(nativeThreadId) {
|
|
112
|
+
if (!NATIVE_THREAD_ID_PATTERN.test(nativeThreadId)) {
|
|
113
|
+
throw new Error("Codex thread lookup requires an exact UUID");
|
|
114
|
+
}
|
|
115
|
+
const dbPath = latestStateDbPath(this.codexHome);
|
|
116
|
+
if (!dbPath) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
const columns = this.queryJson(dbPath, "pragma table_info(threads)").map((column) => column.name);
|
|
120
|
+
if (!columns.includes("id") || !columns.includes("cwd")) {
|
|
121
|
+
throw new Error("Codex threads table is missing required id or cwd columns");
|
|
122
|
+
}
|
|
123
|
+
return this.queryJson(dbPath, buildThreadByIdSelect(columns, nativeThreadId))[0];
|
|
124
|
+
}
|
|
28
125
|
async readRollout(rolloutPath) {
|
|
29
126
|
if (!fs.existsSync(rolloutPath)) {
|
|
30
127
|
return undefined;
|
|
@@ -35,8 +132,39 @@ export class CodexStoreAdapter {
|
|
|
35
132
|
return new SystemTerminalProcessSource({ runCommand: this.runCommand })
|
|
36
133
|
.listProcessSnapshots((snapshot) => discoverCodexProcesses([snapshot]).length > 0);
|
|
37
134
|
}
|
|
135
|
+
async resolveActiveSessionIdentityForPid(pid, cwd, preferredSessionId, allowedCompanionIdentity, allowedAdditionalIdentities) {
|
|
136
|
+
if (!Number.isSafeInteger(pid) || pid <= 1) {
|
|
137
|
+
throw new Error("Codex process pid must be a positive integer greater than 1");
|
|
138
|
+
}
|
|
139
|
+
const birthResult = this.runCommand("ps", ["-o", "lstart=", "-p", String(pid)]);
|
|
140
|
+
const processBirth = birthResult.stdout.trim();
|
|
141
|
+
if (birthResult.status !== 0 || !processBirth) {
|
|
142
|
+
throw new Error(birthResult.stderr || birthResult.error?.message ||
|
|
143
|
+
`could not inspect start time for Codex process ${pid}`);
|
|
144
|
+
}
|
|
145
|
+
const result = this.runCommand("lsof", [
|
|
146
|
+
"-a",
|
|
147
|
+
"-p",
|
|
148
|
+
String(pid),
|
|
149
|
+
"-FnfDit"
|
|
150
|
+
]);
|
|
151
|
+
if (result.status !== 0) {
|
|
152
|
+
throw new Error(result.stderr || result.error?.message ||
|
|
153
|
+
`could not inspect open rollout files for Codex process ${pid}`);
|
|
154
|
+
}
|
|
155
|
+
return resolveCodexOpenRolloutIdentity({
|
|
156
|
+
codexHome: this.codexHome,
|
|
157
|
+
pid,
|
|
158
|
+
cwd,
|
|
159
|
+
preferredSessionId,
|
|
160
|
+
allowedCompanionIdentity,
|
|
161
|
+
allowedAdditionalIdentities,
|
|
162
|
+
processBirth,
|
|
163
|
+
lsofOutput: result.stdout
|
|
164
|
+
});
|
|
165
|
+
}
|
|
38
166
|
queryJson(dbPath, sql) {
|
|
39
|
-
const result = this.runCommand("sqlite3", ["-json", dbPath, sql]);
|
|
167
|
+
const result = this.runCommand("sqlite3", ["-readonly", "-json", dbPath, sql]);
|
|
40
168
|
if (result.status !== 0) {
|
|
41
169
|
throw new Error(result.stderr || result.error?.message || "sqlite3 query failed");
|
|
42
170
|
}
|
|
@@ -52,6 +180,246 @@ export function latestStateDbPath(codexHome) {
|
|
|
52
180
|
.map((entry) => path.join(codexHome, entry))
|
|
53
181
|
.sort((left, right) => fs.statSync(right).mtimeMs - fs.statSync(left).mtimeMs)[0];
|
|
54
182
|
}
|
|
183
|
+
export function parseLsofOpenFiles(text) {
|
|
184
|
+
const records = [];
|
|
185
|
+
let current;
|
|
186
|
+
const flush = () => {
|
|
187
|
+
if (current) {
|
|
188
|
+
records.push(current);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
for (const line of text.split(/\r?\n/u)) {
|
|
192
|
+
if (line.startsWith("f")) {
|
|
193
|
+
flush();
|
|
194
|
+
current = { fd: line.slice(1) };
|
|
195
|
+
}
|
|
196
|
+
else if (current && line.startsWith("t")) {
|
|
197
|
+
current.type = line.slice(1);
|
|
198
|
+
}
|
|
199
|
+
else if (current && line.startsWith("D")) {
|
|
200
|
+
current.device = line.slice(1);
|
|
201
|
+
}
|
|
202
|
+
else if (current && line.startsWith("i")) {
|
|
203
|
+
current.inode = line.slice(1);
|
|
204
|
+
}
|
|
205
|
+
else if (current && line.startsWith("n")) {
|
|
206
|
+
current.path = line.slice(1);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
flush();
|
|
210
|
+
return records;
|
|
211
|
+
}
|
|
212
|
+
export function resolveCodexOpenRolloutIdentity({ codexHome, pid, cwd, preferredSessionId, allowedCompanionIdentity, allowedAdditionalIdentities, processBirth, lsofOutput }) {
|
|
213
|
+
const rolloutFiles = parseLsofOpenFiles(lsofOutput).filter((openFile) => {
|
|
214
|
+
if (!openFile.path) {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
const openPath = openFile.path.replace(/\s+\(deleted\)$/u, "");
|
|
218
|
+
return /^rollout-.*\.jsonl$/u.test(path.basename(openPath));
|
|
219
|
+
});
|
|
220
|
+
// An absent sessions directory is only evidence of a virgin process when lsof
|
|
221
|
+
// also reported no rollout descriptor at all. Once a rollout FD exists, every
|
|
222
|
+
// part of its identity must be verified or the send fence fails closed.
|
|
223
|
+
if (rolloutFiles.length === 0) {
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
const configuredSessionsRoot = path.join(codexHome, "sessions");
|
|
227
|
+
let sessionsRoot;
|
|
228
|
+
try {
|
|
229
|
+
sessionsRoot = fs.realpathSync(configuredSessionsRoot);
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
throw new Error(`Codex process ${pid} has open rollout files but CODEX_HOME/sessions is unavailable`);
|
|
233
|
+
}
|
|
234
|
+
const expectedCwd = cwd ? path.resolve(cwd) : undefined;
|
|
235
|
+
const identities = [];
|
|
236
|
+
for (const openFile of rolloutFiles) {
|
|
237
|
+
const openPath = openFile.path;
|
|
238
|
+
const descriptorPath = openPath.replace(/\s+\(deleted\)$/u, "");
|
|
239
|
+
const lexicalRelative = path.relative(path.resolve(configuredSessionsRoot), path.resolve(descriptorPath));
|
|
240
|
+
if (!lexicalRelative ||
|
|
241
|
+
lexicalRelative.startsWith("..") ||
|
|
242
|
+
path.isAbsolute(lexicalRelative)) {
|
|
243
|
+
throw new Error(`Codex process ${pid} has an open rollout outside CODEX_HOME/sessions`);
|
|
244
|
+
}
|
|
245
|
+
if (openFile.type !== "REG" ||
|
|
246
|
+
!openFile.fd ||
|
|
247
|
+
!openFile.device ||
|
|
248
|
+
!openFile.inode ||
|
|
249
|
+
/\s+\(deleted\)$/u.test(openPath)) {
|
|
250
|
+
throw new Error(`Codex process ${pid} has an unverifiable open rollout descriptor`);
|
|
251
|
+
}
|
|
252
|
+
let realPath;
|
|
253
|
+
try {
|
|
254
|
+
realPath = fs.realpathSync(descriptorPath);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
throw new Error(`Codex process ${pid} has an unreadable open rollout descriptor`);
|
|
258
|
+
}
|
|
259
|
+
const relative = path.relative(sessionsRoot, realPath);
|
|
260
|
+
if (!relative || relative.startsWith("..") || path.isAbsolute(relative)) {
|
|
261
|
+
throw new Error(`Codex process ${pid} has an open rollout outside CODEX_HOME/sessions`);
|
|
262
|
+
}
|
|
263
|
+
const expectedDevice = parseLsofInteger(openFile.device);
|
|
264
|
+
const expectedInode = parseLsofInteger(openFile.inode);
|
|
265
|
+
const metadata = readCodexSessionMetadata(descriptorPath, expectedDevice, expectedInode, pid);
|
|
266
|
+
let confirmedRealPath;
|
|
267
|
+
try {
|
|
268
|
+
confirmedRealPath = fs.realpathSync(descriptorPath);
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
throw new Error(`Codex process ${pid} has an unreadable open rollout descriptor`);
|
|
272
|
+
}
|
|
273
|
+
if (confirmedRealPath !== realPath) {
|
|
274
|
+
throw new Error(`Codex process ${pid} rollout path changed while it was being verified`);
|
|
275
|
+
}
|
|
276
|
+
const filenameSessionId = /([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/iu
|
|
277
|
+
.exec(path.basename(descriptorPath))?.[1];
|
|
278
|
+
if (!metadata || metadata.id !== filenameSessionId) {
|
|
279
|
+
throw new Error(`Codex process ${pid} has invalid rollout session metadata`);
|
|
280
|
+
}
|
|
281
|
+
if (typeof metadata.source === "object" &&
|
|
282
|
+
metadata.source !== null &&
|
|
283
|
+
"subagent" in metadata.source) {
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (metadata.originator !== "codex-tui" ||
|
|
287
|
+
metadata.source !== "cli" ||
|
|
288
|
+
(expectedCwd && path.resolve(metadata.cwd) !== expectedCwd)) {
|
|
289
|
+
throw new Error(`Codex process ${pid} has an indeterminate open root rollout`);
|
|
290
|
+
}
|
|
291
|
+
identities.push({
|
|
292
|
+
sessionId: metadata.id,
|
|
293
|
+
processUuid: `codex-pid:${pid}:birth:${processBirth}`,
|
|
294
|
+
processBirth,
|
|
295
|
+
rollout: {
|
|
296
|
+
fd: openFile.fd,
|
|
297
|
+
device: openFile.device,
|
|
298
|
+
inode: openFile.inode,
|
|
299
|
+
path: confirmedRealPath
|
|
300
|
+
},
|
|
301
|
+
evidence: "codex_open_root_rollout"
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
if (identities.length === 0) {
|
|
305
|
+
throw new Error(`Codex process ${pid} has open rollout files but no exact TUI root identity`);
|
|
306
|
+
}
|
|
307
|
+
if (preferredSessionId) {
|
|
308
|
+
const preferred = identities.filter((identity) => identity.sessionId === preferredSessionId);
|
|
309
|
+
if (preferred.length > 1) {
|
|
310
|
+
throw new Error(`Codex process ${pid} has multiple open root rollouts for preferred ` +
|
|
311
|
+
`session ${preferredSessionId}`);
|
|
312
|
+
}
|
|
313
|
+
if (allowedCompanionIdentity) {
|
|
314
|
+
const allowedConstraints = [
|
|
315
|
+
allowedCompanionIdentity,
|
|
316
|
+
...(allowedAdditionalIdentities ?? [])
|
|
317
|
+
];
|
|
318
|
+
const allowedMatches = [];
|
|
319
|
+
for (const constraint of allowedConstraints) {
|
|
320
|
+
const matches = identities.filter((identity) => sameActiveCodexIdentity(identity, constraint));
|
|
321
|
+
if (matches.length > 1) {
|
|
322
|
+
throw new Error(`Codex process ${pid} has multiple open root rollouts for an ` +
|
|
323
|
+
"allowed companion session");
|
|
324
|
+
}
|
|
325
|
+
if (matches[0] && !allowedMatches.includes(matches[0])) {
|
|
326
|
+
allowedMatches.push(matches[0]);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
const unexpected = identities.filter((identity) => identity !== preferred[0] && !allowedMatches.includes(identity));
|
|
330
|
+
if (unexpected.length > 0) {
|
|
331
|
+
throw new Error(`Codex process ${pid} has an unexpected open root rollout outside ` +
|
|
332
|
+
"the preferred and exact companion identities");
|
|
333
|
+
}
|
|
334
|
+
if (preferred.length === 1) {
|
|
335
|
+
return preferred[0];
|
|
336
|
+
}
|
|
337
|
+
const primaryCompanion = identities.find((identity) => sameActiveCodexIdentity(identity, allowedCompanionIdentity));
|
|
338
|
+
if (primaryCompanion) {
|
|
339
|
+
return primaryCompanion;
|
|
340
|
+
}
|
|
341
|
+
if (allowedMatches.length > 0) {
|
|
342
|
+
// The immediately preceding rollout can close while an older,
|
|
343
|
+
// independently verified managed ancestor remains open. Constraint
|
|
344
|
+
// order is authoritative and deterministic; unknown roots were
|
|
345
|
+
// rejected above, so the first surviving exact companion is safe
|
|
346
|
+
// process-incarnation evidence for a fresh status-card proof.
|
|
347
|
+
return allowedMatches[0];
|
|
348
|
+
}
|
|
349
|
+
throw new Error(`Codex process ${pid} has neither the preferred session nor an ` +
|
|
350
|
+
"exact managed companion rollout open");
|
|
351
|
+
}
|
|
352
|
+
else if (preferred.length === 1 && identities.length === 1) {
|
|
353
|
+
return preferred[0];
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
throw new Error(`Codex process ${pid} does not have the preferred session as its ` +
|
|
357
|
+
"sole open root rollout");
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
if (identities.length !== 1) {
|
|
361
|
+
throw new Error(`Codex process ${pid} has ${identities.length} open root rollout files; ` +
|
|
362
|
+
"the foreground native session is ambiguous");
|
|
363
|
+
}
|
|
364
|
+
return identities[0];
|
|
365
|
+
}
|
|
366
|
+
function sameActiveCodexIdentity(left, right) {
|
|
367
|
+
return Boolean(left.sessionId === right.sessionId &&
|
|
368
|
+
left.processUuid === right.processUuid &&
|
|
369
|
+
left.processBirth === right.processBirth &&
|
|
370
|
+
left.rollout?.fd === right.rollout?.fd &&
|
|
371
|
+
left.rollout?.device === right.rollout?.device &&
|
|
372
|
+
left.rollout?.inode === right.rollout?.inode &&
|
|
373
|
+
left.rollout?.path === right.rollout?.path);
|
|
374
|
+
}
|
|
375
|
+
function parseLsofInteger(value) {
|
|
376
|
+
try {
|
|
377
|
+
return BigInt(value);
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
return -1n;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
function readCodexSessionMetadata(filePath, expectedDevice, expectedInode, pid) {
|
|
384
|
+
let fd;
|
|
385
|
+
try {
|
|
386
|
+
fd = fs.openSync(filePath, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW);
|
|
387
|
+
}
|
|
388
|
+
catch {
|
|
389
|
+
throw new Error(`Codex process ${pid} has an unreadable open rollout descriptor`);
|
|
390
|
+
}
|
|
391
|
+
try {
|
|
392
|
+
const stat = fs.fstatSync(fd, { bigint: true });
|
|
393
|
+
if (!stat.isFile() ||
|
|
394
|
+
stat.dev !== expectedDevice ||
|
|
395
|
+
stat.ino !== expectedInode) {
|
|
396
|
+
throw new Error(`Codex process ${pid} rollout descriptor no longer matches its file`);
|
|
397
|
+
}
|
|
398
|
+
const buffer = Buffer.alloc(1024 * 1024);
|
|
399
|
+
const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, 0);
|
|
400
|
+
const text = buffer.subarray(0, bytesRead).toString("utf8");
|
|
401
|
+
const newline = text.indexOf("\n");
|
|
402
|
+
if (newline < 0 && bytesRead === buffer.length) {
|
|
403
|
+
throw new Error(`Codex session metadata line is too large: ${filePath}`);
|
|
404
|
+
}
|
|
405
|
+
const parsed = JSON.parse(newline >= 0 ? text.slice(0, newline) : text);
|
|
406
|
+
const payload = parsed?.type === "session_meta" ? parsed.payload : undefined;
|
|
407
|
+
if (typeof payload?.id !== "string" ||
|
|
408
|
+
typeof payload?.cwd !== "string" ||
|
|
409
|
+
typeof payload?.originator !== "string") {
|
|
410
|
+
return undefined;
|
|
411
|
+
}
|
|
412
|
+
return {
|
|
413
|
+
id: payload.id,
|
|
414
|
+
cwd: payload.cwd,
|
|
415
|
+
originator: payload.originator,
|
|
416
|
+
source: payload.source
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
finally {
|
|
420
|
+
fs.closeSync(fd);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
55
423
|
export function buildThreadSelect(columns, limit) {
|
|
56
424
|
const columnSet = new Set(columns);
|
|
57
425
|
const updatedAtExpression = columnSet.has("updated_at_ms")
|
|
@@ -67,8 +435,213 @@ export function buildThreadSelect(columns, limit) {
|
|
|
67
435
|
columnSet.has("preview") ? "preview" : "null as preview",
|
|
68
436
|
columnSet.has("first_user_message") ? "first_user_message" : "null as first_user_message",
|
|
69
437
|
columnSet.has("updated_at_ms") ? "updated_at_ms" : columnSet.has("updated_at") ? "updated_at * 1000 as updated_at_ms" : "null as updated_at_ms",
|
|
70
|
-
columnSet.has("archived") ? "archived" : "0 as archived"
|
|
438
|
+
columnSet.has("archived") ? "archived" : "0 as archived",
|
|
439
|
+
columnSet.has("source") ? "source" : "null as source",
|
|
440
|
+
columnSet.has("model_provider") ? "model_provider" : "null as model_provider",
|
|
441
|
+
columnSet.has("cli_version") ? "cli_version" : "null as cli_version",
|
|
442
|
+
columnSet.has("name") ? "name" : "null as name"
|
|
71
443
|
].join(", ");
|
|
72
444
|
return `select ${select} from threads order by ${updatedAtExpression} desc limit ${Math.max(1, Math.floor(limit))}`;
|
|
73
445
|
}
|
|
446
|
+
export function buildThreadByIdSelect(columns, nativeThreadId) {
|
|
447
|
+
if (!NATIVE_THREAD_ID_PATTERN.test(nativeThreadId)) {
|
|
448
|
+
throw new Error("Codex thread lookup requires an exact UUID");
|
|
449
|
+
}
|
|
450
|
+
const base = buildThreadSelect(columns, 1);
|
|
451
|
+
return base.replace(" from threads order by ", ` from threads where id = '${nativeThreadId.toLowerCase()}' order by `);
|
|
452
|
+
}
|
|
453
|
+
function assertCodexLifecycleCandidateRequest(request) {
|
|
454
|
+
if (request.agentVersion !== CODEX_LIFECYCLE_VERSION) {
|
|
455
|
+
throw new Error(`Codex lifecycle candidates require exact version ${CODEX_LIFECYCLE_VERSION}`);
|
|
456
|
+
}
|
|
457
|
+
if (!request.cwd || !path.isAbsolute(request.cwd)) {
|
|
458
|
+
throw new Error("Codex lifecycle candidate discovery requires an absolute cwd");
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
function codexLifecycleCandidateFromRow({ row, codexHome, request }) {
|
|
462
|
+
const nativeThreadId = stringField(row.id)?.toLowerCase();
|
|
463
|
+
const rowCwd = stringField(row.cwd);
|
|
464
|
+
const rolloutPath = stringField(row.rollout_path ?? row.rolloutPath);
|
|
465
|
+
const rowSource = stringField(row.source);
|
|
466
|
+
const rowVersion = stringField(row.cli_version);
|
|
467
|
+
const rowModelProvider = stringField(row.model_provider);
|
|
468
|
+
if (!nativeThreadId ||
|
|
469
|
+
!NATIVE_THREAD_ID_PATTERN.test(nativeThreadId) ||
|
|
470
|
+
!rowCwd ||
|
|
471
|
+
!rolloutPath ||
|
|
472
|
+
!path.isAbsolute(rowCwd) ||
|
|
473
|
+
!path.isAbsolute(rolloutPath) ||
|
|
474
|
+
rowSource !== "cli" ||
|
|
475
|
+
rowVersion !== CODEX_LIFECYCLE_VERSION ||
|
|
476
|
+
row.archived === true ||
|
|
477
|
+
row.archived === 1 ||
|
|
478
|
+
path.resolve(rowCwd) !== path.resolve(request.cwd) ||
|
|
479
|
+
(request.modelProvider !== undefined &&
|
|
480
|
+
rowModelProvider !== request.modelProvider)) {
|
|
481
|
+
return undefined;
|
|
482
|
+
}
|
|
483
|
+
const opened = readCodexLifecycleMetadata({
|
|
484
|
+
codexHome,
|
|
485
|
+
rolloutPath,
|
|
486
|
+
nativeThreadId
|
|
487
|
+
});
|
|
488
|
+
if (opened.metadata.id !== nativeThreadId ||
|
|
489
|
+
!path.isAbsolute(opened.metadata.cwd) ||
|
|
490
|
+
path.resolve(opened.metadata.cwd) !== path.resolve(request.cwd) ||
|
|
491
|
+
opened.metadata.originator !== "codex-tui" ||
|
|
492
|
+
opened.metadata.source !== "cli" ||
|
|
493
|
+
opened.metadata.cliVersion !== CODEX_LIFECYCLE_VERSION ||
|
|
494
|
+
(rowModelProvider !== undefined &&
|
|
495
|
+
opened.metadata.modelProvider !== rowModelProvider) ||
|
|
496
|
+
(request.modelProvider !== undefined &&
|
|
497
|
+
opened.metadata.modelProvider !== request.modelProvider)) {
|
|
498
|
+
return undefined;
|
|
499
|
+
}
|
|
500
|
+
const title = boundedCandidateText(row.name ?? row.title);
|
|
501
|
+
const preview = boundedCandidateText(row.preview ?? row.first_user_message ?? row.firstUserMessage);
|
|
502
|
+
const updatedAtMs = finiteNumber(row.updated_at_ms ?? row.updatedAtMs) ??
|
|
503
|
+
opened.fileToken.mtimeMs;
|
|
504
|
+
const metadataFingerprint = createHash("sha256")
|
|
505
|
+
.update(JSON.stringify({
|
|
506
|
+
nativeThreadId,
|
|
507
|
+
cwd: path.resolve(opened.metadata.cwd),
|
|
508
|
+
originator: opened.metadata.originator,
|
|
509
|
+
source: opened.metadata.source,
|
|
510
|
+
cliVersion: opened.metadata.cliVersion,
|
|
511
|
+
modelProvider: opened.metadata.modelProvider ?? null,
|
|
512
|
+
rolloutPath: opened.fileToken.path
|
|
513
|
+
}))
|
|
514
|
+
.digest("hex");
|
|
515
|
+
const candidateToken = {
|
|
516
|
+
schema: "agent-knock-knock/thread-candidate-token",
|
|
517
|
+
version: 1,
|
|
518
|
+
agent: "codex",
|
|
519
|
+
nativeThreadId,
|
|
520
|
+
cwd: path.resolve(request.cwd),
|
|
521
|
+
source: "codex_rollout",
|
|
522
|
+
agentVersion: CODEX_LIFECYCLE_VERSION,
|
|
523
|
+
fileToken: opened.fileToken,
|
|
524
|
+
metadataFingerprint,
|
|
525
|
+
modelProvider: opened.metadata.modelProvider
|
|
526
|
+
};
|
|
527
|
+
return {
|
|
528
|
+
agent: "codex",
|
|
529
|
+
nativeThreadId,
|
|
530
|
+
cwd: path.resolve(request.cwd),
|
|
531
|
+
source: "codex_rollout",
|
|
532
|
+
rootInteractive: true,
|
|
533
|
+
fileToken: opened.fileToken,
|
|
534
|
+
agentVersion: CODEX_LIFECYCLE_VERSION,
|
|
535
|
+
title,
|
|
536
|
+
preview,
|
|
537
|
+
updatedAtMs,
|
|
538
|
+
modelProvider: opened.metadata.modelProvider,
|
|
539
|
+
metadataFingerprint,
|
|
540
|
+
candidateToken
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
function readCodexLifecycleMetadata({ codexHome, rolloutPath, nativeThreadId }) {
|
|
544
|
+
const configuredRoot = path.resolve(codexHome, "sessions");
|
|
545
|
+
const lexicalRelative = path.relative(configuredRoot, path.resolve(rolloutPath));
|
|
546
|
+
if (!lexicalRelative ||
|
|
547
|
+
lexicalRelative.startsWith("..") ||
|
|
548
|
+
path.isAbsolute(lexicalRelative)) {
|
|
549
|
+
throw new Error("Codex lifecycle rollout is outside CODEX_HOME/sessions");
|
|
550
|
+
}
|
|
551
|
+
const sessionsRoot = fs.realpathSync(configuredRoot);
|
|
552
|
+
const lstat = fs.lstatSync(rolloutPath);
|
|
553
|
+
if (lstat.isSymbolicLink() || !lstat.isFile()) {
|
|
554
|
+
throw new Error("Codex lifecycle rollout must be a non-symlink regular file");
|
|
555
|
+
}
|
|
556
|
+
const realPath = fs.realpathSync(rolloutPath);
|
|
557
|
+
const realRelative = path.relative(sessionsRoot, realPath);
|
|
558
|
+
if (!realRelative ||
|
|
559
|
+
realRelative.startsWith("..") ||
|
|
560
|
+
path.isAbsolute(realRelative)) {
|
|
561
|
+
throw new Error("Codex lifecycle rollout resolves outside CODEX_HOME/sessions");
|
|
562
|
+
}
|
|
563
|
+
const filenameId = /([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/iu
|
|
564
|
+
.exec(path.basename(realPath))?.[1]?.toLowerCase();
|
|
565
|
+
if (filenameId !== nativeThreadId) {
|
|
566
|
+
throw new Error("Codex lifecycle rollout filename does not match its thread UUID");
|
|
567
|
+
}
|
|
568
|
+
const fd = fs.openSync(realPath, fs.constants.O_RDONLY | NO_FOLLOW_FLAG);
|
|
569
|
+
try {
|
|
570
|
+
const before = fs.fstatSync(fd);
|
|
571
|
+
if (!before.isFile() || before.size <= 0 || !Number.isSafeInteger(before.size)) {
|
|
572
|
+
throw new Error("Codex lifecycle rollout has an invalid file identity");
|
|
573
|
+
}
|
|
574
|
+
if (process.platform !== "win32" &&
|
|
575
|
+
typeof process.getuid === "function" &&
|
|
576
|
+
before.uid !== process.getuid()) {
|
|
577
|
+
throw new Error("Codex lifecycle rollout is not owned by the current user");
|
|
578
|
+
}
|
|
579
|
+
if (process.platform !== "win32" && (before.mode & 0o022) !== 0) {
|
|
580
|
+
throw new Error("Codex lifecycle rollout is writable by another user");
|
|
581
|
+
}
|
|
582
|
+
const bytesToRead = Math.min(before.size, MAX_CODEX_SESSION_META_BYTES);
|
|
583
|
+
const buffer = Buffer.allocUnsafe(bytesToRead);
|
|
584
|
+
const bytesRead = fs.readSync(fd, buffer, 0, bytesToRead, 0);
|
|
585
|
+
const text = buffer.subarray(0, bytesRead).toString("utf8");
|
|
586
|
+
const newline = text.indexOf("\n");
|
|
587
|
+
if (newline < 0 && before.size > bytesRead) {
|
|
588
|
+
throw new Error("Codex lifecycle session metadata line exceeds the read limit");
|
|
589
|
+
}
|
|
590
|
+
const parsed = JSON.parse(newline >= 0 ? text.slice(0, newline) : text);
|
|
591
|
+
const payload = parsed?.type === "session_meta" ? parsed.payload : undefined;
|
|
592
|
+
const id = stringField(payload?.id)?.toLowerCase();
|
|
593
|
+
const cwd = stringField(payload?.cwd);
|
|
594
|
+
const originator = stringField(payload?.originator);
|
|
595
|
+
const source = stringField(payload?.source);
|
|
596
|
+
const cliVersion = stringField(payload?.cli_version);
|
|
597
|
+
const modelProvider = stringField(payload?.model_provider);
|
|
598
|
+
if (!id || !cwd || !originator || !source || !cliVersion) {
|
|
599
|
+
throw new Error("Codex lifecycle rollout has incomplete session metadata");
|
|
600
|
+
}
|
|
601
|
+
const after = fs.fstatSync(fd);
|
|
602
|
+
if (after.dev !== before.dev ||
|
|
603
|
+
after.ino !== before.ino ||
|
|
604
|
+
after.size !== before.size ||
|
|
605
|
+
after.mtimeMs !== before.mtimeMs ||
|
|
606
|
+
fs.realpathSync(realPath) !== realPath) {
|
|
607
|
+
throw new Error("Codex lifecycle rollout changed while it was inspected");
|
|
608
|
+
}
|
|
609
|
+
return {
|
|
610
|
+
fileToken: {
|
|
611
|
+
path: realPath,
|
|
612
|
+
device: String(before.dev),
|
|
613
|
+
inode: String(before.ino),
|
|
614
|
+
size: before.size,
|
|
615
|
+
mtimeMs: before.mtimeMs
|
|
616
|
+
},
|
|
617
|
+
metadata: { id, cwd, originator, source, cliVersion, modelProvider }
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
finally {
|
|
621
|
+
fs.closeSync(fd);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
function sameThreadFileToken(left, right) {
|
|
625
|
+
return left.path === right.path &&
|
|
626
|
+
left.device === right.device &&
|
|
627
|
+
left.inode === right.inode &&
|
|
628
|
+
left.size === right.size &&
|
|
629
|
+
left.mtimeMs === right.mtimeMs;
|
|
630
|
+
}
|
|
631
|
+
function stringField(value) {
|
|
632
|
+
return typeof value === "string" && value.trim().length > 0
|
|
633
|
+
? value.trim()
|
|
634
|
+
: undefined;
|
|
635
|
+
}
|
|
636
|
+
function finiteNumber(value) {
|
|
637
|
+
const number = Number(value);
|
|
638
|
+
return Number.isFinite(number) ? number : undefined;
|
|
639
|
+
}
|
|
640
|
+
function boundedCandidateText(value) {
|
|
641
|
+
const text = stringField(value)?.replace(/\s+/gu, " ");
|
|
642
|
+
if (!text) {
|
|
643
|
+
return undefined;
|
|
644
|
+
}
|
|
645
|
+
return text.length <= 400 ? text : `${text.slice(0, 399)}…`;
|
|
646
|
+
}
|
|
74
647
|
//# sourceMappingURL=codex-store-adapter.js.map
|
|
@@ -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":"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"}
|