@getpaseo/server 0.1.70 → 0.1.72
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/dist/server/client/daemon-client.d.ts +24 -4
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +41 -2
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/agent-manager.d.ts +17 -4
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +177 -21
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-metadata-generator.d.ts +2 -0
- package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
- package/dist/server/server/agent/agent-metadata-generator.js +16 -7
- package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
- package/dist/server/server/agent/agent-projections.d.ts +6 -2
- package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
- package/dist/server/server/agent/agent-projections.js +32 -0
- package/dist/server/server/agent/agent-projections.js.map +1 -1
- package/dist/server/server/agent/agent-prompt.d.ts +72 -0
- package/dist/server/server/agent/agent-prompt.d.ts.map +1 -0
- package/dist/server/server/agent/agent-prompt.js +169 -0
- package/dist/server/server/agent/agent-prompt.js.map +1 -0
- package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
- package/dist/server/server/agent/agent-response-loop.js +2 -1
- package/dist/server/server/agent/agent-response-loop.js.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +12 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
- package/dist/server/server/agent/create-agent-mode.d.ts +2 -0
- package/dist/server/server/agent/create-agent-mode.d.ts.map +1 -1
- package/dist/server/server/agent/create-agent-mode.js +3 -0
- package/dist/server/server/agent/create-agent-mode.js.map +1 -1
- package/dist/server/server/agent/create-agent-title.d.ts +8 -0
- package/dist/server/server/agent/create-agent-title.d.ts.map +1 -0
- package/dist/server/server/agent/create-agent-title.js +29 -0
- package/dist/server/server/agent/create-agent-title.js.map +1 -0
- package/dist/server/server/agent/import-sessions.d.ts +52 -0
- package/dist/server/server/agent/import-sessions.d.ts.map +1 -0
- package/dist/server/server/agent/import-sessions.js +208 -0
- package/dist/server/server/agent/import-sessions.js.map +1 -0
- package/dist/server/server/agent/mcp-server.d.ts +1 -1
- package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
- package/dist/server/server/agent/mcp-server.js +29 -6
- package/dist/server/server/agent/mcp-server.js.map +1 -1
- package/dist/server/server/agent/mcp-shared.d.ts +1 -47
- package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
- package/dist/server/server/agent/mcp-shared.js +0 -145
- package/dist/server/server/agent/mcp-shared.js.map +1 -1
- package/dist/server/server/agent/provider-registry.d.ts +7 -0
- package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
- package/dist/server/server/agent/provider-registry.js +7 -1
- package/dist/server/server/agent/provider-registry.js.map +1 -1
- package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude/agent.js +15 -0
- package/dist/server/server/agent/providers/claude/agent.js.map +1 -1
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +25 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts.map +1 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.js +183 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +9 -22
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +39 -171
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/agent/providers/opencode/runtime.d.ts +27 -0
- package/dist/server/server/agent/providers/opencode/runtime.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/runtime.js +5 -0
- package/dist/server/server/agent/providers/opencode/runtime.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/server-manager.d.ts +55 -0
- package/dist/server/server/agent/providers/opencode/server-manager.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/server-manager.js +255 -0
- package/dist/server/server/agent/providers/opencode/server-manager.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +22 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.js +28 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts +75 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js +169 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js.map +1 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts +7 -36
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.js +199 -261
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts +8 -3
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.js +44 -34
- package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -1
- package/dist/server/server/chat/chat-mentions.d.ts +24 -8
- package/dist/server/server/chat/chat-mentions.d.ts.map +1 -1
- package/dist/server/server/chat/chat-mentions.js +77 -35
- package/dist/server/server/chat/chat-mentions.js.map +1 -1
- package/dist/server/server/chat/chat-service.d.ts +4 -0
- package/dist/server/server/chat/chat-service.d.ts.map +1 -1
- package/dist/server/server/chat/chat-service.js +9 -0
- package/dist/server/server/chat/chat-service.js.map +1 -1
- package/dist/server/server/checkout/status-projection.d.ts +19 -0
- package/dist/server/server/checkout/status-projection.d.ts.map +1 -0
- package/dist/server/server/checkout/status-projection.js +98 -0
- package/dist/server/server/checkout/status-projection.js.map +1 -0
- package/dist/server/server/daemon-keypair.d.ts.map +1 -1
- package/dist/server/server/daemon-keypair.js +4 -2
- package/dist/server/server/daemon-keypair.js.map +1 -1
- package/dist/server/server/exports.d.ts +1 -0
- package/dist/server/server/exports.d.ts.map +1 -1
- package/dist/server/server/exports.js +1 -0
- package/dist/server/server/exports.js.map +1 -1
- package/dist/server/server/paseo-home.js +2 -2
- package/dist/server/server/paseo-home.js.map +1 -1
- package/dist/server/server/paseo-worktree-service.d.ts +2 -1
- package/dist/server/server/paseo-worktree-service.d.ts.map +1 -1
- package/dist/server/server/paseo-worktree-service.js +30 -3
- package/dist/server/server/paseo-worktree-service.js.map +1 -1
- package/dist/server/server/persisted-config.d.ts.map +1 -1
- package/dist/server/server/persisted-config.js +5 -4
- package/dist/server/server/persisted-config.js.map +1 -1
- package/dist/server/server/private-files.d.ts +7 -0
- package/dist/server/server/private-files.d.ts.map +1 -0
- package/dist/server/server/private-files.js +42 -0
- package/dist/server/server/private-files.js.map +1 -0
- package/dist/server/server/push/token-store.d.ts.map +1 -1
- package/dist/server/server/push/token-store.js +4 -6
- package/dist/server/server/push/token-store.js.map +1 -1
- package/dist/server/server/schedule/service.d.ts +1 -1
- package/dist/server/server/schedule/service.d.ts.map +1 -1
- package/dist/server/server/schedule/service.js +14 -11
- package/dist/server/server/schedule/service.js.map +1 -1
- package/dist/server/server/server-id.d.ts.map +1 -1
- package/dist/server/server/server-id.js +8 -3
- package/dist/server/server/server-id.js.map +1 -1
- package/dist/server/server/session.d.ts +3 -17
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +174 -254
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/workspace-directory.d.ts +0 -2
- package/dist/server/server/workspace-directory.d.ts.map +1 -1
- package/dist/server/server/workspace-directory.js +9 -26
- package/dist/server/server/workspace-directory.js.map +1 -1
- package/dist/server/server/workspace-git-service.d.ts +2 -1
- package/dist/server/server/workspace-git-service.d.ts.map +1 -1
- package/dist/server/server/workspace-git-service.js +1 -1
- package/dist/server/server/workspace-git-service.js.map +1 -1
- package/dist/server/server/worktree-branch-name-generator.d.ts +2 -0
- package/dist/server/server/worktree-branch-name-generator.d.ts.map +1 -1
- package/dist/server/server/worktree-branch-name-generator.js +18 -11
- package/dist/server/server/worktree-branch-name-generator.js.map +1 -1
- package/dist/server/services/github-service.d.ts +13 -0
- package/dist/server/services/github-service.d.ts.map +1 -1
- package/dist/server/services/github-service.js +12 -2
- package/dist/server/services/github-service.js.map +1 -1
- package/dist/server/shared/agent-labels.d.ts +2 -0
- package/dist/server/shared/agent-labels.d.ts.map +1 -0
- package/dist/server/shared/agent-labels.js +2 -0
- package/dist/server/shared/agent-labels.js.map +1 -0
- package/dist/server/shared/agent-state-bucket.d.ts +13 -0
- package/dist/server/shared/agent-state-bucket.d.ts.map +1 -0
- package/dist/server/shared/agent-state-bucket.js +41 -0
- package/dist/server/shared/agent-state-bucket.js.map +1 -0
- package/dist/server/shared/git-remote.d.ts +16 -0
- package/dist/server/shared/git-remote.d.ts.map +1 -0
- package/dist/server/shared/git-remote.js +72 -0
- package/dist/server/shared/git-remote.js.map +1 -0
- package/dist/server/shared/importable-providers.d.ts +7 -0
- package/dist/server/shared/importable-providers.d.ts.map +1 -0
- package/dist/server/shared/importable-providers.js +7 -0
- package/dist/server/shared/importable-providers.js.map +1 -0
- package/dist/server/shared/messages.d.ts +7148 -690
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +56 -4
- package/dist/server/shared/messages.js.map +1 -1
- package/dist/server/utils/build-metadata-prompt.d.ts +14 -0
- package/dist/server/utils/build-metadata-prompt.d.ts.map +1 -0
- package/dist/server/utils/build-metadata-prompt.js +28 -0
- package/dist/server/utils/build-metadata-prompt.js.map +1 -0
- package/dist/server/utils/checkout-git.d.ts +3 -1
- package/dist/server/utils/checkout-git.d.ts.map +1 -1
- package/dist/server/utils/checkout-git.js +3 -0
- package/dist/server/utils/checkout-git.js.map +1 -1
- package/dist/server/utils/github-remote.d.ts +3 -7
- package/dist/server/utils/github-remote.d.ts.map +1 -1
- package/dist/server/utils/github-remote.js +4 -70
- package/dist/server/utils/github-remote.js.map +1 -1
- package/dist/server/utils/paseo-config-schema.d.ts +625 -0
- package/dist/server/utils/paseo-config-schema.d.ts.map +1 -1
- package/dist/server/utils/paseo-config-schema.js +17 -0
- package/dist/server/utils/paseo-config-schema.js.map +1 -1
- package/dist/server/utils/wrap-user-instructions.d.ts +2 -0
- package/dist/server/utils/wrap-user-instructions.d.ts.map +1 -0
- package/dist/server/utils/wrap-user-instructions.js +13 -0
- package/dist/server/utils/wrap-user-instructions.js.map +1 -0
- package/dist/src/server/paseo-home.js +2 -2
- package/dist/src/server/paseo-home.js.map +1 -1
- package/dist/src/server/persisted-config.js +5 -4
- package/dist/src/server/persisted-config.js.map +1 -1
- package/dist/src/server/private-files.js +42 -0
- package/dist/src/server/private-files.js.map +1 -0
- package/dist/src/shared/messages.js +56 -4
- package/dist/src/shared/messages.js.map +1 -1
- package/dist/src/utils/paseo-config-schema.js +17 -0
- package/dist/src/utils/paseo-config-schema.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-server-transport.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/codex/app-server-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAgCnC,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;AACnD,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAqBrE,qBAAa,oBAAoB;IAU7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAM;gBAGP,KAAK,EAAE,8BAA8B,EACrC,MAAM,EAAE,MAAM;IAyCjC,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI1D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAIhE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,SAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB3F,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAQxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B,OAAO,CAAC,oBAAoB;YAWd,UAAU;CAkDzB"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import readline from "node:readline";
|
|
2
|
+
import { terminateWithTreeKill } from "../../../../utils/tree-kill.js";
|
|
3
|
+
const DEFAULT_TIMEOUT_MS = 14 * 24 * 60 * 60 * 1000;
|
|
4
|
+
const APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS = 2000;
|
|
5
|
+
const APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS = 1000;
|
|
6
|
+
const STDERR_BUFFER_LIMIT = 8192;
|
|
7
|
+
function isRecord(value) {
|
|
8
|
+
return value != null && typeof value === "object" && !Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
function isJsonRpcResponse(msg) {
|
|
11
|
+
if (!isRecord(msg))
|
|
12
|
+
return false;
|
|
13
|
+
return typeof msg.id === "number";
|
|
14
|
+
}
|
|
15
|
+
function isJsonRpcRequest(msg) {
|
|
16
|
+
if (!isRecord(msg))
|
|
17
|
+
return false;
|
|
18
|
+
return typeof msg.id === "number" && typeof msg.method === "string";
|
|
19
|
+
}
|
|
20
|
+
function isJsonRpcNotification(msg) {
|
|
21
|
+
if (!isRecord(msg))
|
|
22
|
+
return false;
|
|
23
|
+
return typeof msg.method === "string" && msg.id === undefined;
|
|
24
|
+
}
|
|
25
|
+
export class CodexAppServerClient {
|
|
26
|
+
constructor(child, logger) {
|
|
27
|
+
this.child = child;
|
|
28
|
+
this.logger = logger;
|
|
29
|
+
this.pending = new Map();
|
|
30
|
+
this.requestHandlers = new Map();
|
|
31
|
+
this.notificationHandler = null;
|
|
32
|
+
this.nextId = 1;
|
|
33
|
+
this.disposed = false;
|
|
34
|
+
this.stderrBuffer = "";
|
|
35
|
+
this.rl = readline.createInterface({ input: child.stdout });
|
|
36
|
+
this.rl.on("line", (line) => {
|
|
37
|
+
void this.handleLine(line).catch((error) => {
|
|
38
|
+
this.logger.warn({ error, line }, "Failed to handle Codex app-server stdout line");
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
child.stderr.on("data", (chunk) => {
|
|
42
|
+
this.stderrBuffer += chunk.toString();
|
|
43
|
+
if (this.stderrBuffer.length > STDERR_BUFFER_LIMIT) {
|
|
44
|
+
this.stderrBuffer = this.stderrBuffer.slice(-STDERR_BUFFER_LIMIT);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
child.on("error", (err) => {
|
|
48
|
+
this.logger.error({ err }, "Codex app-server child process error");
|
|
49
|
+
for (const pending of this.pending.values()) {
|
|
50
|
+
clearTimeout(pending.timer);
|
|
51
|
+
pending.reject(err);
|
|
52
|
+
}
|
|
53
|
+
this.pending.clear();
|
|
54
|
+
this.disposed = true;
|
|
55
|
+
});
|
|
56
|
+
child.on("exit", (code, signal) => {
|
|
57
|
+
const message = code === 0 && !signal
|
|
58
|
+
? "Codex app-server exited"
|
|
59
|
+
: `Codex app-server exited with code ${code ?? "null"} and signal ${signal ?? "null"}`;
|
|
60
|
+
const error = new Error(`${message}\n${this.stderrBuffer}`.trim());
|
|
61
|
+
for (const pending of this.pending.values()) {
|
|
62
|
+
clearTimeout(pending.timer);
|
|
63
|
+
pending.reject(error);
|
|
64
|
+
}
|
|
65
|
+
this.pending.clear();
|
|
66
|
+
this.disposed = true;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
setNotificationHandler(handler) {
|
|
70
|
+
this.notificationHandler = handler;
|
|
71
|
+
}
|
|
72
|
+
setRequestHandler(method, handler) {
|
|
73
|
+
this.requestHandlers.set(method, handler);
|
|
74
|
+
}
|
|
75
|
+
request(method, params, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
76
|
+
if (this.disposed) {
|
|
77
|
+
return Promise.reject(new Error("Codex app-server client is closed"));
|
|
78
|
+
}
|
|
79
|
+
const id = this.nextId++;
|
|
80
|
+
const payload = { id, method, params };
|
|
81
|
+
const serialized = JSON.stringify(payload);
|
|
82
|
+
this.child.stdin.write(`${serialized}\n`);
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
84
|
+
const timer = setTimeout(() => {
|
|
85
|
+
this.pending.delete(id);
|
|
86
|
+
reject(new Error(`Codex app-server request timed out for ${method}`));
|
|
87
|
+
}, timeoutMs);
|
|
88
|
+
this.pending.set(id, { resolve, reject, timer });
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
notify(method, params) {
|
|
92
|
+
if (this.disposed) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const payload = { method, params };
|
|
96
|
+
this.child.stdin.write(`${JSON.stringify(payload)}\n`);
|
|
97
|
+
}
|
|
98
|
+
async dispose() {
|
|
99
|
+
if (this.disposed)
|
|
100
|
+
return;
|
|
101
|
+
this.disposed = true;
|
|
102
|
+
this.rl.close();
|
|
103
|
+
try {
|
|
104
|
+
this.child.stdin.end();
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// ignore
|
|
108
|
+
}
|
|
109
|
+
const result = await terminateWithTreeKill(this.child, {
|
|
110
|
+
gracefulTimeoutMs: APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS,
|
|
111
|
+
forceTimeoutMs: APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS,
|
|
112
|
+
onForceSignal: () => {
|
|
113
|
+
this.logger.warn({ timeoutMs: APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS }, "Codex app-server did not exit after SIGTERM; sending SIGKILL");
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
if (result === "kill-timeout") {
|
|
117
|
+
this.logger.warn({ timeoutMs: APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS }, "Codex app-server did not report exit after SIGKILL");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
writeJsonRpcResponse(response) {
|
|
121
|
+
if (this.disposed || this.child.stdin.destroyed || !this.child.stdin.writable) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
try {
|
|
125
|
+
this.child.stdin.write(`${JSON.stringify(response)}\n`);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
this.logger.debug({ error }, "Failed to write Codex app-server JSON-RPC response");
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async handleLine(line) {
|
|
132
|
+
if (!line.trim())
|
|
133
|
+
return;
|
|
134
|
+
let raw;
|
|
135
|
+
try {
|
|
136
|
+
raw = JSON.parse(line);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
this.logger.warn({ error, line }, "Ignoring non-JSON Codex app-server stdout line");
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (!isRecord(raw)) {
|
|
143
|
+
this.logger.warn({ line }, "Parsed JSON is not an object");
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (isJsonRpcResponse(raw)) {
|
|
147
|
+
const id = raw.id;
|
|
148
|
+
if (raw.result !== undefined || raw.error) {
|
|
149
|
+
const pending = this.pending.get(id);
|
|
150
|
+
if (!pending)
|
|
151
|
+
return;
|
|
152
|
+
clearTimeout(pending.timer);
|
|
153
|
+
this.pending.delete(id);
|
|
154
|
+
if (raw.error) {
|
|
155
|
+
pending.reject(new Error(raw.error.message ?? "Unknown error"));
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
pending.resolve(raw.result);
|
|
159
|
+
}
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (isJsonRpcRequest(raw)) {
|
|
163
|
+
const request = raw;
|
|
164
|
+
const handler = this.requestHandlers.get(request.method);
|
|
165
|
+
try {
|
|
166
|
+
const result = handler ? await handler(request.params) : {};
|
|
167
|
+
this.writeJsonRpcResponse({ id: request.id, result });
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
this.writeJsonRpcResponse({
|
|
171
|
+
id: request.id,
|
|
172
|
+
error: { message: error instanceof Error ? error.message : String(error) },
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (isJsonRpcNotification(raw)) {
|
|
179
|
+
this.notificationHandler?.(raw.method, raw.params);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=app-server-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-server-transport.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/codex/app-server-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,22 @@
|
|
|
1
|
-
import type { AgentCapabilityFlags, AgentClient, AgentCreateSessionOptions, AgentFeature, AgentLaunchContext, AgentMode, AgentModelDefinition, AgentPermissionRequest, AgentPermissionResponse, AgentPermissionResult, AgentPromptContentBlock, AgentPromptInput, AgentRunOptions, AgentRunResult, AgentRuntimeInfo, AgentSession, AgentSessionConfig, AgentSlashCommand, AgentStreamEvent, AgentTimelineItem, ToolCallTimelineItem, AgentUsage, ListModelsOptions, ListPersistedAgentsOptions, PersistedAgentDescriptor } from "../agent-sdk-types.js";
|
|
1
|
+
import type { AgentCapabilityFlags, AgentClient, AgentCreateSessionOptions, AgentFeature, AgentLaunchContext, AgentMode, AgentModelDefinition, AgentPersistenceHandle, AgentPermissionRequest, AgentPermissionResponse, AgentPermissionResult, AgentPromptContentBlock, AgentPromptInput, AgentRunOptions, AgentRunResult, AgentRuntimeInfo, AgentSession, AgentSessionConfig, AgentSlashCommand, AgentStreamEvent, AgentTimelineItem, ToolCallTimelineItem, AgentUsage, ListModelsOptions, ListPersistedAgentsOptions, PersistedAgentDescriptor } from "../agent-sdk-types.js";
|
|
2
2
|
import type { Logger } from "pino";
|
|
3
3
|
import type { ChildProcessWithoutNullStreams } from "node:child_process";
|
|
4
4
|
import { type ProviderRuntimeSettings } from "../provider-launch-config.js";
|
|
5
5
|
import { codexModelSupportsFastMode } from "./codex-feature-definitions.js";
|
|
6
|
+
import { CodexAppServerClient } from "./codex/app-server-transport.js";
|
|
6
7
|
import type { WorkspaceGitService } from "../../workspace-git-service.js";
|
|
7
8
|
declare const CODEX_PROVIDER: "codex";
|
|
9
|
+
interface CodexAppServerClientLike {
|
|
10
|
+
request(method: string, params?: unknown): Promise<unknown>;
|
|
11
|
+
notify(method: string, params?: unknown): void;
|
|
12
|
+
dispose(): Promise<void>;
|
|
13
|
+
}
|
|
8
14
|
interface CodexAppServerAgentDeps {
|
|
9
15
|
workspaceGitService?: Pick<WorkspaceGitService, "resolveRepoRoot">;
|
|
16
|
+
_createCodexClient?: (child: ChildProcessWithoutNullStreams, logger: Logger) => CodexAppServerClientLike;
|
|
10
17
|
}
|
|
11
18
|
declare function normalizeCodexOutputSchema(schema: unknown): Record<string, unknown>;
|
|
12
19
|
declare function listCodexSkills(cwd: string, workspaceGitService?: Pick<WorkspaceGitService, "resolveRepoRoot">): Promise<AgentSlashCommand[]>;
|
|
13
|
-
type RequestHandler = (params: unknown) => unknown;
|
|
14
|
-
type NotificationHandler = (method: string, params: unknown) => void;
|
|
15
|
-
declare class CodexAppServerClient {
|
|
16
|
-
private readonly child;
|
|
17
|
-
private readonly logger;
|
|
18
|
-
private readonly rl;
|
|
19
|
-
private readonly pending;
|
|
20
|
-
private readonly requestHandlers;
|
|
21
|
-
private notificationHandler;
|
|
22
|
-
private nextId;
|
|
23
|
-
private disposed;
|
|
24
|
-
private stderrBuffer;
|
|
25
|
-
constructor(child: ChildProcessWithoutNullStreams, logger: Logger);
|
|
26
|
-
setNotificationHandler(handler: NotificationHandler): void;
|
|
27
|
-
setRequestHandler(method: string, handler: RequestHandler): void;
|
|
28
|
-
request(method: string, params?: unknown, timeoutMs?: number): Promise<unknown>;
|
|
29
|
-
notify(method: string, params?: unknown): void;
|
|
30
|
-
private writeJsonRpcResponse;
|
|
31
|
-
dispose(): Promise<void>;
|
|
32
|
-
private handleLine;
|
|
33
|
-
}
|
|
34
20
|
declare function toAgentUsage(tokenUsage: unknown): AgentUsage | undefined;
|
|
35
21
|
declare function planStepsToMarkdown(steps: Array<{
|
|
36
22
|
step: string;
|
|
@@ -267,6 +253,7 @@ export declare class CodexAppServerAgentClient implements AgentClient {
|
|
|
267
253
|
}, overrides?: Partial<AgentSessionConfig>, launchContext?: AgentLaunchContext): Promise<AgentSession>;
|
|
268
254
|
listPersistedAgents(options?: ListPersistedAgentsOptions): Promise<PersistedAgentDescriptor[]>;
|
|
269
255
|
listModels(_options: ListModelsOptions): Promise<AgentModelDefinition[]>;
|
|
256
|
+
archiveNativeSession(handle: AgentPersistenceHandle): Promise<void>;
|
|
270
257
|
isAvailable(): Promise<boolean>;
|
|
271
258
|
getDiagnostic(): Promise<{
|
|
272
259
|
diagnostic: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-app-server-agent.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/codex-app-server-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,oBAAoB,EACpB,WAAW,EACX,yBAAyB,EACzB,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAEpB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,KAAK,EAAgB,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-app-server-agent.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/codex-app-server-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,17 +4,16 @@ import * as fsSync from "node:fs";
|
|
|
4
4
|
import fs from "node:fs/promises";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import path from "node:path";
|
|
7
|
-
import readline from "node:readline";
|
|
8
7
|
import { z } from "zod";
|
|
9
8
|
import { renderPromptAttachmentAsText } from "../prompt-attachments.js";
|
|
10
9
|
import { curateAgentActivity } from "../activity-curator.js";
|
|
11
10
|
import { mapCodexRolloutToolCall, mapCodexToolCallFromThreadItem, } from "./codex/tool-call-mapper.js";
|
|
12
11
|
import { createProviderEnv, createProviderEnvSpec, resolveProviderCommandPrefix, } from "../provider-launch-config.js";
|
|
13
12
|
import { findExecutable, isCommandAvailable } from "../../../utils/executable.js";
|
|
14
|
-
import { terminateWithTreeKill } from "../../../utils/tree-kill.js";
|
|
15
13
|
import { spawnProcess } from "../../../utils/spawn.js";
|
|
16
14
|
import { extractCodexTerminalSessionId, nonEmptyString } from "./tool-call-mapper-utils.js";
|
|
17
15
|
import { buildCodexFeatures, codexModelSupportsFastMode } from "./codex-feature-definitions.js";
|
|
16
|
+
import { CodexAppServerClient } from "./codex/app-server-transport.js";
|
|
18
17
|
import { renderProviderImageOutputAsAssistantMarkdown, } from "./provider-image-output.js";
|
|
19
18
|
import { formatDiagnosticStatus, formatProviderDiagnostic, formatProviderDiagnosticError, resolveBinaryVersion, toDiagnosticErrorMessage, } from "./diagnostic-utils.js";
|
|
20
19
|
import { runProviderTurn } from "./provider-runner.js";
|
|
@@ -26,11 +25,8 @@ function assertChildWithPipes(child) {
|
|
|
26
25
|
function isRecord(value) {
|
|
27
26
|
return value != null && typeof value === "object" && !Array.isArray(value);
|
|
28
27
|
}
|
|
29
|
-
const DEFAULT_TIMEOUT_MS = 14 * 24 * 60 * 60 * 1000;
|
|
30
28
|
const TURN_START_TIMEOUT_MS = 90 * 1000;
|
|
31
29
|
const INTERRUPT_TIMEOUT_MS = 2000;
|
|
32
|
-
const APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS = 2000;
|
|
33
|
-
const APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS = 1000;
|
|
34
30
|
const CODEX_PROVIDER = "codex";
|
|
35
31
|
const CODEX_IMAGE_ATTACHMENT_DIR = "paseo-attachments";
|
|
36
32
|
const ASSISTANT_MESSAGE_BOUNDARY_MARKDOWN = "\n\n---\n\n";
|
|
@@ -458,23 +454,6 @@ function toCodexMcpConfig(config) {
|
|
|
458
454
|
}
|
|
459
455
|
}
|
|
460
456
|
}
|
|
461
|
-
function isJsonRpcResponse(msg) {
|
|
462
|
-
if (!isRecord(msg))
|
|
463
|
-
return false;
|
|
464
|
-
if (typeof msg.id !== "number")
|
|
465
|
-
return false;
|
|
466
|
-
return msg.result !== undefined || !!msg.error;
|
|
467
|
-
}
|
|
468
|
-
function isJsonRpcRequest(msg) {
|
|
469
|
-
if (!isRecord(msg))
|
|
470
|
-
return false;
|
|
471
|
-
return typeof msg.id === "number" && typeof msg.method === "string";
|
|
472
|
-
}
|
|
473
|
-
function isJsonRpcNotification(msg) {
|
|
474
|
-
if (!isRecord(msg))
|
|
475
|
-
return false;
|
|
476
|
-
return typeof msg.method === "string" && typeof msg.id !== "number";
|
|
477
|
-
}
|
|
478
457
|
function toObjectRecord(value) {
|
|
479
458
|
return isRecord(value) ? value : undefined;
|
|
480
459
|
}
|
|
@@ -496,153 +475,15 @@ const CodexModelListResponseSchema = z.object({
|
|
|
496
475
|
}))
|
|
497
476
|
.optional(),
|
|
498
477
|
});
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
this.logger = logger;
|
|
503
|
-
this.pending = new Map();
|
|
504
|
-
this.requestHandlers = new Map();
|
|
505
|
-
this.notificationHandler = null;
|
|
506
|
-
this.nextId = 1;
|
|
507
|
-
this.disposed = false;
|
|
508
|
-
this.stderrBuffer = "";
|
|
509
|
-
this.rl = readline.createInterface({ input: child.stdout });
|
|
510
|
-
this.rl.on("line", (line) => this.handleLine(line));
|
|
511
|
-
child.stderr.on("data", (chunk) => {
|
|
512
|
-
this.stderrBuffer += chunk.toString();
|
|
513
|
-
if (this.stderrBuffer.length > 8192) {
|
|
514
|
-
this.stderrBuffer = this.stderrBuffer.slice(-8192);
|
|
515
|
-
}
|
|
516
|
-
});
|
|
517
|
-
child.on("error", (err) => {
|
|
518
|
-
this.logger.error({ err }, "Codex app-server child process error");
|
|
519
|
-
for (const pending of this.pending.values()) {
|
|
520
|
-
clearTimeout(pending.timer);
|
|
521
|
-
pending.reject(err);
|
|
522
|
-
}
|
|
523
|
-
this.pending.clear();
|
|
524
|
-
this.disposed = true;
|
|
525
|
-
});
|
|
526
|
-
child.on("exit", (code, signal) => {
|
|
527
|
-
const message = code === 0 && !signal
|
|
528
|
-
? "Codex app-server exited"
|
|
529
|
-
: `Codex app-server exited with code ${code ?? "null"} and signal ${signal ?? "null"}`;
|
|
530
|
-
const error = new Error(`${message}\n${this.stderrBuffer}`.trim());
|
|
531
|
-
for (const pending of this.pending.values()) {
|
|
532
|
-
clearTimeout(pending.timer);
|
|
533
|
-
pending.reject(error);
|
|
534
|
-
}
|
|
535
|
-
this.pending.clear();
|
|
536
|
-
this.disposed = true;
|
|
537
|
-
});
|
|
538
|
-
}
|
|
539
|
-
setNotificationHandler(handler) {
|
|
540
|
-
this.notificationHandler = handler;
|
|
541
|
-
}
|
|
542
|
-
setRequestHandler(method, handler) {
|
|
543
|
-
this.requestHandlers.set(method, handler);
|
|
544
|
-
}
|
|
545
|
-
request(method, params, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
546
|
-
if (this.disposed) {
|
|
547
|
-
return Promise.reject(new Error("Codex app-server client is closed"));
|
|
548
|
-
}
|
|
549
|
-
const id = this.nextId++;
|
|
550
|
-
const payload = { id, method, params };
|
|
551
|
-
const serialized = JSON.stringify(payload);
|
|
552
|
-
this.child.stdin.write(`${serialized}\n`);
|
|
553
|
-
return new Promise((resolve, reject) => {
|
|
554
|
-
const timer = setTimeout(() => {
|
|
555
|
-
this.pending.delete(id);
|
|
556
|
-
reject(new Error(`Codex app-server request timed out for ${method}`));
|
|
557
|
-
}, timeoutMs);
|
|
558
|
-
this.pending.set(id, { resolve, reject, timer });
|
|
559
|
-
});
|
|
560
|
-
}
|
|
561
|
-
notify(method, params) {
|
|
562
|
-
if (this.disposed) {
|
|
563
|
-
return;
|
|
564
|
-
}
|
|
565
|
-
const payload = { method, params };
|
|
566
|
-
this.child.stdin.write(`${JSON.stringify(payload)}\n`);
|
|
567
|
-
}
|
|
568
|
-
writeJsonRpcResponse(response) {
|
|
569
|
-
if (this.disposed || this.child.stdin.destroyed || !this.child.stdin.writable) {
|
|
570
|
-
return;
|
|
571
|
-
}
|
|
572
|
-
try {
|
|
573
|
-
this.child.stdin.write(`${JSON.stringify(response)}\n`);
|
|
574
|
-
}
|
|
575
|
-
catch (error) {
|
|
576
|
-
this.logger.debug({ error }, "Failed to write Codex app-server JSON-RPC response");
|
|
577
|
-
}
|
|
578
|
-
}
|
|
579
|
-
async dispose() {
|
|
580
|
-
if (this.disposed)
|
|
581
|
-
return;
|
|
582
|
-
this.disposed = true;
|
|
583
|
-
this.rl.close();
|
|
584
|
-
try {
|
|
585
|
-
this.child.stdin.end();
|
|
586
|
-
}
|
|
587
|
-
catch {
|
|
588
|
-
// ignore
|
|
589
|
-
}
|
|
590
|
-
const result = await terminateWithTreeKill(this.child, {
|
|
591
|
-
gracefulTimeoutMs: APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS,
|
|
592
|
-
forceTimeoutMs: APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS,
|
|
593
|
-
onForceSignal: () => {
|
|
594
|
-
this.logger.warn({ timeoutMs: APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS }, "Codex app-server did not exit after SIGTERM; sending SIGKILL");
|
|
595
|
-
},
|
|
596
|
-
});
|
|
597
|
-
if (result === "kill-timeout") {
|
|
598
|
-
this.logger.warn({ timeoutMs: APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS }, "Codex app-server did not report exit after SIGKILL");
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
async handleLine(line) {
|
|
602
|
-
if (!line.trim())
|
|
603
|
-
return;
|
|
604
|
-
const raw = JSON.parse(line);
|
|
605
|
-
if (!isRecord(raw)) {
|
|
606
|
-
this.logger.warn({ line }, "Parsed JSON is not an object");
|
|
607
|
-
return;
|
|
608
|
-
}
|
|
609
|
-
if (isJsonRpcResponse(raw)) {
|
|
610
|
-
const id = raw.id;
|
|
611
|
-
if (raw.result !== undefined || raw.error) {
|
|
612
|
-
const pending = this.pending.get(id);
|
|
613
|
-
if (!pending)
|
|
614
|
-
return;
|
|
615
|
-
clearTimeout(pending.timer);
|
|
616
|
-
this.pending.delete(id);
|
|
617
|
-
if (raw.error) {
|
|
618
|
-
pending.reject(new Error(raw.error.message ?? "Unknown error"));
|
|
619
|
-
}
|
|
620
|
-
else {
|
|
621
|
-
pending.resolve(raw.result);
|
|
622
|
-
}
|
|
623
|
-
return;
|
|
624
|
-
}
|
|
625
|
-
// Server-initiated request
|
|
626
|
-
if (isJsonRpcRequest(raw)) {
|
|
627
|
-
const request = raw;
|
|
628
|
-
const handler = this.requestHandlers.get(request.method);
|
|
629
|
-
try {
|
|
630
|
-
const result = handler ? await handler(request.params) : {};
|
|
631
|
-
this.writeJsonRpcResponse({ id: request.id, result });
|
|
632
|
-
}
|
|
633
|
-
catch (error) {
|
|
634
|
-
this.writeJsonRpcResponse({
|
|
635
|
-
id: request.id,
|
|
636
|
-
error: { message: error instanceof Error ? error.message : String(error) },
|
|
637
|
-
});
|
|
638
|
-
}
|
|
639
|
-
return;
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
|
-
if (isJsonRpcNotification(raw)) {
|
|
643
|
-
this.notificationHandler?.(raw.method, raw.params);
|
|
644
|
-
}
|
|
478
|
+
function filterCodexThreadsByCwd(threads, cwd) {
|
|
479
|
+
if (!cwd) {
|
|
480
|
+
return threads;
|
|
645
481
|
}
|
|
482
|
+
// thread/list rows carry an optional cwd. The descriptor builder later
|
|
483
|
+
// falls back to process.cwd() if the field is missing, so we only match
|
|
484
|
+
// here when the row genuinely carries a cwd string — otherwise threads
|
|
485
|
+
// with no cwd would falsely match the daemon's own cwd.
|
|
486
|
+
return threads.filter((thread) => typeof thread.cwd === "string" && thread.cwd === cwd);
|
|
646
487
|
}
|
|
647
488
|
function toAgentUsage(tokenUsage) {
|
|
648
489
|
const usage = toObjectRecord(tokenUsage);
|
|
@@ -3817,6 +3658,11 @@ export class CodexAppServerAgentClient {
|
|
|
3817
3658
|
return child;
|
|
3818
3659
|
}
|
|
3819
3660
|
async createSession(config, launchContext, options) {
|
|
3661
|
+
if (options?.persistSession === false) {
|
|
3662
|
+
this.logger.debug("Codex app-server does not expose an ephemeral-session option; persistSession=false is currently a no-op");
|
|
3663
|
+
// TODO: Honor persistSession=false if app-server adds support, or route
|
|
3664
|
+
// utility generations through `codex exec --ephemeral` in a larger change.
|
|
3665
|
+
}
|
|
3820
3666
|
const sessionConfig = { ...config, provider: CODEX_PROVIDER };
|
|
3821
3667
|
const goalsEnabled = await this.resolveGoalsEnabled();
|
|
3822
3668
|
const session = new CodexAppServerAgentSession(sessionConfig, null, this.logger, () => this.spawnAppServer(launchContext?.env, { goalsEnabled }), this.deps, options?.persistSession === false, goalsEnabled);
|
|
@@ -3838,13 +3684,20 @@ export class CodexAppServerAgentClient {
|
|
|
3838
3684
|
}
|
|
3839
3685
|
async listPersistedAgents(options) {
|
|
3840
3686
|
const child = await this.spawnAppServer();
|
|
3841
|
-
const client =
|
|
3687
|
+
const client = this.deps._createCodexClient?.(child, this.logger) ??
|
|
3688
|
+
new CodexAppServerClient(child, this.logger);
|
|
3842
3689
|
try {
|
|
3843
3690
|
await client.request("initialize", buildCodexAppServerInitializeParams());
|
|
3844
3691
|
client.notify("initialized", {});
|
|
3845
3692
|
const limit = options?.limit ?? 20;
|
|
3846
|
-
|
|
3847
|
-
|
|
3693
|
+
// thread/list returns the cheap `cwd` field. When the caller supplied
|
|
3694
|
+
// a cwd hint we filter here so the per-thread `thread/read includeTurns`
|
|
3695
|
+
// hydration below only runs for matching threads. Fetch a wider window
|
|
3696
|
+
// when filtering since most threads will be from other cwds.
|
|
3697
|
+
const listLimit = options?.cwd ? Math.max(limit, 50) : limit;
|
|
3698
|
+
const response = toObjectRecord(await client.request("thread/list", { limit: listLimit }));
|
|
3699
|
+
const allThreads = Array.isArray(response?.data) ? response.data.filter(isRecord) : [];
|
|
3700
|
+
const threads = filterCodexThreadsByCwd(allThreads, options?.cwd);
|
|
3848
3701
|
const descriptors = await Promise.all(threads.slice(0, limit).map(async (thread) => {
|
|
3849
3702
|
const threadId = typeof thread.id === "string" ? thread.id : "";
|
|
3850
3703
|
const cwd = typeof thread.cwd === "string" ? thread.cwd : process.cwd();
|
|
@@ -3916,6 +3769,21 @@ export class CodexAppServerAgentClient {
|
|
|
3916
3769
|
await client.dispose();
|
|
3917
3770
|
}
|
|
3918
3771
|
}
|
|
3772
|
+
async archiveNativeSession(handle) {
|
|
3773
|
+
const threadId = handle.nativeHandle ?? handle.sessionId;
|
|
3774
|
+
if (!threadId)
|
|
3775
|
+
return;
|
|
3776
|
+
const child = await this.spawnAppServer();
|
|
3777
|
+
const client = new CodexAppServerClient(child, this.logger);
|
|
3778
|
+
try {
|
|
3779
|
+
await client.request("initialize", buildCodexAppServerInitializeParams());
|
|
3780
|
+
client.notify("initialized", {});
|
|
3781
|
+
await client.request("thread/archive", { threadId });
|
|
3782
|
+
}
|
|
3783
|
+
finally {
|
|
3784
|
+
await client.dispose();
|
|
3785
|
+
}
|
|
3786
|
+
}
|
|
3919
3787
|
async isAvailable() {
|
|
3920
3788
|
const command = this.runtimeSettings?.command;
|
|
3921
3789
|
if (command?.mode === "replace") {
|