cyrus-codex-runner 0.2.74-cypack1546.0 → 0.2.76
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/CodexEventMapper.d.ts.map +1 -1
- package/dist/CodexEventMapper.js +0 -12
- package/dist/CodexEventMapper.js.map +1 -1
- package/dist/CodexRunner.d.ts +0 -2
- package/dist/CodexRunner.d.ts.map +1 -1
- package/dist/CodexRunner.js +1 -16
- package/dist/CodexRunner.js.map +1 -1
- package/dist/backend/appServerClient.d.ts +0 -6
- package/dist/backend/appServerClient.d.ts.map +1 -1
- package/dist/backend/appServerClient.js +3 -75
- package/dist/backend/appServerClient.js.map +1 -1
- package/dist/backend/appServerEvents.d.ts.map +1 -1
- package/dist/backend/appServerEvents.js +0 -16
- package/dist/backend/appServerEvents.js.map +1 -1
- package/dist/backend/types.d.ts +0 -7
- package/dist/backend/types.d.ts.map +1 -1
- package/dist/config/CodexConfigBuilder.d.ts.map +1 -1
- package/dist/config/CodexConfigBuilder.js +6 -5
- package/dist/config/CodexConfigBuilder.js.map +1 -1
- package/dist/config/sandboxPolicy.d.ts +3 -3
- package/dist/config/sandboxPolicy.d.ts.map +1 -1
- package/dist/config/sandboxPolicy.js +14 -18
- package/dist/config/sandboxPolicy.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +6 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -11
- package/dist/backend/CodexLoginBroker.d.ts +0 -20
- package/dist/backend/CodexLoginBroker.d.ts.map +0 -1
- package/dist/backend/CodexLoginBroker.js +0 -252
- package/dist/backend/CodexLoginBroker.js.map +0 -1
- package/dist/backend/ContainedCodexProcess.d.ts +0 -48
- package/dist/backend/ContainedCodexProcess.d.ts.map +0 -1
- package/dist/backend/ContainedCodexProcess.js +0 -306
- package/dist/backend/ContainedCodexProcess.js.map +0 -1
|
@@ -7,15 +7,17 @@ function uniqueAbsolute(paths) {
|
|
|
7
7
|
/**
|
|
8
8
|
* Resolve the per-thread sandbox decision.
|
|
9
9
|
*
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
12
|
-
* - `sandboxSettings`
|
|
10
|
+
* - Explicit read-only/full-access modes or no `sandboxSettings` use the
|
|
11
|
+
* corresponding native Codex mode.
|
|
12
|
+
* - Workspace-write with `sandboxSettings` uses a granular `profile` that restricts
|
|
13
13
|
* reads to an allow-list (worktree + platform defaults + explicit reads) and
|
|
14
14
|
* writes to the worktree + explicit writable roots.
|
|
15
15
|
*/
|
|
16
16
|
export function resolveCodexSandbox(input) {
|
|
17
17
|
const { mode, workingDirectory, writableRoots, networkAccess } = input;
|
|
18
|
-
|
|
18
|
+
// Explicit native modes take precedence over generated filesystem profiles.
|
|
19
|
+
// A root-writable profile still applies OS sandbox restrictions on macOS.
|
|
20
|
+
if (!input.sandboxSettings || mode !== "workspace-write") {
|
|
19
21
|
return {
|
|
20
22
|
kind: "workspace-mode",
|
|
21
23
|
mode,
|
|
@@ -32,20 +34,14 @@ export function resolveCodexSandbox(input) {
|
|
|
32
34
|
const writableAbs = uniqueAbsolute([...writableRoots, ...allowWrite]).filter((p) => p !== cwd);
|
|
33
35
|
// Readable-only roots: explicit reads not already writable / the worktree.
|
|
34
36
|
const readableAbs = uniqueAbsolute(allowRead).filter((p) => p !== cwd && !writableAbs.includes(p));
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
":workspace_roots": workspaceAccess,
|
|
44
|
-
":tmpdir": "write",
|
|
45
|
-
":slash_tmp": "write",
|
|
46
|
-
...Object.fromEntries(writableAbs.map((p) => [p, "write"])),
|
|
47
|
-
...Object.fromEntries(readableAbs.map((p) => [p, "read"])),
|
|
48
|
-
};
|
|
37
|
+
const filesystem = {
|
|
38
|
+
":minimal": "read",
|
|
39
|
+
":workspace_roots": "write",
|
|
40
|
+
":tmpdir": "write",
|
|
41
|
+
":slash_tmp": "write",
|
|
42
|
+
...Object.fromEntries(writableAbs.map((p) => [p, "write"])),
|
|
43
|
+
...Object.fromEntries(readableAbs.map((p) => [p, "read"])),
|
|
44
|
+
};
|
|
49
45
|
return {
|
|
50
46
|
kind: "profile",
|
|
51
47
|
profileId: CYRUS_SANDBOX_PROFILE_ID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxPolicy.js","sourceRoot":"","sources":["../../src/config/sandboxPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC,oEAAoE;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAgCxD,SAAS,cAAc,CAAC,KAAe;IACtC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAClC,KAA0B;IAE1B,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAEvE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sandboxPolicy.js","sourceRoot":"","sources":["../../src/config/sandboxPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC,oEAAoE;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAgCxD,SAAS,cAAc,CAAC,KAAe;IACtC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAClC,KAA0B;IAE1B,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAEvE,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC1D,OAAO;YACN,IAAI,EAAE,gBAAgB;YACtB,IAAI;YACJ,aAAa,EAAE,cAAc,CAAC;gBAC7B,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,GAAG,aAAa;aAChB,CAAC;YACF,aAAa;SACb,CAAC;IACH,CAAC;IAED,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC;IAClE,MAAM,GAAG,GAAG,gBAAgB,CAAC;IAC7B,iFAAiF;IACjF,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAC3E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAChB,CAAC;IACF,2EAA2E;IAC3E,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC5C,CAAC;IAEF,MAAM,UAAU,GAA0C;QACzD,UAAU,EAAE,MAAM;QAClB,kBAAkB,EAAE,OAAO;QAC3B,SAAS,EAAE,OAAO;QAClB,YAAY,EAAE,OAAO;QACrB,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAgB,CAAC,CAAC,CAAC;QACpE,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAe,CAAC,CAAC,CAAC;KACnE,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,wBAAwB;QACnC,UAAU;QACV,aAAa;KACb,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
export { translateAppServerItem } from "./backend/appServerEvents.js";
|
|
2
|
-
export { CodexLoginBroker } from "./backend/CodexLoginBroker.js";
|
|
3
|
-
export { type ContainedCodexConfig, ContainedCodexProcess, type ContainedModelRequest, type ContainedModelResponse, } from "./backend/ContainedCodexProcess.js";
|
|
4
1
|
export type { NormalizedCodexEvent, NormalizedCodexItem, } from "./backend/types.js";
|
|
5
2
|
export { CodexEventMapper, type MapperContext } from "./CodexEventMapper.js";
|
|
6
3
|
export { CodexRunner } from "./CodexRunner.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACX,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GAChB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
export { translateAppServerItem } from "./backend/appServerEvents.js";
|
|
2
|
-
export { CodexLoginBroker } from "./backend/CodexLoginBroker.js";
|
|
3
|
-
export { ContainedCodexProcess, } from "./backend/ContainedCodexProcess.js";
|
|
4
1
|
export { CodexEventMapper } from "./CodexEventMapper.js";
|
|
5
2
|
export { CodexRunner } from "./CodexRunner.js";
|
|
6
3
|
export { SimpleCodexRunner } from "./SimpleCodexRunner.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -18,8 +18,6 @@ export interface CodexRunnerConfig extends AgentRunnerConfig {
|
|
|
18
18
|
* Defaults to process `CODEX_HOME`, then `~/.codex`.
|
|
19
19
|
*/
|
|
20
20
|
codexHome?: string;
|
|
21
|
-
/** Own a separate normal app-server process whose shutdown can be awaited. */
|
|
22
|
-
dedicatedProcess?: boolean;
|
|
23
21
|
/**
|
|
24
22
|
* Override Codex reasoning effort.
|
|
25
23
|
* If omitted, CodexRunner applies a safe default for known model constraints.
|
|
@@ -45,6 +43,12 @@ export interface CodexRunnerConfig extends AgentRunnerConfig {
|
|
|
45
43
|
* coarse default mode. Paths must be absolute.
|
|
46
44
|
*/
|
|
47
45
|
sandboxSettings?: CyrusSandboxFilesystem;
|
|
46
|
+
/**
|
|
47
|
+
* Extra absolute paths made writable on top of the worktree (operator
|
|
48
|
+
* whitelist, e.g. `~/.supabase`). Applied in both the default
|
|
49
|
+
* workspace-write mode and the granular `sandboxSettings` profile.
|
|
50
|
+
*/
|
|
51
|
+
writableRoots?: string[];
|
|
48
52
|
}
|
|
49
53
|
/**
|
|
50
54
|
* Session metadata for CodexRunner.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACX,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,MAAM,gBAAgB,GACzB,MAAM,GACN,MAAM,GACN,OAAO,GACP,gBAAgB,EAAE,GAClB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,oBAAoB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC3D,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACX,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,MAAM,gBAAgB,GACzB,MAAM,GACN,MAAM,GACN,OAAO,GACP,gBAAgB,EAAE,GAClB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,oBAAoB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC3D,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,kDAAkD;IAClD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,qDAAqD;IACrD,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2EAA2E;IAC3E,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACzD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CAC3C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cyrus-codex-runner",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.76",
|
|
4
4
|
"description": "Codex CLI process wrapper for Cyrus",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -16,24 +16,17 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@openai/codex": "^0.159.2",
|
|
18
18
|
"@openai/codex-sdk": "^0.159.2",
|
|
19
|
-
"cyrus-core": "0.2.
|
|
20
|
-
"cyrus-simple-agent-runner": "0.2.
|
|
19
|
+
"cyrus-core": "0.2.76",
|
|
20
|
+
"cyrus-simple-agent-runner": "0.2.76"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/node": "^20.0.0",
|
|
24
24
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
25
|
-
"vitest": "^4.1.
|
|
25
|
+
"vitest": "^4.1.12"
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
28
28
|
"access": "public"
|
|
29
29
|
},
|
|
30
|
-
"cyrusTestRelease": {
|
|
31
|
-
"schemaVersion": 1,
|
|
32
|
-
"repository": "https://github.com/cyrusagents/cyrus",
|
|
33
|
-
"sourceSha": "6d5226710c1b0fa2f30d88f0077c6af1518e72e0",
|
|
34
|
-
"version": "0.2.74-cypack1546.0",
|
|
35
|
-
"channel": "test-cypack1546"
|
|
36
|
-
},
|
|
37
30
|
"scripts": {
|
|
38
31
|
"build": "tsgo",
|
|
39
32
|
"dev": "tsgo --watch",
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { ContainedModelRequest, ContainedModelResponse } from "./ContainedCodexProcess.js";
|
|
2
|
-
/** Supervisor-only broker for the existing local Codex ChatGPT login. Never
|
|
3
|
-
* exports auth to container env/files, MCP, checkpoints or log/error payloads. */
|
|
4
|
-
export declare class CodexLoginBroker {
|
|
5
|
-
private readonly home;
|
|
6
|
-
private accountId?;
|
|
7
|
-
private refreshing?;
|
|
8
|
-
constructor(home?: string);
|
|
9
|
-
private login;
|
|
10
|
-
readiness(): Promise<string | null>;
|
|
11
|
-
private refresh;
|
|
12
|
-
respond(request: ContainedModelRequest, context: {
|
|
13
|
-
model: string;
|
|
14
|
-
scopeKey: string;
|
|
15
|
-
toolNames: readonly string[];
|
|
16
|
-
authorize: () => Promise<void>;
|
|
17
|
-
latency?: (stage: "provider.headers" | "provider.body" | "credential.read" | "credential.refresh") => (failed?: boolean) => void;
|
|
18
|
-
}, signal: AbortSignal): Promise<ContainedModelResponse>;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=CodexLoginBroker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CodexLoginBroker.d.ts","sourceRoot":"","sources":["../../src/backend/CodexLoginBroker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACX,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,4BAA4B,CAAC;AAOpC;kFACkF;AAClF,qBAAa,gBAAgB;IAI3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHtB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,YACkB,IAAI,GAAE,MACG,EAG1B;YACa,KAAK;IAoCb,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxC;YACa,OAAO;IAwCf,OAAO,CACZ,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,CACT,KAAK,EACF,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,oBAAoB,KACnB,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;KAChC,EACD,MAAM,EAAE,WAAW,GACjB,OAAO,CAAC,sBAAsB,CAAC,CA+JjC;CACD"}
|
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
import { constants } from "node:fs";
|
|
2
|
-
import { open } from "node:fs/promises";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
|
-
import { isAbsolute, join } from "node:path";
|
|
5
|
-
import { AppServerClient } from "./appServerClient.js";
|
|
6
|
-
import { resolveCodexAppServerLaunch } from "./codexBinary.js";
|
|
7
|
-
/** Supervisor-only broker for the existing local Codex ChatGPT login. Never
|
|
8
|
-
* exports auth to container env/files, MCP, checkpoints or log/error payloads. */
|
|
9
|
-
export class CodexLoginBroker {
|
|
10
|
-
home;
|
|
11
|
-
accountId;
|
|
12
|
-
refreshing;
|
|
13
|
-
constructor(home = process.env.CODEX_HOME ||
|
|
14
|
-
join(homedir(), ".codex")) {
|
|
15
|
-
this.home = home;
|
|
16
|
-
if (!isAbsolute(home))
|
|
17
|
-
throw new Error("Codex auth home must be absolute");
|
|
18
|
-
}
|
|
19
|
-
async login() {
|
|
20
|
-
const file = await open(join(this.home, "auth.json"), constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
21
|
-
try {
|
|
22
|
-
const stat = await file.stat();
|
|
23
|
-
if (!stat.isFile() ||
|
|
24
|
-
stat.uid !== process.getuid?.() ||
|
|
25
|
-
stat.mode & 0o077 ||
|
|
26
|
-
stat.size > 131072)
|
|
27
|
-
throw Error();
|
|
28
|
-
const auth = JSON.parse(await file.readFile("utf8"));
|
|
29
|
-
if (auth.OPENAI_API_KEY ||
|
|
30
|
-
!auth.tokens ||
|
|
31
|
-
typeof auth.tokens.access_token !== "string" ||
|
|
32
|
-
!auth.tokens.access_token ||
|
|
33
|
-
typeof auth.tokens.account_id !== "string" ||
|
|
34
|
-
!auth.tokens.account_id ||
|
|
35
|
-
/[\r\n\0]/.test(auth.tokens.access_token + auth.tokens.account_id))
|
|
36
|
-
throw Error();
|
|
37
|
-
if (this.accountId && this.accountId !== auth.tokens.account_id)
|
|
38
|
-
throw Error();
|
|
39
|
-
this.accountId = auth.tokens.account_id;
|
|
40
|
-
return {
|
|
41
|
-
accessToken: auth.tokens.access_token,
|
|
42
|
-
accountId: auth.tokens.account_id,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
finally {
|
|
46
|
-
await file.close();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async readiness() {
|
|
50
|
-
try {
|
|
51
|
-
await this.login();
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
catch {
|
|
55
|
-
return "Existing private Codex ChatGPT login is unavailable or changed";
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
async refresh() {
|
|
59
|
-
if (this.refreshing)
|
|
60
|
-
return this.refreshing;
|
|
61
|
-
const launch = resolveCodexAppServerLaunch();
|
|
62
|
-
const client = new AppServerClient({
|
|
63
|
-
binaryPath: launch.command,
|
|
64
|
-
args: launch.args,
|
|
65
|
-
env: {
|
|
66
|
-
HOME: homedir(),
|
|
67
|
-
CODEX_HOME: this.home,
|
|
68
|
-
PATH: "/usr/local/bin:/usr/bin:/bin",
|
|
69
|
-
},
|
|
70
|
-
logger: { warn() { }, error() { } },
|
|
71
|
-
requestTimeoutMs: 15000,
|
|
72
|
-
maxOutputBytes: 1000000,
|
|
73
|
-
});
|
|
74
|
-
client.on("error", () => { });
|
|
75
|
-
// This trusted auth-only process never starts a thread/turn, registers tools,
|
|
76
|
-
// or enters agent context. Native Codex owns refresh persistence/locking.
|
|
77
|
-
client.setServerRequestHandler(() => {
|
|
78
|
-
throw new Error("Auth-only request rejected");
|
|
79
|
-
});
|
|
80
|
-
const work = (async () => {
|
|
81
|
-
try {
|
|
82
|
-
client.start();
|
|
83
|
-
await client.request("initialize", {
|
|
84
|
-
clientInfo: { name: "cyrus-codex-auth", version: "1" },
|
|
85
|
-
});
|
|
86
|
-
await client.request("account/read", { refreshToken: true });
|
|
87
|
-
await this.login();
|
|
88
|
-
}
|
|
89
|
-
finally {
|
|
90
|
-
await client.close();
|
|
91
|
-
}
|
|
92
|
-
})();
|
|
93
|
-
this.refreshing = work;
|
|
94
|
-
try {
|
|
95
|
-
await work;
|
|
96
|
-
}
|
|
97
|
-
finally {
|
|
98
|
-
this.refreshing = undefined;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
async respond(request, context, signal) {
|
|
102
|
-
const measured = async (stage, work) => {
|
|
103
|
-
const end = context.latency?.(stage);
|
|
104
|
-
try {
|
|
105
|
-
const value = await work();
|
|
106
|
-
end?.();
|
|
107
|
-
return value;
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
end?.(true);
|
|
111
|
-
throw error;
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
try {
|
|
115
|
-
signal.throwIfAborted();
|
|
116
|
-
// Validate the bounded request synchronously before the single pre-send
|
|
117
|
-
// authority check below. No credentials, provider access or response
|
|
118
|
-
// release occurs here; a second remote check around this pure validation
|
|
119
|
-
// only adds another round trip to every model request.
|
|
120
|
-
if (Buffer.byteLength(request.body) > 2000000)
|
|
121
|
-
throw Error();
|
|
122
|
-
const body = JSON.parse(request.body);
|
|
123
|
-
const allowed = new Set([
|
|
124
|
-
"model",
|
|
125
|
-
"instructions",
|
|
126
|
-
"input",
|
|
127
|
-
"tools",
|
|
128
|
-
"tool_choice",
|
|
129
|
-
"parallel_tool_calls",
|
|
130
|
-
"reasoning",
|
|
131
|
-
"store",
|
|
132
|
-
"stream",
|
|
133
|
-
"include",
|
|
134
|
-
"prompt_cache_key",
|
|
135
|
-
"text",
|
|
136
|
-
"client_metadata",
|
|
137
|
-
]);
|
|
138
|
-
if (!body ||
|
|
139
|
-
typeof body !== "object" ||
|
|
140
|
-
Array.isArray(body) ||
|
|
141
|
-
Object.keys(body).some((k) => !allowed.has(k)) ||
|
|
142
|
-
body.model !== context.model ||
|
|
143
|
-
body.store !== false ||
|
|
144
|
-
body.stream !== true ||
|
|
145
|
-
!Array.isArray(body.input) ||
|
|
146
|
-
!Array.isArray(body.tools))
|
|
147
|
-
throw Error();
|
|
148
|
-
if (body.tools.some((tool) => !tool ||
|
|
149
|
-
!["function", "custom"].includes(tool.type) ||
|
|
150
|
-
![
|
|
151
|
-
...context.toolNames,
|
|
152
|
-
"apply_patch",
|
|
153
|
-
"view_image",
|
|
154
|
-
"request_user_input",
|
|
155
|
-
].includes(tool.name)))
|
|
156
|
-
throw Error();
|
|
157
|
-
// Codex supplies these local built-ins even when shell/network tools are
|
|
158
|
-
// disabled. They are compatibility input, not scoped capabilities: the
|
|
159
|
-
// provider must see only the supervisor-admitted dynamic tool catalog.
|
|
160
|
-
body.tools = body.tools.filter((tool) => context.toolNames.includes(tool.name));
|
|
161
|
-
// No remotely resolved files/images or prior response IDs. Every request
|
|
162
|
-
// supplies its own admitted conversation; provider cache key is scope-bound.
|
|
163
|
-
const visit = (value, depth = 0) => {
|
|
164
|
-
if (depth > 32)
|
|
165
|
-
throw Error();
|
|
166
|
-
if (Array.isArray(value)) {
|
|
167
|
-
for (const item of value)
|
|
168
|
-
visit(item, depth + 1);
|
|
169
|
-
}
|
|
170
|
-
else if (value && typeof value === "object") {
|
|
171
|
-
const v = value;
|
|
172
|
-
if ([
|
|
173
|
-
"input_image",
|
|
174
|
-
"input_file",
|
|
175
|
-
"item_reference",
|
|
176
|
-
"input_audio",
|
|
177
|
-
"input_video",
|
|
178
|
-
"file_search",
|
|
179
|
-
"web_search",
|
|
180
|
-
"web_search_preview",
|
|
181
|
-
"computer",
|
|
182
|
-
].includes(String(v.type)))
|
|
183
|
-
throw Error();
|
|
184
|
-
for (const item of Object.values(v))
|
|
185
|
-
visit(item, depth + 1);
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
visit(body.input);
|
|
189
|
-
body.prompt_cache_key = context.scopeKey;
|
|
190
|
-
const send = async () => {
|
|
191
|
-
await context.authorize();
|
|
192
|
-
signal.throwIfAborted();
|
|
193
|
-
const login = await measured("credential.read", () => this.login());
|
|
194
|
-
return measured("provider.headers", () => fetch("https://chatgpt.com/backend-api/codex/responses", {
|
|
195
|
-
method: "POST",
|
|
196
|
-
redirect: "error",
|
|
197
|
-
signal: AbortSignal.any([signal, AbortSignal.timeout(60000)]),
|
|
198
|
-
headers: {
|
|
199
|
-
"Content-Type": "application/json",
|
|
200
|
-
Authorization: `Bearer ${login.accessToken}`,
|
|
201
|
-
"ChatGPT-Account-ID": login.accountId,
|
|
202
|
-
originator: "codex_cli_rs",
|
|
203
|
-
},
|
|
204
|
-
body: JSON.stringify(body),
|
|
205
|
-
}));
|
|
206
|
-
};
|
|
207
|
-
let response = await send();
|
|
208
|
-
if (response.status === 401) {
|
|
209
|
-
await response.body?.cancel();
|
|
210
|
-
await context.authorize();
|
|
211
|
-
await measured("credential.refresh", () => this.refresh());
|
|
212
|
-
signal.throwIfAborted();
|
|
213
|
-
response = await send();
|
|
214
|
-
}
|
|
215
|
-
if (!response.ok || !response.body) {
|
|
216
|
-
await response.body?.cancel();
|
|
217
|
-
throw Error();
|
|
218
|
-
}
|
|
219
|
-
const reader = response.body.getReader();
|
|
220
|
-
const chunks = [];
|
|
221
|
-
let size = 0;
|
|
222
|
-
await measured("provider.body", async () => {
|
|
223
|
-
try {
|
|
224
|
-
for (;;) {
|
|
225
|
-
const next = await reader.read();
|
|
226
|
-
if (next.done)
|
|
227
|
-
break;
|
|
228
|
-
size += next.value.byteLength;
|
|
229
|
-
if (size > 4000000)
|
|
230
|
-
throw Error();
|
|
231
|
-
chunks.push(next.value);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
finally {
|
|
235
|
-
await reader.cancel().catch(() => { });
|
|
236
|
-
reader.releaseLock();
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
await context.authorize();
|
|
240
|
-
signal.throwIfAborted();
|
|
241
|
-
return {
|
|
242
|
-
status: 200,
|
|
243
|
-
contentType: "text/event-stream",
|
|
244
|
-
body: Buffer.concat(chunks).toString("base64"),
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
catch {
|
|
248
|
-
throw new Error("Contained Codex model connection denied or interrupted");
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
//# sourceMappingURL=CodexLoginBroker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CodexLoginBroker.js","sourceRoot":"","sources":["../../src/backend/CodexLoginBroker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
export interface ContainedCodexConfig {
|
|
2
|
-
dockerPath: string;
|
|
3
|
-
dockerHost: string;
|
|
4
|
-
/** Preloaded, reviewed image containing node and /usr/local/bin/codex. */
|
|
5
|
-
image: string;
|
|
6
|
-
}
|
|
7
|
-
export interface ContainedModelRequest {
|
|
8
|
-
body: string;
|
|
9
|
-
}
|
|
10
|
-
export interface ContainedModelResponse {
|
|
11
|
-
status: number;
|
|
12
|
-
contentType: string;
|
|
13
|
-
body: string;
|
|
14
|
-
}
|
|
15
|
-
/** Dedicated process, empty home, no mounts/network/credentials; never uses the
|
|
16
|
-
* ordinary shared app-server pool. Container data is untrusted at the bridge. */
|
|
17
|
-
export declare class ContainedCodexProcess {
|
|
18
|
-
private readonly config;
|
|
19
|
-
private readonly name;
|
|
20
|
-
private client?;
|
|
21
|
-
private stopped;
|
|
22
|
-
private started;
|
|
23
|
-
private initialized;
|
|
24
|
-
private closing?;
|
|
25
|
-
private readonly requests;
|
|
26
|
-
constructor(config: ContainedCodexConfig);
|
|
27
|
-
private command;
|
|
28
|
-
start(options: {
|
|
29
|
-
signal: AbortSignal;
|
|
30
|
-
model: (request: ContainedModelRequest, signal: AbortSignal) => Promise<ContainedModelResponse>;
|
|
31
|
-
notification: (method: string, params: unknown) => void;
|
|
32
|
-
request: (method: string, params: unknown) => Promise<unknown>;
|
|
33
|
-
exit?: () => void;
|
|
34
|
-
}): Promise<void>;
|
|
35
|
-
request<T = unknown>(method: string, params: unknown): Promise<T>;
|
|
36
|
-
/** Native rollout only; no auth/config/database files or host filesystem access. */
|
|
37
|
-
snapshot(threadId: string): Promise<{
|
|
38
|
-
threadId: string;
|
|
39
|
-
rollout: string;
|
|
40
|
-
}>;
|
|
41
|
-
private validateSnapshot;
|
|
42
|
-
restore(snapshot: {
|
|
43
|
-
threadId: string;
|
|
44
|
-
rollout: string;
|
|
45
|
-
}): Promise<string>;
|
|
46
|
-
close(): Promise<void>;
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=ContainedCodexProcess.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContainedCodexProcess.d.ts","sourceRoot":"","sources":["../../src/backend/ContainedCodexProcess.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC;CACb;AACD,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACb;AAiDD;iFACiF;AACjF,qBAAa,qBAAqB;IAQrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,MAAM,CAAC,CAAkB;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,YAA6B,MAAM,EAAE,oBAAoB,EASxD;IACD,OAAO,CAAC,OAAO;IA+BT,KAAK,CAAC,OAAO,EAAE;QACpB,MAAM,EAAE,WAAW,CAAC;QACpB,KAAK,EAAE,CACN,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,WAAW,KACf,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACrC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACxD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0GhB;IACD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAIhE;IACD,oFAAoF;IAC9E,QAAQ,CACb,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAgChD;IACD,OAAO,CAAC,gBAAgB;IAqBlB,OAAO,CAAC,QAAQ,EAAE;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBlB;IACD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA+CrB;CACD"}
|