@paperclipai/adapter-opencode-local 2026.1012.0 → 2026.1012.1-beta.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/server/execute.d.ts.map +1 -1
- package/dist/server/execute.js +71 -19
- package/dist/server/execute.js.map +1 -1
- package/dist/server/execute.remote.test.js +35 -2
- package/dist/server/execute.remote.test.js.map +1 -1
- package/dist/server/execute.test.js +15 -9
- package/dist/server/execute.test.js.map +1 -1
- package/dist/server/execute.timeout.test.d.ts +2 -0
- package/dist/server/execute.timeout.test.d.ts.map +1 -0
- package/dist/server/execute.timeout.test.js +123 -0
- package/dist/server/execute.timeout.test.js.map +1 -0
- package/dist/server/parse.d.ts +18 -1
- package/dist/server/parse.d.ts.map +1 -1
- package/dist/server/parse.js +76 -51
- package/dist/server/parse.js.map +1 -1
- package/dist/server/parse.test.js +18 -0
- package/dist/server/parse.test.js.map +1 -1
- package/dist/server/test.d.ts.map +1 -1
- package/dist/server/test.js +34 -3
- package/dist/server/test.js.map +1 -1
- package/dist/server/test.remote.test.js +48 -1
- package/dist/server/test.remote.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
const mocks = vi.hoisted(() => ({
|
|
6
|
+
process: vi.fn(), restore: vi.fn(), stop: vi.fn(),
|
|
7
|
+
}));
|
|
8
|
+
vi.mock("@paperclipai/adapter-utils/execution-target", async (importOriginal) => ({
|
|
9
|
+
...await importOriginal(),
|
|
10
|
+
ensureAdapterExecutionTargetRuntimeCommandInstalled: vi.fn(),
|
|
11
|
+
ensureAdapterExecutionTargetCommandResolvable: vi.fn(),
|
|
12
|
+
prepareAdapterExecutionTargetRuntime: vi.fn(async () => ({
|
|
13
|
+
runtimeRootDir: "/workspace/runtime", workspaceRemoteDir: "/workspace",
|
|
14
|
+
assetDirs: {}, restoreWorkspace: mocks.restore,
|
|
15
|
+
})),
|
|
16
|
+
readAdapterExecutionTargetHomeDir: vi.fn(async () => "/home/fixture"),
|
|
17
|
+
startAdapterExecutionTargetPaperclipBridge: vi.fn(async () => ({ env: {}, stop: mocks.stop })),
|
|
18
|
+
runAdapterExecutionTargetProcess: mocks.process,
|
|
19
|
+
}));
|
|
20
|
+
import { execute } from "./execute.js";
|
|
21
|
+
const rawOutput = "private-output-canary";
|
|
22
|
+
const rawError = "<html>504 Gateway Time-out private-provider-token-canary</html>";
|
|
23
|
+
const failed = {
|
|
24
|
+
timedOut: true, exitCode: null, signal: null, stdout: rawOutput, stderr: rawError,
|
|
25
|
+
pid: null, startedAt: "2020-01-01T00:00:00.000Z", durationMs: 100,
|
|
26
|
+
};
|
|
27
|
+
describe("OpenCode timeout reporting", () => {
|
|
28
|
+
let dir;
|
|
29
|
+
beforeEach(async () => {
|
|
30
|
+
dir = await fs.mkdtemp(path.join(os.tmpdir(), "paperclip-opencode-timeout-"));
|
|
31
|
+
vi.stubEnv("XDG_CONFIG_HOME", dir);
|
|
32
|
+
mocks.process.mockReset().mockResolvedValue(failed);
|
|
33
|
+
mocks.restore.mockReset().mockResolvedValue(undefined);
|
|
34
|
+
mocks.stop.mockReset().mockResolvedValue(undefined);
|
|
35
|
+
});
|
|
36
|
+
afterEach(async () => {
|
|
37
|
+
vi.unstubAllEnvs();
|
|
38
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
39
|
+
});
|
|
40
|
+
const context = (timeoutSec, remote = true) => ({
|
|
41
|
+
runId: "run-fixture",
|
|
42
|
+
agent: { id: "agent-fixture", companyId: "company-fixture", name: "Fixture", adapterType: "opencode_local", adapterConfig: {} },
|
|
43
|
+
runtime: { sessionId: null, sessionParams: null, sessionDisplayId: null, taskKey: null },
|
|
44
|
+
config: { command: "opencode", model: "openai/fixture", cwd: dir, timeoutSec,
|
|
45
|
+
env: { OPENCODE_ALLOW_ALL_MODELS: "1" } },
|
|
46
|
+
context: {}, onLog: async () => { },
|
|
47
|
+
...(remote ? { executionTarget: { kind: "remote", transport: "sandbox", providerKey: "daytona", remoteCwd: "/workspace" } } : {}),
|
|
48
|
+
});
|
|
49
|
+
it.each([
|
|
50
|
+
[0, true, 14400, "sandbox_default"], [12, true, 12, "configured"],
|
|
51
|
+
[-1, true, 0, "configured"], [0, false, 0, "unlimited"], [12, false, 12, "configured"],
|
|
52
|
+
])("keeps policy separate from an opaque timeout (%s, remote=%s)", async (configured, remote, resolved, source) => {
|
|
53
|
+
const result = await execute(context(configured, remote));
|
|
54
|
+
expect(result).toMatchObject({ timedOut: true, exitCode: null, signal: null,
|
|
55
|
+
errorMessage: "OpenCode execution timed out",
|
|
56
|
+
resultJson: { adapterExecutionTimeout: { timeoutSec: resolved, source } } });
|
|
57
|
+
expect(JSON.stringify(result)).not.toContain("private-");
|
|
58
|
+
expect(result.errorMessage).not.toContain(String(resolved));
|
|
59
|
+
expect(mocks.process).toHaveBeenCalledTimes(1);
|
|
60
|
+
expect(mocks.process.mock.calls[0][4]).toMatchObject({ timeoutSec: resolved, graceSec: 20 });
|
|
61
|
+
expect(mocks.restore).toHaveBeenCalledTimes(remote ? 1 : 0);
|
|
62
|
+
expect(mocks.stop).toHaveBeenCalledTimes(remote ? 1 : 0);
|
|
63
|
+
});
|
|
64
|
+
it.each([0, 7])("retains output and completion semantics for a non-timeout exit %s", async (exitCode) => {
|
|
65
|
+
mocks.process.mockResolvedValue({ ...failed, timedOut: false, exitCode, stderr: "fixture failure" });
|
|
66
|
+
const result = await execute(context(0));
|
|
67
|
+
expect(result).toMatchObject({ timedOut: false, exitCode, signal: null,
|
|
68
|
+
errorMessage: exitCode === 0 ? null : "fixture failure",
|
|
69
|
+
resultJson: { stdout: rawOutput, stderr: "fixture failure",
|
|
70
|
+
adapterExecutionTimeout: { timeoutSec: 14400, source: "sandbox_default" } } });
|
|
71
|
+
expect(mocks.process).toHaveBeenCalledTimes(1);
|
|
72
|
+
expect(mocks.restore).toHaveBeenCalledTimes(1);
|
|
73
|
+
expect(mocks.stop).toHaveBeenCalledTimes(1);
|
|
74
|
+
});
|
|
75
|
+
it("runs the sandbox CLI through the actual process seam with session dispatch and incremental output", async () => {
|
|
76
|
+
const actual = await vi.importActual("@paperclipai/adapter-utils/execution-target");
|
|
77
|
+
mocks.process.mockImplementation(actual.runAdapterExecutionTargetProcess);
|
|
78
|
+
const logs = vi.fn(async () => { });
|
|
79
|
+
const runner = {
|
|
80
|
+
execute: vi.fn(async (input) => {
|
|
81
|
+
// A synchronous command can lose its HTTP response before the run's
|
|
82
|
+
// configured deadline. Session dispatch must keep that request off the
|
|
83
|
+
// main CLI path; it must not replay the agent to recover the response.
|
|
84
|
+
if (!input.useSession)
|
|
85
|
+
return failed;
|
|
86
|
+
await input.onLog?.("stdout", "streamed fixture output");
|
|
87
|
+
return { ...failed, timedOut: false, exitCode: 0, stdout: "streamed fixture output", stderr: "" };
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
const ctx = context(0);
|
|
91
|
+
ctx.onLog = logs;
|
|
92
|
+
ctx.executionTarget = { kind: "remote", transport: "sandbox", providerKey: "daytona", remoteCwd: "/workspace", runner };
|
|
93
|
+
const result = await execute(ctx);
|
|
94
|
+
expect(result).toMatchObject({ timedOut: false, exitCode: 0, errorMessage: null,
|
|
95
|
+
resultJson: { stdout: "streamed fixture output", adapterExecutionTimeout: { timeoutSec: 14400, source: "sandbox_default" } } });
|
|
96
|
+
expect(runner.execute).toHaveBeenCalledTimes(1);
|
|
97
|
+
expect(runner.execute.mock.calls[0][0]).toMatchObject({ command: "opencode", useSession: true, timeoutMs: 14400000, commandTimeoutMs: 14400000 });
|
|
98
|
+
expect(logs).toHaveBeenCalledWith("stdout", "streamed fixture output");
|
|
99
|
+
expect(mocks.restore).toHaveBeenCalledTimes(1);
|
|
100
|
+
expect(mocks.stop).toHaveBeenCalledTimes(1);
|
|
101
|
+
});
|
|
102
|
+
it("keeps other sandbox providers on their existing command path", async () => {
|
|
103
|
+
const ctx = context(12);
|
|
104
|
+
ctx.executionTarget = { kind: "remote", transport: "sandbox", providerKey: "fixture-provider", remoteCwd: "/workspace" };
|
|
105
|
+
await execute(ctx);
|
|
106
|
+
expect(mocks.process.mock.calls[0][4]).not.toHaveProperty("useSession");
|
|
107
|
+
});
|
|
108
|
+
it("retains real local deadline and termination behavior without claiming provider origin", async () => {
|
|
109
|
+
const actual = await vi.importActual("@paperclipai/adapter-utils/execution-target");
|
|
110
|
+
mocks.process.mockImplementation(actual.runAdapterExecutionTargetProcess);
|
|
111
|
+
const command = path.join(dir, "fixture-opencode");
|
|
112
|
+
await fs.writeFile(command, "#!/usr/bin/env node\nsetInterval(() => {}, 1000);\n", { mode: 0o755 });
|
|
113
|
+
const ctx = context(0.1, false);
|
|
114
|
+
ctx.config.command = command;
|
|
115
|
+
ctx.config.graceSec = 0.1;
|
|
116
|
+
const result = await execute(ctx);
|
|
117
|
+
expect(result).toMatchObject({ timedOut: true, exitCode: null, signal: "SIGTERM",
|
|
118
|
+
errorMessage: "OpenCode execution timed out",
|
|
119
|
+
resultJson: { adapterExecutionTimeout: { timeoutSec: 0.1, source: "configured" } } });
|
|
120
|
+
expect(mocks.process).toHaveBeenCalledTimes(1);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=execute.timeout.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.timeout.test.js","sourceRoot":"","sources":["../../src/server/execute.timeout.test.ts"],"names":[],"mappings":"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"}
|
package/dist/server/parse.d.ts
CHANGED
|
@@ -6,7 +6,24 @@ export declare function parseOpenCodeJsonl(stdout: string): {
|
|
|
6
6
|
cachedInputTokens: number;
|
|
7
7
|
outputTokens: number;
|
|
8
8
|
};
|
|
9
|
-
|
|
9
|
+
usageReported: boolean;
|
|
10
|
+
usageComplete: boolean;
|
|
11
|
+
costUsd: number | null;
|
|
12
|
+
errorMessage: string | null;
|
|
13
|
+
toolErrors: string[];
|
|
14
|
+
};
|
|
15
|
+
/** Consume complete JSONL records once, retaining protocol accounting state. */
|
|
16
|
+
export declare function createOpenCodeJsonlParser(): (stdout: string) => {
|
|
17
|
+
sessionId: string | null;
|
|
18
|
+
summary: string;
|
|
19
|
+
usage: {
|
|
20
|
+
inputTokens: number;
|
|
21
|
+
cachedInputTokens: number;
|
|
22
|
+
outputTokens: number;
|
|
23
|
+
};
|
|
24
|
+
usageReported: boolean;
|
|
25
|
+
usageComplete: boolean;
|
|
26
|
+
costUsd: number | null;
|
|
10
27
|
errorMessage: string | null;
|
|
11
28
|
toolErrors: string[];
|
|
12
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/server/parse.ts"],"names":[],"mappings":"AAqBA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/server/parse.ts"],"names":[],"mappings":"AAqBA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;EAEhD;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,aAevB,MAAM;;;;;;;;;;;;;EAiEvB;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAUrF"}
|
package/dist/server/parse.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asString, parseJson, parseObject } from "@paperclipai/adapter-utils/server-utils";
|
|
2
2
|
function errorText(value) {
|
|
3
3
|
if (typeof value === "string")
|
|
4
4
|
return value;
|
|
@@ -24,6 +24,10 @@ function errorText(value) {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
export function parseOpenCodeJsonl(stdout) {
|
|
27
|
+
return createOpenCodeJsonlParser()(stdout);
|
|
28
|
+
}
|
|
29
|
+
/** Consume complete JSONL records once, retaining protocol accounting state. */
|
|
30
|
+
export function createOpenCodeJsonlParser() {
|
|
27
31
|
let sessionId = null;
|
|
28
32
|
const messages = [];
|
|
29
33
|
const errors = [];
|
|
@@ -33,59 +37,80 @@ export function parseOpenCodeJsonl(stdout) {
|
|
|
33
37
|
cachedInputTokens: 0,
|
|
34
38
|
outputTokens: 0,
|
|
35
39
|
};
|
|
36
|
-
let costUsd =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (type === "step_finish") {
|
|
56
|
-
const part = parseObject(event.part);
|
|
57
|
-
const tokens = parseObject(part.tokens);
|
|
58
|
-
const cache = parseObject(tokens.cache);
|
|
59
|
-
usage.inputTokens += asNumber(tokens.input, 0);
|
|
60
|
-
usage.cachedInputTokens += asNumber(cache.read, 0);
|
|
61
|
-
usage.outputTokens += asNumber(tokens.output, 0) + asNumber(tokens.reasoning, 0);
|
|
62
|
-
costUsd += asNumber(part.cost, 0);
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
if (type === "tool_use") {
|
|
66
|
-
const part = parseObject(event.part);
|
|
67
|
-
const state = parseObject(part.state);
|
|
68
|
-
if (asString(state.status, "") === "error") {
|
|
69
|
-
const text = asString(state.error, "").trim();
|
|
40
|
+
let costUsd = null;
|
|
41
|
+
let missingCost = false;
|
|
42
|
+
let usageReported = false;
|
|
43
|
+
let missingUsage = false;
|
|
44
|
+
return (stdout) => {
|
|
45
|
+
for (const rawLine of stdout.split(/\r?\n/)) {
|
|
46
|
+
const line = rawLine.trim();
|
|
47
|
+
if (!line)
|
|
48
|
+
continue;
|
|
49
|
+
const event = parseJson(line);
|
|
50
|
+
if (!event)
|
|
51
|
+
continue;
|
|
52
|
+
const currentSessionId = asString(event.sessionID, "").trim();
|
|
53
|
+
if (currentSessionId)
|
|
54
|
+
sessionId = currentSessionId;
|
|
55
|
+
const type = asString(event.type, "");
|
|
56
|
+
if (type === "text") {
|
|
57
|
+
const part = parseObject(event.part);
|
|
58
|
+
const text = asString(part.text, "").trim();
|
|
70
59
|
if (text)
|
|
71
|
-
|
|
60
|
+
messages.push(text);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (type === "step_finish") {
|
|
64
|
+
const part = parseObject(event.part);
|
|
65
|
+
const tokens = parseObject(part.tokens);
|
|
66
|
+
const cache = parseObject(tokens.cache);
|
|
67
|
+
const counts = [tokens.input, tokens.output, cache.read === undefined ? 0 : cache.read, cache.write === undefined ? 0 : cache.write, tokens.reasoning === undefined ? 0 : tokens.reasoning];
|
|
68
|
+
if (counts.every(value => typeof value === "number" && Number.isSafeInteger(value) && value >= 0)) {
|
|
69
|
+
const [input, output, cached, written, reasoning] = counts;
|
|
70
|
+
const next = { inputTokens: usage.inputTokens + input + written,
|
|
71
|
+
outputTokens: usage.outputTokens + output + reasoning, cachedInputTokens: usage.cachedInputTokens + cached };
|
|
72
|
+
if (Object.values(next).every(Number.isSafeInteger)) {
|
|
73
|
+
Object.assign(usage, next);
|
|
74
|
+
usageReported = true;
|
|
75
|
+
}
|
|
76
|
+
else
|
|
77
|
+
missingUsage = true;
|
|
78
|
+
}
|
|
79
|
+
else
|
|
80
|
+
missingUsage = true;
|
|
81
|
+
if (typeof part.cost === "number" && Number.isFinite(part.cost) && part.cost >= 0)
|
|
82
|
+
costUsd = (costUsd ?? 0) + part.cost;
|
|
83
|
+
else
|
|
84
|
+
missingCost = true;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (type === "tool_use") {
|
|
88
|
+
const part = parseObject(event.part);
|
|
89
|
+
const state = parseObject(part.state);
|
|
90
|
+
if (asString(state.status, "") === "error") {
|
|
91
|
+
const text = asString(state.error, "").trim();
|
|
92
|
+
if (text)
|
|
93
|
+
toolErrors.push(text);
|
|
94
|
+
}
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (type === "error") {
|
|
98
|
+
const text = errorText(event.error ?? event.message).trim();
|
|
99
|
+
if (text)
|
|
100
|
+
errors.push(text);
|
|
101
|
+
continue;
|
|
72
102
|
}
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (type === "error") {
|
|
76
|
-
const text = errorText(event.error ?? event.message).trim();
|
|
77
|
-
if (text)
|
|
78
|
-
errors.push(text);
|
|
79
|
-
continue;
|
|
80
103
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
104
|
+
return {
|
|
105
|
+
sessionId,
|
|
106
|
+
summary: messages.join("\n\n").trim(),
|
|
107
|
+
usage: { ...usage },
|
|
108
|
+
usageReported,
|
|
109
|
+
usageComplete: usageReported && !missingUsage,
|
|
110
|
+
costUsd: missingCost ? null : costUsd,
|
|
111
|
+
errorMessage: errors.length > 0 ? errors.join("\n") : null,
|
|
112
|
+
toolErrors,
|
|
113
|
+
};
|
|
89
114
|
};
|
|
90
115
|
}
|
|
91
116
|
export function isOpenCodeUnknownSessionError(stdout, stderr) {
|
package/dist/server/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/server/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/server/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,4 +70,22 @@ describe("parseOpenCodeJsonl", () => {
|
|
|
70
70
|
expect(isOpenCodeUnknownSessionError("all good", "")).toBe(false);
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
|
+
describe("OpenCode price availability", () => {
|
|
74
|
+
it("distinguishes missing cost from reported zero and counts cache writes", () => {
|
|
75
|
+
const event = { type: "step_finish", part: { tokens: { input: 10, output: 3, cache: { read: 100, write: 20 } } } };
|
|
76
|
+
expect(parseOpenCodeJsonl(JSON.stringify(event))).toMatchObject({ costUsd: null, usage: { inputTokens: 30, cachedInputTokens: 100, outputTokens: 3 } });
|
|
77
|
+
expect(parseOpenCodeJsonl(JSON.stringify({ ...event, part: { ...event.part, cost: 0 } })).costUsd).toBe(0);
|
|
78
|
+
expect(parseOpenCodeJsonl([event, { ...event, part: { ...event.part, cost: 1 } }].map((row) => JSON.stringify(row)).join("\n")).costUsd).toBeNull();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe("OpenCode reported usage completeness", () => {
|
|
82
|
+
it.each([undefined, {}, { input: 1 }, { input: -1, output: 2 }, { input: 1, output: 0.5 }, { input: 1, output: 2, cache: { read: -1 } }, { input: 1, output: 2, cache: { read: null } }, { input: 1, output: 2, reasoning: null }])("preserves unknown usage for incomplete counters %j", tokens => {
|
|
83
|
+
expect(parseOpenCodeJsonl(JSON.stringify({ type: "step_finish", part: { tokens } }))).toMatchObject({ usageReported: false, usageComplete: false, costUsd: null });
|
|
84
|
+
});
|
|
85
|
+
it("accepts explicit zeros but keeps a later missing step incomplete", () => {
|
|
86
|
+
const line = JSON.stringify({ type: "step_finish", part: { tokens: { input: 0, output: 0 } } });
|
|
87
|
+
expect(parseOpenCodeJsonl(line)).toMatchObject({ usageReported: true, usageComplete: true, usage: { inputTokens: 0, outputTokens: 0 }, costUsd: null });
|
|
88
|
+
expect(parseOpenCodeJsonl(line + '\n' + JSON.stringify({ type: "step_finish" }))).toMatchObject({ usageReported: true, usageComplete: false });
|
|
89
|
+
});
|
|
90
|
+
});
|
|
73
91
|
//# sourceMappingURL=parse.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.test.js","sourceRoot":"","sources":["../../src/server/parse.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.test.js","sourceRoot":"","sources":["../../src/server/parse.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,4BAA4B,CAAC;AA4DpC,wBAAsB,eAAe,CACnC,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,4BAA4B,CAAC,
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,4BAA4B,CAAC;AA4DpC,wBAAsB,eAAe,CACnC,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CAwZvC"}
|
package/dist/server/test.js
CHANGED
|
@@ -3,7 +3,7 @@ import os from "node:os";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { asBoolean, asNumber, asString, asStringArray, parseObject, ensurePathInEnv, } from "@paperclipai/adapter-utils/server-utils";
|
|
5
5
|
import { ensureAdapterExecutionTargetCommandResolvable, maybeRunSandboxInstallCommand, ensureAdapterExecutionTargetDirectory, runAdapterExecutionTargetProcess, describeAdapterExecutionTarget, resolveAdapterExecutionTargetCwd, prepareAdapterExecutionTargetRuntime, overrideAdapterExecutionTargetRemoteCwd, } from "@paperclipai/adapter-utils/execution-target";
|
|
6
|
-
import { discoverOpenCodeModels, ensureOpenCodeModelConfiguredAndAvailable } from "./models.js";
|
|
6
|
+
import { discoverOpenCodeModels, ensureOpenCodeModelConfiguredAndAvailable, requireOpenCodeModelId } from "./models.js";
|
|
7
7
|
import { parseOpenCodeJsonl } from "./parse.js";
|
|
8
8
|
import { SANDBOX_INSTALL_COMMAND } from "../index.js";
|
|
9
9
|
import { prepareOpenCodeRuntimeConfig, prepareManagedOpenCodeRemoteHomes } from "./runtime-config.js";
|
|
@@ -109,9 +109,16 @@ export async function testEnvironment(ctx) {
|
|
|
109
109
|
// still has the path available for cleanup in `finally` — otherwise the
|
|
110
110
|
// `fs.mkdtemp` directory leaks on the early-throw path.
|
|
111
111
|
let preparedRuntimeWorkspaceLocalDir = null;
|
|
112
|
+
let nativeProbeWorkspaceLocalDir = null;
|
|
112
113
|
try {
|
|
113
114
|
let runtimeTarget = target ?? null;
|
|
114
115
|
let runtimeCwd = cwd;
|
|
116
|
+
// Native workspaces are assigned at execution time. A configuration probe
|
|
117
|
+
// without an explicit workspace must not run in the server's checkout.
|
|
118
|
+
if (!targetIsRemote && ctx.adapterType === "paperclip_runner" && !asString(config.cwd, "").trim()) {
|
|
119
|
+
nativeProbeWorkspaceLocalDir = await fs.mkdtemp(path.join(os.tmpdir(), "paperclip-opencode-native-probe-"));
|
|
120
|
+
runtimeCwd = nativeProbeWorkspaceLocalDir;
|
|
121
|
+
}
|
|
115
122
|
if (targetIsRemote) {
|
|
116
123
|
preparedRuntimeWorkspaceLocalDir = await fs.mkdtemp(path.join(os.tmpdir(), `paperclip-opencode-envtest-${runId}-`));
|
|
117
124
|
const preparedExecutionTargetRuntime = await prepareAdapterExecutionTargetRuntime({
|
|
@@ -122,6 +129,8 @@ export async function testEnvironment(ctx) {
|
|
|
122
129
|
workspaceRemoteDir: cwd,
|
|
123
130
|
installCommand: SANDBOX_INSTALL_COMMAND,
|
|
124
131
|
detectCommand: command,
|
|
132
|
+
// The probe workspace is a throwaway temp dir; never wait on copy-back retries.
|
|
133
|
+
workspaceRestoreRetryDelaysMs: [],
|
|
125
134
|
assets: localRuntimeConfigHome
|
|
126
135
|
? [{
|
|
127
136
|
key: "xdgConfig",
|
|
@@ -189,12 +198,31 @@ export async function testEnvironment(ctx) {
|
|
|
189
198
|
const canRunProbe = checks.every((check) => check.code !== "opencode_cwd_invalid" && check.code !== "opencode_command_unresolvable");
|
|
190
199
|
let modelValidationPassed = false;
|
|
191
200
|
const configuredModel = asString(config.model, "").trim();
|
|
201
|
+
// The native runner already selects a concrete model. Its real hello probe
|
|
202
|
+
// verifies model access and credentials; a full catalog scan adds another
|
|
203
|
+
// cold CLI launch (and discovery retries) without verifying that request.
|
|
204
|
+
const nativeModelProbe = ctx.adapterType === "paperclip_runner" && Boolean(configuredModel);
|
|
192
205
|
// Model discovery and validation use local child processes against
|
|
193
206
|
// OpenCode's `models` subcommand and JSON config; these are not yet
|
|
194
207
|
// wired through the execution target. When probing a remote env, skip
|
|
195
208
|
// discovery/validation and rely on the remote hello probe to surface
|
|
196
209
|
// model/auth issues directly.
|
|
197
|
-
if (
|
|
210
|
+
if (nativeModelProbe) {
|
|
211
|
+
try {
|
|
212
|
+
requireOpenCodeModelId(configuredModel);
|
|
213
|
+
modelValidationPassed = true;
|
|
214
|
+
checks.push({
|
|
215
|
+
code: "opencode_model_validation_via_probe",
|
|
216
|
+
level: "info",
|
|
217
|
+
message: "The configured native-runner model will be validated by the hello probe.",
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
checks.push({ code: "opencode_model_invalid", level: "error",
|
|
222
|
+
message: error instanceof Error ? error.message : "Configured model is invalid." });
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else if (targetIsRemote && configuredModel) {
|
|
198
226
|
checks.push({
|
|
199
227
|
code: "opencode_model_validation_skipped_remote",
|
|
200
228
|
level: "info",
|
|
@@ -278,7 +306,7 @@ export async function testEnvironment(ctx) {
|
|
|
278
306
|
if (!configuredModel && !modelUnavailable) {
|
|
279
307
|
// No model configured – skip model requirement if no model-related checks exist
|
|
280
308
|
}
|
|
281
|
-
else if (!targetIsRemote && configuredModel && canRunProbe) {
|
|
309
|
+
else if (!nativeModelProbe && !targetIsRemote && configuredModel && canRunProbe) {
|
|
282
310
|
try {
|
|
283
311
|
await ensureOpenCodeModelConfiguredAndAvailable({
|
|
284
312
|
model: configuredModel,
|
|
@@ -398,6 +426,9 @@ export async function testEnvironment(ctx) {
|
|
|
398
426
|
}
|
|
399
427
|
}
|
|
400
428
|
finally {
|
|
429
|
+
if (nativeProbeWorkspaceLocalDir) {
|
|
430
|
+
await fs.rm(nativeProbeWorkspaceLocalDir, { recursive: true, force: true }).catch(() => { });
|
|
431
|
+
}
|
|
401
432
|
await restoreWorkspace?.();
|
|
402
433
|
if (!restoreWorkspace && preparedRuntimeWorkspaceLocalDir) {
|
|
403
434
|
// Reached when `prepareAdapterExecutionTargetRuntime` threw before
|
package/dist/server/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,6CAA6C,EAC7C,6BAA6B,EAC7B,qCAAqC,EACrC,gCAAgC,EAChC,8BAA8B,EAC9B,gCAAgC,EAChC,oCAAoC,EACpC,uCAAuC,GACxC,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,yCAAyC,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAEtG,SAAS,eAAe,CAAC,MAAiC;IACxD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IACnE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,CACL,IAAI;SACD,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,MAAc,EAAE,WAA0B;IACtF,MAAM,GAAG,GAAG,WAAW,EAAE,IAAI,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1F,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,GAAG,GAAG,GAAG,CAAC;IAChB,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACtE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnF,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,yBAAyB,GAC7B,qIAAqI,CAAC;AAExI,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAkC;IAElC,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC;IAC3C,MAAM,cAAc,GAAG,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC;IACjD,MAAM,eAAe,GAAG,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;IACpF,MAAM,GAAG,GAAG,gCAAgC,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9F,MAAM,WAAW,GAAG,cAAc;QAChC,CAAC,CAAC,GAAG,CAAC,eAAe,IAAI,8BAA8B,CAAC,MAAM,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,KAAK,GAAG,oBAAoB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,+BAA+B,WAAW,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,MAAM,qCAAqC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;YAC9D,GAAG;YACH,GAAG,EAAE,EAAE;YACP,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,+BAA+B,GAAG,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B;YACzE,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC;IAED,MAAM,iBAAiB,GAAG,gBAAgB,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxG,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjG,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,iCAAiC;YACvC,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,mCAAmC;YAC5C,IAAI,EAAE,+EAA+E;SACtF,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,GAAG,CAAC,+BAA+B,GAAG,MAAM,CAAC;IAC7C,MAAM,qBAAqB,GAAG,MAAM,4BAA4B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAClF,MAAM,sBAAsB,GAC1B,qBAAqB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,IAAI,SAAS,CAAC,MAAM,CAAC,0BAA0B,EAAE,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,uCAAuC;YAC7C,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,gFAAgF;SAC1F,CAAC,CAAC;IACL,CAAC;IACD,IAAI,gBAAgB,GAAiC,IAAI,CAAC;IAC1D,oFAAoF;IACpF,wEAAwE;IACxE,wDAAwD;IACxD,IAAI,gCAAgC,GAAkB,IAAI,CAAC;IAC3D,IAAI,4BAA4B,GAAkB,IAAI,CAAC;IACvD,IAAI,CAAC;QACH,IAAI,aAAa,GAAkC,MAAM,IAAI,IAAI,CAAC;QAClE,IAAI,UAAU,GAAG,GAAG,CAAC;QACrB,0EAA0E;QAC1E,uEAAuE;QACvE,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,WAAW,KAAK,kBAAkB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAClG,4BAA4B,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kCAAkC,CAAC,CAAC,CAAC;YAC5G,UAAU,GAAG,4BAA4B,CAAC;QAC5C,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,gCAAgC,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,8BAA8B,KAAK,GAAG,CAAC,CAAC,CAAC;YACpH,MAAM,8BAA8B,GAAG,MAAM,oCAAoC,CAAC;gBAChF,KAAK;gBACL,MAAM;gBACN,UAAU,EAAE,UAAU;gBACtB,iBAAiB,EAAE,gCAAgC;gBACnD,kBAAkB,EAAE,GAAG;gBACvB,cAAc,EAAE,uBAAuB;gBACvC,aAAa,EAAE,OAAO;gBACtB,gFAAgF;gBAChF,6BAA6B,EAAE,EAAE;gBACjC,MAAM,EAAE,sBAAsB;oBAC5B,CAAC,CAAC,CAAC;4BACD,GAAG,EAAE,WAAW;4BAChB,QAAQ,EAAE,sBAAsB;yBACjC,CAAC;oBACF,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;YACH,gBAAgB,GAAG,KAAK,IAAI,EAAE;gBAC5B,MAAM,8BAA8B,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACxE,IAAI,gCAAgC,EAAE,CAAC;oBACrC,MAAM,EAAE,CAAC,EAAE,CAAC,gCAAgC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAClG,CAAC;YACH,CAAC,CAAC;YACF,UAAU,GAAG,8BAA8B,CAAC,kBAAkB,IAAI,UAAU,CAAC;YAC7E,aAAa,GAAG,uCAAuC,CAAC,MAAM,IAAI,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;YAC5F,IAAI,sBAAsB,IAAI,8BAA8B,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;gBACjF,qBAAqB,CAAC,GAAG,CAAC,eAAe,GAAG,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC;YACjG,CAAC;YACD,iCAAiC,CAAC;gBAChC,GAAG,EAAE,qBAAqB,CAAC,GAAG;gBAC9B,MAAM;gBACN,cAAc,EAAE,8BAA8B,CAAC,cAAc;gBAC7D,KAAK;gBACL,SAAS,EAAE,8BAA8B,CAAC,SAAS,CAAC,SAAS;aAC9D,CAAC,CAAC;QACL,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEnG,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;QACjF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,0BAA0B;gBAChC,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,oEAAoE;gBAC7E,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,6BAA6B,CAAC;gBACvD,KAAK;gBACL,MAAM;gBACN,UAAU,EAAE,UAAU;gBACtB,cAAc,EAAE,uBAAuB;gBACvC,aAAa,EAAE,OAAO;gBACtB,GAAG;aACJ,CAAC,CAAC;YACH,IAAI,YAAY;gBAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,6CAA6C,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBACpG,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,0BAA0B,OAAO,EAAE;iBAC7C,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,+BAA+B;oBACrC,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B;oBACzE,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GACf,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,KAAK,CAAC,IAAI,KAAK,+BAA+B,CAAC,CAAC;QAEnH,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAClC,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1D,2EAA2E;QAC3E,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,gBAAgB,GAAG,GAAG,CAAC,WAAW,KAAK,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;QAE5F,mEAAmE;QACnE,oEAAoE;QACpE,sEAAsE;QACtE,qEAAqE;QACrE,8BAA8B;QAC9B,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,sBAAsB,CAAC,eAAe,CAAC,CAAC;gBACxC,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,qCAAqC;oBAC3C,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,0EAA0E;iBACpF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,OAAO;oBAC1D,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,0CAA0C;gBAChD,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,+EAA+E,WAAW,GAAG;aACvG,CAAC,CAAC;YACH,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC;aAAM,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;gBACnF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,4BAA4B;wBAClC,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,cAAc,UAAU,CAAC,MAAM,oCAAoC;qBAC7E,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,uBAAuB;wBAC7B,KAAK,EAAE,OAAO;wBACd,OAAO,EAAE,8BAA8B;wBACvC,IAAI,EAAE,2DAA2D;qBAClE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,IAAI,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/C,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,wCAAwC;wBAC9C,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,qDAAqD;wBAC9D,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,kEAAkE;qBACzE,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,kCAAkC;wBACxC,KAAK,EAAE,OAAO;wBACd,OAAO,EAAE,MAAM,IAAI,kCAAkC;wBACrD,IAAI,EAAE,oEAAoE;qBAC3E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;gBACnF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,4BAA4B;wBAClC,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,cAAc,UAAU,CAAC,MAAM,oCAAoC;qBAC7E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,IAAI,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/C,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,wCAAwC;wBAC9C,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,qDAAqD;wBAC9D,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,kEAAkE;qBACzE,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,kCAAkC;wBACxC,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,MAAM,IAAI,qEAAqE;wBACxF,IAAI,EAAE,oEAAoE;qBAC3E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,wCAAwC,CAAC,CAAC;QACzG,IAAI,CAAC,eAAe,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1C,gFAAgF;QAClF,CAAC;aAAM,IAAI,CAAC,gBAAgB,IAAI,CAAC,cAAc,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,yCAAyC,CAAC;oBAC9C,KAAK,EAAE,eAAe;oBACtB,OAAO;oBACP,GAAG;oBACH,GAAG,EAAE,UAAU;iBAChB,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,2BAA2B;oBACjC,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,qBAAqB,eAAe,EAAE;iBAChD,CAAC,CAAC;gBACH,qBAAqB,GAAG,IAAI,CAAC;YAC/B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,wBAAwB;oBAC9B,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC;oBAChF,IAAI,EAAE,2EAA2E;iBAClF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,WAAW,IAAI,qBAAqB,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;gBACtB,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,aAAa,CAAC;gBACnD,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC,EAAE,CAAC;YACL,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,eAAe,CAAC;YAEnC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACjC,IAAI,OAAO;gBAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;YAElD,uEAAuE;YACvE,sEAAsE;YACtE,qDAAqD;YACrD,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CACnC,CAAC,EACD,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjE,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,gCAAgC,CAClD,KAAK,EACL,aAAa,EACb,OAAO,EACP,IAAI,EACJ;oBACE,GAAG,EAAE,UAAU;oBACf,GAAG,EAAE,UAAU;oBACf,UAAU,EAAE,oBAAoB;oBAChC,QAAQ,EAAE,CAAC;oBACX,KAAK,EAAE,qBAAqB;oBAC5B,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;iBACtB,CACF,CAAC;gBAEF,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAChD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBACrF,MAAM,YAAY,GAAG,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;gBAE7F,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,gCAAgC;wBACtC,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,iCAAiC;wBAC1C,IAAI,EAAE,qFAAqF;qBAC5F,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,wCAAwC;wBACzF,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;wBACjC,OAAO,EAAE,QAAQ;4BACf,CAAC,CAAC,iCAAiC;4BACnC,CAAC,CAAC,4DAA4D;wBAChE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjF,GAAG,CAAC,QAAQ;4BACV,CAAC,CAAC,EAAE;4BACJ,CAAC,CAAC;gCACE,IAAI,EAAE,8FAA8F;6BACrG,CAAC;qBACP,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,6BAA6B,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,wCAAwC;wBAC9C,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,qDAAqD;wBAC9D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7B,IAAI,EAAE,kEAAkE;qBACzE,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;oBACxD,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,oCAAoC;wBAC1C,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,kEAAkE;wBAC3E,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7B,IAAI,EAAE,8EAA8E;qBACrF,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,6BAA6B;wBACnC,KAAK,EAAE,OAAO;wBACd,OAAO,EAAE,8BAA8B;wBACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7B,IAAI,EAAE,+EAA+E;qBACtF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,8BAA8B;oBACvC,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;oBACxD,IAAI,EAAE,+EAA+E;iBACtF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,4BAA4B,EAAE,CAAC;YACjC,MAAM,EAAE,CAAC,EAAE,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,gBAAgB,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,IAAI,gCAAgC,EAAE,CAAC;YAC1D,mEAAmE;YACnE,gEAAgE;YAChE,MAAM,EAAE,CAAC,EAAE,CAAC,gCAAgC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,MAAM;QACN,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdtemp, rm } from "node:fs/promises";
|
|
1
|
+
import { mkdtemp, rm, stat } from "node:fs/promises";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
@@ -59,6 +59,12 @@ vi.mock("@paperclipai/adapter-utils/execution-target", async () => {
|
|
|
59
59
|
};
|
|
60
60
|
});
|
|
61
61
|
import { testEnvironment } from "./test.js";
|
|
62
|
+
import { discoverOpenCodeModels, ensureOpenCodeModelConfiguredAndAvailable } from "./models.js";
|
|
63
|
+
vi.mock("./models.js", async () => ({
|
|
64
|
+
...await vi.importActual("./models.js"),
|
|
65
|
+
discoverOpenCodeModels: vi.fn().mockRejectedValue(new Error("catalog should not be needed")),
|
|
66
|
+
ensureOpenCodeModelConfiguredAndAvailable: vi.fn().mockRejectedValue(new Error("catalog should not be needed")),
|
|
67
|
+
}));
|
|
62
68
|
describe("opencode remote environment diagnostics", () => {
|
|
63
69
|
const configHomes = [];
|
|
64
70
|
let configHome;
|
|
@@ -72,6 +78,47 @@ describe("opencode remote environment diagnostics", () => {
|
|
|
72
78
|
await rm(configHome, { recursive: true, force: true });
|
|
73
79
|
await Promise.all(configHomes.splice(0).map(dir => rm(dir, { recursive: true, force: true })));
|
|
74
80
|
});
|
|
81
|
+
it.each(["passed", "auth_required", "model_unavailable", "timed_out"])("validates a native model with the real probe path and no catalog scan (%s)", async (outcome) => {
|
|
82
|
+
const successfulProbe = await runAdapterExecutionTargetProcess.getMockImplementation()();
|
|
83
|
+
runAdapterExecutionTargetProcess.mockResolvedValueOnce(outcome === "passed" ? successfulProbe : {
|
|
84
|
+
...successfulProbe, exitCode: 1, stdout: "", timedOut: outcome === "timed_out",
|
|
85
|
+
stderr: outcome === "auth_required" ? "invalid API key" : "ProviderModelNotFoundError",
|
|
86
|
+
});
|
|
87
|
+
const result = await testEnvironment({ companyId: "company-1", adapterType: "paperclip_runner",
|
|
88
|
+
config: { model: "openrouter/deepseek/deepseek-v4-flash-0731", env: { XDG_CONFIG_HOME: configHome } } });
|
|
89
|
+
expect(discoverOpenCodeModels).not.toHaveBeenCalled();
|
|
90
|
+
expect(ensureOpenCodeModelConfiguredAndAvailable).not.toHaveBeenCalled();
|
|
91
|
+
expect(runAdapterExecutionTargetProcess).toHaveBeenCalledExactlyOnceWith(expect.any(String), null, "opencode", ["run", "--format", "json", "--model", "openrouter/deepseek/deepseek-v4-flash-0731"], expect.objectContaining({ stdin: "Respond with hello." }));
|
|
92
|
+
expect(result.status).toBe(outcome === "passed" ? "pass" : "warn");
|
|
93
|
+
expect(result.checks).toContainEqual(expect.objectContaining({ code: `opencode_hello_probe_${outcome}` }));
|
|
94
|
+
const call = runAdapterExecutionTargetProcess.mock.calls[0];
|
|
95
|
+
expect(path.basename(call[4].cwd)).toMatch(/^paperclip-opencode-native-probe-/);
|
|
96
|
+
await expect(stat(call[4].cwd)).rejects.toMatchObject({ code: "ENOENT" });
|
|
97
|
+
});
|
|
98
|
+
it("rejects a malformed native model before starting the probe", async () => {
|
|
99
|
+
const result = await testEnvironment({ companyId: "company-1", adapterType: "paperclip_runner",
|
|
100
|
+
config: { model: "missing-provider", env: { XDG_CONFIG_HOME: configHome } } });
|
|
101
|
+
expect(result.status).toBe("fail");
|
|
102
|
+
expect(runAdapterExecutionTargetProcess).not.toHaveBeenCalled();
|
|
103
|
+
expect(discoverOpenCodeModels).not.toHaveBeenCalled();
|
|
104
|
+
});
|
|
105
|
+
it("preserves an explicitly configured native probe directory", async () => {
|
|
106
|
+
await testEnvironment({ companyId: "company-1", adapterType: "paperclip_runner",
|
|
107
|
+
config: { model: "provider/model", cwd: configHome, env: { XDG_CONFIG_HOME: configHome } } });
|
|
108
|
+
const call = runAdapterExecutionTargetProcess.mock.calls[0];
|
|
109
|
+
expect(call[4].cwd).toBe(configHome);
|
|
110
|
+
expect((await stat(configHome)).isDirectory()).toBe(true);
|
|
111
|
+
});
|
|
112
|
+
it("keeps catalog validation for the legacy local adapter", async () => {
|
|
113
|
+
vi.mocked(discoverOpenCodeModels).mockResolvedValueOnce([{ id: "provider/model", label: "Model" }]);
|
|
114
|
+
vi.mocked(ensureOpenCodeModelConfiguredAndAvailable).mockResolvedValueOnce([{ id: "provider/model", label: "Model" }]);
|
|
115
|
+
const result = await testEnvironment({ companyId: "company-1", adapterType: "opencode_local",
|
|
116
|
+
config: { model: "provider/model", env: { XDG_CONFIG_HOME: configHome } } });
|
|
117
|
+
expect(result.status).toBe("pass");
|
|
118
|
+
expect(discoverOpenCodeModels).toHaveBeenCalledOnce();
|
|
119
|
+
expect(ensureOpenCodeModelConfiguredAndAvailable).toHaveBeenCalledOnce();
|
|
120
|
+
expect(runAdapterExecutionTargetProcess).toHaveBeenCalledOnce();
|
|
121
|
+
});
|
|
75
122
|
it.each([false, true])("stages remote runtime config assets for sandbox hello probes (managed=%s)", async (managed) => {
|
|
76
123
|
const configHome = await mkdtemp(path.join(os.tmpdir(), "opencode-remote-test-config-"));
|
|
77
124
|
configHomes.push(configHome);
|