@loompad/cli 1.2.4 → 1.2.5
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/CHANGELOG.md +26 -0
- package/dist/adapters/antigravity-cli.d.ts +7 -0
- package/dist/adapters/antigravity-cli.js +9 -1
- package/dist/adapters/antigravity-cli.js.map +1 -1
- package/dist/adapters/base.d.ts +5 -3
- package/dist/adapters/base.js +7 -2
- package/dist/adapters/base.js.map +1 -1
- package/dist/adapters/opencode.d.ts +18 -21
- package/dist/adapters/opencode.js +103 -22
- package/dist/adapters/opencode.js.map +1 -1
- package/dist/cli/index.js +111 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui.js +11 -1
- package/dist/cli/ui.js.map +1 -1
- package/dist/core/turn-wait.d.ts +5 -1
- package/dist/core/turn-wait.js +3 -3
- package/dist/core/turn-wait.js.map +1 -1
- package/dist/daemon/client.d.ts +7 -0
- package/dist/daemon/client.js +25 -1
- package/dist/daemon/client.js.map +1 -1
- package/docs/release-notes/v1.2.5.md +19 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.5] — 2026-10-25
|
|
11
|
+
|
|
12
|
+
Fixes from a day of real use farming builds out to codex, antigravity and opencode: Loom no longer kills turns when it updates, every agent starts (and says why when it can't), and scripts get honest exits.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **`loom init` keeps `.loom/` out of git when no one's there to ask.** In a script (no terminal), it now adds `.loom/` to `.gitignore` instead of printing a tip that agents skim past — the folder holds the event log and transcripts. `--no-gitignore` leaves `.gitignore` alone; in a terminal it still asks.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **`loom agents:mode <agent> [bypass|auto|ask]`** — see what each access mode means for that agent and switch it. Codex's default (Auto) is its `workspace-write` sandbox: no network and a read-only `.git`, so it can edit files but not commit, push or reach a dev server; **Bypass** lifts the sandbox. `loom agents` now shows each agent's access on a second line.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- **A turn that reports no cost says so.** `send --wait --json` gave `costUsd: 0` for a subscription CLI's turn (a 3.6-minute codex run), which reads as "free"; it's now `null` — not reported.
|
|
25
|
+
- **Updating the CLI no longer kills running turns.** A `loom` command run with a newer CLI restarted a daemon on an older build automatically — and took every turn in flight down with it (three long `send --wait` runs died this way in the field). It now leaves a busy daemon alone and says how to restart once the turns finish; `loom up --restart` refuses too while turns run, unless you add `--force`.
|
|
26
|
+
- **`send --wait` says when a restart interrupted the turn**, instead of "event log is closed" or "fetch failed": it exits 75, names the agent, and gives the command to carry on (`--json`: `{"status":"interrupted", …, "resume": "…"}`).
|
|
27
|
+
- **`send` to an agent without the baton, from a script, no longer exits 0 having sent nothing.** It printed a yes/no prompt nobody could answer and quietly did nothing. With no terminal (or with `--json`) it now fails with a clear message; **`--handoff`** takes the baton and sends.
|
|
28
|
+
- **antigravity no longer ends a build turn on "I'll await the notification".** Agents that started tests in the background and said they'd wait to be notified ended the turn right there — nothing wakes a headless agent — leaving the work half done and uncommitted (2 of 2 field build turns). Every antigravity turn now says the turn ends at its reply and to run tests and builds in the foreground.
|
|
29
|
+
- **A dead opencode server ends its turn at once.** If `opencode serve` died mid-turn, the turn kept polling the dead port for up to an hour and the agent answered "busy" until `loom reap`. Now the turn ends with what happened, and the next send starts a new server.
|
|
30
|
+
- **An opencode session that silently swallows prompts no longer hangs every turn.** A session bound to a model opencode's session engine can't run (`opencode/big-pickle` on 1.18.31) took each prompt, stored nothing and stayed "busy" forever, and Loom reused that session every time — every send timed out. Loom now notices within 45s that the prompt never reached the session, carries on once in a fresh session (which takes opencode's current default model), and if that fails too, says which model and where opencode's log is.
|
|
31
|
+
- **opencode never started when `OPENCODE_SERVER_PASSWORD` was set.** opencode serve then requires a password on every request, and Loom's own readiness checks didn't send one — every start ended in "timed out waiting for condition" after 30s. A server Loom starts now gets a random password of its own (so nothing else on the machine can drive the agent through its port), and every request carries it; a server you run (`baseUrl`) uses your `OPENCODE_SERVER_PASSWORD`.
|
|
32
|
+
- **opencode says why it didn't start.** "timed out waiting for condition" now names what it waited for and shows the last thing `opencode serve` printed — or that it exited early — with how to check it yourself.
|
|
33
|
+
- `loom agents` (and `agents:available`) outside a project said "no Loom project here" and stopped; it now lists the agents this machine can drive, with `loom init` as the next step (`--json` gives `{ project: null, machine: [...] }`).
|
|
34
|
+
- `loom status` inside a project now lists that project first, marked **← here**, so "is my turn running here?" doesn't mean scanning the whole board.
|
|
35
|
+
|
|
10
36
|
## [1.2.4] — 2026-10-22
|
|
11
37
|
|
|
12
38
|
Team auto-orchestration, set up in one step and steadier on a teammate's machine.
|
|
@@ -32,6 +32,13 @@
|
|
|
32
32
|
*/
|
|
33
33
|
import type { SendInput } from "../types.js";
|
|
34
34
|
import { AdapterBase } from "./base.js";
|
|
35
|
+
/**
|
|
36
|
+
* agy --print is one turn: it ends when the agent replies. Agents that start tests in the
|
|
37
|
+
* background and say they'll "await the completion notification" end the turn right there —
|
|
38
|
+
* nothing ever wakes them, and the work is left half done and uncommitted (field: 2 of 2
|
|
39
|
+
* build turns). Said on every turn, after the user's text.
|
|
40
|
+
*/
|
|
41
|
+
export declare const HEADLESS_NOTE: string;
|
|
35
42
|
/**
|
|
36
43
|
* Where the agy CLI is on this machine: an explicit override, then PATH, then
|
|
37
44
|
* the installer's default location — the daemon may have been started from a
|
|
@@ -36,6 +36,14 @@ import os from "node:os";
|
|
|
36
36
|
import path from "node:path";
|
|
37
37
|
import { AdapterBase, agentEnv, cliAvailable, frameBriefing } from "./base.js";
|
|
38
38
|
import { permissionFor } from "../core/permissions.js";
|
|
39
|
+
/**
|
|
40
|
+
* agy --print is one turn: it ends when the agent replies. Agents that start tests in the
|
|
41
|
+
* background and say they'll "await the completion notification" end the turn right there —
|
|
42
|
+
* nothing ever wakes them, and the work is left half done and uncommitted (field: 2 of 2
|
|
43
|
+
* build turns). Said on every turn, after the user's text.
|
|
44
|
+
*/
|
|
45
|
+
export const HEADLESS_NOTE = "(Loom runs you headless: this turn ends the moment you reply, and nothing will notify or wake you later. " +
|
|
46
|
+
"Run tests, builds and servers in the foreground and wait for them to finish before you answer — don't start them in the background to check on later.)";
|
|
39
47
|
/** agy's own --print-timeout is 5 minutes; a review of a real diff took longer (#246). */
|
|
40
48
|
const DEFAULT_TIMEOUT_MS = 15 * 60_000;
|
|
41
49
|
/** The installer drops the binary here; it isn't always on the daemon's PATH. */
|
|
@@ -123,7 +131,7 @@ export class AntigravityCliAdapter extends AdapterBase {
|
|
|
123
131
|
// `agy --print` has no system channel, so the handoff briefing rides in
|
|
124
132
|
// front of the text as an unmissable authoritative block (see frameBriefing),
|
|
125
133
|
// exactly as the Codex and OpenCode adapters do.
|
|
126
|
-
const text = input.briefing ? `${frameBriefing(input.briefing)}\n\n
|
|
134
|
+
const text = `${input.briefing ? `${frameBriefing(input.briefing)}\n\n` : ""}${input.text}\n\n${HEADLESS_NOTE}`;
|
|
127
135
|
const resume = this.conversationId;
|
|
128
136
|
// Permissions (core/permissions.ts). Bypass is the default and has to be
|
|
129
137
|
// explicit: headless, with no one to answer, any tool agy wants to confirm
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity-cli.js","sourceRoot":"","sources":["../../src/adapters/antigravity-cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"antigravity-cli.js","sourceRoot":"","sources":["../../src/adapters/antigravity-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/base.d.ts
CHANGED
|
@@ -115,9 +115,11 @@ export declare function forgetProbes(key?: string): void;
|
|
|
115
115
|
export declare function cliAvailable(cmd: string, args?: string[], timeoutMs?: number): Promise<boolean>;
|
|
116
116
|
/** Grab an ephemeral free TCP port. */
|
|
117
117
|
export declare function freePort(): Promise<number>;
|
|
118
|
-
export declare function waitFor(probe: () => Promise<boolean>, { timeoutMs, intervalMs }?: {
|
|
119
|
-
timeoutMs?: number
|
|
120
|
-
intervalMs?: number
|
|
118
|
+
export declare function waitFor(probe: () => Promise<boolean>, { timeoutMs, intervalMs, what, gaveUp }?: {
|
|
119
|
+
timeoutMs?: number;
|
|
120
|
+
intervalMs?: number;
|
|
121
|
+
what?: string | (() => string);
|
|
122
|
+
gaveUp?: () => string | null;
|
|
121
123
|
}): Promise<void>;
|
|
122
124
|
export declare function fetchJson<T>(url: string, init?: RequestInit, timeoutMs?: number): Promise<T>;
|
|
123
125
|
export {};
|
package/dist/adapters/base.js
CHANGED
|
@@ -418,14 +418,19 @@ export function freePort() {
|
|
|
418
418
|
srv.on("error", reject);
|
|
419
419
|
});
|
|
420
420
|
}
|
|
421
|
-
export async function waitFor(probe, { timeoutMs = 30_000, intervalMs = 300 } = {}) {
|
|
421
|
+
export async function waitFor(probe, { timeoutMs = 30_000, intervalMs = 300, what, gaveUp } = {}) {
|
|
422
422
|
const deadline = Date.now() + timeoutMs;
|
|
423
423
|
while (Date.now() < deadline) {
|
|
424
424
|
if (await probe().catch(() => false))
|
|
425
425
|
return;
|
|
426
|
+
// the thing being waited on can say it's never coming (a server that exited)
|
|
427
|
+
const why = gaveUp?.();
|
|
428
|
+
if (why)
|
|
429
|
+
throw new Error(why);
|
|
426
430
|
await new Promise((r) => setTimeout(r, intervalMs));
|
|
427
431
|
}
|
|
428
|
-
|
|
432
|
+
const label = typeof what === "function" ? what() : what;
|
|
433
|
+
throw new Error(label ? `timed out after ${Math.round(timeoutMs / 1000)}s waiting for ${label}` : "timed out waiting for condition");
|
|
429
434
|
}
|
|
430
435
|
export async function fetchJson(url, init, timeoutMs = 15_000) {
|
|
431
436
|
const res = await fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenCode adapter — manages an `opencode serve` process per project and
|
|
3
|
-
* speaks its HTTP + SSE API.
|
|
4
|
-
*
|
|
5
|
-
* create session : POST /api/session → { data: { id: "ses…" } }
|
|
6
|
-
* send prompt : POST /api/session/:id/prompt { prompt: { text } }
|
|
7
|
-
* wait for idle : POST /api/session/:id/wait
|
|
8
|
-
* interrupt : POST /api/session/:id/interrupt
|
|
9
|
-
* live events : GET /event (SSE)
|
|
10
|
-
*
|
|
11
|
-
* Surface verified against opencode 1.17.20 — see docs/integration-notes.md.
|
|
12
|
-
*
|
|
13
|
-
* Native continuity (see core/continuity): a continuity turn runs on the
|
|
14
|
-
* session its binding names, or a new one it reports as `turn_started`; a
|
|
15
|
-
* bound session the server no longer has is NativeSessionMissing, before
|
|
16
|
-
* anything is sent. The prompt's admission is the acceptance evidence
|
|
17
|
-
* (`native_turn_accepted`), and the turn is over — and quiescent — when
|
|
18
|
-
* `/api/session/active` no longer lists the session. Verified against
|
|
19
|
-
* opencode 1.18.31 (`/api/session/{id}/model` switches the model in place,
|
|
20
|
-
* `session.next.compaction.*` reports compaction).
|
|
21
|
-
*/
|
|
22
1
|
import type { SendInput } from "../types.js";
|
|
23
2
|
import { AdapterBase, type AgentCheck } from "./base.js";
|
|
24
3
|
/** "providerID/modelID" → ModelRef body for session create ({providerID, id}). */
|
|
@@ -38,6 +17,16 @@ export declare function pickDefaultModel(ids: string[]): string | undefined;
|
|
|
38
17
|
*/
|
|
39
18
|
export declare function opencodePermissionEnv(options: object): Record<string, string>;
|
|
40
19
|
export declare class OpenCodeAdapter extends AdapterBase {
|
|
20
|
+
/**
|
|
21
|
+
* The Authorization header for this agent's opencode server. With OPENCODE_SERVER_PASSWORD
|
|
22
|
+
* in the environment, opencode serve answers 401 to anything without it — Loom's own probes
|
|
23
|
+
* included, so the server never looked ready ("timed out waiting for condition"). A server
|
|
24
|
+
* Loom starts gets a password of its own; one you run (baseUrl) uses yours.
|
|
25
|
+
*/
|
|
26
|
+
private auth;
|
|
27
|
+
private withAuth;
|
|
28
|
+
private http;
|
|
29
|
+
private json;
|
|
41
30
|
private child;
|
|
42
31
|
private baseUrl;
|
|
43
32
|
private sseAbort;
|
|
@@ -87,6 +76,10 @@ export declare class OpenCodeAdapter extends AdapterBase {
|
|
|
87
76
|
selfCheck(): Promise<AgentCheck[]>;
|
|
88
77
|
/** Kill a serve child left behind by a previous daemon (verified by cmdline). */
|
|
89
78
|
private reapOrphanServe;
|
|
79
|
+
private serveErr;
|
|
80
|
+
private serveExit;
|
|
81
|
+
/** The last meaningful line opencode serve wrote to stderr. */
|
|
82
|
+
private lastServeLine;
|
|
90
83
|
private recordServePid;
|
|
91
84
|
start(): Promise<void>;
|
|
92
85
|
private get sessionModel();
|
|
@@ -137,6 +130,10 @@ export declare class OpenCodeAdapter extends AdapterBase {
|
|
|
137
130
|
private sessionActive;
|
|
138
131
|
/** When the current turn was interrupted (the wait gives up 20s later, whatever opencode says). */
|
|
139
132
|
private interruptedAt;
|
|
133
|
+
/** "provider/model" a session runs, when opencode says. */
|
|
134
|
+
private modelOfSession;
|
|
135
|
+
/** Set when this agent's opencode serve died while a turn was waiting on it. */
|
|
136
|
+
private serverGone;
|
|
140
137
|
/** Set when the last wait gave up on a turn opencode never began. */
|
|
141
138
|
private neverStarted;
|
|
142
139
|
/** How long a prompt may sit with nothing in the session before it counts as never started (options.startTimeoutMs, default 3 min). */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
1
2
|
/**
|
|
2
3
|
* OpenCode adapter — manages an `opencode serve` process per project and
|
|
3
4
|
* speaks its HTTP + SSE API.
|
|
@@ -93,6 +94,26 @@ export function opencodePermissionEnv(options) {
|
|
|
93
94
|
};
|
|
94
95
|
}
|
|
95
96
|
export class OpenCodeAdapter extends AdapterBase {
|
|
97
|
+
/**
|
|
98
|
+
* The Authorization header for this agent's opencode server. With OPENCODE_SERVER_PASSWORD
|
|
99
|
+
* in the environment, opencode serve answers 401 to anything without it — Loom's own probes
|
|
100
|
+
* included, so the server never looked ready ("timed out waiting for condition"). A server
|
|
101
|
+
* Loom starts gets a password of its own; one you run (baseUrl) uses yours.
|
|
102
|
+
*/
|
|
103
|
+
auth = null;
|
|
104
|
+
withAuth(init) {
|
|
105
|
+
if (!this.auth)
|
|
106
|
+
return init;
|
|
107
|
+
const headers = new Headers(init?.headers);
|
|
108
|
+
headers.set("authorization", this.auth);
|
|
109
|
+
return { ...init, headers };
|
|
110
|
+
}
|
|
111
|
+
http(url, init) {
|
|
112
|
+
return fetch(url, this.withAuth(init));
|
|
113
|
+
}
|
|
114
|
+
json(url, init, timeoutMs) {
|
|
115
|
+
return fetchJson(url, this.withAuth(init), timeoutMs);
|
|
116
|
+
}
|
|
96
117
|
child = null;
|
|
97
118
|
baseUrl = null;
|
|
98
119
|
sseAbort = null;
|
|
@@ -179,7 +200,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
179
200
|
};
|
|
180
201
|
}
|
|
181
202
|
async messageDetail(sid, mid) {
|
|
182
|
-
const detail = await
|
|
203
|
+
const detail = await this.json(this.api(`/session/${sid}/message/${mid}`)).catch(() => null);
|
|
183
204
|
if (this.modernApi && detail?.info)
|
|
184
205
|
return { ...detail.info, content: detail.parts };
|
|
185
206
|
return detail;
|
|
@@ -263,6 +284,12 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
263
284
|
if (this.nativeState.read().servePid === pid)
|
|
264
285
|
this.nativeState.patch({ servePid: undefined });
|
|
265
286
|
}
|
|
287
|
+
serveErr = "";
|
|
288
|
+
serveExit = null;
|
|
289
|
+
/** The last meaningful line opencode serve wrote to stderr. */
|
|
290
|
+
lastServeLine() {
|
|
291
|
+
return this.serveErr.split("\n").map((l) => l.trim()).filter(Boolean).at(-1)?.slice(0, 300) ?? "";
|
|
292
|
+
}
|
|
266
293
|
recordServePid(pid) {
|
|
267
294
|
this.nativeState.patch({ servePid: pid });
|
|
268
295
|
}
|
|
@@ -271,13 +298,26 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
271
298
|
return;
|
|
272
299
|
if (this.options.baseUrl) {
|
|
273
300
|
this.baseUrl = this.options.baseUrl.replace(/\/$/, "");
|
|
301
|
+
const pw = process.env.OPENCODE_SERVER_PASSWORD;
|
|
302
|
+
this.auth = pw ? `Basic ${Buffer.from(`${process.env.OPENCODE_SERVER_USERNAME || "opencode"}:${pw}`).toString("base64")}` : null;
|
|
274
303
|
}
|
|
275
304
|
else {
|
|
276
305
|
await this.reapOrphanServe();
|
|
277
306
|
const port = await freePort();
|
|
278
307
|
this.baseUrl = `http://127.0.0.1:${port}`;
|
|
279
|
-
|
|
308
|
+
// a password only this adapter knows: whatever OPENCODE_SERVER_PASSWORD says, and so no
|
|
309
|
+
// other process on the machine can drive this agent through its port
|
|
310
|
+
const password = randomBytes(18).toString("base64url");
|
|
311
|
+
this.auth = `Basic ${Buffer.from(`opencode:${password}`).toString("base64")}`;
|
|
312
|
+
const child = spawnContained("opencode", ["serve", "--port", String(port), "--hostname", "127.0.0.1", ...(this.options.extraArgs ?? [])], { cwd: this.projectDir, stdio: ["ignore", "ignore", "pipe"],
|
|
313
|
+
env: { ...agentEnv(), ...opencodePermissionEnv(this.options), OPENCODE_SERVER_USERNAME: "opencode", OPENCODE_SERVER_PASSWORD: password } });
|
|
280
314
|
this.child = child;
|
|
315
|
+
// what it says on stderr, so a server that never comes up can say why
|
|
316
|
+
this.serveErr = "";
|
|
317
|
+
this.serveExit = null;
|
|
318
|
+
child.stderr?.on("data", (d) => { this.serveErr = (this.serveErr + d.toString()).slice(-2000); });
|
|
319
|
+
child.once("exit", (code, signal) => { if (!this.started)
|
|
320
|
+
this.serveExit = `exited (${code ?? signal})`; });
|
|
281
321
|
child.on("error", (error) => this.emit({ kind: "error", payload: { message: `opencode serve could not start: ${error.message}` } }));
|
|
282
322
|
this.recordServePid(child.pid);
|
|
283
323
|
if (process.platform === "win32")
|
|
@@ -286,6 +326,12 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
286
326
|
if (!this.started)
|
|
287
327
|
return;
|
|
288
328
|
this.started = false;
|
|
329
|
+
// a turn waiting on this server would poll a dead port for its full hour, and the
|
|
330
|
+
// agent stay "busy" all that time (field: a serve killed mid-start) — end it now
|
|
331
|
+
if (this._busy) {
|
|
332
|
+
this.serverGone = `opencode serve ${code !== null ? `exited (${code})` : `was stopped (${signal ?? "killed"})`} mid-turn`;
|
|
333
|
+
return; // the turn reports it, once
|
|
334
|
+
}
|
|
289
335
|
// Killed by a signal with no turn running is the daemon shutting down
|
|
290
336
|
// (or restarting) around it — not a failure, and not worth a red card
|
|
291
337
|
// in the thread. The next send starts a fresh server either way.
|
|
@@ -298,15 +344,19 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
298
344
|
}
|
|
299
345
|
await waitFor(async () => {
|
|
300
346
|
try {
|
|
301
|
-
await
|
|
347
|
+
await this.json(`${this.baseUrl}/api/health`);
|
|
302
348
|
this.modernApi = false;
|
|
303
349
|
}
|
|
304
350
|
catch {
|
|
305
|
-
await
|
|
351
|
+
await this.json(`${this.baseUrl}/global/health`);
|
|
306
352
|
this.modernApi = true;
|
|
307
353
|
}
|
|
308
354
|
return true;
|
|
309
|
-
}, {
|
|
355
|
+
}, {
|
|
356
|
+
timeoutMs: process.platform === "win32" ? 60_000 : 30_000,
|
|
357
|
+
what: () => `opencode serve to answer on ${this.baseUrl}${this.serveErr ? ` — it said: ${this.lastServeLine()}` : ""}; check that \`opencode serve\` runs in this folder and that you're signed in (\`opencode auth login\`)`,
|
|
358
|
+
gaveUp: () => (this.serveExit ? `opencode serve ${this.serveExit} before it was ready${this.serveErr ? `: ${this.lastServeLine()}` : ""} — try \`opencode serve\` in this folder to see why` : null),
|
|
359
|
+
});
|
|
310
360
|
await this.assertModelAvailable();
|
|
311
361
|
// No session yet: an ordinary turn makes (or reuses) the agent's own when it
|
|
312
362
|
// sends, and a continuity turn runs on its binding's. Creating one here left
|
|
@@ -331,7 +381,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
331
381
|
* server can actually run — and fail loudly with suggestions instead.
|
|
332
382
|
*/
|
|
333
383
|
async assertModelAvailable() {
|
|
334
|
-
const res = await
|
|
384
|
+
const res = await this.json(this.modernApi ? `${this.baseUrl}/provider` : `${this.baseUrl}/api/model`).catch(() => null);
|
|
335
385
|
const connected = Array.isArray(res?.connected) ? res.connected : [];
|
|
336
386
|
const models = this.modernApi && Array.isArray(res?.all)
|
|
337
387
|
? res.all.filter(p => connected.includes(String(p.id))).flatMap(p => Object.keys((p.models ?? {})).map(id => ({ providerID: p.id, id })))
|
|
@@ -362,7 +412,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
362
412
|
const modelChanged = (this.options.model ?? undefined) !== this.sessionModel;
|
|
363
413
|
if (existing && !modelChanged) {
|
|
364
414
|
try {
|
|
365
|
-
await
|
|
415
|
+
await this.json(this.api(`/session/${existing}`));
|
|
366
416
|
return existing;
|
|
367
417
|
}
|
|
368
418
|
catch {
|
|
@@ -377,7 +427,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
377
427
|
}
|
|
378
428
|
if (this.options.agent)
|
|
379
429
|
body.agent = this.options.agent;
|
|
380
|
-
const res = await
|
|
430
|
+
const res = await this.json(this.api("/session"), {
|
|
381
431
|
method: "POST",
|
|
382
432
|
headers: { "content-type": "application/json" },
|
|
383
433
|
body: JSON.stringify(body),
|
|
@@ -396,7 +446,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
396
446
|
void (async () => {
|
|
397
447
|
while (!abort.signal.aborted) {
|
|
398
448
|
try {
|
|
399
|
-
const res = await
|
|
449
|
+
const res = await this.http(`${this.baseUrl}/event`, {
|
|
400
450
|
signal: abort.signal,
|
|
401
451
|
headers: { accept: "text/event-stream" },
|
|
402
452
|
});
|
|
@@ -659,7 +709,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
659
709
|
];
|
|
660
710
|
let last = "";
|
|
661
711
|
for (const url of routes) {
|
|
662
|
-
const res = await
|
|
712
|
+
const res = await this.http(url, { method: "POST", headers: { "content-type": "application/json" },
|
|
663
713
|
body: JSON.stringify(dismiss ? {} : { answers: picks }), signal: AbortSignal.timeout(15_000) }).catch((e) => ({ ok: false, status: 0, text: async () => e.message }));
|
|
664
714
|
if (res.ok) {
|
|
665
715
|
this.questions.delete(requestId);
|
|
@@ -692,7 +742,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
692
742
|
const reply = decision.behavior !== "allow" ? "reject" : decision.scope === "session" ? "always" : "once";
|
|
693
743
|
const body = JSON.stringify({ reply, ...(decision.message ? { message: decision.message } : {}) });
|
|
694
744
|
for (const url of this.modernApi ? [`${this.baseUrl}/permission/${encodeURIComponent(id)}/reply`] : [`${this.baseUrl}/api/session/${encodeURIComponent(sid)}/permission/${encodeURIComponent(id)}/reply`, `${this.baseUrl}/permission/${encodeURIComponent(id)}/reply`]) {
|
|
695
|
-
const res = await
|
|
745
|
+
const res = await this.http(url, { method: "POST", headers: { "content-type": "application/json" }, body, signal: AbortSignal.timeout(15_000) }).catch(() => null);
|
|
696
746
|
if (res?.ok)
|
|
697
747
|
return;
|
|
698
748
|
if (res && res.status !== 404)
|
|
@@ -753,7 +803,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
753
803
|
}
|
|
754
804
|
/** All messages in the session, oldest first (info objects). */
|
|
755
805
|
async listMessages(sid) {
|
|
756
|
-
const res = await
|
|
806
|
+
const res = await this.json(this.api(`/session/${sid}/message`));
|
|
757
807
|
const data = (res.data ?? res);
|
|
758
808
|
const items = Array.isArray(data) ? data : [];
|
|
759
809
|
return items
|
|
@@ -770,7 +820,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
770
820
|
*/
|
|
771
821
|
/** Is opencode still running this session? Null when this opencode can't say (older builds). */
|
|
772
822
|
async sessionActive(sid) {
|
|
773
|
-
const res = await
|
|
823
|
+
const res = await this.json(this.modernApi ? this.api("/session/status") : this.api("/session/active")).catch(() => null);
|
|
774
824
|
const active = res ? (res.data ?? res) : null;
|
|
775
825
|
if (!active || typeof active !== "object" || Array.isArray(active))
|
|
776
826
|
return null;
|
|
@@ -783,6 +833,14 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
783
833
|
}
|
|
784
834
|
/** When the current turn was interrupted (the wait gives up 20s later, whatever opencode says). */
|
|
785
835
|
interruptedAt = null;
|
|
836
|
+
/** "provider/model" a session runs, when opencode says. */
|
|
837
|
+
async modelOfSession(sid) {
|
|
838
|
+
const s = await this.json(this.api(`/session/${encodeURIComponent(sid)}`)).catch(() => null);
|
|
839
|
+
const m = (s?.model ?? null);
|
|
840
|
+
return m && typeof m.id === "string" ? `${typeof m.providerID === "string" ? `${m.providerID}/` : ""}${m.id}` : null;
|
|
841
|
+
}
|
|
842
|
+
/** Set when this agent's opencode serve died while a turn was waiting on it. */
|
|
843
|
+
serverGone = null;
|
|
786
844
|
/** Set when the last wait gave up on a turn opencode never began. */
|
|
787
845
|
neverStarted = false;
|
|
788
846
|
/** How long a prompt may sit with nothing in the session before it counts as never started (options.startTimeoutMs, default 3 min). */
|
|
@@ -793,15 +851,21 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
793
851
|
async waitForTurn(sid, baseline, timeoutMs) {
|
|
794
852
|
try {
|
|
795
853
|
if (!this.modernApi)
|
|
796
|
-
await
|
|
854
|
+
await this.json(`${this.baseUrl}/api/session/${sid}/wait`, { method: "POST", headers: { "content-type": "application/json" }, body: "{}" }, timeoutMs);
|
|
797
855
|
}
|
|
798
856
|
catch {
|
|
799
857
|
// 503 "not available yet" on 1.17 — fall through to polling.
|
|
800
858
|
}
|
|
801
859
|
const deadline = Date.now() + timeoutMs;
|
|
802
860
|
const startBy = Date.now() + this.startTimeoutMs();
|
|
861
|
+
// opencode stores the prompt the moment it takes it: nothing at all in the session this long
|
|
862
|
+
// after an accepted prompt means it never will — even while it reports the session "busy"
|
|
863
|
+
// (a model its session engine can't run left one busy forever: big-pickle on 1.18, field).
|
|
864
|
+
const takenBy = Date.now() + Math.min(45_000, this.startTimeoutMs());
|
|
803
865
|
let stableId = null;
|
|
804
866
|
while (Date.now() < deadline) {
|
|
867
|
+
if (this.serverGone)
|
|
868
|
+
return null;
|
|
805
869
|
// Interrupted: done as soon as opencode stops running it, answer or not
|
|
806
870
|
// (one that never answered would otherwise be waited on for the hour) —
|
|
807
871
|
// and at most 20s after the interrupt, even if opencode still calls it
|
|
@@ -814,6 +878,10 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
814
878
|
return last ?? null;
|
|
815
879
|
}
|
|
816
880
|
const messages = await this.listMessages(sid).catch(() => []);
|
|
881
|
+
if (Date.now() > takenBy && !messages.some((m) => !baseline.has(String(m.id)))) {
|
|
882
|
+
this.neverStarted = true;
|
|
883
|
+
return null;
|
|
884
|
+
}
|
|
817
885
|
// accepted but never begun: not even our own message reached the session, and opencode isn't working on it —
|
|
818
886
|
// don't wait the hour out (a review sat 30 minutes on one, #291)
|
|
819
887
|
if (Date.now() > startBy && !messages.some((m) => !baseline.has(String(m.id))) && (await this.sessionActive(sid)) !== true) {
|
|
@@ -876,7 +944,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
876
944
|
// the prompt — framed as an unmissable authoritative block (frameBriefing)
|
|
877
945
|
// rather than a loose preamble.
|
|
878
946
|
const text = input.briefing ? `${frameBriefing(input.briefing)}\n\n${input.text}` : input.text;
|
|
879
|
-
const admission = await
|
|
947
|
+
const admission = await this.http(this.api(`/session/${sid}/${this.modernApi ? "prompt_async" : "prompt"}`), {
|
|
880
948
|
method: "POST",
|
|
881
949
|
headers: { "content-type": "application/json" },
|
|
882
950
|
body: JSON.stringify(this.promptBody(text)),
|
|
@@ -886,12 +954,25 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
886
954
|
throw new Error(`opencode prompt failed (${admission.status}): ${(await admission.text()).slice(0, 500)}`);
|
|
887
955
|
await admission.arrayBuffer();
|
|
888
956
|
this.neverStarted = false;
|
|
957
|
+
this.serverGone = null;
|
|
889
958
|
const turn = await this.waitForTurn(sid, baseline, timeoutMs);
|
|
890
|
-
if (!turn && this.
|
|
959
|
+
if (!turn && this.serverGone) {
|
|
960
|
+
this.emit({ kind: "error", payload: { message: `${this.serverGone} — the next send starts it again` } });
|
|
961
|
+
}
|
|
962
|
+
else if (!turn && this.interrupted) {
|
|
891
963
|
this.emit({ kind: "status", payload: { state: "interrupted" } });
|
|
892
964
|
}
|
|
893
965
|
else if (!turn && this.neverStarted) {
|
|
894
|
-
|
|
966
|
+
// the session itself may be what's broken (bound to a model opencode can't run now):
|
|
967
|
+
// once, carry on in a fresh session, which takes opencode's current default model
|
|
968
|
+
const model = await this.modelOfSession(sid);
|
|
969
|
+
if (attempt === 0) {
|
|
970
|
+
this.sessionId = undefined;
|
|
971
|
+
this.emit({ kind: "status", payload: { state: "session_reset", reason: `opencode never took the prompt in its session${model ? ` (model ${model})` : ""}; carrying on in a fresh session` } });
|
|
972
|
+
continue;
|
|
973
|
+
}
|
|
974
|
+
this.emit({ kind: "error", payload: { message: `opencode accepted the prompt but never started the turn${model ? ` — its session runs ${model}, which may not work with this opencode` : " — its model may be unavailable"}; ` +
|
|
975
|
+
"pick another model (loom agents, or opencode's own config) and try again. opencode's log (~/.local/share/opencode/log/opencode.log) says why" } });
|
|
895
976
|
}
|
|
896
977
|
else if (!turn) {
|
|
897
978
|
this.emit({ kind: "error", payload: { message: "turn timed out waiting for opencode" } });
|
|
@@ -995,7 +1076,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
995
1076
|
const text = [c.context, input.briefing, input.text].filter(Boolean).join("\n\n");
|
|
996
1077
|
let res;
|
|
997
1078
|
try {
|
|
998
|
-
res = await
|
|
1079
|
+
res = await this.http(this.api(`/session/${encodeURIComponent(sid)}/${this.modernApi ? "prompt_async" : "prompt"}`), {
|
|
999
1080
|
method: "POST",
|
|
1000
1081
|
headers: { "content-type": "application/json" },
|
|
1001
1082
|
body: JSON.stringify(this.modernApi ? { ...this.promptBody(text), ...(input.model ? { model: { providerID: parseModelRef(input.model)?.providerID, modelID: parseModelRef(input.model)?.id } } : {}) } : { prompt: promptWithFiles(text, this.projectDir) }),
|
|
@@ -1071,7 +1152,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
1071
1152
|
let res;
|
|
1072
1153
|
for (let attempt = 0;; attempt++) {
|
|
1073
1154
|
try {
|
|
1074
|
-
res = await
|
|
1155
|
+
res = await this.http(this.api(`/session/${encodeURIComponent(bound)}`), { signal: AbortSignal.timeout(15_000) });
|
|
1075
1156
|
break;
|
|
1076
1157
|
}
|
|
1077
1158
|
catch (err) {
|
|
@@ -1091,7 +1172,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
1091
1172
|
// A model change keeps the session, as it does for the other harnesses.
|
|
1092
1173
|
if (!this.modernApi && ref && (cur.providerID !== ref.providerID || cur.id !== ref.id)) {
|
|
1093
1174
|
try {
|
|
1094
|
-
await
|
|
1175
|
+
await this.json(`${this.baseUrl}/api/session/${encodeURIComponent(bound)}/model`, {
|
|
1095
1176
|
method: "POST",
|
|
1096
1177
|
headers: { "content-type": "application/json" },
|
|
1097
1178
|
body: JSON.stringify({ model: ref }),
|
|
@@ -1109,7 +1190,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
1109
1190
|
if (this.options.agent)
|
|
1110
1191
|
body.agent = this.options.agent;
|
|
1111
1192
|
try {
|
|
1112
|
-
const created = await
|
|
1193
|
+
const created = await this.json(this.api("/session"), {
|
|
1113
1194
|
method: "POST",
|
|
1114
1195
|
headers: { "content-type": "application/json" },
|
|
1115
1196
|
body: JSON.stringify(this.modernApi ? {} : body),
|
|
@@ -1199,7 +1280,7 @@ export class OpenCodeAdapter extends AdapterBase {
|
|
|
1199
1280
|
if (!sid || !this.baseUrl)
|
|
1200
1281
|
return;
|
|
1201
1282
|
try {
|
|
1202
|
-
await
|
|
1283
|
+
await this.json(this.api(`/session/${sid}/${this.modernApi ? "abort" : "interrupt"}`), {
|
|
1203
1284
|
method: "POST",
|
|
1204
1285
|
headers: { "content-type": "application/json" },
|
|
1205
1286
|
body: "{}",
|