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.
Files changed (38) hide show
  1. package/dist/CodexEventMapper.d.ts.map +1 -1
  2. package/dist/CodexEventMapper.js +0 -12
  3. package/dist/CodexEventMapper.js.map +1 -1
  4. package/dist/CodexRunner.d.ts +0 -2
  5. package/dist/CodexRunner.d.ts.map +1 -1
  6. package/dist/CodexRunner.js +1 -16
  7. package/dist/CodexRunner.js.map +1 -1
  8. package/dist/backend/appServerClient.d.ts +0 -6
  9. package/dist/backend/appServerClient.d.ts.map +1 -1
  10. package/dist/backend/appServerClient.js +3 -75
  11. package/dist/backend/appServerClient.js.map +1 -1
  12. package/dist/backend/appServerEvents.d.ts.map +1 -1
  13. package/dist/backend/appServerEvents.js +0 -16
  14. package/dist/backend/appServerEvents.js.map +1 -1
  15. package/dist/backend/types.d.ts +0 -7
  16. package/dist/backend/types.d.ts.map +1 -1
  17. package/dist/config/CodexConfigBuilder.d.ts.map +1 -1
  18. package/dist/config/CodexConfigBuilder.js +6 -5
  19. package/dist/config/CodexConfigBuilder.js.map +1 -1
  20. package/dist/config/sandboxPolicy.d.ts +3 -3
  21. package/dist/config/sandboxPolicy.d.ts.map +1 -1
  22. package/dist/config/sandboxPolicy.js +14 -18
  23. package/dist/config/sandboxPolicy.js.map +1 -1
  24. package/dist/index.d.ts +0 -3
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +0 -3
  27. package/dist/index.js.map +1 -1
  28. package/dist/types.d.ts +6 -2
  29. package/dist/types.d.ts.map +1 -1
  30. package/package.json +4 -11
  31. package/dist/backend/CodexLoginBroker.d.ts +0 -20
  32. package/dist/backend/CodexLoginBroker.d.ts.map +0 -1
  33. package/dist/backend/CodexLoginBroker.js +0 -252
  34. package/dist/backend/CodexLoginBroker.js.map +0 -1
  35. package/dist/backend/ContainedCodexProcess.d.ts +0 -48
  36. package/dist/backend/ContainedCodexProcess.d.ts.map +0 -1
  37. package/dist/backend/ContainedCodexProcess.js +0 -306
  38. 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
- * - No `sandboxSettings` → `workspace-mode` (the coarse Codex mode with broad
11
- * reads — unchanged default behavior).
12
- * - `sandboxSettings` present → a granular permission `profile` that restricts
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
- if (!input.sandboxSettings) {
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
- // Danger-full-access keeps broad access; read-only forbids writes; the
36
- // default (workspace-write) makes the worktree writable.
37
- const dangerFull = mode === "danger-full-access";
38
- const workspaceAccess = mode === "read-only" ? "read" : "write";
39
- const filesystem = dangerFull
40
- ? { ":root": "write" }
41
- : {
42
- ":minimal": "read",
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;QAC5B,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,uEAAuE;IACvE,yDAAyD;IACzD,MAAM,UAAU,GAAG,IAAI,KAAK,oBAAoB,CAAC;IACjD,MAAM,eAAe,GACpB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAEzC,MAAM,UAAU,GAA0C,UAAU;QACnE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;QACtB,CAAC,CAAC;YACA,UAAU,EAAE,MAAM;YAClB,kBAAkB,EAAE,eAAe;YACnC,SAAS,EAAE,OAAO;YAClB,YAAY,EAAE,OAAO;YACrB,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAgB,CAAC,CAAC,CAAC;YACpE,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAe,CAAC,CAAC,CAAC;SACnE,CAAC;IAEJ,OAAO;QACN,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,wBAAwB;QACnC,UAAU;QACV,aAAa;KACb,CAAC;AACH,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";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EACN,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC3B,MAAM,oCAAoC,CAAC;AAC5C,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"}
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":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAEN,qBAAqB,GAGrB,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EAAE,gBAAgB,EAAsB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
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.
@@ -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,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;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;CACzC;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"}
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.74-cypack1546.0",
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.74-cypack1546.0",
20
- "cyrus-simple-agent-runner": "0.2.74-cypack1546.0"
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.11"
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"}