@antelopejs/dms-ai 0.0.6 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -2
- package/dist/routes/settings.d.ts +7 -0
- package/dist/routes/settings.js +2 -0
- package/dist/routes/settings.js.map +1 -1
- package/frontend-vue/app/components/SettingsView.vue +85 -3
- package/package.json +10 -1
- package/sidecar/chatbox/dist/assets/index-CEZ1NLp9.js +52 -0
- package/sidecar/chatbox/dist/assets/{index-pP_KOHIn.css → index-D_51Vqqk.css} +1 -1
- package/sidecar/chatbox/dist/index.html +2 -2
- package/sidecar/dist/agent/attachment-files.d.ts +5 -0
- package/sidecar/dist/agent/attachment-files.js +29 -0
- package/sidecar/dist/agent/attachment-files.js.map +1 -0
- package/sidecar/dist/agent/provider.d.ts +40 -0
- package/sidecar/dist/agent/provider.js +2 -0
- package/sidecar/dist/agent/provider.js.map +1 -0
- package/sidecar/dist/agent/{claude-runner.d.ts → runner.d.ts} +8 -11
- package/sidecar/dist/agent/runner.js +71 -0
- package/sidecar/dist/agent/runner.js.map +1 -0
- package/sidecar/dist/agent/session.d.ts +22 -0
- package/sidecar/dist/agent/{claude-session.js → session.js} +39 -47
- package/sidecar/dist/agent/session.js.map +1 -0
- package/sidecar/dist/agent/switching-runner.d.ts +6 -0
- package/sidecar/dist/agent/switching-runner.js +58 -0
- package/sidecar/dist/agent/switching-runner.js.map +1 -0
- package/sidecar/dist/constants/agent.d.ts +2 -12
- package/sidecar/dist/constants/agent.js +2 -11
- package/sidecar/dist/constants/agent.js.map +1 -1
- package/sidecar/dist/constants/claude.d.ts +10 -0
- package/sidecar/dist/constants/claude.js +10 -0
- package/sidecar/dist/constants/claude.js.map +1 -0
- package/sidecar/dist/constants/codex.d.ts +85 -0
- package/sidecar/dist/constants/codex.js +110 -0
- package/sidecar/dist/constants/codex.js.map +1 -0
- package/sidecar/dist/constants/http.d.ts +1 -0
- package/sidecar/dist/constants/http.js +1 -0
- package/sidecar/dist/constants/http.js.map +1 -1
- package/sidecar/dist/constants/mcp.d.ts +6 -0
- package/sidecar/dist/constants/mcp.js +11 -0
- package/sidecar/dist/constants/mcp.js.map +1 -1
- package/sidecar/dist/constants/paths.d.ts +5 -0
- package/sidecar/dist/constants/paths.js +5 -0
- package/sidecar/dist/constants/paths.js.map +1 -1
- package/sidecar/dist/constants/providers.d.ts +16 -0
- package/sidecar/dist/constants/providers.js +17 -0
- package/sidecar/dist/constants/providers.js.map +1 -0
- package/sidecar/dist/constants/settings.d.ts +1 -4
- package/sidecar/dist/constants/settings.js +2 -12
- package/sidecar/dist/constants/settings.js.map +1 -1
- package/sidecar/dist/constants/skills.d.ts +1 -0
- package/sidecar/dist/constants/skills.js +2 -0
- package/sidecar/dist/constants/skills.js.map +1 -0
- package/sidecar/dist/constants/timing.d.ts +1 -0
- package/sidecar/dist/constants/timing.js +1 -0
- package/sidecar/dist/constants/timing.js.map +1 -1
- package/sidecar/dist/constants/tool-lexicon.d.ts +7 -0
- package/sidecar/dist/constants/tool-lexicon.js +8 -0
- package/sidecar/dist/constants/tool-lexicon.js.map +1 -0
- package/sidecar/dist/index.js +28 -3
- package/sidecar/dist/index.js.map +1 -1
- package/sidecar/dist/mcp/define-tool.d.ts +23 -0
- package/sidecar/dist/mcp/define-tool.js +4 -0
- package/sidecar/dist/mcp/define-tool.js.map +1 -0
- package/sidecar/dist/mcp/http-binding.d.ts +9 -0
- package/sidecar/dist/mcp/http-binding.js +123 -0
- package/sidecar/dist/mcp/http-binding.js.map +1 -0
- package/sidecar/dist/mcp/sdk-binding.js +14 -0
- package/sidecar/dist/mcp/sdk-binding.js.map +1 -0
- package/sidecar/dist/mcp/tool-definitions.d.ts +3 -0
- package/sidecar/dist/mcp/{server.js → tool-definitions.js} +2 -11
- package/sidecar/dist/mcp/tool-definitions.js.map +1 -0
- package/sidecar/dist/mcp/tools/ask-user.d.ts +1 -1
- package/sidecar/dist/mcp/tools/ask-user.js +2 -2
- package/sidecar/dist/mcp/tools/ask-user.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder.d.ts +19 -19
- package/sidecar/dist/mcp/tools/builder.js +26 -26
- package/sidecar/dist/mcp/tools/builder.js.map +1 -1
- package/sidecar/dist/mcp/tools/find-pages-using.d.ts +1 -1
- package/sidecar/dist/mcp/tools/find-pages-using.js +2 -2
- package/sidecar/dist/mcp/tools/find-pages-using.js.map +1 -1
- package/sidecar/dist/mcp/tools/get-current-page.d.ts +1 -1
- package/sidecar/dist/mcp/tools/get-current-page.js +2 -2
- package/sidecar/dist/mcp/tools/get-current-page.js.map +1 -1
- package/sidecar/dist/mcp/tools/list-pages.d.ts +1 -1
- package/sidecar/dist/mcp/tools/list-pages.js +2 -2
- package/sidecar/dist/mcp/tools/list-pages.js.map +1 -1
- package/sidecar/dist/mcp/tools/navigate-to-page.d.ts +1 -1
- package/sidecar/dist/mcp/tools/navigate-to-page.js +2 -2
- package/sidecar/dist/mcp/tools/navigate-to-page.js.map +1 -1
- package/sidecar/dist/mcp/tools/query-logs.d.ts +1 -1
- package/sidecar/dist/mcp/tools/query-logs.js +2 -2
- package/sidecar/dist/mcp/tools/query-logs.js.map +1 -1
- package/sidecar/dist/mcp/tools/typecheck.d.ts +1 -1
- package/sidecar/dist/mcp/tools/typecheck.js +2 -2
- package/sidecar/dist/mcp/tools/typecheck.js.map +1 -1
- package/sidecar/dist/mcp/types.d.ts +6 -2
- package/sidecar/dist/protocol/events.d.ts +37 -0
- package/sidecar/dist/protocol/events.js +8 -0
- package/sidecar/dist/protocol/events.js.map +1 -1
- package/sidecar/dist/protocol/messages.d.ts +8 -0
- package/sidecar/dist/protocol/messages.js +2 -0
- package/sidecar/dist/protocol/messages.js.map +1 -1
- package/sidecar/dist/providers/claude/adapter.d.ts +5 -0
- package/sidecar/dist/{agent/sdk-adapter.js → providers/claude/adapter.js} +20 -1
- package/sidecar/dist/providers/claude/adapter.js.map +1 -0
- package/sidecar/dist/{agent → providers/claude}/attachments.d.ts +1 -1
- package/sidecar/dist/{agent → providers/claude}/attachments.js +3 -27
- package/sidecar/dist/providers/claude/attachments.js.map +1 -0
- package/sidecar/dist/providers/claude/config.d.ts +4 -0
- package/sidecar/dist/providers/claude/config.js +13 -0
- package/sidecar/dist/providers/claude/config.js.map +1 -0
- package/sidecar/dist/providers/claude/input-queue.js.map +1 -0
- package/sidecar/dist/providers/claude/module.d.ts +2 -0
- package/sidecar/dist/providers/claude/module.js +25 -0
- package/sidecar/dist/providers/claude/module.js.map +1 -0
- package/sidecar/dist/providers/claude/provider.d.ts +11 -0
- package/sidecar/dist/{agent/claude-runner.js → providers/claude/provider.js} +118 -96
- package/sidecar/dist/providers/claude/provider.js.map +1 -0
- package/sidecar/dist/{agent/resolve-claude-binary.js → providers/claude/resolve-binary.js} +3 -3
- package/sidecar/dist/{agent/resolve-claude-binary.js.map → providers/claude/resolve-binary.js.map} +1 -1
- package/sidecar/dist/providers/claude/sdk-loader.js +16 -0
- package/sidecar/dist/providers/claude/sdk-loader.js.map +1 -0
- package/sidecar/dist/providers/codex/adapter.d.ts +7 -0
- package/sidecar/dist/providers/codex/adapter.js +147 -0
- package/sidecar/dist/providers/codex/adapter.js.map +1 -0
- package/sidecar/dist/providers/codex/attachments.d.ts +7 -0
- package/sidecar/dist/providers/codex/attachments.js +73 -0
- package/sidecar/dist/providers/codex/attachments.js.map +1 -0
- package/sidecar/dist/providers/codex/client.d.ts +34 -0
- package/sidecar/dist/providers/codex/client.js +128 -0
- package/sidecar/dist/providers/codex/client.js.map +1 -0
- package/sidecar/dist/providers/codex/config.d.ts +34 -0
- package/sidecar/dist/providers/codex/config.js +111 -0
- package/sidecar/dist/providers/codex/config.js.map +1 -0
- package/sidecar/dist/providers/codex/event-stream.d.ts +8 -0
- package/sidecar/dist/providers/codex/event-stream.js +53 -0
- package/sidecar/dist/providers/codex/event-stream.js.map +1 -0
- package/sidecar/dist/providers/codex/module.d.ts +2 -0
- package/sidecar/dist/providers/codex/module.js +54 -0
- package/sidecar/dist/providers/codex/module.js.map +1 -0
- package/sidecar/dist/providers/codex/permissions.d.ts +21 -0
- package/sidecar/dist/providers/codex/permissions.js +77 -0
- package/sidecar/dist/providers/codex/permissions.js.map +1 -0
- package/sidecar/dist/providers/codex/process.d.ts +23 -0
- package/sidecar/dist/providers/codex/process.js +208 -0
- package/sidecar/dist/providers/codex/process.js.map +1 -0
- package/sidecar/dist/providers/codex/protocol/common.d.ts +59 -0
- package/sidecar/dist/providers/codex/protocol/common.js +2 -0
- package/sidecar/dist/providers/codex/protocol/common.js.map +1 -0
- package/sidecar/dist/providers/codex/protocol/index.d.ts +3 -0
- package/sidecar/dist/providers/codex/protocol/index.js +3 -0
- package/sidecar/dist/providers/codex/protocol/index.js.map +1 -0
- package/sidecar/dist/providers/codex/protocol/serde_json.d.ts +3 -0
- package/sidecar/dist/providers/codex/protocol/serde_json.js +2 -0
- package/sidecar/dist/providers/codex/protocol/serde_json.js.map +1 -0
- package/sidecar/dist/providers/codex/protocol/v2.d.ts +481 -0
- package/sidecar/dist/providers/codex/protocol/v2.js +2 -0
- package/sidecar/dist/providers/codex/protocol/v2.js.map +1 -0
- package/sidecar/dist/providers/codex/provider.d.ts +14 -0
- package/sidecar/dist/providers/codex/provider.js +225 -0
- package/sidecar/dist/providers/codex/provider.js.map +1 -0
- package/sidecar/dist/providers/codex/resolve-binary.d.ts +10 -0
- package/sidecar/dist/providers/codex/resolve-binary.js +80 -0
- package/sidecar/dist/providers/codex/resolve-binary.js.map +1 -0
- package/sidecar/dist/providers/codex/skills.d.ts +10 -0
- package/sidecar/dist/providers/codex/skills.js +42 -0
- package/sidecar/dist/providers/codex/skills.js.map +1 -0
- package/sidecar/dist/providers/registry.d.ts +7 -0
- package/sidecar/dist/providers/registry.js +31 -0
- package/sidecar/dist/providers/registry.js.map +1 -0
- package/sidecar/dist/providers/types.d.ts +25 -0
- package/sidecar/dist/providers/types.js +5 -0
- package/sidecar/dist/providers/types.js.map +1 -0
- package/sidecar/dist/server/http.d.ts +2 -0
- package/sidecar/dist/server/http.js +26 -12
- package/sidecar/dist/server/http.js.map +1 -1
- package/sidecar/dist/server/routing.d.ts +4 -4
- package/sidecar/dist/server/routing.js +7 -1
- package/sidecar/dist/server/routing.js.map +1 -1
- package/sidecar/dist/server/ws.d.ts +2 -0
- package/sidecar/dist/server/ws.js +40 -17
- package/sidecar/dist/server/ws.js.map +1 -1
- package/sidecar/dist/skills/build-catalog.d.ts +2 -0
- package/sidecar/dist/skills/build-catalog.js +12 -1
- package/sidecar/dist/skills/build-catalog.js.map +1 -1
- package/sidecar/dist/state/conversations.d.ts +3 -1
- package/sidecar/dist/state/conversations.js +20 -0
- package/sidecar/dist/state/conversations.js.map +1 -1
- package/sidecar/dist/state/safe-segment.d.ts +1 -0
- package/sidecar/dist/state/safe-segment.js +17 -0
- package/sidecar/dist/state/safe-segment.js.map +1 -0
- package/sidecar/dist/state/settings-store.js +7 -0
- package/sidecar/dist/state/settings-store.js.map +1 -1
- package/sidecar/dist/state/settings-types.d.ts +2 -0
- package/sidecar/dist/state/settings-types.js.map +1 -1
- package/sidecar/dist/state/types.d.ts +11 -0
- package/sidecar/dist/state/types.js +7 -0
- package/sidecar/dist/state/types.js.map +1 -1
- package/sidecar/package.json +3 -0
- package/sidecar/chatbox/dist/assets/index-Cy2BwTG0.js +0 -50
- package/sidecar/dist/agent/attachments.js.map +0 -1
- package/sidecar/dist/agent/claude-runner.js.map +0 -1
- package/sidecar/dist/agent/claude-session.d.ts +0 -18
- package/sidecar/dist/agent/claude-session.js.map +0 -1
- package/sidecar/dist/agent/input-queue.js.map +0 -1
- package/sidecar/dist/agent/sdk-adapter.d.ts +0 -3
- package/sidecar/dist/agent/sdk-adapter.js.map +0 -1
- package/sidecar/dist/agent/sdk-loader.js +0 -14
- package/sidecar/dist/agent/sdk-loader.js.map +0 -1
- package/sidecar/dist/mcp/server.js.map +0 -1
- /package/sidecar/dist/mcp/{server.d.ts → sdk-binding.d.ts} +0 -0
- /package/sidecar/dist/{agent → providers/claude}/input-queue.d.ts +0 -0
- /package/sidecar/dist/{agent → providers/claude}/input-queue.js +0 -0
- /package/sidecar/dist/{agent/resolve-claude-binary.d.ts → providers/claude/resolve-binary.d.ts} +0 -0
- /package/sidecar/dist/{agent → providers/claude}/sdk-loader.d.ts +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { CODEX_REQUEST_TIMEOUT_MESSAGE, CODEX_TRANSPORT_CLOSED_MESSAGE, JSONRPC_LINE_SEPARATOR, JSONRPC_VERSION, } from "../../constants/codex.js";
|
|
2
|
+
function isServerRequest(frame) {
|
|
3
|
+
return frame.id !== undefined && frame.method !== undefined;
|
|
4
|
+
}
|
|
5
|
+
function isResponse(frame) {
|
|
6
|
+
return frame.id !== undefined && frame.method === undefined;
|
|
7
|
+
}
|
|
8
|
+
function parseFrame(line) {
|
|
9
|
+
try {
|
|
10
|
+
const parsed = JSON.parse(line);
|
|
11
|
+
return typeof parsed === "object" && parsed !== null ? parsed : null;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function createCodexClient(stdin, stdout, handlers) {
|
|
18
|
+
const pending = new Map();
|
|
19
|
+
let nextId = 1;
|
|
20
|
+
let buffer = "";
|
|
21
|
+
let aborted = null;
|
|
22
|
+
function write(payload) {
|
|
23
|
+
if (aborted !== null)
|
|
24
|
+
return;
|
|
25
|
+
stdin.write(`${JSON.stringify({ jsonrpc: JSONRPC_VERSION, ...payload })}${JSONRPC_LINE_SEPARATOR}`);
|
|
26
|
+
}
|
|
27
|
+
function abort(reason) {
|
|
28
|
+
if (aborted !== null)
|
|
29
|
+
return;
|
|
30
|
+
aborted = reason;
|
|
31
|
+
const waiters = [...pending.values()];
|
|
32
|
+
pending.clear();
|
|
33
|
+
for (const waiter of waiters)
|
|
34
|
+
waiter.reject(reason);
|
|
35
|
+
}
|
|
36
|
+
function settleResponse(frame) {
|
|
37
|
+
const id = Number(frame.id);
|
|
38
|
+
const waiter = pending.get(id);
|
|
39
|
+
if (waiter === undefined)
|
|
40
|
+
return;
|
|
41
|
+
pending.delete(id);
|
|
42
|
+
waiter.settle(frame);
|
|
43
|
+
}
|
|
44
|
+
function serveRequest(frame) {
|
|
45
|
+
const id = frame.id;
|
|
46
|
+
handlers
|
|
47
|
+
.onServerRequest({
|
|
48
|
+
id,
|
|
49
|
+
method: frame.method,
|
|
50
|
+
params: frame.params,
|
|
51
|
+
})
|
|
52
|
+
.then((result) => write({ id, result }))
|
|
53
|
+
.catch((error) => {
|
|
54
|
+
write({ id, error: { code: -32603, message: error.message } });
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function dispatch(frame) {
|
|
58
|
+
if (isServerRequest(frame)) {
|
|
59
|
+
serveRequest(frame);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (isResponse(frame)) {
|
|
63
|
+
settleResponse(frame);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (frame.method === undefined)
|
|
67
|
+
return;
|
|
68
|
+
handlers.onNotification({ method: frame.method, params: frame.params });
|
|
69
|
+
}
|
|
70
|
+
function consume(chunk) {
|
|
71
|
+
buffer += chunk;
|
|
72
|
+
const lines = buffer.split(JSONRPC_LINE_SEPARATOR);
|
|
73
|
+
buffer = lines.pop() ?? "";
|
|
74
|
+
for (const line of lines) {
|
|
75
|
+
if (line.trim() === "")
|
|
76
|
+
continue;
|
|
77
|
+
const frame = parseFrame(line);
|
|
78
|
+
if (frame !== null)
|
|
79
|
+
dispatch(frame);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function trackRequest(id, options) {
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
84
|
+
const timer = options?.timeoutMs === undefined
|
|
85
|
+
? null
|
|
86
|
+
: setTimeout(() => {
|
|
87
|
+
pending.delete(id);
|
|
88
|
+
reject(new Error(CODEX_REQUEST_TIMEOUT_MESSAGE));
|
|
89
|
+
}, options.timeoutMs);
|
|
90
|
+
const clear = () => {
|
|
91
|
+
if (timer !== null)
|
|
92
|
+
clearTimeout(timer);
|
|
93
|
+
};
|
|
94
|
+
pending.set(id, {
|
|
95
|
+
reject: (reason) => {
|
|
96
|
+
clear();
|
|
97
|
+
reject(reason);
|
|
98
|
+
},
|
|
99
|
+
settle: (frame) => {
|
|
100
|
+
clear();
|
|
101
|
+
if (frame.error !== undefined) {
|
|
102
|
+
reject(new Error(frame.error.message));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
resolve(frame.result);
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
stdout.setEncoding("utf8");
|
|
111
|
+
stdout.on("data", (chunk) => consume(chunk));
|
|
112
|
+
stdout.on("close", () => abort(new Error(CODEX_TRANSPORT_CLOSED_MESSAGE)));
|
|
113
|
+
return {
|
|
114
|
+
request(method, params, options) {
|
|
115
|
+
if (aborted !== null)
|
|
116
|
+
return Promise.reject(aborted);
|
|
117
|
+
const id = nextId++;
|
|
118
|
+
const settled = trackRequest(id, options);
|
|
119
|
+
write({ id, method, params: params ?? {} });
|
|
120
|
+
return settled;
|
|
121
|
+
},
|
|
122
|
+
notify(method, params) {
|
|
123
|
+
write({ method, params: params ?? {} });
|
|
124
|
+
},
|
|
125
|
+
abort,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/providers/codex/client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,sBAAsB,EACtB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AA+DlC,SAAS,eAAe,CAAC,KAAmB;IAC1C,OAAO,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,KAAmB;IACrC,OAAO,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC;QAChD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAe,EACf,MAAgB,EAChB,QAA6B;IAE7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAClD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,GAAiB,IAAI,CAAC;IAEjC,SAAS,KAAK,CAAC,OAAgC;QAC7C,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAC7B,KAAK,CAAC,KAAK,CACT,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,sBAAsB,EAAE,CACvF,CAAC;IACJ,CAAC;IAED,SAAS,KAAK,CAAC,MAAa;QAC1B,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAC7B,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,SAAS,cAAc,CAAC,KAAmB;QACzC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,SAAS,YAAY,CAAC,KAAmB;QACvC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAqB,CAAC;QACvC,QAAQ;aACL,eAAe,CAAC;YACf,EAAE;YACF,MAAM,EAAE,KAAK,CAAC,MAAgB;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;aACD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;aACvC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;YACtB,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,QAAQ,CAAC,KAAmB;QACnC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO;QACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS,OAAO,CAAC,KAAa;QAC5B,MAAM,IAAI,KAAK,CAAC;QAChB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACnD,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,SAAS;YACjC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,IAAI;gBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,SAAS,YAAY,CACnB,EAAU,EACV,OAAwC;QAExC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,KAAK,GACT,OAAO,EAAE,SAAS,KAAK,SAAS;gBAC9B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBACnD,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,GAAS,EAAE;gBACvB,IAAI,KAAK,KAAK,IAAI;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;gBACd,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;oBACjB,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjB,CAAC;gBACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,KAAK,EAAE,CAAC;oBACR,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;wBACvC,OAAO;oBACT,CAAC;oBACD,OAAO,CAAC,KAAK,CAAC,MAAW,CAAC,CAAC;gBAC7B,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAIrD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC;IAE3E,OAAO;QACL,OAAO,CACL,MAAc,EACd,MAAgB,EAChB,OAA6B;YAE7B,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,YAAY,CAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAC7C,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,MAAc,EAAE,MAAgB;YACrC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { AppSettings, ChatboxMode, ThinkingLevel } from "../../state/settings-types.js";
|
|
2
|
+
import type { v2 } from "./protocol/index.js";
|
|
3
|
+
export interface CodexModePolicy {
|
|
4
|
+
approvalPolicy: v2.AskForApproval;
|
|
5
|
+
sandbox: v2.SandboxMode;
|
|
6
|
+
networkAccess: boolean;
|
|
7
|
+
writable: boolean;
|
|
8
|
+
autoDeclineEscalations: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const CODEX_MODE_POLICIES: Record<ChatboxMode, CodexModePolicy>;
|
|
11
|
+
export declare const CODEX_EFFORT_BY_THINKING: Record<ThinkingLevel, string>;
|
|
12
|
+
export interface CodexTurnOverrides {
|
|
13
|
+
approvalPolicy: v2.AskForApproval;
|
|
14
|
+
sandboxPolicy: v2.SandboxPolicy;
|
|
15
|
+
effort: string;
|
|
16
|
+
}
|
|
17
|
+
export interface CodexWorkspace {
|
|
18
|
+
hostProjectRoot: string;
|
|
19
|
+
moduleRoots: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export declare function resolveModePolicy(settings: AppSettings): CodexModePolicy;
|
|
22
|
+
export declare function buildTurnOverrides(settings: AppSettings, workspace: CodexWorkspace): CodexTurnOverrides;
|
|
23
|
+
export interface CodexConfigInput {
|
|
24
|
+
mcpUrl: string;
|
|
25
|
+
hostProjectRoot: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function buildConfigToml(input: CodexConfigInput): string;
|
|
28
|
+
export interface CodexAuthFile {
|
|
29
|
+
auth_mode: string;
|
|
30
|
+
OPENAI_API_KEY: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function buildAuthFile(apiKey: string): CodexAuthFile;
|
|
33
|
+
export declare function buildDeveloperInstructions(settings: AppSettings): string | undefined;
|
|
34
|
+
export declare function buildDenialReminder(settings: AppSettings, consecutiveDenials: number): string | undefined;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { effectiveGenerationMode } from "../../builder/capability.js";
|
|
3
|
+
import { CODEX_AUTH_MODE_API_KEY, CODEX_DENIAL_REMINDER_COUNT_TOKEN, CODEX_DENIAL_REMINDER_TEMPLATE, CODEX_DENIAL_REMINDER_THRESHOLD, CODEX_MCP_SERVER_ID, CODEX_MCP_TOKEN_ENV_VAR, } from "../../constants/codex.js";
|
|
4
|
+
import { SAFE_MODE_DENIED_MESSAGE } from "../../constants/settings.js";
|
|
5
|
+
export const CODEX_MODE_POLICIES = {
|
|
6
|
+
normal: {
|
|
7
|
+
approvalPolicy: "on-request",
|
|
8
|
+
sandbox: "read-only",
|
|
9
|
+
networkAccess: false,
|
|
10
|
+
writable: false,
|
|
11
|
+
autoDeclineEscalations: false,
|
|
12
|
+
},
|
|
13
|
+
acceptEdits: {
|
|
14
|
+
approvalPolicy: "on-request",
|
|
15
|
+
sandbox: "workspace-write",
|
|
16
|
+
networkAccess: false,
|
|
17
|
+
writable: true,
|
|
18
|
+
autoDeclineEscalations: false,
|
|
19
|
+
},
|
|
20
|
+
plan: {
|
|
21
|
+
approvalPolicy: "on-request",
|
|
22
|
+
sandbox: "read-only",
|
|
23
|
+
networkAccess: false,
|
|
24
|
+
writable: false,
|
|
25
|
+
autoDeclineEscalations: true,
|
|
26
|
+
},
|
|
27
|
+
auto: {
|
|
28
|
+
approvalPolicy: "never",
|
|
29
|
+
sandbox: "danger-full-access",
|
|
30
|
+
networkAccess: true,
|
|
31
|
+
writable: true,
|
|
32
|
+
autoDeclineEscalations: false,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
export const CODEX_EFFORT_BY_THINKING = {
|
|
36
|
+
off: "low",
|
|
37
|
+
low: "low",
|
|
38
|
+
medium: "medium",
|
|
39
|
+
high: "high",
|
|
40
|
+
};
|
|
41
|
+
function writableRoots(workspace) {
|
|
42
|
+
const roots = [workspace.hostProjectRoot, ...workspace.moduleRoots];
|
|
43
|
+
return [...new Set(roots.map((root) => path.resolve(root)))];
|
|
44
|
+
}
|
|
45
|
+
function buildSandboxPolicy(policy, workspace) {
|
|
46
|
+
if (policy.sandbox === "danger-full-access")
|
|
47
|
+
return { type: "dangerFullAccess" };
|
|
48
|
+
if (!policy.writable) {
|
|
49
|
+
return { type: "readOnly", networkAccess: policy.networkAccess };
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
type: "workspaceWrite",
|
|
53
|
+
writableRoots: writableRoots(workspace),
|
|
54
|
+
networkAccess: policy.networkAccess,
|
|
55
|
+
excludeTmpdirEnvVar: false,
|
|
56
|
+
excludeSlashTmp: false,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function resolveModePolicy(settings) {
|
|
60
|
+
const base = CODEX_MODE_POLICIES[settings.mode];
|
|
61
|
+
if (effectiveGenerationMode(settings.generationMode) !== "safe")
|
|
62
|
+
return base;
|
|
63
|
+
return {
|
|
64
|
+
...base,
|
|
65
|
+
sandbox: "read-only",
|
|
66
|
+
writable: false,
|
|
67
|
+
networkAccess: false,
|
|
68
|
+
autoDeclineEscalations: true,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function buildTurnOverrides(settings, workspace) {
|
|
72
|
+
const policy = resolveModePolicy(settings);
|
|
73
|
+
return {
|
|
74
|
+
approvalPolicy: policy.approvalPolicy,
|
|
75
|
+
sandboxPolicy: buildSandboxPolicy(policy, workspace),
|
|
76
|
+
effort: CODEX_EFFORT_BY_THINKING[settings.thinking],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function tomlString(value) {
|
|
80
|
+
return JSON.stringify(value);
|
|
81
|
+
}
|
|
82
|
+
export function buildConfigToml(input) {
|
|
83
|
+
return [
|
|
84
|
+
"project_doc_max_bytes = 0",
|
|
85
|
+
"",
|
|
86
|
+
`[mcp_servers.${CODEX_MCP_SERVER_ID}]`,
|
|
87
|
+
`url = ${tomlString(input.mcpUrl)}`,
|
|
88
|
+
`bearer_token_env_var = ${tomlString(CODEX_MCP_TOKEN_ENV_VAR)}`,
|
|
89
|
+
"",
|
|
90
|
+
`[projects.${tomlString(path.resolve(input.hostProjectRoot))}]`,
|
|
91
|
+
'trust_level = "untrusted"',
|
|
92
|
+
"",
|
|
93
|
+
].join("\n");
|
|
94
|
+
}
|
|
95
|
+
export function buildAuthFile(apiKey) {
|
|
96
|
+
return { auth_mode: CODEX_AUTH_MODE_API_KEY, OPENAI_API_KEY: apiKey };
|
|
97
|
+
}
|
|
98
|
+
function isSafeMode(settings) {
|
|
99
|
+
return effectiveGenerationMode(settings.generationMode) === "safe";
|
|
100
|
+
}
|
|
101
|
+
export function buildDeveloperInstructions(settings) {
|
|
102
|
+
return isSafeMode(settings) ? SAFE_MODE_DENIED_MESSAGE : undefined;
|
|
103
|
+
}
|
|
104
|
+
export function buildDenialReminder(settings, consecutiveDenials) {
|
|
105
|
+
if (!isSafeMode(settings))
|
|
106
|
+
return undefined;
|
|
107
|
+
if (consecutiveDenials < CODEX_DENIAL_REMINDER_THRESHOLD)
|
|
108
|
+
return undefined;
|
|
109
|
+
return CODEX_DENIAL_REMINDER_TEMPLATE.replace(CODEX_DENIAL_REMINDER_COUNT_TOKEN, String(consecutiveDenials));
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/providers/codex/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RunnerEvent } from "../../agent/runner-events.js";
|
|
2
|
+
export interface RunnerEventStream {
|
|
3
|
+
push(event: RunnerEvent): void;
|
|
4
|
+
end(): void;
|
|
5
|
+
fail(reason: Error): void;
|
|
6
|
+
iterator: AsyncIterator<RunnerEvent, void>;
|
|
7
|
+
}
|
|
8
|
+
export declare function createRunnerEventStream(): RunnerEventStream;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export function createRunnerEventStream() {
|
|
2
|
+
const buffered = [];
|
|
3
|
+
let waiter = null;
|
|
4
|
+
let ended = false;
|
|
5
|
+
let failure = null;
|
|
6
|
+
function takeWaiter() {
|
|
7
|
+
const pending = waiter;
|
|
8
|
+
waiter = null;
|
|
9
|
+
return pending;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
push(event) {
|
|
13
|
+
if (ended)
|
|
14
|
+
return;
|
|
15
|
+
const pending = takeWaiter();
|
|
16
|
+
if (pending !== null) {
|
|
17
|
+
pending.resolve({ value: event, done: false });
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
buffered.push(event);
|
|
21
|
+
},
|
|
22
|
+
end() {
|
|
23
|
+
if (ended)
|
|
24
|
+
return;
|
|
25
|
+
ended = true;
|
|
26
|
+
takeWaiter()?.resolve({ value: undefined, done: true });
|
|
27
|
+
},
|
|
28
|
+
fail(reason) {
|
|
29
|
+
if (ended)
|
|
30
|
+
return;
|
|
31
|
+
ended = true;
|
|
32
|
+
failure = reason;
|
|
33
|
+
takeWaiter()?.reject(reason);
|
|
34
|
+
},
|
|
35
|
+
iterator: {
|
|
36
|
+
next: () => {
|
|
37
|
+
const queued = buffered.shift();
|
|
38
|
+
if (queued !== undefined) {
|
|
39
|
+
return Promise.resolve({ value: queued, done: false });
|
|
40
|
+
}
|
|
41
|
+
if (failure !== null)
|
|
42
|
+
return Promise.reject(failure);
|
|
43
|
+
if (ended) {
|
|
44
|
+
return Promise.resolve({ value: undefined, done: true });
|
|
45
|
+
}
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
waiter = { resolve, reject };
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=event-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-stream.js","sourceRoot":"","sources":["../../../src/providers/codex/event-stream.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,uBAAuB;IACrC,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,OAAO,GAAiB,IAAI,CAAC;IAEjC,SAAS,UAAU;QACjB,MAAM,OAAO,GAAG,MAAM,CAAC;QACvB,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK;YACR,IAAI,KAAK;gBAAE,OAAO;YAClB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,GAAG;YACD,IAAI,KAAK;gBAAE,OAAO;YAClB,KAAK,GAAG,IAAI,CAAC;YACb,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,MAAM;YACT,IAAI,KAAK;gBAAE,OAAO;YAClB,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,GAAG,MAAM,CAAC;YACjB,UAAU,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,GAAG,EAAE;gBACT,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzD,CAAC;gBACD,IAAI,OAAO,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,OAAO,IAAI,OAAO,CAChB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAClB,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC/B,CAAC,CACF,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CODEX_LOG_PREFIX, MOCK_CODEX_FLAG_ENABLED, MOCK_CODEX_FLAG_ENV, OPENAI_API_KEY_ENV_VAR, } from "../../constants/codex.js";
|
|
2
|
+
import { PROVIDER_UNAVAILABLE_REASONS } from "../../constants/providers.js";
|
|
3
|
+
import { AVAILABLE, unavailable, } from "../types.js";
|
|
4
|
+
import { reapOrphanCodexProcesses } from "./process.js";
|
|
5
|
+
import { createCodexProvider } from "./provider.js";
|
|
6
|
+
import { describeVersionMismatch, isCodexInstallationUsable, isVersionGateWaived, resolveCodexInstallation, } from "./resolve-binary.js";
|
|
7
|
+
let installVerdict = null;
|
|
8
|
+
function computeInstallVerdict() {
|
|
9
|
+
const installation = resolveCodexInstallation();
|
|
10
|
+
if (installation === undefined) {
|
|
11
|
+
return unavailable(PROVIDER_UNAVAILABLE_REASONS.CODEX_CLI_MISSING);
|
|
12
|
+
}
|
|
13
|
+
if (!isCodexInstallationUsable(installation)) {
|
|
14
|
+
return unavailable(describeVersionMismatch(installation));
|
|
15
|
+
}
|
|
16
|
+
if (isVersionGateWaived()) {
|
|
17
|
+
console.warn(`${CODEX_LOG_PREFIX} ${describeVersionMismatch(installation)}`);
|
|
18
|
+
}
|
|
19
|
+
return AVAILABLE;
|
|
20
|
+
}
|
|
21
|
+
function isMockCodex() {
|
|
22
|
+
return process.env[MOCK_CODEX_FLAG_ENV] === MOCK_CODEX_FLAG_ENABLED;
|
|
23
|
+
}
|
|
24
|
+
function readInstallVerdict() {
|
|
25
|
+
if (isMockCodex())
|
|
26
|
+
return computeInstallVerdict();
|
|
27
|
+
installVerdict ??= computeInstallVerdict();
|
|
28
|
+
return installVerdict;
|
|
29
|
+
}
|
|
30
|
+
function checkAvailability() {
|
|
31
|
+
const installed = readInstallVerdict();
|
|
32
|
+
if (!installed.available)
|
|
33
|
+
return installed;
|
|
34
|
+
if (process.env[OPENAI_API_KEY_ENV_VAR] === undefined) {
|
|
35
|
+
return unavailable(PROVIDER_UNAVAILABLE_REASONS.CODEX_API_KEY_MISSING);
|
|
36
|
+
}
|
|
37
|
+
return AVAILABLE;
|
|
38
|
+
}
|
|
39
|
+
export const codexModule = {
|
|
40
|
+
name: "codex",
|
|
41
|
+
create: (options, runtime) => createCodexProvider({
|
|
42
|
+
...options,
|
|
43
|
+
stateDir: runtime.stateDir,
|
|
44
|
+
mcpHttpRegistry: runtime.mcpHttpRegistry,
|
|
45
|
+
getMcpUrl: runtime.getMcpUrl,
|
|
46
|
+
createMcpDeps: runtime.createMcpDeps,
|
|
47
|
+
getApiKey: () => process.env[OPENAI_API_KEY_ENV_VAR],
|
|
48
|
+
}),
|
|
49
|
+
checkAvailability,
|
|
50
|
+
reapOrphans: async (stateDir) => {
|
|
51
|
+
await reapOrphanCodexProcesses(stateDir);
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/providers/codex/module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EACL,SAAS,EAGT,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAM7B,IAAI,cAAc,GAAgC,IAAI,CAAC;AAEvD,SAAS,qBAAqB;IAC5B,MAAM,YAAY,GAAG,wBAAwB,EAAE,CAAC;IAChD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7C,OAAO,WAAW,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5D,CAAC;IAGD,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CACV,GAAG,gBAAgB,IAAI,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAC/D,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,uBAAuB,CAAC;AACtE,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,WAAW,EAAE;QAAE,OAAO,qBAAqB,EAAE,CAAC;IAClD,cAAc,KAAK,qBAAqB,EAAE,CAAC;IAC3C,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,CAAC,SAAS,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAG3C,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,WAAW,CAAC,4BAA4B,CAAC,qBAAqB,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAC3B,mBAAmB,CAAC;QAClB,GAAG,OAAO;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;QAGpC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;KACrD,CAAC;IACJ,iBAAiB;IAGjB,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC9B,MAAM,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { PermissionBus } from "../../agent/permission-bus.js";
|
|
2
|
+
import { type PermissionDecision } from "../../constants/permissions.js";
|
|
3
|
+
import type { AppSettings } from "../../state/settings-types.js";
|
|
4
|
+
import type { CodexServerRequest } from "./client.js";
|
|
5
|
+
export interface CodexApprovalDecisionResponse {
|
|
6
|
+
decision: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CodexPermissionDeps {
|
|
9
|
+
conversationId: string;
|
|
10
|
+
permissionBus?: PermissionBus;
|
|
11
|
+
getSettings: () => AppSettings;
|
|
12
|
+
getChangedPaths: (itemId: string) => string[];
|
|
13
|
+
onPermissionDecision?: (toolName: string, decision: PermissionDecision) => void;
|
|
14
|
+
}
|
|
15
|
+
export interface CodexPermissionHandler {
|
|
16
|
+
handle(request: CodexServerRequest): Promise<CodexApprovalDecisionResponse>;
|
|
17
|
+
cancelPending(): void;
|
|
18
|
+
resume(): void;
|
|
19
|
+
consecutiveDenials(): number;
|
|
20
|
+
}
|
|
21
|
+
export declare function createCodexPermissionHandler(deps: CodexPermissionDeps): CodexPermissionHandler;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { CODEX_APPROVAL_DECISIONS, CODEX_COMMAND_APPROVAL_METHOD, CODEX_FILE_CHANGE_APPROVAL_METHOD, CODEX_LOG_PREFIX, CODEX_UNKNOWN_APPROVAL_METHOD, } from "../../constants/codex.js";
|
|
2
|
+
import { PERMISSION_DECISIONS, } from "../../constants/permissions.js";
|
|
3
|
+
import { BASH_COMMAND_ARG, EDIT_FILE_PATH_ARG, TOOL_LEXICON, } from "../../constants/tool-lexicon.js";
|
|
4
|
+
import { resolveModePolicy } from "./config.js";
|
|
5
|
+
const ACCEPTING_DECISIONS = [
|
|
6
|
+
PERMISSION_DECISIONS.ALLOW_ONCE,
|
|
7
|
+
PERMISSION_DECISIONS.ALLOW_SESSION,
|
|
8
|
+
];
|
|
9
|
+
function accept() {
|
|
10
|
+
return { decision: CODEX_APPROVAL_DECISIONS.ACCEPT };
|
|
11
|
+
}
|
|
12
|
+
function decline() {
|
|
13
|
+
return { decision: CODEX_APPROVAL_DECISIONS.DECLINE };
|
|
14
|
+
}
|
|
15
|
+
export function createCodexPermissionHandler(deps) {
|
|
16
|
+
let denials = 0;
|
|
17
|
+
let cancelled = false;
|
|
18
|
+
function describeCommand(params) {
|
|
19
|
+
const { command } = params;
|
|
20
|
+
return {
|
|
21
|
+
toolName: TOOL_LEXICON.BASH,
|
|
22
|
+
args: { [BASH_COMMAND_ARG]: command ?? "" },
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function describeFileChange(params) {
|
|
26
|
+
const { itemId } = params;
|
|
27
|
+
const paths = itemId === undefined ? [] : deps.getChangedPaths(itemId);
|
|
28
|
+
return {
|
|
29
|
+
toolName: TOOL_LEXICON.EDIT,
|
|
30
|
+
args: { [EDIT_FILE_PATH_ARG]: paths[0] ?? "" },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const SUBJECT_BY_METHOD = {
|
|
34
|
+
[CODEX_COMMAND_APPROVAL_METHOD]: describeCommand,
|
|
35
|
+
[CODEX_FILE_CHANGE_APPROVAL_METHOD]: describeFileChange,
|
|
36
|
+
};
|
|
37
|
+
function record(subject, decision) {
|
|
38
|
+
deps.onPermissionDecision?.(subject.toolName, decision);
|
|
39
|
+
denials = decision === PERMISSION_DECISIONS.DENY ? denials + 1 : 0;
|
|
40
|
+
}
|
|
41
|
+
async function ask(subject) {
|
|
42
|
+
if (deps.permissionBus === undefined)
|
|
43
|
+
return decline();
|
|
44
|
+
const decision = await deps.permissionBus.requestPermission({
|
|
45
|
+
conversationId: deps.conversationId,
|
|
46
|
+
toolName: subject.toolName,
|
|
47
|
+
args: subject.args,
|
|
48
|
+
});
|
|
49
|
+
record(subject, decision);
|
|
50
|
+
return ACCEPTING_DECISIONS.includes(decision) ? accept() : decline();
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
async handle(request) {
|
|
54
|
+
const describe = SUBJECT_BY_METHOD[request.method];
|
|
55
|
+
if (describe === undefined) {
|
|
56
|
+
console.warn(`${CODEX_LOG_PREFIX} ${CODEX_UNKNOWN_APPROVAL_METHOD} ${request.method}`);
|
|
57
|
+
return decline();
|
|
58
|
+
}
|
|
59
|
+
if (cancelled)
|
|
60
|
+
return decline();
|
|
61
|
+
const subject = describe(request.params);
|
|
62
|
+
if (resolveModePolicy(deps.getSettings()).autoDeclineEscalations) {
|
|
63
|
+
record(subject, PERMISSION_DECISIONS.DENY);
|
|
64
|
+
return decline();
|
|
65
|
+
}
|
|
66
|
+
return ask(subject);
|
|
67
|
+
},
|
|
68
|
+
cancelPending: () => {
|
|
69
|
+
cancelled = true;
|
|
70
|
+
},
|
|
71
|
+
resume: () => {
|
|
72
|
+
cancelled = false;
|
|
73
|
+
},
|
|
74
|
+
consecutiveDenials: () => denials,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/providers/codex/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CodexClient, CodexClientHandlers } from "./client.js";
|
|
2
|
+
import type { CodexInstallation } from "./resolve-binary.js";
|
|
3
|
+
export interface CodexProcessOptions {
|
|
4
|
+
conversationId: string;
|
|
5
|
+
stateDir: string;
|
|
6
|
+
installation: CodexInstallation;
|
|
7
|
+
mcpUrl: string;
|
|
8
|
+
mcpToken: string;
|
|
9
|
+
hostProjectRoot: string;
|
|
10
|
+
apiKey: string;
|
|
11
|
+
handlers: CodexClientHandlers;
|
|
12
|
+
}
|
|
13
|
+
export interface CodexProcess {
|
|
14
|
+
client: CodexClient;
|
|
15
|
+
codexHome: string;
|
|
16
|
+
pid: number | undefined;
|
|
17
|
+
dispose: () => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export declare function codexHomeFor(stateDir: string, conversationId: string): string;
|
|
20
|
+
export declare function readProcessCommand(pid: number): string | undefined;
|
|
21
|
+
export declare function isCodexProcess(pid: number): boolean;
|
|
22
|
+
export declare function reapOrphanCodexProcesses(stateDir: string): Promise<number[]>;
|
|
23
|
+
export declare function spawnCodexProcess(options: CodexProcessOptions): Promise<CodexProcess>;
|