@tickernelz/paperclip-pro-adapter-codex-local 2026.1011.3 → 2026.1012.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.
Files changed (65) hide show
  1. package/dist/index.d.ts +6 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +50 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.test.js +34 -1
  6. package/dist/index.test.js.map +1 -1
  7. package/dist/server/acp.cli-version.test.d.ts +2 -0
  8. package/dist/server/acp.cli-version.test.d.ts.map +1 -0
  9. package/dist/server/acp.cli-version.test.js +151 -0
  10. package/dist/server/acp.cli-version.test.js.map +1 -0
  11. package/dist/server/acp.d.ts.map +1 -1
  12. package/dist/server/acp.js +32 -1
  13. package/dist/server/acp.js.map +1 -1
  14. package/dist/server/acp.test.js +6 -0
  15. package/dist/server/acp.test.js.map +1 -1
  16. package/dist/server/cli-version.d.ts +45 -0
  17. package/dist/server/cli-version.d.ts.map +1 -0
  18. package/dist/server/cli-version.js +94 -0
  19. package/dist/server/cli-version.js.map +1 -0
  20. package/dist/server/codex-auth-cache.d.ts +0 -27
  21. package/dist/server/codex-auth-cache.d.ts.map +1 -1
  22. package/dist/server/codex-auth-cache.js +21 -2
  23. package/dist/server/codex-auth-cache.js.map +1 -1
  24. package/dist/server/codex-auth-cache.test.js +35 -2
  25. package/dist/server/codex-auth-cache.test.js.map +1 -1
  26. package/dist/server/execute.d.ts.map +1 -1
  27. package/dist/server/execute.js +47 -9
  28. package/dist/server/execute.js.map +1 -1
  29. package/dist/server/execute.test.js +24 -1
  30. package/dist/server/execute.test.js.map +1 -1
  31. package/dist/server/parse.d.ts +18 -0
  32. package/dist/server/parse.d.ts.map +1 -1
  33. package/dist/server/parse.js +70 -53
  34. package/dist/server/parse.js.map +1 -1
  35. package/dist/server/parse.test.js +19 -2
  36. package/dist/server/parse.test.js.map +1 -1
  37. package/dist/server/quota-spawn-error.test.js +172 -3
  38. package/dist/server/quota-spawn-error.test.js.map +1 -1
  39. package/dist/server/quota.d.ts +1 -1
  40. package/dist/server/quota.d.ts.map +1 -1
  41. package/dist/server/quota.js +91 -25
  42. package/dist/server/quota.js.map +1 -1
  43. package/dist/server/test.d.ts.map +1 -1
  44. package/dist/server/test.js +53 -6
  45. package/dist/server/test.js.map +1 -1
  46. package/dist/server/test.remote.test.js +107 -0
  47. package/dist/server/test.remote.test.js.map +1 -1
  48. package/dist/ui/build-config.d.ts.map +1 -1
  49. package/dist/ui/build-config.js +19 -2
  50. package/dist/ui/build-config.js.map +1 -1
  51. package/dist/ui/build-config.test.js +31 -9
  52. package/dist/ui/build-config.test.js.map +1 -1
  53. package/package.json +3 -3
  54. package/{LICENSE → skills/complain/LICENSE} +7 -2
  55. package/skills/complain/SKILL.md +68 -0
  56. package/skills/paperclip/SKILL.md +54 -8
  57. package/skills/paperclip/references/api-reference.md +3 -3
  58. package/skills/paperclip/references/artifacts.md +5 -0
  59. package/skills/paperclip/scripts/paperclip-issue-update.sh +166 -0
  60. package/skills/paperclip/scripts/paperclip-upload-artifact.sh +14 -3
  61. package/skills/paperclip/scripts/submit-agent-commentary.mjs +52 -0
  62. package/skills/paperclip-converting-plans-to-tasks/SKILL.md +17 -50
  63. package/skills/slack/SKILL.md +10 -0
  64. package/skills/suggestion-box/LICENSE +27 -0
  65. package/skills/suggestion-box/SKILL.md +77 -0
