pullfrog 0.1.40 → 0.1.42

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 },
@@ -101765,8 +101765,8 @@ var providers = {
101765
101765
  },
101766
101766
  "claude-opus": {
101767
101767
  displayName: "Claude Opus",
101768
- resolve: "anthropic/claude-opus-4-8",
101769
- openRouterResolve: "openrouter/anthropic/claude-opus-4.8",
101768
+ resolve: "anthropic/claude-opus-5",
101769
+ openRouterResolve: "openrouter/anthropic/claude-opus-5",
101770
101770
  preferred: true,
101771
101771
  subagentModel: "claude-sonnet"
101772
101772
  },
@@ -101964,8 +101964,8 @@ var providers = {
101964
101964
  },
101965
101965
  "claude-opus": {
101966
101966
  displayName: "Claude Opus",
101967
- resolve: "opencode/claude-opus-4-8",
101968
- openRouterResolve: "openrouter/anthropic/claude-opus-4.8",
101967
+ resolve: "opencode/claude-opus-5",
101968
+ openRouterResolve: "openrouter/anthropic/claude-opus-5",
101969
101969
  subagentModel: "claude-sonnet"
101970
101970
  },
101971
101971
  "claude-sonnet": {
@@ -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.40",
103025
+ version: "0.1.42",
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",
@@ -104288,21 +104288,26 @@ var NON_COMMITTING_MODES = /* @__PURE__ */ new Set([
104288
104288
  ]);
104289
104289
 
104290
104290
  // agents/postRun.ts
104291
- function getUnsubmittedReview(toolState) {
104291
+ function getUnsubmittedReview(toolState, expectsReviewOutput2 = toolState.hadProgressComment) {
104292
104292
  const mode = toolState.selectedMode;
104293
- if (!toolState.hadProgressComment) return null;
104293
+ if (!expectsReviewOutput2) return null;
104294
104294
  if (mode === "Review") return toolState.review ? null : "Review";
104295
104295
  if (mode === "IncrementalReview") {
104296
104296
  return toolState.review || toolState.finalSummaryWritten ? null : "IncrementalReview";
104297
104297
  }
104298
104298
  return null;
104299
104299
  }
104300
- function buildStopHookPrompt(failure) {
104300
+ function expectsReviewOutput(ctx) {
104301
+ if (ctx.toolState.hadProgressComment) return true;
104302
+ if (ctx.payload.progressComments) return false;
104303
+ return ctx.payload.event.silent !== true && ctx.payload.event.issue_number !== void 0;
104304
+ }
104305
+ function buildStopHookPrompt(failure2) {
104301
104306
  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.`,
104307
+ `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
104308
  "",
104304
104309
  "```",
104305
- failure.output || "(no output)",
104310
+ failure2.output || "(no output)",
104306
104311
  "```"
104307
104312
  ].join("\n");
104308
104313
  }
@@ -104360,7 +104365,7 @@ async function collectPostRunIssues(ctx, options = {}) {
104360
104365
  const stale = await isSummaryUnchanged(summaryFilePath2, summarySeed);
104361
104366
  if (stale) issues.summaryStale = { filePath: summaryFilePath2 };
104362
104367
  }
104363
- const unsubmittedMode = getUnsubmittedReview(ctx.toolState);
104368
+ const unsubmittedMode = getUnsubmittedReview(ctx.toolState, expectsReviewOutput(ctx));
104364
104369
  if (unsubmittedMode) issues.unsubmittedReview = unsubmittedMode;
104365
104370
  return issues;
104366
104371
  }
@@ -105328,7 +105333,7 @@ import { mkdirSync as mkdirSync6, writeFileSync as writeFileSync6 } from "node:f
105328
105333
  import { join as join7 } from "node:path";
105329
105334
  import { performance as performance6 } from "node:perf_hooks";
105330
105335
 
105331
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
105336
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
105332
105337
  var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url: url4, ...options }) => {
105333
105338
  let lastEventId;
105334
105339
  const sleep4 = sseSleepFn ?? ((ms) => new Promise((resolve3) => setTimeout(resolve3, ms)));
@@ -105447,7 +105452,7 @@ var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer,
105447
105452
  return { stream };
105448
105453
  };
105449
105454
 
