@keyou007/agent-bot 0.1.18-alpha.0 → 0.1.18-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/codex/CodexRuntime.js +66 -1
- package/dist/codex/CodexRuntime.js.map +1 -1
- package/dist/feishu/FeishuConnector.js +7 -1
- package/dist/feishu/FeishuConnector.js.map +1 -1
- package/dist/proxy/ProxySessionController.js +70 -15
- package/dist/proxy/ProxySessionController.js.map +1 -1
- package/dist/shell/ShellCommandJobManager.js +33 -0
- package/dist/shell/ShellCommandJobManager.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/src/codex/CodexRuntime.ts +94 -5
- package/src/feishu/FeishuConnector.ts +5 -2
- package/src/proxy/ProxySessionController.ts +74 -15
- package/src/shell/ShellCommandJobManager.ts +30 -0
|
@@ -15,6 +15,7 @@ export class ShellCommandJobManager {
|
|
|
15
15
|
jobsRoot;
|
|
16
16
|
runnerEntry;
|
|
17
17
|
spawnRunner;
|
|
18
|
+
jobIdByCardMessageId = new Map();
|
|
18
19
|
constructor(jobsRoot, options = {}) {
|
|
19
20
|
this.jobsRoot = jobsRoot;
|
|
20
21
|
this.runnerEntry = options.runnerEntry ?? resolveRunnerEntry();
|
|
@@ -42,8 +43,40 @@ export class ShellCommandJobManager {
|
|
|
42
43
|
const jobDirectory = this.jobDirectory(jobId);
|
|
43
44
|
const spec = await readJson(path.join(jobDirectory, JOB_SPEC_FILE));
|
|
44
45
|
await writeJsonAtomic(path.join(jobDirectory, JOB_SPEC_FILE), { ...spec, cardMessageId });
|
|
46
|
+
this.jobIdByCardMessageId.set(cardMessageId, jobId);
|
|
45
47
|
return this.readJob(jobId);
|
|
46
48
|
}
|
|
49
|
+
async findJobByCardMessageId(cardMessageId) {
|
|
50
|
+
const cachedJobId = this.jobIdByCardMessageId.get(cardMessageId);
|
|
51
|
+
if (cachedJobId) {
|
|
52
|
+
try {
|
|
53
|
+
return await this.readJob(cachedJobId);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
this.jobIdByCardMessageId.delete(cardMessageId);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const entries = await fs.readdir(this.jobsRoot, { withFileTypes: true }).catch((error) => {
|
|
60
|
+
if (error.code === "ENOENT")
|
|
61
|
+
return [];
|
|
62
|
+
throw error;
|
|
63
|
+
});
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
if (!entry.isDirectory())
|
|
66
|
+
continue;
|
|
67
|
+
try {
|
|
68
|
+
const spec = await readJson(path.join(this.jobsRoot, entry.name, JOB_SPEC_FILE));
|
|
69
|
+
if (spec.cardMessageId)
|
|
70
|
+
this.jobIdByCardMessageId.set(spec.cardMessageId, spec.id);
|
|
71
|
+
if (spec.cardMessageId === cardMessageId)
|
|
72
|
+
return this.readJob(spec.id);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Ignore partially written or unrelated job directories while rebuilding the card index.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
47
80
|
async startJob(jobId) {
|
|
48
81
|
const jobDirectory = this.jobDirectory(jobId);
|
|
49
82
|
await this.spawnRunner(this.runnerEntry, jobDirectory);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShellCommandJobManager.js","sourceRoot":"","sources":["../../src/shell/ShellCommandJobManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ShellCommandJobManager.js","sourceRoot":"","sources":["../../src/shell/ShellCommandJobManager.ts"],"names":[],"mappings":"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"}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keyou007/agent-bot",
|
|
3
|
-
"version": "0.1.18-alpha.
|
|
3
|
+
"version": "0.1.18-alpha.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@keyou007/agent-bot",
|
|
9
|
-
"version": "0.1.18-alpha.
|
|
9
|
+
"version": "0.1.18-alpha.2",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@agentclientprotocol/sdk": "1.2.1",
|
package/package.json
CHANGED
|
@@ -39,6 +39,7 @@ const WINDOWS_SCREENSHOT_DEVELOPER_INSTRUCTIONS = [
|
|
|
39
39
|
const SESSION_REQUEST_TIMEOUT_MS = 60_000;
|
|
40
40
|
const CONTROL_REQUEST_TIMEOUT_MS = 10_000;
|
|
41
41
|
const SYNC_REQUEST_TIMEOUT_MS = 5_000;
|
|
42
|
+
const THREAD_TURN_PAGE_SIZE = 100;
|
|
42
43
|
// A timed-out fork keeps running in App Server and can create an orphan thread.
|
|
43
44
|
// Wait for its response; connection closure still rejects the request.
|
|
44
45
|
const FORK_REQUEST_TIMEOUT_MS = 0;
|
|
@@ -291,11 +292,8 @@ export class CodexRuntime implements AgentRuntime {
|
|
|
291
292
|
}
|
|
292
293
|
|
|
293
294
|
async readRemoteSession(remoteSessionId: string): Promise<RemoteSessionSummary> {
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
{ threadId: remoteSessionId, includeTurns: true },
|
|
297
|
-
SYNC_REQUEST_TIMEOUT_MS,
|
|
298
|
-
);
|
|
295
|
+
const client = await this.client();
|
|
296
|
+
const response = await this.readThreadWithTurns(client, remoteSessionId);
|
|
299
297
|
const summary = remoteSessionSummary(response.thread);
|
|
300
298
|
const activeThreads = await this.localActivityDetector?.activeThreads([remoteSessionId]);
|
|
301
299
|
const activeSummary = activeThreads ? markLocallyDetectedActive(summary, activeThreads) : summary;
|
|
@@ -306,6 +304,71 @@ export class CodexRuntime implements AgentRuntime {
|
|
|
306
304
|
};
|
|
307
305
|
}
|
|
308
306
|
|
|
307
|
+
private async readThreadWithTurns(
|
|
308
|
+
client: AppServerClient,
|
|
309
|
+
remoteSessionId: string,
|
|
310
|
+
): Promise<ThreadReadResponse> {
|
|
311
|
+
try {
|
|
312
|
+
return await client.request<ThreadReadResponse>(
|
|
313
|
+
"thread/read",
|
|
314
|
+
{ threadId: remoteSessionId, includeTurns: true },
|
|
315
|
+
SYNC_REQUEST_TIMEOUT_MS,
|
|
316
|
+
);
|
|
317
|
+
} catch (error) {
|
|
318
|
+
const paginated = isPaginatedThreadReadError(error);
|
|
319
|
+
if (!paginated && !isUnmaterializedThreadReadError(error)) throw error;
|
|
320
|
+
|
|
321
|
+
const metadata = await client.request<ThreadReadResponse>(
|
|
322
|
+
"thread/read",
|
|
323
|
+
{ threadId: remoteSessionId, includeTurns: false },
|
|
324
|
+
SYNC_REQUEST_TIMEOUT_MS,
|
|
325
|
+
);
|
|
326
|
+
if (!paginated) return { thread: { ...metadata.thread, turns: [] } };
|
|
327
|
+
|
|
328
|
+
return {
|
|
329
|
+
thread: {
|
|
330
|
+
...metadata.thread,
|
|
331
|
+
turns: await this.listThreadTurns(client, remoteSessionId),
|
|
332
|
+
},
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
private async listThreadTurns(
|
|
338
|
+
client: AppServerClient,
|
|
339
|
+
remoteSessionId: string,
|
|
340
|
+
): Promise<CodexTurnSnapshot[]> {
|
|
341
|
+
const turns: CodexTurnSnapshot[] = [];
|
|
342
|
+
const seenCursors = new Set<string>();
|
|
343
|
+
let cursor: string | undefined;
|
|
344
|
+
do {
|
|
345
|
+
const response = await client.request<ThreadTurnsListResponse>(
|
|
346
|
+
"thread/turns/list",
|
|
347
|
+
{
|
|
348
|
+
threadId: remoteSessionId,
|
|
349
|
+
...(cursor ? { cursor } : {}),
|
|
350
|
+
limit: THREAD_TURN_PAGE_SIZE,
|
|
351
|
+
sortDirection: "asc",
|
|
352
|
+
itemsView: "full",
|
|
353
|
+
},
|
|
354
|
+
SYNC_REQUEST_TIMEOUT_MS,
|
|
355
|
+
);
|
|
356
|
+
turns.push(...response.data);
|
|
357
|
+
const nextCursor = response.nextCursor ?? undefined;
|
|
358
|
+
if (!nextCursor) break;
|
|
359
|
+
if (seenCursors.has(nextCursor)) {
|
|
360
|
+
this.logger.warn(
|
|
361
|
+
{ remoteSessionId, cursor: nextCursor },
|
|
362
|
+
"App Server repeated a thread Turn pagination cursor; stopping pagination.",
|
|
363
|
+
);
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
seenCursors.add(nextCursor);
|
|
367
|
+
cursor = nextCursor;
|
|
368
|
+
} while (cursor);
|
|
369
|
+
return turns;
|
|
370
|
+
}
|
|
371
|
+
|
|
309
372
|
async inspectRemoteSessionActivity(remoteSessionId: string): Promise<RemoteSessionActivity> {
|
|
310
373
|
const [response, activeThreads] = await Promise.all([
|
|
311
374
|
(await this.client()).request<ThreadReadResponse>(
|
|
@@ -984,6 +1047,11 @@ interface ThreadListResponse {
|
|
|
984
1047
|
nextCursor?: string | null;
|
|
985
1048
|
}
|
|
986
1049
|
|
|
1050
|
+
interface ThreadTurnsListResponse {
|
|
1051
|
+
data: CodexTurnSnapshot[];
|
|
1052
|
+
nextCursor?: string | null;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
987
1055
|
interface CodexThreadSnapshot {
|
|
988
1056
|
id: string;
|
|
989
1057
|
name?: string | null;
|
|
@@ -1119,6 +1187,27 @@ function isUnsupportedRecencySortError(error: unknown): boolean {
|
|
|
1119
1187
|
&& /unknown|unrecognized|unexpected|unsupported|not supported|invalid/i.test(details);
|
|
1120
1188
|
}
|
|
1121
1189
|
|
|
1190
|
+
function isPaginatedThreadReadError(error: unknown): boolean {
|
|
1191
|
+
const details = appServerErrorDetails(error);
|
|
1192
|
+
return /paginated threads?[^\n]*do(?:es)? not support[^\n]*thread\/read[^\n]*includeTurns\s*=\s*true/i.test(details);
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
function isUnmaterializedThreadReadError(error: unknown): boolean {
|
|
1196
|
+
const details = appServerErrorDetails(error);
|
|
1197
|
+
return /thread[^\n]*(?:not materialized|not loaded)[^\n]*includeTurns[^\n]*(?:unavailable|before first user message)/i
|
|
1198
|
+
.test(details);
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
function appServerErrorDetails(error: unknown): string {
|
|
1202
|
+
if (!(error instanceof AppServerRequestError)) return error instanceof Error ? error.message : String(error);
|
|
1203
|
+
const data = typeof error.data === "string"
|
|
1204
|
+
? error.data
|
|
1205
|
+
: error.data === undefined
|
|
1206
|
+
? ""
|
|
1207
|
+
: JSON.stringify(error.data);
|
|
1208
|
+
return `${error.message} ${error.serverMessage} ${data}`;
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1122
1211
|
function remoteSessionSummary(thread: CodexThreadSnapshot): RemoteSessionSummary {
|
|
1123
1212
|
const lastTurn = thread.turns?.at(-1);
|
|
1124
1213
|
const lastCompletedTurn = [...(thread.turns ?? [])]
|
|
@@ -284,8 +284,11 @@ function toIncomingMessage(
|
|
|
284
284
|
}
|
|
285
285
|
|
|
286
286
|
function mentionsOpenId(value: unknown, openId: string): boolean {
|
|
287
|
-
return Array.isArray(value) && value.some((mention) =>
|
|
288
|
-
isRecord(mention)
|
|
287
|
+
return Array.isArray(value) && value.some((mention) => {
|
|
288
|
+
if (!isRecord(mention)) return false;
|
|
289
|
+
if (mention.id === openId || mention.open_id === openId) return true;
|
|
290
|
+
return isRecord(mention.id) && mention.id.open_id === openId;
|
|
291
|
+
});
|
|
289
292
|
}
|
|
290
293
|
|
|
291
294
|
function parseMessageContent(
|
|
@@ -2817,10 +2817,35 @@ export class ProxySessionController {
|
|
|
2817
2817
|
if (!runtime.readRemoteSession && !source) {
|
|
2818
2818
|
throw new Error("当前 App Server Agent 不支持读取指定任务。");
|
|
2819
2819
|
}
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
: undefined
|
|
2823
|
-
|
|
2820
|
+
const persistedCompletedTurns = source ? this.localForkCompletedTurns(source) : [];
|
|
2821
|
+
const sourceLastSnapshot = turnViewSnapshot(
|
|
2822
|
+
source?.lastTurnId ? this.store.getTurnSnapshot(source.lastTurnId) : undefined,
|
|
2823
|
+
);
|
|
2824
|
+
const localCompletedTurns = persistedCompletedTurns.length > 0
|
|
2825
|
+
? persistedCompletedTurns
|
|
2826
|
+
: source?.lastTurnId
|
|
2827
|
+
&& (source.lastTurnStatus === "completed" || sourceLastSnapshot?.status === "completed")
|
|
2828
|
+
? [{
|
|
2829
|
+
id: source.lastTurnId,
|
|
2830
|
+
prompt: latestUserPromptFromTurnView(sourceLastSnapshot) ?? source.title,
|
|
2831
|
+
startedAt: sourceLastSnapshot?.startedAt ?? parseIsoTimestamp(source.updatedAt),
|
|
2832
|
+
completedAt: sourceLastSnapshot?.completedAt
|
|
2833
|
+
?? sourceLastSnapshot?.startedAt
|
|
2834
|
+
?? parseIsoTimestamp(source.updatedAt),
|
|
2835
|
+
}]
|
|
2836
|
+
: [];
|
|
2837
|
+
if (!remote && runtime.readRemoteSession && (!source || persistedCompletedTurns.length === 0)) {
|
|
2838
|
+
try {
|
|
2839
|
+
remote = await runtime.readRemoteSession(remoteSessionId);
|
|
2840
|
+
} catch (error) {
|
|
2841
|
+
if (localCompletedTurns.length === 0) throw error;
|
|
2842
|
+
this.logger.warn(
|
|
2843
|
+
{ error, contextKey, remoteSessionId, sourceTurnId: localCompletedTurns.at(-1)?.id },
|
|
2844
|
+
"Failed to read the complete source task before Fork; using the locally persisted completed Turn.",
|
|
2845
|
+
);
|
|
2846
|
+
}
|
|
2847
|
+
}
|
|
2848
|
+
const latestTurnId = remote?.lastTurnId ?? source?.lastTurnId ?? localCompletedTurns.at(-1)?.id;
|
|
2824
2849
|
const latestSnapshot = turnViewSnapshot(latestTurnId ? this.store.getTurnSnapshot(latestTurnId) : undefined);
|
|
2825
2850
|
const isRunning = remote
|
|
2826
2851
|
? isRemoteSessionActive(remote)
|
|
@@ -2829,7 +2854,9 @@ export class ProxySessionController {
|
|
|
2829
2854
|
|| source?.lastTurnStatus === "running"
|
|
2830
2855
|
|| isTurnStillRunning(latestSnapshot?.status),
|
|
2831
2856
|
);
|
|
2832
|
-
const lastTurnId =
|
|
2857
|
+
const lastTurnId = remote?.lastCompletedTurnId
|
|
2858
|
+
?? (remote?.lastTurnStatus === "completed" ? remote.lastTurnId : undefined)
|
|
2859
|
+
?? localCompletedTurns.at(-1)?.id;
|
|
2833
2860
|
if (!lastTurnId) {
|
|
2834
2861
|
if (isRunning) {
|
|
2835
2862
|
throw new Error(`${sourceLabel}正在执行,且还没有已完成轮次可供 fork。请等待当前轮次完成后重试。`);
|
|
@@ -2837,7 +2864,9 @@ export class ProxySessionController {
|
|
|
2837
2864
|
throw new Error(`${sourceLabel}还没有可供 fork 的轮次。请先完成至少一轮对话。`);
|
|
2838
2865
|
}
|
|
2839
2866
|
const snapshot = turnViewSnapshot(this.store.getTurnSnapshot(lastTurnId));
|
|
2840
|
-
const forkedFromHistoricalTurn =
|
|
2867
|
+
const forkedFromHistoricalTurn = lastTurnId !== latestTurnId;
|
|
2868
|
+
const completedTurn = (remote?.completedTurns ?? localCompletedTurns)
|
|
2869
|
+
.find((turn) => turn.id === lastTurnId);
|
|
2841
2870
|
|
|
2842
2871
|
const cwd = remote?.cwd || source?.cwd;
|
|
2843
2872
|
if (!cwd) throw new Error("指定的 App Server 任务没有可用的工作目录,暂时不能 fork。");
|
|
@@ -2849,6 +2878,7 @@ export class ProxySessionController {
|
|
|
2849
2878
|
const permissionMode = source?.permissionMode ?? "auto";
|
|
2850
2879
|
const sourceTurnPrompt = truncateText(
|
|
2851
2880
|
latestUserPromptFromTurnView(snapshot)
|
|
2881
|
+
?? completedTurn?.prompt
|
|
2852
2882
|
?? (lastTurnId === latestTurnId ? remote?.lastUserPrompt : undefined)
|
|
2853
2883
|
?? remote?.preview
|
|
2854
2884
|
?? source?.title
|
|
@@ -2858,6 +2888,8 @@ export class ProxySessionController {
|
|
|
2858
2888
|
);
|
|
2859
2889
|
const sourceTurnCompletedAt = snapshot?.completedAt
|
|
2860
2890
|
?? snapshot?.startedAt
|
|
2891
|
+
?? completedTurn?.completedAt
|
|
2892
|
+
?? completedTurn?.startedAt
|
|
2861
2893
|
?? (lastTurnId === latestTurnId
|
|
2862
2894
|
? latestRemoteTimestamp(remote?.recencyAt, remote?.updatedAt)
|
|
2863
2895
|
: undefined)
|
|
@@ -2876,20 +2908,33 @@ export class ProxySessionController {
|
|
|
2876
2908
|
model,
|
|
2877
2909
|
reasoningEffort,
|
|
2878
2910
|
permissionMode,
|
|
2879
|
-
lastTurnStatus:
|
|
2880
|
-
? "completed"
|
|
2881
|
-
: mapRemoteTurnStatus(remote?.lastTurnStatus)
|
|
2882
|
-
?? forkedTurnStatus(snapshot?.status)
|
|
2883
|
-
?? source?.lastTurnStatus,
|
|
2911
|
+
lastTurnStatus: "completed",
|
|
2884
2912
|
sourceTurnPrompt,
|
|
2885
2913
|
sourceTurnStartedAt: snapshot?.startedAt ?? sourceTurnCompletedAt,
|
|
2886
2914
|
sourceTurnCompletedAt,
|
|
2887
|
-
sourceCompletedTurns: remote?.completedTurns
|
|
2915
|
+
sourceCompletedTurns: remote?.completedTurns
|
|
2916
|
+
?? (persistedCompletedTurns.length > 0 ? [] : localCompletedTurns),
|
|
2888
2917
|
sourceWasRunning: isRunning,
|
|
2889
2918
|
forkedFromHistoricalTurn,
|
|
2890
2919
|
};
|
|
2891
2920
|
}
|
|
2892
2921
|
|
|
2922
|
+
private localForkCompletedTurns(source: SessionRecord): RemoteCompletedTurnSummary[] {
|
|
2923
|
+
return this.store.listTaskTurnGraph(source.localSessionId)
|
|
2924
|
+
.slice()
|
|
2925
|
+
.reverse()
|
|
2926
|
+
.map((record) => {
|
|
2927
|
+
const snapshot = turnViewSnapshot(record.snapshot);
|
|
2928
|
+
const startedAt = snapshot?.startedAt ?? parseIsoTimestamp(record.updatedAt);
|
|
2929
|
+
return {
|
|
2930
|
+
id: record.turnId,
|
|
2931
|
+
prompt: latestUserPromptFromTurnView(snapshot),
|
|
2932
|
+
startedAt,
|
|
2933
|
+
completedAt: snapshot?.completedAt ?? startedAt,
|
|
2934
|
+
};
|
|
2935
|
+
});
|
|
2936
|
+
}
|
|
2937
|
+
|
|
2893
2938
|
private async prepareForkGroupSession(
|
|
2894
2939
|
contextKey: string,
|
|
2895
2940
|
requestedTitle: string | undefined,
|
|
@@ -4965,7 +5010,7 @@ export class ProxySessionController {
|
|
|
4965
5010
|
sourceMessageId?: string,
|
|
4966
5011
|
incomingMessage?: IncomingMessage,
|
|
4967
5012
|
): Promise<void> {
|
|
4968
|
-
const cwd = this.shellCommandCwd(contextKey, incomingMessage);
|
|
5013
|
+
const cwd = await this.shellCommandCwd(contextKey, incomingMessage);
|
|
4969
5014
|
const created = await this.shellCommandJobs.createJob({ contextKey, sourceMessageId, command, cwd });
|
|
4970
5015
|
let cardMessageId: string | undefined;
|
|
4971
5016
|
const initialState: ShellCommandCardView = {
|
|
@@ -5011,12 +5056,13 @@ export class ProxySessionController {
|
|
|
5011
5056
|
}
|
|
5012
5057
|
}
|
|
5013
5058
|
|
|
5014
|
-
private shellCommandCwd(contextKey: string, incomingMessage?: IncomingMessage): string {
|
|
5059
|
+
private async shellCommandCwd(contextKey: string, incomingMessage?: IncomingMessage): Promise<string> {
|
|
5015
5060
|
const current = this.currentSession(contextKey);
|
|
5016
5061
|
if (current) return current.cwd;
|
|
5017
5062
|
|
|
5018
5063
|
if (incomingMessage?.threadContext) {
|
|
5019
|
-
const
|
|
5064
|
+
const anchorMessageIds = threadForkAnchorMessageIds(incomingMessage);
|
|
5065
|
+
const anchor = anchorMessageIds
|
|
5020
5066
|
.map((messageId) => this.store.findTurnAnchorByMessageId(messageId))
|
|
5021
5067
|
.find((candidate) => candidate !== undefined);
|
|
5022
5068
|
const source = anchor?.contextKey
|
|
@@ -5028,6 +5074,19 @@ export class ProxySessionController {
|
|
|
5028
5074
|
if (source && sourceContextKey && baseChatContextKey(sourceContextKey) === baseChatContextKey(contextKey)) {
|
|
5029
5075
|
return source.cwd;
|
|
5030
5076
|
}
|
|
5077
|
+
|
|
5078
|
+
for (const messageId of anchorMessageIds) {
|
|
5079
|
+
const commandJob = await this.shellCommandJobs.findJobByCardMessageId(messageId);
|
|
5080
|
+
if (commandJob && baseChatContextKey(commandJob.contextKey) === baseChatContextKey(contextKey)) {
|
|
5081
|
+
return commandJob.cwd;
|
|
5082
|
+
}
|
|
5083
|
+
}
|
|
5084
|
+
|
|
5085
|
+
const baseContextKey = baseChatContextKey(contextKey);
|
|
5086
|
+
const baseSession = this.currentSession(baseContextKey);
|
|
5087
|
+
if (baseSession) return baseSession.cwd;
|
|
5088
|
+
const boundProjectCwd = this.store.getUserContext(baseContextKey)?.boundProjectCwd;
|
|
5089
|
+
if (boundProjectCwd) return boundProjectCwd;
|
|
5031
5090
|
}
|
|
5032
5091
|
|
|
5033
5092
|
return this.config.defaults.cwd;
|
|
@@ -52,6 +52,7 @@ export interface ShellCommandJobSnapshot extends ShellCommandJobSpec, Omit<Shell
|
|
|
52
52
|
export interface ShellCommandJobManagerLike {
|
|
53
53
|
createJob(input: Pick<ShellCommandJobSpec, "contextKey" | "sourceMessageId" | "command" | "cwd">): Promise<ShellCommandJobSnapshot>;
|
|
54
54
|
bindCard(jobId: string, cardMessageId: string): Promise<ShellCommandJobSnapshot>;
|
|
55
|
+
findJobByCardMessageId(cardMessageId: string): Promise<ShellCommandJobSnapshot | undefined>;
|
|
55
56
|
startJob(jobId: string): Promise<void>;
|
|
56
57
|
failJob(jobId: string, error: string): Promise<void>;
|
|
57
58
|
readJob(jobId: string): Promise<ShellCommandJobSnapshot>;
|
|
@@ -68,6 +69,7 @@ export interface ShellCommandJobManagerOptions {
|
|
|
68
69
|
export class ShellCommandJobManager implements ShellCommandJobManagerLike {
|
|
69
70
|
private readonly runnerEntry: string;
|
|
70
71
|
private readonly spawnRunner: (entry: string, jobDirectory: string) => Promise<void>;
|
|
72
|
+
private readonly jobIdByCardMessageId = new Map<string, string>();
|
|
71
73
|
|
|
72
74
|
constructor(
|
|
73
75
|
private readonly jobsRoot: string,
|
|
@@ -102,9 +104,37 @@ export class ShellCommandJobManager implements ShellCommandJobManagerLike {
|
|
|
102
104
|
const jobDirectory = this.jobDirectory(jobId);
|
|
103
105
|
const spec = await readJson<ShellCommandJobSpec>(path.join(jobDirectory, JOB_SPEC_FILE));
|
|
104
106
|
await writeJsonAtomic(path.join(jobDirectory, JOB_SPEC_FILE), { ...spec, cardMessageId });
|
|
107
|
+
this.jobIdByCardMessageId.set(cardMessageId, jobId);
|
|
105
108
|
return this.readJob(jobId);
|
|
106
109
|
}
|
|
107
110
|
|
|
111
|
+
async findJobByCardMessageId(cardMessageId: string): Promise<ShellCommandJobSnapshot | undefined> {
|
|
112
|
+
const cachedJobId = this.jobIdByCardMessageId.get(cardMessageId);
|
|
113
|
+
if (cachedJobId) {
|
|
114
|
+
try {
|
|
115
|
+
return await this.readJob(cachedJobId);
|
|
116
|
+
} catch {
|
|
117
|
+
this.jobIdByCardMessageId.delete(cardMessageId);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const entries = await fs.readdir(this.jobsRoot, { withFileTypes: true }).catch((error: NodeJS.ErrnoException) => {
|
|
122
|
+
if (error.code === "ENOENT") return [];
|
|
123
|
+
throw error;
|
|
124
|
+
});
|
|
125
|
+
for (const entry of entries) {
|
|
126
|
+
if (!entry.isDirectory()) continue;
|
|
127
|
+
try {
|
|
128
|
+
const spec = await readJson<ShellCommandJobSpec>(path.join(this.jobsRoot, entry.name, JOB_SPEC_FILE));
|
|
129
|
+
if (spec.cardMessageId) this.jobIdByCardMessageId.set(spec.cardMessageId, spec.id);
|
|
130
|
+
if (spec.cardMessageId === cardMessageId) return this.readJob(spec.id);
|
|
131
|
+
} catch {
|
|
132
|
+
// Ignore partially written or unrelated job directories while rebuilding the card index.
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
|
|
108
138
|
async startJob(jobId: string): Promise<void> {
|
|
109
139
|
const jobDirectory = this.jobDirectory(jobId);
|
|
110
140
|
await this.spawnRunner(this.runnerEntry, jobDirectory);
|