@evermore.work/adapter-opencode-local 2026.509.0-canary.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.
- package/dist/cli/format-event.d.ts +2 -0
- package/dist/cli/format-event.d.ts.map +1 -0
- package/dist/cli/format-event.js +115 -0
- package/dist/cli/format-event.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/server/execute.d.ts +3 -0
- package/dist/server/execute.d.ts.map +1 -0
- package/dist/server/execute.js +520 -0
- package/dist/server/execute.js.map +1 -0
- package/dist/server/execute.remote.test.d.ts +2 -0
- package/dist/server/execute.remote.test.d.ts.map +1 -0
- package/dist/server/execute.remote.test.js +317 -0
- package/dist/server/execute.remote.test.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +63 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/models.d.ts +22 -0
- package/dist/server/models.d.ts.map +1 -0
- package/dist/server/models.js +171 -0
- package/dist/server/models.js.map +1 -0
- package/dist/server/models.test.d.ts +2 -0
- package/dist/server/models.test.d.ts.map +1 -0
- package/dist/server/models.test.js +29 -0
- package/dist/server/models.test.js.map +1 -0
- package/dist/server/parse.d.ts +14 -0
- package/dist/server/parse.d.ts.map +1 -0
- package/dist/server/parse.js +99 -0
- package/dist/server/parse.js.map +1 -0
- package/dist/server/parse.test.d.ts +2 -0
- package/dist/server/parse.test.d.ts.map +1 -0
- package/dist/server/parse.test.js +73 -0
- package/dist/server/parse.test.js.map +1 -0
- package/dist/server/runtime-config.d.ts +12 -0
- package/dist/server/runtime-config.d.ts.map +1 -0
- package/dist/server/runtime-config.js +87 -0
- package/dist/server/runtime-config.js.map +1 -0
- package/dist/server/runtime-config.test.d.ts +2 -0
- package/dist/server/runtime-config.test.d.ts.map +1 -0
- package/dist/server/runtime-config.test.js +60 -0
- package/dist/server/runtime-config.test.js.map +1 -0
- package/dist/server/skills.d.ts +8 -0
- package/dist/server/skills.d.ts.map +1 -0
- package/dist/server/skills.js +73 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/test.d.ts +3 -0
- package/dist/server/test.d.ts.map +1 -0
- package/dist/server/test.js +358 -0
- package/dist/server/test.js.map +1 -0
- package/dist/ui/build-config.d.ts +3 -0
- package/dist/ui/build-config.d.ts.map +1 -0
- package/dist/ui/build-config.js +84 -0
- package/dist/ui/build-config.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/parse-stdout.d.ts +3 -0
- package/dist/ui/parse-stdout.d.ts.map +1 -0
- package/dist/ui/parse-stdout.js +141 -0
- package/dist/ui/parse-stdout.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,520 @@
|
|
|
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 "@evermore.work/adapter-utils";
|
|
6
|
+
import { adapterExecutionTargetIsRemote, adapterExecutionTargetRemoteCwd, adapterExecutionTargetSessionIdentity, adapterExecutionTargetSessionMatches, adapterExecutionTargetUsesManagedHome, adapterExecutionTargetUsesEvermoreBridge, describeAdapterExecutionTarget, ensureAdapterExecutionTargetCommandResolvable, ensureAdapterExecutionTargetRuntimeCommandInstalled, prepareAdapterExecutionTargetRuntime, readAdapterExecutionTarget, readAdapterExecutionTargetHomeDir, resolveAdapterExecutionTargetCommandForLogs, runAdapterExecutionTargetProcess, runAdapterExecutionTargetShellCommand, startAdapterExecutionTargetEvermoreBridge, } from "@evermore.work/adapter-utils/execution-target";
|
|
7
|
+
import { asString, asNumber, asStringArray, parseObject, applyEvermoreWorkspaceEnv, buildEvermoreEnv, joinPromptSections, buildInvocationEnvForLogs, ensureAbsoluteDirectory, ensureEvermoreSkillSymlink, ensurePathInEnv, renderTemplate, renderEvermoreWakePrompt, shapeEvermoreWorkspaceEnvForExecution, stringifyEvermoreWakePayload, DEFAULT_EVERMORE_AGENT_PROMPT_TEMPLATE, readEvermoreRuntimeSkillEntries, readEvermoreIssueWorkModeFromContext, resolveEvermoreDesiredSkillNames, } from "@evermore.work/adapter-utils/server-utils";
|
|
8
|
+
import { isOpenCodeUnknownSessionError, parseOpenCodeJsonl } from "./parse.js";
|
|
9
|
+
import { ensureOpenCodeModelConfiguredAndAvailable, parseOpenCodeModelsOutput, requireOpenCodeModelId, } from "./models.js";
|
|
10
|
+
import { removeMaintainerOnlySkillSymlinks } from "@evermore.work/adapter-utils/server-utils";
|
|
11
|
+
import { prepareOpenCodeRuntimeConfig } from "./runtime-config.js";
|
|
12
|
+
import { SANDBOX_INSTALL_COMMAND } from "../index.js";
|
|
13
|
+
const __moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
function firstNonEmptyLine(text) {
|
|
15
|
+
return (text
|
|
16
|
+
.split(/\r?\n/)
|
|
17
|
+
.map((line) => line.trim())
|
|
18
|
+
.find(Boolean) ?? "");
|
|
19
|
+
}
|
|
20
|
+
function parseModelProvider(model) {
|
|
21
|
+
if (!model)
|
|
22
|
+
return null;
|
|
23
|
+
const trimmed = model.trim();
|
|
24
|
+
if (!trimmed.includes("/"))
|
|
25
|
+
return null;
|
|
26
|
+
return trimmed.slice(0, trimmed.indexOf("/")).trim() || null;
|
|
27
|
+
}
|
|
28
|
+
function resolveOpenCodeBiller(env, provider) {
|
|
29
|
+
return inferOpenAiCompatibleBiller(env, null) ?? provider ?? "unknown";
|
|
30
|
+
}
|
|
31
|
+
const REMOTE_OPENCODE_MODELS_PROBE_DEFAULT_TIMEOUT_SEC = 20;
|
|
32
|
+
async function ensureRemoteOpenCodeModelConfiguredAndAvailable(input) {
|
|
33
|
+
const model = requireOpenCodeModelId(input.model);
|
|
34
|
+
const probeTimeoutSec = input.timeoutSec > 0
|
|
35
|
+
? Math.min(input.timeoutSec, REMOTE_OPENCODE_MODELS_PROBE_DEFAULT_TIMEOUT_SEC)
|
|
36
|
+
: REMOTE_OPENCODE_MODELS_PROBE_DEFAULT_TIMEOUT_SEC;
|
|
37
|
+
const probe = await runAdapterExecutionTargetProcess(input.runId, input.executionTarget, input.command, ["models"], {
|
|
38
|
+
cwd: input.cwd,
|
|
39
|
+
env: input.env,
|
|
40
|
+
timeoutSec: probeTimeoutSec,
|
|
41
|
+
graceSec: input.graceSec,
|
|
42
|
+
onLog: async () => { },
|
|
43
|
+
});
|
|
44
|
+
if (probe.timedOut) {
|
|
45
|
+
throw new Error(`\`opencode models\` timed out on the remote execution target after ${probeTimeoutSec}s.`);
|
|
46
|
+
}
|
|
47
|
+
if ((probe.exitCode ?? 1) !== 0) {
|
|
48
|
+
const detail = firstNonEmptyLine(probe.stderr) || firstNonEmptyLine(probe.stdout);
|
|
49
|
+
throw new Error(detail
|
|
50
|
+
? `\`opencode models\` failed on the remote execution target: ${detail}`
|
|
51
|
+
: "`opencode models` failed on the remote execution target.");
|
|
52
|
+
}
|
|
53
|
+
const models = parseOpenCodeModelsOutput(probe.stdout);
|
|
54
|
+
if (models.length === 0) {
|
|
55
|
+
throw new Error("OpenCode returned no models on the remote execution target. Run `opencode models` there and verify provider auth.");
|
|
56
|
+
}
|
|
57
|
+
if (!models.some((entry) => entry.id === model)) {
|
|
58
|
+
const sample = models.slice(0, 12).map((entry) => entry.id).join(", ");
|
|
59
|
+
throw new Error(`Configured OpenCode model is unavailable on the remote execution target: ${model}. Available models: ${sample}${models.length > 12 ? ", ..." : ""}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function claudeSkillsHome() {
|
|
63
|
+
return path.join(os.homedir(), ".claude", "skills");
|
|
64
|
+
}
|
|
65
|
+
async function ensureOpenCodeSkillsInjected(onLog, skillsEntries, desiredSkillNames) {
|
|
66
|
+
const skillsHome = claudeSkillsHome();
|
|
67
|
+
await fs.mkdir(skillsHome, { recursive: true });
|
|
68
|
+
const desiredSet = new Set(desiredSkillNames ?? skillsEntries.map((entry) => entry.key));
|
|
69
|
+
const selectedEntries = skillsEntries.filter((entry) => desiredSet.has(entry.key));
|
|
70
|
+
const removedSkills = await removeMaintainerOnlySkillSymlinks(skillsHome, selectedEntries.map((entry) => entry.runtimeName));
|
|
71
|
+
for (const skillName of removedSkills) {
|
|
72
|
+
await onLog("stderr", `[evermore] Removed maintainer-only OpenCode skill "${skillName}" from ${skillsHome}\n`);
|
|
73
|
+
}
|
|
74
|
+
for (const entry of selectedEntries) {
|
|
75
|
+
const target = path.join(skillsHome, entry.runtimeName);
|
|
76
|
+
try {
|
|
77
|
+
const result = await ensureEvermoreSkillSymlink(entry.source, target);
|
|
78
|
+
if (result === "skipped")
|
|
79
|
+
continue;
|
|
80
|
+
await onLog("stderr", `[evermore] ${result === "repaired" ? "Repaired" : "Injected"} OpenCode skill "${entry.key}" into ${skillsHome}\n`);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
await onLog("stderr", `[evermore] Failed to inject OpenCode skill "${entry.key}" into ${skillsHome}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function buildOpenCodeSkillsDir(config) {
|
|
88
|
+
const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "evermore-opencode-skills-"));
|
|
89
|
+
const target = path.join(tmp, "skills");
|
|
90
|
+
await fs.mkdir(target, { recursive: true });
|
|
91
|
+
const availableEntries = await readEvermoreRuntimeSkillEntries(config, __moduleDir);
|
|
92
|
+
const desiredNames = new Set(resolveEvermoreDesiredSkillNames(config, availableEntries));
|
|
93
|
+
for (const entry of availableEntries) {
|
|
94
|
+
if (!desiredNames.has(entry.key))
|
|
95
|
+
continue;
|
|
96
|
+
await fs.symlink(entry.source, path.join(target, entry.runtimeName));
|
|
97
|
+
}
|
|
98
|
+
return target;
|
|
99
|
+
}
|
|
100
|
+
export async function execute(ctx) {
|
|
101
|
+
const { runId, agent, runtime, config, context, onLog, onMeta, onSpawn, authToken } = ctx;
|
|
102
|
+
const executionTarget = readAdapterExecutionTarget({
|
|
103
|
+
executionTarget: ctx.executionTarget,
|
|
104
|
+
legacyRemoteExecution: ctx.executionTransport?.remoteExecution,
|
|
105
|
+
});
|
|
106
|
+
const executionTargetIsRemote = adapterExecutionTargetIsRemote(executionTarget);
|
|
107
|
+
const promptTemplate = asString(config.promptTemplate, DEFAULT_EVERMORE_AGENT_PROMPT_TEMPLATE);
|
|
108
|
+
const command = asString(config.command, "opencode");
|
|
109
|
+
const model = asString(config.model, "").trim();
|
|
110
|
+
const variant = asString(config.variant, "").trim();
|
|
111
|
+
const workspaceContext = parseObject(context.evermoreWorkspace);
|
|
112
|
+
const workspaceCwd = asString(workspaceContext.cwd, "");
|
|
113
|
+
const workspaceSource = asString(workspaceContext.source, "");
|
|
114
|
+
const workspaceId = asString(workspaceContext.workspaceId, "");
|
|
115
|
+
const workspaceRepoUrl = asString(workspaceContext.repoUrl, "");
|
|
116
|
+
const workspaceRepoRef = asString(workspaceContext.repoRef, "");
|
|
117
|
+
const agentHome = asString(workspaceContext.agentHome, "");
|
|
118
|
+
const workspaceHints = Array.isArray(context.evermoreWorkspaces)
|
|
119
|
+
? context.evermoreWorkspaces.filter((value) => typeof value === "object" && value !== null)
|
|
120
|
+
: [];
|
|
121
|
+
const configuredCwd = asString(config.cwd, "");
|
|
122
|
+
const useConfiguredInsteadOfAgentHome = workspaceSource === "agent_home" && configuredCwd.length > 0;
|
|
123
|
+
const effectiveWorkspaceCwd = useConfiguredInsteadOfAgentHome ? "" : workspaceCwd;
|
|
124
|
+
const cwd = effectiveWorkspaceCwd || configuredCwd || process.cwd();
|
|
125
|
+
const effectiveExecutionCwd = adapterExecutionTargetRemoteCwd(executionTarget, cwd);
|
|
126
|
+
const shapedWorkspaceEnv = shapeEvermoreWorkspaceEnvForExecution({
|
|
127
|
+
workspaceCwd: effectiveWorkspaceCwd,
|
|
128
|
+
workspaceHints,
|
|
129
|
+
executionTargetIsRemote,
|
|
130
|
+
executionCwd: effectiveExecutionCwd,
|
|
131
|
+
});
|
|
132
|
+
await ensureAbsoluteDirectory(cwd, { createIfMissing: true });
|
|
133
|
+
const openCodeSkillEntries = await readEvermoreRuntimeSkillEntries(config, __moduleDir);
|
|
134
|
+
const desiredOpenCodeSkillNames = resolveEvermoreDesiredSkillNames(config, openCodeSkillEntries);
|
|
135
|
+
if (!executionTargetIsRemote) {
|
|
136
|
+
await ensureOpenCodeSkillsInjected(onLog, openCodeSkillEntries, desiredOpenCodeSkillNames);
|
|
137
|
+
}
|
|
138
|
+
const envConfig = parseObject(config.env);
|
|
139
|
+
const hasExplicitApiKey = typeof envConfig.EVERMORE_API_KEY === "string" && envConfig.EVERMORE_API_KEY.trim().length > 0;
|
|
140
|
+
const env = { ...buildEvermoreEnv(agent) };
|
|
141
|
+
env.EVERMORE_RUN_ID = runId;
|
|
142
|
+
const wakeTaskId = (typeof context.taskId === "string" && context.taskId.trim().length > 0 && context.taskId.trim()) ||
|
|
143
|
+
(typeof context.issueId === "string" && context.issueId.trim().length > 0 && context.issueId.trim()) ||
|
|
144
|
+
null;
|
|
145
|
+
const wakeReason = typeof context.wakeReason === "string" && context.wakeReason.trim().length > 0
|
|
146
|
+
? context.wakeReason.trim()
|
|
147
|
+
: null;
|
|
148
|
+
const wakeCommentId = (typeof context.wakeCommentId === "string" && context.wakeCommentId.trim().length > 0 && context.wakeCommentId.trim()) ||
|
|
149
|
+
(typeof context.commentId === "string" && context.commentId.trim().length > 0 && context.commentId.trim()) ||
|
|
150
|
+
null;
|
|
151
|
+
const approvalId = typeof context.approvalId === "string" && context.approvalId.trim().length > 0
|
|
152
|
+
? context.approvalId.trim()
|
|
153
|
+
: null;
|
|
154
|
+
const approvalStatus = typeof context.approvalStatus === "string" && context.approvalStatus.trim().length > 0
|
|
155
|
+
? context.approvalStatus.trim()
|
|
156
|
+
: null;
|
|
157
|
+
const linkedIssueIds = Array.isArray(context.issueIds)
|
|
158
|
+
? context.issueIds.filter((value) => typeof value === "string" && value.trim().length > 0)
|
|
159
|
+
: [];
|
|
160
|
+
const wakePayloadJson = stringifyEvermoreWakePayload(context.evermoreWake);
|
|
161
|
+
const issueWorkMode = readEvermoreIssueWorkModeFromContext(context);
|
|
162
|
+
if (wakeTaskId)
|
|
163
|
+
env.EVERMORE_TASK_ID = wakeTaskId;
|
|
164
|
+
if (issueWorkMode)
|
|
165
|
+
env.EVERMORE_ISSUE_WORK_MODE = issueWorkMode;
|
|
166
|
+
if (wakeReason)
|
|
167
|
+
env.EVERMORE_WAKE_REASON = wakeReason;
|
|
168
|
+
if (wakeCommentId)
|
|
169
|
+
env.EVERMORE_WAKE_COMMENT_ID = wakeCommentId;
|
|
170
|
+
if (approvalId)
|
|
171
|
+
env.EVERMORE_APPROVAL_ID = approvalId;
|
|
172
|
+
if (approvalStatus)
|
|
173
|
+
env.EVERMORE_APPROVAL_STATUS = approvalStatus;
|
|
174
|
+
if (linkedIssueIds.length > 0)
|
|
175
|
+
env.EVERMORE_LINKED_ISSUE_IDS = linkedIssueIds.join(",");
|
|
176
|
+
if (wakePayloadJson)
|
|
177
|
+
env.EVERMORE_WAKE_PAYLOAD_JSON = wakePayloadJson;
|
|
178
|
+
applyEvermoreWorkspaceEnv(env, {
|
|
179
|
+
workspaceCwd: shapedWorkspaceEnv.workspaceCwd,
|
|
180
|
+
workspaceSource,
|
|
181
|
+
workspaceId,
|
|
182
|
+
workspaceRepoUrl,
|
|
183
|
+
workspaceRepoRef,
|
|
184
|
+
agentHome,
|
|
185
|
+
});
|
|
186
|
+
if (shapedWorkspaceEnv.workspaceHints.length > 0) {
|
|
187
|
+
env.EVERMORE_WORKSPACES_JSON = JSON.stringify(shapedWorkspaceEnv.workspaceHints);
|
|
188
|
+
}
|
|
189
|
+
for (const [key, value] of Object.entries(envConfig)) {
|
|
190
|
+
if (typeof value === "string")
|
|
191
|
+
env[key] = value;
|
|
192
|
+
}
|
|
193
|
+
// Prevent OpenCode from writing an opencode.json config file into the
|
|
194
|
+
// project working directory (which would pollute the git repo). Model
|
|
195
|
+
// selection is already handled via the --model CLI flag. Set after the
|
|
196
|
+
// envConfig loop so user overrides cannot disable this guard.
|
|
197
|
+
env.OPENCODE_DISABLE_PROJECT_CONFIG = "true";
|
|
198
|
+
if (!hasExplicitApiKey && authToken) {
|
|
199
|
+
env.EVERMORE_API_KEY = authToken;
|
|
200
|
+
}
|
|
201
|
+
const preparedRuntimeConfig = await prepareOpenCodeRuntimeConfig({ env, config });
|
|
202
|
+
const localRuntimeConfigHome = preparedRuntimeConfig.notes.length > 0 ? preparedRuntimeConfig.env.XDG_CONFIG_HOME : "";
|
|
203
|
+
try {
|
|
204
|
+
const runtimeEnv = Object.fromEntries(Object.entries(ensurePathInEnv({ ...process.env, ...preparedRuntimeConfig.env })).filter((entry) => typeof entry[1] === "string"));
|
|
205
|
+
const timeoutSec = asNumber(config.timeoutSec, 0);
|
|
206
|
+
const graceSec = asNumber(config.graceSec, 20);
|
|
207
|
+
await ensureAdapterExecutionTargetRuntimeCommandInstalled({
|
|
208
|
+
runId,
|
|
209
|
+
target: executionTarget,
|
|
210
|
+
installCommand: ctx.runtimeCommandSpec?.installCommand,
|
|
211
|
+
detectCommand: ctx.runtimeCommandSpec?.detectCommand,
|
|
212
|
+
cwd,
|
|
213
|
+
env: runtimeEnv,
|
|
214
|
+
timeoutSec,
|
|
215
|
+
graceSec,
|
|
216
|
+
onLog,
|
|
217
|
+
});
|
|
218
|
+
await ensureAdapterExecutionTargetCommandResolvable(command, executionTarget, cwd, runtimeEnv, { installCommand: SANDBOX_INSTALL_COMMAND });
|
|
219
|
+
const resolvedCommand = await resolveAdapterExecutionTargetCommandForLogs(command, executionTarget, cwd, runtimeEnv);
|
|
220
|
+
let loggedEnv = buildInvocationEnvForLogs(preparedRuntimeConfig.env, {
|
|
221
|
+
runtimeEnv,
|
|
222
|
+
includeRuntimeKeys: ["HOME"],
|
|
223
|
+
resolvedCommand,
|
|
224
|
+
});
|
|
225
|
+
if (!executionTargetIsRemote) {
|
|
226
|
+
await ensureOpenCodeModelConfiguredAndAvailable({
|
|
227
|
+
model,
|
|
228
|
+
command,
|
|
229
|
+
cwd,
|
|
230
|
+
env: runtimeEnv,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
const extraArgs = (() => {
|
|
234
|
+
const fromExtraArgs = asStringArray(config.extraArgs);
|
|
235
|
+
if (fromExtraArgs.length > 0)
|
|
236
|
+
return fromExtraArgs;
|
|
237
|
+
return asStringArray(config.args);
|
|
238
|
+
})();
|
|
239
|
+
let restoreRemoteWorkspace = null;
|
|
240
|
+
let localSkillsDir = null;
|
|
241
|
+
let remoteRuntimeRootDir = null;
|
|
242
|
+
let evermoreBridge = null;
|
|
243
|
+
if (executionTarget?.kind === "remote") {
|
|
244
|
+
localSkillsDir = await buildOpenCodeSkillsDir(config);
|
|
245
|
+
await onLog("stdout", `[evermore] Syncing workspace and OpenCode runtime assets to ${describeAdapterExecutionTarget(executionTarget)}.\n`);
|
|
246
|
+
const preparedExecutionTargetRuntime = await prepareAdapterExecutionTargetRuntime({
|
|
247
|
+
target: executionTarget,
|
|
248
|
+
adapterKey: "opencode",
|
|
249
|
+
workspaceLocalDir: cwd,
|
|
250
|
+
installCommand: SANDBOX_INSTALL_COMMAND,
|
|
251
|
+
detectCommand: command,
|
|
252
|
+
assets: [
|
|
253
|
+
{
|
|
254
|
+
key: "skills",
|
|
255
|
+
localDir: localSkillsDir,
|
|
256
|
+
followSymlinks: true,
|
|
257
|
+
},
|
|
258
|
+
...(localRuntimeConfigHome
|
|
259
|
+
? [{
|
|
260
|
+
key: "xdgConfig",
|
|
261
|
+
localDir: localRuntimeConfigHome,
|
|
262
|
+
}]
|
|
263
|
+
: []),
|
|
264
|
+
],
|
|
265
|
+
});
|
|
266
|
+
restoreRemoteWorkspace = () => preparedExecutionTargetRuntime.restoreWorkspace();
|
|
267
|
+
remoteRuntimeRootDir = preparedExecutionTargetRuntime.runtimeRootDir;
|
|
268
|
+
const managedHome = adapterExecutionTargetUsesManagedHome(executionTarget);
|
|
269
|
+
if (managedHome && preparedExecutionTargetRuntime.runtimeRootDir) {
|
|
270
|
+
preparedRuntimeConfig.env.HOME = preparedExecutionTargetRuntime.runtimeRootDir;
|
|
271
|
+
}
|
|
272
|
+
if (localRuntimeConfigHome && preparedExecutionTargetRuntime.assetDirs.xdgConfig) {
|
|
273
|
+
preparedRuntimeConfig.env.XDG_CONFIG_HOME = preparedExecutionTargetRuntime.assetDirs.xdgConfig;
|
|
274
|
+
}
|
|
275
|
+
const remoteHomeDir = managedHome && preparedExecutionTargetRuntime.runtimeRootDir
|
|
276
|
+
? preparedExecutionTargetRuntime.runtimeRootDir
|
|
277
|
+
: await readAdapterExecutionTargetHomeDir(runId, executionTarget, {
|
|
278
|
+
cwd,
|
|
279
|
+
env: preparedRuntimeConfig.env,
|
|
280
|
+
timeoutSec,
|
|
281
|
+
graceSec,
|
|
282
|
+
onLog,
|
|
283
|
+
});
|
|
284
|
+
if (remoteHomeDir && preparedExecutionTargetRuntime.assetDirs.skills) {
|
|
285
|
+
const remoteSkillsDir = path.posix.join(remoteHomeDir, ".claude", "skills");
|
|
286
|
+
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 });
|
|
287
|
+
}
|
|
288
|
+
await ensureRemoteOpenCodeModelConfiguredAndAvailable({
|
|
289
|
+
runId,
|
|
290
|
+
executionTarget,
|
|
291
|
+
command,
|
|
292
|
+
model,
|
|
293
|
+
cwd,
|
|
294
|
+
env: preparedRuntimeConfig.env,
|
|
295
|
+
timeoutSec,
|
|
296
|
+
graceSec,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
if (executionTargetIsRemote && adapterExecutionTargetUsesEvermoreBridge(executionTarget)) {
|
|
300
|
+
evermoreBridge = await startAdapterExecutionTargetEvermoreBridge({
|
|
301
|
+
runId,
|
|
302
|
+
target: executionTarget,
|
|
303
|
+
runtimeRootDir: remoteRuntimeRootDir,
|
|
304
|
+
adapterKey: "opencode",
|
|
305
|
+
hostApiToken: preparedRuntimeConfig.env.EVERMORE_API_KEY,
|
|
306
|
+
onLog,
|
|
307
|
+
});
|
|
308
|
+
if (evermoreBridge) {
|
|
309
|
+
Object.assign(preparedRuntimeConfig.env, evermoreBridge.env);
|
|
310
|
+
loggedEnv = buildInvocationEnvForLogs(preparedRuntimeConfig.env, {
|
|
311
|
+
runtimeEnv: Object.fromEntries(Object.entries(ensurePathInEnv({ ...process.env, ...preparedRuntimeConfig.env })).filter((entry) => typeof entry[1] === "string")),
|
|
312
|
+
includeRuntimeKeys: ["HOME"],
|
|
313
|
+
resolvedCommand,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
const runtimeSessionParams = parseObject(runtime.sessionParams);
|
|
318
|
+
const runtimeSessionId = asString(runtimeSessionParams.sessionId, runtime.sessionId ?? "");
|
|
319
|
+
const runtimeSessionCwd = asString(runtimeSessionParams.cwd, "");
|
|
320
|
+
const runtimeRemoteExecution = parseObject(runtimeSessionParams.remoteExecution);
|
|
321
|
+
const canResumeSession = runtimeSessionId.length > 0 &&
|
|
322
|
+
(runtimeSessionCwd.length === 0 || path.resolve(runtimeSessionCwd) === path.resolve(effectiveExecutionCwd)) &&
|
|
323
|
+
adapterExecutionTargetSessionMatches(runtimeRemoteExecution, executionTarget);
|
|
324
|
+
const sessionId = canResumeSession ? runtimeSessionId : null;
|
|
325
|
+
if (executionTargetIsRemote && runtimeSessionId && !canResumeSession) {
|
|
326
|
+
await onLog("stdout", `[evermore] OpenCode session "${runtimeSessionId}" does not match the current remote execution identity and will not be resumed in "${effectiveExecutionCwd}". Starting a fresh remote session.\n`);
|
|
327
|
+
}
|
|
328
|
+
else if (runtimeSessionId && !canResumeSession) {
|
|
329
|
+
await onLog("stdout", `[evermore] OpenCode session "${runtimeSessionId}" was saved for cwd "${runtimeSessionCwd}" and will not be resumed in "${effectiveExecutionCwd}".\n`);
|
|
330
|
+
}
|
|
331
|
+
const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
|
|
332
|
+
const resolvedInstructionsFilePath = instructionsFilePath
|
|
333
|
+
? path.resolve(cwd, instructionsFilePath)
|
|
334
|
+
: "";
|
|
335
|
+
const instructionsDir = resolvedInstructionsFilePath ? `${path.dirname(resolvedInstructionsFilePath)}/` : "";
|
|
336
|
+
let instructionsPrefix = "";
|
|
337
|
+
if (resolvedInstructionsFilePath) {
|
|
338
|
+
try {
|
|
339
|
+
const instructionsContents = await fs.readFile(resolvedInstructionsFilePath, "utf8");
|
|
340
|
+
instructionsPrefix =
|
|
341
|
+
`${instructionsContents}\n\n` +
|
|
342
|
+
`The above agent instructions were loaded from ${resolvedInstructionsFilePath}. ` +
|
|
343
|
+
`Resolve any relative file references from ${instructionsDir}.\n\n`;
|
|
344
|
+
}
|
|
345
|
+
catch (err) {
|
|
346
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
347
|
+
await onLog("stdout", `[evermore] Warning: could not read agent instructions file "${resolvedInstructionsFilePath}": ${reason}\n`);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
const commandNotes = (() => {
|
|
351
|
+
const notes = [...preparedRuntimeConfig.notes];
|
|
352
|
+
if (!resolvedInstructionsFilePath)
|
|
353
|
+
return notes;
|
|
354
|
+
if (instructionsPrefix.length > 0) {
|
|
355
|
+
notes.push(`Loaded agent instructions from ${resolvedInstructionsFilePath}`);
|
|
356
|
+
notes.push(`Prepended instructions + path directive to stdin prompt (relative references from ${instructionsDir}).`);
|
|
357
|
+
return notes;
|
|
358
|
+
}
|
|
359
|
+
notes.push(`Configured instructionsFilePath ${resolvedInstructionsFilePath}, but file could not be read; continuing without injected instructions.`);
|
|
360
|
+
return notes;
|
|
361
|
+
})();
|
|
362
|
+
const bootstrapPromptTemplate = asString(config.bootstrapPromptTemplate, "");
|
|
363
|
+
const templateData = {
|
|
364
|
+
agentId: agent.id,
|
|
365
|
+
companyId: agent.companyId,
|
|
366
|
+
runId,
|
|
367
|
+
company: { id: agent.companyId },
|
|
368
|
+
agent,
|
|
369
|
+
run: { id: runId, source: "on_demand" },
|
|
370
|
+
context,
|
|
371
|
+
};
|
|
372
|
+
const renderedBootstrapPrompt = !sessionId && bootstrapPromptTemplate.trim().length > 0
|
|
373
|
+
? renderTemplate(bootstrapPromptTemplate, templateData).trim()
|
|
374
|
+
: "";
|
|
375
|
+
const wakePrompt = renderEvermoreWakePrompt(context.evermoreWake, { resumedSession: Boolean(sessionId) });
|
|
376
|
+
const shouldUseResumeDeltaPrompt = Boolean(sessionId) && wakePrompt.length > 0;
|
|
377
|
+
const renderedPrompt = shouldUseResumeDeltaPrompt ? "" : renderTemplate(promptTemplate, templateData);
|
|
378
|
+
const sessionHandoffNote = asString(context.evermoreSessionHandoffMarkdown, "").trim();
|
|
379
|
+
const prompt = joinPromptSections([
|
|
380
|
+
instructionsPrefix,
|
|
381
|
+
renderedBootstrapPrompt,
|
|
382
|
+
wakePrompt,
|
|
383
|
+
sessionHandoffNote,
|
|
384
|
+
renderedPrompt,
|
|
385
|
+
]);
|
|
386
|
+
const promptMetrics = {
|
|
387
|
+
promptChars: prompt.length,
|
|
388
|
+
instructionsChars: instructionsPrefix.length,
|
|
389
|
+
bootstrapPromptChars: renderedBootstrapPrompt.length,
|
|
390
|
+
wakePromptChars: wakePrompt.length,
|
|
391
|
+
sessionHandoffChars: sessionHandoffNote.length,
|
|
392
|
+
heartbeatPromptChars: renderedPrompt.length,
|
|
393
|
+
};
|
|
394
|
+
const buildArgs = (resumeSessionId) => {
|
|
395
|
+
const args = ["run", "--format", "json"];
|
|
396
|
+
if (resumeSessionId)
|
|
397
|
+
args.push("--session", resumeSessionId);
|
|
398
|
+
if (model)
|
|
399
|
+
args.push("--model", model);
|
|
400
|
+
if (variant)
|
|
401
|
+
args.push("--variant", variant);
|
|
402
|
+
if (extraArgs.length > 0)
|
|
403
|
+
args.push(...extraArgs);
|
|
404
|
+
return args;
|
|
405
|
+
};
|
|
406
|
+
const runAttempt = async (resumeSessionId) => {
|
|
407
|
+
const args = buildArgs(resumeSessionId);
|
|
408
|
+
if (onMeta) {
|
|
409
|
+
await onMeta({
|
|
410
|
+
adapterType: "opencode_local",
|
|
411
|
+
command: resolvedCommand,
|
|
412
|
+
cwd: effectiveExecutionCwd,
|
|
413
|
+
commandNotes,
|
|
414
|
+
commandArgs: [...args, `<stdin prompt ${prompt.length} chars>`],
|
|
415
|
+
env: loggedEnv,
|
|
416
|
+
prompt,
|
|
417
|
+
promptMetrics,
|
|
418
|
+
context,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
const proc = await runAdapterExecutionTargetProcess(runId, executionTarget, command, args, {
|
|
422
|
+
cwd,
|
|
423
|
+
env: preparedRuntimeConfig.env,
|
|
424
|
+
stdin: prompt,
|
|
425
|
+
timeoutSec,
|
|
426
|
+
graceSec,
|
|
427
|
+
onSpawn,
|
|
428
|
+
onLog,
|
|
429
|
+
});
|
|
430
|
+
return {
|
|
431
|
+
proc,
|
|
432
|
+
rawStderr: proc.stderr,
|
|
433
|
+
parsed: parseOpenCodeJsonl(proc.stdout),
|
|
434
|
+
};
|
|
435
|
+
};
|
|
436
|
+
const toResult = (attempt, clearSessionOnMissingSession = false) => {
|
|
437
|
+
if (attempt.proc.timedOut) {
|
|
438
|
+
return {
|
|
439
|
+
exitCode: attempt.proc.exitCode,
|
|
440
|
+
signal: attempt.proc.signal,
|
|
441
|
+
timedOut: true,
|
|
442
|
+
errorMessage: `Timed out after ${timeoutSec}s`,
|
|
443
|
+
clearSession: clearSessionOnMissingSession,
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
const resolvedSessionId = attempt.parsed.sessionId ??
|
|
447
|
+
(clearSessionOnMissingSession ? null : runtimeSessionId ?? runtime.sessionId ?? null);
|
|
448
|
+
const resolvedSessionParams = resolvedSessionId
|
|
449
|
+
? {
|
|
450
|
+
sessionId: resolvedSessionId,
|
|
451
|
+
cwd: effectiveExecutionCwd,
|
|
452
|
+
...(workspaceId ? { workspaceId } : {}),
|
|
453
|
+
...(workspaceRepoUrl ? { repoUrl: workspaceRepoUrl } : {}),
|
|
454
|
+
...(workspaceRepoRef ? { repoRef: workspaceRepoRef } : {}),
|
|
455
|
+
...(executionTargetIsRemote
|
|
456
|
+
? {
|
|
457
|
+
remoteExecution: adapterExecutionTargetSessionIdentity(executionTarget),
|
|
458
|
+
}
|
|
459
|
+
: {}),
|
|
460
|
+
}
|
|
461
|
+
: null;
|
|
462
|
+
const parsedError = typeof attempt.parsed.errorMessage === "string" ? attempt.parsed.errorMessage.trim() : "";
|
|
463
|
+
const stderrLine = firstNonEmptyLine(attempt.proc.stderr);
|
|
464
|
+
const rawExitCode = attempt.proc.exitCode;
|
|
465
|
+
const synthesizedExitCode = parsedError && (rawExitCode ?? 0) === 0 ? 1 : rawExitCode;
|
|
466
|
+
const fallbackErrorMessage = parsedError ||
|
|
467
|
+
stderrLine ||
|
|
468
|
+
`OpenCode exited with code ${synthesizedExitCode ?? -1}`;
|
|
469
|
+
const modelId = model || null;
|
|
470
|
+
return {
|
|
471
|
+
exitCode: synthesizedExitCode,
|
|
472
|
+
signal: attempt.proc.signal,
|
|
473
|
+
timedOut: false,
|
|
474
|
+
errorMessage: (synthesizedExitCode ?? 0) === 0 ? null : fallbackErrorMessage,
|
|
475
|
+
usage: {
|
|
476
|
+
inputTokens: attempt.parsed.usage.inputTokens,
|
|
477
|
+
outputTokens: attempt.parsed.usage.outputTokens,
|
|
478
|
+
cachedInputTokens: attempt.parsed.usage.cachedInputTokens,
|
|
479
|
+
},
|
|
480
|
+
sessionId: resolvedSessionId,
|
|
481
|
+
sessionParams: resolvedSessionParams,
|
|
482
|
+
sessionDisplayId: resolvedSessionId,
|
|
483
|
+
provider: parseModelProvider(modelId),
|
|
484
|
+
biller: resolveOpenCodeBiller(runtimeEnv, parseModelProvider(modelId)),
|
|
485
|
+
model: modelId,
|
|
486
|
+
billingType: "unknown",
|
|
487
|
+
costUsd: attempt.parsed.costUsd,
|
|
488
|
+
resultJson: {
|
|
489
|
+
stdout: attempt.proc.stdout,
|
|
490
|
+
stderr: attempt.proc.stderr,
|
|
491
|
+
},
|
|
492
|
+
summary: attempt.parsed.summary,
|
|
493
|
+
clearSession: Boolean(clearSessionOnMissingSession && !attempt.parsed.sessionId),
|
|
494
|
+
};
|
|
495
|
+
};
|
|
496
|
+
try {
|
|
497
|
+
const initial = await runAttempt(sessionId);
|
|
498
|
+
const initialFailed = !initial.proc.timedOut && ((initial.proc.exitCode ?? 0) !== 0 || Boolean(initial.parsed.errorMessage));
|
|
499
|
+
if (sessionId &&
|
|
500
|
+
initialFailed &&
|
|
501
|
+
isOpenCodeUnknownSessionError(initial.proc.stdout, initial.rawStderr)) {
|
|
502
|
+
await onLog("stdout", `[evermore] OpenCode session "${sessionId}" is unavailable; retrying with a fresh session.\n`);
|
|
503
|
+
const retry = await runAttempt(null);
|
|
504
|
+
return toResult(retry, true);
|
|
505
|
+
}
|
|
506
|
+
return toResult(initial);
|
|
507
|
+
}
|
|
508
|
+
finally {
|
|
509
|
+
await Promise.all([
|
|
510
|
+
evermoreBridge?.stop(),
|
|
511
|
+
restoreRemoteWorkspace?.(),
|
|
512
|
+
localSkillsDir ? fs.rm(path.dirname(localSkillsDir), { recursive: true, force: true }).catch(() => undefined) : Promise.resolve(),
|
|
513
|
+
]);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
finally {
|
|
517
|
+
await preparedRuntimeConfig.cleanup();
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
//# 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 @@
|
|
|
1
|
+
{"version":3,"file":"execute.remote.test.d.ts","sourceRoot":"","sources":["../../src/server/execute.remote.test.ts"],"names":[],"mappings":""}
|