105450
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js
105455
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js
105451
105456
  var separatorArrayExplode = (style) => {
105452
105457
  switch (style) {
105453
105458
  case "label":
@@ -105550,7 +105555,7 @@ var serializeObjectParam = ({ allowReserved, explode, name, style, value: value2
105550
105555
  return style === "label" || style === "matrix" ? separator2 + joinedValues : joinedValues;
105551
105556
  };
105552
105557
 
105553
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js
105558
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js
105554
105559
  var PATH_PARAM_RE = /\{[^{}]+\}/g;
105555
105560
  var defaultPathSerializer = ({ path: path4, url: _url4 }) => {
105556
105561
  let url4 = _url4;
@@ -105633,7 +105638,7 @@ function getValidRequestBody(options) {
105633
105638
  return void 0;
105634
105639
  }
105635
105640
 
105636
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js
105641
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js
105637
105642
  var getAuthToken = async (auth2, callback) => {
105638
105643
  const token = typeof callback === "function" ? await callback(auth2) : callback;
105639
105644
  if (!token) {
@@ -105648,12 +105653,12 @@ var getAuthToken = async (auth2, callback) => {
105648
105653
  return token;
105649
105654
  };
105650
105655
 
105651
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js
105656
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js
105652
105657
  var jsonBodySerializer = {
105653
105658
  bodySerializer: (body) => JSON.stringify(body, (_key, value2) => typeof value2 === "bigint" ? value2.toString() : value2)
105654
105659
  };
105655
105660
 
105656
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js
105661
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js
105657
105662
  var createQuerySerializer = ({ parameters = {}, ...args2 } = {}) => {
105658
105663
  const querySerializer = (queryParams) => {
105659
105664
  const search2 = [];
@@ -105863,7 +105868,7 @@ var createConfig = (override = {}) => ({
105863
105868
  ...override
105864
105869
  });
105865
105870
 
105866
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js
105871
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js
105867
105872
  var createClient = (config3 = {}) => {
105868
105873
  let _config = mergeConfigs(createConfig(), config3);
105869
105874
  const getConfig = () => ({ ..._config });
@@ -106071,7 +106076,7 @@ var createClient = (config3 = {}) => {
106071
106076
  };
106072
106077
  };
106073
106078
 
106074
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js
106079
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js
106075
106080
  var extraPrefixesMap = {
106076
106081
  $body_: "body",
106077
106082
  $headers_: "headers",
@@ -106167,10 +106172,10 @@ var buildClientParams = (args2, fields) => {
106167
106172
  return params;
106168
106173
  };
106169
106174
 
106170
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js
106175
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js
106171
106176
  var client = createClient(createConfig({ baseUrl: "http://localhost:4096" }));
106172
106177
 
106173
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js
106178
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js
106174
106179
  var HeyApiClient = class {
106175
106180
  client;
106176
106181
  constructor(args2) {
@@ -106330,6 +106335,28 @@ var ControlPlane = class extends HeyApiClient {
106330
106335
  });
106331
106336
  }
106332
106337
  };
106338
+ var Capabilities = class extends HeyApiClient {
106339
+ /**
106340
+ * Get experimental capabilities
106341
+ *
106342
+ * Get experimental features enabled on the OpenCode server.
106343
+ */
106344
+ get(parameters, options) {
106345
+ const params = buildClientParams([parameters], [
106346
+ {
106347
+ args: [
106348
+ { in: "query", key: "directory" },
106349
+ { in: "query", key: "workspace" }
106350
+ ]
106351
+ }
106352
+ ]);
106353
+ return (options?.client ?? this.client).get({
106354
+ url: "/experimental/capabilities",
106355
+ ...options,
106356
+ ...params
106357
+ });
106358
+ }
106359
+ };
106333
106360
  var Console = class extends HeyApiClient {
106334
106361
  /**
106335
106362
  * Get active Console provider metadata
@@ -106472,60 +106499,23 @@ var Resource = class extends HeyApiClient {
106472
106499
  };
106473
106500
  var ProjectCopy = class extends HeyApiClient {
106474
106501
  /**
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
106502
+ * Generate project copy name
106511
106503
  *
106512
- * Create a local physical copy of a project using the selected strategy.
106504
+ * Generate a short name for a project copy from task context.
106513
106505
  */
106514
- create(parameters, options) {
106506
+ generateName(parameters, options) {
106515
106507
  const params = buildClientParams([parameters], [
106516
106508
  {
106517
106509
  args: [
106518
106510
  { in: "path", key: "projectID" },
106511
+ { in: "query", key: "directory" },
106519
106512
  { in: "query", key: "workspace" },
106520
- { in: "body", key: "strategy" },
106521
- { in: "body", key: "directory" },
106522
- { in: "body", key: "name" },
106523
106513
  { in: "body", key: "context" }
106524
106514
  ]
106525
106515
  }
106526
106516
  ]);
106527
106517
  return (options?.client ?? this.client).post({
106528
- url: "/experimental/project/{projectID}/copy",
106518
+ url: "/experimental/project/{projectID}/copy/generate-name",
106529
106519
  ...options,
106530
106520
  ...params,
106531
106521
  headers: {
@@ -106535,27 +106525,6 @@ var ProjectCopy = class extends HeyApiClient {
106535
106525
  }
106536
106526
  });
106537
106527
  }
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
106528
  };
106560
106529
  var Adapter = class extends HeyApiClient {
106561
106530
  /**
@@ -106728,6 +106697,10 @@ var Experimental = class extends HeyApiClient {
106728
106697
  get controlPlane() {
106729
106698
  return this._controlPlane ??= new ControlPlane({ client: this.client });
106730
106699
  }
106700
+ _capabilities;
106701
+ get capabilities() {
106702
+ return this._capabilities ??= new Capabilities({ client: this.client });
106703
+ }
106731
106704
  _console;
106732
106705
  get console() {
106733
106706
  return this._console ??= new Console({ client: this.client });
@@ -109251,9 +109224,9 @@ var Tui = class extends HeyApiClient {
109251
109224
  };
109252
109225
  var Health = class extends HeyApiClient {
109253
109226
  /**
109254
- * Check v2 server health
109227
+ * Check server health
109255
109228
  *
109256
- * Check whether the v2 API server is ready to accept requests.
109229
+ * Check whether the API server is ready to accept requests.
109257
109230
  */
109258
109231
  get(options) {
109259
109232
  return (options?.client ?? this.client).get({
@@ -109262,11 +109235,26 @@ var Health = class extends HeyApiClient {
109262
109235
  });
109263
109236
  }
109264
109237
  };
109238
+ var Location = class extends HeyApiClient {
109239
+ /**
109240
+ * Get location
109241
+ *
109242
+ * Resolve the requested location or the server default location.
109243
+ */
109244
+ get(parameters, options) {
109245
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
109246
+ return (options?.client ?? this.client).get({
109247
+ url: "/api/location",
109248
+ ...options,
109249
+ ...params
109250
+ });
109251
+ }
109252
+ };
109265
109253
  var Agent = class extends HeyApiClient {
109266
109254
  /**
109267
- * List v2 agents
109255
+ * List agents
109268
109256
  *
109269
- * Retrieve currently registered v2 agents.
109257
+ * Retrieve currently registered agents.
109270
109258
  */
109271
109259
  list(parameters, options) {
109272
109260
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109277,6 +109265,56 @@ var Agent = class extends HeyApiClient {
109277
109265
  });
109278
109266
  }
109279
109267
  };
109268
+ var Revert = class extends HeyApiClient {
109269
+ /**
109270
+ * Stage session revert
109271
+ *
109272
+ * Stage or move a reversible session boundary and optionally apply its file changes.
109273
+ */
109274
+ stage(parameters, options) {
109275
+ const params = buildClientParams([parameters], [
109276
+ {
109277
+ args: [
109278
+ { in: "path", key: "sessionID" },
109279
+ { in: "body", key: "messageID" },
109280
+ { in: "body", key: "files" }
109281
+ ]
109282
+ }
109283
+ ]);
109284
+ return (options?.client ?? this.client).post({
109285
+ url: "/api/session/{sessionID}/revert/stage",
109286
+ ...options,
109287
+ ...params,
109288
+ headers: {
109289
+ "Content-Type": "application/json",
109290
+ ...options?.headers,
109291
+ ...params.headers
109292
+ }
109293
+ });
109294
+ }
109295
+ /**
109296
+ * Clear staged revert
109297
+ */
109298
+ clear(parameters, options) {
109299
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109300
+ return (options?.client ?? this.client).post({
109301
+ url: "/api/session/{sessionID}/revert/clear",
109302
+ ...options,
109303
+ ...params
109304
+ });
109305
+ }
109306
+ /**
109307
+ * Commit staged revert
109308
+ */
109309
+ commit(parameters, options) {
109310
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109311
+ return (options?.client ?? this.client).post({
109312
+ url: "/api/session/{sessionID}/revert/commit",
109313
+ ...options,
109314
+ ...params
109315
+ });
109316
+ }
109317
+ };
109280
109318
  var Permission2 = class extends HeyApiClient {
109281
109319
  /**
109282
109320
  * List session permission requests
@@ -109286,7 +109324,58 @@ var Permission2 = class extends HeyApiClient {
109286
109324
  list(parameters, options) {
109287
109325
  const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109288
109326
  return (options?.client ?? this.client).get({
109289
- url: "/api/session/{sessionID}/permission/request",
109327
+ url: "/api/session/{sessionID}/permission",
109328
+ ...options,
109329
+ ...params
109330
+ });
109331
+ }
109332
+ /**
109333
+ * Create permission request
109334
+ *
109335
+ * Evaluate and, when approval is required, create a permission request for a session.
109336
+ */
109337
+ create(parameters, options) {
109338
+ const params = buildClientParams([parameters], [
109339
+ {
109340
+ args: [
109341
+ { in: "path", key: "sessionID" },
109342
+ { in: "body", key: "id" },
109343
+ { in: "body", key: "action" },
109344
+ { in: "body", key: "resources" },
109345
+ { in: "body", key: "save" },
109346
+ { in: "body", key: "metadata" },
109347
+ { in: "body", key: "source" },
109348
+ { in: "body", key: "agent" }
109349
+ ]
109350
+ }
109351
+ ]);
109352
+ return (options?.client ?? this.client).post({
109353
+ url: "/api/session/{sessionID}/permission",
109354
+ ...options,
109355
+ ...params,
109356
+ headers: {
109357
+ "Content-Type": "application/json",
109358
+ ...options?.headers,
109359
+ ...params.headers
109360
+ }
109361
+ });
109362
+ }
109363
+ /**
109364
+ * Get permission request
109365
+ *
109366
+ * Retrieve a pending permission request owned by a session.
109367
+ */
109368
+ get(parameters, options) {
109369
+ const params = buildClientParams([parameters], [
109370
+ {
109371
+ args: [
109372
+ { in: "path", key: "sessionID" },
109373
+ { in: "path", key: "requestID" }
109374
+ ]
109375
+ }
109376
+ ]);
109377
+ return (options?.client ?? this.client).get({
109378
+ url: "/api/session/{sessionID}/permission/{requestID}",
109290
109379
  ...options,
109291
109380
  ...params
109292
109381
  });
@@ -109308,7 +109397,7 @@ var Permission2 = class extends HeyApiClient {
109308
109397
  }
109309
109398
  ]);
109310
109399
  return (options?.client ?? this.client).post({
109311
- url: "/api/session/{sessionID}/permission/request/{requestID}/reply",
109400
+ url: "/api/session/{sessionID}/permission/{requestID}/reply",
109312
109401
  ...options,
109313
109402
  ...params,
109314
109403
  headers: {
@@ -109320,6 +109409,19 @@ var Permission2 = class extends HeyApiClient {
109320
109409
  }
109321
109410
  };
109322
109411
  var Question2 = class extends HeyApiClient {
109412
+ /**
109413
+ * List session question requests
109414
+ *
109415
+ * Retrieve pending question requests owned by a session.
109416
+ */
109417
+ list(parameters, options) {
109418
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109419
+ return (options?.client ?? this.client).get({
109420
+ url: "/api/session/{sessionID}/question",
109421
+ ...options,
109422
+ ...params
109423
+ });
109424
+ }
109323
109425
  /**
109324
109426
  * Reply to pending question request
109325
109427
  *
@@ -109336,7 +109438,7 @@ var Question2 = class extends HeyApiClient {
109336
109438
  }
109337
109439
  ]);
109338
109440
  return (options?.client ?? this.client).post({
109339
- url: "/api/session/{sessionID}/question/request/{requestID}/reply",
109441
+ url: "/api/session/{sessionID}/question/{requestID}/reply",
109340
109442
  ...options,
109341
109443
  ...params,
109342
109444
  headers: {
@@ -109361,7 +109463,7 @@ var Question2 = class extends HeyApiClient {
109361
109463
  }
109362
109464
  ]);
109363
109465
  return (options?.client ?? this.client).post({
109364
- url: "/api/session/{sessionID}/question/request/{requestID}/reject",
109466
+ url: "/api/session/{sessionID}/question/{requestID}/reject",
109365
109467
  ...options,
109366
109468
  ...params
109367
109469
  });
@@ -109369,7 +109471,7 @@ var Question2 = class extends HeyApiClient {
109369
109471
  };
109370
109472
  var Session3 = class extends HeyApiClient {
109371
109473
  /**
109372
- * List v2 sessions
109474
+ * List sessions
109373
109475
  *
109374
109476
  * 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
109477
  */
@@ -109395,9 +109497,110 @@ var Session3 = class extends HeyApiClient {
109395
109497
  });
109396
109498
  }
109397
109499
  /**
109398
- * Send v2 message
109500
+ * Create session
109501
+ *
109502
+ * Create a session at the requested location.
109503
+ */
109504
+ create(parameters, options) {
109505
+ const params = buildClientParams([parameters], [
109506
+ {
109507
+ args: [
109508
+ { in: "body", key: "id" },
109509
+ { in: "body", key: "agent" },
109510
+ { in: "body", key: "model" },
109511
+ { in: "body", key: "location" }
109512
+ ]
109513
+ }
109514
+ ]);
109515
+ return (options?.client ?? this.client).post({
109516
+ url: "/api/session",
109517
+ ...options,
109518
+ ...params,
109519
+ headers: {
109520
+ "Content-Type": "application/json",
109521
+ ...options?.headers,
109522
+ ...params.headers
109523
+ }
109524
+ });
109525
+ }
109526
+ /**
109527
+ * List active sessions
109528
+ *
109529
+ * Retrieve foreground Session drains currently owned by this OpenCode process. Sessions absent from the result are inactive.
109530
+ */
109531
+ active(options) {
109532
+ return (options?.client ?? this.client).get({
109533
+ url: "/api/session/active",
109534
+ ...options
109535
+ });
109536
+ }
109537
+ /**
109538
+ * Get session
109539
+ *
109540
+ * Retrieve a session by ID.
109541
+ */
109542
+ get(parameters, options) {
109543
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109544
+ return (options?.client ?? this.client).get({
109545
+ url: "/api/session/{sessionID}",
109546
+ ...options,
109547
+ ...params
109548
+ });
109549
+ }
109550
+ /**
109551
+ * Switch session agent
109552
+ *
109553
+ * Switch the agent used by subsequent provider turns.
109554
+ */
109555
+ switchAgent(parameters, options) {
109556
+ const params = buildClientParams([parameters], [
109557
+ {
109558
+ args: [
109559
+ { in: "path", key: "sessionID" },
109560
+ { in: "body", key: "agent" }
109561
+ ]
109562
+ }
109563
+ ]);
109564
+ return (options?.client ?? this.client).post({
109565
+ url: "/api/session/{sessionID}/agent",
109566
+ ...options,
109567
+ ...params,
109568
+ headers: {
109569
+ "Content-Type": "application/json",
109570
+ ...options?.headers,
109571
+ ...params.headers
109572
+ }
109573
+ });
109574
+ }
109575
+ /**
109576
+ * Switch session model
109577
+ *
109578
+ * Switch the model used by subsequent provider turns.
109579
+ */
109580
+ switchModel(parameters, options) {
109581
+ const params = buildClientParams([parameters], [
109582
+ {
109583
+ args: [
109584
+ { in: "path", key: "sessionID" },
109585
+ { in: "body", key: "model" }
109586
+ ]
109587
+ }
109588
+ ]);
109589
+ return (options?.client ?? this.client).post({
109590
+ url: "/api/session/{sessionID}/model",
109591
+ ...options,
109592
+ ...params,
109593
+ headers: {
109594
+ "Content-Type": "application/json",
109595
+ ...options?.headers,
109596
+ ...params.headers
109597
+ }
109598
+ });
109599
+ }
109600
+ /**
109601
+ * Send message
109399
109602
  *
109400
- * Durably admit one v2 session input and schedule agent-loop execution unless resume is false.
109603
+ * Durably admit one session input and schedule agent-loop execution unless resume is false.
109401
109604
  */
109402
109605
  prompt(parameters, options) {
109403
109606
  const params = buildClientParams([parameters], [
@@ -109423,9 +109626,9 @@ var Session3 = class extends HeyApiClient {
109423
109626
  });
109424
109627
  }
109425
109628
  /**
109426
- * Compact v2 session
109629
+ * Compact session
109427
109630
  *
109428
- * Compact a v2 session conversation.
109631
+ * Compact a session conversation.
109429
109632
  */
109430
109633
  compact(parameters, options) {
109431
109634
  const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
@@ -109436,9 +109639,9 @@ var Session3 = class extends HeyApiClient {
109436
109639
  });
109437
109640
  }
109438
109641
  /**
109439
- * Wait for v2 session
109642
+ * Wait for session
109440
109643
  *
109441
- * Wait for a v2 session agent loop to become idle.
109644
+ * Wait for a session agent loop to become idle.
109442
109645
  */
109443
109646
  wait(parameters, options) {
109444
109647
  const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
@@ -109449,9 +109652,9 @@ var Session3 = class extends HeyApiClient {
109449
109652
  });
109450
109653
  }
109451
109654
  /**
109452
- * Get v2 session context
109655
+ * Get session context
109453
109656
  *
109454
- * Retrieve the active context messages for a v2 session (all messages after the last compaction).
109657
+ * Retrieve the active context messages for a session (all messages after the last compaction).
109455
109658
  */
109456
109659
  context(parameters, options) {
109457
109660
  const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
@@ -109462,9 +109665,83 @@ var Session3 = class extends HeyApiClient {
109462
109665
  });
109463
109666
  }
109464
109667
  /**
109465
- * Get v2 session messages
109668
+ * Get session history
109466
109669
  *
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.
109670
+ * Read one finite page of public durable Session events after an exclusive aggregate sequence. Newly committed events may appear on later pages.
109671
+ */
109672
+ history(parameters, options) {
109673
+ const params = buildClientParams([parameters], [
109674
+ {
109675
+ args: [
109676
+ { in: "path", key: "sessionID" },
109677
+ { in: "query", key: "limit" },
109678
+ { in: "query", key: "after" }
109679
+ ]
109680
+ }
109681
+ ]);
109682
+ return (options?.client ?? this.client).get({
109683
+ url: "/api/session/{sessionID}/history",
109684
+ ...options,
109685
+ ...params
109686
+ });
109687
+ }
109688
+ /**
109689
+ * Subscribe to session events
109690
+ *
109691
+ * Replay durable events after an aggregate sequence, then continue with new durable events.
109692
+ */
109693
+ events(parameters, options) {
109694
+ const params = buildClientParams([parameters], [
109695
+ {
109696
+ args: [
109697
+ { in: "path", key: "sessionID" },
109698
+ { in: "query", key: "after" }
109699
+ ]
109700
+ }
109701
+ ]);
109702
+ return (options?.client ?? this.client).sse.get({
109703
+ url: "/api/session/{sessionID}/event",
109704
+ ...options,
109705
+ ...params
109706
+ });
109707
+ }
109708
+ /**
109709
+ * Interrupt session execution
109710
+ *
109711
+ * Interrupt active execution owned by this OpenCode process. Idle interruption is a no-op.
109712
+ */
109713
+ interrupt(parameters, options) {
109714
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "sessionID" }] }]);
109715
+ return (options?.client ?? this.client).post({
109716
+ url: "/api/session/{sessionID}/interrupt",
109717
+ ...options,
109718
+ ...params
109719
+ });
109720
+ }
109721
+ /**
109722
+ * Get session message
109723
+ *
109724
+ * Retrieve one projected message owned by the Session.
109725
+ */
109726
+ message(parameters, options) {
109727
+ const params = buildClientParams([parameters], [
109728
+ {
109729
+ args: [
109730
+ { in: "path", key: "sessionID" },
109731
+ { in: "path", key: "messageID" }
109732
+ ]
109733
+ }
109734
+ ]);
109735
+ return (options?.client ?? this.client).get({
109736
+ url: "/api/session/{sessionID}/message/{messageID}",
109737
+ ...options,
109738
+ ...params
109739
+ });
109740
+ }
109741
+ /**
109742
+ * Get session messages
109743
+ *
109744
+ * 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
109745
  */
109469
109746
  messages(parameters, options) {
109470
109747
  const params = buildClientParams([parameters], [
@@ -109483,6 +109760,10 @@ var Session3 = class extends HeyApiClient {
109483
109760
  ...params
109484
109761
  });
109485
109762
  }
109763
+ _revert;
109764
+ get revert() {
109765
+ return this._revert ??= new Revert({ client: this.client });
109766
+ }
109486
109767
  _permission;
109487
109768
  get permission() {
109488
109769
  return this._permission ??= new Permission2({ client: this.client });
@@ -109494,9 +109775,9 @@ var Session3 = class extends HeyApiClient {
109494
109775
  };
109495
109776
  var Model = class extends HeyApiClient {
109496
109777
  /**
109497
- * List v2 models
109778
+ * List models
109498
109779
  *
109499
- * Retrieve available v2 models ordered by release date.
109780
+ * Retrieve available models ordered by release date.
109500
109781
  */
109501
109782
  list(parameters, options) {
109502
109783
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109509,9 +109790,9 @@ var Model = class extends HeyApiClient {
109509
109790
  };
109510
109791
  var Provider2 = class extends HeyApiClient {
109511
109792
  /**
109512
- * List v2 providers
109793
+ * List providers
109513
109794
  *
109514
- * Retrieve active v2 AI providers so clients can show provider availability and configuration.
109795
+ * Retrieve active AI providers so clients can show provider availability and configuration.
109515
109796
  */
109516
109797
  list(parameters, options) {
109517
109798
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109522,9 +109803,9 @@ var Provider2 = class extends HeyApiClient {
109522
109803
  });
109523
109804
  }
109524
109805
  /**
109525
- * Get v2 provider
109806
+ * Get provider
109526
109807
  *
109527
- * Retrieve a single v2 AI provider so clients can inspect its availability and endpoint settings.
109808
+ * Retrieve a single AI provider so clients can inspect its availability and endpoint settings.
109528
109809
  */
109529
109810
  get(parameters, options) {
109530
109811
  const params = buildClientParams([parameters], [
@@ -109542,6 +109823,222 @@ var Provider2 = class extends HeyApiClient {
109542
109823
  });
109543
109824
  }
109544
109825
  };
109826
+ var Connect = class extends HeyApiClient {
109827
+ /**
109828
+ * Connect with key
109829
+ *
109830
+ * Run a key authentication method and store the resulting credential.
109831
+ */
109832
+ key(parameters, options) {
109833
+ const params = buildClientParams([parameters], [
109834
+ {
109835
+ args: [
109836
+ { in: "path", key: "integrationID" },
109837
+ { in: "query", key: "location" },
109838
+ { in: "body", key: "key" },
109839
+ { in: "body", key: "label" }
109840
+ ]
109841
+ }
109842
+ ]);
109843
+ return (options?.client ?? this.client).post({
109844
+ url: "/api/integration/{integrationID}/connect/key",
109845
+ ...options,
109846
+ ...params,
109847
+ headers: {
109848
+ "Content-Type": "application/json",
109849
+ ...options?.headers,
109850
+ ...params.headers
109851
+ }
109852
+ });
109853
+ }
109854
+ /**
109855
+ * Begin OAuth connection
109856
+ *
109857
+ * Start an OAuth attempt and return the authorization details.
109858
+ */
109859
+ oauth(parameters, options) {
109860
+ const params = buildClientParams([parameters], [
109861
+ {
109862
+ args: [
109863
+ { in: "path", key: "integrationID" },
109864
+ { in: "query", key: "location" },
109865
+ { in: "body", key: "methodID" },
109866
+ { in: "body", key: "inputs" },
109867
+ { in: "body", key: "label" }
109868
+ ]
109869
+ }
109870
+ ]);
109871
+ return (options?.client ?? this.client).post({
109872
+ url: "/api/integration/{integrationID}/connect/oauth",
109873
+ ...options,
109874
+ ...params,
109875
+ headers: {
109876
+ "Content-Type": "application/json",
109877
+ ...options?.headers,
109878
+ ...params.headers
109879
+ }
109880
+ });
109881
+ }
109882
+ };
109883
+ var Attempt = class extends HeyApiClient {
109884
+ /**
109885
+ * Cancel OAuth connection
109886
+ *
109887
+ * Cancel an OAuth attempt and release its resources.
109888
+ */
109889
+ cancel(parameters, options) {
109890
+ const params = buildClientParams([parameters], [
109891
+ {
109892
+ args: [
109893
+ { in: "path", key: "attemptID" },
109894
+ { in: "query", key: "location" }
109895
+ ]
109896
+ }
109897
+ ]);
109898
+ return (options?.client ?? this.client).delete({
109899
+ url: "/api/integration/attempt/{attemptID}",
109900
+ ...options,
109901
+ ...params
109902
+ });
109903
+ }
109904
+ /**
109905
+ * Get OAuth attempt status
109906
+ *
109907
+ * Poll the current status of an OAuth attempt.
109908
+ */
109909
+ status(parameters, options) {
109910
+ const params = buildClientParams([parameters], [
109911
+ {
109912
+ args: [
109913
+ { in: "path", key: "attemptID" },
109914
+ { in: "query", key: "location" }
109915
+ ]
109916
+ }
109917
+ ]);
109918
+ return (options?.client ?? this.client).get({
109919
+ url: "/api/integration/attempt/{attemptID}",
109920
+ ...options,
109921
+ ...params
109922
+ });
109923
+ }
109924
+ /**
109925
+ * Complete OAuth connection
109926
+ *
109927
+ * Complete a code-based OAuth attempt and store the resulting credential.
109928
+ */
109929
+ complete(parameters, options) {
109930
+ const params = buildClientParams([parameters], [
109931
+ {
109932
+ args: [
109933
+ { in: "path", key: "attemptID" },
109934
+ { in: "query", key: "location" },
109935
+ { in: "body", key: "code" }
109936
+ ]
109937
+ }
109938
+ ]);
109939
+ return (options?.client ?? this.client).post({
109940
+ url: "/api/integration/attempt/{attemptID}/complete",
109941
+ ...options,
109942
+ ...params,
109943
+ headers: {
109944
+ "Content-Type": "application/json",
109945
+ ...options?.headers,
109946
+ ...params.headers
109947
+ }
109948
+ });
109949
+ }
109950
+ };
109951
+ var Integration = class extends HeyApiClient {
109952
+ /**
109953
+ * List integrations
109954
+ *
109955
+ * Retrieve available integrations and their authentication methods.
109956
+ */
109957
+ list(parameters, options) {
109958
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
109959
+ return (options?.client ?? this.client).get({
109960
+ url: "/api/integration",
109961
+ ...options,
109962
+ ...params
109963
+ });
109964
+ }
109965
+ /**
109966
+ * Get integration
109967
+ *
109968
+ * Retrieve one integration and its authentication methods.
109969
+ */
109970
+ get(parameters, options) {
109971
+ const params = buildClientParams([parameters], [
109972
+ {
109973
+ args: [
109974
+ { in: "path", key: "integrationID" },
109975
+ { in: "query", key: "location" }
109976
+ ]
109977
+ }
109978
+ ]);
109979
+ return (options?.client ?? this.client).get({
109980
+ url: "/api/integration/{integrationID}",
109981
+ ...options,
109982
+ ...params
109983
+ });
109984
+ }
109985
+ _connect;
109986
+ get connect() {
109987
+ return this._connect ??= new Connect({ client: this.client });
109988
+ }
109989
+ _attempt;
109990
+ get attempt() {
109991
+ return this._attempt ??= new Attempt({ client: this.client });
109992
+ }
109993
+ };
109994
+ var Credential = class extends HeyApiClient {
109995
+ /**
109996
+ * Remove credential
109997
+ *
109998
+ * Remove a stored integration credential.
109999
+ */
110000
+ remove(parameters, options) {
110001
+ const params = buildClientParams([parameters], [
110002
+ {
110003
+ args: [
110004
+ { in: "path", key: "credentialID" },
110005
+ { in: "query", key: "location" }
110006
+ ]
110007
+ }
110008
+ ]);
110009
+ return (options?.client ?? this.client).delete({
110010
+ url: "/api/credential/{credentialID}",
110011
+ ...options,
110012
+ ...params
110013
+ });
110014
+ }
110015
+ /**
110016
+ * Update credential
110017
+ *
110018
+ * Update a stored credential label.
110019
+ */
110020
+ update(parameters, options) {
110021
+ const params = buildClientParams([parameters], [
110022
+ {
110023
+ args: [
110024
+ { in: "path", key: "credentialID" },
110025
+ { in: "query", key: "location" },
110026
+ { in: "body", key: "label" }
110027
+ ]
110028
+ }
110029
+ ]);
110030
+ return (options?.client ?? this.client).patch({
110031
+ url: "/api/credential/{credentialID}",
110032
+ ...options,
110033
+ ...params,
110034
+ headers: {
110035
+ "Content-Type": "application/json",
110036
+ ...options?.headers,
110037
+ ...params.headers
110038
+ }
110039
+ });
110040
+ }
110041
+ };
109545
110042
  var Request2 = class extends HeyApiClient {
109546
110043
  /**
109547
110044
  * List pending permission requests
@@ -109599,41 +110096,54 @@ var Fs = class extends HeyApiClient {
109599
110096
  /**
109600
110097
  * Read file
109601
110098
  *
109602
- * Read one file relative to the requested location.
110099
+ * Serve one file relative to the requested location.
109603
110100
  */
109604
110101
  read(parameters, options) {
110102
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
110103
+ return (options?.client ?? this.client).get({
110104
+ url: "/api/fs/read/*",
110105
+ ...options,
110106
+ ...params
110107
+ });
110108
+ }
110109
+ /**
110110
+ * List directory
110111
+ *
110112
+ * List direct children of one directory relative to the requested location.
110113
+ */
110114
+ list(parameters, options) {
109605
110115
  const params = buildClientParams([parameters], [
109606
110116
  {
109607
110117
  args: [
109608
110118
  { in: "query", key: "location" },
109609
- { in: "query", key: "path" },
109610
- { in: "query", key: "reference" }
110119
+ { in: "query", key: "path" }
109611
110120
  ]
109612
110121
  }
109613
110122
  ]);
109614
110123
  return (options?.client ?? this.client).get({
109615
- url: "/api/fs/read",
110124
+ url: "/api/fs/list",
109616
110125
  ...options,
109617
110126
  ...params
109618
110127
  });
109619
110128
  }
109620
110129
  /**
109621
- * List directory
110130
+ * Find files
109622
110131
  *
109623
- * List direct children of one directory relative to the requested location.
110132
+ * Find recursively ranked filesystem entries relative to the requested location.
109624
110133
  */
109625
- list(parameters, options) {
110134
+ find(parameters, options) {
109626
110135
  const params = buildClientParams([parameters], [
109627
110136
  {
109628
110137
  args: [
109629
110138
  { in: "query", key: "location" },
109630
- { in: "query", key: "path" },
109631
- { in: "query", key: "reference" }
110139
+ { in: "query", key: "query" },
110140
+ { in: "query", key: "type" },
110141
+ { in: "query", key: "limit" }
109632
110142
  ]
109633
110143
  }
109634
110144
  ]);
109635
110145
  return (options?.client ?? this.client).get({
109636
- url: "/api/fs/list",
110146
+ url: "/api/fs/find",
109637
110147
  ...options,
109638
110148
  ...params
109639
110149
  });
@@ -109641,9 +110151,9 @@ var Fs = class extends HeyApiClient {
109641
110151
  };
109642
110152
  var Command2 = class extends HeyApiClient {
109643
110153
  /**
109644
- * List v2 commands
110154
+ * List commands
109645
110155
  *
109646
- * Retrieve currently registered v2 commands.
110156
+ * Retrieve currently registered commands.
109647
110157
  */
109648
110158
  list(parameters, options) {
109649
110159
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109656,9 +110166,9 @@ var Command2 = class extends HeyApiClient {
109656
110166
  };
109657
110167
  var Skill = class extends HeyApiClient {
109658
110168
  /**
109659
- * List v2 skills
110169
+ * List skills
109660
110170
  *
109661
- * Retrieve currently registered v2 skills.
110171
+ * Retrieve currently registered skills.
109662
110172
  */
109663
110173
  list(parameters, options) {
109664
110174
  const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
@@ -109671,14 +110181,166 @@ var Skill = class extends HeyApiClient {
109671
110181
  };
109672
110182
  var Event22 = class extends HeyApiClient {
109673
110183
  /**
109674
- * Subscribe to v2 events
110184
+ * Subscribe to events
109675
110185
  *
109676
- * Subscribe to native EventV2 payloads for a location.
110186
+ * Subscribe to native event payloads for the server.
109677
110187
  */
109678
- subscribe(parameters, options) {
109679
- const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
110188
+ subscribe(options) {
109680
110189
  return (options?.client ?? this.client).sse.get({
109681
110190
  url: "/api/event",
110191
+ ...options
110192
+ });
110193
+ }
110194
+ };
110195
+ var Pty2 = class extends HeyApiClient {
110196
+ /**
110197
+ * List PTY sessions
110198
+ *
110199
+ * List PTY sessions for a location, including exited sessions retained until removal.
110200
+ */
110201
+ list(parameters, options) {
110202
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
110203
+ return (options?.client ?? this.client).get({
110204
+ url: "/api/pty",
110205
+ ...options,
110206
+ ...params
110207
+ });
110208
+ }
110209
+ /**
110210
+ * Create PTY session
110211
+ *
110212
+ * Create a pseudo-terminal session for a location.
110213
+ */
110214
+ create(parameters, options) {
110215
+ const params = buildClientParams([parameters], [
110216
+ {
110217
+ args: [
110218
+ { in: "query", key: "location" },
110219
+ { in: "body", key: "command" },
110220
+ { in: "body", key: "args" },
110221
+ { in: "body", key: "cwd" },
110222
+ { in: "body", key: "title" },
110223
+ { in: "body", key: "env" }
110224
+ ]
110225
+ }
110226
+ ]);
110227
+ return (options?.client ?? this.client).post({
110228
+ url: "/api/pty",
110229
+ ...options,
110230
+ ...params,
110231
+ headers: {
110232
+ "Content-Type": "application/json",
110233
+ ...options?.headers,
110234
+ ...params.headers
110235
+ }
110236
+ });
110237
+ }
110238
+ /**
110239
+ * Remove PTY session
110240
+ *
110241
+ * Terminate and remove one PTY session.
110242
+ */
110243
+ remove(parameters, options) {
110244
+ const params = buildClientParams([parameters], [
110245
+ {
110246
+ args: [
110247
+ { in: "path", key: "ptyID" },
110248
+ { in: "query", key: "location" }
110249
+ ]
110250
+ }
110251
+ ]);
110252
+ return (options?.client ?? this.client).delete({
110253
+ url: "/api/pty/{ptyID}",
110254
+ ...options,
110255
+ ...params
110256
+ });
110257
+ }
110258
+ /**
110259
+ * Get PTY session
110260
+ *
110261
+ * Get one PTY session, including its exit code once exited.
110262
+ */
110263
+ get(parameters, options) {
110264
+ const params = buildClientParams([parameters], [
110265
+ {
110266
+ args: [
110267
+ { in: "path", key: "ptyID" },
110268
+ { in: "query", key: "location" }
110269
+ ]
110270
+ }
110271
+ ]);
110272
+ return (options?.client ?? this.client).get({
110273
+ url: "/api/pty/{ptyID}",
110274
+ ...options,
110275
+ ...params
110276
+ });
110277
+ }
110278
+ /**
110279
+ * Update PTY session
110280
+ *
110281
+ * Update the title or viewport size of one PTY session.
110282
+ */
110283
+ update(parameters, options) {
110284
+ const params = buildClientParams([parameters], [
110285
+ {
110286
+ args: [
110287
+ { in: "path", key: "ptyID" },
110288
+ { in: "query", key: "location" },
110289
+ { in: "body", key: "title" },
110290
+ { in: "body", key: "size" }
110291
+ ]
110292
+ }
110293
+ ]);
110294
+ return (options?.client ?? this.client).put({
110295
+ url: "/api/pty/{ptyID}",
110296
+ ...options,
110297
+ ...params,
110298
+ headers: {
110299
+ "Content-Type": "application/json",
110300
+ ...options?.headers,
110301
+ ...params.headers
110302
+ }
110303
+ });
110304
+ }
110305
+ /**
110306
+ * Create PTY WebSocket token
110307
+ *
110308
+ * Create a short-lived single-use ticket for opening a PTY WebSocket connection.
110309
+ */
110310
+ connectToken(parameters, options) {
110311
+ const params = buildClientParams([parameters], [
110312
+ {
110313
+ args: [
110314
+ { in: "path", key: "ptyID" },
110315
+ { in: "query", key: "location" }
110316
+ ]
110317
+ }
110318
+ ]);
110319
+ return (options?.client ?? this.client).post({
110320
+ url: "/api/pty/{ptyID}/connect-token",
110321
+ ...options,
110322
+ ...params
110323
+ });
110324
+ }
110325
+ /**
110326
+ * Connect to PTY session
110327
+ *
110328
+ * Establish a WebSocket connection streaming PTY output and accepting terminal input.
110329
+ */
110330
+ connect(parameters, options) {
110331
+ const params = buildClientParams([parameters], [
110332
+ {
110333
+ args: [
110334
+ { in: "path", key: "ptyID" },
110335
+ { in: "query", key: "location[directory]" },
110336
+ { in: "query", key: "location[workspace]" },
110337
+ { in: "query", key: "cursor" },
110338
+ { in: "query", key: "ticket" }
110339
+ ]
110340
+ }
110341
+ ]);
110342
+ return (options?.client ?? this.client).get({
110343
+ url: "/api/pty/{ptyID}/connect",
109682
110344
  ...options,
109683
110345
  ...params
109684
110346
  });
@@ -109705,11 +110367,92 @@ var Question3 = class extends HeyApiClient {
109705
110367
  return this._request ??= new Request22({ client: this.client });
109706
110368
  }
109707
110369
  };
110370
+ var Reference = class extends HeyApiClient {
110371
+ /**
110372
+ * List references
110373
+ *
110374
+ * List references available in the requested location.
110375
+ */
110376
+ list(parameters, options) {
110377
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }]);
110378
+ return (options?.client ?? this.client).get({
110379
+ url: "/api/reference",
110380
+ ...options,
110381
+ ...params
110382
+ });
110383
+ }
110384
+ };
110385
+ var ProjectCopy2 = class extends HeyApiClient {
110386
+ remove(parameters, options) {
110387
+ const params = buildClientParams([parameters], [
110388
+ {
110389
+ args: [
110390
+ { in: "path", key: "projectID" },
110391
+ { in: "query", key: "location" },
110392
+ { in: "body", key: "directory" },
110393
+ { in: "body", key: "force" }
110394
+ ]
110395
+ }
110396
+ ]);
110397
+ return (options?.client ?? this.client).delete({
110398
+ url: "/experimental/project/{projectID}/copy",
110399
+ ...options,
110400
+ ...params,
110401
+ headers: {
110402
+ "Content-Type": "application/json",
110403
+ ...options?.headers,
110404
+ ...params.headers
110405
+ }
110406
+ });
110407
+ }
110408
+ create(parameters, options) {
110409
+ const params = buildClientParams([parameters], [
110410
+ {
110411
+ args: [
110412
+ { in: "path", key: "projectID" },
110413
+ { in: "query", key: "location" },
110414
+ { in: "body", key: "strategy" },
110415
+ { in: "body", key: "directory" },
110416
+ { in: "body", key: "name" }
110417
+ ]
110418
+ }
110419
+ ]);
110420
+ return (options?.client ?? this.client).post({
110421
+ url: "/experimental/project/{projectID}/copy",
110422
+ ...options,
110423
+ ...params,
110424
+ headers: {
110425
+ "Content-Type": "application/json",
110426
+ ...options?.headers,
110427
+ ...params.headers
110428
+ }
110429
+ });
110430
+ }
110431
+ refresh(parameters, options) {
110432
+ const params = buildClientParams([parameters], [
110433
+ {
110434
+ args: [
110435
+ { in: "path", key: "projectID" },
110436
+ { in: "query", key: "location" }
110437
+ ]
110438
+ }
110439
+ ]);
110440
+ return (options?.client ?? this.client).post({
110441
+ url: "/experimental/project/{projectID}/copy/refresh",
110442
+ ...options,
110443
+ ...params
110444
+ });
110445
+ }
110446
+ };
109708
110447
  var V22 = class extends HeyApiClient {
109709
110448
  _health;
109710
110449
  get health() {
109711
110450
  return this._health ??= new Health({ client: this.client });
109712
110451
  }
110452
+ _location;
110453
+ get location() {
110454
+ return this._location ??= new Location({ client: this.client });
110455
+ }
109713
110456
  _agent;
109714
110457
  get agent() {
109715
110458
  return this._agent ??= new Agent({ client: this.client });
@@ -109726,6 +110469,14 @@ var V22 = class extends HeyApiClient {
109726
110469
  get provider() {
109727
110470
  return this._provider ??= new Provider2({ client: this.client });
109728
110471
  }
110472
+ _integration;
110473
+ get integration() {
110474
+ return this._integration ??= new Integration({ client: this.client });
110475
+ }
110476
+ _credential;
110477
+ get credential() {
110478
+ return this._credential ??= new Credential({ client: this.client });
110479
+ }
109729
110480
  _permission;
109730
110481
  get permission() {
109731
110482
  return this._permission ??= new Permission3({ client: this.client });
@@ -109746,10 +110497,22 @@ var V22 = class extends HeyApiClient {
109746
110497
  get event() {
109747
110498
  return this._event ??= new Event22({ client: this.client });
109748
110499
  }
110500
+ _pty;
110501
+ get pty() {
110502
+ return this._pty ??= new Pty2({ client: this.client });
110503
+ }
109749
110504
  _question;
109750
110505
  get question() {
109751
110506
  return this._question ??= new Question3({ client: this.client });
109752
110507
  }
110508
+ _reference;
110509
+ get reference() {
110510
+ return this._reference ??= new Reference({ client: this.client });
110511
+ }
110512
+ _projectCopy;
110513
+ get projectCopy() {
110514
+ return this._projectCopy ??= new ProjectCopy2({ client: this.client });
110515
+ }
109753
110516
  };
109754
110517
  var OpencodeClient = class _OpencodeClient extends HeyApiClient {
109755
110518
  static __registry = new HeyApiRegistry();
@@ -109867,7 +110630,7 @@ var OpencodeClient = class _OpencodeClient extends HeyApiClient {
109867
110630
  }
109868
110631
  };
109869
110632
 
109870
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
110633
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
109871
110634
  function wrapClientError(error49, response, request2, opts) {
109872
110635
  if (!opts?.throwOnError)
109873
110636
  return error49;
@@ -109894,7 +110657,7 @@ function describe(request2, response) {
109894
110657
  return `${method} ${url4}${status ? " \u2192 " + status : ""}${statusText ? " " + statusText : ""}`;
109895
110658
  }
109896
110659
 
109897
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/client.js
110660
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/client.js
109898
110661
  function pick(value2, fallback, encode4) {
109899
110662
  if (!value2)
109900
110663
  return;
@@ -109970,7 +110733,7 @@ function createOpencodeClient(config3) {
109970
110733
  return new OpencodeClient({ client: client2 });
109971
110734
  }
109972
110735
 
109973
- // node_modules/.pnpm/@opencode-ai+sdk@1.16.2/node_modules/@opencode-ai/sdk/dist/v2/server.js
110736
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/server.js
109974
110737
  var import_cross_spawn = __toESM(require_cross_spawn(), 1);
109975
110738
 
109976
110739
  // agents/opencode_v2.ts
@@ -110181,25 +110944,30 @@ export default async function pullfrogSubagentGatePlugin() {
110181
110944
  }
110182
110945
 
110183
110946
  // utils/openCodeModels.ts
110184
- import { execFileSync as execFileSync5 } from "node:child_process";
110947
+ import { spawnSync as spawnSync3 } from "node:child_process";
110185
110948
  var baseline;
110186
110949
  var authorized;
110950
+ var failure;
110951
+ var ANSI_PATTERN = /\[[0-9;]*m/g;
110187
110952
  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
- );
110953
+ const result = spawnSync3(cliPath, ["models"], {
110954
+ encoding: "utf-8",
110955
+ timeout: 3e4,
110956
+ env: process.env,
110957
+ stdio: ["ignore", "pipe", "pipe"]
110958
+ });
110959
+ if (result.status !== 0) {
110960
+ failure = (result.stderr ?? "").replace(ANSI_PATTERN, "").trim() || void 0;
110961
+ log.debug(`\xBB \`opencode models\` failed (${result.status}): ${failure ?? result.error}`);
110201
110962
  return /* @__PURE__ */ new Set();
110202
110963
  }
110964
+ failure = void 0;
110965
+ return new Set(
110966
+ result.stdout.split("\n").map((line) => line.trim()).filter(Boolean)
110967
+ );
110968
+ }
110969
+ function getModelsFailure() {
110970
+ return failure;
110203
110971
  }
110204
110972
  function captureBaselineModels(cliPath) {
110205
110973
  baseline = readModels(cliPath);
@@ -110358,17 +111126,21 @@ function parseModel2(value2) {
110358
111126
  return { providerID: value2.slice(0, slash), modelID: value2.slice(slash + 1) };
110359
111127
  }
110360
111128
  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
- });
111129
+ const proc = nodeSpawn2(
111130
+ params.cliPath,
111131
+ ["serve", "--port", "0", "--hostname", "127.0.0.1", "--print-logs", "--log-level", "ERROR"],
111132
+ {
111133
+ cwd: params.cwd,
111134
+ env: params.env,
111135
+ stdio: ["ignore", "pipe", "pipe"],
111136
+ // detached + killGroup so SIGKILL nukes the whole tree: node_modules/
111137
+ // opencode-ai/bin/opencode is a Node shim that spawnSync's the native
111138
+ // binary; without process-group kill the native binary is reparented
111139
+ // to PID 1 and never dies. mirrors the same fix in runOpenCode's
111140
+ // original spawn().
111141
+ detached: true
111142
+ }
111143
+ );
110372
111144
  trackChild({ child: proc, killGroup: true });
110373
111145
  const recentStderr = [];
110374
111146
  proc.stderr?.on("data", (chunk) => {
@@ -110461,6 +111233,12 @@ ${tail}` : ""}`
110461
111233
  bootTimeout.unref?.();
110462
111234
  });
110463
111235
  }
111236
+ function withServerStderr(message, recentStderr) {
111237
+ const tail = recentStderr.join("\n").trim();
111238
+ return tail ? `${message}
111239
+ opencode server stderr:
111240
+ ${tail}` : message;
111241
+ }
110464
111242
  function newTurn() {
110465
111243
  return {
110466
111244
  finalText: "",
@@ -110777,6 +111555,8 @@ function formatPromptError(error49) {
110777
111555
  const obj = error49;
110778
111556
  if (obj.message) return obj.message;
110779
111557
  if (obj.error?.message) return obj.error.message;
111558
+ const config3 = formatConfigError(obj.name, obj.data);
111559
+ if (config3) return config3;
110780
111560
  try {
110781
111561
  return JSON.stringify(error49);
110782
111562
  } catch {
@@ -110785,6 +111565,17 @@ function formatPromptError(error49) {
110785
111565
  }
110786
111566
  return String(error49);
110787
111567
  }
111568
+ function formatConfigError(name, data) {
111569
+ if (!name?.startsWith("Config") || !data || typeof data !== "object") return void 0;
111570
+ const at2 = "path" in data && typeof data.path === "string" ? ` at ${data.path}` : "";
111571
+ const detail = "message" in data && typeof data.message === "string" ? `${at2}: ${data.message}` : at2;
111572
+ const issues = "issues" in data && Array.isArray(data.issues) ? data.issues : [];
111573
+ const bullets = issues.map(
111574
+ (issue3) => issue3 && typeof issue3 === "object" && "message" in issue3 && typeof issue3.message === "string" ? `
111575
+ \u21B3 ${issue3.message}` : ""
111576
+ ).join("");
111577
+ return `${name}${detail}${bullets}`;
111578
+ }
110788
111579
  function startInnerActivityWatchdog(params) {
110789
111580
  let fired = false;
110790
111581
  const id = setInterval(() => {
@@ -110852,6 +111643,8 @@ var opencode = agent({
110852
111643
  OPENCODE_PERMISSION: permissionOverride,
110853
111644
  GOOGLE_GENERATIVE_AI_API_KEY: process.env.GOOGLE_GENERATIVE_AI_API_KEY || process.env.GEMINI_API_KEY
110854
111645
  };
111646
+ delete env2.OPENCODE_EXPERIMENTAL;
111647
+ delete env2.OPENCODE_EXPERIMENTAL_CODE_MODE;
110855
111648
  if (codexAuth) {
110856
111649
  env2.XDG_DATA_HOME = codexAuth.xdgDataHome;
110857
111650
  delete env2.OPENAI_API_KEY;
@@ -110891,7 +111684,7 @@ var opencode = agent({
110891
111684
  return {
110892
111685
  success: false,
110893
111686
  output: "",
110894
- error: `opencode session.create failed: ${msg}`
111687
+ error: withServerStderr(`opencode session.create failed: ${msg}`, server.recentStderr)
110895
111688
  };
110896
111689
  }
110897
111690
  const sessionID = sessionResp.data.id;
@@ -142132,7 +142925,7 @@ var import_undici2 = __toESM(require_undici2(), 1);
142132
142925
  var import_uri_templates = __toESM(require_uri_templates(), 1);
142133
142926
  import { setTimeout as delay } from "timers/promises";
142134
142927
 
142135
- // 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
142928
+ // 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
142136
142929
  init_index_DoHiaFQM();
142137
142930
 
142138
142931
  // node_modules/.pnpm/fastmcp@3.34.0_arktype@2.2.0/node_modules/fastmcp/dist/chunk-DMSZ2FEE.js
@@ -144003,7 +144796,7 @@ import { promisify } from "util";
144003
144796
  var pbkdf2Async = promisify(pbkdf2);
144004
144797
 
144005
144798
  // utils/browser.ts
144006
- import { execFileSync as execFileSync6, spawnSync as spawnSync3 } from "node:child_process";
144799
+ import { execFileSync as execFileSync5, spawnSync as spawnSync4 } from "node:child_process";
144007
144800
  import { existsSync as existsSync4 } from "node:fs";
144008
144801
  import { dirname as dirname2 } from "node:path";
144009
144802
 
@@ -144133,7 +144926,7 @@ function ensureBrowserDaemon(toolState) {
144133
144926
  }
144134
144927
  const agentBrowserVersion = getDevDependencyVersion("agent-browser");
144135
144928
  log.info(`installing agent-browser@${agentBrowserVersion}...`);
144136
- const install = spawnSync3("npm", ["install", "-g", `agent-browser@${agentBrowserVersion}`], {
144929
+ const install = spawnSync4("npm", ["install", "-g", `agent-browser@${agentBrowserVersion}`], {
144137
144930
  stdio: "pipe",
144138
144931
  encoding: "utf-8"
144139
144932
  });
@@ -144146,7 +144939,7 @@ function ensureBrowserDaemon(toolState) {
144146
144939
  log.info("agent-browser installed");
144147
144940
  let binDir;
144148
144941
  try {
144149
- const binPath = execFileSync6("which", ["agent-browser"], { encoding: "utf-8" }).trim();
144942
+ const binPath = execFileSync5("which", ["agent-browser"], { encoding: "utf-8" }).trim();
144150
144943
  binDir = dirname2(binPath);
144151
144944
  log.info(`agent-browser binary: ${binPath}`);
144152
144945
  } catch {
@@ -144157,7 +144950,7 @@ function ensureBrowserDaemon(toolState) {
144157
144950
  }
144158
144951
  const env2 = buildEnv();
144159
144952
  log.info("starting browser daemon...");
144160
- const seed = spawnSync3("agent-browser", ["open", "about:blank"], {
144953
+ const seed = spawnSync4("agent-browser", ["open", "about:blank"], {
144161
144954
  env: env2,
144162
144955
  stdio: "pipe",
144163
144956
  encoding: "utf-8",
@@ -144182,7 +144975,7 @@ function closeBrowserDaemon(toolState) {
144182
144975
  delete toolState.browserDaemon;
144183
144976
  try {
144184
144977
  log.info("closing browser daemon...");
144185
- spawnSync3("agent-browser", ["close"], {
144978
+ spawnSync4("agent-browser", ["close"], {
144186
144979
  env: filterEnv(),
144187
144980
  stdio: "pipe",
144188
144981
  timeout: 1e4
@@ -152272,11 +153065,11 @@ import { readFileSync as readFileSync3, realpathSync, unlinkSync } from "node:fs
152272
153065
  import { join as join9 } from "node:path";
152273
153066
 
152274
153067
  // utils/shell.ts
152275
- import { spawnSync as spawnSync4 } from "node:child_process";
153068
+ import { spawnSync as spawnSync5 } from "node:child_process";
152276
153069
  function $2(cmd, args2, options) {
152277
153070
  const encoding = options?.encoding ?? "utf-8";
152278
153071
  const env2 = resolveEnv(options?.env);
152279
- const result = spawnSync4(cmd, args2, {
153072
+ const result = spawnSync5(cmd, args2, {
152280
153073
  stdio: ["ignore", "pipe", "pipe"],
152281
153074
  encoding,
152282
153075
  cwd: options?.cwd,
@@ -152445,19 +153238,19 @@ async function $gitFetchWithDeepen(args2, options, label) {
152445
153238
  }
152446
153239
 
152447
153240
  // utils/lifecycle.ts
152448
- function describeSetupFailure(failure) {
152449
- if (!failure) return "";
152450
- switch (failure.kind) {
153241
+ function describeSetupFailure(failure2) {
153242
+ if (!failure2) return "";
153243
+ switch (failure2.kind) {
152451
153244
  case "exit":
152452
- return `It exited with code ${failure.exitCode}. Output:
153245
+ return `It exited with code ${failure2.exitCode}. Output:
152453
153246
 
152454
- ${failure.output || "(empty)"}`;
153247
+ ${failure2.output || "(empty)"}`;
152455
153248
  case "timeout":
152456
153249
  return "It timed out and was killed before completing.";
152457
153250
  case "spawn":
152458
- return `It failed to start: ${failure.spawnError}`;
153251
+ return `It failed to start: ${failure2.spawnError}`;
152459
153252
  default: {
152460
- const _exhaustive = failure;
153253
+ const _exhaustive = failure2;
152461
153254
  return _exhaustive;
152462
153255
  }
152463
153256
  }
@@ -153499,7 +154292,7 @@ import { writeFileSync as writeFileSync8 } from "node:fs";
153499
154292
  import { join as join12 } from "node:path";
153500
154293
 
153501
154294
  // utils/apiCommit.ts
153502
- import { execFileSync as execFileSync7 } from "node:child_process";
154295
+ import { execFileSync as execFileSync6 } from "node:child_process";
153503
154296
  import { lstat, readlink } from "node:fs/promises";
153504
154297
  import { join as join10 } from "node:path";
153505
154298
  var GITHUB_API = "https://api.github.com";
@@ -153602,7 +154395,7 @@ async function createBlobEntry(params) {
153602
154395
  } else {
153603
154396
  mode = stat.mode & 64 ? "100755" : "100644";
153604
154397
  const cleanSha = $2("git", ["hash-object", "-w", "--", absPath], { log: false }).trim();
153605
- content = execFileSync7("git", ["cat-file", "blob", cleanSha], {
154398
+ content = execFileSync6("git", ["cat-file", "blob", cleanSha], {
153606
154399
  cwd: params.repoRoot,
153607
154400
  maxBuffer: 2 * MAX_BLOB_BYTES
153608
154401
  });
@@ -158633,11 +159426,11 @@ ${integrateStep}
158633
159426
  });
158634
159427
  }
158635
159428
  function buildPrepushFailureMessage(params) {
158636
- const failure = params.failure;
158637
- const header = failure.kind === "exit" ? `prepush hook failed with exit code ${failure.exitCode}.
159429
+ const failure2 = params.failure;
159430
+ const header = failure2.kind === "exit" ? `prepush hook failed with exit code ${failure2.exitCode}.
158638
159431
 
158639
159432
  script output:
158640
- ${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}.`;
159433
+ ${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}.`;
158641
159434
  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).`;
158642
159435
  return `${header}
158643
159436
 
@@ -159221,7 +160014,7 @@ async function patchWorkflowRunFields(ctx, fields) {
159221
160014
  }
159222
160015
  )();
159223
160016
  } catch (error49) {
159224
- log.warning(`patchWorkflowRunFields exhausted retries: ${error49}`);
160017
+ log.warning(`patchWorkflowRunFields failed: ${error49}`);
159225
160018
  }
159226
160019
  }
159227
160020
  var INT4_MAX = 2147483647;
@@ -159284,6 +160077,7 @@ function validateCompatibility(payloadVersion, actionVersion) {
159284
160077
  var ShellPermissionInput = type.enumerated("disabled", "restricted", "enabled");
159285
160078
  var PushPermissionInput = type.enumerated("disabled", "restricted", "enabled");
159286
160079
  var StatusChecksInput = type.enumerated("disabled", "enabled");
160080
+ var ProgressCommentsInput = type.enumerated("disabled", "enabled");
159287
160081
  var JsonPayload = type({
159288
160082
  "~pullfrog": "true",
159289
160083
  version: "string",
@@ -159323,6 +160117,7 @@ var Inputs = type({
159323
160117
  "push?": PushPermissionInput.or("undefined"),
159324
160118
  "shell?": ShellPermissionInput.or("undefined"),
159325
160119
  "status_checks?": StatusChecksInput.or("undefined"),
160120
+ "progress_comments?": ProgressCommentsInput.or("undefined"),
159326
160121
  "cwd?": type.string.or("undefined"),
159327
160122
  "output_schema?": type.string.or("undefined")
159328
160123
  });
@@ -159376,7 +160171,8 @@ function resolveNonPromptInputs() {
159376
160171
  cwd: core4.getInput("cwd") || void 0,
159377
160172
  push: core4.getInput("push") || void 0,
159378
160173
  shell: core4.getInput("shell") || void 0,
159379
- status_checks: core4.getInput("status_checks") || void 0
160174
+ status_checks: core4.getInput("status_checks") || void 0,
160175
+ progress_comments: core4.getInput("progress_comments") || void 0
159380
160176
  });
159381
160177
  }
159382
160178
  var isPullfrog = (actor) => {
@@ -159426,6 +160222,9 @@ function resolvePayload(resolvedPromptInput, repoSettings) {
159426
160222
  // opt-in commit-status check-runs (branch protection). workflow-level
159427
160223
  // static input, off unless the repo's pullfrog.yml sets status_checks: enabled.
159428
160224
  statusChecks: inputs.status_checks === "enabled",
160225
+ // temporary progress chrome. the workflow input is the source of truth when
160226
+ // set (mirrors `push`); otherwise the repo setting decides. defaults to true.
160227
+ progressComments: inputs.progress_comments === void 0 ? repoSettings.progressComments : inputs.progress_comments === "enabled",
159429
160228
  // set by proxy logic in main.ts when routing through OpenRouter
159430
160229
  proxyModel: void 0
159431
160230
  };
@@ -159579,6 +160378,9 @@ async function reportProgress(ctx, params) {
159579
160378
  if (ctx.payload.event.silent) {
159580
160379
  return { body, action: "skipped" };
159581
160380
  }
160381
+ if (params.liveProgress && !ctx.payload.progressComments) {
160382
+ return { body, action: "skipped" };
160383
+ }
159582
160384
  const issueNumber = ctx.payload.event.issue_number ?? primaryRepoState(ctx.toolState).issueNumber;
159583
160385
  const isPlanMode = ctx.toolState.selectedMode === "Plan";
159584
160386
  const apiCtx = { octokit: ctx.octokit, owner: ctx.repo.owner, repo: ctx.repo.name };
@@ -159732,6 +160534,7 @@ ${collapsible}`;
159732
160534
  async function deleteProgressComment(ctx) {
159733
160535
  const existing = ctx.toolState.progressComment;
159734
160536
  if (!existing) {
160537
+ ctx.toolState.progressComment = null;
159735
160538
  return false;
159736
160539
  }
159737
160540
  try {
@@ -160474,7 +161277,7 @@ async function reportReviewNodeId(ctx, params) {
160474
161277
  }
160475
161278
 
160476
161279
  // utils/setup.ts
160477
- import { execFileSync as execFileSync8, execSync as execSync2 } from "node:child_process";
161280
+ import { execFileSync as execFileSync7, execSync as execSync2 } from "node:child_process";
160478
161281
  import { mkdtempSync as mkdtempSync2, readdirSync, realpathSync as realpathSync2, unlinkSync as unlinkSync2 } from "node:fs";
160479
161282
  import { tmpdir as tmpdir3 } from "node:os";
160480
161283
  import { join as join13 } from "node:path";
@@ -160567,7 +161370,7 @@ function removeIncludeIfEntries(repoDir) {
160567
161370
  if (!key || seen.has(key)) continue;
160568
161371
  seen.add(key);
160569
161372
  try {
160570
- execFileSync8("git", ["config", "--local", "--unset-all", key], {
161373
+ execFileSync7("git", ["config", "--local", "--unset-all", key], {
160571
161374
  cwd: repoDir,
160572
161375
  stdio: "pipe",
160573
161376
  env: env2
@@ -163813,7 +164616,7 @@ ${summaryAddendum}`,
163813
164616
  }
163814
164617
 
163815
164618
  // mcp/shell.ts
163816
- import { spawn as spawn5, spawnSync as spawnSync5 } from "node:child_process";
164619
+ import { spawn as spawn5, spawnSync as spawnSync6 } from "node:child_process";
163817
164620
  import { randomUUID as randomUUID4 } from "node:crypto";
163818
164621
  import { closeSync, openSync, writeFileSync as writeFileSync13 } from "node:fs";
163819
164622
  import { userInfo as userInfo2 } from "node:os";
@@ -163839,7 +164642,7 @@ function detectSandboxMethod() {
163839
164642
  return "none";
163840
164643
  }
163841
164644
  try {
163842
- const result = spawnSync5("unshare", ["--pid", "--fork", "--mount-proc", "true"], {
164645
+ const result = spawnSync6("unshare", ["--pid", "--fork", "--mount-proc", "true"], {
163843
164646
  timeout: 5e3,
163844
164647
  stdio: "ignore"
163845
164648
  });
@@ -163851,7 +164654,7 @@ function detectSandboxMethod() {
163851
164654
  } catch {
163852
164655
  }
163853
164656
  try {
163854
- const result = spawnSync5("sudo", ["unshare", "--pid", "--fork", "--mount-proc", "true"], {
164657
+ const result = spawnSync6("sudo", ["unshare", "--pid", "--fork", "--mount-proc", "true"], {
163855
164658
  timeout: 5e3,
163856
164659
  stdio: "ignore"
163857
164660
  });
@@ -163893,7 +164696,7 @@ function resolveRepoRoot() {
163893
164696
  return _repoRoot;
163894
164697
  }
163895
164698
  try {
163896
- _repoRoot = spawnSync5("git", ["rev-parse", "--show-toplevel"], {
164699
+ _repoRoot = spawnSync6("git", ["rev-parse", "--show-toplevel"], {
163897
164700
  cwd: process.cwd(),
163898
164701
  stdio: ["ignore", "pipe", "ignore"],
163899
164702
  encoding: "utf-8"
@@ -164687,6 +165490,8 @@ function validateAgentApiKey(params) {
164687
165490
  }
164688
165491
  if (params.agent.name === "opencode") {
164689
165492
  if (params.authorized.has(params.model)) return;
165493
+ const reason = getModelsFailure();
165494
+ if (reason) throw new Error(reason);
164690
165495
  throw new Error(
164691
165496
  buildMissingApiKeyError({ owner: params.owner, name: params.name, model: params.model })
164692
165497
  );
@@ -164698,6 +165503,8 @@ function validateAgentApiKey(params) {
164698
165503
  }
164699
165504
  if (params.agent.name === "opencode") {
164700
165505
  if (params.authorized.size > 0) return;
165506
+ const reason = getModelsFailure();
165507
+ if (reason) throw new Error(reason);
164701
165508
  throw new Error(buildMissingApiKeyError({ owner: params.owner, name: params.name }));
164702
165509
  }
164703
165510
  if (hasEnvVar3("ANTHROPIC_API_KEY") || hasEnvVar3("CLAUDE_CODE_OAUTH_TOKEN")) return;
@@ -165600,7 +166407,7 @@ function formatBillingErrorSummary(error49, owner) {
165600
166407
  return [
165601
166408
  "**Your Pullfrog Router balance is exhausted.**",
165602
166409
  "",
165603
- "You have a card on file but auto-reload is disabled, so runs paused once your balance went past the overdraft buffer.",
166410
+ "You have a payment method on file but auto-reload is disabled, so runs paused once your balance went past the overdraft buffer.",
165604
166411
  "",
165605
166412
  `[Top up balance \u2192](${billingConsoleUrl(owner, "billing")}) \xB7 [Enable auto-reload \u2192](${billingConsoleUrl(owner, "model-access")})`
165606
166413
  ].join("\n");
@@ -166134,7 +166941,9 @@ async function handleAgentResult(ctx) {
166134
166941
  const toolState = ctx.toolContext.toolState;
166135
166942
  const mode = toolState.selectedMode;
166136
166943
  const isReviewMode = mode === "Review" || mode === "IncrementalReview";
166137
- if (!isReviewMode && !toolState.wasUpdated && toolState.hadProgressComment && !ctx.silent) {
166944
+ const payload = ctx.toolContext.payload;
166945
+ const hasCommentTarget = toolState.hadProgressComment || !payload.progressComments && payload.event.issue_number !== void 0;
166946
+ if (!isReviewMode && !toolState.wasUpdated && hasCommentTarget && !ctx.silent) {
166138
166947
  const tracker = toolState.todoTracker;
166139
166948
  if (tracker) {
166140
166949
  tracker.cancel();
@@ -166190,6 +166999,7 @@ var defaultSettings = {
166190
166999
  prApproveEnabled: false,
166191
167000
  autoMergeEnabled: false,
166192
167001
  signedCommits: false,
167002
+ progressComments: true,
166193
167003
  modeInstructions: {},
166194
167004
  learnings: null,
166195
167005
  learningsHeadings: [],
@@ -167098,6 +167908,9 @@ async function main() {
167098
167908
  toolState.model = payload.model;
167099
167909
  toolState.oss = runContext.oss;
167100
167910
  toolState.shaPinned = isActionPinnedToSha();
167911
+ if (payload.event.issue_number !== void 0) {
167912
+ primaryRepoState(toolState).issueNumber = payload.event.issue_number;
167913
+ }
167101
167914
  if (payload.event.trigger === "pull_request_synchronize") {
167102
167915
  primaryRepoState(toolState).beforeSha = payload.event.before_sha;
167103
167916
  }
@@ -167676,7 +168489,7 @@ async function run(args2) {
167676
168489
  }
167677
168490
 
167678
168491
  // commands/init.ts
167679
- import { execFileSync as execFileSync9 } from "node:child_process";
168492
+ import { execFileSync as execFileSync8 } from "node:child_process";
167680
168493
  var import_arg3 = __toESM(require_arg(), 1);
167681
168494
  var import_picocolors3 = __toESM(require_picocolors(), 1);
167682
168495
  var PULLFROG_API_URL2 = (process.env.PULLFROG_API_URL || "https://pullfrog.com").replace(
@@ -167736,7 +168549,7 @@ function handleCancel2(value2) {
167736
168549
  function getGhToken2() {
167737
168550
  let token;
167738
168551
  try {
167739
- token = execFileSync9("gh", ["auth", "token"], { encoding: "utf-8" }).trim();
168552
+ token = execFileSync8("gh", ["auth", "token"], { encoding: "utf-8" }).trim();
167740
168553
  } catch {
167741
168554
  bail2(
167742
168555
  `gh cli not found or not authenticated.
@@ -167779,7 +168592,7 @@ async function ghApi(path4, token) {
167779
168592
  function parseGitRemote2() {
167780
168593
  let url4;
167781
168594
  try {
167782
- url4 = execFileSync9("git", ["remote", "get-url", "origin"], { encoding: "utf-8" }).trim();
168595
+ url4 = execFileSync8("git", ["remote", "get-url", "origin"], { encoding: "utf-8" }).trim();
167783
168596
  } catch {
167784
168597
  bail2("not a git repository or no 'origin' remote found.");
167785
168598
  }
@@ -167790,10 +168603,10 @@ function parseGitRemote2() {
167790
168603
  function openBrowser(url4) {
167791
168604
  try {
167792
168605
  const platform = process.platform;
167793
- if (platform === "darwin") execFileSync9("open", [url4], { stdio: "ignore" });
168606
+ if (platform === "darwin") execFileSync8("open", [url4], { stdio: "ignore" });
167794
168607
  else if (platform === "win32")
167795
- execFileSync9("cmd", ["/c", "start", "", url4], { stdio: "ignore" });
167796
- else execFileSync9("xdg-open", [url4], { stdio: "ignore" });
168608
+ execFileSync8("cmd", ["/c", "start", "", url4], { stdio: "ignore" });
168609
+ else execFileSync8("xdg-open", [url4], { stdio: "ignore" });
167797
168610
  } catch {
167798
168611
  }
167799
168612
  }
@@ -168020,7 +168833,7 @@ function setGhSecret(ctx) {
168020
168833
  let orgFailed = false;
168021
168834
  if (ctx.org) {
168022
168835
  try {
168023
- execFileSync9("gh", ["secret", "set", ctx.name, "--org", ctx.org, "--visibility", "all"], {
168836
+ execFileSync8("gh", ["secret", "set", ctx.name, "--org", ctx.org, "--visibility", "all"], {
168024
168837
  input: ctx.value,
168025
168838
  stdio: ["pipe", "ignore", "pipe"],
168026
168839
  encoding: "utf-8"
@@ -168031,7 +168844,7 @@ function setGhSecret(ctx) {
168031
168844
  }
168032
168845
  }
168033
168846
  try {
168034
- execFileSync9("gh", ["secret", "set", ctx.name, "--repo", ctx.repoSlug], {
168847
+ execFileSync8("gh", ["secret", "set", ctx.name, "--repo", ctx.repoSlug], {
168035
168848
  input: ctx.value,
168036
168849
  stdio: ["pipe", "ignore", "pipe"],
168037
168850
  encoding: "utf-8"
@@ -168517,7 +169330,7 @@ async function runCli4(input) {
168517
169330
  }
168518
169331
 
168519
169332
  // cli.ts
168520
- var VERSION10 = "0.1.40";
169333
+ var VERSION10 = "0.1.42";
168521
169334
  var bin = basename2(process.argv[1] || "");
168522
169335
  var PROG = bin === "pf" || bin === "pullfrog" ? bin : "pullfrog";
168523
169336
  var rawArgs = process.argv.slice(2);