@parall/codex-agent 1.31.0 → 1.32.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAcF,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,gBAAgB,CAwC9F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlG;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAG3F;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGtF;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGrF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAcF,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,gBAAgB,CAyC9F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAMR;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAG3F;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGtF;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGrF"}
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
- import * as os from "node:os";
2
- import * as path from "node:path";
1
+ import * as os from 'node:os';
2
+ import * as path from 'node:path';
3
3
  function requireEnv(env, name) {
4
4
  const value = env[name]?.trim();
5
5
  if (!value) {
@@ -11,9 +11,9 @@ function resolvePath(value) {
11
11
  return path.isAbsolute(value) ? value : path.resolve(process.cwd(), value);
12
12
  }
13
13
  export function resolveCodexAgentConfig(env = process.env) {
14
- const apiUrl = requireEnv(env, "PRLL_API_URL");
15
- const apiKey = requireEnv(env, "PRLL_API_KEY");
16
- const orgId = requireEnv(env, "PRLL_ORG_ID");
14
+ const apiUrl = requireEnv(env, 'PRLL_API_URL');
15
+ const apiKey = requireEnv(env, 'PRLL_API_KEY');
16
+ const orgId = requireEnv(env, 'PRLL_ORG_ID');
17
17
  // CODEX_HOME is where codex looks for `auth.json` / `config.toml`. Its
18
18
  // own default is `$HOME/.codex`; falling back to `$HOME` here was wrong
19
19
  // — it made the spawned app-server subprocess look for
@@ -21,28 +21,27 @@ export function resolveCodexAgentConfig(env = process.env) {
21
21
  // `thread/start` failed with `401 Unauthorized` against the OpenAI
22
22
  // WebSocket endpoint. Default to `$HOME/.codex` so `codex login`'s
23
23
  // credentials are picked up transparently.
24
- const codexHome = resolvePath(env.PRLL_CODEX_HOME?.trim()
25
- || env.CODEX_HOME?.trim()
26
- || path.join(env.HOME || os.homedir(), ".codex"));
24
+ const codexHome = resolvePath(env.PRLL_CODEX_HOME?.trim() ||
25
+ env.CODEX_HOME?.trim() ||
26
+ path.join(env.HOME || os.homedir(), '.codex'));
27
27
  // Bridge state lives outside CODEX_HOME to avoid polluting codex's own
28
28
  // directory with non-codex files.
29
- const stateDir = resolvePath(env.PRLL_STATE_DIR?.trim()
30
- || path.join(env.HOME || os.homedir(), ".parall-agent"));
31
- const workspaceDir = resolvePath(env.PRLL_WORKSPACE_DIR?.trim() || path.join(stateDir, "workspace"));
29
+ const stateDir = resolvePath(env.PRLL_STATE_DIR?.trim() || path.join(env.HOME || os.homedir(), '.parall-agent'));
30
+ const workspaceDir = resolvePath(env.PRLL_WORKSPACE_DIR?.trim() || path.join(stateDir, 'workspace'));
32
31
  return {
33
32
  apiUrl,
34
33
  apiKey,
35
34
  orgId,
36
35
  wsUrl: env.PRLL_WS_URL?.trim() || undefined,
37
36
  swimlaneName: env.PRLL_SWIMLANE_NAME?.trim() || undefined,
38
- codexBin: env.PRLL_CODEX_BIN?.trim() || "codex",
37
+ codexBin: env.PRLL_CODEX_BIN?.trim() || 'codex',
39
38
  codexHome,
40
39
  stateDir,
41
40
  workspaceDir,
42
41
  model: env.PRLL_CODEX_MODEL?.trim() || undefined,
43
42
  reasoningEffort: env.PRLL_CODEX_REASONING_EFFORT?.trim() || undefined,
44
- sandbox: env.PRLL_CODEX_SANDBOX?.trim() || "danger-full-access",
45
- approvalPolicy: env.PRLL_CODEX_APPROVAL?.trim() || "never",
43
+ sandbox: env.PRLL_CODEX_SANDBOX?.trim() || 'danger-full-access',
44
+ approvalPolicy: env.PRLL_CODEX_APPROVAL?.trim() || 'never',
46
45
  runtimeKey: env.PRLL_CODEX_RUNTIME_KEY?.trim() || undefined,
47
46
  };
48
47
  }
@@ -59,12 +58,12 @@ export function resolveCodexAgentConfig(env = process.env) {
59
58
  */
60
59
  export function normalizeSandbox(value) {
61
60
  const map = {
62
- "workspace-write": "workspace-write",
63
- "workspacewrite": "workspace-write",
64
- "danger-full-access": "danger-full-access",
65
- "dangerfullaccess": "danger-full-access",
66
- "read-only": "read-only",
67
- "readonly": "read-only",
61
+ 'workspace-write': 'workspace-write',
62
+ workspacewrite: 'workspace-write',
63
+ 'danger-full-access': 'danger-full-access',
64
+ dangerfullaccess: 'danger-full-access',
65
+ 'read-only': 'read-only',
66
+ readonly: 'read-only',
68
67
  };
69
68
  return map[value.toLowerCase()] ?? value;
70
69
  }
@@ -76,36 +75,36 @@ export function normalizeSandbox(value) {
76
75
  */
77
76
  export function normalizeApprovalPolicy(value) {
78
77
  const map = {
79
- "never": "never",
80
- "on-request": "on-request",
81
- "onrequest": "on-request",
82
- "unless-trusted": "unless-trusted",
83
- "unlesstrusted": "unless-trusted",
84
- "on-failure": "on-failure",
85
- "onfailure": "on-failure",
78
+ never: 'never',
79
+ 'on-request': 'on-request',
80
+ onrequest: 'on-request',
81
+ 'unless-trusted': 'unless-trusted',
82
+ unlesstrusted: 'unless-trusted',
83
+ 'on-failure': 'on-failure',
84
+ onfailure: 'on-failure',
86
85
  };
87
86
  return map[value.toLowerCase()] ?? value;
88
87
  }
89
88
  export function resolveWsUrl(apiUrl, explicitWsUrl, swimlaneName) {
90
- const base = explicitWsUrl || `${apiUrl.replace(/\/$/, "").replace(/^http/, "ws")}/ws`;
89
+ const base = explicitWsUrl || `${apiUrl.replace(/\/$/, '').replace(/^http/, 'ws')}/ws`;
91
90
  if (!swimlaneName)
92
91
  return base;
93
92
  const url = new URL(base);
94
- url.searchParams.set("swimlane", swimlaneName);
93
+ url.searchParams.set('swimlane', swimlaneName);
95
94
  return url.toString();
96
95
  }
97
96
  export function buildCodexRuntimeKey(agentUserId) {
98
97
  return `agent:main:codex:${agentUserId}:orchestrator`;
99
98
  }
100
99
  export function sessionStateFilePathForRuntime(stateDir, runtimeKey) {
101
- const fileName = Buffer.from(runtimeKey).toString("base64url");
102
- return path.join(stateDir, "threads", `${fileName}.json`);
100
+ const fileName = Buffer.from(runtimeKey).toString('base64url');
101
+ return path.join(stateDir, 'threads', `${fileName}.json`);
103
102
  }
104
103
  export function contextFilePathForSession(stateDir, sessionKey) {
105
- const fileName = Buffer.from(sessionKey).toString("base64url");
106
- return path.join(stateDir, "dispatch-context", `${fileName}.json`);
104
+ const fileName = Buffer.from(sessionKey).toString('base64url');
105
+ return path.join(stateDir, 'dispatch-context', `${fileName}.json`);
107
106
  }
108
107
  export function stepIdFilePathForSession(stateDir, sessionKey) {
109
- const fileName = Buffer.from(sessionKey).toString("base64url");
110
- return path.join(stateDir, "step-ids", `${fileName}.txt`);
108
+ const fileName = Buffer.from(sessionKey).toString('base64url');
109
+ return path.join(stateDir, 'step-ids', `${fileName}.txt`);
111
110
  }
@@ -1,7 +1,7 @@
1
- import type { CleanupForkOpts, DispatchAdapter, DispatchOpts, ForkOpts, ForkSessionHandle, GatewayLogger, RuntimeEvent } from "@parall/agent-core";
2
- import type { CodexAgentConfig } from "./config.js";
3
- import type { CodexSessionManager } from "./session-manager.js";
4
- type CodexAppServerAdapterOptions = Pick<CodexAgentConfig, "approvalPolicy" | "codexBin" | "codexHome" | "model" | "reasoningEffort" | "sandbox" | "workspaceDir"> & {
1
+ import type { CleanupForkOpts, DispatchAdapter, DispatchOpts, ForkOpts, ForkSessionHandle, GatewayLogger, RuntimeEvent } from '@parall/agent-core';
2
+ import type { CodexAgentConfig } from './config.js';
3
+ import type { CodexSessionManager } from './session-manager.js';
4
+ type CodexAppServerAdapterOptions = Pick<CodexAgentConfig, 'approvalPolicy' | 'codexBin' | 'codexHome' | 'model' | 'reasoningEffort' | 'sandbox' | 'workspaceDir'> & {
5
5
  sessionManager: CodexSessionManager;
6
6
  log?: GatewayLogger;
7
7
  contextFilePath?: string;
@@ -33,8 +33,9 @@ export declare class CodexAppServerAdapter implements DispatchAdapter {
33
33
  reasoningEffort?: string | null;
34
34
  }): void;
35
35
  enqueueDuringDispatch(sessionKey: string, body: string): Promise<boolean>;
36
+ abortDispatch(sessionKey: string): void;
36
37
  hasPendingInjections(sessionKey: string): boolean;
37
- dispatch({ event, bodyForAgent, sessionKey, context }: DispatchOpts): AsyncIterable<RuntimeEvent>;
38
+ dispatch({ event, bodyForAgent, sessionKey, context, }: DispatchOpts): AsyncIterable<RuntimeEvent>;
38
39
  getBranchPoint(_sessionKey: string): string | undefined;
39
40
  forkSession({ sessionKey: parentSessionKey }: ForkOpts): Promise<ForkSessionHandle | null>;
40
41
  cleanupFork({ fork }: CleanupForkOpts): void;
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,KAAK,4BAA4B,GAAG,IAAI,CACtC,gBAAgB,EACd,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,OAAO,GACP,iBAAiB,GACjB,SAAS,GACT,cAAc,CACjB,GAAG;IACF,cAAc,EAAE,mBAAmB,CAAC;IACpC,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAmCF,qBAAa,qBAAsB,YAAW,eAAe;IA+B/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IA9BjC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,IAAI,CAA+C;IAC3D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;gBAYQ,IAAI,EAAE,4BAA4B;IAE/D,YAAY,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAKhF,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB/E,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI1C,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IA6NxG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjD,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA+BhG,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe;IAIrC,OAAO,CAAC,cAAc;IAKhB,IAAI;YAiBI,aAAa;YA2Bb,OAAO;IAyErB,OAAO,CAAC,qBAAqB;YAmCf,UAAU;IA2CxB,OAAO,CAAC,iBAAiB;CA4B1B"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,KAAK,4BAA4B,GAAG,IAAI,CACtC,gBAAgB,EACd,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,OAAO,GACP,iBAAiB,GACjB,SAAS,GACT,cAAc,CACjB,GAAG;IACF,cAAc,EAAE,mBAAmB,CAAC;IACpC,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAqCF,qBAAa,qBAAsB,YAAW,eAAe;IA+B/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IA9BjC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,IAAI,CAA+C;IAC3D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;gBAYQ,IAAI,EAAE,4BAA4B;IAE/D,YAAY,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAMhF,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB/E,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAUvC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI1C,QAAQ,CAAC,EACd,KAAK,EACL,YAAY,EACZ,UAAU,EACV,OAAO,GACR,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IA0O7C,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjD,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA+BhG,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe;IAIrC,OAAO,CAAC,cAAc;IAKhB,IAAI;YAiBI,aAAa;YA2Bb,OAAO;IA2ErB,OAAO,CAAC,qBAAqB;YAmCf,UAAU;IA2CxB,OAAO,CAAC,iBAAiB;CA2B1B"}