@tickernelz/paperclip-pro-adapter-opencode-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 (78) 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 +115 -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/index.d.ts +11 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +113 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/server/execute.d.ts +13 -0
  15. package/dist/server/execute.d.ts.map +1 -0
  16. package/dist/server/execute.js +595 -0
  17. package/dist/server/execute.js.map +1 -0
  18. package/dist/server/execute.remote.test.d.ts +2 -0
  19. package/dist/server/execute.remote.test.d.ts.map +1 -0
  20. package/dist/server/execute.remote.test.js +351 -0
  21. package/dist/server/execute.remote.test.js.map +1 -0
  22. package/dist/server/execute.test.d.ts +2 -0
  23. package/dist/server/execute.test.d.ts.map +1 -0
  24. package/dist/server/execute.test.js +290 -0
  25. package/dist/server/execute.test.js.map +1 -0
  26. package/dist/server/index.d.ts +8 -0
  27. package/dist/server/index.d.ts.map +1 -0
  28. package/dist/server/index.js +63 -0
  29. package/dist/server/index.js.map +1 -0
  30. package/dist/server/models.d.ts +24 -0
  31. package/dist/server/models.d.ts.map +1 -0
  32. package/dist/server/models.js +281 -0
  33. package/dist/server/models.js.map +1 -0
  34. package/dist/server/models.test.d.ts +2 -0
  35. package/dist/server/models.test.d.ts.map +1 -0
  36. package/dist/server/models.test.js +258 -0
  37. package/dist/server/models.test.js.map +1 -0
  38. package/dist/server/parse.d.ts +14 -0
  39. package/dist/server/parse.d.ts.map +1 -0
  40. package/dist/server/parse.js +99 -0
  41. package/dist/server/parse.js.map +1 -0
  42. package/dist/server/parse.test.d.ts +2 -0
  43. package/dist/server/parse.test.d.ts.map +1 -0
  44. package/dist/server/parse.test.js +73 -0
  45. package/dist/server/parse.test.js.map +1 -0
  46. package/dist/server/runtime-config.d.ts +20 -0
  47. package/dist/server/runtime-config.d.ts.map +1 -0
  48. package/dist/server/runtime-config.js +216 -0
  49. package/dist/server/runtime-config.js.map +1 -0
  50. package/dist/server/runtime-config.test.d.ts +2 -0
  51. package/dist/server/runtime-config.test.d.ts.map +1 -0
  52. package/dist/server/runtime-config.test.js +255 -0
  53. package/dist/server/runtime-config.test.js.map +1 -0
  54. package/dist/server/skills.d.ts +8 -0
  55. package/dist/server/skills.d.ts.map +1 -0
  56. package/dist/server/skills.js +73 -0
  57. package/dist/server/skills.js.map +1 -0
  58. package/dist/server/test.d.ts +3 -0
  59. package/dist/server/test.d.ts.map +1 -0
  60. package/dist/server/test.js +416 -0
  61. package/dist/server/test.js.map +1 -0
  62. package/dist/server/test.remote.test.d.ts +2 -0
  63. package/dist/server/test.remote.test.d.ts.map +1 -0
  64. package/dist/server/test.remote.test.js +132 -0
  65. package/dist/server/test.remote.test.js.map +1 -0
  66. package/dist/ui/build-config.d.ts +3 -0
  67. package/dist/ui/build-config.d.ts.map +1 -0
  68. package/dist/ui/build-config.js +32 -0
  69. package/dist/ui/build-config.js.map +1 -0
  70. package/dist/ui/index.d.ts +3 -0
  71. package/dist/ui/index.d.ts.map +1 -0
  72. package/dist/ui/index.js +3 -0
  73. package/dist/ui/index.js.map +1 -0
  74. package/dist/ui/parse-stdout.d.ts +3 -0
  75. package/dist/ui/parse-stdout.d.ts.map +1 -0
  76. package/dist/ui/parse-stdout.js +141 -0
  77. package/dist/ui/parse-stdout.js.map +1 -0
  78. package/package.json +58 -0
