@ai-sdk/harness-opencode 1.0.136 → 1.0.139

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["SandboxSession"],"sources":["../src/opencode-auth.ts","../src/opencode-harness.ts","../src/version.ts","../src/index.ts"],"mappings":";;;;;KAmMY,6BAA6B;;;KCxG7B;WACD,OAAO;;;;;;WAMP,uBAAuB;;;;;;WAMvB,iBAAiB;;;;;WAKjB,aAAa;WACb;;;;;;WAMA;WACA;;;;;WAKA,eAAe;WACf;;;;;;;WAOA,YAAY;;;;;WAKZ,kBAAkB;;cAKvB;;;;;;;;;;;;;QAsyCi6a;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;UAA4K;;;;;;UAAgJ;;;;;;;;;;;;QAAhJ;;;;;;QAAgJ;;;;;;;;;;;;QAArjB;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;QAA4K;;;;;;QAAgJ;;;;;;;;;;;;;;;;;;UAArjB;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;UAA4K;;;;;;UAAgJ;;;;;;;;;;;;QAAhJ;;;;;;QAAgJ;;;;;;;;;;;;;;;;;;;UAArjB;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA7qChpb,eACd,WAAU,0BACT,iBAAiB;;;qBCrQP;;;;;;;qBCIA,oCAAQ;;;;;;;;;;;;;QAOs21D;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;UAA4K;;;;;;UAAgJ;;;;;;;;;;;;QAAhJ;;;;;;QAAgJ;;;;;;;;;;;;QAArjB;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;QAA4K;;;;;;QAAgJ;;;;;;;;;;;;;;;;;;UAArjB;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;UAA4K;;;;;;UAAgJ;;;;;;;;;;;;QAAhJ;;;;;;QAAgJ;;;;;;;;;;;;;;;;;;;UAArjB;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C"}
1
+ {"version":3,"file":"index.d.ts","names":["SandboxSession"],"sources":["../src/opencode-auth.ts","../src/opencode-harness.ts","../src/version.ts","../src/index.ts"],"mappings":";;;;;KAmMY,6BAA6B;;;KCxG7B;WACD,OAAO;;;;;;WAMP,uBAAuB;;;;;;WAMvB,iBAAiB;;;;;WAKjB,aAAa;WACb;;;;;;WAMA;WACA;;;;;WAKA,eAAe;WACf;;;;;;;WAOA,YAAY;;;;;WAKZ,kBAAkB;;cAKvB;;;;;;;;;;;;;QAu0Ci9Y;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;UAA4K;;;;;;UAAgJ;;;;;;;;;;;;QAAhJ;;;;;;QAAgJ;;;;;;;;;;;;QAArjB;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;QAA4K;;;;;;QAAgJ;;;;;;;;;;;;;;;;;;UAArjB;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;UAA4K;;;;;;UAAgJ;;;;;;;;;;;;QAAhJ;;;;;;QAAgJ;;;;;;;;;;;;;;;;;;;UAArjB;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA9sChsZ,eACd,WAAU,0BACT,iBAAiB;;;qBCrQP;;;;;;;qBCIA,oCAAQ;;;;;;;;;;;;;QAOs21D;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;UAA4K;;;;;;UAAgJ;;;;;;;;;;;;QAAhJ;;;;;;QAAgJ;;;;;;;;;;;;QAArjB;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;QAA4K;;;;;;QAAgJ;;;;;;;;;;;;;;;;;;UAArjB;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;QAAzP;QAAoC;;;UAAmE;UAAsC;;QAAiE;QAA2C;;;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;;;;;UAAzP;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C;;;;;;;;;UAA4K;;;;;;UAAgJ;;;;;;;;;;;;QAAhJ;;;;;;QAAgJ;;;;;;;;;;;;;;;;;;;UAArjB;UAAoC;;;YAAmE;YAAsC;;UAAiE;UAA2C"}
package/dist/index.js CHANGED
@@ -713,7 +713,7 @@ const startMessageSchema = harnessV1BridgeStartBaseSchema.extend({
713
713
  z.discriminatedUnion("type", [startMessageSchema, ...harnessV1BridgeInboundCommandSchemas]);
714
714
  //#endregion
715
715
  //#region src/version.ts
716
- const VERSION = "1.0.136";
716
+ const VERSION = "1.0.139";
717
717
  //#endregion
718
718
  //#region src/opencode-harness.ts
719
719
  /**
@@ -1241,12 +1241,17 @@ function createSession({ sessionId, channel, proc, provider, reasoningVariant, o
1241
1241
  let pendingResumeSessionId = seedResumeSessionOnFirstPrompt ? openCodeSessionId : void 0;
1242
1242
  let selectedModel;
1243
1243
  let activeTurn = false;
1244
+ let pendingTurnDrain = Promise.resolve();
1244
1245
  const pendingCompactionParts = [];
1245
1246
  channel.on("bridge-thread", (msg) => {
1246
1247
  latestOpenCodeSessionId = msg.threadId;
1247
1248
  });
1248
1249
  const wireTurn = (turnOpts) => {
1249
1250
  activeTurn = true;
1251
+ let resolveTurnDrain;
1252
+ pendingTurnDrain = new Promise((resolve) => {
1253
+ resolveTurnDrain = resolve;
1254
+ });
1250
1255
  let pendingResolve;
1251
1256
  let pendingReject;
1252
1257
  const done = new Promise((resolve, reject) => {
@@ -1259,7 +1264,11 @@ function createSession({ sessionId, channel, proc, provider, reasoningVariant, o
1259
1264
  onReconnect: (listener) => channel.onReconnect(listener)
1260
1265
  }) : void 0;
1261
1266
  const unsubs = [];
1267
+ let isSettled = false;
1268
+ let isFinished = false;
1269
+ let drainingAfterAbort = false;
1262
1270
  const forward = (event) => {
1271
+ if (isSettled) return;
1263
1272
  try {
1264
1273
  turnOpts.emit(event);
1265
1274
  } catch {}
@@ -1280,35 +1289,49 @@ function createSession({ sessionId, channel, proc, provider, reasoningVariant, o
1280
1289
  "compaction",
1281
1290
  "raw"
1282
1291
  ];
1283
- let isSettled = false;
1292
+ const finishTurn = () => {
1293
+ if (isFinished) return;
1294
+ isFinished = true;
1295
+ activeTurn = false;
1296
+ if (turnOpts.abortSignal) turnOpts.abortSignal.removeEventListener("abort", onAbort);
1297
+ for (const u of unsubs) u();
1298
+ resolveTurnDrain();
1299
+ };
1284
1300
  const settleSuccess = () => {
1285
1301
  if (isSettled) return;
1286
1302
  isSettled = true;
1287
- activeTurn = false;
1288
1303
  userMessageSubmitter?.close();
1289
- for (const u of unsubs) u();
1290
1304
  pendingResolve();
1305
+ finishTurn();
1291
1306
  };
1292
1307
  const settleError = (err) => {
1293
1308
  if (isSettled) return;
1294
1309
  isSettled = true;
1295
- activeTurn = false;
1296
1310
  userMessageSubmitter?.close(err);
1297
- for (const u of unsubs) u();
1298
1311
  pendingReject(err);
1312
+ finishTurn();
1299
1313
  };
1300
1314
  for (const type of eventTypes) unsubs.push(channel.on(type, (msg) => {
1301
1315
  forward(msg);
1302
1316
  }));
1303
1317
  unsubs.push(channel.on("finish", (msg) => {
1318
+ if (drainingAfterAbort) {
1319
+ finishTurn();
1320
+ return;
1321
+ }
1304
1322
  forward(msg);
1305
1323
  settleSuccess();
1306
1324
  }));
1307
1325
  unsubs.push(channel.on("error", (msg) => {
1326
+ if (drainingAfterAbort) return;
1308
1327
  forward(msg);
1309
1328
  settleError(msg.error);
1310
1329
  }));
1311
1330
  const onClose = (_code, reason) => {
1331
+ if (drainingAfterAbort) {
1332
+ finishTurn();
1333
+ return;
1334
+ }
1312
1335
  if (isSettled) return;
1313
1336
  if (reason === "suspended") {
1314
1337
  settleSuccess();
@@ -1322,7 +1345,11 @@ function createSession({ sessionId, channel, proc, provider, reasoningVariant, o
1322
1345
  try {
1323
1346
  channel.send({ type: "abort" });
1324
1347
  } catch {}
1325
- settleError(turnOpts.abortSignal?.reason ?? new DOMException("Aborted", "AbortError"));
1348
+ const error = turnOpts.abortSignal?.reason ?? new DOMException("Aborted", "AbortError");
1349
+ isSettled = true;
1350
+ drainingAfterAbort = true;
1351
+ userMessageSubmitter?.close(error);
1352
+ pendingReject(error);
1326
1353
  };
1327
1354
  if (turnOpts.abortSignal) {
1328
1355
  if (turnOpts.abortSignal.aborted) onAbort();
@@ -1366,6 +1393,7 @@ function createSession({ sessionId, channel, proc, provider, reasoningVariant, o
1366
1393
  ...debug ? { debug } : {}
1367
1394
  });
1368
1395
  const prepareTurn = async (opts) => {
1396
+ await pendingTurnDrain;
1369
1397
  if (opts.responseFormat?.type === "json" && opts.responseFormat.schema == null) throw new HarnessCapabilityUnsupportedError({
1370
1398
  message: "Harness 'opencode' requires a JSON schema for structured output.",
1371
1399
  harnessId: "opencode"