nterminal 1.3.2 → 1.3.4
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/README.md +4 -2
- package/bin/nterminal.js +5 -0
- package/dist/client/assets/MarkdownPreview-DjDO4lEl.js +1 -0
- package/dist/client/assets/TranscriptMarkdownBody-H8ZsISc6.js +3 -0
- package/dist/client/assets/{index-lQ2cyEWO.css → index-CIYazAGv.css} +1 -1
- package/dist/client/assets/index-DwvLN_WJ.js +56 -0
- package/dist/client/assets/{index-CosXAR2f.js → index-DxfBq-4P.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/scripts/onboarding.js +9 -0
- package/dist/scripts/onboarding.js.map +1 -1
- package/dist/server/agent/agentProxy.d.ts +1 -0
- package/dist/server/agent/agentProxy.js +3 -1
- package/dist/server/agent/agentProxy.js.map +1 -1
- package/dist/server/agent/agentRoutes.js +16 -2
- package/dist/server/agent/agentRoutes.js.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/agentManagementRoutes.js +13 -2
- package/dist/server/routes/agentManagementRoutes.js.map +1 -1
- package/dist/server/routes/terminalRoutes.js +19 -2
- package/dist/server/routes/terminalRoutes.js.map +1 -1
- package/dist/server/routes/transcriptQuery.d.ts +14 -0
- package/dist/server/routes/transcriptQuery.js +57 -0
- package/dist/server/routes/transcriptQuery.js.map +1 -0
- package/dist/server/terminal/PtyAdapter.d.ts +12 -0
- package/dist/server/terminal/PtyAdapter.js.map +1 -1
- package/dist/server/terminal/TerminalManager.d.ts +6 -7
- package/dist/server/terminal/TerminalManager.js +57 -11
- package/dist/server/terminal/TerminalManager.js.map +1 -1
- package/dist/server/terminal/TmuxPtyAdapter.d.ts +15 -1
- package/dist/server/terminal/TmuxPtyAdapter.js +288 -13
- package/dist/server/terminal/TmuxPtyAdapter.js.map +1 -1
- package/dist/server/terminal/codexTranscriptSource.d.ts +18 -1
- package/dist/server/terminal/codexTranscriptSource.js +273 -75
- package/dist/server/terminal/codexTranscriptSource.js.map +1 -1
- package/dist/server/terminal/sqliteReader.d.ts +21 -0
- package/dist/server/terminal/sqliteReader.js +158 -0
- package/dist/server/terminal/sqliteReader.js.map +1 -0
- package/dist/server/terminal/subagentSources.js +3 -2
- package/dist/server/terminal/subagentSources.js.map +1 -1
- package/dist/server/terminal/transcriptHistory.d.ts +34 -0
- package/dist/server/terminal/transcriptHistory.js +81 -36
- package/dist/server/terminal/transcriptHistory.js.map +1 -1
- package/dist/server/terminal/transcriptStore.d.ts +64 -0
- package/dist/server/terminal/transcriptStore.js +779 -0
- package/dist/server/terminal/transcriptStore.js.map +1 -0
- package/dist/shared/nodeVersion.d.ts +3 -0
- package/dist/shared/nodeVersion.js +12 -0
- package/dist/shared/nodeVersion.js.map +1 -0
- package/dist/shared/protocol.d.ts +33 -0
- package/dist/shared/protocol.js.map +1 -1
- package/dist/shared/transcriptSearch.d.ts +2 -0
- package/dist/shared/transcriptSearch.js +12 -0
- package/dist/shared/transcriptSearch.js.map +1 -0
- package/dist/src/shared/nodeVersion.js +12 -0
- package/dist/src/shared/nodeVersion.js.map +1 -0
- package/docs/terminal-history.md +22 -4
- package/package.json +2 -2
- package/scripts/nterminalctl +8 -4
- package/dist/client/assets/MarkdownPreview-CzA5ZyZ3.js +0 -1
- package/dist/client/assets/TranscriptMarkdownBody-Cu7KK3bx.js +0 -3
- package/dist/client/assets/index-wiyTLXQg.js +0 -56
|
@@ -1,17 +1,23 @@
|
|
|
1
|
-
import { access, readFile, readdir, readlink, realpath } from 'node:fs/promises';
|
|
1
|
+
import { access, open, readFile, readdir, readlink, realpath, stat } from 'node:fs/promises';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { isSessionId, sessionIdPatternSource } from './sessionId.js';
|
|
5
5
|
import { readProcessStartedAtSecondsAsync } from './procfs.js';
|
|
6
6
|
import { TtlCache } from './ttlCache.js';
|
|
7
7
|
import { KeyedSingleFlight, mapWithConcurrency, runCommand } from './asyncCommand.js';
|
|
8
|
+
import { readSqlite } from './sqliteReader.js';
|
|
9
|
+
export const TRANSCRIPT_CANDIDATE_LIMIT = 50;
|
|
10
|
+
const ABSENT = { status: 'absent' };
|
|
11
|
+
const UNAVAILABLE = { status: 'unavailable' };
|
|
12
|
+
const PENDING = { status: 'pending' };
|
|
13
|
+
const AMBIGUOUS = { status: 'ambiguous' };
|
|
8
14
|
const PROCESS_START_SKEW_SECONDS = 2;
|
|
9
15
|
// Codex >= 0.157 TUIs hand the conversation to a shared app-server daemon
|
|
10
16
|
// that listens on /tmp/codex-daemon-<uid>/<hash>; the daemon, not the TUI,
|
|
11
17
|
// owns the rollout fd and tags the thread's log rows with its own pid.
|
|
12
18
|
const CODEX_DAEMON_SOCKET_DIR_PREFIX = 'codex-daemon-';
|
|
13
19
|
const SOCKET_FD_TARGET_PATTERN = /^socket:\[(\d+)\]$/;
|
|
14
|
-
const LOOKUP_CACHE_SUCCESS_TTL_MS =
|
|
20
|
+
const LOOKUP_CACHE_SUCCESS_TTL_MS = 3_000;
|
|
15
21
|
// Must exceed the client's steady transcript-source poll cadence (15s in
|
|
16
22
|
// XtermPane); a shorter negative TTL guarantees every poll misses the cache
|
|
17
23
|
// and re-runs the sqlite lookup.
|
|
@@ -25,6 +31,10 @@ const processLogLookupCache = new TtlCache();
|
|
|
25
31
|
const processLogLookupInflight = new KeyedSingleFlight();
|
|
26
32
|
const daemonLookupCache = new TtlCache();
|
|
27
33
|
const daemonLookupInflight = new KeyedSingleFlight();
|
|
34
|
+
function lookupTtl(result) {
|
|
35
|
+
return result.status === 'absent' || result.status === 'unavailable'
|
|
36
|
+
? LOOKUP_CACHE_FAILURE_TTL_MS : LOOKUP_CACHE_SUCCESS_TTL_MS;
|
|
37
|
+
}
|
|
28
38
|
export function clearCodexTranscriptLookupCache() {
|
|
29
39
|
processLogLookupCache.clear();
|
|
30
40
|
processLogLookupInflight.clear();
|
|
@@ -32,16 +42,11 @@ export function clearCodexTranscriptLookupCache() {
|
|
|
32
42
|
daemonLookupInflight.clear();
|
|
33
43
|
}
|
|
34
44
|
export async function resolveCodexTranscriptFromOpenFds(pid, options = {}) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const openRollouts = await listOpenCodexRollouts(options.procRoot ?? '/proc', pid);
|
|
38
|
-
if (openRollouts.size !== 1)
|
|
39
|
-
return null;
|
|
40
|
-
const [sessionId, filePath] = [...openRollouts.entries()][0];
|
|
41
|
-
return { provider: 'codex', sessionId, filePath };
|
|
45
|
+
const result = await lookupCodexTranscriptFromOpenFds(pid, options);
|
|
46
|
+
return result.status === 'matched' ? result.source : null;
|
|
42
47
|
}
|
|
43
|
-
// Rollouts `pid` holds open for writing, keyed by session id.
|
|
44
|
-
//
|
|
48
|
+
// Rollouts `pid` holds open for writing, keyed by session id. Unlinked FDs
|
|
49
|
+
// are ignored; other missing targets remain evidence against uniqueness.
|
|
45
50
|
async function listOpenCodexRollouts(procRoot, pid) {
|
|
46
51
|
const fdDir = path.join(procRoot, String(pid), 'fd');
|
|
47
52
|
let fdNames;
|
|
@@ -59,7 +64,6 @@ async function listOpenCodexRollouts(procRoot, pid) {
|
|
|
59
64
|
const match = CODEX_ROLLOUT_FILE_PATTERN.exec(path.basename(target));
|
|
60
65
|
if (!match || !(await isFdOpenForWritingAsync(procRoot, pid, fdName)))
|
|
61
66
|
return null;
|
|
62
|
-
await access(target);
|
|
63
67
|
return { sessionId: match[1], filePath: target };
|
|
64
68
|
}
|
|
65
69
|
catch {
|
|
@@ -94,8 +98,12 @@ function fdFlagsAllowWriting(raw) {
|
|
|
94
98
|
return accessMode === 0o1 || accessMode === 0o2;
|
|
95
99
|
}
|
|
96
100
|
export async function resolveCodexTranscriptFromProcessLogs(pid, options = {}) {
|
|
101
|
+
const result = await lookupCodexTranscriptFromProcessLogs(pid, options);
|
|
102
|
+
return result.status === 'matched' ? result.source : null;
|
|
103
|
+
}
|
|
104
|
+
export async function lookupCodexTranscriptFromProcessLogs(pid, options = {}) {
|
|
97
105
|
if (!Number.isInteger(pid) || pid <= 0)
|
|
98
|
-
return
|
|
106
|
+
return UNAVAILABLE;
|
|
99
107
|
const homeDir = options.homeDir ?? os.homedir();
|
|
100
108
|
const logsDb = path.join(homeDir, '.codex', 'logs_2.sqlite');
|
|
101
109
|
const stateDb = path.join(homeDir, '.codex', 'state_5.sqlite');
|
|
@@ -103,82 +111,99 @@ export async function resolveCodexTranscriptFromProcessLogs(pid, options = {}) {
|
|
|
103
111
|
await Promise.all([access(logsDb), access(stateDb)]);
|
|
104
112
|
}
|
|
105
113
|
catch {
|
|
106
|
-
return
|
|
114
|
+
return UNAVAILABLE;
|
|
107
115
|
}
|
|
108
116
|
const processStartedAtSeconds = options.processStartedAtSeconds !== undefined
|
|
109
117
|
? options.processStartedAtSeconds
|
|
110
118
|
: await readProcessStartedAtSecondsAsync(pid);
|
|
111
119
|
if (processStartedAtSeconds === null)
|
|
112
|
-
return
|
|
120
|
+
return UNAVAILABLE;
|
|
113
121
|
const cacheKey = `${logsDb}:${pid}:${processStartedAtSeconds}`;
|
|
122
|
+
if (options.bypassCache) {
|
|
123
|
+
return lookupCodexTranscriptInProcessLogs(pid, logsDb, stateDb, processStartedAtSeconds, options.runSqlite);
|
|
124
|
+
}
|
|
114
125
|
const cached = processLogLookupCache.get(cacheKey);
|
|
115
126
|
if (cached)
|
|
116
127
|
return cached.value;
|
|
117
128
|
return processLogLookupInflight.run(cacheKey, async () => {
|
|
118
129
|
const source = await lookupCodexTranscriptInProcessLogs(pid, logsDb, stateDb, processStartedAtSeconds, options.runSqlite);
|
|
119
|
-
processLogLookupCache.set(cacheKey, source, source
|
|
130
|
+
processLogLookupCache.set(cacheKey, source, lookupTtl(source));
|
|
120
131
|
return source;
|
|
121
132
|
});
|
|
122
133
|
}
|
|
123
134
|
async function lookupCodexTranscriptInProcessLogs(pid, logsDb, stateDb, processStartedAtSeconds, runSqliteOverride) {
|
|
124
135
|
const output = await runProcessLogQuery(pid, logsDb, stateDb, processStartedAtSeconds, runSqliteOverride);
|
|
125
|
-
return output === null ?
|
|
136
|
+
return output === null ? UNAVAILABLE : parseProcessLogMatchesAsync(output);
|
|
126
137
|
}
|
|
127
138
|
async function parseProcessLogMatchesAsync(output) {
|
|
128
139
|
const matches = new Map();
|
|
140
|
+
const choices = new Map();
|
|
141
|
+
let unresolvedLastLog = -Infinity;
|
|
129
142
|
for (const line of output.split('\n')) {
|
|
130
143
|
const trimmed = line.trim();
|
|
131
144
|
if (!trimmed)
|
|
132
145
|
continue;
|
|
133
|
-
const [sessionId, filePath, lastTsRaw] = trimmed.split('\t');
|
|
146
|
+
const [sessionId, filePath, lastTsRaw, source] = trimmed.split('\t');
|
|
134
147
|
if (!sessionId || !filePath || !isSessionId(sessionId) || !isCodexRolloutPath(filePath, sessionId))
|
|
135
148
|
continue;
|
|
136
|
-
|
|
137
|
-
|
|
149
|
+
const lastLogSeconds = Number(lastTsRaw);
|
|
150
|
+
const normalized = Number.isFinite(lastLogSeconds) ? lastLogSeconds : 0;
|
|
151
|
+
const tui = source === 'vscode' ? await isTuiRollout(filePath, sessionId) : true;
|
|
152
|
+
const candidate = await describeCandidate({ provider: 'codex', sessionId, filePath }, undefined, tui === null ? 'unknown' : 'verified');
|
|
153
|
+
if (tui !== false && (!choices.has(sessionId) || choices.get(sessionId).seconds < normalized)) {
|
|
154
|
+
choices.set(sessionId, { candidate, seconds: normalized });
|
|
138
155
|
}
|
|
139
|
-
|
|
156
|
+
if (tui !== true || !candidate.readable) {
|
|
157
|
+
unresolvedLastLog = Math.max(unresolvedLastLog, normalized);
|
|
140
158
|
continue;
|
|
141
159
|
}
|
|
142
|
-
const lastLogSeconds = Number(lastTsRaw);
|
|
143
|
-
const normalized = Number.isFinite(lastLogSeconds) ? lastLogSeconds : 0;
|
|
144
160
|
const existing = matches.get(sessionId);
|
|
145
161
|
if (!existing || existing.lastLogSeconds < normalized) {
|
|
146
162
|
matches.set(sessionId, { filePath, lastLogSeconds: normalized });
|
|
147
163
|
}
|
|
148
164
|
}
|
|
165
|
+
const latest = Math.max(unresolvedLastLog, ...[...choices.values()].map(entry => entry.seconds));
|
|
166
|
+
const metadata = { candidates: [...choices.values()].filter(entry => entry.seconds === latest)
|
|
167
|
+
.slice(0, TRANSCRIPT_CANDIDATE_LIMIT).map(entry => entry.candidate) };
|
|
149
168
|
if (matches.size === 0)
|
|
150
|
-
return
|
|
169
|
+
return { ...(output.trim() ? PENDING : ABSENT), ...metadata };
|
|
151
170
|
const ranked = [...matches.entries()].sort((a, b) => b[1].lastLogSeconds - a[1].lastLogSeconds);
|
|
171
|
+
if (ranked[0][1].lastLogSeconds <= unresolvedLastLog)
|
|
172
|
+
return { ...PENDING, ...metadata };
|
|
152
173
|
if (ranked.length > 1 && ranked[0][1].lastLogSeconds <= ranked[1][1].lastLogSeconds)
|
|
153
|
-
return
|
|
174
|
+
return { ...AMBIGUOUS, ...metadata };
|
|
154
175
|
const [sessionId, entry] = ranked[0];
|
|
155
|
-
return { provider: 'codex', sessionId, filePath: entry.filePath };
|
|
176
|
+
return { status: 'matched', source: { provider: 'codex', sessionId, filePath: entry.filePath }, ...metadata };
|
|
156
177
|
}
|
|
157
178
|
async function runProcessLogQuery(pid, logsDb, stateDb, processStartedAtSeconds, runSqliteOverride) {
|
|
158
179
|
const minLogSeconds = Math.max(0, Math.floor(processStartedAtSeconds) - PROCESS_START_SKEW_SECONDS);
|
|
159
|
-
const sql = processLogSql(pid,
|
|
180
|
+
const sql = processLogSql(pid, minLogSeconds);
|
|
160
181
|
if (runSqliteOverride) {
|
|
161
|
-
|
|
182
|
+
try {
|
|
183
|
+
return await runSqliteOverride(logsDb, sql);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
162
188
|
}
|
|
163
189
|
try {
|
|
164
|
-
return
|
|
190
|
+
return await readSqlite(logsDb, sql, { attachments: { state: stateDb } });
|
|
165
191
|
}
|
|
166
192
|
catch {
|
|
167
193
|
return null;
|
|
168
194
|
}
|
|
169
195
|
}
|
|
170
|
-
function processLogSql(pid,
|
|
196
|
+
function processLogSql(pid, minLogSeconds) {
|
|
171
197
|
return [
|
|
172
|
-
|
|
173
|
-
'SELECT id
|
|
174
|
-
' SELECT t.id AS id, t.rollout_path AS rollout_path, (',
|
|
198
|
+
'SELECT id || char(9) || rollout_path || char(9) || last_ts || char(9) || source FROM (',
|
|
199
|
+
' SELECT t.id AS id, t.rollout_path AS rollout_path, t.source AS source, (',
|
|
175
200
|
' SELECT MAX(l.ts) FROM logs l',
|
|
176
201
|
' WHERE l.thread_id = t.id',
|
|
177
202
|
` AND l.ts >= ${minLogSeconds}`,
|
|
178
203
|
` AND l.process_uuid LIKE ${sqlString(`pid:${pid}:%`)}`,
|
|
179
204
|
' ) AS last_ts',
|
|
180
205
|
' FROM state.threads t',
|
|
181
|
-
" WHERE t.source
|
|
206
|
+
" WHERE t.source IN ('cli', 'vscode')",
|
|
182
207
|
" AND t.model_provider = 'openai'",
|
|
183
208
|
' AND t.rollout_path IS NOT NULL',
|
|
184
209
|
')',
|
|
@@ -193,35 +218,42 @@ function processLogSql(pid, stateDb, minLogSeconds) {
|
|
|
193
218
|
// following the TUI's unix socket to the daemon and narrowing the daemon's
|
|
194
219
|
// open rollouts to interactive threads started in the TUI's cwd.
|
|
195
220
|
export async function resolveCodexTranscriptFromDaemon(pid, options = {}) {
|
|
221
|
+
const result = await lookupCodexTranscriptFromDaemon(pid, options);
|
|
222
|
+
return result.status === 'matched' ? result.source : null;
|
|
223
|
+
}
|
|
224
|
+
export async function lookupCodexTranscriptFromDaemon(pid, options = {}) {
|
|
196
225
|
if (!Number.isInteger(pid) || pid <= 0)
|
|
197
|
-
return
|
|
226
|
+
return UNAVAILABLE;
|
|
198
227
|
const processStartedAtSeconds = options.processStartedAtSeconds !== undefined
|
|
199
228
|
? options.processStartedAtSeconds
|
|
200
229
|
: await readProcessStartedAtSecondsAsync(pid);
|
|
201
230
|
if (processStartedAtSeconds === null)
|
|
202
|
-
return
|
|
231
|
+
return UNAVAILABLE;
|
|
203
232
|
const procRoot = options.procRoot ?? '/proc';
|
|
204
|
-
const cacheKey = `${procRoot}:${pid}:${processStartedAtSeconds}`;
|
|
233
|
+
const cacheKey = `${options.homeDir ?? os.homedir()}:${procRoot}:${pid}:${processStartedAtSeconds}`;
|
|
205
234
|
const cached = daemonLookupCache.get(cacheKey);
|
|
206
235
|
if (cached)
|
|
207
236
|
return cached.value;
|
|
208
237
|
return daemonLookupInflight.run(cacheKey, async () => {
|
|
209
238
|
const source = await lookupCodexTranscriptInDaemon(pid, procRoot, options);
|
|
210
|
-
daemonLookupCache.set(cacheKey, source, source
|
|
239
|
+
daemonLookupCache.set(cacheKey, source, lookupTtl(source));
|
|
211
240
|
return source;
|
|
212
241
|
});
|
|
213
242
|
}
|
|
214
243
|
async function lookupCodexTranscriptInDaemon(pid, procRoot, options) {
|
|
215
244
|
const clientInodes = await listSocketInodes(procRoot, pid);
|
|
245
|
+
if (clientInodes === null)
|
|
246
|
+
return UNAVAILABLE;
|
|
216
247
|
if (clientInodes.size === 0)
|
|
217
|
-
return
|
|
218
|
-
const socketTable = await (options.readUnixSocketTable ?? readUnixSocketTable)();
|
|
248
|
+
return ABSENT;
|
|
249
|
+
const socketTable = await (options.readUnixSocketTable ?? readUnixSocketTable)().catch(() => null);
|
|
219
250
|
if (socketTable === null)
|
|
220
|
-
return
|
|
251
|
+
return UNAVAILABLE;
|
|
221
252
|
const daemonInodes = daemonPeerInodes(parseUnixSocketTable(socketTable), clientInodes);
|
|
222
253
|
if (daemonInodes.size === 0)
|
|
223
|
-
return
|
|
254
|
+
return ABSENT;
|
|
224
255
|
const daemonPids = await findProcessesOwningSockets(procRoot, daemonInodes);
|
|
256
|
+
const daemonBinding = await processBinding(procRoot, daemonPids);
|
|
225
257
|
const rollouts = new Map();
|
|
226
258
|
for (const daemonPid of daemonPids) {
|
|
227
259
|
for (const [sessionId, filePath] of await listOpenCodexRollouts(procRoot, daemonPid)) {
|
|
@@ -229,28 +261,47 @@ async function lookupCodexTranscriptInDaemon(pid, procRoot, options) {
|
|
|
229
261
|
}
|
|
230
262
|
}
|
|
231
263
|
if (rollouts.size === 0)
|
|
232
|
-
return
|
|
264
|
+
return PENDING;
|
|
233
265
|
const clientCwd = await readLinkOrNull(path.join(procRoot, String(pid), 'cwd'));
|
|
234
266
|
if (clientCwd === null)
|
|
235
|
-
return
|
|
236
|
-
const threadCwds = await readInteractiveThreadCwds(path.join(options.homeDir ?? os.homedir(), '.codex', 'state_5.sqlite'),
|
|
267
|
+
return PENDING;
|
|
268
|
+
const threadCwds = await readInteractiveThreadCwds(path.join(options.homeDir ?? os.homedir(), '.codex', 'state_5.sqlite'), rollouts, options.runSqlite);
|
|
237
269
|
if (threadCwds === null)
|
|
238
|
-
return
|
|
270
|
+
return PENDING;
|
|
239
271
|
const clientRealCwd = await realpathOrSelf(clientCwd);
|
|
240
272
|
const matching = [];
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
273
|
+
let unresolved = false;
|
|
274
|
+
for (const [sessionId, { cwd, verification }] of threadCwds) {
|
|
275
|
+
if (!cwd) {
|
|
276
|
+
unresolved = true;
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
if (cwd !== clientCwd && await realpathOrSelf(cwd) !== clientRealCwd)
|
|
280
|
+
continue;
|
|
281
|
+
if (matching.length === TRANSCRIPT_CANDIDATE_LIMIT) {
|
|
282
|
+
unresolved = true;
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
matching.push(await describeCandidate({ provider: 'codex', sessionId, filePath: rollouts.get(sessionId) }, cwd, verification));
|
|
286
|
+
}
|
|
287
|
+
// Launch args survive /new and /resume. They cannot disambiguate the
|
|
288
|
+
// conversations a shared daemon currently holds open in the same cwd.
|
|
289
|
+
if (daemonBinding !== await processBinding(procRoot, daemonPids))
|
|
290
|
+
return PENDING;
|
|
291
|
+
const metadata = {
|
|
292
|
+
candidates: matching.slice(0, TRANSCRIPT_CANDIDATE_LIMIT),
|
|
293
|
+
...(daemonBinding ? { binding: daemonBinding } : {})
|
|
294
|
+
};
|
|
295
|
+
if (matching.length > 1)
|
|
296
|
+
return { ...AMBIGUOUS, ...metadata };
|
|
297
|
+
if (unresolved)
|
|
298
|
+
return { ...PENDING, ...metadata };
|
|
299
|
+
if (matching.length === 0)
|
|
300
|
+
return PENDING;
|
|
301
|
+
const chosen = matching[0];
|
|
302
|
+
if (chosen.verification !== 'verified' || !chosen.readable)
|
|
303
|
+
return { ...PENDING, ...metadata };
|
|
304
|
+
return { status: 'matched', source: { provider: chosen.provider, sessionId: chosen.sessionId, filePath: chosen.filePath }, ...metadata };
|
|
254
305
|
}
|
|
255
306
|
// `ss -xn` rows: Netid State Recv-Q Send-Q <local addr> <inode> <peer addr> <peer inode>.
|
|
256
307
|
// The local address is the only field that can contain spaces, so the
|
|
@@ -302,7 +353,7 @@ async function listSocketInodes(procRoot, pid) {
|
|
|
302
353
|
fdNames = await readdir(fdDir);
|
|
303
354
|
}
|
|
304
355
|
catch {
|
|
305
|
-
return
|
|
356
|
+
return null;
|
|
306
357
|
}
|
|
307
358
|
const inodes = await mapWithConcurrency(fdNames, 16, async (fdName) => {
|
|
308
359
|
const match = SOCKET_FD_TARGET_PATTERN.exec((await readLinkOrNull(path.join(fdDir, fdName))) ?? '');
|
|
@@ -324,7 +375,7 @@ async function findProcessesOwningSockets(procRoot, inodes) {
|
|
|
324
375
|
const pid = Number(entry);
|
|
325
376
|
if (!isCodexAppServerArgs(await readCmdline(procRoot, pid)))
|
|
326
377
|
return null;
|
|
327
|
-
for (const inode of await listSocketInodes(procRoot, pid)) {
|
|
378
|
+
for (const inode of (await listSocketInodes(procRoot, pid)) ?? []) {
|
|
328
379
|
if (inodes.has(inode))
|
|
329
380
|
return pid;
|
|
330
381
|
}
|
|
@@ -336,24 +387,29 @@ function isCodexAppServerArgs(args) {
|
|
|
336
387
|
const first = args[0];
|
|
337
388
|
return first !== undefined && path.basename(first).toLowerCase() === 'codex' && args.includes('app-server');
|
|
338
389
|
}
|
|
339
|
-
async function readInteractiveThreadCwds(stateDb,
|
|
340
|
-
const ids =
|
|
390
|
+
async function readInteractiveThreadCwds(stateDb, rollouts, runSqliteOverride) {
|
|
391
|
+
const ids = [...rollouts.keys()].filter((sessionId) => isSessionId(sessionId));
|
|
341
392
|
if (ids.length === 0)
|
|
342
393
|
return new Map();
|
|
343
|
-
//
|
|
344
|
-
//
|
|
394
|
+
// Read all requested rows so known non-interactive threads can be excluded
|
|
395
|
+
// without confusing them with missing metadata. Verify vscode originators.
|
|
345
396
|
const sql = [
|
|
346
|
-
|
|
347
|
-
`
|
|
397
|
+
'SELECT id || char(9) || cwd || char(9) || source FROM threads',
|
|
398
|
+
`WHERE id IN (${ids.map(sqlString).join(', ')});`
|
|
348
399
|
].join('\n');
|
|
349
400
|
let output;
|
|
350
401
|
if (runSqliteOverride) {
|
|
351
|
-
|
|
402
|
+
try {
|
|
403
|
+
output = await runSqliteOverride(stateDb, sql);
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
output = null;
|
|
407
|
+
}
|
|
352
408
|
}
|
|
353
409
|
else {
|
|
354
410
|
try {
|
|
355
411
|
await access(stateDb);
|
|
356
|
-
output =
|
|
412
|
+
output = await readSqlite(stateDb, sql);
|
|
357
413
|
}
|
|
358
414
|
catch {
|
|
359
415
|
output = null;
|
|
@@ -362,17 +418,61 @@ async function readInteractiveThreadCwds(stateDb, sessionIds, runSqliteOverride)
|
|
|
362
418
|
if (output === null)
|
|
363
419
|
return null;
|
|
364
420
|
const cwds = new Map();
|
|
421
|
+
for (const id of ids)
|
|
422
|
+
cwds.set(id, { cwd: '', verification: 'unknown' });
|
|
365
423
|
for (const line of output.split('\n')) {
|
|
366
|
-
const
|
|
367
|
-
if (
|
|
424
|
+
const [sessionId, cwd, source] = line.split('\t');
|
|
425
|
+
if (!sessionId || !isSessionId(sessionId) || !cwd || !rollouts.has(sessionId))
|
|
368
426
|
continue;
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
427
|
+
if (source !== 'cli' && source !== 'vscode') {
|
|
428
|
+
cwds.delete(sessionId);
|
|
429
|
+
continue;
|
|
430
|
+
}
|
|
431
|
+
const tui = source === 'vscode' ? await isTuiRollout(rollouts.get(sessionId), sessionId) : true;
|
|
432
|
+
if (tui === false) {
|
|
433
|
+
cwds.delete(sessionId);
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
cwds.set(sessionId, { cwd, verification: tui === null ? 'unknown' : 'verified' });
|
|
373
437
|
}
|
|
374
438
|
return cwds;
|
|
375
439
|
}
|
|
440
|
+
async function isTuiRollout(filePath, sessionId) {
|
|
441
|
+
try {
|
|
442
|
+
const file = await open(filePath, 'r');
|
|
443
|
+
try {
|
|
444
|
+
// Only session_meta is needed; never read an entire conversation.
|
|
445
|
+
const buffer = Buffer.alloc(64 * 1024);
|
|
446
|
+
const chunks = [];
|
|
447
|
+
for (let offset = 0; offset < 512 * 1024;) {
|
|
448
|
+
const { bytesRead } = await file.read(buffer, 0, buffer.length, offset);
|
|
449
|
+
if (bytesRead === 0)
|
|
450
|
+
return null;
|
|
451
|
+
const newline = buffer.subarray(0, bytesRead).indexOf(10);
|
|
452
|
+
chunks.push(Buffer.from(buffer.subarray(0, newline === -1 ? bytesRead : newline)));
|
|
453
|
+
if (newline !== -1) {
|
|
454
|
+
const row = JSON.parse(Buffer.concat(chunks).toString('utf8'));
|
|
455
|
+
if (row?.type !== 'session_meta' || row.payload?.id !== sessionId)
|
|
456
|
+
return null;
|
|
457
|
+
if (row.payload.source === 'cli')
|
|
458
|
+
return true;
|
|
459
|
+
if (row.payload.source === undefined)
|
|
460
|
+
return null;
|
|
461
|
+
return row.payload.originator === 'codex-tui' &&
|
|
462
|
+
(row.payload.source === 'cli' || row.payload.source === 'vscode');
|
|
463
|
+
}
|
|
464
|
+
offset += bytesRead;
|
|
465
|
+
}
|
|
466
|
+
return null;
|
|
467
|
+
}
|
|
468
|
+
finally {
|
|
469
|
+
await file.close();
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
catch {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
376
476
|
async function readCmdline(procRoot, pid) {
|
|
377
477
|
try {
|
|
378
478
|
return (await readFile(path.join(procRoot, String(pid), 'cmdline'), 'utf8')).split('\0').filter(Boolean);
|
|
@@ -401,6 +501,104 @@ function isCodexRolloutPath(filePath, sessionId) {
|
|
|
401
501
|
const base = path.basename(filePath);
|
|
402
502
|
return base.startsWith('rollout-') && base.endsWith(`${sessionId}.jsonl`);
|
|
403
503
|
}
|
|
504
|
+
async function rolloutReadable(filePath) {
|
|
505
|
+
try {
|
|
506
|
+
const file = await open(filePath, 'r');
|
|
507
|
+
try {
|
|
508
|
+
return (await file.stat()).isFile();
|
|
509
|
+
}
|
|
510
|
+
finally {
|
|
511
|
+
await file.close();
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
catch {
|
|
515
|
+
return false;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
async function describeCandidate(source, cwd, verification = 'verified') {
|
|
519
|
+
const readable = await rolloutReadable(source.filePath);
|
|
520
|
+
let updatedAt;
|
|
521
|
+
try {
|
|
522
|
+
updatedAt = (await stat(source.filePath)).mtime.toISOString();
|
|
523
|
+
}
|
|
524
|
+
catch { /* Retain unavailable peers. */ }
|
|
525
|
+
return { ...source, ...(cwd ? { cwd } : {}), ...(updatedAt ? { updatedAt } : {}), verification, readable };
|
|
526
|
+
}
|
|
527
|
+
// Uses raw start ticks, avoiding clock conversion and any external command.
|
|
528
|
+
export async function processBinding(procRoot, pids) {
|
|
529
|
+
const identities = [];
|
|
530
|
+
for (const pid of [...new Set(pids)].sort((a, b) => a - b)) {
|
|
531
|
+
try {
|
|
532
|
+
const raw = await readFile(path.join(procRoot, String(pid), 'stat'), 'utf8');
|
|
533
|
+
const close = raw.lastIndexOf(')');
|
|
534
|
+
const ticks = close < 0 ? undefined : raw.slice(close + 2).trim().split(/\s+/)[19];
|
|
535
|
+
if (!ticks || !/^\d+$/.test(ticks))
|
|
536
|
+
return null;
|
|
537
|
+
identities.push(`${pid}:${ticks}`);
|
|
538
|
+
}
|
|
539
|
+
catch {
|
|
540
|
+
return null;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
return identities.length ? identities.join(',') : null;
|
|
544
|
+
}
|
|
545
|
+
export async function lookupCodexTranscriptFromOpenFds(pid, options = {}) {
|
|
546
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
547
|
+
return UNAVAILABLE;
|
|
548
|
+
const procRoot = options.procRoot ?? '/proc';
|
|
549
|
+
const opened = await listOpenCodexRollouts(procRoot, pid);
|
|
550
|
+
// A parent holds its subagents' rollouts too. Exclude only records whose
|
|
551
|
+
// metadata identifies a non-interactive source; unknown peers stay ambiguous.
|
|
552
|
+
const classified = await mapWithConcurrency([...opened.entries()], 8, async ([sessionId, filePath]) => ({
|
|
553
|
+
sessionId, filePath, tui: await isTuiRollout(filePath, sessionId)
|
|
554
|
+
}));
|
|
555
|
+
const rollouts = classified.filter(entry => entry.tui !== false);
|
|
556
|
+
if (rollouts.length === 0)
|
|
557
|
+
return ABSENT;
|
|
558
|
+
const cwd = await readLinkOrNull(path.join(procRoot, String(pid), 'cwd'));
|
|
559
|
+
const candidates = await mapWithConcurrency(rollouts.slice(0, TRANSCRIPT_CANDIDATE_LIMIT), 8, ({ sessionId, filePath, tui }) => describeCandidate({ provider: 'codex', sessionId, filePath }, cwd ?? undefined, tui === null ? 'unknown' : 'verified'));
|
|
560
|
+
if (rollouts.length > 1)
|
|
561
|
+
return { ...AMBIGUOUS, candidates };
|
|
562
|
+
const source = candidates[0];
|
|
563
|
+
return source.readable ? { status: 'matched', source, candidates } : { ...PENDING, candidates };
|
|
564
|
+
}
|
|
565
|
+
// Pre-connection failure is not evidence against the independent PID log.
|
|
566
|
+
// Post-connection failures are PENDING and must never reach launch argv.
|
|
567
|
+
export async function lookupCodexTranscriptFromDaemonOrLogs(pid, options = {}) {
|
|
568
|
+
const daemon = await lookupCodexTranscriptFromDaemon(pid, options);
|
|
569
|
+
return daemon.status === 'absent' || daemon.status === 'unavailable'
|
|
570
|
+
? lookupCodexTranscriptFromProcessLogs(pid, options) : daemon;
|
|
571
|
+
}
|
|
572
|
+
export async function resolveCodexTranscriptCandidates(pid, options = {}) {
|
|
573
|
+
const empty = { binding: '', candidates: [] };
|
|
574
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
575
|
+
return empty;
|
|
576
|
+
const procRoot = options.procRoot ?? '/proc';
|
|
577
|
+
const binding = await processBinding(procRoot, [pid]);
|
|
578
|
+
if (!binding)
|
|
579
|
+
return empty;
|
|
580
|
+
const cwd = await readLinkOrNull(path.join(procRoot, String(pid), 'cwd'));
|
|
581
|
+
let result = await lookupCodexTranscriptFromOpenFds(pid, options);
|
|
582
|
+
if (result.status === 'absent') {
|
|
583
|
+
// Selection requests always inspect current sockets/FDs, not the TTL cache.
|
|
584
|
+
result = await lookupCodexTranscriptInDaemon(pid, procRoot, options);
|
|
585
|
+
if (result.status === 'absent' || result.status === 'unavailable') {
|
|
586
|
+
result = await lookupCodexTranscriptFromProcessLogs(pid, { ...options, bypassCache: true });
|
|
587
|
+
}
|
|
588
|
+
else if (!result.binding) {
|
|
589
|
+
return { binding, candidates: [] };
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
const candidates = result.candidates ?? (result.status === 'matched'
|
|
593
|
+
? [await describeCandidate(result.source, cwd ?? undefined)] : []);
|
|
594
|
+
if (binding !== await processBinding(procRoot, [pid]) ||
|
|
595
|
+
cwd !== await readLinkOrNull(path.join(procRoot, String(pid), 'cwd')))
|
|
596
|
+
return empty;
|
|
597
|
+
return {
|
|
598
|
+
binding: `${binding}${result.binding ? `|daemon:${result.binding}` : ''}`,
|
|
599
|
+
candidates: candidates.map(candidate => ({ ...candidate, ...(!candidate.cwd && cwd ? { cwd } : {}) }))
|
|
600
|
+
};
|
|
601
|
+
}
|
|
404
602
|
export function sqlString(value) {
|
|
405
603
|
return `'${value.replace(/'/g, "''")}'`;
|
|
406
604
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codexTranscriptSource.js","sourceRoot":"","sources":["../../../src/server/terminal/codexTranscriptSource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codexTranscriptSource.js","sourceRoot":"","sources":["../../../src/server/terminal/codexTranscriptSource.ts"],"names":[],"mappings":"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"}
|