@@ -0,0 +1,595 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { inferOpenAiCompatibleBiller } from "@tickernelz/paperclip-pro-adapter-utils";
6
+ import { adapterExecutionTargetIsRemote, adapterExecutionTargetRemoteCwd, overrideAdapterExecutionTargetRemoteCwd, adapterExecutionTargetSessionIdentity, adapterExecutionTargetSessionMatches, adapterExecutionTargetUsesManagedHome, adapterExecutionTargetUsesPaperclipBridge, describeAdapterExecutionTarget, ensureAdapterExecutionTargetCommandResolvable, ensureAdapterExecutionTargetRuntimeCommandInstalled, prepareAdapterExecutionTargetRuntime, adapterExecutionTargetDuplexObservabilityRecorder, adapterExecutionTargetEnablesSandboxDuplexBridge, readAdapterExecutionTarget, readAdapterExecutionTargetHomeDir, resolveAdapterExecutionTargetTimeoutSec, resolveAdapterExecutionTargetCommandForLogs, runAdapterExecutionTargetProcess, runAdapterExecutionTargetShellCommand, startAdapterExecutionTargetPaperclipBridge, } from "@tickernelz/paperclip-pro-adapter-utils/execution-target";
7
+ import { asString, asNumber, asStringArray, parseObject, buildPaperclipEnv, buildRuntimeToolsEnv, joinPromptSections, buildInvocationEnvForLogs, ensureAbsoluteDirectory, ensurePaperclipSkillSymlink, ensurePathInEnv, refreshPaperclipWorkspaceEnvForExecution, renderTemplate, renderPaperclipWakePrompt, selectPaperclipTaskMarkdown, selectInitialCommunicationGuidance, isPaperclipRecoveryWakePayload, DEFAULT_PAPERCLIP_AGENT_PROMPT_TEMPLATE, DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEMPLATE, isPaperclipSkillSourceMissing, readPaperclipRuntimeSkillEntries, readPaperclipIssueWorkModeFromContext, resolveLegacyPaperclipDesiredSkillNames, } from "@tickernelz/paperclip-pro-adapter-utils/server-utils";
8
+ import { isOpenCodeUnknownSessionError, parseOpenCodeJsonl } from "./parse.js";
9
+ import { ensureOpenCodeModelConfiguredAndAvailable, isTruthyEnvFlag, parseOpenCodeModelsOutput, requireOpenCodeModelId, } from "./models.js";
10
+ import { removeMaintainerOnlySkillSymlinks } from "@tickernelz/paperclip-pro-adapter-utils/server-utils";
11
+ import { prepareOpenCodeRuntimeConfig, prepareManagedOpenCodeRemoteHomes } from "./runtime-config.js";
12
+ import { SANDBOX_INSTALL_COMMAND } from "../index.js";
13
+ import { resolveOpenCodeSkillsHome } from "./skills.js";
14
+ const __moduleDir = path.dirname(fileURLToPath(import.meta.url));
15
+ function firstNonEmptyLine(text) {
16
+ return (text
17
+ .split(/\r?\n/)
18
+ .map((line) => line.trim())
19
+ .find(Boolean) ?? "");
20
+ }
21
+ function parseModelProvider(model) {
22
+ if (!model)
23
+ return null;
24
+ const trimmed = model.trim();
25
+ if (!trimmed.includes("/"))
26
+ return null;
27
+ return trimmed.slice(0, trimmed.indexOf("/")).trim() || null;
28
+ }
29
+ function resolveOpenCodeBiller(env, provider) {
30
+ return inferOpenAiCompatibleBiller(env, null) ?? provider ?? "unknown";
31
+ }
32
+ const REMOTE_OPENCODE_MODELS_PROBE_DEFAULT_TIMEOUT_SEC = 20;
33
+ const REMOTE_OPENCODE_MODELS_PROBE_SANDBOX_TIMEOUT_SEC = 120;
34
+ export async function ensureRemoteOpenCodeModelConfiguredAndAvailable(input) {
35
+ const model = requireOpenCodeModelId(input.model);
36
+ // When the caller opts into OPENCODE_ALLOW_ALL_MODELS, OpenCode accepts any
37
+ // provider/model at run time (e.g. gateway-routed models that never appear in
38
+ // `opencode models` output). Honour that on the REMOTE path too by skipping the
39
+ // remote availability probe; we still enforce the provider/model format above.
40
+ // Mirrors the local ensureOpenCodeModelConfiguredAndAvailable bypass. Prefer the
41
+ // explicit run env, then the process env.
42
+ if (isTruthyEnvFlag(input.env.OPENCODE_ALLOW_ALL_MODELS ?? process.env.OPENCODE_ALLOW_ALL_MODELS)) {
43
+ return;
44
+ }
45
+ const defaultProbeTimeoutSec = input.executionTarget.kind === "remote" && input.executionTarget.transport === "sandbox"
46
+ ? REMOTE_OPENCODE_MODELS_PROBE_SANDBOX_TIMEOUT_SEC
47
+ : REMOTE_OPENCODE_MODELS_PROBE_DEFAULT_TIMEOUT_SEC;
48
+ const probeTimeoutSec = input.timeoutSec > 0
49
+ ? Math.min(input.timeoutSec, defaultProbeTimeoutSec)
50
+ : defaultProbeTimeoutSec;
51
+ const probe = await runAdapterExecutionTargetProcess(input.runId, input.executionTarget, input.command, ["models"], {
52
+ cwd: input.cwd,
53
+ env: input.env,
54
+ timeoutSec: probeTimeoutSec,
55
+ graceSec: input.graceSec,
56
+ onLog: async () => { },
57
+ });
58
+ // The remote availability probe is a best-effort pre-flight guard, not a gate.
59
+ // If `opencode models` itself cannot run on the target — timeout, transient CLI
60
+ // error, provider hiccup — do NOT abort the run. The real invocation is
61
+ // authoritative, so a probe that can't execute must never be fatal. (Previously
62
+ // these threw and crashed runs mid-flight, losing the agent's work + disposition.)
63
+ if (probe.timedOut) {
64
+ console.warn(`[opencode-local] Remote model availability probe for "${model}" timed out after ${probeTimeoutSec}s; proceeding with the configured model.`);
65
+ return;
66
+ }
67
+ if ((probe.exitCode ?? 1) !== 0) {
68
+ const detail = firstNonEmptyLine(probe.stderr) || firstNonEmptyLine(probe.stdout);
69
+ console.warn(`[opencode-local] Remote \`opencode models\` could not run for "${model}"${detail ? ` (${detail})` : ""}; proceeding with the configured model.`);
70
+ return;
71
+ }
72
+ const models = parseOpenCodeModelsOutput(probe.stdout);
73
+ if (models.length === 0) {
74
+ console.warn(`[opencode-local] Remote \`opencode models\` returned no models; proceeding with the configured model "${model}".`);
75
+ return;
76
+ }
77
+ if (!models.some((entry) => entry.id === model)) {
78
+ const sample = models.slice(0, 12).map((entry) => entry.id).join(", ");
79
+ throw new Error(`Configured OpenCode model is unavailable on the remote execution target: ${model}. Available models: ${sample}${models.length > 12 ? ", ..." : ""}`);
80
+ }
81
+ }
82
+ async function ensureOpenCodeSkillsInjected(onLog, skillsEntries, desiredSkillNames, skillsHome = resolveOpenCodeSkillsHome({})) {
83
+ await fs.mkdir(skillsHome, { recursive: true });
84
+ const desiredSet = new Set(desiredSkillNames ?? skillsEntries.map((entry) => entry.key));
85
+ const selectedEntries = skillsEntries.filter((entry) => desiredSet.has(entry.key));
86
+ const removedSkills = await removeMaintainerOnlySkillSymlinks(skillsHome, selectedEntries.map((entry) => entry.runtimeName));
87
+ for (const skillName of removedSkills) {
88
+ await onLog("stderr", `[paperclip] Removed maintainer-only OpenCode skill "${skillName}" from ${skillsHome}\n`);
89
+ }
90
+ for (const entry of selectedEntries) {
91
+ const target = path.join(skillsHome, entry.runtimeName);
92
+ try {
93
+ const result = await ensurePaperclipSkillSymlink(entry.source, target);
94
+ if (result === "skipped")
95
+ continue;
96
+ await onLog("stderr", `[paperclip] ${result === "repaired" ? "Repaired" : "Injected"} OpenCode skill "${entry.key}" into ${skillsHome}\n`);
97
+ }
98
+ catch (err) {
99
+ await onLog("stderr", `[paperclip] Failed to inject OpenCode skill "${entry.key}" into ${skillsHome}: ${err instanceof Error ? err.message : String(err)}\n`);
100
+ }
101
+ }
102
+ }
103
+ async function buildOpenCodeSkillsDir(config) {
104
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "paperclip-opencode-skills-"));
105
+ const target = path.join(tmp, "skills");
106
+ await fs.mkdir(target, { recursive: true });
107
+ const availableEntries = await readPaperclipRuntimeSkillEntries(config, __moduleDir);
108
+ const desiredNames = new Set(resolveLegacyPaperclipDesiredSkillNames(config, availableEntries));
109
+ for (const entry of availableEntries) {
110
+ if (!desiredNames.has(entry.key))
111
+ continue;
112
+ if (isPaperclipSkillSourceMissing(entry))
113
+ continue;
114
+ await fs.symlink(entry.source, path.join(target, entry.runtimeName));
115
+ }
116
+ return target;
117
+ }
118
+ export async function execute(ctx) {
119
+ const { runId, agent, runtime, config, context, onLog, onMeta, onSpawn, authToken } = ctx;
120
+ const executionTarget = readAdapterExecutionTarget({
121
+ executionTarget: ctx.executionTarget,
122
+ legacyRemoteExecution: ctx.executionTransport?.remoteExecution,
123
+ });
124
+ const executionTargetIsRemote = adapterExecutionTargetIsRemote(executionTarget);
125
+ const promptTemplate = asString(config.promptTemplate, context.conversationMode === true
126
+ ? DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEMPLATE
127
+ : DEFAULT_PAPERCLIP_AGENT_PROMPT_TEMPLATE);
128
+ const command = asString(config.command, "opencode");
129
+ const model = asString(config.model, "").trim();
130
+ const variant = asString(config.variant, "").trim();
131
+ const workspaceContext = parseObject(context.paperclipWorkspace);
132
+ const workspaceCwd = asString(workspaceContext.cwd, "");
133
+ const workspaceSource = asString(workspaceContext.source, "");
134
+ const workspaceId = asString(workspaceContext.workspaceId, "");
135
+ const workspaceRepoUrl = asString(workspaceContext.repoUrl, "");
136
+ const workspaceRepoRef = asString(workspaceContext.repoRef, "");
137
+ const agentHome = asString(workspaceContext.agentHome, "");
138
+ const workspaceHints = Array.isArray(context.paperclipWorkspaces)
139
+ ? context.paperclipWorkspaces.filter((value) => typeof value === "object" && value !== null)
140
+ : [];
141
+ const configuredCwd = asString(config.cwd, "");
142
+ const useConfiguredInsteadOfAgentHome = workspaceSource === "agent_home" && configuredCwd.length > 0;
143
+ const effectiveWorkspaceCwd = useConfiguredInsteadOfAgentHome ? "" : workspaceCwd;
144
+ const cwd = effectiveWorkspaceCwd || configuredCwd || process.cwd();
145
+ let effectiveExecutionCwd = adapterExecutionTargetRemoteCwd(executionTarget, cwd);
146
+ await ensureAbsoluteDirectory(cwd, { createIfMissing: true });
147
+ const openCodeSkillEntries = await readPaperclipRuntimeSkillEntries(config, __moduleDir);
148
+ const desiredOpenCodeSkillNames = resolveLegacyPaperclipDesiredSkillNames(config, openCodeSkillEntries);
149
+ if (!executionTargetIsRemote) {
150
+ await ensureOpenCodeSkillsInjected(onLog, openCodeSkillEntries, desiredOpenCodeSkillNames, resolveOpenCodeSkillsHome(config));
151
+ }
152
+ const envConfig = parseObject(config.env);
153
+ const env = {
154
+ ...buildPaperclipEnv(agent),
155
+ ...buildRuntimeToolsEnv(ctx.runtimeTools),
156
+ };
157
+ env.PAPERCLIP_RUN_ID = runId;
158
+ const wakeTaskId = (typeof context.taskId === "string" && context.taskId.trim().length > 0 && context.taskId.trim()) ||
159
+ (typeof context.issueId === "string" && context.issueId.trim().length > 0 && context.issueId.trim()) ||
160
+ null;
161
+ const wakeReason = typeof context.wakeReason === "string" && context.wakeReason.trim().length > 0
162
+ ? context.wakeReason.trim()
163
+ : null;
164
+ const wakeCommentId = (typeof context.wakeCommentId === "string" && context.wakeCommentId.trim().length > 0 && context.wakeCommentId.trim()) ||
165
+ (typeof context.commentId === "string" && context.commentId.trim().length > 0 && context.commentId.trim()) ||
166
+ null;
167
+ const approvalId = typeof context.approvalId === "string" && context.approvalId.trim().length > 0
168
+ ? context.approvalId.trim()
169
+ : null;
170
+ const approvalStatus = typeof context.approvalStatus === "string" && context.approvalStatus.trim().length > 0
171
+ ? context.approvalStatus.trim()
172
+ : null;
173
+ const linkedIssueIds = Array.isArray(context.issueIds)
174
+ ? context.issueIds.filter((value) => typeof value === "string" && value.trim().length > 0)
175
+ : [];
176
+ const issueWorkMode = readPaperclipIssueWorkModeFromContext(context);
177
+ if (wakeTaskId)
178
+ env.PAPERCLIP_TASK_ID = wakeTaskId;
179
+ if (issueWorkMode)
180
+ env.PAPERCLIP_ISSUE_WORK_MODE = issueWorkMode;
181
+ if (wakeReason)
182
+ env.PAPERCLIP_WAKE_REASON = wakeReason;
183
+ if (wakeCommentId)
184
+ env.PAPERCLIP_WAKE_COMMENT_ID = wakeCommentId;
185
+ if (approvalId)
186
+ env.PAPERCLIP_APPROVAL_ID = approvalId;
187
+ if (approvalStatus)
188
+ env.PAPERCLIP_APPROVAL_STATUS = approvalStatus;
189
+ if (linkedIssueIds.length > 0)
190
+ env.PAPERCLIP_LINKED_ISSUE_IDS = linkedIssueIds.join(",");
191
+ refreshPaperclipWorkspaceEnvForExecution({
192
+ env,
193
+ envConfig,
194
+ workspaceCwd: effectiveWorkspaceCwd,
195
+ workspaceSource,
196
+ workspaceId,
197
+ workspaceRepoUrl,
198
+ workspaceRepoRef,
199
+ workspaceHints,
200
+ agentHome,
201
+ executionTargetIsRemote,
202
+ executionCwd: effectiveExecutionCwd,
203
+ });
204
+ // Prevent OpenCode from writing an opencode.json config file into the
205
+ // project working directory (which would pollute the git repo). Model
206
+ // selection is already handled via the --model CLI flag. Set after the
207
+ // envConfig loop so user overrides cannot disable this guard.
208
+ env.OPENCODE_DISABLE_PROJECT_CONFIG = "true";
209
+ if (authToken) {
210
+ env.PAPERCLIP_API_KEY = authToken;
211
+ }
212
+ const preparedRuntimeConfig = await prepareOpenCodeRuntimeConfig({ env, config });
213
+ const localRuntimeConfigHome = preparedRuntimeConfig.notes.length > 0 ? preparedRuntimeConfig.env.XDG_CONFIG_HOME : "";
214
+ try {
215
+ const runtimeEnv = Object.fromEntries(Object.entries(ensurePathInEnv({ ...process.env, ...preparedRuntimeConfig.env })).filter((entry) => typeof entry[1] === "string"));
216
+ const timeoutSec = resolveAdapterExecutionTargetTimeoutSec(executionTarget, asNumber(config.timeoutSec, 0));
217
+ const graceSec = asNumber(config.graceSec, 20);
218
+ await ensureAdapterExecutionTargetRuntimeCommandInstalled({
219
+ runId,
220
+ target: executionTarget,
221
+ installCommand: ctx.runtimeCommandSpec?.installCommand,
222
+ detectCommand: ctx.runtimeCommandSpec?.detectCommand,
223
+ cwd,
224
+ env: runtimeEnv,
225
+ timeoutSec,
226
+ graceSec,
227
+ onLog,
228
+ });
229
+ await ensureAdapterExecutionTargetCommandResolvable(command, executionTarget, cwd, runtimeEnv, {
230
+ installCommand: SANDBOX_INSTALL_COMMAND,
231
+ timeoutSec,
232
+ });
233
+ const resolvedCommand = await resolveAdapterExecutionTargetCommandForLogs(command, executionTarget, cwd, runtimeEnv);
234
+ let loggedEnv = buildInvocationEnvForLogs(preparedRuntimeConfig.env, {
235
+ runtimeEnv,
236
+ includeRuntimeKeys: ["HOME"],
237
+ resolvedCommand,
238
+ });
239
+ if (!executionTargetIsRemote) {
240
+ await ensureOpenCodeModelConfiguredAndAvailable({
241
+ model,
242
+ command,
243
+ cwd,
244
+ env: runtimeEnv,
245
+ });
246
+ }
247
+ const extraArgs = (() => {
248
+ const fromExtraArgs = asStringArray(config.extraArgs);
249
+ if (fromExtraArgs.length > 0)
250
+ return fromExtraArgs;
251
+ return asStringArray(config.args);
252
+ })();
253
+ let restoreRemoteWorkspace = null;
254
+ let localSkillsDir = null;
255
+ let remoteRuntimeRootDir = null;
256
+ let paperclipBridge = null;
257
+ if (executionTarget?.kind === "remote") {
258
+ localSkillsDir = await buildOpenCodeSkillsDir(config);
259
+ await onLog("stdout", `[paperclip] Syncing workspace and OpenCode runtime assets to ${describeAdapterExecutionTarget(executionTarget)}.\n`);
260
+ const preparedExecutionTargetRuntime = await prepareAdapterExecutionTargetRuntime({
261
+ runId,
262
+ target: executionTarget,
263
+ adapterKey: "opencode",
264
+ timeoutSec,
265
+ workspaceLocalDir: cwd,
266
+ installCommand: SANDBOX_INSTALL_COMMAND,
267
+ detectCommand: command,
268
+ onProgress: (line) => onLog("stdout", line),
269
+ onRuntimeProgress: ctx.onRuntimeProgress,
270
+ assets: [
271
+ {
272
+ key: "skills",
273
+ localDir: localSkillsDir,
274
+ followSymlinks: true,
275
+ },
276
+ ...(localRuntimeConfigHome
277
+ ? [{
278
+ key: "xdgConfig",
279
+ localDir: localRuntimeConfigHome,
280
+ }]
281
+ : []),
282
+ ],
283
+ });
284
+ restoreRemoteWorkspace = () => preparedExecutionTargetRuntime.restoreWorkspace((line) => onLog("stdout", line));
285
+ effectiveExecutionCwd = preparedExecutionTargetRuntime.workspaceRemoteDir ?? effectiveExecutionCwd;
286
+ refreshPaperclipWorkspaceEnvForExecution({
287
+ env: preparedRuntimeConfig.env,
288
+ envConfig,
289
+ workspaceCwd: effectiveWorkspaceCwd,
290
+ workspaceSource,
291
+ workspaceId,
292
+ workspaceRepoUrl,
293
+ workspaceRepoRef,
294
+ workspaceHints,
295
+ agentHome,
296
+ executionTargetIsRemote,
297
+ executionCwd: effectiveExecutionCwd,
298
+ });
299
+ remoteRuntimeRootDir = preparedExecutionTargetRuntime.runtimeRootDir;
300
+ const managedHome = adapterExecutionTargetUsesManagedHome(executionTarget);
301
+ if (managedHome && preparedExecutionTargetRuntime.runtimeRootDir) {
302
+ preparedRuntimeConfig.env.HOME = preparedExecutionTargetRuntime.runtimeRootDir;
303
+ }
304
+ if (localRuntimeConfigHome && preparedExecutionTargetRuntime.assetDirs.xdgConfig) {
305
+ preparedRuntimeConfig.env.XDG_CONFIG_HOME = preparedExecutionTargetRuntime.assetDirs.xdgConfig;
306
+ }
307
+ prepareManagedOpenCodeRemoteHomes({
308
+ env: preparedRuntimeConfig.env,
309
+ config,
310
+ runtimeRootDir: preparedExecutionTargetRuntime.runtimeRootDir,
311
+ runId,
312
+ configDir: preparedExecutionTargetRuntime.assetDirs.xdgConfig,
313
+ });
314
+ const remoteHomeDir = config.managedAiConnection
315
+ ? preparedRuntimeConfig.env.HOME
316
+ : managedHome && preparedExecutionTargetRuntime.runtimeRootDir
317
+ ? preparedExecutionTargetRuntime.runtimeRootDir
318
+ : await readAdapterExecutionTargetHomeDir(runId, executionTarget, {
319
+ cwd,
320
+ env: preparedRuntimeConfig.env,
321
+ timeoutSec,
322
+ graceSec,
323
+ onLog,
324
+ });
325
+ if (remoteHomeDir && preparedExecutionTargetRuntime.assetDirs.skills) {
326
+ const remoteSkillsDir = path.posix.join(remoteHomeDir, ".claude", "skills");
327
+ await runAdapterExecutionTargetShellCommand(runId, executionTarget, `mkdir -p ${JSON.stringify(path.posix.dirname(remoteSkillsDir))} && rm -rf ${JSON.stringify(remoteSkillsDir)} && cp -a ${JSON.stringify(preparedExecutionTargetRuntime.assetDirs.skills)} ${JSON.stringify(remoteSkillsDir)}`, { cwd, env: preparedRuntimeConfig.env, timeoutSec, graceSec, onLog });
328
+ }
329
+ await ensureRemoteOpenCodeModelConfiguredAndAvailable({
330
+ runId,
331
+ executionTarget,
332
+ command,
333
+ model,
334
+ cwd,
335
+ env: preparedRuntimeConfig.env,
336
+ timeoutSec,
337
+ graceSec,
338
+ });
339
+ }
340
+ const runtimeExecutionTarget = overrideAdapterExecutionTargetRemoteCwd(executionTarget, effectiveExecutionCwd);
341
+ if (executionTargetIsRemote && adapterExecutionTargetUsesPaperclipBridge(runtimeExecutionTarget)) {
342
+ paperclipBridge = await startAdapterExecutionTargetPaperclipBridge({
343
+ runId,
344
+ target: runtimeExecutionTarget,
345
+ enableSandboxDuplexBridge: adapterExecutionTargetEnablesSandboxDuplexBridge(runtimeExecutionTarget),
346
+ duplexObservabilityRecorder: adapterExecutionTargetDuplexObservabilityRecorder(runtimeExecutionTarget),
347
+ runtimeRootDir: remoteRuntimeRootDir,
348
+ adapterKey: "opencode",
349
+ timeoutSec,
350
+ hostApiToken: preparedRuntimeConfig.env.PAPERCLIP_API_KEY,
351
+ onLog,
352
+ });
353
+ if (paperclipBridge) {
354
+ Object.assign(preparedRuntimeConfig.env, paperclipBridge.env);
355
+ loggedEnv = buildInvocationEnvForLogs(preparedRuntimeConfig.env, {
356
+ runtimeEnv: Object.fromEntries(Object.entries(ensurePathInEnv({ ...process.env, ...preparedRuntimeConfig.env })).filter((entry) => typeof entry[1] === "string")),
357
+ includeRuntimeKeys: ["HOME"],
358
+ resolvedCommand,
359
+ });
360
+ }
361
+ }
362
+ const runtimeSessionParams = parseObject(runtime.sessionParams);
363
+ const runtimeSessionId = asString(runtimeSessionParams.sessionId, runtime.sessionId ?? "");
364
+ const runtimeSessionCwd = asString(runtimeSessionParams.cwd, "");
365
+ const runtimeRemoteExecution = parseObject(runtimeSessionParams.remoteExecution);
366
+ const canResumeSession = runtimeSessionId.length > 0 &&
367
+ (runtimeSessionCwd.length === 0 || path.resolve(runtimeSessionCwd) === path.resolve(effectiveExecutionCwd)) &&
368
+ adapterExecutionTargetSessionMatches(runtimeRemoteExecution, runtimeExecutionTarget);
369
+ const sessionId = canResumeSession ? runtimeSessionId : null;
370
+ if (executionTargetIsRemote && runtimeSessionId && !canResumeSession) {
371
+ await onLog("stdout", `[paperclip] OpenCode session "${runtimeSessionId}" does not match the current remote execution identity and will not be resumed in "${effectiveExecutionCwd}". Starting a fresh remote session.\n`);
372
+ }
373
+ else if (runtimeSessionId && !canResumeSession) {
374
+ await onLog("stdout", `[paperclip] OpenCode session "${runtimeSessionId}" was saved for cwd "${runtimeSessionCwd}" and will not be resumed in "${effectiveExecutionCwd}".\n`);
375
+ }
376
+ const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
377
+ const resolvedInstructionsFilePath = instructionsFilePath
378
+ ? path.resolve(cwd, instructionsFilePath)
379
+ : "";
380
+ const instructionsDir = resolvedInstructionsFilePath ? `${path.dirname(resolvedInstructionsFilePath)}/` : "";
381
+ let instructionsPrefix = "";
382
+ if (resolvedInstructionsFilePath) {
383
+ try {
384
+ const instructionsContents = await fs.readFile(resolvedInstructionsFilePath, "utf8");
385
+ instructionsPrefix =
386
+ `${instructionsContents}\n\n` +
387
+ `The above agent instructions were loaded from ${resolvedInstructionsFilePath}. ` +
388
+ `Resolve any relative file references from ${instructionsDir}.\n\n`;
389
+ }
390
+ catch (err) {
391
+ const reason = err instanceof Error ? err.message : String(err);
392
+ await onLog("stdout", `[paperclip] Warning: could not read agent instructions file "${resolvedInstructionsFilePath}": ${reason}\n`);
393
+ }
394
+ }
395
+ const commandNotes = (() => {
396
+ const notes = [...preparedRuntimeConfig.notes];
397
+ if (!resolvedInstructionsFilePath)
398
+ return notes;
399
+ if (instructionsPrefix.length > 0) {
400
+ notes.push(`Loaded agent instructions from ${resolvedInstructionsFilePath}`);
401
+ notes.push(`Prepended instructions + path directive to stdin prompt (relative references from ${instructionsDir}).`);
402
+ return notes;
403
+ }
404
+ notes.push(`Configured instructionsFilePath ${resolvedInstructionsFilePath}, but file could not be read; continuing without injected instructions.`);
405
+ return notes;
406
+ })();
407
+ const bootstrapPromptTemplate = asString(config.bootstrapPromptTemplate, "");
408
+ const templateData = {
409
+ agentId: agent.id,
410
+ companyId: agent.companyId,
411
+ runId,
412
+ company: { id: agent.companyId },
413
+ agent,
414
+ run: { id: runId, source: "on_demand" },
415
+ context,
416
+ };
417
+ const renderedBootstrapPrompt = !sessionId && bootstrapPromptTemplate.trim().length > 0
418
+ ? renderTemplate(bootstrapPromptTemplate, templateData).trim()
419
+ : "";
420
+ const taskContextNote = context.conversationMode === true
421
+ ? selectPaperclipTaskMarkdown(context, { resumedSession: Boolean(sessionId), includeCommunicationGuidance: false })
422
+ : "";
423
+ const wakePrompt = renderPaperclipWakePrompt(context.paperclipWake, {
424
+ conversationMode: context.conversationMode === true,
425
+ resumedSession: Boolean(sessionId),
426
+ suppressIssueDescription: taskContextNote.length > 0,
427
+ });
428
+ const shouldUseResumeDeltaPrompt = Boolean(sessionId) && wakePrompt.length > 0;
429
+ const renderedPrompt = shouldUseResumeDeltaPrompt || isPaperclipRecoveryWakePayload(context.paperclipWake)
430
+ ? ""
431
+ : renderTemplate(promptTemplate, templateData);
432
+ const sessionHandoffNote = asString(context.paperclipSessionHandoffMarkdown, "").trim();
433
+ const basePrompt = joinPromptSections([
434
+ instructionsPrefix,
435
+ renderedBootstrapPrompt,
436
+ wakePrompt,
437
+ taskContextNote,
438
+ sessionHandoffNote,
439
+ renderedPrompt,
440
+ ]);
441
+ const promptMetrics = {
442
+ promptChars: basePrompt.length,
443
+ instructionsChars: instructionsPrefix.length,
444
+ bootstrapPromptChars: renderedBootstrapPrompt.length,
445
+ wakePromptChars: wakePrompt.length,
446
+ taskContextChars: taskContextNote.length,
447
+ sessionHandoffChars: sessionHandoffNote.length,
448
+ heartbeatPromptChars: renderedPrompt.length,
449
+ };
450
+ // Optional diagnostic: surface OpenCode's own logs on stderr (captured into the
451
+ // run result) so failures that OpenCode otherwise wraps as an opaque
452
+ // "Unexpected server error" can be diagnosed in remote/sandbox runs where the
453
+ // log file is unreachable. Toggle via PAPERCLIP_OPENCODE_PRINT_LOGS (run env,
454
+ // then process env).
455
+ const printLogs = isTruthyEnvFlag(env.PAPERCLIP_OPENCODE_PRINT_LOGS ?? process.env.PAPERCLIP_OPENCODE_PRINT_LOGS);
456
+ const buildArgs = (resumeSessionId) => {
457
+ const args = ["run", "--format", "json"];
458
+ if (printLogs)
459
+ args.push("--print-logs");
460
+ if (resumeSessionId)
461
+ args.push("--session", resumeSessionId);
462
+ if (model)
463
+ args.push("--model", model);
464
+ if (variant)
465
+ args.push("--variant", variant);
466
+ if (extraArgs.length > 0)
467
+ args.push(...extraArgs);
468
+ return args;
469
+ };
470
+ const runAttempt = async (resumeSessionId) => {
471
+ const prompt = joinPromptSections([
472
+ selectInitialCommunicationGuidance(context, { resumedSession: Boolean(resumeSessionId) }),
473
+ basePrompt,
474
+ ]);
475
+ const args = buildArgs(resumeSessionId);
476
+ if (onMeta) {
477
+ await onMeta({
478
+ adapterType: "opencode_local",
479
+ command: resolvedCommand,
480
+ cwd: effectiveExecutionCwd,
481
+ commandNotes,
482
+ commandArgs: [...args, `<stdin prompt ${prompt.length} chars>`],
483
+ env: loggedEnv,
484
+ prompt,
485
+ promptMetrics: { ...promptMetrics, promptChars: prompt.length },
486
+ context,
487
+ });
488
+ }
489
+ const proc = await runAdapterExecutionTargetProcess(runId, runtimeExecutionTarget, command, args, {
490
+ cwd,
491
+ env: preparedRuntimeConfig.env,
492
+ stdin: prompt,
493
+ timeoutSec,
494
+ graceSec,
495
+ onSpawn,
496
+ onRuntimeProgress: ctx.onRuntimeProgress,
497
+ onLog,
498
+ runLogTail: paperclipBridge?.runLogTail,
499
+ settleRunDisposition: paperclipBridge?.settleRunDisposition,
500
+ });
501
+ return {
502
+ proc,
503
+ rawStderr: proc.stderr,
504
+ parsed: parseOpenCodeJsonl(proc.stdout),
505
+ };
506
+ };
507
+ const toResult = (attempt, clearSessionOnMissingSession = false) => {
508
+ if (attempt.proc.timedOut) {
509
+ return {
510
+ exitCode: attempt.proc.exitCode,
511
+ signal: attempt.proc.signal,
512
+ timedOut: true,
513
+ errorMessage: `Timed out after ${timeoutSec}s`,
514
+ clearSession: clearSessionOnMissingSession,
515
+ };
516
+ }
517
+ const resolvedSessionId = attempt.parsed.sessionId ??
518
+ (clearSessionOnMissingSession ? null : runtimeSessionId ?? runtime.sessionId ?? null);
519
+ const resolvedSessionParams = resolvedSessionId
520
+ ? {
521
+ sessionId: resolvedSessionId,
522
+ cwd: effectiveExecutionCwd,
523
+ ...(workspaceId ? { workspaceId } : {}),
524
+ ...(workspaceRepoUrl ? { repoUrl: workspaceRepoUrl } : {}),
525
+ ...(workspaceRepoRef ? { repoRef: workspaceRepoRef } : {}),
526
+ ...(executionTargetIsRemote
527
+ ? {
528
+ remoteExecution: adapterExecutionTargetSessionIdentity(runtimeExecutionTarget),
529
+ }
530
+ : {}),
531
+ }
532
+ : null;
533
+ const parsedError = typeof attempt.parsed.errorMessage === "string" ? attempt.parsed.errorMessage.trim() : "";
534
+ const stderrLine = firstNonEmptyLine(attempt.proc.stderr);
535
+ const rawExitCode = attempt.proc.exitCode;
536
+ const synthesizedExitCode = parsedError && (rawExitCode ?? 0) === 0 ? 1 : rawExitCode;
537
+ const fallbackErrorMessage = parsedError ||
538
+ stderrLine ||
539
+ `OpenCode exited with code ${synthesizedExitCode ?? -1}`;
540
+ const modelId = model || null;
541
+ return {
542
+ exitCode: synthesizedExitCode,
543
+ signal: attempt.proc.signal,
544
+ timedOut: false,
545
+ errorMessage: (synthesizedExitCode ?? 0) === 0 ? null : fallbackErrorMessage,
546
+ // Forward the transport-level error code from the run-disposition seam.
547
+ // A lost duplex control channel surfaces the typed `duplex_channel_lost`
548
+ // code; every other result carries no code here.
549
+ errorCode: attempt.proc.errorCode ?? null,
550
+ usage: {
551
+ inputTokens: attempt.parsed.usage.inputTokens,
552
+ outputTokens: attempt.parsed.usage.outputTokens,
553
+ cachedInputTokens: attempt.parsed.usage.cachedInputTokens,
554
+ },
555
+ sessionId: resolvedSessionId,
556
+ sessionParams: resolvedSessionParams,
557
+ sessionDisplayId: resolvedSessionId,
558
+ provider: parseModelProvider(modelId),
559
+ biller: resolveOpenCodeBiller(runtimeEnv, parseModelProvider(modelId)),
560
+ model: modelId,
561
+ billingType: "unknown",
562
+ costUsd: attempt.parsed.costUsd,
563
+ resultJson: {
564
+ stdout: attempt.proc.stdout,
565
+ stderr: attempt.proc.stderr,
566
+ },
567
+ summary: attempt.parsed.summary,
568
+ clearSession: Boolean(clearSessionOnMissingSession && !attempt.parsed.sessionId),
569
+ };
570
+ };
571
+ try {
572
+ const initial = await runAttempt(sessionId);
573
+ const initialFailed = !initial.proc.timedOut && ((initial.proc.exitCode ?? 0) !== 0 || Boolean(initial.parsed.errorMessage));
574
+ if (sessionId &&
575
+ initialFailed &&
576
+ isOpenCodeUnknownSessionError(initial.proc.stdout, initial.rawStderr)) {
577
+ await onLog("stdout", `[paperclip] OpenCode session "${sessionId}" is unavailable; retrying with a fresh session.\n`);
578
+ const retry = await runAttempt(null);
579
+ return toResult(retry, true);
580
+ }
581
+ return toResult(initial);
582
+ }
583
+ finally {
584
+ await Promise.all([
585
+ paperclipBridge?.stop(),
586
+ restoreRemoteWorkspace?.(),
587
+ localSkillsDir ? fs.rm(path.dirname(localSkillsDir), { recursive: true, force: true }).catch(() => undefined) : Promise.resolve(),
588
+ ]);
589
+ }
590
+ }
591
+ finally {
592
+ await preparedRuntimeConfig.cleanup();
593
+ }
594
+ }
595
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/server/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execute.remote.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.remote.test.d.ts","sourceRoot":"","sources":["../../src/server/execute.remote.test.ts"],"names":[],"mappings":""}