pullfrog 0.1.39 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -13775,7 +13775,7 @@ var require_fetch = __commonJS({
13775
13775
  }
13776
13776
  if (fetchParams.processResponseConsumeBody != null) {
13777
13777
  const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes);
13778
- const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure);
13778
+ const processBodyError = (failure2) => fetchParams.processResponseConsumeBody(response, failure2);
13779
13779
  if (response.body == null) {
13780
13780
  queueMicrotask(() => processBody(null));
13781
13781
  } else {
@@ -28236,7 +28236,7 @@ var require_cross_spawn = __commonJS({
28236
28236
  enoent.hookChildProcess(spawned, parsed2);
28237
28237
  return spawned;
28238
28238
  }
28239
- function spawnSync6(command, args2, options) {
28239
+ function spawnSync7(command, args2, options) {
28240
28240
  const parsed2 = parse5(command, args2, options);
28241
28241
  const result = cp.spawnSync(parsed2.command, parsed2.args, parsed2.options);
28242
28242
  result.error = result.error || enoent.verifyENOENTSync(result.status, parsed2);
@@ -28244,7 +28244,7 @@ var require_cross_spawn = __commonJS({
28244
28244
  }
28245
28245
  module.exports = spawn6;
28246
28246
  module.exports.spawn = spawn6;
28247
- module.exports.sync = spawnSync6;
28247
+ module.exports.sync = spawnSync7;
28248
28248
  module.exports._parse = parse5;
28249
28249
  module.exports._enoent = enoent;
28250
28250
  }
@@ -76778,26 +76778,26 @@ var require_uri_templates = __commonJS({
76778
76778
  }
76779
76779
  });
76780
76780
 
76781
- // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/arktype-C-GObzDh.js
76781
+ // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/arktype-C-GObzDh.js
76782
76782
  var arktype_C_GObzDh_exports = {};
76783
76783
  __export(arktype_C_GObzDh_exports, {
76784
76784
  getToJsonSchemaFn: () => getToJsonSchemaFn
76785
76785
  });
76786
76786
  var getToJsonSchemaFn;
76787
76787
  var init_arktype_C_GObzDh = __esm({
76788
- "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/arktype-C-GObzDh.js"() {
76788
+ "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/arktype-C-GObzDh.js"() {
76789
76789
  getToJsonSchemaFn = async () => (schema2) => schema2.toJsonSchema();
76790
76790
  }
76791
76791
  });
76792
76792
 
76793
- // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/effect-Df2gY8Wx.js
76793
+ // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/effect-Df2gY8Wx.js
76794
76794
  var effect_Df2gY8Wx_exports = {};
76795
76795
  __export(effect_Df2gY8Wx_exports, {
76796
76796
  getToJsonSchemaFn: () => getToJsonSchemaFn2
76797
76797
  });
76798
76798
  var getToJsonSchemaFn2;
76799
76799
  var init_effect_Df2gY8Wx = __esm({
76800
- "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/effect-Df2gY8Wx.js"() {
76800
+ "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/effect-Df2gY8Wx.js"() {
76801
76801
  init_index_DoHiaFQM();
76802
76802
  getToJsonSchemaFn2 = async () => {
76803
76803
  const { JSONSchema } = await tryImport(import("effect"), "effect");
@@ -76806,14 +76806,14 @@ var init_effect_Df2gY8Wx = __esm({
76806
76806
  }
76807
76807
  });
76808
76808
 
76809
- // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/sury-BoOvxlMw.js
76809
+ // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/sury-BoOvxlMw.js
76810
76810
  var sury_BoOvxlMw_exports = {};
76811
76811
  __export(sury_BoOvxlMw_exports, {
76812
76812
  getToJsonSchemaFn: () => getToJsonSchemaFn3
76813
76813
  });
76814
76814
  var getToJsonSchemaFn3;
76815
76815
  var init_sury_BoOvxlMw = __esm({
76816
- "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/sury-BoOvxlMw.js"() {
76816
+ "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/sury-BoOvxlMw.js"() {
76817
76817
  init_index_DoHiaFQM();
76818
76818
  getToJsonSchemaFn3 = async () => {
76819
76819
  const { toJSONSchema: toJSONSchema2 } = await tryImport(import("sury"), "sury");
@@ -76822,14 +76822,14 @@ var init_sury_BoOvxlMw = __esm({
76822
76822
  }
76823
76823
  });
76824
76824
 
76825
- // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/valibot-_ibN3zSD.js
76825
+ // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/valibot-_ibN3zSD.js
76826
76826
  var valibot_ibN3zSD_exports = {};
76827
76827
  __export(valibot_ibN3zSD_exports, {
76828
76828
  getToJsonSchemaFn: () => getToJsonSchemaFn4
76829
76829
  });
76830
76830
  var getToJsonSchemaFn4;
76831
76831
  var init_valibot_ibN3zSD = __esm({
76832
- "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/valibot-_ibN3zSD.js"() {
76832
+ "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/valibot-_ibN3zSD.js"() {
76833
76833
  init_index_DoHiaFQM();
76834
76834
  getToJsonSchemaFn4 = async () => {
76835
76835
  const { toJsonSchema: toJsonSchema2 } = await tryImport(import("@valibot/to-json-schema"), "@valibot/to-json-schema");
@@ -76838,14 +76838,14 @@ var init_valibot_ibN3zSD = __esm({
76838
76838
  }
76839
76839
  });
76840
76840
 
76841
- // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/zod-DjyNjMBF.js
76841
+ // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/zod-DjyNjMBF.js
76842
76842
  var zod_DjyNjMBF_exports = {};
76843
76843
  __export(zod_DjyNjMBF_exports, {
76844
76844
  getToJsonSchemaFn: () => getToJsonSchemaFn5
76845
76845
  });
76846
76846
  var getToJsonSchemaFn5;
76847
76847
  var init_zod_DjyNjMBF = __esm({
76848
- "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/zod-DjyNjMBF.js"() {
76848
+ "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/zod-DjyNjMBF.js"() {
76849
76849
  init_index_DoHiaFQM();
76850
76850
  getToJsonSchemaFn5 = async () => {
76851
76851
  let zodV4toJSONSchema = (_schema) => {
@@ -76878,10 +76878,10 @@ var init_zod_DjyNjMBF = __esm({
76878
76878
  }
76879
76879
  });
76880
76880
 
76881
- // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/index-DoHiaFQM.js
76881
+ // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/index-DoHiaFQM.js
76882
76882
  var isStandardJSONSchemaV1, missingDependenciesUrl, tryImport, getToJsonSchemaFn6, toJsonSchema;
76883
76883
  var init_index_DoHiaFQM = __esm({
76884
- "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/index-DoHiaFQM.js"() {
76884
+ "node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/index-DoHiaFQM.js"() {
76885
76885
  isStandardJSONSchemaV1 = (schema2) => "jsonSchema" in schema2["~standard"];
76886
76886
  missingDependenciesUrl = "https://xsai.js.org/docs/packages-top/xsschema#missing-dependencies";
76887
76887
  tryImport = async (result, name) => {
@@ -95111,13 +95111,13 @@ var require_Location = __commonJS({
95111
95111
  "use strict";
95112
95112
  var URL2 = require_URL();
95113
95113
  var URLUtils = require_URLUtils();
95114
- module.exports = Location;
95115
- function Location(window2, href) {
95114
+ module.exports = Location2;
95115
+ function Location2(window2, href) {
95116
95116
  this._window = window2;
95117
95117
  this._href = href;
95118
95118
  }
95119
- Location.prototype = Object.create(URLUtils.prototype, {
95120
- constructor: { value: Location },
95119
+ Location2.prototype = Object.create(URLUtils.prototype, {
95120
+ constructor: { value: Location2 },
95121
95121
  // Special behavior when href is set
95122
95122
  href: {
95123
95123
  get: function() {
@@ -95218,14 +95218,14 @@ var require_Window = __commonJS({
95218
95218
  "use strict";
95219
95219
  var DOMImplementation = require_DOMImplementation();
95220
95220
  var EventTarget2 = require_EventTarget();
95221
- var Location = require_Location();
95221
+ var Location2 = require_Location();
95222
95222
  var utils = require_utils7();
95223
95223
  module.exports = Window;
95224
95224
  function Window(document2) {
95225
95225
  this.document = document2 || new DOMImplementation(null).createHTMLDocument("");
95226
95226
  this.document._scripting_enabled = true;
95227
95227
  this.document.defaultView = this;
95228
- this.location = new Location(this, this.document._address || "about:blank");
95228
+ this.location = new Location2(this, this.document._address || "about:blank");
95229
95229
  }
95230
95230
  Window.prototype = Object.create(EventTarget2.prototype, {
95231
95231
  console: { value: console },
@@ -102494,7 +102494,7 @@ async function preflightClaudeSubscription(params) {
102494
102494
  } catch {
102495
102495
  return { usable: true };
102496
102496
  }
102497
- if (res.status !== 401 && res.status !== 429) return { usable: true };
102497
+ if (res.status !== 401 && res.status !== 403 && res.status !== 429) return { usable: true };
102498
102498
  const body = await res.text().catch(() => "");
102499
102499
  return { usable: false, reason: `${res.status}: ${extractApiErrorMessage(body)}` };
102500
102500
  }
@@ -102997,7 +102997,7 @@ function extractExcerpt(text, matchIndex) {
102997
102997
  }
102998
102998
  return excerpt.trim();
102999
102999
  }
103000
- var ROUTER_KEYLIMIT_EXHAUSTED_PATTERN = /requires more credits.*?fewer max_tokens|requested up to \d+ tokens.*?can only afford/is;
103000
+ var ROUTER_KEYLIMIT_EXHAUSTED_PATTERN = /requires more credits.*?fewer max_tokens|requested up to \d+ tokens.*?can only afford|Key limit exceeded \(total limit\)/is;
103001
103001
  function isRouterKeylimitExhaustedError(text) {
103002
103002
  return ROUTER_KEYLIMIT_EXHAUSTED_PATTERN.test(text);
103003
103003
  }
@@ -103022,7 +103022,7 @@ var import_semver = __toESM(require_semver2(), 1);
103022
103022
  // package.json
103023
103023
  var package_default = {
103024
103024
  name: "pullfrog",
103025
- version: "0.1.39",
103025
+ version: "0.1.41",
103026
103026
  type: "module",
103027
103027
  bin: {
103028
103028
  pullfrog: "dist/cli.mjs",
@@ -103053,7 +103053,7 @@ var package_default = {
103053
103053
  "@ark/util": "0.56.0",
103054
103054
  "@clack/prompts": "^1.2.0",
103055
103055
  "@modelcontextprotocol/sdk": "^1.26.0",
103056
- "@opencode-ai/sdk": "1.16.2",
103056
+ "@opencode-ai/sdk": "1.18.5",
103057
103057
  "@octokit/plugin-throttling": "^11.0.3",
103058
103058
  "@octokit/rest": "^22.0.0",
103059
103059
  "@octokit/webhooks-types": "^7.6.1",
@@ -103076,7 +103076,7 @@ var package_default = {
103076
103076
  husky: "^9.0.0",
103077
103077
  "lru-cache": "^11.0.0",
103078
103078
  "object-hash": "^3.0.0",
103079
- "opencode-ai": "1.16.2",
103079
+ "opencode-ai": "1.18.5",
103080
103080
  "package-manager-detector": "^1.6.0",
103081
103081
  picocolors: "^1.1.1",
103082
103082
  semver: "^7.7.3",
@@ -104297,12 +104297,12 @@ function getUnsubmittedReview(toolState) {
104297
104297
  }
104298
104298
  return null;
104299
104299
  }
104300
- function buildStopHookPrompt(failure) {
104300
+ function buildStopHookPrompt(failure2) {
104301
104301
  return [
104302
- `STOP HOOK FAILED \u2014 the repo-configured stop hook exited with code ${failure.exitCode}. your work is not done until the hook exits cleanly. address the issue below and push any resulting changes to a pull request.`,
104302
+ `STOP HOOK FAILED \u2014 the repo-configured stop hook exited with code ${failure2.exitCode}. your work is not done until the hook exits cleanly. address the issue below and push any resulting changes to a pull request.`,
104303
104303
  "",
104304
104304
  "```",
104305
- failure.output || "(no output)",
104305
+ failure2.output || "(no output)",
104306
104306
  "```"
104307
104307
  ].join("\n");
104308
104308
  }
@@ -105328,7 +105328,7 @@ import { mkdirSync as mkdirSync6, writeFileSync as writeFileSync6 } from "node:f
105328
105328
  import { join as join7 } from "node:path";
105329
105329
  import { performance as performance6 } from "node:perf_hooks";
105330
105330
 
105331
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
105331
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
105332
105332
  var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url: url4, ...options }) => {
105333
105333
  let lastEventId;
105334
105334
  const sleep4 = sseSleepFn ?? ((ms) => new Promise((resolve3) => setTimeout(resolve3, ms)));
@@ -105447,7 +105447,7 @@ var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer,
105447
105447
  return { stream };
105448
105448
  };
105449
105449
 
105450
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js
105450
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js
105451
105451
  var separatorArrayExplode = (style) => {
105452
105452
  switch (style) {
105453
105453
  case "label":
@@ -105550,7 +105550,7 @@ var serializeObjectParam = ({ allowReserved, explode, name, style, value: value2
105550
105550
  return style === "label" || style === "matrix" ? separator2 + joinedValues : joinedValues;
105551
105551
  };
105552
105552
 
105553
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js
105553
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js
105554
105554
  var PATH_PARAM_RE = /\{[^{}]+\}/g;
105555
105555
  var defaultPathSerializer = ({ path: path4, url: _url4 }) => {
105556
105556
  let url4 = _url4;
@@ -105633,7 +105633,7 @@ function getValidRequestBody(options) {
105633
105633
  return void 0;
105634
105634
  }
105635
105635
 
105636
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js
105636
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js
105637
105637
  var getAuthToken = async (auth2, callback) => {
105638
105638
  const token = typeof callback === "function" ? await callback(auth2) : callback;
105639
105639
  if (!token) {
@@ -105648,12 +105648,12 @@ var getAuthToken = async (auth2, callback) => {
105648
105648
  return token;
105649
105649
  };
105650
105650
 
105651
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js
105651
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js
105652
105652
  var jsonBodySerializer = {
105653
105653
  bodySerializer: (body) => JSON.stringify(body, (_key, value2) => typeof value2 === "bigint" ? value2.toString() : value2)
105654
105654
  };
105655
105655
 
105656
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js
105656
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js
105657
105657
  var createQuerySerializer = ({ parameters = {}, ...args2 } = {}) => {
105658
105658
  const querySerializer = (queryParams) => {
105659
105659
  const search2 = [];
@@ -105863,7 +105863,7 @@ var createConfig = (override = {}) => ({
105863
105863
  ...override
105864
105864
  });
105865
105865
 
105866
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js
105866
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js
105867
105867
  var createClient = (config3 = {}) => {
105868
105868
  let _config = mergeConfigs(createConfig(), config3);
105869
105869
  const getConfig = () => ({ ..._config });
@@ -106071,7 +106071,7 @@ var createClient = (config3 = {}) => {
106071
106071
  };
106072
106072
  };
106073
106073
 
106074
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js
106074
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js
106075
106075
  var extraPrefixesMap = {
106076
106076
  $body_: "body",
106077
106077
  $headers_: "headers",
@@ -106167,10 +106167,10 @@ var buildClientParams = (args2, fields) => {
106167
106167
  return params;
106168
106168
  };
106169
106169
 
106170
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js
106170
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js
106171
106171
  var client = createClient(createConfig({ baseUrl: "http://localhost:4096" }));
106172
106172
 
106173
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js
106173
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js
106174
106174
  var HeyApiClient = class {
106175
106175
  client;
106176
106176
  constructor(args2) {
@@ -106330,6 +106330,28 @@ var ControlPlane = class extends HeyApiClient {
106330
106330
  });
106331
106331
  }
106332
106332
  };
106333
+ var Capabilities = class extends HeyApiClient {
106334
+ /**
106335
+ * Get experimental capabilities
106336
+ *
106337
+ * Get experimental features enabled on the OpenCode server.
106338
+ */
106339
+ get(parameters, options) {
106340
+ const params = buildClientParams([parameters], [
106341
+ {
106342
+ args: [
106343
+ { in: "query", key: "directory" },
106344
+ { in: "query", key: "workspace" }
106345
+ ]
106346
+ }
106347
+ ]);
106348
+ return (options?.client ?? this.client).get({
106349
+ url: "/experimental/capabilities",
106350
+ ...options,
106351
+ ...params
106352
+ });
106353
+ }
106354
+ };
106333
106355
  var Console = class extends HeyApiClient {
106334
106356
  /**
106335
106357
  * Get active Console provider metadata
@@ -106472,60 +106494,23 @@ var Resource = class extends HeyApiClient {
106472
106494
  };
106473
106495
  var ProjectCopy = class extends HeyApiClient {
106474
106496
  /**
106475
- * Remove project copy
106476
- *
106477
- * Remove a local physical copy of a project using the selected strategy.
106478
- */
106479
- remove(parameters, options) {
106480
- const params = buildClientParams([parameters], [
106481
- {
106482
- args: [
106483
- { in: "path", key: "projectID" },
106484
- {
106485
- in: "query",
106486
- key: "query_directory",
106487
- map: "directory"
106488
- },
106489
- { in: "query", key: "workspace" },
106490
- {
106491
- in: "body",
106492
- key: "body_directory",
106493
- map: "directory"
106494
- }
106495
- ]
106496
- }
106497
- ]);
106498
- return (options?.client ?? this.client).delete({
106499
- url: "/experimental/project/{projectID}/copy",
106500
- ...options,
106501
- ...params,
106502
- headers: {
106503
- "Content-Type": "application/json",
106504
- ...options?.headers,
106505
- ...params.headers
106506
- }
106507
- });
106508
- }
106509
- /**
106510
- * Create project copy
106497
+ * Generate project copy name
106511
106498
  *
106512
- * Create a local physical copy of a project using the selected strategy.
106499
+ * Generate a short name for a project copy from task context.
106513
106500
  */
106514
- create(parameters, options) {
106501
+ generateName(parameters, options) {
106515
106502
  const params = buildClientParams([parameters], [
106516
106503
  {
106517
106504
  args: [
106518
106505
  { in: "path", key: "projectID" },
106506
+ { in: "query", key: "directory" },
106519
106507
  { in: "query", key: "workspace" },
106520
- { in: "body", key: "strategy" },
106521
- { in: "body", key: "directory" },
106522
- { in: "body", key: "name" },
106523
106508
  { in: "body", key: "context" }
106524
106509
  ]
106525
106510
  }
106526
106511
  ]);
106527
106512
  return (options?.client ?? this.client).post({
106528
- url: "/experimental/project/{projectID}/copy",
106513
+ url: "/experimental/project/{projectID}/copy/generate-name",
106529
106514
  ...options,
106530
106515
  ...params,
106531
106516
  headers: {
@@ -106535,27 +106520,6 @@ var ProjectCopy = class extends HeyApiClient {
106535
106520
  }
106536
106521
  });
106537
106522
  }
106538
- /**
106539
- * Refresh project copies
106540
- *
106541
- * Discover local project copies using one or all configured strategies.
106542
- */
106543
- refresh(parameters, options) {
106544
- const params = buildClientParams([parameters], [
106545
- {
106546
- args: [
106547
- { in: "path", key: "projectID" },
106548
- { in: "query", key: "directory" },
106549
- { in: "query", key: "workspace" }
106550
- ]
106551
- }
106552
- ]);
106553
- return (options?.client ?? this.client).post({
106554
- url: "/experimental/project/{projectID}/copy/refresh",
106555
- ...options,
106556
- ...params
106557
- });
106558
- }
106559
106523
  };
106560
106524
  var Adapter = class extends HeyApiClient {
106561
106525
  /**
@@ -106728,6 +106692,10 @@ var Experimental = class extends HeyApiClient {
106728
106692
  get controlPlane() {
106729
106693
  return this._controlPlane ??= new ControlPlane({ client: this.client });
106730
106694
  }
106695
+ _capabilities;
106696
+ get capabilities() {
106697
+ return this._capabilities ??= new Capabilities({ client: this.client });
106698
+ }
106731
106699
  _console;
106732
106700
  get console() {
106733
106701
  return this._console ??= new Console({ client: this.client });
@@ -109251,9 +109219,9 @@ var Tui = class extends HeyApiClient {
109251
109219
  };
109252
109220
  var Health = class extends HeyApiClient {
109253
109221
  /**
109254
- * Check v2 server health
109222
+ * Check server health
109255
109223
  *
109256
- * Check whether the v2 API server is ready to accept requests.
109224
+ * Check whether the API server is ready to accept requests.
109257
109225
  */
109258
109226
  get(options) {
109259
109227
  return (options?.client ?? this.client).get({
@@ -109262,11 +109230,26 @@ var Health = class extends HeyApiClient {
109262
109230
  });
109263
109231
  }
109264
109232
  };
109233
+ var Location = class extends HeyApiClient {
109234
+ /**
109235
+ * Get location
109236
+ *
109237
+ * Resolve the requested location or the server default location.
109238
+ */
109239
+ get(parameters, options) {
109240
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
109241
+ return (options?.client ?? this.client).get({
109242
+ url: "/api/location",
109243
+ ...options,
109244
+ ...params
109245
+ });
109246
+ }
109247
+ };
109265
109248
  var Agent = class extends HeyApiClient {
109266
109249
  /**
109267
- * List v2 agents
109250
+ * List agents
109268
109251
  *
109269
- * Retrieve currently registered v2 agents.
109252
+ * Retrieve currently registered agents.
109270
109253
  */
109271
109254
  list(parameters, options) {
109272
109255
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109277,6 +109260,56 @@ var Agent = class extends HeyApiClient {
109277
109260
  });
109278
109261
  }
109279
109262
  };
109263
+ var Revert = class extends HeyApiClient {
109264
+ /**
109265
+ * Stage session revert
109266
+ *
109267
+ * Stage or move a reversible session boundary and optionally apply its file changes.
109268
+ */
109269
+ stage(parameters, options) {
109270
+ const params = buildClientParams([parameters], [
109271
+ {
109272
+ args: [
109273
+ { in: "path", key: "sessionID" },
109274
+ { in: "body", key: "messageID" },
109275
+ { in: "body", key: "files" }
109276
+ ]
109277
+ }
109278
+ ]);
109279
+ return (options?.client ?? this.client).post({
109280
+ url: "/api/session/{sessionID}/revert/stage",
109281
+ ...options,
109282
+ ...params,
109283
+ headers: {
109284
+ "Content-Type": "application/json",
109285
+ ...options?.headers,
109286
+ ...params.headers
109287
+ }
109288
+ });
109289
+ }
109290
+ /**
109291
+ * Clear staged revert
109292
+ */
109293
+ clear(parameters, options) {
109294
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109295
+ return (options?.client ?? this.client).post({
109296
+ url: "/api/session/{sessionID}/revert/clear",
109297
+ ...options,
109298
+ ...params
109299
+ });
109300
+ }
109301
+ /**
109302
+ * Commit staged revert
109303
+ */
109304
+ commit(parameters, options) {
109305
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109306
+ return (options?.client ?? this.client).post({
109307
+ url: "/api/session/{sessionID}/revert/commit",
109308
+ ...options,
109309
+ ...params
109310
+ });
109311
+ }
109312
+ };
109280
109313
  var Permission2 = class extends HeyApiClient {
109281
109314
  /**
109282
109315
  * List session permission requests
@@ -109286,7 +109319,58 @@ var Permission2 = class extends HeyApiClient {
109286
109319
  list(parameters, options) {
109287
109320
  const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109288
109321
  return (options?.client ?? this.client).get({
109289
- url: "/api/session/{sessionID}/permission/request",
109322
+ url: "/api/session/{sessionID}/permission",
109323
+ ...options,
109324
+ ...params
109325
+ });
109326
+ }
109327
+ /**
109328
+ * Create permission request
109329
+ *
109330
+ * Evaluate and, when approval is required, create a permission request for a session.
109331
+ */
109332
+ create(parameters, options) {
109333
+ const params = buildClientParams([parameters], [
109334
+ {
109335
+ args: [
109336
+ { in: "path", key: "sessionID" },
109337
+ { in: "body", key: "id" },
109338
+ { in: "body", key: "action" },
109339
+ { in: "body", key: "resources" },
109340
+ { in: "body", key: "save" },
109341
+ { in: "body", key: "metadata" },
109342
+ { in: "body", key: "source" },
109343
+ { in: "body", key: "agent" }
109344
+ ]
109345
+ }
109346
+ ]);
109347
+ return (options?.client ?? this.client).post({
109348
+ url: "/api/session/{sessionID}/permission",
109349
+ ...options,
109350
+ ...params,
109351
+ headers: {
109352
+ "Content-Type": "application/json",
109353
+ ...options?.headers,
109354
+ ...params.headers
109355
+ }
109356
+ });
109357
+ }
109358
+ /**
109359
+ * Get permission request
109360
+ *
109361
+ * Retrieve a pending permission request owned by a session.
109362
+ */
109363
+ get(parameters, options) {
109364
+ const params = buildClientParams([parameters], [
109365
+ {
109366
+ args: [
109367
+ { in: "path", key: "sessionID" },
109368
+ { in: "path", key: "requestID" }
109369
+ ]
109370
+ }
109371
+ ]);
109372
+ return (options?.client ?? this.client).get({
109373
+ url: "/api/session/{sessionID}/permission/{requestID}",
109290
109374
  ...options,
109291
109375
  ...params
109292
109376
  });
@@ -109308,7 +109392,7 @@ var Permission2 = class extends HeyApiClient {
109308
109392
  }
109309
109393
  ]);
109310
109394
  return (options?.client ?? this.client).post({
109311
- url: "/api/session/{sessionID}/permission/request/{requestID}/reply",
109395
+ url: "/api/session/{sessionID}/permission/{requestID}/reply",
109312
109396
  ...options,
109313
109397
  ...params,
109314
109398
  headers: {
@@ -109320,6 +109404,19 @@ var Permission2 = class extends HeyApiClient {
109320
109404
  }
109321
109405
  };
109322
109406
  var Question2 = class extends HeyApiClient {
109407
+ /**
109408
+ * List session question requests
109409
+ *
109410
+ * Retrieve pending question requests owned by a session.
109411
+ */
109412
+ list(parameters, options) {
109413
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109414
+ return (options?.client ?? this.client).get({
109415
+ url: "/api/session/{sessionID}/question",
109416
+ ...options,
109417
+ ...params
109418
+ });
109419
+ }
109323
109420
  /**
109324
109421
  * Reply to pending question request
109325
109422
  *
@@ -109336,7 +109433,7 @@ var Question2 = class extends HeyApiClient {
109336
109433
  }
109337
109434
  ]);
109338
109435
  return (options?.client ?? this.client).post({
109339
- url: "/api/session/{sessionID}/question/request/{requestID}/reply",
109436
+ url: "/api/session/{sessionID}/question/{requestID}/reply",
109340
109437
  ...options,
109341
109438
  ...params,
109342
109439
  headers: {
@@ -109361,7 +109458,7 @@ var Question2 = class extends HeyApiClient {
109361
109458
  }
109362
109459
  ]);
109363
109460
  return (options?.client ?? this.client).post({
109364
- url: "/api/session/{sessionID}/question/request/{requestID}/reject",
109461
+ url: "/api/session/{sessionID}/question/{requestID}/reject",
109365
109462
  ...options,
109366
109463
  ...params
109367
109464
  });
@@ -109369,7 +109466,7 @@ var Question2 = class extends HeyApiClient {
109369
109466
  };
109370
109467
  var Session3 = class extends HeyApiClient {
109371
109468
  /**
109372
- * List v2 sessions
109469
+ * List sessions
109373
109470
  *
109374
109471
  * Retrieve sessions in the requested order. Items keep that order across pages; use cursor.next or cursor.previous to move through the ordered list.
109375
109472
  */
@@ -109395,9 +109492,110 @@ var Session3 = class extends HeyApiClient {
109395
109492
  });
109396
109493
  }
109397
109494
  /**
109398
- * Send v2 message
109495
+ * Create session
109496
+ *
109497
+ * Create a session at the requested location.
109498
+ */
109499
+ create(parameters, options) {
109500
+ const params = buildClientParams([parameters], [
109501
+ {
109502
+ args: [
109503
+ { in: "body", key: "id" },
109504
+ { in: "body", key: "agent" },
109505
+ { in: "body", key: "model" },
109506
+ { in: "body", key: "location" }
109507
+ ]
109508
+ }
109509
+ ]);
109510
+ return (options?.client ?? this.client).post({
109511
+ url: "/api/session",
109512
+ ...options,
109513
+ ...params,
109514
+ headers: {
109515
+ "Content-Type": "application/json",
109516
+ ...options?.headers,
109517
+ ...params.headers
109518
+ }
109519
+ });
109520
+ }
109521
+ /**
109522
+ * List active sessions
109523
+ *
109524
+ * Retrieve foreground Session drains currently owned by this OpenCode process. Sessions absent from the result are inactive.
109525
+ */
109526
+ active(options) {
109527
+ return (options?.client ?? this.client).get({
109528
+ url: "/api/session/active",
109529
+ ...options
109530
+ });
109531
+ }
109532
+ /**
109533
+ * Get session
109534
+ *
109535
+ * Retrieve a session by ID.
109536
+ */
109537
+ get(parameters, options) {
109538
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109539
+ return (options?.client ?? this.client).get({
109540
+ url: "/api/session/{sessionID}",
109541
+ ...options,
109542
+ ...params
109543
+ });
109544
+ }
109545
+ /**
109546
+ * Switch session agent
109547
+ *
109548
+ * Switch the agent used by subsequent provider turns.
109549
+ */
109550
+ switchAgent(parameters, options) {
109551
+ const params = buildClientParams([parameters], [
109552
+ {
109553
+ args: [
109554
+ { in: "path", key: "sessionID" },
109555
+ { in: "body", key: "agent" }
109556
+ ]
109557
+ }
109558
+ ]);
109559
+ return (options?.client ?? this.client).post({
109560
+ url: "/api/session/{sessionID}/agent",
109561
+ ...options,
109562
+ ...params,
109563
+ headers: {
109564
+ "Content-Type": "application/json",
109565
+ ...options?.headers,
109566
+ ...params.headers
109567
+ }
109568
+ });
109569
+ }
109570
+ /**
109571
+ * Switch session model
109572
+ *
109573
+ * Switch the model used by subsequent provider turns.
109574
+ */
109575
+ switchModel(parameters, options) {
109576
+ const params = buildClientParams([parameters], [
109577
+ {
109578
+ args: [
109579
+ { in: "path", key: "sessionID" },
109580
+ { in: "body", key: "model" }
109581
+ ]
109582
+ }
109583
+ ]);
109584
+ return (options?.client ?? this.client).post({
109585
+ url: "/api/session/{sessionID}/model",
109586
+ ...options,
109587
+ ...params,
109588
+ headers: {
109589
+ "Content-Type": "application/json",
109590
+ ...options?.headers,
109591
+ ...params.headers
109592
+ }
109593
+ });
109594
+ }
109595
+ /**
109596
+ * Send message
109399
109597
  *
109400
- * Durably admit one v2 session input and schedule agent-loop execution unless resume is false.
109598
+ * Durably admit one session input and schedule agent-loop execution unless resume is false.
109401
109599
  */
109402
109600
  prompt(parameters, options) {
109403
109601
  const params = buildClientParams([parameters], [
@@ -109423,9 +109621,9 @@ var Session3 = class extends HeyApiClient {
109423
109621
  });
109424
109622
  }
109425
109623
  /**
109426
- * Compact v2 session
109624
+ * Compact session
109427
109625
  *
109428
- * Compact a v2 session conversation.
109626
+ * Compact a session conversation.
109429
109627
  */
109430
109628
  compact(parameters, options) {
109431
109629
  const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
@@ -109436,9 +109634,9 @@ var Session3 = class extends HeyApiClient {
109436
109634
  });
109437
109635
  }
109438
109636
  /**
109439
- * Wait for v2 session
109637
+ * Wait for session
109440
109638
  *
109441
- * Wait for a v2 session agent loop to become idle.
109639
+ * Wait for a session agent loop to become idle.
109442
109640
  */
109443
109641
  wait(parameters, options) {
109444
109642
  const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
@@ -109449,9 +109647,9 @@ var Session3 = class extends HeyApiClient {
109449
109647
  });
109450
109648
  }
109451
109649
  /**
109452
- * Get v2 session context
109650
+ * Get session context
109453
109651
  *
109454
- * Retrieve the active context messages for a v2 session (all messages after the last compaction).
109652
+ * Retrieve the active context messages for a session (all messages after the last compaction).
109455
109653
  */
109456
109654
  context(parameters, options) {
109457
109655
  const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
@@ -109462,9 +109660,83 @@ var Session3 = class extends HeyApiClient {
109462
109660
  });
109463
109661
  }
109464
109662
  /**
109465
- * Get v2 session messages
109663
+ * Get session history
109466
109664
  *
109467
- * Retrieve projected v2 messages for a session. Items keep the requested order across pages; use cursor.next or cursor.previous to move through the ordered timeline.
109665
+ * Read one finite page of public durable Session events after an exclusive aggregate sequence. Newly committed events may appear on later pages.
109666
+ */
109667
+ history(parameters, options) {
109668
+ const params = buildClientParams([parameters], [
109669
+ {
109670
+ args: [
109671
+ { in: "path", key: "sessionID" },
109672
+ { in: "query", key: "limit" },
109673
+ { in: "query", key: "after" }
109674
+ ]
109675
+ }
109676
+ ]);
109677
+ return (options?.client ?? this.client).get({
109678
+ url: "/api/session/{sessionID}/history",
109679
+ ...options,
109680
+ ...params
109681
+ });
109682
+ }
109683
+ /**
109684
+ * Subscribe to session events
109685
+ *
109686
+ * Replay durable events after an aggregate sequence, then continue with new durable events.
109687
+ */
109688
+ events(parameters, options) {
109689
+ const params = buildClientParams([parameters], [
109690
+ {
109691
+ args: [
109692
+ { in: "path", key: "sessionID" },
109693
+ { in: "query", key: "after" }
109694
+ ]
109695
+ }
109696
+ ]);
109697
+ return (options?.client ?? this.client).sse.get({
109698
+ url: "/api/session/{sessionID}/event",
109699
+ ...options,
109700
+ ...params
109701
+ });
109702
+ }
109703
+ /**
109704
+ * Interrupt session execution
109705
+ *
109706
+ * Interrupt active execution owned by this OpenCode process. Idle interruption is a no-op.
109707
+ */
109708
+ interrupt(parameters, options) {
109709
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109710
+ return (options?.client ?? this.client).post({
109711
+ url: "/api/session/{sessionID}/interrupt",
109712
+ ...options,
109713
+ ...params
109714
+ });
109715
+ }
109716
+ /**
109717
+ * Get session message
109718
+ *
109719
+ * Retrieve one projected message owned by the Session.
109720
+ */
109721
+ message(parameters, options) {
109722
+ const params = buildClientParams([parameters], [
109723
+ {
109724
+ args: [
109725
+ { in: "path", key: "sessionID" },
109726
+ { in: "path", key: "messageID" }
109727
+ ]
109728
+ }
109729
+ ]);
109730
+ return (options?.client ?? this.client).get({
109731
+ url: "/api/session/{sessionID}/message/{messageID}",
109732
+ ...options,
109733
+ ...params
109734
+ });
109735
+ }
109736
+ /**
109737
+ * Get session messages
109738
+ *
109739
+ * Retrieve projected messages for a session. Items keep the requested order across pages; use cursor.next or cursor.previous to move through the ordered timeline.
109468
109740
  */
109469
109741
  messages(parameters, options) {
109470
109742
  const params = buildClientParams([parameters], [
@@ -109483,6 +109755,10 @@ var Session3 = class extends HeyApiClient {
109483
109755
  ...params
109484
109756
  });
109485
109757
  }
109758
+ _revert;
109759
+ get revert() {
109760
+ return this._revert ??= new Revert({ client: this.client });
109761
+ }
109486
109762
  _permission;
109487
109763
  get permission() {
109488
109764
  return this._permission ??= new Permission2({ client: this.client });
@@ -109494,9 +109770,9 @@ var Session3 = class extends HeyApiClient {
109494
109770
  };
109495
109771
  var Model = class extends HeyApiClient {
109496
109772
  /**
109497
- * List v2 models
109773
+ * List models
109498
109774
  *
109499
- * Retrieve available v2 models ordered by release date.
109775
+ * Retrieve available models ordered by release date.
109500
109776
  */
109501
109777
  list(parameters, options) {
109502
109778
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109509,9 +109785,9 @@ var Model = class extends HeyApiClient {
109509
109785
  };
109510
109786
  var Provider2 = class extends HeyApiClient {
109511
109787
  /**
109512
- * List v2 providers
109788
+ * List providers
109513
109789
  *
109514
- * Retrieve active v2 AI providers so clients can show provider availability and configuration.
109790
+ * Retrieve active AI providers so clients can show provider availability and configuration.
109515
109791
  */
109516
109792
  list(parameters, options) {
109517
109793
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109522,9 +109798,9 @@ var Provider2 = class extends HeyApiClient {
109522
109798
  });
109523
109799
  }
109524
109800
  /**
109525
- * Get v2 provider
109801
+ * Get provider
109526
109802
  *
109527
- * Retrieve a single v2 AI provider so clients can inspect its availability and endpoint settings.
109803
+ * Retrieve a single AI provider so clients can inspect its availability and endpoint settings.
109528
109804
  */
109529
109805
  get(parameters, options) {
109530
109806
  const params = buildClientParams([parameters], [
@@ -109542,6 +109818,222 @@ var Provider2 = class extends HeyApiClient {
109542
109818
  });
109543
109819
  }
109544
109820
  };
109821
+ var Connect = class extends HeyApiClient {
109822
+ /**
109823
+ * Connect with key
109824
+ *
109825
+ * Run a key authentication method and store the resulting credential.
109826
+ */
109827
+ key(parameters, options) {
109828
+ const params = buildClientParams([parameters], [
109829
+ {
109830
+ args: [
109831
+ { in: "path", key: "integrationID" },
109832
+ { in: "query", key: "location" },
109833
+ { in: "body", key: "key" },
109834
+ { in: "body", key: "label" }
109835
+ ]
109836
+ }
109837
+ ]);
109838
+ return (options?.client ?? this.client).post({
109839
+ url: "/api/integration/{integrationID}/connect/key",
109840
+ ...options,
109841
+ ...params,
109842
+ headers: {
109843
+ "Content-Type": "application/json",
109844
+ ...options?.headers,
109845
+ ...params.headers
109846
+ }
109847
+ });
109848
+ }
109849
+ /**
109850
+ * Begin OAuth connection
109851
+ *
109852
+ * Start an OAuth attempt and return the authorization details.
109853
+ */
109854
+ oauth(parameters, options) {
109855
+ const params = buildClientParams([parameters], [
109856
+ {
109857
+ args: [
109858
+ { in: "path", key: "integrationID" },
109859
+ { in: "query", key: "location" },
109860
+ { in: "body", key: "methodID" },
109861
+ { in: "body", key: "inputs" },
109862
+ { in: "body", key: "label" }
109863
+ ]
109864
+ }
109865
+ ]);
109866
+ return (options?.client ?? this.client).post({
109867
+ url: "/api/integration/{integrationID}/connect/oauth",
109868
+ ...options,
109869
+ ...params,
109870
+ headers: {
109871
+ "Content-Type": "application/json",
109872
+ ...options?.headers,
109873
+ ...params.headers
109874
+ }
109875
+ });
109876
+ }
109877
+ };
109878
+ var Attempt = class extends HeyApiClient {
109879
+ /**
109880
+ * Cancel OAuth connection
109881
+ *
109882
+ * Cancel an OAuth attempt and release its resources.
109883
+ */
109884
+ cancel(parameters, options) {
109885
+ const params = buildClientParams([parameters], [
109886
+ {
109887
+ args: [
109888
+ { in: "path", key: "attemptID" },
109889
+ { in: "query", key: "location" }
109890
+ ]
109891
+ }
109892
+ ]);
109893
+ return (options?.client ?? this.client).delete({
109894
+ url: "/api/integration/attempt/{attemptID}",
109895
+ ...options,
109896
+ ...params
109897
+ });
109898
+ }
109899
+ /**
109900
+ * Get OAuth attempt status
109901
+ *
109902
+ * Poll the current status of an OAuth attempt.
109903
+ */
109904
+ status(parameters, options) {
109905
+ const params = buildClientParams([parameters], [
109906
+ {
109907
+ args: [
109908
+ { in: "path", key: "attemptID" },
109909
+ { in: "query", key: "location" }
109910
+ ]
109911
+ }
109912
+ ]);
109913
+ return (options?.client ?? this.client).get({
109914
+ url: "/api/integration/attempt/{attemptID}",
109915
+ ...options,
109916
+ ...params
109917
+ });
109918
+ }
109919
+ /**
109920
+ * Complete OAuth connection
109921
+ *
109922
+ * Complete a code-based OAuth attempt and store the resulting credential.
109923
+ */
109924
+ complete(parameters, options) {
109925
+ const params = buildClientParams([parameters], [
109926
+ {
109927
+ args: [
109928
+ { in: "path", key: "attemptID" },
109929
+ { in: "query", key: "location" },
109930
+ { in: "body", key: "code" }
109931
+ ]
109932
+ }
109933
+ ]);
109934
+ return (options?.client ?? this.client).post({
109935
+ url: "/api/integration/attempt/{attemptID}/complete",
109936
+ ...options,
109937
+ ...params,
109938
+ headers: {
109939
+ "Content-Type": "application/json",
109940
+ ...options?.headers,
109941
+ ...params.headers
109942
+ }
109943
+ });
109944
+ }
109945
+ };
109946
+ var Integration = class extends HeyApiClient {
109947
+ /**
109948
+ * List integrations
109949
+ *
109950
+ * Retrieve available integrations and their authentication methods.
109951
+ */
109952
+ list(parameters, options) {
109953
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
109954
+ return (options?.client ?? this.client).get({
109955
+ url: "/api/integration",
109956
+ ...options,
109957
+ ...params
109958
+ });
109959
+ }
109960
+ /**
109961
+ * Get integration
109962
+ *
109963
+ * Retrieve one integration and its authentication methods.
109964
+ */
109965
+ get(parameters, options) {
109966
+ const params = buildClientParams([parameters], [
109967
+ {
109968
+ args: [
109969
+ { in: "path", key: "integrationID" },
109970
+ { in: "query", key: "location" }
109971
+ ]
109972
+ }
109973
+ ]);
109974
+ return (options?.client ?? this.client).get({
109975
+ url: "/api/integration/{integrationID}",
109976
+ ...options,
109977
+ ...params
109978
+ });
109979
+ }
109980
+ _connect;
109981
+ get connect() {
109982
+ return this._connect ??= new Connect({ client: this.client });
109983
+ }
109984
+ _attempt;
109985
+ get attempt() {
109986
+ return this._attempt ??= new Attempt({ client: this.client });
109987
+ }
109988
+ };
109989
+ var Credential = class extends HeyApiClient {
109990
+ /**
109991
+ * Remove credential
109992
+ *
109993
+ * Remove a stored integration credential.
109994
+ */
109995
+ remove(parameters, options) {
109996
+ const params = buildClientParams([parameters], [
109997
+ {
109998
+ args: [
109999
+ { in: "path", key: "credentialID" },
110000
+ { in: "query", key: "location" }
110001
+ ]
110002
+ }
110003
+ ]);
110004
+ return (options?.client ?? this.client).delete({
110005
+ url: "/api/credential/{credentialID}",
110006
+ ...options,
110007
+ ...params
110008
+ });
110009
+ }
110010
+ /**
110011
+ * Update credential
110012
+ *
110013
+ * Update a stored credential label.
110014
+ */
110015
+ update(parameters, options) {
110016
+ const params = buildClientParams([parameters], [
110017
+ {
110018
+ args: [
110019
+ { in: "path", key: "credentialID" },
110020
+ { in: "query", key: "location" },
110021
+ { in: "body", key: "label" }
110022
+ ]
110023
+ }
110024
+ ]);
110025
+ return (options?.client ?? this.client).patch({
110026
+ url: "/api/credential/{credentialID}",
110027
+ ...options,
110028
+ ...params,
110029
+ headers: {
110030
+ "Content-Type": "application/json",
110031
+ ...options?.headers,
110032
+ ...params.headers
110033
+ }
110034
+ });
110035
+ }
110036
+ };
109545
110037
  var Request2 = class extends HeyApiClient {
109546
110038
  /**
109547
110039
  * List pending permission requests
@@ -109599,41 +110091,54 @@ var Fs = class extends HeyApiClient {
109599
110091
  /**
109600
110092
  * Read file
109601
110093
  *
109602
- * Read one file relative to the requested location.
110094
+ * Serve one file relative to the requested location.
109603
110095
  */
109604
110096
  read(parameters, options) {
110097
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
110098
+ return (options?.client ?? this.client).get({
110099
+ url: "/api/fs/read/*",
110100
+ ...options,
110101
+ ...params
110102
+ });
110103
+ }
110104
+ /**
110105
+ * List directory
110106
+ *
110107
+ * List direct children of one directory relative to the requested location.
110108
+ */
110109
+ list(parameters, options) {
109605
110110
  const params = buildClientParams([parameters], [
109606
110111
  {
109607
110112
  args: [
109608
110113
  { in: "query", key: "location" },
109609
- { in: "query", key: "path" },
109610
- { in: "query", key: "reference" }
110114
+ { in: "query", key: "path" }
109611
110115
  ]
109612
110116
  }
109613
110117
  ]);
109614
110118
  return (options?.client ?? this.client).get({
109615
- url: "/api/fs/read",
110119
+ url: "/api/fs/list",
109616
110120
  ...options,
109617
110121
  ...params
109618
110122
  });
109619
110123
  }
109620
110124
  /**
109621
- * List directory
110125
+ * Find files
109622
110126
  *
109623
- * List direct children of one directory relative to the requested location.
110127
+ * Find recursively ranked filesystem entries relative to the requested location.
109624
110128
  */
109625
- list(parameters, options) {
110129
+ find(parameters, options) {
109626
110130
  const params = buildClientParams([parameters], [
109627
110131
  {
109628
110132
  args: [
109629
110133
  { in: "query", key: "location" },
109630
- { in: "query", key: "path" },
109631
- { in: "query", key: "reference" }
110134
+ { in: "query", key: "query" },
110135
+ { in: "query", key: "type" },
110136
+ { in: "query", key: "limit" }
109632
110137
  ]
109633
110138
  }
109634
110139
  ]);
109635
110140
  return (options?.client ?? this.client).get({
109636
- url: "/api/fs/list",
110141
+ url: "/api/fs/find",
109637
110142
  ...options,
109638
110143
  ...params
109639
110144
  });
@@ -109641,9 +110146,9 @@ var Fs = class extends HeyApiClient {
109641
110146
  };
109642
110147
  var Command2 = class extends HeyApiClient {
109643
110148
  /**
109644
- * List v2 commands
110149
+ * List commands
109645
110150
  *
109646
- * Retrieve currently registered v2 commands.
110151
+ * Retrieve currently registered commands.
109647
110152
  */
109648
110153
  list(parameters, options) {
109649
110154
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109656,9 +110161,9 @@ var Command2 = class extends HeyApiClient {
109656
110161
  };
109657
110162
  var Skill = class extends HeyApiClient {
109658
110163
  /**
109659
- * List v2 skills
110164
+ * List skills
109660
110165
  *
109661
- * Retrieve currently registered v2 skills.
110166
+ * Retrieve currently registered skills.
109662
110167
  */
109663
110168
  list(parameters, options) {
109664
110169
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109671,14 +110176,166 @@ var Skill = class extends HeyApiClient {
109671
110176
  };
109672
110177
  var Event22 = class extends HeyApiClient {
109673
110178
  /**
109674
- * Subscribe to v2 events
110179
+ * Subscribe to events
109675
110180
  *
109676
- * Subscribe to native EventV2 payloads for a location.
110181
+ * Subscribe to native event payloads for the server.
109677
110182
  */
109678
- subscribe(parameters, options) {
109679
- const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
110183
+ subscribe(options) {
109680
110184
  return (options?.client ?? this.client).sse.get({
109681
110185
  url: "/api/event",
110186
+ ...options
110187
+ });
110188
+ }
110189
+ };
110190
+ var Pty2 = class extends HeyApiClient {
110191
+ /**
110192
+ * List PTY sessions
110193
+ *
110194
+ * List PTY sessions for a location, including exited sessions retained until removal.
110195
+ */
110196
+ list(parameters, options) {
110197
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
110198
+ return (options?.client ?? this.client).get({
110199
+ url: "/api/pty",
110200
+ ...options,
110201
+ ...params
110202
+ });
110203
+ }
110204
+ /**
110205
+ * Create PTY session
110206
+ *
110207
+ * Create a pseudo-terminal session for a location.
110208
+ */
110209
+ create(parameters, options) {
110210
+ const params = buildClientParams([parameters], [
110211
+ {
110212
+ args: [
110213
+ { in: "query", key: "location" },
110214
+ { in: "body", key: "command" },
110215
+ { in: "body", key: "args" },
110216
+ { in: "body", key: "cwd" },
110217
+ { in: "body", key: "title" },
110218
+ { in: "body", key: "env" }
110219
+ ]
110220
+ }
110221
+ ]);
110222
+ return (options?.client ?? this.client).post({
110223
+ url: "/api/pty",
110224
+ ...options,
110225
+ ...params,
110226
+ headers: {
110227
+ "Content-Type": "application/json",
110228
+ ...options?.headers,
110229
+ ...params.headers
110230
+ }
110231
+ });
110232
+ }
110233
+ /**
110234
+ * Remove PTY session
110235
+ *
110236
+ * Terminate and remove one PTY session.
110237
+ */
110238
+ remove(parameters, options) {
110239
+ const params = buildClientParams([parameters], [
110240
+ {
110241
+ args: [
110242
+ { in: "path", key: "ptyID" },
110243
+ { in: "query", key: "location" }
110244
+ ]
110245
+ }
110246
+ ]);
110247
+ return (options?.client ?? this.client).delete({
110248
+ url: "/api/pty/{ptyID}",
110249
+ ...options,
110250
+ ...params
110251
+ });
110252
+ }
110253
+ /**
110254
+ * Get PTY session
110255
+ *
110256
+ * Get one PTY session, including its exit code once exited.
110257
+ */
110258
+ get(parameters, options) {
110259
+ const params = buildClientParams([parameters], [
110260
+ {
110261
+ args: [
110262
+ { in: "path", key: "ptyID" },
110263
+ { in: "query", key: "location" }
110264
+ ]
110265
+ }
110266
+ ]);
110267
+ return (options?.client ?? this.client).get({
110268
+ url: "/api/pty/{ptyID}",
110269
+ ...options,
110270
+ ...params
110271
+ });
110272
+ }
110273
+ /**
110274
+ * Update PTY session
110275
+ *
110276
+ * Update the title or viewport size of one PTY session.
110277
+ */
110278
+ update(parameters, options) {
110279
+ const params = buildClientParams([parameters], [
110280
+ {
110281
+ args: [
110282
+ { in: "path", key: "ptyID" },
110283
+ { in: "query", key: "location" },
110284
+ { in: "body", key: "title" },
110285
+ { in: "body", key: "size" }
110286
+ ]
110287
+ }
110288
+ ]);
110289
+ return (options?.client ?? this.client).put({
110290
+ url: "/api/pty/{ptyID}",
110291
+ ...options,
110292
+ ...params,
110293
+ headers: {
110294
+ "Content-Type": "application/json",
110295
+ ...options?.headers,
110296
+ ...params.headers
110297
+ }
110298
+ });
110299
+ }
110300
+ /**
110301
+ * Create PTY WebSocket token
110302
+ *
110303
+ * Create a short-lived single-use ticket for opening a PTY WebSocket connection.
110304
+ */
110305
+ connectToken(parameters, options) {
110306
+ const params = buildClientParams([parameters], [
110307
+ {
110308
+ args: [
110309
+ { in: "path", key: "ptyID" },
110310
+ { in: "query", key: "location" }
110311
+ ]
110312
+ }
110313
+ ]);
110314
+ return (options?.client ?? this.client).post({
110315
+ url: "/api/pty/{ptyID}/connect-token",
110316
+ ...options,
110317
+ ...params
110318
+ });
110319
+ }
110320
+ /**
110321
+ * Connect to PTY session
110322
+ *
110323
+ * Establish a WebSocket connection streaming PTY output and accepting terminal input.
110324
+ */
110325
+ connect(parameters, options) {
110326
+ const params = buildClientParams([parameters], [
110327
+ {
110328
+ args: [
110329
+ { in: "path", key: "ptyID" },
110330
+ { in: "query", key: "location[directory]" },
110331
+ { in: "query", key: "location[workspace]" },
110332
+ { in: "query", key: "cursor" },
110333
+ { in: "query", key: "ticket" }
110334
+ ]
110335
+ }
110336
+ ]);
110337
+ return (options?.client ?? this.client).get({
110338
+ url: "/api/pty/{ptyID}/connect",
109682
110339
  ...options,
109683
110340
  ...params
109684
110341
  });
@@ -109705,11 +110362,92 @@ var Question3 = class extends HeyApiClient {
109705
110362
  return this._request ??= new Request22({ client: this.client });
109706
110363
  }
109707
110364
  };
110365
+ var Reference = class extends HeyApiClient {
110366
+ /**
110367
+ * List references
110368
+ *
110369
+ * List references available in the requested location.
110370
+ */
110371
+ list(parameters, options) {
110372
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
110373
+ return (options?.client ?? this.client).get({
110374
+ url: "/api/reference",
110375
+ ...options,
110376
+ ...params
110377
+ });
110378
+ }
110379
+ };
110380
+ var ProjectCopy2 = class extends HeyApiClient {
110381
+ remove(parameters, options) {
110382
+ const params = buildClientParams([parameters], [
110383
+ {
110384
+ args: [
110385
+ { in: "path", key: "projectID" },
110386
+ { in: "query", key: "location" },
110387
+ { in: "body", key: "directory" },
110388
+ { in: "body", key: "force" }
110389
+ ]
110390
+ }
110391
+ ]);
110392
+ return (options?.client ?? this.client).delete({
110393
+ url: "/experimental/project/{projectID}/copy",
110394
+ ...options,
110395
+ ...params,
110396
+ headers: {
110397
+ "Content-Type": "application/json",
110398
+ ...options?.headers,
110399
+ ...params.headers
110400
+ }
110401
+ });
110402
+ }
110403
+ create(parameters, options) {
110404
+ const params = buildClientParams([parameters], [
110405
+ {
110406
+ args: [
110407
+ { in: "path", key: "projectID" },
110408
+ { in: "query", key: "location" },
110409
+ { in: "body", key: "strategy" },
110410
+ { in: "body", key: "directory" },
110411
+ { in: "body", key: "name" }
110412
+ ]
110413
+ }
110414
+ ]);
110415
+ return (options?.client ?? this.client).post({
110416
+ url: "/experimental/project/{projectID}/copy",
110417
+ ...options,
110418
+ ...params,
110419
+ headers: {
110420
+ "Content-Type": "application/json",
110421
+ ...options?.headers,
110422
+ ...params.headers
110423
+ }
110424
+ });
110425
+ }
110426
+ refresh(parameters, options) {
110427
+ const params = buildClientParams([parameters], [
110428
+ {
110429
+ args: [
110430
+ { in: "path", key: "projectID" },
110431
+ { in: "query", key: "location" }
110432
+ ]
110433
+ }
110434
+ ]);
110435
+ return (options?.client ?? this.client).post({
110436
+ url: "/experimental/project/{projectID}/copy/refresh",
110437
+ ...options,
110438
+ ...params
110439
+ });
110440
+ }
110441
+ };
109708
110442
  var V22 = class extends HeyApiClient {
109709
110443
  _health;
109710
110444
  get health() {
109711
110445
  return this._health ??= new Health({ client: this.client });
109712
110446
  }
110447
+ _location;
110448
+ get location() {
110449
+ return this._location ??= new Location({ client: this.client });
110450
+ }
109713
110451
  _agent;
109714
110452
  get agent() {
109715
110453
  return this._agent ??= new Agent({ client: this.client });
@@ -109726,6 +110464,14 @@ var V22 = class extends HeyApiClient {
109726
110464
  get provider() {
109727
110465
  return this._provider ??= new Provider2({ client: this.client });
109728
110466
  }
110467
+ _integration;
110468
+ get integration() {
110469
+ return this._integration ??= new Integration({ client: this.client });
110470
+ }
110471
+ _credential;
110472
+ get credential() {
110473
+ return this._credential ??= new Credential({ client: this.client });
110474
+ }
109729
110475
  _permission;
109730
110476
  get permission() {
109731
110477
  return this._permission ??= new Permission3({ client: this.client });
@@ -109746,10 +110492,22 @@ var V22 = class extends HeyApiClient {
109746
110492
  get event() {
109747
110493
  return this._event ??= new Event22({ client: this.client });
109748
110494
  }
110495
+ _pty;
110496
+ get pty() {
110497
+ return this._pty ??= new Pty2({ client: this.client });
110498
+ }
109749
110499
  _question;
109750
110500
  get question() {
109751
110501
  return this._question ??= new Question3({ client: this.client });
109752
110502
  }
110503
+ _reference;
110504
+ get reference() {
110505
+ return this._reference ??= new Reference({ client: this.client });
110506
+ }
110507
+ _projectCopy;
110508
+ get projectCopy() {
110509
+ return this._projectCopy ??= new ProjectCopy2({ client: this.client });
110510
+ }
109753
110511
  };
109754
110512
  var OpencodeClient = class _OpencodeClient extends HeyApiClient {
109755
110513
  static __registry = new HeyApiRegistry();
@@ -109867,7 +110625,7 @@ var OpencodeClient = class _OpencodeClient extends HeyApiClient {
109867
110625
  }
109868
110626
  };
109869
110627
 
109870
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
110628
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
109871
110629
  function wrapClientError(error49, response, request2, opts) {
109872
110630
  if (!opts?.throwOnError)
109873
110631
  return error49;
@@ -109894,7 +110652,7 @@ function describe(request2, response) {
109894
110652
  return `${method} ${url4}${status ? " \u2192 " + status : ""}${statusText ? " " + statusText : ""}`;
109895
110653
  }
109896
110654
 
109897
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/client.js
110655
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/client.js
109898
110656
  function pick(value2, fallback, encode4) {
109899
110657
  if (!value2)
109900
110658
  return;
@@ -109970,7 +110728,7 @@ function createOpencodeClient(config3) {
109970
110728
  return new OpencodeClient({ client: client2 });
109971
110729
  }
109972
110730
 
109973
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/server.js
110731
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/server.js
109974
110732
  var import_cross_spawn = __toESM(require_cross_spawn(), 1);
109975
110733
 
109976
110734
  // agents/opencode_v2.ts
@@ -110181,25 +110939,30 @@ export default async function pullfrogSubagentGatePlugin() {
110181
110939
  }
110182
110940
 
110183
110941
  // utils/openCodeModels.ts
110184
- import { execFileSync as execFileSync5 } from "node:child_process";
110942
+ import { spawnSync as spawnSync3 } from "node:child_process";
110185
110943
  var baseline;
110186
110944
  var authorized;
110945
+ var failure;
110946
+ var ANSI_PATTERN = /\[[0-9;]*m/g;
110187
110947
  function readModels(cliPath) {
110188
- try {
110189
- const output = execFileSync5(cliPath, ["models"], {
110190
- encoding: "utf-8",
110191
- timeout: 3e4,
110192
- env: process.env
110193
- });
110194
- return new Set(
110195
- output.split("\n").map((line) => line.trim()).filter(Boolean)
110196
- );
110197
- } catch (error49) {
110198
- log.debug(
110199
- `\xBB \`opencode models\` failed: ${error49 instanceof Error ? error49.message : String(error49)}`
110200
- );
110948
+ const result = spawnSync3(cliPath, ["models"], {
110949
+ encoding: "utf-8",
110950
+ timeout: 3e4,
110951
+ env: process.env,
110952
+ stdio: ["ignore", "pipe", "pipe"]
110953
+ });
110954
+ if (result.status !== 0) {
110955
+ failure = (result.stderr ?? "").replace(ANSI_PATTERN, "").trim() || void 0;
110956
+ log.debug(`\xBB \`opencode models\` failed (${result.status}): ${failure ?? result.error}`);
110201
110957
  return /* @__PURE__ */ new Set();
110202
110958
  }
110959
+ failure = void 0;
110960
+ return new Set(
110961
+ result.stdout.split("\n").map((line) => line.trim()).filter(Boolean)
110962
+ );
110963
+ }
110964
+ function getModelsFailure() {
110965
+ return failure;
110203
110966
  }
110204
110967
  function captureBaselineModels(cliPath) {
110205
110968
  baseline = readModels(cliPath);
@@ -110358,17 +111121,21 @@ function parseModel2(value2) {
110358
111121
  return { providerID: value2.slice(0, slash), modelID: value2.slice(slash + 1) };
110359
111122
  }
110360
111123
  function bootOpencodeServer(params) {
110361
- const proc = nodeSpawn2(params.cliPath, ["serve", "--port", "0", "--hostname", "127.0.0.1"], {
110362
- cwd: params.cwd,
110363
- env: params.env,
110364
- stdio: ["ignore", "pipe", "pipe"],
110365
- // detached + killGroup so SIGKILL nukes the whole tree: node_modules/
110366
- // opencode-ai/bin/opencode is a Node shim that spawnSync's the native
110367
- // binary; without process-group kill the native binary is reparented
110368
- // to PID 1 and never dies. mirrors the same fix in runOpenCode's
110369
- // original spawn().
110370
- detached: true
110371
- });
111124
+ const proc = nodeSpawn2(
111125
+ params.cliPath,
111126
+ ["serve", "--port", "0", "--hostname", "127.0.0.1", "--print-logs", "--log-level", "ERROR"],
111127
+ {
111128
+ cwd: params.cwd,
111129
+ env: params.env,
111130
+ stdio: ["ignore", "pipe", "pipe"],
111131
+ // detached + killGroup so SIGKILL nukes the whole tree: node_modules/
111132
+ // opencode-ai/bin/opencode is a Node shim that spawnSync's the native
111133
+ // binary; without process-group kill the native binary is reparented
111134
+ // to PID 1 and never dies. mirrors the same fix in runOpenCode's
111135
+ // original spawn().
111136
+ detached: true
111137
+ }
111138
+ );
110372
111139
  trackChild({ child: proc, killGroup: true });
110373
111140
  const recentStderr = [];
110374
111141
  proc.stderr?.on("data", (chunk) => {
@@ -110461,12 +111228,17 @@ ${tail}` : ""}`
110461
111228
  bootTimeout.unref?.();
110462
111229
  });
110463
111230
  }
111231
+ function withServerStderr(message, recentStderr) {
111232
+ const tail = recentStderr.join("\n").trim();
111233
+ return tail ? `${message}
111234
+ opencode server stderr:
111235
+ ${tail}` : message;
111236
+ }
110464
111237
  function newTurn() {
110465
111238
  return {
110466
111239
  finalText: "",
110467
111240
  tokens: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
110468
111241
  costUsd: 0,
110469
- sessionError: null,
110470
111242
  lastToolError: null
110471
111243
  };
110472
111244
  }
@@ -110497,7 +111269,6 @@ async function dispatchEvent(ctx, event) {
110497
111269
  if (sessionID !== ctx.orchestratorSessionID) return;
110498
111270
  const err = event.properties.error;
110499
111271
  const message = err ? extractErrorMessage(err) : "(no error payload)";
110500
- if (ctx.currentTurn) ctx.currentTurn.sessionError = message;
110501
111272
  log.info(`\xBB ${ctx.label} session error: ${message}`);
110502
111273
  return;
110503
111274
  }
@@ -110690,14 +111461,6 @@ async function runPromptTurn(ctx, params) {
110690
111461
  usage
110691
111462
  };
110692
111463
  }
110693
- if (turn.sessionError) {
110694
- return {
110695
- success: false,
110696
- output: finalText,
110697
- error: `session error: ${turn.sessionError}`,
110698
- usage
110699
- };
110700
- }
110701
111464
  return { success: true, output: finalText, usage };
110702
111465
  }
110703
111466
  async function aggregateTurnUsage(ctx, turnStartMs) {
@@ -110787,6 +111550,8 @@ function formatPromptError(error49) {
110787
111550
  const obj = error49;
110788
111551
  if (obj.message) return obj.message;
110789
111552
  if (obj.error?.message) return obj.error.message;
111553
+ const config3 = formatConfigError(obj.name, obj.data);
111554
+ if (config3) return config3;
110790
111555
  try {
110791
111556
  return JSON.stringify(error49);
110792
111557
  } catch {
@@ -110795,6 +111560,17 @@ function formatPromptError(error49) {
110795
111560
  }
110796
111561
  return String(error49);
110797
111562
  }
111563
+ function formatConfigError(name, data) {
111564
+ if (!name?.startsWith("Config") || !data || typeof data !== "object") return void 0;
111565
+ const at2 = "path" in data && typeof data.path === "string" ? ` at ${data.path}` : "";
111566
+ const detail = "message" in data && typeof data.message === "string" ? `${at2}: ${data.message}` : at2;
111567
+ const issues = "issues" in data && Array.isArray(data.issues) ? data.issues : [];
111568
+ const bullets = issues.map(
111569
+ (issue3) => issue3 && typeof issue3 === "object" && "message" in issue3 && typeof issue3.message === "string" ? `
111570
+ \u21B3 ${issue3.message}` : ""
111571
+ ).join("");
111572
+ return `${name}${detail}${bullets}`;
111573
+ }
110798
111574
  function startInnerActivityWatchdog(params) {
110799
111575
  let fired = false;
110800
111576
  const id = setInterval(() => {
@@ -110862,6 +111638,8 @@ var opencode = agent({
110862
111638
  OPENCODE_PERMISSION: permissionOverride,
110863
111639
  GOOGLE_GENERATIVE_AI_API_KEY: process.env.GOOGLE_GENERATIVE_AI_API_KEY || process.env.GEMINI_API_KEY
110864
111640
  };
111641
+ delete env2.OPENCODE_EXPERIMENTAL;
111642
+ delete env2.OPENCODE_EXPERIMENTAL_CODE_MODE;
110865
111643
  if (codexAuth) {
110866
111644
  env2.XDG_DATA_HOME = codexAuth.xdgDataHome;
110867
111645
  delete env2.OPENAI_API_KEY;
@@ -110901,7 +111679,7 @@ var opencode = agent({
110901
111679
  return {
110902
111680
  success: false,
110903
111681
  output: "",
110904
- error: `opencode session.create failed: ${msg}`
111682
+ error: withServerStderr(`opencode session.create failed: ${msg}`, server.recentStderr)
110905
111683
  };
110906
111684
  }
110907
111685
  const sessionID = sessionResp.data.id;
@@ -142142,7 +142920,7 @@ var import_undici2 = __toESM(require_undici2(), 1);
142142
142920
  var import_uri_templates = __toESM(require_uri_templates(), 1);
142143
142921
  import { setTimeout as delay } from "timers/promises";
142144
142922
 
142145
- // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod-to-json-schema@3.25.1_zod@4.3.6__zod@4.3.6/node_modules/xsschema/dist/index.js
142923
+ // node_modules/.pnpm/xsschema@0.4.3_arktype@2.2.0_zod@4.3.6_zod-to-json-schema@3.25.1_zod@4.3.6_/node_modules/xsschema/dist/index.js
142146
142924
  init_index_DoHiaFQM();
142147
142925
 
142148
142926
  // node_modules/.pnpm/fastmcp@3.34.0_arktype@2.2.0/node_modules/fastmcp/dist/chunk-DMSZ2FEE.js
@@ -144013,7 +144791,7 @@ import { promisify } from "util";
144013
144791
  var pbkdf2Async = promisify(pbkdf2);
144014
144792
 
144015
144793
  // utils/browser.ts
144016
- import { execFileSync as execFileSync6, spawnSync as spawnSync3 } from "node:child_process";
144794
+ import { execFileSync as execFileSync5, spawnSync as spawnSync4 } from "node:child_process";
144017
144795
  import { existsSync as existsSync4 } from "node:fs";
144018
144796
  import { dirname as dirname2 } from "node:path";
144019
144797
 
@@ -144143,7 +144921,7 @@ function ensureBrowserDaemon(toolState) {
144143
144921
  }
144144
144922
  const agentBrowserVersion = getDevDependencyVersion("agent-browser");
144145
144923
  log.info(`installing agent-browser@${agentBrowserVersion}...`);
144146
- const install = spawnSync3("npm", ["install", "-g", `agent-browser@${agentBrowserVersion}`], {
144924
+ const install = spawnSync4("npm", ["install", "-g", `agent-browser@${agentBrowserVersion}`], {
144147
144925
  stdio: "pipe",
144148
144926
  encoding: "utf-8"
144149
144927
  });
@@ -144156,7 +144934,7 @@ function ensureBrowserDaemon(toolState) {
144156
144934
  log.info("agent-browser installed");
144157
144935
  let binDir;
144158
144936
  try {
144159
- const binPath = execFileSync6("which", ["agent-browser"], { encoding: "utf-8" }).trim();
144937
+ const binPath = execFileSync5("which", ["agent-browser"], { encoding: "utf-8" }).trim();
144160
144938
  binDir = dirname2(binPath);
144161
144939
  log.info(`agent-browser binary: ${binPath}`);
144162
144940
  } catch {
@@ -144167,7 +144945,7 @@ function ensureBrowserDaemon(toolState) {
144167
144945
  }
144168
144946
  const env2 = buildEnv();
144169
144947
  log.info("starting browser daemon...");
144170
- const seed = spawnSync3("agent-browser", ["open", "about:blank"], {
144948
+ const seed = spawnSync4("agent-browser", ["open", "about:blank"], {
144171
144949
  env: env2,
144172
144950
  stdio: "pipe",
144173
144951
  encoding: "utf-8",
@@ -144192,7 +144970,7 @@ function closeBrowserDaemon(toolState) {
144192
144970
  delete toolState.browserDaemon;
144193
144971
  try {
144194
144972
  log.info("closing browser daemon...");
144195
- spawnSync3("agent-browser", ["close"], {
144973
+ spawnSync4("agent-browser", ["close"], {
144196
144974
  env: filterEnv(),
144197
144975
  stdio: "pipe",
144198
144976
  timeout: 1e4
@@ -152282,11 +153060,11 @@ import { readFileSync as readFileSync3, realpathSync, unlinkSync } from "node:fs
152282
153060
  import { join as join9 } from "node:path";
152283
153061
 
152284
153062
  // utils/shell.ts
152285
- import { spawnSync as spawnSync4 } from "node:child_process";
153063
+ import { spawnSync as spawnSync5 } from "node:child_process";
152286
153064
  function $2(cmd, args2, options) {
152287
153065
  const encoding = options?.encoding ?? "utf-8";
152288
153066
  const env2 = resolveEnv(options?.env);
152289
- const result = spawnSync4(cmd, args2, {
153067
+ const result = spawnSync5(cmd, args2, {
152290
153068
  stdio: ["ignore", "pipe", "pipe"],
152291
153069
  encoding,
152292
153070
  cwd: options?.cwd,
@@ -152455,19 +153233,19 @@ async function $gitFetchWithDeepen(args2, options, label) {
152455
153233
  }
152456
153234
 
152457
153235
  // utils/lifecycle.ts
152458
- function describeSetupFailure(failure) {
152459
- if (!failure) return "";
152460
- switch (failure.kind) {
153236
+ function describeSetupFailure(failure2) {
153237
+ if (!failure2) return "";
153238
+ switch (failure2.kind) {
152461
153239
  case "exit":
152462
- return `It exited with code ${failure.exitCode}. Output:
153240
+ return `It exited with code ${failure2.exitCode}. Output:
152463
153241
 
152464
- ${failure.output || "(empty)"}`;
153242
+ ${failure2.output || "(empty)"}`;
152465
153243
  case "timeout":
152466
153244
  return "It timed out and was killed before completing.";
152467
153245
  case "spawn":
152468
- return `It failed to start: ${failure.spawnError}`;
153246
+ return `It failed to start: ${failure2.spawnError}`;
152469
153247
  default: {
152470
- const _exhaustive = failure;
153248
+ const _exhaustive = failure2;
152471
153249
  return _exhaustive;
152472
153250
  }
152473
153251
  }
@@ -153509,7 +154287,7 @@ import { writeFileSync as writeFileSync8 } from "node:fs";
153509
154287
  import { join as join12 } from "node:path";
153510
154288
 
153511
154289
  // utils/apiCommit.ts
153512
- import { execFileSync as execFileSync7 } from "node:child_process";
154290
+ import { execFileSync as execFileSync6 } from "node:child_process";
153513
154291
  import { lstat, readlink } from "node:fs/promises";
153514
154292
  import { join as join10 } from "node:path";
153515
154293
  var GITHUB_API = "https://api.github.com";
@@ -153612,7 +154390,7 @@ async function createBlobEntry(params) {
153612
154390
  } else {
153613
154391
  mode = stat.mode & 64 ? "100755" : "100644";
153614
154392
  const cleanSha = $2("git", ["hash-object", "-w", "--", absPath], { log: false }).trim();
153615
- content = execFileSync7("git", ["cat-file", "blob", cleanSha], {
154393
+ content = execFileSync6("git", ["cat-file", "blob", cleanSha], {
153616
154394
  cwd: params.repoRoot,
153617
154395
  maxBuffer: 2 * MAX_BLOB_BYTES
153618
154396
  });
@@ -158643,11 +159421,11 @@ ${integrateStep}
158643
159421
  });
158644
159422
  }
158645
159423
  function buildPrepushFailureMessage(params) {
158646
- const failure = params.failure;
158647
- const header = failure.kind === "exit" ? `prepush hook failed with exit code ${failure.exitCode}.
159424
+ const failure2 = params.failure;
159425
+ const header = failure2.kind === "exit" ? `prepush hook failed with exit code ${failure2.exitCode}.
158648
159426
 
158649
159427
  script output:
158650
- ${failure.output || "(empty)"}` : failure.kind === "timeout" ? `prepush hook timed out \u2014 the script is hung or doing too much work.` : `prepush hook failed to spawn: ${failure.spawnError}.`;
159428
+ ${failure2.output || "(empty)"}` : failure2.kind === "timeout" ? `prepush hook timed out \u2014 the script is hung or doing too much work.` : `prepush hook failed to spawn: ${failure2.spawnError}.`;
158651
159429
  const ifRealBug = params.shell === "disabled" ? `fix it before pushing again \u2014 shell access is disabled in this run, so you can't re-run the hook command yourself.` : `run the hook command yourself via the shell tool to iterate (${params.retryTool} will NOT re-run it).`;
158652
159430
  return `${header}
158653
159431
 
@@ -159231,7 +160009,7 @@ async function patchWorkflowRunFields(ctx, fields) {
159231
160009
  }
159232
160010
  )();
159233
160011
  } catch (error49) {
159234
- log.warning(`patchWorkflowRunFields exhausted retries: ${error49}`);
160012
+ log.warning(`patchWorkflowRunFields failed: ${error49}`);
159235
160013
  }
159236
160014
  }
159237
160015
  var INT4_MAX = 2147483647;
@@ -160484,7 +161262,7 @@ async function reportReviewNodeId(ctx, params) {
160484
161262
  }
160485
161263
 
160486
161264
  // utils/setup.ts
160487
- import { execFileSync as execFileSync8, execSync as execSync2 } from "node:child_process";
161265
+ import { execFileSync as execFileSync7, execSync as execSync2 } from "node:child_process";
160488
161266
  import { mkdtempSync as mkdtempSync2, readdirSync, realpathSync as realpathSync2, unlinkSync as unlinkSync2 } from "node:fs";
160489
161267
  import { tmpdir as tmpdir3 } from "node:os";
160490
161268
  import { join as join13 } from "node:path";
@@ -160577,7 +161355,7 @@ function removeIncludeIfEntries(repoDir) {
160577
161355
  if (!key || seen.has(key)) continue;
160578
161356
  seen.add(key);
160579
161357
  try {
160580
- execFileSync8("git", ["config", "--local", "--unset-all", key], {
161358
+ execFileSync7("git", ["config", "--local", "--unset-all", key], {
160581
161359
  cwd: repoDir,
160582
161360
  stdio: "pipe",
160583
161361
  env: env2
@@ -163823,7 +164601,7 @@ ${summaryAddendum}`,
163823
164601
  }
163824
164602
 
163825
164603
  // mcp/shell.ts
163826
- import { spawn as spawn5, spawnSync as spawnSync5 } from "node:child_process";
164604
+ import { spawn as spawn5, spawnSync as spawnSync6 } from "node:child_process";
163827
164605
  import { randomUUID as randomUUID4 } from "node:crypto";
163828
164606
  import { closeSync, openSync, writeFileSync as writeFileSync13 } from "node:fs";
163829
164607
  import { userInfo as userInfo2 } from "node:os";
@@ -163849,7 +164627,7 @@ function detectSandboxMethod() {
163849
164627
  return "none";
163850
164628
  }
163851
164629
  try {
163852
- const result = spawnSync5("unshare", ["--pid", "--fork", "--mount-proc", "true"], {
164630
+ const result = spawnSync6("unshare", ["--pid", "--fork", "--mount-proc", "true"], {
163853
164631
  timeout: 5e3,
163854
164632
  stdio: "ignore"
163855
164633
  });
@@ -163861,7 +164639,7 @@ function detectSandboxMethod() {
163861
164639
  } catch {
163862
164640
  }
163863
164641
  try {
163864
- const result = spawnSync5("sudo", ["unshare", "--pid", "--fork", "--mount-proc", "true"], {
164642
+ const result = spawnSync6("sudo", ["unshare", "--pid", "--fork", "--mount-proc", "true"], {
163865
164643
  timeout: 5e3,
163866
164644
  stdio: "ignore"
163867
164645
  });
@@ -163903,7 +164681,7 @@ function resolveRepoRoot() {
163903
164681
  return _repoRoot;
163904
164682
  }
163905
164683
  try {
163906
- _repoRoot = spawnSync5("git", ["rev-parse", "--show-toplevel"], {
164684
+ _repoRoot = spawnSync6("git", ["rev-parse", "--show-toplevel"], {
163907
164685
  cwd: process.cwd(),
163908
164686
  stdio: ["ignore", "pipe", "ignore"],
163909
164687
  encoding: "utf-8"
@@ -164697,6 +165475,8 @@ function validateAgentApiKey(params) {
164697
165475
  }
164698
165476
  if (params.agent.name === "opencode") {
164699
165477
  if (params.authorized.has(params.model)) return;
165478
+ const reason = getModelsFailure();
165479
+ if (reason) throw new Error(reason);
164700
165480
  throw new Error(
164701
165481
  buildMissingApiKeyError({ owner: params.owner, name: params.name, model: params.model })
164702
165482
  );
@@ -164708,6 +165488,8 @@ function validateAgentApiKey(params) {
164708
165488
  }
164709
165489
  if (params.agent.name === "opencode") {
164710
165490
  if (params.authorized.size > 0) return;
165491
+ const reason = getModelsFailure();
165492
+ if (reason) throw new Error(reason);
164711
165493
  throw new Error(buildMissingApiKeyError({ owner: params.owner, name: params.name }));
164712
165494
  }
164713
165495
  if (hasEnvVar3("ANTHROPIC_API_KEY") || hasEnvVar3("CLAUDE_CODE_OAUTH_TOKEN")) return;
@@ -164715,10 +165497,13 @@ function validateAgentApiKey(params) {
164715
165497
  }
164716
165498
  function isApiKeyAuthError(text) {
164717
165499
  if (!text) return false;
164718
- return text.includes(MISSING_KEY_MARKER) || /Invalid API key/i.test(text) || /\bUser not found\b/i.test(text) || /\bInvalid authentication\b/i.test(text) || /authentication_error/i.test(text) || /Invalid bearer token/i.test(text) || /api_error_status\s*=\s*401/i.test(text) || /API Error:\s*401/i.test(text) || /Failed to authenticate\. API Error:/i.test(text) || /Your api key:.*is invalid/i.test(text) || isOAuthCredentialExpiredError(text);
165500
+ return text.includes(MISSING_KEY_MARKER) || /Invalid API key/i.test(text) || /\bUser not found\b/i.test(text) || /\bInvalid authentication\b/i.test(text) || /authentication_error/i.test(text) || /Invalid bearer token/i.test(text) || /api_error_status\s*=\s*401/i.test(text) || /API Error:\s*401/i.test(text) || /Failed to authenticate\. API Error:/i.test(text) || /Your api key:.*is invalid/i.test(text) || isClaudeSubscriptionDisabledError(text) || isOAuthCredentialExpiredError(text);
164719
165501
  }
164720
165502
  function isOAuthCredentialExpiredError(text) {
164721
- return /authentication token has expired/i.test(text) || /Token refresh failed/i.test(text);
165503
+ return /authentication token has (expired|been invalidated)/i.test(text) || /OAuth access token has expired/i.test(text) || /Token refresh failed/i.test(text);
165504
+ }
165505
+ function isClaudeSubscriptionDisabledError(text) {
165506
+ return /disabled Claude subscription access/i.test(text);
164722
165507
  }
164723
165508
  function formatApiKeyErrorSummary(params) {
164724
165509
  if (params.raw.includes(MISSING_KEY_MARKER)) {
@@ -164727,11 +165512,18 @@ function formatApiKeyErrorSummary(params) {
164727
165512
  }
164728
165513
  const githubSecretsUrl = `https://github.com/${params.owner}/${params.name}/settings/secrets/actions`;
164729
165514
  const settingsUrl = `${getApiUrl()}/console/${params.owner}/${params.name}`;
165515
+ if (isClaudeSubscriptionDisabledError(params.raw)) {
165516
+ return [
165517
+ `**Your organization has disabled Claude subscription access for Claude Code.** Ask your Claude organization's admin to re-enable it in the Claude Console, or set an \`ANTHROPIC_API_KEY\` for this repo instead, then re-trigger the run.`,
165518
+ "",
165519
+ `[Add repo secret \u2192](${githubSecretsUrl}) \xB7 [Model settings \u2192](${settingsUrl}) \xB7 [Setup docs \u2192](https://docs.pullfrog.com/keys) \xB7 [Ask in Discord \u2192](https://discord.gg/8y96raFg8e)`
165520
+ ].join("\n");
165521
+ }
164730
165522
  if (isOAuthCredentialExpiredError(params.raw)) {
164731
165523
  return [
164732
- `**Your provider OAuth credential has expired.** Re-authenticate the provider connection (e.g. \`pullfrog auth codex\`), then re-trigger the run.`,
165524
+ `**Your provider OAuth credential has expired or been revoked.** Re-authenticate the provider connection (e.g. \`pullfrog auth claude\` / \`pullfrog auth codex\`), then re-trigger the run.`,
164733
165525
  "",
164734
- `[Model settings \u2192](${settingsUrl}) \xB7 [Setup docs \u2192](https://docs.pullfrog.com/keys) \xB7 [Ask in Discord \u2192](https://discord.gg/8y96raFg8e)`
165526
+ `[Claude subscription \u2192](https://docs.pullfrog.com/claude-auth) \xB7 [ChatGPT subscription \u2192](https://docs.pullfrog.com/codex-auth) \xB7 [Model settings \u2192](${settingsUrl}) \xB7 [Ask in Discord \u2192](https://discord.gg/8y96raFg8e)`
164735
165527
  ].join("\n");
164736
165528
  }
164737
165529
  return [
@@ -165600,7 +166392,7 @@ function formatBillingErrorSummary(error49, owner) {
165600
166392
  return [
165601
166393
  "**Your Pullfrog Router balance is exhausted.**",
165602
166394
  "",
165603
- "You have a card on file but auto-reload is disabled, so runs paused once your balance went past the overdraft buffer.",
166395
+ "You have a payment method on file but auto-reload is disabled, so runs paused once your balance went past the overdraft buffer.",
165604
166396
  "",
165605
166397
  `[Top up balance \u2192](${billingConsoleUrl(owner, "billing")}) \xB7 [Enable auto-reload \u2192](${billingConsoleUrl(owner, "model-access")})`
165606
166398
  ].join("\n");
@@ -167676,7 +168468,7 @@ async function run(args2) {
167676
168468
  }
167677
168469
 
167678
168470
  // commands/init.ts
167679
- import { execFileSync as execFileSync9 } from "node:child_process";
168471
+ import { execFileSync as execFileSync8 } from "node:child_process";
167680
168472
  var import_arg3 = __toESM(require_arg(), 1);
167681
168473
  var import_picocolors3 = __toESM(require_picocolors(), 1);
167682
168474
  var PULLFROG_API_URL2 = (process.env.PULLFROG_API_URL || "https://pullfrog.com").replace(
@@ -167736,7 +168528,7 @@ function handleCancel2(value2) {
167736
168528
  function getGhToken2() {
167737
168529
  let token;
167738
168530
  try {
167739
- token = execFileSync9("gh", ["auth", "token"], { encoding: "utf-8" }).trim();
168531
+ token = execFileSync8("gh", ["auth", "token"], { encoding: "utf-8" }).trim();
167740
168532
  } catch {
167741
168533
  bail2(
167742
168534
  `gh cli not found or not authenticated.
@@ -167779,7 +168571,7 @@ async function ghApi(path4, token) {
167779
168571
  function parseGitRemote2() {
167780
168572
  let url4;
167781
168573
  try {
167782
- url4 = execFileSync9("git", ["remote", "get-url", "origin"], { encoding: "utf-8" }).trim();
168574
+ url4 = execFileSync8("git", ["remote", "get-url", "origin"], { encoding: "utf-8" }).trim();
167783
168575
  } catch {
167784
168576
  bail2("not a git repository or no 'origin' remote found.");
167785
168577
  }
@@ -167790,10 +168582,10 @@ function parseGitRemote2() {
167790
168582
  function openBrowser(url4) {
167791
168583
  try {
167792
168584
  const platform = process.platform;
167793
- if (platform === "darwin") execFileSync9("open", [url4], { stdio: "ignore" });
168585
+ if (platform === "darwin") execFileSync8("open", [url4], { stdio: "ignore" });
167794
168586
  else if (platform === "win32")
167795
- execFileSync9("cmd", ["/c", "start", "", url4], { stdio: "ignore" });
167796
- else execFileSync9("xdg-open", [url4], { stdio: "ignore" });
168587
+ execFileSync8("cmd", ["/c", "start", "", url4], { stdio: "ignore" });
168588
+ else execFileSync8("xdg-open", [url4], { stdio: "ignore" });
167797
168589
  } catch {
167798
168590
  }
167799
168591
  }
@@ -168020,7 +168812,7 @@ function setGhSecret(ctx) {
168020
168812
  let orgFailed = false;
168021
168813
  if (ctx.org) {
168022
168814
  try {
168023
- execFileSync9("gh", ["secret", "set", ctx.name, "--org", ctx.org, "--visibility", "all"], {
168815
+ execFileSync8("gh", ["secret", "set", ctx.name, "--org", ctx.org, "--visibility", "all"], {
168024
168816
  input: ctx.value,
168025
168817
  stdio: ["pipe", "ignore", "pipe"],
168026
168818
  encoding: "utf-8"
@@ -168031,7 +168823,7 @@ function setGhSecret(ctx) {
168031
168823
  }
168032
168824
  }
168033
168825
  try {
168034
- execFileSync9("gh", ["secret", "set", ctx.name, "--repo", ctx.repoSlug], {
168826
+ execFileSync8("gh", ["secret", "set", ctx.name, "--repo", ctx.repoSlug], {
168035
168827
  input: ctx.value,
168036
168828
  stdio: ["pipe", "ignore", "pipe"],
168037
168829
  encoding: "utf-8"
@@ -168517,7 +169309,7 @@ async function runCli4(input) {
168517
169309
  }
168518
169310
 
168519
169311
  // cli.ts
168520
- var VERSION10 = "0.1.39";
169312
+ var VERSION10 = "0.1.41";
168521
169313
  var bin = basename2(process.argv[1] || "");
168522
169314
  var PROG = bin === "pf" || bin === "pullfrog" ? bin : "pullfrog";
168523
169315
  var rawArgs = process.argv.slice(2);