@ai-sdk/harness-opencode 1.0.136 → 1.0.137
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 +12 -0
- package/dist/bridge/index.mjs +54 -10
- package/dist/bridge/index.mjs.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -7
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/bridge/index.ts +66 -12
- package/src/opencode-harness.ts +41 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ai-sdk/harness-opencode
|
|
2
2
|
|
|
3
|
+
## 1.0.137
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 82b6142: fix(harness-opencode): stop aborted OpenCode turns before starting the next turn
|
|
8
|
+
- Updated dependencies [8c65988]
|
|
9
|
+
- Updated dependencies [8182916]
|
|
10
|
+
- Updated dependencies [527a163]
|
|
11
|
+
- @ai-sdk/provider@4.0.21
|
|
12
|
+
- @ai-sdk/provider-utils@5.0.53
|
|
13
|
+
- @ai-sdk/harness@1.0.135
|
|
14
|
+
|
|
3
15
|
## 1.0.136
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/bridge/index.mjs
CHANGED
|
@@ -1988,6 +1988,9 @@ async function legacySessionPrompt({ client, sessionId, start, prompt: promptTex
|
|
|
1988
1988
|
}]
|
|
1989
1989
|
});
|
|
1990
1990
|
}
|
|
1991
|
+
async function legacySessionAbort({ client, sessionId }) {
|
|
1992
|
+
return client.session.abort({ sessionID: sessionId });
|
|
1993
|
+
}
|
|
1991
1994
|
async function legacySessionSummarize({ client, sessionId, model }) {
|
|
1992
1995
|
return client.session.summarize({
|
|
1993
1996
|
sessionID: sessionId,
|
|
@@ -2062,6 +2065,24 @@ async function ensureSession({ client, start, emit }) {
|
|
|
2062
2065
|
async function runPrompt({ client, sessionId, start, turn, emit }) {
|
|
2063
2066
|
const eventsAbort = new AbortController();
|
|
2064
2067
|
const turnSettled = createDeferred();
|
|
2068
|
+
const promptRequestSettled = createDeferred();
|
|
2069
|
+
let abortSessionPromise;
|
|
2070
|
+
const abortSession = () => {
|
|
2071
|
+
eventsAbort.abort();
|
|
2072
|
+
turn.experimental_userMessages.close();
|
|
2073
|
+
turnSettled.resolve("aborted");
|
|
2074
|
+
abortSessionPromise ??= (async () => {
|
|
2075
|
+
await promptRequestSettled.promise;
|
|
2076
|
+
const aborted = await legacySessionAbort({
|
|
2077
|
+
client,
|
|
2078
|
+
sessionId
|
|
2079
|
+
});
|
|
2080
|
+
if (aborted.error) throw new Error(`OpenCode session abort failed: ${formatError(aborted.error)}`);
|
|
2081
|
+
})();
|
|
2082
|
+
abortSessionPromise.catch(() => {});
|
|
2083
|
+
};
|
|
2084
|
+
turn.abortSignal.addEventListener("abort", abortSession, { once: true });
|
|
2085
|
+
if (turn.abortSignal.aborted) abortSession();
|
|
2065
2086
|
let sawContent = false;
|
|
2066
2087
|
let sawFinishStep = false;
|
|
2067
2088
|
let sawBusy = false;
|
|
@@ -2190,20 +2211,43 @@ async function runPrompt({ client, sessionId, start, turn, emit }) {
|
|
|
2190
2211
|
}
|
|
2191
2212
|
}
|
|
2192
2213
|
})();
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2214
|
+
if (!turn.abortSignal.aborted) {
|
|
2215
|
+
let prompted;
|
|
2216
|
+
try {
|
|
2217
|
+
prompted = await legacySessionPrompt({
|
|
2218
|
+
client,
|
|
2219
|
+
sessionId,
|
|
2220
|
+
start
|
|
2221
|
+
});
|
|
2222
|
+
} catch (error) {
|
|
2223
|
+
promptRequestSettled.resolve(void 0);
|
|
2224
|
+
turn.abortSignal.removeEventListener("abort", abortSession);
|
|
2225
|
+
eventsAbort.abort();
|
|
2226
|
+
turn.experimental_userMessages.close(error);
|
|
2227
|
+
throw error;
|
|
2228
|
+
}
|
|
2229
|
+
promptRequestSettled.resolve(void 0);
|
|
2230
|
+
if (prompted.error) {
|
|
2231
|
+
turn.abortSignal.removeEventListener("abort", abortSession);
|
|
2232
|
+
eventsAbort.abort();
|
|
2233
|
+
turn.experimental_userMessages.close(/* @__PURE__ */ new Error(`OpenCode prompt failed: ${formatError(prompted.error)}`));
|
|
2234
|
+
throw new Error(`OpenCode prompt failed: ${formatError(prompted.error)}`);
|
|
2235
|
+
}
|
|
2236
|
+
} else promptRequestSettled.resolve(void 0);
|
|
2203
2237
|
const settlement = await turnSettled.promise;
|
|
2238
|
+
turn.abortSignal.removeEventListener("abort", abortSession);
|
|
2204
2239
|
eventsAbort.abort();
|
|
2205
2240
|
await eventLoop.catch(() => {});
|
|
2206
2241
|
await userMessageLoop.catch(() => {});
|
|
2242
|
+
if (settlement === "aborted") {
|
|
2243
|
+
try {
|
|
2244
|
+
await abortSessionPromise;
|
|
2245
|
+
} catch (error) {
|
|
2246
|
+
closeRuntime();
|
|
2247
|
+
throw error;
|
|
2248
|
+
}
|
|
2249
|
+
return;
|
|
2250
|
+
}
|
|
2207
2251
|
if (settlement === "stream-ended") throw new Error("OpenCode event stream ended before the turn settled.");
|
|
2208
2252
|
if (terminalError) throw new Error(terminalError);
|
|
2209
2253
|
if (!sawFinishStep) {
|