package/dist/index.d.ts CHANGED
@@ -9,6 +9,11 @@ declare const CODEX_LOCAL_ULTRA_REASONING_EFFORTS: readonly ["low", "medium", "h
9
9
  export type CodexLocalReasoningEffort = (typeof CODEX_LOCAL_DEFAULT_REASONING_EFFORTS)[number] | (typeof CODEX_LOCAL_ULTRA_REASONING_EFFORTS)[number];
10
10
  export declare function normalizeCodexModel(model: string | null | undefined): string;
11
11
  export declare function codexLocalReasoningEffortsForModel(model: string | null | undefined): readonly CodexLocalReasoningEffort[];
12
+ export declare function minimumCodexCliVersionForModel(model: string | null | undefined): string | null;
13
+ /** Read the version from `codex --version` output; prerelease or ambiguous output yields null. */
14
+ export declare function parseCodexCliVersionOutput(output: string): string | null;
15
+ export declare function codexCliVersionAtLeast(version: string, minimum: string): boolean;
16
+ export declare const CODEX_CHATGPT_MODEL_REJECTION_RE: RegExp;
12
17
  export declare function isCodexLocalKnownModel(model: string | null | undefined): boolean;
13
18
  export declare function isCodexLocalManualModel(model: string | null | undefined): boolean;
14
19
  export declare function isCodexLocalFastModeSupported(model: string | null | undefined): boolean;
@@ -16,6 +21,6 @@ export declare const models: {
16
21
  id: string;
17
22
  label: string;
18
23
  }[];
19
- export declare const agentConfigurationDoc = "# codex_local agent configuration\n\nAdapter: codex_local\n\nCore fields:\n- engine (string, optional): defaults to ACP, including legacy unset/\"auto\" values. Missing prerequisites and execution failures fail the run without changing engines. Set \"cli\" to explicitly select the CLI engine.\n- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)\n- instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to stdin prompt at runtime\n- model (string, optional): Codex model id\n- modelReasoningEffort (string, optional): reasoning effort override passed via -c model_reasoning_effort=...; GPT-6 Astra, GPT-6.1 Sol, GPT-6 Sol, and GPT-5.6 Sol/Terra support low|medium|high|xhigh|max|ultra; GPT-6 Luna and GPT-5.6 Luna support low|medium|high|xhigh|max\n- promptTemplate (string, optional): run prompt template\n- search (boolean, optional): run codex with --search\n- fastMode (boolean, optional): enable Codex Fast mode; supported on GPT-6 (astra/sol/luna), GPT-6.1 Sol, GPT-5.6 (sol/terra/luna), GPT-5.5, GPT-5.4 and passed through for manual model IDs\n- dangerouslyBypassApprovalsAndSandbox (boolean, optional): run with bypass flag\n- command (string, optional): defaults to \"codex\"\n- extraArgs (string[], optional): additional CLI args\n- env (object, optional): KEY=VALUE environment variables\n- workspaceStrategy (object, optional): execution workspace strategy; currently supports { type: \"git_worktree\", baseRef?, branchTemplate?, worktreeParentDir? }\n- workspaceRuntime (object, optional): reserved for workspace runtime metadata; workspace runtime services are manually controlled from the workspace UI and are not auto-started by heartbeats\n- filesystemScope (string, optional): set to \"workspace\" to confine local CLI filesystem access with Bubblewrap. Off by default. The workspace and managed CODEX_HOME remain writable; other host paths are hidden.\n- filesystemExtraPaths (array, optional): additional absolute host paths exposed inside the workspace sandbox. String entries are read-only; object entries use { path: \"/absolute/path\", access: \"ro\" | \"rw\" }.\n- filesystemSandboxCommand (string, optional): Bubblewrap executable name or absolute path; defaults to \"bwrap\". Linux only.\n- networkScope (string, optional): \"deny\" blocks all network egress; \"allowlist\" permits only networkAllowlist targets through Paperclip's HTTP(S) proxy. Off by default.\n- networkAllowlist (string[], optional): exact hostnames, hostname:port entries, or origin URLs. Include the configured Codex provider origin, such as \"api.openai.com\" or a custom model provider gateway.\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n- outputInactivityTimeoutMs (number | null, optional): inactivity monitor around the codex child. Resets whenever the child emits stdout/stderr bytes or, on Linux, its process group shows meaningful CPU, disk I/O, or child-process churn during a silent build. Defaults to 30 * 60_000 ms when unset or non-positive. Set to `null` to disable the monitor entirely (only do this for known-slow tasks; the platform-level 1h silent-run safety net still applies). On fire, the adapter sends SIGTERM to the process group, waits 5s, then SIGKILL, and surfaces the run as failed with errorMessage \"monitor: no codex activity (output or process) for {N}m {S}s\".\n- agentCommand (string, optional): ACP server command override used only when engine=\"acp\"; defaults to the package-local codex-acp binary\n- mode (string, optional): ACP session mode when engine=\"acp\"; persistent or oneshot\n- nonInteractivePermissions (string, optional): ACP non-interactive permission fallback when engine=\"acp\"; deny or fail\n- stateDir (string, optional): ACP state directory override when engine=\"acp\"\n- warmHandleIdleMs (number, optional): warm ACP process idle timeout when engine=\"acp\"; defaults to 0\n\nNotes:\n- filesystemScope and networkScope are spawn-level confinement and are orthogonal to Codex approval/sandbox flags. Both require Bubblewrap on the host and explicit engine=\"cli\"; default or explicit ACP is rejected because ACP confinement is not yet supported. networkScope=\"allowlist\" injects HTTP_PROXY/HTTPS_PROXY for the CLI while its private network namespace blocks direct sockets, so every required provider/API hostname must be listed explicitly.\n- Prompts are piped via stdin (Codex receives \"-\" prompt argument).\n- If instructionsFilePath is configured, Paperclip prepends that file's contents to the stdin prompt on every run.\n- Codex exec automatically applies repo-scoped AGENTS.md instructions from the active workspace. Paperclip cannot suppress that discovery in exec mode, so repo AGENTS.md files may still apply even when you only configured an explicit instructionsFilePath.\n- Paperclip injects desired local skills into the effective CODEX_HOME/skills/ directory at execution time so Codex can discover \"$paperclip\" and related skills without polluting the project working directory. For new and updated agents, Paperclip assigns an isolated managed home at ~/.paperclip-pro/instances/<id>/companies/<companyId>/agents/<agentId>/codex-home/skills/; when CODEX_HOME is explicitly overridden in adapter config, that override is used instead.\n- New and updated codex_local agents persist an empty OPENAI_API_KEY override by default so a host-level OPENAI_API_KEY cannot leak into Codex runs through process inheritance. Explicit CODEX_HOME overrides must not point at the shared company codex-home, $CODEX_HOME, or ~/.codex.\n- Some model/tool combinations reject certain effort levels (for example minimal with web search enabled).\n- Fast mode is supported on GPT-6 (astra/sol/luna), GPT-6.1 Sol, GPT-5.6 (sol/terra/luna), GPT-5.5, GPT-5.4 and manual model IDs. When enabled for those models, Paperclip applies `service_tier=\"fast\"` and `features.fast_mode=true`.\n- When Paperclip realizes a workspace/runtime for a run, it injects PAPERCLIP_WORKSPACE_* and PAPERCLIP_RUNTIME_* env vars for agent-side tooling.\n- The ACP engine keeps its workspace sandbox and enables network access on each turn. Explicit sandbox_workspace_write.network_access overrides in extraArgs (or env.PAPERCLIP_CODEX_ACP_NETWORK_ACCESS=\"false\") disable it; execution-target network denial wins. The bundled ACP patch is needed because upstream mode presets override Codex config.toml on every turn.\n- The CLI engine defaults to a writable workspace sandbox with network access for unattended work and Paperclip API calls. It does not enable the dangerous bypass flag. Explicit sandbox modes/profiles and network overrides in extraArgs retain their meaning. An execution-target network denial remains enforced.\n- Codex ACP is the preferred auto lane when Node >=24.11.0 and the Codex ACP server are available. It reuses shared ACP prompt/runtime guidance, selected skill materialization into CODEX_HOME/skills, model/reasoning/fast-mode session config, and existing quota-window reporting. Missing ACP prerequisites fail both default and explicit ACP runs with an actionable setup error; the adapter never switches engines automatically.\n";
24
+ export declare const agentConfigurationDoc = "# codex_local agent configuration\n\nAdapter: codex_local\n\nCore fields:\n- engine (string, optional): defaults to ACP, including legacy unset/\"auto\" values. Missing prerequisites and execution failures fail the run without changing engines. Set \"cli\" to explicitly select the CLI engine.\n- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)\n- instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to stdin prompt at runtime\n- model (string, optional): Codex model id\n- modelReasoningEffort (string, optional): reasoning effort override passed via -c model_reasoning_effort=...; GPT-6 Astra, GPT-6.1 Sol, GPT-6 Sol, and GPT-5.6 Sol/Terra support low|medium|high|xhigh|max|ultra; GPT-6 Luna and GPT-5.6 Luna support low|medium|high|xhigh|max\n- promptTemplate (string, optional): run prompt template\n- search (boolean, optional): run codex with --search\n- fastMode (boolean, optional): enable Codex Fast mode; supported on GPT-6 (astra/sol/luna), GPT-6.1 Sol, GPT-5.6 (sol/terra/luna), GPT-5.5, GPT-5.4 and passed through for manual model IDs\n- dangerouslyBypassApprovalsAndSandbox (boolean, optional): run with bypass flag\n- command (string, optional): defaults to \"codex\"\n- extraArgs (string[], optional): additional CLI args\n- env (object, optional): KEY=VALUE environment variables\n- workspaceStrategy (object, optional): execution workspace strategy; currently supports { type: \"git_worktree\", baseRef?, branchTemplate?, worktreeParentDir? }\n- workspaceRuntime (object, optional): reserved for workspace runtime metadata; workspace runtime services are manually controlled from the workspace UI and are not auto-started by heartbeats\n- filesystemScope (string, optional): set to \"workspace\" to confine local CLI filesystem access with Bubblewrap. Off by default. The workspace and managed CODEX_HOME remain writable; other host paths are hidden.\n- filesystemExtraPaths (array, optional): additional absolute host paths exposed inside the workspace sandbox. String entries are read-only; object entries use { path: \"/absolute/path\", access: \"ro\" | \"rw\" }.\n- filesystemSandboxCommand (string, optional): Bubblewrap executable name or absolute path; defaults to \"bwrap\". Linux only.\n- networkScope (string, optional): \"deny\" blocks all network egress; \"allowlist\" permits only networkAllowlist targets through Paperclip's HTTP(S) proxy. Off by default.\n- networkAllowlist (string[], optional): exact hostnames, hostname:port entries, or origin URLs. Include the configured Codex provider origin, such as \"api.openai.com\" or a custom model provider gateway.\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n- outputInactivityTimeoutMs (number | null, optional): inactivity monitor around the codex child. Resets whenever the child emits stdout/stderr bytes or, on Linux, its process group shows meaningful CPU, disk I/O, or child-process churn during a silent build. Defaults to 30 * 60_000 ms when unset or non-positive. Set to `null` to disable the monitor entirely (only do this for known-slow tasks; the platform-level 1h silent-run safety net still applies). On fire, the adapter sends SIGTERM to the process group, waits 5s, then SIGKILL, and surfaces the run as failed with errorMessage \"monitor: no codex activity (output or process) for {N}m {S}s\".\n- agentCommand (string, optional): ACP server command override used only when engine=\"acp\"; defaults to the package-local codex-acp binary\n- mode (string, optional): ACP session mode when engine=\"acp\"; persistent or oneshot\n- nonInteractivePermissions (string, optional): ACP non-interactive permission fallback when engine=\"acp\"; deny or fail\n- stateDir (string, optional): ACP state directory override when engine=\"acp\"\n- warmHandleIdleMs (number, optional): warm ACP process idle timeout when engine=\"acp\"; defaults to 0\n\nNotes:\n- filesystemScope and networkScope are spawn-level confinement and are orthogonal to Codex approval/sandbox flags. Both require Bubblewrap on the host and explicit engine=\"cli\"; default or explicit ACP is rejected because ACP confinement is not yet supported. networkScope=\"allowlist\" injects HTTP_PROXY/HTTPS_PROXY for the CLI while its private network namespace blocks direct sockets, so every required provider/API hostname must be listed explicitly.\n- Prompts are piped via stdin (Codex receives \"-\" prompt argument).\n- If instructionsFilePath is configured, Paperclip prepends that file's contents to the stdin prompt on every run.\n- Codex exec automatically applies repo-scoped AGENTS.md instructions from the active workspace. Paperclip cannot suppress that discovery in exec mode, so repo AGENTS.md files may still apply even when you only configured an explicit instructionsFilePath.\n- Paperclip injects desired local skills into the effective CODEX_HOME/skills/ directory at execution time so Codex can discover \"$paperclip\" and related skills without polluting the project working directory. For new and updated agents, Paperclip assigns an isolated managed home at ~/.paperclip-pro/instances/<id>/companies/<companyId>/agents/<agentId>/codex-home/skills/; when CODEX_HOME is explicitly overridden in adapter config, that override is used instead.\n- New and updated codex_local agents persist an empty OPENAI_API_KEY override by default so a host-level OPENAI_API_KEY cannot leak into Codex runs through process inheritance. Explicit CODEX_HOME overrides must not point at the shared company codex-home, $CODEX_HOME, or ~/.codex.\n- Some model/tool combinations reject certain effort levels (for example minimal with web search enabled).\n- With ChatGPT sign-in, the Codex backend accepts a model only from a recent enough Codex CLI: GPT-6.1 Sol needs 0.159.0 or newer, GPT-6 Sol and GPT-6 Luna need 0.157.0 or newer. An older CLI fails every turn with \"The '<model>' model is not supported when using Codex with a ChatGPT account.\" The environment Test and the remote runner compare the installed `codex --version` against these floors before running; in a managed sandbox, the fix is a sandbox image that ships the Codex version Paperclip pins.\n- Fast mode is supported on GPT-6 (astra/sol/luna), GPT-6.1 Sol, GPT-5.6 (sol/terra/luna), GPT-5.5, GPT-5.4 and manual model IDs. When enabled for those models, Paperclip applies `service_tier=\"fast\"` and `features.fast_mode=true`.\n- When Paperclip realizes a workspace/runtime for a run, it injects PAPERCLIP_WORKSPACE_* and PAPERCLIP_RUNTIME_* env vars for agent-side tooling.\n- The ACP engine keeps its workspace sandbox and enables network access on each turn. Explicit sandbox_workspace_write.network_access overrides in extraArgs (or env.PAPERCLIP_CODEX_ACP_NETWORK_ACCESS=\"false\") disable it; execution-target network denial wins. The bundled ACP patch is needed because upstream mode presets override Codex config.toml on every turn.\n- The CLI engine defaults to a writable workspace sandbox with network access for unattended work and Paperclip API calls. It does not enable the dangerous bypass flag. Explicit sandbox modes/profiles and network overrides in extraArgs retain their meaning. An execution-target network denial remains enforced.\n- Codex ACP is the preferred auto lane when Node >=24.11.0 and the Codex ACP server are available. It reuses shared ACP prompt/runtime guidance, selected skill materialization into CODEX_HOME/skills, model/reasoning/fast-mode session config, and existing quota-window reporting. Missing ACP prerequisites fail both default and explicit ACP runs with an actionable setup error; the adapter never switches engines automatically.\n";
20
25
  export {};
21
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAClC,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAKtE,eAAO,MAAM,yBAAyB,eAAwC,CAAC;AAC/E,eAAO,MAAM,gDAAgD,OAAO,CAAC;AACrE,eAAO,MAAM,sCAAsC,YACjD,aAAa,EACb,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,SAAS,CACD,CAAC;AAcX,QAAA,MAAM,qCAAqC,YACzC,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,CACC,CAAC;AAUX,QAAA,MAAM,mCAAmC,6DAG/B,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACjC,CAAC,OAAO,qCAAqC,CAAC,CAAC,MAAM,CAAC,GACtD,CAAC,OAAO,mCAAmC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG5E;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,SAAS,yBAAyB,EAAE,CAetC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIhF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGjF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAUvF;AAKD,eAAO,MAAM,MAAM;;;GAmBlB,CAAC;AAEF,eAAO,MAAM,qBAAqB,0pOAgDjC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAClC,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAKtE,eAAO,MAAM,yBAAyB,eAAwC,CAAC;AAC/E,eAAO,MAAM,gDAAgD,OAAO,CAAC;AACrE,eAAO,MAAM,sCAAsC,YACjD,aAAa,EACb,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,SAAS,CACD,CAAC;AAcX,QAAA,MAAM,qCAAqC,YACzC,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,CACC,CAAC;AAUX,QAAA,MAAM,mCAAmC,6DAG/B,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACjC,CAAC,OAAO,qCAAqC,CAAC,CAAC,MAAM,CAAC,GACtD,CAAC,OAAO,mCAAmC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG5E;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,SAAS,yBAAyB,EAAE,CAetC;AAkBD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE9F;AAWD,kGAAkG;AAClG,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAUhF;AAED,eAAO,MAAM,gCAAgC,QACqC,CAAC;AAEnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIhF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGjF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAUvF;AAKD,eAAO,MAAM,MAAM;;;GAmBlB,CAAC;AAEF,eAAO,MAAM,qBAAqB,ypPAiDjC,CAAC"}
package/dist/index.js CHANGED
@@ -66,6 +66,55 @@ export function codexLocalReasoningEffortsForModel(model) {
66
66
  return CODEX_LOCAL_DEFAULT_REASONING_EFFORTS;
67
67
  }
68
68
  }
