@tickernelz/paperclip-pro-adapter-codex-local 2026.925.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 (268) hide show
  1. package/LICENSE +22 -0
  2. package/dist/cli/format-event.d.ts +2 -0
  3. package/dist/cli/format-event.d.ts.map +1 -0
  4. package/dist/cli/format-event.js +218 -0
  5. package/dist/cli/format-event.js.map +1 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +2 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/cli/quota-probe.d.ts +3 -0
  11. package/dist/cli/quota-probe.d.ts.map +1 -0
  12. package/dist/cli/quota-probe.js +104 -0
  13. package/dist/cli/quota-probe.js.map +1 -0
  14. package/dist/index.d.ts +21 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +155 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/index.test.d.ts +2 -0
  19. package/dist/index.test.d.ts.map +1 -0
  20. package/dist/index.test.js +58 -0
  21. package/dist/index.test.js.map +1 -0
  22. package/dist/server/acp.d.ts +30 -0
  23. package/dist/server/acp.d.ts.map +1 -0
  24. package/dist/server/acp.js +532 -0
  25. package/dist/server/acp.js.map +1 -0
  26. package/dist/server/acp.test.d.ts +2 -0
  27. package/dist/server/acp.test.d.ts.map +1 -0
  28. package/dist/server/acp.test.js +1087 -0
  29. package/dist/server/acp.test.js.map +1 -0
  30. package/dist/server/adapter-auth-promotion.d.ts +102 -0
  31. package/dist/server/adapter-auth-promotion.d.ts.map +1 -0
  32. package/dist/server/adapter-auth-promotion.js +210 -0
  33. package/dist/server/adapter-auth-promotion.js.map +1 -0
  34. package/dist/server/adapter-auth-promotion.test.d.ts +2 -0
  35. package/dist/server/adapter-auth-promotion.test.d.ts.map +1 -0
  36. package/dist/server/adapter-auth-promotion.test.js +658 -0
  37. package/dist/server/adapter-auth-promotion.test.js.map +1 -0
  38. package/dist/server/auth-check.d.ts +8 -0
  39. package/dist/server/auth-check.d.ts.map +1 -0
  40. package/dist/server/auth-check.js +8 -0
  41. package/dist/server/auth-check.js.map +1 -0
  42. package/dist/server/auth-precedence.d.ts +16 -0
  43. package/dist/server/auth-precedence.d.ts.map +1 -0
  44. package/dist/server/auth-precedence.js +20 -0
  45. package/dist/server/auth-precedence.js.map +1 -0
  46. package/dist/server/auth-precedence.test.d.ts +2 -0
  47. package/dist/server/auth-precedence.test.d.ts.map +1 -0
  48. package/dist/server/auth-precedence.test.js +100 -0
  49. package/dist/server/auth-precedence.test.js.map +1 -0
  50. package/dist/server/codex-args.d.ts +13 -0
  51. package/dist/server/codex-args.d.ts.map +1 -0
  52. package/dist/server/codex-args.js +76 -0
  53. package/dist/server/codex-args.js.map +1 -0
  54. package/dist/server/codex-args.test.d.ts +2 -0
  55. package/dist/server/codex-args.test.d.ts.map +1 -0
  56. package/dist/server/codex-args.test.js +243 -0
  57. package/dist/server/codex-args.test.js.map +1 -0
  58. package/dist/server/codex-auth-cache.d.ts +206 -0
  59. package/dist/server/codex-auth-cache.d.ts.map +1 -0
  60. package/dist/server/codex-auth-cache.js +501 -0
  61. package/dist/server/codex-auth-cache.js.map +1 -0
  62. package/dist/server/codex-auth-cache.test.d.ts +2 -0
  63. package/dist/server/codex-auth-cache.test.d.ts.map +1 -0
  64. package/dist/server/codex-auth-cache.test.js +497 -0
  65. package/dist/server/codex-auth-cache.test.js.map +1 -0
  66. package/dist/server/codex-auth-copyback.d.ts +53 -0
  67. package/dist/server/codex-auth-copyback.d.ts.map +1 -0
  68. package/dist/server/codex-auth-copyback.js +123 -0
  69. package/dist/server/codex-auth-copyback.js.map +1 -0
  70. package/dist/server/codex-auth-copyback.test.d.ts +2 -0
  71. package/dist/server/codex-auth-copyback.test.d.ts.map +1 -0
  72. package/dist/server/codex-auth-copyback.test.js +507 -0
  73. package/dist/server/codex-auth-copyback.test.js.map +1 -0
  74. package/dist/server/codex-auth-merge-decision.cjs +170 -0
  75. package/dist/server/codex-auth-merge-decision.d.ts +22 -0
  76. package/dist/server/codex-auth-merge-decision.d.ts.map +1 -0
  77. package/dist/server/codex-auth-merge-decision.js +58 -0
  78. package/dist/server/codex-auth-merge-decision.js.map +1 -0
  79. package/dist/server/codex-auth-merge-decision.test.d.ts +2 -0
  80. package/dist/server/codex-auth-merge-decision.test.d.ts.map +1 -0
  81. package/dist/server/codex-auth-merge-decision.test.js +230 -0
  82. package/dist/server/codex-auth-merge-decision.test.js.map +1 -0
  83. package/dist/server/codex-auth-merge-extract.sh +73 -0
  84. package/dist/server/codex-auth-merge-scripts.d.ts +21 -0
  85. package/dist/server/codex-auth-merge-scripts.d.ts.map +1 -0
  86. package/dist/server/codex-auth-merge-scripts.js +40 -0
  87. package/dist/server/codex-auth-merge-scripts.js.map +1 -0
  88. package/dist/server/codex-auth-merge.test.d.ts +2 -0
  89. package/dist/server/codex-auth-merge.test.d.ts.map +1 -0
  90. package/dist/server/codex-auth-merge.test.js +714 -0
  91. package/dist/server/codex-auth-merge.test.js.map +1 -0
  92. package/dist/server/codex-auth-seed-write.d.ts +30 -0
  93. package/dist/server/codex-auth-seed-write.d.ts.map +1 -0
  94. package/dist/server/codex-auth-seed-write.js +41 -0
  95. package/dist/server/codex-auth-seed-write.js.map +1 -0
  96. package/dist/server/codex-home.d.ts +162 -0
  97. package/dist/server/codex-home.d.ts.map +1 -0
  98. package/dist/server/codex-home.js +771 -0
  99. package/dist/server/codex-home.js.map +1 -0
  100. package/dist/server/codex-home.test.d.ts +2 -0
  101. package/dist/server/codex-home.test.d.ts.map +1 -0
  102. package/dist/server/codex-home.test.js +1183 -0
  103. package/dist/server/codex-home.test.js.map +1 -0
  104. package/dist/server/config-schema.d.ts +3 -0
  105. package/dist/server/config-schema.d.ts.map +1 -0
  106. package/dist/server/config-schema.js +67 -0
  107. package/dist/server/config-schema.js.map +1 -0
  108. package/dist/server/device-login-export.d.ts +56 -0
  109. package/dist/server/device-login-export.d.ts.map +1 -0
  110. package/dist/server/device-login-export.js +230 -0
  111. package/dist/server/device-login-export.js.map +1 -0
  112. package/dist/server/device-login-export.test.d.ts +2 -0
  113. package/dist/server/device-login-export.test.d.ts.map +1 -0
  114. package/dist/server/device-login-export.test.js +245 -0
  115. package/dist/server/device-login-export.test.js.map +1 -0
  116. package/dist/server/device-login-parse.d.ts +20 -0
  117. package/dist/server/device-login-parse.d.ts.map +1 -0
  118. package/dist/server/device-login-parse.js +155 -0
  119. package/dist/server/device-login-parse.js.map +1 -0
  120. package/dist/server/device-login-parse.test.d.ts +2 -0
  121. package/dist/server/device-login-parse.test.d.ts.map +1 -0
  122. package/dist/server/device-login-parse.test.js +269 -0
  123. package/dist/server/device-login-parse.test.js.map +1 -0
  124. package/dist/server/device-login-runner.d.ts +69 -0
  125. package/dist/server/device-login-runner.d.ts.map +1 -0
  126. package/dist/server/device-login-runner.js +109 -0
  127. package/dist/server/device-login-runner.js.map +1 -0
  128. package/dist/server/device-login-runner.test.d.ts +2 -0
  129. package/dist/server/device-login-runner.test.d.ts.map +1 -0
  130. package/dist/server/device-login-runner.test.js +201 -0
  131. package/dist/server/device-login-runner.test.js.map +1 -0
  132. package/dist/server/engine-availability.test.d.ts +2 -0
  133. package/dist/server/engine-availability.test.d.ts.map +1 -0
  134. package/dist/server/engine-availability.test.js +41 -0
  135. package/dist/server/engine-availability.test.js.map +1 -0
  136. package/dist/server/execute.acp-fallback.test.d.ts +2 -0
  137. package/dist/server/execute.acp-fallback.test.d.ts.map +1 -0
  138. package/dist/server/execute.acp-fallback.test.js +123 -0
  139. package/dist/server/execute.acp-fallback.test.js.map +1 -0
  140. package/dist/server/execute.auth-precedence.test.d.ts +2 -0
  141. package/dist/server/execute.auth-precedence.test.d.ts.map +1 -0
  142. package/dist/server/execute.auth-precedence.test.js +137 -0
  143. package/dist/server/execute.auth-precedence.test.js.map +1 -0
  144. package/dist/server/execute.auth.test.d.ts +2 -0
  145. package/dist/server/execute.auth.test.d.ts.map +1 -0
  146. package/dist/server/execute.auth.test.js +197 -0
  147. package/dist/server/execute.auth.test.js.map +1 -0
  148. package/dist/server/execute.d.ts +40 -0
  149. package/dist/server/execute.d.ts.map +1 -0
  150. package/dist/server/execute.js +1290 -0
  151. package/dist/server/execute.js.map +1 -0
  152. package/dist/server/execute.remote.test.d.ts +2 -0
  153. package/dist/server/execute.remote.test.d.ts.map +1 -0
  154. package/dist/server/execute.remote.test.js +556 -0
  155. package/dist/server/execute.remote.test.js.map +1 -0
  156. package/dist/server/execute.stderr-error.test.d.ts +2 -0
  157. package/dist/server/execute.stderr-error.test.d.ts.map +1 -0
  158. package/dist/server/execute.stderr-error.test.js +142 -0
  159. package/dist/server/execute.stderr-error.test.js.map +1 -0
  160. package/dist/server/execute.test.d.ts +2 -0
  161. package/dist/server/execute.test.d.ts.map +1 -0
  162. package/dist/server/execute.test.js +240 -0
  163. package/dist/server/execute.test.js.map +1 -0
  164. package/dist/server/index.d.ts +18 -0
  165. package/dist/server/index.d.ts.map +1 -0
  166. package/dist/server/index.js +71 -0
  167. package/dist/server/index.js.map +1 -0
  168. package/dist/server/output-inactivity-monitor.d.ts +62 -0
  169. package/dist/server/output-inactivity-monitor.d.ts.map +1 -0
  170. package/dist/server/output-inactivity-monitor.integration.test.d.ts +2 -0
  171. package/dist/server/output-inactivity-monitor.integration.test.d.ts.map +1 -0
  172. package/dist/server/output-inactivity-monitor.integration.test.js +136 -0
  173. package/dist/server/output-inactivity-monitor.integration.test.js.map +1 -0
  174. package/dist/server/output-inactivity-monitor.js +112 -0
  175. package/dist/server/output-inactivity-monitor.js.map +1 -0
  176. package/dist/server/output-inactivity-monitor.test.d.ts +2 -0
  177. package/dist/server/output-inactivity-monitor.test.d.ts.map +1 -0
  178. package/dist/server/output-inactivity-monitor.test.js +284 -0
  179. package/dist/server/output-inactivity-monitor.test.js.map +1 -0
  180. package/dist/server/parse.d.ts +51 -0
  181. package/dist/server/parse.d.ts.map +1 -0
  182. package/dist/server/parse.js +261 -0
  183. package/dist/server/parse.js.map +1 -0
  184. package/dist/server/parse.test.d.ts +2 -0
  185. package/dist/server/parse.test.d.ts.map +1 -0
  186. package/dist/server/parse.test.js +186 -0
  187. package/dist/server/parse.test.js.map +1 -0
  188. package/dist/server/process-activity-monitor.d.ts +21 -0
  189. package/dist/server/process-activity-monitor.d.ts.map +1 -0
  190. package/dist/server/process-activity-monitor.js +103 -0
  191. package/dist/server/process-activity-monitor.js.map +1 -0
  192. package/dist/server/process-activity-monitor.test.d.ts +2 -0
  193. package/dist/server/process-activity-monitor.test.d.ts.map +1 -0
  194. package/dist/server/process-activity-monitor.test.js +82 -0
  195. package/dist/server/process-activity-monitor.test.js.map +1 -0
  196. package/dist/server/quota-spawn-error.test.d.ts +2 -0
  197. package/dist/server/quota-spawn-error.test.d.ts.map +1 -0
  198. package/dist/server/quota-spawn-error.test.js +174 -0
  199. package/dist/server/quota-spawn-error.test.js.map +1 -0
  200. package/dist/server/quota.d.ts +66 -0
  201. package/dist/server/quota.d.ts.map +1 -0
  202. package/dist/server/quota.js +511 -0
  203. package/dist/server/quota.js.map +1 -0
  204. package/dist/server/runtime-config.d.ts +11 -0
  205. package/dist/server/runtime-config.d.ts.map +1 -0
  206. package/dist/server/runtime-config.js +380 -0
  207. package/dist/server/runtime-config.js.map +1 -0
  208. package/dist/server/runtime-config.test.d.ts +2 -0
  209. package/dist/server/runtime-config.test.d.ts.map +1 -0
  210. package/dist/server/runtime-config.test.js +367 -0
  211. package/dist/server/runtime-config.test.js.map +1 -0
  212. package/dist/server/skills.d.ts +8 -0
  213. package/dist/server/skills.d.ts.map +1 -0
  214. package/dist/server/skills.js +26 -0
  215. package/dist/server/skills.js.map +1 -0
  216. package/dist/server/test.d.ts +3 -0
  217. package/dist/server/test.d.ts.map +1 -0
  218. package/dist/server/test.js +458 -0
  219. package/dist/server/test.js.map +1 -0
  220. package/dist/server/test.remote.test.d.ts +2 -0
  221. package/dist/server/test.remote.test.d.ts.map +1 -0
  222. package/dist/server/test.remote.test.js +396 -0
  223. package/dist/server/test.remote.test.js.map +1 -0
  224. package/dist/ui/build-config.d.ts +5 -0
  225. package/dist/ui/build-config.d.ts.map +1 -0
  226. package/dist/ui/build-config.js +229 -0
  227. package/dist/ui/build-config.js.map +1 -0
  228. package/dist/ui/build-config.test.d.ts +2 -0
  229. package/dist/ui/build-config.test.d.ts.map +1 -0
  230. package/dist/ui/build-config.test.js +272 -0
  231. package/dist/ui/build-config.test.js.map +1 -0
  232. package/dist/ui/index.d.ts +4 -0
  233. package/dist/ui/index.d.ts.map +1 -0
  234. package/dist/ui/index.js +8 -0
  235. package/dist/ui/index.js.map +1 -0
  236. package/dist/ui/parse-stdout.d.ts +3 -0
  237. package/dist/ui/parse-stdout.d.ts.map +1 -0
  238. package/dist/ui/parse-stdout.js +265 -0
  239. package/dist/ui/parse-stdout.js.map +1 -0
  240. package/dist/ui/parse-stdout.test.d.ts +2 -0
  241. package/dist/ui/parse-stdout.test.d.ts.map +1 -0
  242. package/dist/ui/parse-stdout.test.js +77 -0
  243. package/dist/ui/parse-stdout.test.js.map +1 -0
  244. package/package.json +61 -0
  245. package/skills/agentmail/SKILL.md +70 -0
  246. package/skills/paperclip/SKILL.md +712 -0
  247. package/skills/paperclip/references/api-reference.md +1675 -0
  248. package/skills/paperclip/references/artifacts.md +158 -0
  249. package/skills/paperclip/references/cases.md +295 -0
  250. package/skills/paperclip/references/company-skills.md +266 -0
  251. package/skills/paperclip/references/issue-workspaces.md +80 -0
  252. package/skills/paperclip/references/routines.md +231 -0
  253. package/skills/paperclip/references/workflows.md +141 -0
  254. package/skills/paperclip/scripts/paperclip-upload-artifact.sh +592 -0
  255. package/skills/paperclip-board/SKILL.md +619 -0
  256. package/skills/paperclip-converting-plans-to-tasks/SKILL.md +60 -0
  257. package/skills/paperclip-create-agent/SKILL.md +179 -0
  258. package/skills/paperclip-create-agent/references/agent-instruction-templates.md +123 -0
  259. package/skills/paperclip-create-agent/references/agents/coder.md +64 -0
  260. package/skills/paperclip-create-agent/references/agents/qa.md +88 -0
  261. package/skills/paperclip-create-agent/references/agents/securityengineer.md +135 -0
  262. package/skills/paperclip-create-agent/references/agents/uxdesigner.md +115 -0
  263. package/skills/paperclip-create-agent/references/api-reference.md +110 -0
  264. package/skills/paperclip-create-agent/references/baseline-role-guide.md +168 -0
  265. package/skills/paperclip-create-agent/references/draft-review-checklist.md +95 -0
  266. package/skills/para-memory-files/SKILL.md +100 -0
  267. package/skills/para-memory-files/references/schemas.md +35 -0
  268. package/skills/slack/SKILL.md +65 -0
