@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,556 @@
1
+ import { mkdir, mkdtemp, readdir, readFile, rm, symlink, writeFile } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterEach, describe, expect, it, vi } from "vitest";
5
+ const { runChildProcess, ensureCommandResolvable, resolveCommandForLogs, prepareWorkspaceForSshExecution, restoreWorkspaceFromSshExecution, runSshCommand, syncDirectoryToSsh, startAdapterExecutionTargetPaperclipBridge, } = vi.hoisted(() => ({
6
+ runChildProcess: vi.fn(async () => ({
7
+ exitCode: 1,
8
+ signal: null,
9
+ timedOut: false,
10
+ stdout: "",
11
+ stderr: "remote failure",
12
+ pid: 123,
13
+ startedAt: new Date().toISOString(),
14
+ })),
15
+ ensureCommandResolvable: vi.fn(async () => undefined),
16
+ resolveCommandForLogs: vi.fn(async () => "/usr/bin/codex"),
17
+ prepareWorkspaceForSshExecution: vi.fn(async () => ({ gitBacked: false })),
18
+ restoreWorkspaceFromSshExecution: vi.fn(async () => undefined),
19
+ runSshCommand: vi.fn(async () => ({ stdout: Buffer.from("{}").toString("base64"), stderr: "" })),
20
+ syncDirectoryToSsh: vi.fn(async () => undefined),
21
+ startAdapterExecutionTargetPaperclipBridge: vi.fn(async () => ({
22
+ env: {
23
+ PAPERCLIP_API_URL: "http://127.0.0.1:4310",
24
+ PAPERCLIP_API_KEY: "bridge-token",
25
+ PAPERCLIP_API_BRIDGE_MODE: "queue_v1",
26
+ },
27
+ stop: async () => { },
28
+ })),
29
+ }));
30
+ vi.mock("@tickernelz/paperclip-pro-adapter-utils/server-utils", async () => {
31
+ const actual = await vi.importActual("@tickernelz/paperclip-pro-adapter-utils/server-utils");
32
+ return {
33
+ ...actual,
34
+ ensureCommandResolvable,
35
+ resolveCommandForLogs,
36
+ runChildProcess,
37
+ };
38
+ });
39
+ vi.mock("@tickernelz/paperclip-pro-adapter-utils/ssh", async () => {
40
+ const actual = await vi.importActual("@tickernelz/paperclip-pro-adapter-utils/ssh");
41
+ return {
42
+ ...actual,
43
+ prepareWorkspaceForSshExecution,
44
+ restoreWorkspaceFromSshExecution,
45
+ runSshCommand,
46
+ syncDirectoryToSsh,
47
+ };
48
+ });
49
+ vi.mock("@tickernelz/paperclip-pro-adapter-utils/execution-target", async () => {
50
+ const actual = await vi.importActual("@tickernelz/paperclip-pro-adapter-utils/execution-target");
51
+ return {
52
+ ...actual,
53
+ startAdapterExecutionTargetPaperclipBridge,
54
+ };
55
+ });
56
+ import { execute } from "./execute.js";
57
+ describe("codex remote execution", () => {
58
+ const cleanupDirs = [];
59
+ afterEach(async () => {
60
+ vi.clearAllMocks();
61
+ while (cleanupDirs.length > 0) {
62
+ const dir = cleanupDirs.pop();
63
+ if (!dir)
64
+ continue;
65
+ await rm(dir, { recursive: true, force: true }).catch(() => undefined);
66
+ }
67
+ });
68
+ it("prepares the workspace, syncs CODEX_HOME, and restores workspace changes for remote SSH execution", async () => {
69
+ const rootDir = await mkdtemp(path.join(os.tmpdir(), "paperclip-codex-remote-"));
70
+ cleanupDirs.push(rootDir);
71
+ const workspaceDir = path.join(rootDir, "workspace");
72
+ const codexHomeDir = path.join(rootDir, "codex-home");
73
+ const managedRemoteWorkspace = "/remote/workspace/.paperclip-runtime/runs/run-1/workspace";
74
+ await mkdir(workspaceDir, { recursive: true });
75
+ await mkdir(codexHomeDir, { recursive: true });
76
+ await writeFile(path.join(rootDir, "instructions.md"), "Use the remote workspace.\n", "utf8");
77
+ await writeFile(path.join(codexHomeDir, "auth.json"), "{}", "utf8");
78
+ const alternateWorkspaceDir = path.join(rootDir, "alternate-workspace");
79
+ await mkdir(alternateWorkspaceDir, { recursive: true });
80
+ await execute({
81
+ runId: "run-1",
82
+ agent: {
83
+ id: "agent-1",
84
+ companyId: "company-1",
85
+ name: "CodexCoder",
86
+ adapterType: "codex_local",
87
+ adapterConfig: {},
88
+ },
89
+ runtime: {
90
+ sessionId: null,
91
+ sessionParams: null,
92
+ sessionDisplayId: null,
93
+ taskKey: null,
94
+ },
95
+ config: {
96
+ engine: "cli",
97
+ command: "codex",
98
+ env: {
99
+ CODEX_HOME: codexHomeDir,
100
+ },
101
+ },
102
+ context: {
103
+ paperclipWorkspace: {
104
+ cwd: workspaceDir,
105
+ source: "project_primary",
106
+ strategy: "git_worktree",
107
+ workspaceId: "workspace-1",
108
+ repoUrl: "https://github.com/paperclipai/paperclip.git",
109
+ repoRef: "main",
110
+ branchName: "feature/remote-codex",
111
+ worktreePath: workspaceDir,
112
+ },
113
+ paperclipWorkspaces: [
114
+ {
115
+ workspaceId: "workspace-1",
116
+ cwd: workspaceDir,
117
+ repoUrl: "https://github.com/paperclipai/paperclip.git",
118
+ repoRef: "main",
119
+ },
120
+ {
121
+ workspaceId: "workspace-2",
122
+ cwd: alternateWorkspaceDir,
123
+ repoUrl: "https://github.com/paperclipai/paperclip.git",
124
+ repoRef: "feature/other",
125
+ },
126
+ ],
127
+ },
128
+ executionTransport: {
129
+ remoteExecution: {
130
+ host: "127.0.0.1",
131
+ port: 2222,
132
+ username: "fixture",
133
+ remoteWorkspacePath: "/remote/workspace",
134
+ remoteCwd: "/remote/workspace",
135
+ privateKey: "PRIVATE KEY",
136
+ knownHosts: "[127.0.0.1]:2222 ssh-ed25519 AAAA",
137
+ strictHostKeyChecking: true,
138
+ },
139
+ },
140
+ onLog: async () => { },
141
+ });
142
+ expect(prepareWorkspaceForSshExecution).toHaveBeenCalledTimes(1);
143
+ expect(prepareWorkspaceForSshExecution).toHaveBeenCalledWith(expect.objectContaining({
144
+ localDir: workspaceDir,
145
+ remoteDir: managedRemoteWorkspace,
146
+ }));
147
+ expect(syncDirectoryToSsh).toHaveBeenCalledTimes(1);
148
+ // The home asset now syncs a curated *staged* allowlist dir, not the raw
149
+ // managed CODEX_HOME, and carries no `exclude` denylist.
150
+ const homeSyncArgs = syncDirectoryToSsh.mock.calls[0]?.[0];
151
+ expect(homeSyncArgs.localDir).not.toBe(codexHomeDir);
152
+ expect(homeSyncArgs.localDir).toContain("paperclip-codex-home-sync");
153
+ expect(homeSyncArgs.remoteDir).toBe(`${managedRemoteWorkspace}/.paperclip-runtime/codex/home`);
154
+ expect(homeSyncArgs.followSymlinks).toBe(true);
155
+ expect(homeSyncArgs.exclude).toBeUndefined();
156
+ expect(runChildProcess).toHaveBeenCalledTimes(1);
157
+ const call = runChildProcess.mock.calls[0];
158
+ expect(call?.[2]).not.toContain("--skip-git-repo-check");
159
+ expect(call?.[3].env.CODEX_HOME).toBe(`${managedRemoteWorkspace}/.paperclip-runtime/codex/home`);
160
+ expect(call?.[3].env.PAPERCLIP_WORKSPACE_CWD).toBe(managedRemoteWorkspace);
161
+ expect(call?.[3].env.PAPERCLIP_WORKSPACE_WORKTREE_PATH).toBeUndefined();
162
+ expect(JSON.parse(call?.[3].env.PAPERCLIP_WORKSPACES_JSON ?? "[]")).toEqual([
163
+ {
164
+ workspaceId: "workspace-1",
165
+ cwd: managedRemoteWorkspace,
166
+ repoUrl: "https://github.com/paperclipai/paperclip.git",
167
+ repoRef: "main",
168
+ },
169
+ {
170
+ workspaceId: "workspace-2",
171
+ repoUrl: "https://github.com/paperclipai/paperclip.git",
172
+ repoRef: "feature/other",
173
+ },
174
+ ]);
175
+ expect(call?.[3].env.PAPERCLIP_API_URL).toBe("http://127.0.0.1:4310");
176
+ expect(call?.[3].env.PAPERCLIP_API_BRIDGE_MODE).toBe("queue_v1");
177
+ expect(call?.[3].remoteExecution?.remoteCwd).toBe(managedRemoteWorkspace);
178
+ expect(startAdapterExecutionTargetPaperclipBridge).toHaveBeenCalledTimes(1);
179
+ expect(restoreWorkspaceFromSshExecution).toHaveBeenCalledTimes(1);
180
+ expect(restoreWorkspaceFromSshExecution).toHaveBeenCalledWith(expect.objectContaining({
181
+ localDir: workspaceDir,
182
+ remoteDir: managedRemoteWorkspace,
183
+ }));
184
+ });
185
+ it("stages only the allowlist into the home asset: keeps config.toml/skills/auth, drops session+sqlite state, no exclude", async () => {
186
+ const rootDir = await mkdtemp(path.join(os.tmpdir(), "paperclip-codex-allowlist-"));
187
+ cleanupDirs.push(rootDir);
188
+ const workspaceDir = path.join(rootDir, "workspace");
189
+ const codexHomeDir = path.join(rootDir, "codex-home");
190
+ await mkdir(workspaceDir, { recursive: true });
191
+ await mkdir(codexHomeDir, { recursive: true });
192
+ // Seed the managed home with the files Codex needs (config.toml carries a
193
+ // provider-routing block; skills injected) plus large runtime decoys the
194
+ // old 4-name denylist missed.
195
+ await writeFile(path.join(codexHomeDir, "auth.json"), '{"tokens":{"account_id":"a","refresh_token":"r"}}', "utf8");
196
+ await writeFile(path.join(codexHomeDir, "config.toml"), 'model_provider = "bifrost"\n\n[model_providers.bifrost]\nname = "bifrost"\n', "utf8");
197
+ await writeFile(path.join(codexHomeDir, "instructions.md"), "hi\n", "utf8");
198
+ await mkdir(path.join(codexHomeDir, "skills", "demo"), { recursive: true });
199
+ await writeFile(path.join(codexHomeDir, "skills", "demo", "SKILL.md"), "# demo\n", "utf8");
200
+ // Decoys:
201
+ await writeFile(path.join(codexHomeDir, "logs_2.sqlite"), "x", "utf8");
202
+ await writeFile(path.join(codexHomeDir, "state_5.sqlite"), "x", "utf8");
203
+ await mkdir(path.join(codexHomeDir, "sessions"), { recursive: true });
204
+ await writeFile(path.join(codexHomeDir, "sessions", "rollout.jsonl"), "x", "utf8");
205
+ await mkdir(path.join(codexHomeDir, "tmp"), { recursive: true });
206
+ await symlink("/usr/bin/env", path.join(codexHomeDir, "tmp", "arg0"));
207
+ // Snapshot the staged dir contents at sync time — execute() removes the
208
+ // staged temp dir on teardown, so we cannot read it after execute returns.
209
+ let stagedSnapshot = null;
210
+ syncDirectoryToSsh.mockImplementationOnce(async (args) => {
211
+ const entries = (await readdir(args.localDir)).sort();
212
+ const skillEntries = entries.includes("skills")
213
+ ? (await readdir(path.join(args.localDir, "skills"))).sort()
214
+ : [];
215
+ const configToml = entries.includes("config.toml")
216
+ ? await readFile(path.join(args.localDir, "config.toml"), "utf8")
217
+ : "";
218
+ const authJson = entries.includes("auth.json")
219
+ ? await readFile(path.join(args.localDir, "auth.json"), "utf8")
220
+ : "";
221
+ stagedSnapshot = { localDir: args.localDir, entries, skillEntries, configToml, authJson };
222
+ });
223
+ await execute({
224
+ runId: "run-allowlist",
225
+ agent: {
226
+ id: "agent-1",
227
+ companyId: "company-1",
228
+ name: "CodexCoder",
229
+ adapterType: "codex_local",
230
+ adapterConfig: {},
231
+ },
232
+ runtime: {
233
+ sessionId: null,
234
+ sessionParams: null,
235
+ sessionDisplayId: null,
236
+ taskKey: null,
237
+ },
238
+ config: {
239
+ engine: "cli",
240
+ command: "codex",
241
+ env: {
242
+ CODEX_HOME: codexHomeDir,
243
+ },
244
+ },
245
+ context: {
246
+ paperclipWorkspace: {
247
+ cwd: workspaceDir,
248
+ source: "project_primary",
249
+ },
250
+ },
251
+ executionTransport: {
252
+ remoteExecution: {
253
+ host: "127.0.0.1",
254
+ port: 2222,
255
+ username: "fixture",
256
+ remoteWorkspacePath: "/remote/workspace",
257
+ remoteCwd: "/remote/workspace",
258
+ privateKey: "PRIVATE KEY",
259
+ knownHosts: "[127.0.0.1]:2222 ssh-ed25519 AAAA",
260
+ strictHostKeyChecking: true,
261
+ },
262
+ },
263
+ onLog: async () => { },
264
+ });
265
+ expect(stagedSnapshot).not.toBeNull();
266
+ const snap = stagedSnapshot;
267
+ // Allowlist present; decoys gone.
268
+ expect(snap.entries).toEqual(["auth.json", "config.json", "config.toml", "instructions.md", "skills"]
269
+ .filter((e) => e !== "config.json") // no config.json was seeded
270
+ .sort());
271
+ for (const decoy of ["logs_2.sqlite", "state_5.sqlite", "sessions", "tmp", "plugins"]) {
272
+ expect(snap.entries).not.toContain(decoy);
273
+ }
274
+ // Phase-3 behavioral invariants: provider routing + skills + auth survive staging.
275
+ expect(snap.configToml).toContain("[model_providers.bifrost]");
276
+ expect(snap.configToml).toContain("model_provider");
277
+ expect(snap.skillEntries).toContain("demo");
278
+ expect(snap.authJson).toContain("refresh_token");
279
+ // The staged temp dir is removed after execute completes (cleanup on teardown).
280
+ await expect(readdir(snap.localDir)).rejects.toMatchObject({ code: "ENOENT" });
281
+ });
282
+ it("does not resume saved Codex sessions for remote SSH execution without a matching remote identity", async () => {
283
+ const rootDir = await mkdtemp(path.join(os.tmpdir(), "paperclip-codex-remote-resume-"));
284
+ cleanupDirs.push(rootDir);
285
+ const workspaceDir = path.join(rootDir, "workspace");
286
+ const codexHomeDir = path.join(rootDir, "codex-home");
287
+ await mkdir(workspaceDir, { recursive: true });
288
+ await mkdir(codexHomeDir, { recursive: true });
289
+ await writeFile(path.join(codexHomeDir, "auth.json"), "{}", "utf8");
290
+ await execute({
291
+ runId: "run-ssh-no-resume",
292
+ agent: {
293
+ id: "agent-1",
294
+ companyId: "company-1",
295
+ name: "CodexCoder",
296
+ adapterType: "codex_local",
297
+ adapterConfig: {},
298
+ },
299
+ runtime: {
300
+ sessionId: "session-123",
301
+ sessionParams: {
302
+ sessionId: "session-123",
303
+ cwd: "/remote/workspace",
304
+ },
305
+ sessionDisplayId: "session-123",
306
+ taskKey: null,
307
+ },
308
+ config: {
309
+ engine: "cli",
310
+ command: "codex",
311
+ env: {
312
+ CODEX_HOME: codexHomeDir,
313
+ },
314
+ },
315
+ context: {
316
+ paperclipWorkspace: {
317
+ cwd: workspaceDir,
318
+ source: "project_primary",
319
+ },
320
+ },
321
+ executionTransport: {
322
+ remoteExecution: {
323
+ host: "127.0.0.1",
324
+ port: 2222,
325
+ username: "fixture",
326
+ remoteWorkspacePath: "/remote/workspace",
327
+ remoteCwd: "/remote/workspace",
328
+ privateKey: "PRIVATE KEY",
329
+ knownHosts: "[127.0.0.1]:2222 ssh-ed25519 AAAA",
330
+ strictHostKeyChecking: true,
331
+ },
332
+ },
333
+ onLog: async () => { },
334
+ });
335
+ expect(runChildProcess).toHaveBeenCalledTimes(1);
336
+ const call = runChildProcess.mock.calls[0];
337
+ expect(call?.[2]).toEqual([
338
+ "exec",
339
+ "--json",
340
+ "--dangerously-bypass-approvals-and-sandbox",
341
+ "-",
342
+ ]);
343
+ });
344
+ it("resumes saved Codex sessions for remote SSH execution when the remote identity matches", async () => {
345
+ const rootDir = await mkdtemp(path.join(os.tmpdir(), "paperclip-codex-remote-resume-match-"));
346
+ cleanupDirs.push(rootDir);
347
+ const workspaceDir = path.join(rootDir, "workspace");
348
+ const codexHomeDir = path.join(rootDir, "codex-home");
349
+ const managedRemoteWorkspace = "/remote/workspace/.paperclip-runtime/runs/run-ssh-resume/workspace";
350
+ await mkdir(workspaceDir, { recursive: true });
351
+ await mkdir(codexHomeDir, { recursive: true });
352
+ await writeFile(path.join(codexHomeDir, "auth.json"), "{}", "utf8");
353
+ await execute({
354
+ runId: "run-ssh-resume",
355
+ agent: {
356
+ id: "agent-1",
357
+ companyId: "company-1",
358
+ name: "CodexCoder",
359
+ adapterType: "codex_local",
360
+ adapterConfig: {},
361
+ },
362
+ runtime: {
363
+ sessionId: "session-123",
364
+ sessionParams: {
365
+ sessionId: "session-123",
366
+ cwd: managedRemoteWorkspace,
367
+ remoteExecution: {
368
+ transport: "ssh",
369
+ host: "127.0.0.1",
370
+ port: 2222,
371
+ username: "fixture",
372
+ remoteCwd: managedRemoteWorkspace,
373
+ },
374
+ },
375
+ sessionDisplayId: "session-123",
376
+ taskKey: null,
377
+ },
378
+ config: {
379
+ engine: "cli",
380
+ command: "codex",
381
+ env: {
382
+ CODEX_HOME: codexHomeDir,
383
+ },
384
+ },
385
+ context: {
386
+ paperclipWorkspace: {
387
+ cwd: workspaceDir,
388
+ source: "project_primary",
389
+ },
390
+ },
391
+ executionTransport: {
392
+ remoteExecution: {
393
+ host: "127.0.0.1",
394
+ port: 2222,
395
+ username: "fixture",
396
+ remoteWorkspacePath: "/remote/workspace",
397
+ remoteCwd: "/remote/workspace",
398
+ privateKey: "PRIVATE KEY",
399
+ knownHosts: "[127.0.0.1]:2222 ssh-ed25519 AAAA",
400
+ strictHostKeyChecking: true,
401
+ },
402
+ },
403
+ onLog: async () => { },
404
+ });
405
+ expect(runChildProcess).toHaveBeenCalledTimes(1);
406
+ const call = runChildProcess.mock.calls[0];
407
+ expect(call?.[2]).toEqual([
408
+ "exec",
409
+ "--json",
410
+ "--dangerously-bypass-approvals-and-sandbox",
411
+ "resume",
412
+ "session-123",
413
+ "-",
414
+ ]);
415
+ });
416
+ it("uses the provider-neutral execution target contract for remote SSH execution", async () => {
417
+ const rootDir = await mkdtemp(path.join(os.tmpdir(), "paperclip-codex-target-"));
418
+ cleanupDirs.push(rootDir);
419
+ const workspaceDir = path.join(rootDir, "workspace");
420
+ const codexHomeDir = path.join(rootDir, "codex-home");
421
+ const managedRemoteWorkspace = "/remote/workspace/.paperclip-runtime/runs/run-target/workspace";
422
+ await mkdir(workspaceDir, { recursive: true });
423
+ await mkdir(codexHomeDir, { recursive: true });
424
+ await writeFile(path.join(codexHomeDir, "auth.json"), "{}", "utf8");
425
+ await execute({
426
+ runId: "run-target",
427
+ agent: {
428
+ id: "agent-1",
429
+ companyId: "company-1",
430
+ name: "CodexCoder",
431
+ adapterType: "codex_local",
432
+ adapterConfig: {},
433
+ },
434
+ runtime: {
435
+ sessionId: "session-123",
436
+ sessionParams: {
437
+ sessionId: "session-123",
438
+ cwd: managedRemoteWorkspace,
439
+ remoteExecution: {
440
+ transport: "ssh",
441
+ host: "127.0.0.1",
442
+ port: 2222,
443
+ username: "fixture",
444
+ remoteCwd: managedRemoteWorkspace,
445
+ },
446
+ },
447
+ sessionDisplayId: "session-123",
448
+ taskKey: null,
449
+ },
450
+ config: {
451
+ engine: "cli",
452
+ command: "codex",
453
+ env: {
454
+ CODEX_HOME: codexHomeDir,
455
+ },
456
+ },
457
+ context: {
458
+ paperclipWorkspace: {
459
+ cwd: workspaceDir,
460
+ source: "project_primary",
461
+ },
462
+ },
463
+ executionTarget: {
464
+ kind: "remote",
465
+ transport: "ssh",
466
+ remoteCwd: "/remote/workspace",
467
+ spec: {
468
+ host: "127.0.0.1",
469
+ port: 2222,
470
+ username: "fixture",
471
+ remoteWorkspacePath: "/remote/workspace",
472
+ remoteCwd: "/remote/workspace",
473
+ privateKey: "PRIVATE KEY",
474
+ knownHosts: "[127.0.0.1]:2222 ssh-ed25519 AAAA",
475
+ strictHostKeyChecking: true,
476
+ },
477
+ },
478
+ onLog: async () => { },
479
+ });
480
+ expect(syncDirectoryToSsh).toHaveBeenCalledTimes(1);
481
+ expect(runChildProcess).toHaveBeenCalledTimes(1);
482
+ const call = runChildProcess.mock.calls[0];
483
+ expect(call?.[2]).toEqual([
484
+ "exec",
485
+ "--json",
486
+ "--dangerously-bypass-approvals-and-sandbox",
487
+ "resume",
488
+ "session-123",
489
+ "-",
490
+ ]);
491
+ expect(call?.[3].env.CODEX_HOME).toBe(`${managedRemoteWorkspace}/.paperclip-runtime/codex/home`);
492
+ expect(call?.[3].remoteExecution?.remoteCwd).toBe(managedRemoteWorkspace);
493
+ });
494
+ it("runs in place at the authoritative root without archive prepare or restore", async () => {
495
+ const rootDir = await mkdtemp(path.join(os.tmpdir(), "paperclip-codex-in-place-"));
496
+ cleanupDirs.push(rootDir);
497
+ const workspaceDir = path.join(rootDir, "workspace");
498
+ const codexHomeDir = path.join(rootDir, "codex-home");
499
+ await mkdir(workspaceDir, { recursive: true });
500
+ await mkdir(codexHomeDir, { recursive: true });
501
+ await writeFile(path.join(codexHomeDir, "auth.json"), "{}", "utf8");
502
+ await execute({
503
+ runId: "run-in-place",
504
+ agent: {
505
+ id: "agent-1",
506
+ companyId: "company-1",
507
+ name: "CodexCoder",
508
+ adapterType: "codex_local",
509
+ adapterConfig: {},
510
+ },
511
+ runtime: { sessionId: null, sessionParams: null, sessionDisplayId: null, taskKey: null },
512
+ config: { engine: "cli", command: "codex", env: { CODEX_HOME: codexHomeDir } },
513
+ context: {
514
+ paperclipWorkspace: {
515
+ cwd: workspaceDir,
516
+ source: "task_session",
517
+ },
518
+ },
519
+ executionTarget: {
520
+ kind: "remote",
521
+ transport: "ssh",
522
+ remoteCwd: "/copied/workspace",
523
+ workspaceRealization: {
524
+ mode: "in_place",
525
+ authoritativeRoot: "/app",
526
+ pathAliases: [],
527
+ outboundRestorePaths: [],
528
+ },
529
+ spec: {
530
+ host: "127.0.0.1",
531
+ port: 2222,
532
+ username: "fixture",
533
+ remoteWorkspacePath: "/app",
534
+ remoteCwd: "/app",
535
+ privateKey: "PRIVATE KEY",
536
+ knownHosts: "[127.0.0.1]:2222 ssh-ed25519 AAAA",
537
+ strictHostKeyChecking: true,
538
+ },
539
+ },
540
+ onLog: async () => { },
541
+ });
542
+ expect(prepareWorkspaceForSshExecution).not.toHaveBeenCalled();
543
+ expect(syncDirectoryToSsh).toHaveBeenCalledTimes(1);
544
+ expect(restoreWorkspaceFromSshExecution).not.toHaveBeenCalled();
545
+ const homeSyncArgs = syncDirectoryToSsh.mock.calls[0]?.[0];
546
+ expect(homeSyncArgs.localDir).toContain("paperclip-codex-home-sync");
547
+ expect(homeSyncArgs.remoteDir).toBe("/app/.paperclip-runtime/codex/home");
548
+ const call = runChildProcess.mock.calls[0];
549
+ expect(call?.[3].env.PAPERCLIP_WORKSPACE_CWD).toBe("/app");
550
+ expect(call?.[3].env.PAPERCLIP_WORKSPACE_REALIZATION_MODE).toBe("in_place");
551
+ expect(call?.[3].env.PAPERCLIP_WORKSPACE_AUTHORITATIVE_ROOT).toBe("/app");
552
+ expect(call?.[3].env.CODEX_HOME).toBe("/app/.paperclip-runtime/codex/home");
553
+ expect(call?.[3].remoteExecution?.remoteCwd).toBe("/app");
554
+ });
555
+ });
556
+ //# sourceMappingURL=execute.remote.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.remote.test.js","sourceRoot":"","sources":["../../src/server/execute.remote.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execute.stderr-error.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.stderr-error.test.d.ts","sourceRoot":"","sources":["../../src/server/execute.stderr-error.test.ts"],"names":[],"mappings":""}