69
+ // The Codex backend accepts a model for ChatGPT sign-in only from a client that identifies as a
70
+ // recent enough CLI (the request carries the CLI version). An older `codex` fails every turn with
71
+ // "The '<model>' model is not supported when using Codex with a ChatGPT account.", which reads
72
+ // like an account problem when it is really a stale install, typically a sandbox image baked
73
+ // before the catalog gained the model. Record the oldest stable release verified to work so the
74
+ // Test and the remote runner can name the actual gap. Omit models with no verified floor; the
75
+ // install pin in the runner and images is always at or above every floor listed here.
76
+ const CODEX_LOCAL_MODEL_MINIMUM_CLI_VERSIONS = {
77
+ // 0.156.1 and older are rejected (openai/codex#49396); 0.159.0 and 0.159.2 are accepted
78
+ // (openai/codex#49464). No stable release between those was verified either way.
79
+ "gpt-6.1-sol": "0.159.0",
80
+ // Codex 0.157.0 release notes: "Add GPT-6 Sol and Luna to the model catalog".
81
+ "gpt-6-sol": "0.157.0",
82
+ "gpt-6-luna": "0.157.0",
83
+ };
84
+ export function minimumCodexCliVersionForModel(model) {
85
+ return CODEX_LOCAL_MODEL_MINIMUM_CLI_VERSIONS[normalizeCodexModel(model)] ?? null;
86
+ }
87
+ const STABLE_CODEX_CLI_VERSION = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
88
+ function stableCodexCliVersionParts(version) {
89
+ const match = STABLE_CODEX_CLI_VERSION.exec(version.trim());
90
+ if (!match)
91
+ return null;
92
+ const parts = match.slice(1).map(Number);
93
+ return parts.every(Number.isSafeInteger) ? parts : null;
94
+ }
95
+ /** Read the version from `codex --version` output; prerelease or ambiguous output yields null. */
96
+ export function parseCodexCliVersionOutput(output) {
97
+ const versions = output
98
+ .split(/\r?\n/)
99
+ .map((line) => /^codex-cli (\S+)$/.exec(line.trim())?.[1])
100
+ .filter((version) => version !== undefined);
101
+ if (versions.length !== 1 || !stableCodexCliVersionParts(versions[0]))
102
+ return null;
103
+ return versions[0];
104
+ }
105
+ export function codexCliVersionAtLeast(version, minimum) {
106
+ const parsedVersion = stableCodexCliVersionParts(version);
107
+ const parsedMinimum = stableCodexCliVersionParts(minimum);
108
+ if (!parsedVersion || !parsedMinimum)
109
+ return false;
110
+ for (let index = 0; index < parsedMinimum.length; index += 1) {
111
+ if (parsedVersion[index] !== parsedMinimum[index]) {
112
+ return parsedVersion[index] > parsedMinimum[index];
113
+ }
114
+ }
115
+ return true;
116
+ }
117
+ export const CODEX_CHATGPT_MODEL_REJECTION_RE = /The '([^']+)' model is not supported when using Codex with a ChatGPT account\./;
69
118
  export function isCodexLocalKnownModel(model) {
70
119
  const normalizedModel = normalizeModelId(model);
71
120
  if (!normalizedModel)
@@ -153,6 +202,7 @@ Notes:
153
202
  - Paperclip injects desired local skills into the effective CODEX_HOME/skills/ directory at execution time so Codex can discover "$paperclip" and related skills without polluting the project working directory. For new and updated agents, Paperclip assigns an isolated managed home at ~/.paperclip-pro/instances/<id>/companies/<companyId>/agents/<agentId>/codex-home/skills/; when CODEX_HOME is explicitly overridden in adapter config, that override is used instead.
154
203
  - New and updated codex_local agents persist an empty OPENAI_API_KEY override by default so a host-level OPENAI_API_KEY cannot leak into Codex runs through process inheritance. Explicit CODEX_HOME overrides must not point at the shared company codex-home, $CODEX_HOME, or ~/.codex.
155
204
  - Some model/tool combinations reject certain effort levels (for example minimal with web search enabled).
205
+ - With ChatGPT sign-in, the Codex backend accepts a model only from a recent enough Codex CLI: GPT-6.1 Sol needs 0.159.0 or newer, GPT-6 Sol and GPT-6 Luna need 0.157.0 or newer. An older CLI fails every turn with "The '<model>' model is not supported when using Codex with a ChatGPT account." The environment Test and the remote runner compare the installed \`codex --version\` against these floors before running; in a managed sandbox, the fix is a sandbox image that ships the Codex version Paperclip pins.
156
206
  - Fast mode is supported on GPT-6 (astra/sol/luna), GPT-6.1 Sol, GPT-5.6 (sol/terra/luna), GPT-5.5, GPT-5.4 and manual model IDs. When enabled for those models, Paperclip applies \`service_tier="fast"\` and \`features.fast_mode=true\`.
157
207
  - When Paperclip realizes a workspace/runtime for a run, it injects PAPERCLIP_WORKSPACE_* and PAPERCLIP_RUNTIME_* env vars for agent-side tooling.
158
208
  - The ACP engine keeps its workspace sandbox and enables network access on each turn. Explicit sandbox_workspace_write.network_access overrides in extraArgs (or env.PAPERCLIP_CODEX_ACP_NETWORK_ACCESS="false") disable it; execution-target network denial wins. The bundled ACP patch is needed because upstream mode presets override Codex config.toml on every turn.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,38 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { codexLocalReasoningEffortsForModel, DEFAULT_CODEX_LOCAL_MODEL, isCodexLocalFastModeSupported, models, normalizeCodexModel, } from "./index.js";
2
+ import { CODEX_CHATGPT_MODEL_REJECTION_RE, codexCliVersionAtLeast, codexLocalReasoningEffortsForModel, DEFAULT_CODEX_LOCAL_MODEL, isCodexLocalFastModeSupported, minimumCodexCliVersionForModel, models, normalizeCodexModel, parseCodexCliVersionOutput, } from "./index.js";
3
+ describe("codex model CLI floors", () => {
4
+ it("records the oldest Codex CLI verified to run each gated model with ChatGPT sign-in", () => {
5
+ expect(minimumCodexCliVersionForModel("gpt-6.1-sol")).toBe("0.159.0");
6
+ expect(minimumCodexCliVersionForModel(" gpt-6.1-sol ")).toBe("0.159.0");
7
+ expect(minimumCodexCliVersionForModel("gpt-6-sol")).toBe("0.157.0");
8
+ expect(minimumCodexCliVersionForModel("gpt-6-luna")).toBe("0.157.0");
9
+ });
10
+ it.each([DEFAULT_CODEX_LOCAL_MODEL, "gpt-5.6", "gpt-6-astra", "gpt-5.5", "custom-model", "", null, undefined])("has no floor for %s so callers skip the version probe", (model) => {
11
+ expect(minimumCodexCliVersionForModel(model)).toBeNull();
12
+ });
13
+ it("compares stable versions numerically and rejects prerelease or ambiguous input", () => {
14
+ expect(codexCliVersionAtLeast("0.159.0", "0.159.0")).toBe(true);
15
+ expect(codexCliVersionAtLeast("0.160.1", "0.159.0")).toBe(true);
16
+ expect(codexCliVersionAtLeast("1.0.0", "0.159.0")).toBe(true);
17
+ expect(codexCliVersionAtLeast("0.156.1", "0.159.0")).toBe(false);
18
+ expect(codexCliVersionAtLeast("0.16.0", "0.159.0")).toBe(false);
19
+ expect(codexCliVersionAtLeast("0.160.0-alpha.1", "0.159.0")).toBe(false);
20
+ expect(codexCliVersionAtLeast("", "0.159.0")).toBe(false);
21
+ });
22
+ it("parses only a single stable `codex-cli x.y.z` line from --version output", () => {
23
+ expect(parseCodexCliVersionOutput("codex-cli 0.160.0\n")).toBe("0.160.0");
24
+ expect(parseCodexCliVersionOutput("WARNING: PATH unchanged\r\ncodex-cli 0.156.0\r\n")).toBe("0.156.0");
25
+ expect(parseCodexCliVersionOutput("codex-cli 0.162.0-alpha.17")).toBeNull();
26
+ expect(parseCodexCliVersionOutput("codex 0.160.0")).toBeNull();
27
+ expect(parseCodexCliVersionOutput("codex-cli 0.149.0\ncodex-cli 0.160.0")).toBeNull();
28
+ expect(parseCodexCliVersionOutput("")).toBeNull();
29
+ });
30
+ it("matches the backend's ChatGPT model rejection and captures the model", () => {
31
+ const match = CODEX_CHATGPT_MODEL_REJECTION_RE.exec("{\"type\":\"error\",\"status\":400,\"error\":{\"type\":\"invalid_request_error\",\"message\":\"The 'gpt-6.1-sol' model is not supported when using Codex with a ChatGPT account.\"}}");
32
+ expect(match?.[1]).toBe("gpt-6.1-sol");
33
+ expect(CODEX_CHATGPT_MODEL_REJECTION_RE.test("Model metadata for `gpt-6.1-sol` not found")).toBe(false);
34
+ });
35
+ });
3
36
  describe("codex local adapter metadata", () => {
4
37
  it("advertises current Codex-capable OpenAI models without changing the default", () => {
5
38
  const modelIds = models.map((model) => model.id);
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=acp.cli-version.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.cli-version.test.d.ts","sourceRoot":"","sources":["../../src/server/acp.cli-version.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,151 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+ const { ensureAdapterExecutionTargetCommandResolvable, runAdapterExecutionTargetProcess } = vi.hoisted(() => ({
6
+ ensureAdapterExecutionTargetCommandResolvable: vi.fn(async () => { }),
7
+ runAdapterExecutionTargetProcess: vi.fn(async () => ({
8
+ exitCode: 0,
9
+ signal: null,
10
+ timedOut: false,
11
+ stdout: "codex-cli 0.156.0\n",
12
+ stderr: "",
13
+ pid: 1,
14
+ startedAt: new Date().toISOString(),
15
+ })),
16
+ }));
17
+ vi.mock("@tickernelz/paperclip-pro-adapter-utils/execution-target", async () => {
18
+ const actual = await vi.importActual("@tickernelz/paperclip-pro-adapter-utils/execution-target");
19
+ return { ...actual, ensureAdapterExecutionTargetCommandResolvable, runAdapterExecutionTargetProcess };
20
+ });
21
+ import { testCodexAcpEnvironment } from "./acp.js";
22
+ describe("codex ACP lane model CLI floor", () => {
23
+ let cwd;
24
+ beforeEach(async () => {
25
+ cwd = await fs.mkdtemp(path.join(os.tmpdir(), "paperclip-codex-acp-version-"));
26
+ vi.stubEnv("CODEX_HOME", await fs.mkdtemp(path.join(os.tmpdir(), "paperclip-codex-acp-home-")));
27
+ vi.stubEnv("PAPERCLIP_HOME", await fs.mkdtemp(path.join(os.tmpdir(), "paperclip-codex-acp-instance-")));
28
+ vi.stubEnv("PAPERCLIP_INSTANCE_ID", "default");
29
+ });
30
+ afterEach(async () => {
31
+ vi.clearAllMocks();
32
+ vi.unstubAllEnvs();
33
+ await fs.rm(cwd, { recursive: true, force: true }).catch(() => undefined);
34
+ });
35
+ function sandboxTarget() {
36
+ return {
37
+ kind: "remote",
38
+ transport: "sandbox",
39
+ providerKey: "daytona",
40
+ remoteCwd: "/remote/workspace",
41
+ runner: {
42
+ execute: async () => ({
43
+ exitCode: 0,
44
+ signal: null,
45
+ timedOut: false,
46
+ stdout: "",
47
+ stderr: "",
48
+ pid: null,
49
+ startedAt: new Date().toISOString(),
50
+ }),
51
+ },
52
+ };
53
+ }
54
+ it("fails the sandbox Test when the shared codex is older than the model's floor", async () => {
55
+ const result = await testCodexAcpEnvironment({
56
+ companyId: "company-1",
57
+ adapterType: "codex_local",
58
+ config: { cwd, model: "gpt-6.1-sol", env: { OPENAI_API_KEY: "sk-test" } },
59
+ executionTarget: sandboxTarget(),
60
+ environmentName: "QA Daytona",
61
+ });
62
+ expect(result.status).toBe("fail");
63
+ expect(result.checks.find((check) => check.code === "codex_cli_version_incompatible")).toMatchObject({
64
+ level: "error",
65
+ message: "gpt-6.1-sol requires Codex CLI 0.159.0 or newer with ChatGPT sign-in.",
66
+ detail: "Detected Codex CLI 0.156.0.",
67
+ });
68
+ expect(runAdapterExecutionTargetProcess).toHaveBeenCalledTimes(1);
69
+ const call = runAdapterExecutionTargetProcess.mock.calls[0];
70
+ expect(call[1]).toMatchObject({ kind: "remote", transport: "sandbox" });
71
+ expect(call[2]).toBe("codex");
72
+ expect(call[3]).toEqual(["--version"]);
73
+ expect(call[4].env).toEqual({ OPENAI_API_KEY: "sk-test" });
74
+ });
75
+ it("probes the codex the agent's configured env selects, not the image default", async () => {
76
+ runAdapterExecutionTargetProcess.mockResolvedValueOnce({
77
+ exitCode: 0,
78
+ signal: null,
79
+ timedOut: false,
80
+ stdout: "codex-cli 0.160.0\n",
81
+ stderr: "",
82
+ pid: 1,
83
+ startedAt: new Date().toISOString(),
84
+ });
85
+ const result = await testCodexAcpEnvironment({
86
+ companyId: "company-1",
87
+ adapterType: "codex_local",
88
+ config: {
89
+ cwd,
90
+ model: "gpt-6.1-sol",
91
+ env: {
92
+ OPENAI_API_KEY: "sk-test",
93
+ PATH: "/opt/codex-0.160.0/bin:/usr/local/bin:/usr/bin",
94
+ CODEX_HOME: "/remote/codex-home",
95
+ PAPERCLIP_CODEX_ACP_NETWORK_ACCESS: false,
96
+ },
97
+ },
98
+ executionTarget: sandboxTarget(),
99
+ environmentName: "QA Daytona",
100
+ });
101
+ expect(result.status).toBe("pass");
102
+ expect(result.checks.find((check) => check.code === "codex_cli_version_compatible")).toMatchObject({
103
+ message: "Codex CLI 0.160.0 satisfies the 0.159.0 minimum for gpt-6.1-sol.",
104
+ });
105
+ expect(runAdapterExecutionTargetProcess).toHaveBeenCalledTimes(1);
106
+ const call = runAdapterExecutionTargetProcess.mock.calls[0];
107
+ expect(call[3]).toEqual(["--version"]);
108
+ // String-valued entries are forwarded exactly as the ACP run receives them;
109
+ // non-string values are dropped the same way buildCodexAcpConfig consumers do.
110
+ expect(call[4].env).toEqual({
111
+ OPENAI_API_KEY: "sk-test",
112
+ PATH: "/opt/codex-0.160.0/bin:/usr/local/bin:/usr/bin",
113
+ CODEX_HOME: "/remote/codex-home",
114
+ });
115
+ });
116
+ it("passes the sandbox Test when the shared codex satisfies the floor", async () => {
117
+ runAdapterExecutionTargetProcess.mockResolvedValueOnce({
118
+ exitCode: 0,
119
+ signal: null,
120
+ timedOut: false,
121
+ stdout: "codex-cli 0.160.0\n",
122
+ stderr: "",
123
+ pid: 1,
124
+ startedAt: new Date().toISOString(),
125
+ });
126
+ const result = await testCodexAcpEnvironment({
127
+ companyId: "company-1",
128
+ adapterType: "codex_local",
129
+ config: { cwd, model: "gpt-6.1-sol", env: { OPENAI_API_KEY: "sk-test" } },
130
+ executionTarget: sandboxTarget(),
131
+ environmentName: "QA Daytona",
132
+ });
133
+ expect(result.status).toBe("pass");
134
+ expect(result.checks.find((check) => check.code === "codex_cli_version_compatible")).toMatchObject({
135
+ message: "Codex CLI 0.160.0 satisfies the 0.159.0 minimum for gpt-6.1-sol.",
136
+ });
137
+ });
138
+ it("does not probe the sandbox for models without a verified floor", async () => {
139
+ const result = await testCodexAcpEnvironment({
140
+ companyId: "company-1",
141
+ adapterType: "codex_local",
142
+ config: { cwd, model: "gpt-5.6-sol", env: { OPENAI_API_KEY: "sk-test" } },
143
+ executionTarget: sandboxTarget(),
144
+ environmentName: "QA Daytona",
145
+ });
146
+ expect(result.status).toBe("pass");
147
+ expect(runAdapterExecutionTargetProcess).not.toHaveBeenCalled();
148
+ expect(result.checks.some((check) => check.code.startsWith("codex_cli_version_"))).toBe(false);
149
+ });
150
+ });
151
+ //# sourceMappingURL=acp.cli-version.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.cli-version.test.js","sourceRoot":"","sources":["../../src/server/acp.cli-version.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/server/acp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAElB,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,yCAAyC,CAAC;AAiBjD,OAAO,KAAK,EACV,yBAAyB,EAGzB,iCAAiC,EACjC,0BAA0B,EAC3B,MAAM,6DAA6D,CAAC;AAuBrE,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,KAAK,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,KAAK,0BAA0B,GAC7B,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAEnF,KAAK,uBAAuB,GAAG,IAAI,CACjC,yBAAyB,EACzB,aAAa,GAAG,WAAW,GAAG,gBAAgB,CAC/C,CAAC;AAEF,KAAK,gBAAgB,GAAG,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAS1F,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAEjG;AAED,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAuB/B;AAWD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwC5F;AAsGD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,0BAA0B,EACnC,GAAG,EAAE,IAAI,GACR,iCAAiC,GAAG,IAAI,CAe1C;AAqCD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,GACjF;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAA;CAAE,CAuBvE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,uBAA4B,GAAG,gBAAgB,CAe9F;AAQD,wBAAgB,+BAA+B,CAAC,OAAO,SAAkB,GAAG,OAAO,CAMlF;AA0HD,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CA6JvC"}
1
+ {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/server/acp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAElB,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,yCAAyC,CAAC;AAiBjD,OAAO,KAAK,EACV,yBAAyB,EAGzB,iCAAiC,EACjC,0BAA0B,EAC3B,MAAM,6DAA6D,CAAC;AAwBrE,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,KAAK,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,KAAK,0BAA0B,GAC7B,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAEnF,KAAK,uBAAuB,GAAG,IAAI,CACjC,yBAAyB,EACzB,aAAa,GAAG,WAAW,GAAG,gBAAgB,CAC/C,CAAC;AAEF,KAAK,gBAAgB,GAAG,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAS1F,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAEjG;AAED,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAuB/B;AAWD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwC5F;AAsGD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,0BAA0B,EACnC,GAAG,EAAE,IAAI,GACR,iCAAiC,GAAG,IAAI,CAe1C;AAqCD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,GACjF;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAA;CAAE,CAyBvE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,uBAA4B,GAAG,gBAAgB,CAe9F;AAQD,wBAAgB,+BAA+B,CAAC,OAAO,SAAkB,GAAG,OAAO,CAMlF;AA0HD,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CAuLvC"}
@@ -2,7 +2,7 @@ import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { parseLocalProcessFilesystemScope, parseLocalProcessNetworkScope, } from "@tickernelz/paperclip-pro-adapter-utils/local-process-sandbox";
5
- import { inferOpenAiCompatibleBiller } from "@tickernelz/paperclip-pro-adapter-utils";
5
+ import { inferOpenAiCompatibleBiller, resolveManagedOpenAiBilling } from "@tickernelz/paperclip-pro-adapter-utils";
6
6
  import { ensureAdapterExecutionTargetCommandResolvable, readAdapterExecutionTarget, resolveAdapterExecutionTargetCwd, } from "@tickernelz/paperclip-pro-adapter-utils/execution-target";
7
7
  import { DEFAULT_ACP_ENGINE_MODE, DEFAULT_ACP_ENGINE_NON_INTERACTIVE_PERMISSIONS, DEFAULT_ACP_ENGINE_PERMISSION_MODE, DEFAULT_ACP_ENGINE_WARM_HANDLE_IDLE_MS, } from "@tickernelz/paperclip-pro-adapter-utils/acpx-engine/constants";
8
8
  import { asNumber, asString, asStringArray, parseObject, } from "@tickernelz/paperclip-pro-adapter-utils/server-utils";
@@ -13,6 +13,7 @@ import { copyBackCodexAuth } from "./codex-auth-copyback.js";
13
13
  import { buildCodexAuthInboundProvision } from "./codex-auth-merge-scripts.js";
14
14
  import { evaluateCodexCredentialReadiness, resolveSharedCodexHomeDir, stageCodexHomeForSync, } from "./codex-home.js";
15
15
  import { ADAPTER_AUTH_MISSING_CHECK_CODE } from "./auth-check.js";
16
+ import { checkCodexCliVersionForModel } from "./cli-version.js";
16
17
  const moduleDir = path.dirname(fileURLToPath(import.meta.url));
17
18
  const packageRootDir = path.resolve(moduleDir, "../..");
18
19
  const MIN_ACP_NODE_VERSION = "24.11.0";
@@ -245,6 +246,9 @@ function withCodexAuthRefreshFailureClassification(result) {
245
246
  * the adapter-config env.
246
247
  */
247
248
  export function resolveCodexAcpBillingIdentity(ctx) {
249
+ const managedBilling = resolveManagedOpenAiBilling(ctx.config.managedAiRouting);
250
+ if (managedBilling)
251
+ return managedBilling;
248
252
  const envConfig = parseObject(parseObject(ctx.config).env);
249
253
  const target = readAdapterExecutionTarget({
250
254
  executionTarget: ctx.executionTarget,
@@ -535,6 +539,33 @@ export async function testCodexAcpEnvironment(ctx) {
535
539
  });
536
540
  }
537
541
  }
542
+ if (targetIsRemote && commandResolvable) {
543
+ // The ACP server spawns the shared `codex` installed in the environment.
544
+ // Models with a verified CLI floor are checked against that executable so
545
+ // a stale sandbox image is named here, before a run fails on every turn
546
+ // with the backend's "not supported when using Codex with a ChatGPT
547
+ // account" rejection. Models without a floor skip the probe.
548
+ //
549
+ // Remote ACP runs receive the adapter's string-valued env entries (see
550
+ // buildCodexAcpConfig), so the probe gets the same ones. An agent that
551
+ // selects its Codex install through PATH is then measured against that
552
+ // install rather than the image default.
553
+ const probeEnv = {};
554
+ for (const [key, value] of Object.entries(envConfig)) {
555
+ if (typeof value === "string")
556
+ probeEnv[key] = value;
557
+ }
558
+ const versionCheck = await checkCodexCliVersionForModel({
559
+ runId: `codex-acp-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`,
560
+ model: asString(config.model, ""),
561
+ command: "codex",
562
+ target,
563
+ cwd: resolveAdapterExecutionTargetCwd(target, asString(config.cwd, ""), process.cwd()),
564
+ env: probeEnv,
565
+ });
566
+ if (versionCheck)
567
+ checks.push(versionCheck.check);
568
+ }
538
569
  const mode = firstNonEmptyString(config.mode, config.acpMode) ?? DEFAULT_ACP_ENGINE_MODE;
539
570
  const warmHandleIdleMs = asNumber(config.warmHandleIdleMs ?? config.acpWarmHandleIdleMs, DEFAULT_ACP_ENGINE_WARM_HANDLE_IDLE_MS);
540
571
  checks.push({
@@ -1 +1 @@
1
- {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/server/acp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/server/acp.ts"],"names":[],"mappings":"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"}
@@ -1194,6 +1194,12 @@ describe("codex_local ACP lane", () => {
1194
1194
  });
1195
1195
  });
1196
1196
  describe("resolveCodexAcpBillingIdentity", () => {
1197
+ it.each([["openrouter", "api_key", "openrouter"], ["custom", "api_key", "unknown"], ["local", "none", "unknown"]])("classifies managed %s/%s independently of host authentication", (kind, auth, biller) => {
1198
+ expect(resolveCodexAcpBillingIdentity({ config: {
1199
+ managedAiRouting: { kind, auth },
1200
+ env: { OPENAI_API_KEY: "", PAPERCLIP_AI_PROVIDER_KEY: auth === "none" ? "" : "fixture" },
1201
+ } })).toEqual({ provider: "openai", biller, billingType: "api" });
1202
+ });
1197
1203
  const originalOpenAiKey = process.env.OPENAI_API_KEY;
1198
1204
  const originalOpenRouterKey = process.env.OPENROUTER_API_KEY;
1199
1205
  afterEach(() => {