@@ -0,0 +1,458 @@
1
+ import { asString, parseObject, ensurePathInEnv, } from "@tickernelz/paperclip-pro-adapter-utils/server-utils";
2
+ import { ensureAdapterExecutionTargetCommandResolvable, ensureAdapterExecutionTargetDirectory, maybeRunSandboxInstallCommand, runAdapterExecutionTargetProcess, describeAdapterExecutionTarget, resolveAdapterExecutionTargetCwd, prepareAdapterExecutionTargetRuntime, } from "@tickernelz/paperclip-pro-adapter-utils/execution-target";
3
+ import fs from "node:fs/promises";
4
+ import path from "node:path";
5
+ import os from "node:os";
6
+ import { parseCodexJsonl } from "./parse.js";
7
+ import { SANDBOX_INSTALL_COMMAND } from "../index.js";
8
+ import { codexHomeDir, readCodexAuthInfo } from "./quota.js";
9
+ import { buildCodexExecArgs } from "./codex-args.js";
10
+ import { isManagedCodexHomePath, prepareManagedCodexHome, resolveSharedCodexHomeDir, seedManagedCodexHome, } from "./codex-home.js";
11
+ import { isCodexAuthCacheEnabled, resolveCodexAuthCacheEntryPath, selectVendCredential, } from "./codex-auth-cache.js";
12
+ import { resolveCodexExecutionEngineForRun, testCodexAcpEnvironment } from "./acp.js";
13
+ import { ADAPTER_AUTH_MISSING_CHECK_CODE } from "./auth-check.js";
14
+ function summarizeStatus(checks) {
15
+ if (checks.some((check) => check.level === "error"))
16
+ return "fail";
17
+ if (checks.some((check) => check.level === "warn"))
18
+ return "warn";
19
+ return "pass";
20
+ }
21
+ function isNonEmpty(value) {
22
+ return typeof value === "string" && value.trim().length > 0;
23
+ }
24
+ function firstNonEmptyLine(text) {
25
+ return (text
26
+ .split(/\r?\n/)
27
+ .map((line) => line.trim())
28
+ .find(Boolean) ?? "");
29
+ }
30
+ function commandLooksLike(command, expected) {
31
+ const base = path.basename(command).toLowerCase();
32
+ return base === expected || base === `${expected}.cmd` || base === `${expected}.exe`;
33
+ }
34
+ function summarizeProbeDetail(stdout, stderr, parsedError) {
35
+ const raw = parsedError?.trim() || firstNonEmptyLine(stderr) || firstNonEmptyLine(stdout);
36
+ if (!raw)
37
+ return null;
38
+ const clean = raw.replace(/\s+/g, " ").trim();
39
+ const max = 240;
40
+ return clean.length > max ? `${clean.slice(0, max - 1)}…` : clean;
41
+ }
42
+ const CODEX_AUTH_REQUIRED_RE = /(?:not\s+logged\s+in|login\s+required|authentication\s+required|unauthorized|invalid(?:\s+or\s+missing)?\s+api(?:[_\s-]?key)?|openai[_\s-]?api[_\s-]?key|api[_\s-]?key.*required|please\s+run\s+`?codex\s+login`?)/i;
43
+ const PROBE_CLEANUP_WARNING = "[paperclip] Codex probe cleanup incomplete";
44
+ async function prepareCodexHelloProbe(input) {
45
+ let preparedRuntime = null;
46
+ let preparedRuntimeWorkspaceLocalDir = null;
47
+ let probeHomeLocalDir = null;
48
+ const cleanup = async () => {
49
+ await preparedRuntime?.restoreWorkspace().catch(() => { });
50
+ if (preparedRuntimeWorkspaceLocalDir) {
51
+ await fs.rm(preparedRuntimeWorkspaceLocalDir, { recursive: true, force: true }).catch(() => { });
52
+ }
53
+ if (probeHomeLocalDir) {
54
+ await fs.rm(probeHomeLocalDir, { recursive: true, force: true }).catch(() => { });
55
+ }
56
+ };
57
+ if (input.targetIsRemote && !input.probeApiKey) {
58
+ // Prepare the exact home a real run would use, mirroring execute.ts: vend
59
+ // the shared credential's freshest same-identity cached copy, then seed the
60
+ // effective home — the company default when no CODEX_HOME is configured, a
61
+ // Paperclip-managed override (the per-agent home) seeded in place — and
62
+ // stage that home's credentials. A genuine external override manages its
63
+ // own auth: its bytes are staged as-is and it is never seeded or mutated.
64
+ // Without this mirror the probe exercises a different credential than the
65
+ // run, and the Test and real runs can disagree in both directions.
66
+ const configuredCodexHome = isNonEmpty(input.env.CODEX_HOME)
67
+ ? path.resolve(input.env.CODEX_HOME.trim())
68
+ : null;
69
+ const configuredHomeIsManaged = configuredCodexHome != null &&
70
+ isManagedCodexHomePath(process.env, input.companyId, configuredCodexHome);
71
+ if (!input.managedAiConnection && isCodexAuthCacheEnabled(process.env)) {
72
+ // Identity-anchored cache vend, exactly as execute runs it before the
73
+ // seeding below. Best-effort: a vend failure never blocks the probe, and
74
+ // the probe then stages the shared credential as-is.
75
+ const sharedHomeAuthPath = path.join(resolveSharedCodexHomeDir(process.env), "auth.json");
76
+ await selectVendCredential(sharedHomeAuthPath, (accountId) => resolveCodexAuthCacheEntryPath(process.env, accountId, input.companyId), async () => { }).catch(() => undefined);
77
+ }
78
+ let effectiveHome;
79
+ if (configuredCodexHome == null) {
80
+ effectiveHome = await prepareManagedCodexHome(process.env, async () => { }, input.companyId, {
81
+ apiKey: null,
82
+ });
83
+ }
84
+ else {
85
+ if (configuredHomeIsManaged) {
86
+ await seedManagedCodexHome(configuredCodexHome, process.env, async () => { }, {
87
+ apiKey: null,
88
+ });
89
+ }
90
+ effectiveHome = configuredCodexHome;
91
+ }
92
+ // Upload only the credential/config files the login probe needs, not the
93
+ // entire effective CODEX_HOME. A real managed home accumulates hundreds of
94
+ // MB of session/state history (`sessions/`, `state_*.sqlite`, …); tarring
95
+ // and streaming all of it into the sandbox made the environment Test probe
96
+ // take many minutes and look like it hung. The hello probe only needs auth.
97
+ probeHomeLocalDir = await fs.mkdtemp(path.join(os.tmpdir(), `paperclip-codex-probe-home-${input.runId}-`));
98
+ let seededAuth = false;
99
+ for (const file of ["auth.json", "config.toml"]) {
100
+ // `fs.readFile` follows the home's `auth.json` symlink into the host's
101
+ // `~/.codex`, so we copy the resolved bytes as a plain file.
102
+ const contents = await fs.readFile(path.join(effectiveHome, file)).catch(() => null);
103
+ if (contents) {
104
+ await fs.writeFile(path.join(probeHomeLocalDir, file), contents);
105
+ if (file === "auth.json")
106
+ seededAuth = true;
107
+ }
108
+ }
109
+ // When the host has no Codex credentials to seed, don't override CODEX_HOME.
110
+ // Pointing Codex at an empty uploaded home would mask any login already
111
+ // baked into the sandbox (e.g. a captured custom-image snapshot); leaving
112
+ // CODEX_HOME unset lets the probe exercise that in-sandbox login instead.
113
+ if (!seededAuth) {
114
+ return {
115
+ command: input.command,
116
+ args: input.args,
117
+ env: { ...input.env },
118
+ cleanup,
119
+ };
120
+ }
121
+ preparedRuntimeWorkspaceLocalDir = await fs.mkdtemp(path.join(os.tmpdir(), `paperclip-codex-envtest-${input.runId}-`));
122
+ preparedRuntime = await prepareAdapterExecutionTargetRuntime({
123
+ runId: input.runId,
124
+ target: input.target,
125
+ adapterKey: "codex",
126
+ workspaceLocalDir: preparedRuntimeWorkspaceLocalDir,
127
+ // Pass `input.cwd` as the base (not a pre-built per-run subdir).
128
+ // `prepareRemoteManagedRuntime` itself appends
129
+ // `.paperclip-runtime/runs/<runId>/workspace` to whatever it gets, so
130
+ // pre-building a per-run path here would double-nest the run ID.
131
+ workspaceRemoteDir: input.cwd,
132
+ installCommand: SANDBOX_INSTALL_COMMAND,
133
+ detectCommand: input.command,
134
+ assets: [
135
+ {
136
+ key: "home",
137
+ localDir: probeHomeLocalDir,
138
+ followSymlinks: true,
139
+ },
140
+ ],
141
+ });
142
+ return {
143
+ command: input.command,
144
+ args: input.args,
145
+ env: preparedRuntime.assetDirs.home
146
+ ? { ...input.env, CODEX_HOME: preparedRuntime.assetDirs.home }
147
+ : { ...input.env },
148
+ cleanup,
149
+ };
150
+ }
151
+ if (input.probeApiKey) {
152
+ const probeHome = input.targetIsRemote
153
+ ? path.posix.join(input.cwd, ".paperclip-runtime", "codex", `probe-home-${input.runId}`)
154
+ : path.join(os.tmpdir(), `paperclip-codex-probe-${input.runId}`);
155
+ // The local finally path retries cleanup independently of the model result.
156
+ if (!input.targetIsRemote)
157
+ probeHomeLocalDir = probeHome;
158
+ return {
159
+ command: "sh",
160
+ args: [
161
+ "-c",
162
+ `set -e; umask 077; mkdir -p "$CODEX_HOME"; printf "%s" "$_PAPERCLIP_CODEX_AUTH_JSON" > "$CODEX_HOME/auth.json"; unset _PAPERCLIP_CODEX_AUTH_JSON; cleanup() { result=$?; trap - EXIT; rm -f "$CODEX_HOME/auth.json" || true; rm -rf "$CODEX_HOME" || printf '%s\\n' '${PROBE_CLEANUP_WARNING}' >&2; exit "$result"; }; trap cleanup EXIT; trap 'exit 130' INT; trap 'exit 143' TERM; "$0" "$@"`,
163
+ input.command,
164
+ ...input.args,
165
+ ],
166
+ env: {
167
+ ...input.env,
168
+ CODEX_HOME: probeHome,
169
+ _PAPERCLIP_CODEX_AUTH_JSON: JSON.stringify({ OPENAI_API_KEY: input.probeApiKey }),
170
+ },
171
+ cleanup,
172
+ };
173
+ }
174
+ return {
175
+ command: input.command,
176
+ args: input.args,
177
+ env: { ...input.env },
178
+ cleanup,
179
+ };
180
+ }
181
+ export async function testEnvironment(ctx) {
182
+ const engineSelection = await resolveCodexExecutionEngineForRun({
183
+ config: parseObject(ctx.config),
184
+ executionTarget: ctx.executionTarget,
185
+ });
186
+ if (engineSelection.unavailableReason) {
187
+ return {
188
+ adapterType: "codex_local",
189
+ status: "fail",
190
+ checks: [{
191
+ code: "adapter_engine_unavailable",
192
+ level: "error",
193
+ message: engineSelection.unavailableReason,
194
+ hint: ctx.executionTarget?.kind === "remote"
195
+ ? "In the agent’s runtime settings, select the CLI engine, or use a sandbox image with the Codex ACP server installed."
196
+ : undefined,
197
+ }],
198
+ testedAt: new Date().toISOString(),
199
+ };
200
+ }
201
+ if (engineSelection.engine === "acp") {
202
+ return testCodexAcpEnvironment(ctx);
203
+ }
204
+ const checks = [];
205
+ const config = parseObject(ctx.config);
206
+ const command = asString(config.command, "codex");
207
+ const target = ctx.executionTarget ?? null;
208
+ const targetIsRemote = target?.kind === "remote";
209
+ const targetIsSandbox = target?.kind === "remote" && target.transport === "sandbox";
210
+ const cwd = resolveAdapterExecutionTargetCwd(target, asString(config.cwd, ""), process.cwd());
211
+ const targetLabel = targetIsRemote
212
+ ? ctx.environmentName ?? describeAdapterExecutionTarget(target)
213
+ : null;
214
+ const runId = `codex-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`;
215
+ if (targetLabel) {
216
+ checks.push({
217
+ code: "codex_environment_target",
218
+ level: "info",
219
+ message: `Probing inside environment: ${targetLabel}`,
220
+ });
221
+ }
222
+ try {
223
+ await ensureAdapterExecutionTargetDirectory(runId, target, cwd, {
224
+ cwd,
225
+ env: {},
226
+ createIfMissing: true,
227
+ });
228
+ checks.push({
229
+ code: "codex_cwd_valid",
230
+ level: "info",
231
+ message: `Working directory is valid: ${cwd}`,
232
+ });
233
+ }
234
+ catch (err) {
235
+ checks.push({
236
+ code: "codex_cwd_invalid",
237
+ level: "error",
238
+ message: err instanceof Error ? err.message : "Invalid working directory",
239
+ detail: cwd,
240
+ });
241
+ }
242
+ const envConfig = parseObject(config.env);
243
+ const env = {};
244
+ for (const [key, value] of Object.entries(envConfig)) {
245
+ if (typeof value === "string")
246
+ env[key] = value;
247
+ }
248
+ const runtimeEnv = ensurePathInEnv({ ...process.env, ...env });
249
+ const installCheck = await maybeRunSandboxInstallCommand({
250
+ runId,
251
+ target,
252
+ adapterKey: "codex",
253
+ installCommand: SANDBOX_INSTALL_COMMAND,
254
+ detectCommand: command,
255
+ env,
256
+ });
257
+ if (installCheck)
258
+ checks.push(installCheck);
259
+ try {
260
+ await ensureAdapterExecutionTargetCommandResolvable(command, target, cwd, runtimeEnv);
261
+ checks.push({
262
+ code: "codex_command_resolvable",
263
+ level: "info",
264
+ message: `Command is executable: ${command}`,
265
+ });
266
+ }
267
+ catch (err) {
268
+ checks.push({
269
+ code: "codex_command_unresolvable",
270
+ level: "error",
271
+ message: err instanceof Error ? err.message : "Command is not executable",
272
+ detail: command,
273
+ });
274
+ }
275
+ const configOpenAiKey = env.OPENAI_API_KEY;
276
+ const hostOpenAiKey = targetIsRemote ? undefined : process.env.OPENAI_API_KEY;
277
+ if (isNonEmpty(configOpenAiKey) || isNonEmpty(hostOpenAiKey)) {
278
+ const source = isNonEmpty(configOpenAiKey) ? "adapter config env" : "server environment";
279
+ checks.push({
280
+ code: "codex_openai_api_key_present",
281
+ level: "info",
282
+ message: "OPENAI_API_KEY is set for Codex authentication.",
283
+ detail: `Detected in ${source}.`,
284
+ });
285
+ }
286
+ else if (!targetIsRemote) {
287
+ // Local-only auth file check. On remote targets, the probe will surface
288
+ // any missing-auth errors directly from the remote `codex` invocation.
289
+ const codexHome = isNonEmpty(env.CODEX_HOME) ? env.CODEX_HOME : undefined;
290
+ const codexAuth = await readCodexAuthInfo(codexHome).catch(() => null);
291
+ if (codexAuth) {
292
+ checks.push({
293
+ code: "codex_native_auth_present",
294
+ level: "info",
295
+ message: "Codex is authenticated via its own auth configuration.",
296
+ detail: codexAuth.email ? `Logged in as ${codexAuth.email}.` : `Credentials found in ${path.join(codexHome ?? codexHomeDir(), "auth.json")}.`,
297
+ });
298
+ }
299
+ else {
300
+ checks.push({
301
+ code: "codex_openai_api_key_missing",
302
+ level: "warn",
303
+ message: "OPENAI_API_KEY is not set. Codex runs may fail until authentication is configured.",
304
+ hint: "Set OPENAI_API_KEY in adapter env, shell environment, or run `codex auth` to log in.",
305
+ });
306
+ }
307
+ }
308
+ const canRunProbe = checks.every((check) => check.code !== "codex_cwd_invalid" && check.code !== "codex_command_unresolvable");
309
+ if (canRunProbe) {
310
+ if (!commandLooksLike(command, "codex")) {
311
+ checks.push({
312
+ code: "codex_hello_probe_skipped_custom_command",
313
+ level: "info",
314
+ message: "Skipped hello probe because command is not `codex`.",
315
+ detail: command,
316
+ hint: "Use the `codex` CLI command to run the automatic login and installation probe.",
317
+ });
318
+ }
319
+ else {
320
+ const execArgs = buildCodexExecArgs({ ...config, fastMode: false }, { skipGitRepoCheck: targetIsSandbox });
321
+ // A connection test needs one small response, not plugin catalog sync,
322
+ // repository instructions, or a durable session. Keep provider/model
323
+ // configuration intact while removing unrelated startup work.
324
+ const args = [...execArgs.args];
325
+ args.splice(args.length - 1, 0, "-c", "features.plugins=false", "-c", "features.remote_plugin=false", "-c", "project_doc_max_bytes=0", ...(args.includes("--ephemeral") ? [] : ["--ephemeral"]));
326
+ if (execArgs.fastModeIgnoredReason) {
327
+ checks.push({
328
+ code: "codex_fast_mode_unsupported_model",
329
+ level: "warn",
330
+ message: execArgs.fastModeIgnoredReason,
331
+ hint: "Switch the agent model to GPT-5.4 or enter a manual model ID to enable Codex Fast mode.",
332
+ });
333
+ }
334
+ if (targetIsSandbox) {
335
+ checks.push({
336
+ code: "codex_git_repo_check_skipped",
337
+ level: "info",
338
+ message: "Added --skip-git-repo-check for sandbox hello probes.",
339
+ hint: "Codex requires an explicit trust bypass in headless remote sandbox workspaces.",
340
+ });
341
+ }
342
+ // Codex CLI (>= 0.122) ignores the OPENAI_API_KEY env var and only reads
343
+ // credentials from $CODEX_HOME/auth.json. When we have a key available,
344
+ // wrap the probe with a shell that materializes a per-run auth.json so
345
+ // the CLI can authenticate. The key content is passed via env (not on
346
+ // the command line) to avoid leaking it into process listings.
347
+ const probeApiKey = isNonEmpty(configOpenAiKey)
348
+ ? configOpenAiKey
349
+ : isNonEmpty(hostOpenAiKey)
350
+ ? hostOpenAiKey
351
+ : null;
352
+ const preparedProbe = await prepareCodexHelloProbe({
353
+ managedAiConnection: Boolean(config.managedAiConnection),
354
+ runId,
355
+ companyId: ctx.companyId,
356
+ target,
357
+ targetIsRemote,
358
+ cwd,
359
+ command,
360
+ args,
361
+ env,
362
+ probeApiKey,
363
+ });
364
+ try {
365
+ const probe = await runAdapterExecutionTargetProcess(runId, target, preparedProbe.command, preparedProbe.args, {
366
+ cwd,
367
+ env: preparedProbe.env,
368
+ timeoutSec: 45,
369
+ graceSec: 5,
370
+ stdin: "Respond with hello.",
371
+ onLog: async () => { },
372
+ });
373
+ const parsed = parseCodexJsonl(probe.stdout);
374
+ // Plugin-catalog login is separate from model authentication. Its
375
+ // warnings must not explain an unrelated provider/process failure.
376
+ const providerStderr = probe.stderr.split(/\r?\n/)
377
+ .filter((line) => !/\bcodex_core_plugins(?:::|:)/.test(line) && !line.includes(PROBE_CLEANUP_WARNING))
378
+ .join("\n");
379
+ const detail = summarizeProbeDetail(probe.stdout, providerStderr, parsed.errorMessage);
380
+ const authEvidence = parsed.errorMessage?.trim() || providerStderr;
381
+ if (probe.stderr.includes(PROBE_CLEANUP_WARNING)) {
382
+ checks.push({
383
+ code: "codex_probe_cleanup_incomplete",
384
+ level: "info",
385
+ message: "Temporary probe files could not be fully removed; this does not change the connection result.",
386
+ });
387
+ }
388
+ if (probe.timedOut) {
389
+ checks.push({
390
+ code: "codex_hello_probe_timed_out",
391
+ level: "warn",
392
+ message: "Codex hello probe timed out.",
393
+ hint: "Retry the probe. If this persists, verify Codex can run `Respond with hello` from this directory manually.",
394
+ });
395
+ }
396
+ else if ((probe.exitCode ?? 1) === 0) {
397
+ const summary = parsed.summary.trim();
398
+ const hasHello = /\bhello\b/i.test(summary);
399
+ checks.push({
400
+ code: hasHello ? "codex_hello_probe_passed" : "codex_hello_probe_unexpected_output",
401
+ level: hasHello ? "info" : "warn",
402
+ message: hasHello
403
+ ? "Codex hello probe succeeded."
404
+ : "Codex probe ran but did not return `hello` as expected.",
405
+ ...(summary ? { detail: summary.replace(/\s+/g, " ").trim().slice(0, 240) } : {}),
406
+ ...(hasHello
407
+ ? {}
408
+ : {
409
+ hint: "Try the probe manually (`codex exec --json -` then prompt: Respond with hello) to inspect full output.",
410
+ }),
411
+ });
412
+ }
413
+ else if (CODEX_AUTH_REQUIRED_RE.test(authEvidence)) {
414
+ checks.push({
415
+ code: "codex_hello_probe_auth_required",
416
+ level: "warn",
417
+ message: "Codex CLI is installed, but authentication is not ready.",
418
+ ...(detail ? { detail } : {}),
419
+ hint: probeApiKey
420
+ ? "OPENAI_API_KEY was provided but Codex still rejected the request. Verify the key is valid for the OpenAI Responses API (e.g. `curl -H \"Authorization: Bearer $OPENAI_API_KEY\" https://api.openai.com/v1/models`), or run `codex login` and seed `~/.codex/auth.json`."
421
+ : "Codex CLI does not read OPENAI_API_KEY from the environment; set OPENAI_API_KEY in this adapter's config (so Paperclip writes it to `$CODEX_HOME/auth.json`) or run `codex login` on the host first.",
422
+ });
423
+ if (targetIsSandbox) {
424
+ // Emit the neutral canonical check so the user interface can decide
425
+ // login eligibility from a stable code. The user interface does not
426
+ // read the message text or the top-level status.
427
+ checks.push({
428
+ code: ADAPTER_AUTH_MISSING_CHECK_CODE,
429
+ level: "warn",
430
+ message: "This environment has no ready authentication for this adapter.",
431
+ ...(detail ? { detail } : {}),
432
+ hint: "Provide credentials for this adapter, or start login in the environment.",
433
+ });
434
+ }
435
+ }
436
+ else {
437
+ checks.push({
438
+ code: "codex_hello_probe_failed",
439
+ level: "error",
440
+ message: "Codex hello probe failed.",
441
+ ...(detail ? { detail } : {}),
442
+ hint: "Run `codex exec --json -` manually in this working directory and prompt `Respond with hello` to debug.",
443
+ });
444
+ }
445
+ }
446
+ finally {
447
+ await preparedProbe.cleanup();
448
+ }
449
+ }
450
+ }
451
+ return {
452
+ adapterType: ctx.adapterType,
453
+ status: summarizeStatus(checks),
454
+ checks,
455
+ testedAt: new Date().toISOString(),
456
+ };
457
+ }
458
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test.remote.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.remote.test.d.ts","sourceRoot":"","sources":["../../src/server/test.remote.test.ts"],"names":[],"mappings":""}