pullfrog 0.1.82 → 0.1.83

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/index.js CHANGED
@@ -19718,10 +19718,10 @@ var require_core = __commonJS({
19718
19718
  (0, command_1.issueCommand)("set-env", { name }, convertedVal);
19719
19719
  }
19720
19720
  exports.exportVariable = exportVariable;
19721
- function setSecret6(secret) {
19721
+ function setSecret2(secret) {
19722
19722
  (0, command_1.issueCommand)("add-mask", {}, secret);
19723
19723
  }
19724
- exports.setSecret = setSecret6;
19724
+ exports.setSecret = setSecret2;
19725
19725
  function addPath(inputPath) {
19726
19726
  const filePath = process.env["GITHUB_PATH"] || "";
19727
19727
  if (filePath) {
@@ -19763,7 +19763,7 @@ var require_core = __commonJS({
19763
19763
  Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
19764
19764
  }
19765
19765
  exports.getBooleanInput = getBooleanInput;
19766
- function setOutput2(name, value2) {
19766
+ function setOutput3(name, value2) {
19767
19767
  const filePath = process.env["GITHUB_OUTPUT"] || "";
19768
19768
  if (filePath) {
19769
19769
  return (0, file_command_1.issueFileCommand)("OUTPUT", (0, file_command_1.prepareKeyValueMessage)(name, value2));
@@ -19771,7 +19771,7 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
19771
19771
  process.stdout.write(os2.EOL);
19772
19772
  (0, command_1.issueCommand)("set-output", { name }, (0, utils_1.toCommandValue)(value2));
19773
19773
  }
19774
- exports.setOutput = setOutput2;
19774
+ exports.setOutput = setOutput3;
19775
19775
  function setCommandEcho(enabled) {
19776
19776
  (0, command_1.issue)("echo", enabled ? "on" : "off");
19777
19777
  }
@@ -19826,14 +19826,14 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
19826
19826
  });
19827
19827
  }
19828
19828
  exports.group = group2;
19829
- function saveState3(name, value2) {
19829
+ function saveState2(name, value2) {
19830
19830
  const filePath = process.env["GITHUB_STATE"] || "";
19831
19831
  if (filePath) {
19832
19832
  return (0, file_command_1.issueFileCommand)("STATE", (0, file_command_1.prepareKeyValueMessage)(name, value2));
19833
19833
  }
19834
19834
  (0, command_1.issueCommand)("save-state", { name }, (0, utils_1.toCommandValue)(value2));
19835
19835
  }
19836
- exports.saveState = saveState3;
19836
+ exports.saveState = saveState2;
19837
19837
  function getState2(name) {
19838
19838
  return process.env[`STATE_${name}`] || "";
19839
19839
  }
@@ -27621,11 +27621,11 @@ var require_mode = __commonJS({
27621
27621
  var require_isexe = __commonJS({
27622
27622
  "node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js"(exports, module) {
27623
27623
  var fs5 = __require("fs");
27624
- var core12;
27624
+ var core8;
27625
27625
  if (process.platform === "win32" || global.TESTING_WINDOWS) {
27626
- core12 = require_windows();
27626
+ core8 = require_windows();
27627
27627
  } else {
27628
- core12 = require_mode();
27628
+ core8 = require_mode();
27629
27629
  }
27630
27630
  module.exports = isexe;
27631
27631
  isexe.sync = sync;
@@ -27648,7 +27648,7 @@ var require_isexe = __commonJS({
27648
27648
  });
27649
27649
  });
27650
27650
  }
27651
- core12(path4, options || {}, function(er, is) {
27651
+ core8(path4, options || {}, function(er, is) {
27652
27652
  if (er) {
27653
27653
  if (er.code === "EACCES" || options && options.ignoreErrors) {
27654
27654
  er = null;
@@ -27660,7 +27660,7 @@ var require_isexe = __commonJS({
27660
27660
  }
27661
27661
  function sync(path4, options) {
27662
27662
  try {
27663
- return core12.sync(path4, options || {});
27663
+ return core8.sync(path4, options || {});
27664
27664
  } catch (er) {
27665
27665
  if (options && options.ignoreErrors || er.code === "EACCES") {
27666
27666
  return false;
@@ -80800,7 +80800,7 @@ var require_core3 = __commonJS({
80800
80800
  Object.defineProperty(exports, "__esModule", { value: true });
80801
80801
  var id_1 = require_id();
80802
80802
  var ref_1 = require_ref();
80803
- var core12 = [
80803
+ var core8 = [
80804
80804
  "$schema",
80805
80805
  "$id",
80806
80806
  "$defs",
@@ -80810,7 +80810,7 @@ var require_core3 = __commonJS({
80810
80810
  id_1.default,
80811
80811
  ref_1.default
80812
80812
  ];
80813
- exports.default = core12;
80813
+ exports.default = core8;
80814
80814
  }
80815
80815
  });
80816
80816
 
@@ -107771,19 +107771,19 @@ var providers = {
107771
107771
  // API is the source of truth (#959).
107772
107772
  "claude-fable": {
107773
107773
  displayName: "Claude Fable",
107774
- resolve: "anthropic/claude-fable-5",
107774
+ resolve: "anthropic/claude-fable-5-1",
107775
107775
  effort: ["low", "medium", "high", "xhigh", "max"],
107776
107776
  // rolling alias: models.dev's OpenRouter mirror lags brand-new pinned
107777
- // versions (claude-fable-5 isn't indexed yet), so track ~…-latest to
107777
+ // versions (claude-fable-5 was missing there when this was added), so track ~…-latest to
107778
107778
  // stay catalog-valid and auto-follow version bumps.
107779
107779
  openRouterResolve: "openrouter/~anthropic/claude-fable-latest",
107780
107780
  subagentModel: "claude-sonnet"
107781
107781
  },
107782
107782
  "claude-opus": {
107783
107783
  displayName: "Claude Opus",
107784
- resolve: "anthropic/claude-opus-5",
107784
+ resolve: "anthropic/claude-opus-5-5",
107785
107785
  effort: ["low", "medium", "high", "xhigh", "max"],
107786
- openRouterResolve: "openrouter/anthropic/claude-opus-5",
107786
+ openRouterResolve: "openrouter/anthropic/claude-opus-5.5",
107787
107787
  preferred: true,
107788
107788
  subagentModel: "claude-sonnet"
107789
107789
  },
@@ -107818,9 +107818,9 @@ var providers = {
107818
107818
  },
107819
107819
  "gpt-sol": {
107820
107820
  displayName: "GPT Sol",
107821
- resolve: "openai/gpt-5.6-sol",
107821
+ resolve: "openai/gpt-6-sol",
107822
107822
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
107823
- openRouterResolve: "openrouter/openai/gpt-5.6-sol",
107823
+ openRouterResolve: "openrouter/openai/gpt-6-sol",
107824
107824
  preferred: true,
107825
107825
  subagentModel: "gpt-terra"
107826
107826
  },
@@ -107830,9 +107830,9 @@ var providers = {
107830
107830
  "gpt-sol-pro": {
107831
107831
  displayName: "GPT Sol Pro",
107832
107832
  description: "Maximum reasoning effort",
107833
- resolve: "openai/gpt-5.6-sol",
107833
+ resolve: "openai/gpt-6-sol",
107834
107834
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
107835
- openRouterResolve: "openrouter/openai/gpt-5.6-sol-pro",
107835
+ openRouterResolve: "openrouter/openai/gpt-6-sol-pro",
107836
107836
  subagentModel: "gpt-sol"
107837
107837
  },
107838
107838
  // gpt-5.6's balanced mid-tier. selectable on its own and doubles as Sol's
@@ -107845,9 +107845,9 @@ var providers = {
107845
107845
  },
107846
107846
  "gpt-luna": {
107847
107847
  displayName: "GPT Luna",
107848
- resolve: "openai/gpt-5.6-luna",
107848
+ resolve: "openai/gpt-6-luna",
107849
107849
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
107850
- openRouterResolve: "openrouter/openai/gpt-5.6-luna"
107850
+ openRouterResolve: "openrouter/openai/gpt-6-luna"
107851
107851
  },
107852
107852
  // legacy aliases — openai unified the codex line into the main GPT family
107853
107853
  // and is shutting down every "-codex" snapshot on 2026-07-23. transparently
@@ -107941,9 +107941,9 @@ var providers = {
107941
107941
  models: {
107942
107942
  grok: {
107943
107943
  displayName: "Grok",
107944
- resolve: "xai/grok-4.6",
107944
+ resolve: "xai/grok-4.7",
107945
107945
  effort: ["low", "medium", "high", "xhigh"],
107946
- openRouterResolve: "openrouter/x-ai/grok-4.6",
107946
+ openRouterResolve: "openrouter/x-ai/grok-4.7",
107947
107947
  preferred: true
107948
107948
  },
107949
107949
  // the Smart ladder's cheap rung: 1.25/2.5 against 4.6's 2/6, and a 0.2
@@ -107958,17 +107958,17 @@ var providers = {
107958
107958
  // 2026-05-15 (https://docs.x.ai/developers/migration/may-15-deprecation)
107959
107959
  // and now redirects every deprecated text-model slug to grok-4.3 at
107960
107960
  // standard pricing. fall back to the live `xai/grok` so the alias
107961
- // chain resolves to grok-4.6 for both direct-key and OpenRouter users.
107961
+ // chain resolves to grok-4.7 for both direct-key and OpenRouter users.
107962
107962
  "grok-fast": {
107963
107963
  displayName: "Grok Fast",
107964
107964
  resolve: "xai/grok-4-1-fast",
107965
- openRouterResolve: "openrouter/x-ai/grok-4.6",
107965
+ openRouterResolve: "openrouter/x-ai/grok-4.7",
107966
107966
  fallback: "xai/grok"
107967
107967
  },
107968
107968
  "grok-code-fast": {
107969
107969
  displayName: "Grok Code Fast",
107970
107970
  resolve: "xai/grok-code-fast-1",
107971
- openRouterResolve: "openrouter/x-ai/grok-4.6",
107971
+ openRouterResolve: "openrouter/x-ai/grok-4.7",
107972
107972
  fallback: "xai/grok"
107973
107973
  }
107974
107974
  }
@@ -107996,8 +107996,9 @@ var providers = {
107996
107996
  "deepseek-pro": {
107997
107997
  displayName: "DeepSeek Pro",
107998
107998
  resolve: "deepseek/deepseek-v4-pro",
107999
- effort: ["high", "max"],
108000
- openRouterEffort: ["low", "high", "max"],
107999
+ // models.dev gave the direct id V4.1-Flash's ladder on 2026-09-21, which
108000
+ // is what DeepSeek now serves under it — and the same as the Router pin's.
108001
+ effort: ["low", "high", "max"],
108001
108002
  openRouterResolve: "openrouter/deepseek/deepseek-v4-pro-0813",
108002
108003
  preferred: true
108003
108004
  },
@@ -108195,24 +108196,15 @@ var providers = {
108195
108196
  },
108196
108197
  "claude-opus": {
108197
108198
  displayName: "Claude Opus",
108198
- resolve: "opencode/claude-opus-5",
108199
+ resolve: "opencode/claude-opus-5-5",
108199
108200
  effort: ["low", "medium", "high", "xhigh", "max"],
108200
- openRouterResolve: "openrouter/anthropic/claude-opus-5",
108201
- subagentModel: "claude-sonnet",
108202
- // TEMPORARY — clear this ONLY when opus completes a run through opencode,
108203
- // never when the endpoint merely answers. Zen LISTS claude-opus-5 in
108204
- // /zen/v1/models, so the catalog test passes; on 2026-08-25 the endpoint
108205
- // itself answered 503 `Upstream request failed: Endpoint is unavailable.`
108206
- // (measured 5/5; claude-sonnet-5, claude-opus-4-8, claude-haiku-4-5 and
108207
- // claude-fable-5 all 200 on the same key). opencode retries above the AI
108208
- // SDK emitting no part.updated, so a run just produces nothing until it is
108209
- // killed — metaideas/init logged six zero-output failures from 2026-08-23.
108210
- // The 503 has since cleared and the model is STILL unusable: re-measured
108211
- // 2026-08-26, direct POST /zen/v1/messages is 10/10 200 at 1.3-4.1s while
108212
- // `opencode run --model opencode/claude-opus-5` on the same trivial prompt
108213
- // emitted nothing for 240s in CI. A raw-endpoint 200 is not runtime
108214
- // availability. see wiki/opencode-silent-stall.md
108215
- fallback: "opencode/claude-sonnet"
108201
+ openRouterResolve: "openrouter/anthropic/claude-opus-5.5",
108202
+ subagentModel: "claude-sonnet"
108203
+ // fell back to Sonnet from 2026-08-25 to 2026-09-25: Zen listed
108204
+ // claude-opus-5 while `opencode run` on it emitted nothing for 240s. A
108205
+ // raw-endpoint 200 is not runtime availability — the fallback was cleared
108206
+ // only once `opencode run` completed on both claude-opus-5 and 5-5. see
108207
+ // wiki/opencode-silent-stall.md
108216
108208
  },
108217
108209
  "claude-sonnet": {
108218
108210
  displayName: "Claude Sonnet",
@@ -108227,9 +108219,9 @@ var providers = {
108227
108219
  },
108228
108220
  "gpt-sol": {
108229
108221
  displayName: "GPT Sol",
108230
- resolve: "opencode/gpt-5.6-sol",
108222
+ resolve: "opencode/gpt-6-sol",
108231
108223
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108232
- openRouterResolve: "openrouter/openai/gpt-5.6-sol",
108224
+ openRouterResolve: "openrouter/openai/gpt-6-sol",
108233
108225
  subagentModel: "gpt-terra"
108234
108226
  },
108235
108227
  "gpt-astra": {
@@ -108243,9 +108235,9 @@ var providers = {
108243
108235
  "gpt-sol-pro": {
108244
108236
  displayName: "GPT Sol Pro",
108245
108237
  description: "Maximum reasoning effort",
108246
- resolve: "opencode/gpt-5.6-sol",
108238
+ resolve: "opencode/gpt-6-sol",
108247
108239
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108248
- openRouterResolve: "openrouter/openai/gpt-5.6-sol-pro",
108240
+ openRouterResolve: "openrouter/openai/gpt-6-sol-pro",
108249
108241
  subagentModel: "gpt-sol"
108250
108242
  },
108251
108243
  // gpt-5.6 balanced mid-tier — selectable + Sol's subagent. see openai above.
@@ -108257,9 +108249,9 @@ var providers = {
108257
108249
  },
108258
108250
  "gpt-luna": {
108259
108251
  displayName: "GPT Luna",
108260
- resolve: "opencode/gpt-5.6-luna",
108252
+ resolve: "opencode/gpt-6-luna",
108261
108253
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108262
- openRouterResolve: "openrouter/openai/gpt-5.6-luna"
108254
+ openRouterResolve: "openrouter/openai/gpt-6-luna"
108263
108255
  },
108264
108256
  // legacy aliases — see openai provider above for context.
108265
108257
  "gpt-codex": {
@@ -108358,9 +108350,34 @@ var providers = {
108358
108350
  },
108359
108351
  grok: {
108360
108352
  displayName: "Grok",
108361
- resolve: "opencode/grok-4.6",
108353
+ resolve: "opencode/grok-4.7",
108362
108354
  effort: ["low", "medium", "high", "xhigh"],
108363
- openRouterResolve: "openrouter/x-ai/grok-4.6"
108355
+ openRouterResolve: "openrouter/x-ai/grok-4.7"
108356
+ },
108357
+ // Zen began listing Qwen's Max and Flash tiers in late 2026-09 (Max on
108358
+ // 09-25); until then `opencode-go` was the only Qwen route, so a Zen
108359
+ // subscriber without Go had none. Plus is still Go-only. Zen's Max entry
108360
+ // publishes a reasoning toggle but no effort rungs.
108361
+ "qwen-max": {
108362
+ displayName: "Qwen Max",
108363
+ resolve: "opencode/qwen3.8-max",
108364
+ openRouterEffort: ["minimal", "low", "medium", "high", "xhigh"],
108365
+ openRouterResolve: "openrouter/qwen/qwen3.8-max-0902",
108366
+ // unlisted until a published `pullfrog` carries this alias (the
108367
+ // merge-vs-publish rule in wiki/models-catalog.md). unhide in the release
108368
+ // that ships it.
108369
+ hidden: true
108370
+ },
108371
+ "qwen-flash": {
108372
+ displayName: "Qwen Flash",
108373
+ resolve: "opencode/qwen3.8-flash",
108374
+ effort: ["low", "medium", "xhigh"],
108375
+ openRouterEffort: [],
108376
+ openRouterResolve: "openrouter/qwen/qwen3.8-flash",
108377
+ // unlisted until a published `pullfrog` carries this alias (the
108378
+ // merge-vs-publish rule in wiki/models-catalog.md). unhide in the release
108379
+ // that ships it.
108380
+ hidden: true
108364
108381
  },
108365
108382
  "gpt-5-nano": {
108366
108383
  displayName: "GPT Nano",
@@ -108409,11 +108426,31 @@ var providers = {
108409
108426
  // model, as `minimax-m2.5-free` does.
108410
108427
  fallback: "opencode/big-pickle"
108411
108428
  },
108429
+ // Zen's FREE stealth preview (listed 2026-09-23), the third after
108430
+ // big-pickle and union-alpha. OpenRouter's listing: prompts and
108431
+ // completions may be retained by the provider, not trained on. unlike the
108432
+ // first two it publishes an effort ladder, so the gate mirrors one here.
108433
+ "space-bunny": {
108434
+ displayName: "Space Bunny",
108435
+ description: "Stealth preview; prompts may be retained",
108436
+ resolve: "opencode/space-bunny-free",
108437
+ effort: ["low", "medium", "high", "xhigh", "max"],
108438
+ // free to run, still gated on the provider's own OPENCODE_API_KEY —
108439
+ // see the big-pickle note above (#1077).
108440
+ isFree: true,
108441
+ // unlisted until a published `pullfrog` carries this alias: 0.1.82
108442
+ // predates it, so a run passes `opencode/space-bunny` through raw and
108443
+ // Zen answers a 500. unhide in the release that ships it.
108444
+ hidden: true
108445
+ },
108412
108446
  // Zen's live free MiMo, and the second free row in a menu that big-pickle
108413
108447
  // was alone in since `mimo-v2-pro-free` lost its model.
108414
108448
  mimo: {
108415
108449
  displayName: "MiMo",
108416
- resolve: "opencode/mimo-v2.5-free",
108450
+ // models.dev deprecated `mimo-v2.5-free` on 2026-09-22. V2.6-Flash is
108451
+ // the only other MiMo Zen serves, so the slug follows it across the
108452
+ // tier rather than leaving stored picks on a dying id.
108453
+ resolve: "opencode/mimo-v2.6-flash-free",
108417
108454
  // free to run, still gated on the provider's own OPENCODE_API_KEY —
108418
108455
  // see the big-pickle note above (#1077).
108419
108456
  isFree: true
@@ -108442,11 +108479,12 @@ var providers = {
108442
108479
  // OpenCode Go is a separate $10/mo subscription from Zen, served on its own
108443
108480
  // base URL (`https://opencode.ai/zen/go/v1`) but authenticated with the SAME
108444
108481
  // `OPENCODE_API_KEY`. it carries the open-weight coding models plus a couple
108445
- // of frontier ones, six of which are served ONLY here — Zen's `/v1/models`
108446
- // does not list qwen3.7/3.8-*, mimo-v2.5-pro, longcat-2.0 or hy3. (it listed
108482
+ // of frontier ones, four of which are served ONLY here — Zen's `/v1/models`
108483
+ // does not list qwen3.7-plus, mimo-v2.6-pro, longcat-2.0 or hy3. (it listed
108447
108484
  // no glm-5.3* either until 2026-09, which is why `opencode/glm` trailed on
108448
- // 5.2.) so for a Go subscriber this provider is not a duplicate route to Zen,
108449
- // it is the only route to a large part of what they pay for.
108485
+ // 5.2, and no qwen3.8-* until late 2026-09.) so for a Go subscriber this
108486
+ // provider is not a duplicate route to Zen, it is the only route to a large
108487
+ // part of what they pay for.
108450
108488
  // like `opencode` and `openrouter` this is a ROUTER, not a vendor: slugs and
108451
108489
  // display names mirror the upstream brand tier, and the picker groups them
108452
108490
  // under the upstream vendor.
@@ -108506,7 +108544,8 @@ var providers = {
108506
108544
  // picker row that fails for almost everyone is worse than none. DeepSeek
108507
108545
  // stays reachable ungated via `deepseek/*`, `opencode/*` and
108508
108546
  // `openrouter/*`; both remain runnable by full specifier once opted in.
108509
- // Alibaba — new vendor family for the catalog; Zen serves neither tier.
108547
+ // Alibaba — Zen serves Max and Flash too (see `opencode/qwen-max`); Plus
108548
+ // is Go-only.
108510
108549
  "qwen-max": {
108511
108550
  displayName: "Qwen Max",
108512
108551
  resolve: "opencode-go/qwen3.8-max",
@@ -108549,8 +108588,8 @@ var providers = {
108549
108588
  // Xiaomi — Go-only; Zen serves the free `mimo-v2-pro-free` promo instead.
108550
108589
  "mimo-pro": {
108551
108590
  displayName: "MiMo Pro",
108552
- resolve: "opencode-go/mimo-v2.5-pro",
108553
- openRouterResolve: "openrouter/xiaomi/mimo-v2.5-pro"
108591
+ resolve: "opencode-go/mimo-v2.6-pro",
108592
+ openRouterResolve: "openrouter/xiaomi/mimo-v2.6-pro"
108554
108593
  },
108555
108594
  // Meituan — Go-only.
108556
108595
  longcat: {
@@ -108576,15 +108615,15 @@ var providers = {
108576
108615
  // wiki/models-catalog.md on `opencode/kimi-k2`.
108577
108616
  grok: {
108578
108617
  displayName: "Grok",
108579
- resolve: "opencode-go/grok-4.6",
108618
+ resolve: "opencode-go/grok-4.7",
108580
108619
  effort: ["low", "medium", "high", "xhigh"],
108581
- openRouterResolve: "openrouter/x-ai/grok-4.6"
108620
+ openRouterResolve: "openrouter/x-ai/grok-4.7"
108582
108621
  },
108583
108622
  "gpt-luna": {
108584
108623
  displayName: "GPT Luna",
108585
- resolve: "opencode-go/gpt-5.6-luna",
108624
+ resolve: "opencode-go/gpt-6-luna",
108586
108625
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108587
- openRouterResolve: "openrouter/openai/gpt-5.6-luna"
108626
+ openRouterResolve: "openrouter/openai/gpt-6-luna"
108588
108627
  }
108589
108628
  }
108590
108629
  }),
@@ -108686,15 +108725,15 @@ var providers = {
108686
108725
  resolve: "openrouter/~anthropic/claude-haiku-latest",
108687
108726
  openRouterResolve: "openrouter/~anthropic/claude-haiku-latest"
108688
108727
  },
108689
- // pinned to the explicit gpt-5.6 tiers (not the ~openai/gpt-latest rolling
108690
- // alias): after the Sol/Terra/Luna rename, ~gpt-mini-latest no longer maps
108728
+ // pinned to the explicit Sol/Terra/Luna tiers (not the ~openai/gpt-latest
108729
+ // rolling alias): after that rename, ~gpt-mini-latest no longer maps
108691
108730
  // to Luna, so rolling aliases would silently diverge `gpt`/`gpt-mini` from
108692
108731
  // the chosen tiers across funding paths.
108693
108732
  "gpt-sol": {
108694
108733
  displayName: "GPT Sol",
108695
- resolve: "openrouter/openai/gpt-5.6-sol",
108734
+ resolve: "openrouter/openai/gpt-6-sol",
108696
108735
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108697
- openRouterResolve: "openrouter/openai/gpt-5.6-sol",
108736
+ openRouterResolve: "openrouter/openai/gpt-6-sol",
108698
108737
  subagentModel: "gpt-terra"
108699
108738
  },
108700
108739
  "gpt-astra": {
@@ -108708,9 +108747,9 @@ var providers = {
108708
108747
  "gpt-sol-pro": {
108709
108748
  displayName: "GPT Sol Pro",
108710
108749
  description: "Maximum reasoning effort",
108711
- resolve: "openrouter/openai/gpt-5.6-sol-pro",
108750
+ resolve: "openrouter/openai/gpt-6-sol-pro",
108712
108751
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108713
- openRouterResolve: "openrouter/openai/gpt-5.6-sol-pro",
108752
+ openRouterResolve: "openrouter/openai/gpt-6-sol-pro",
108714
108753
  subagentModel: "gpt-sol"
108715
108754
  },
108716
108755
  // gpt-5.6 balanced mid-tier — selectable + Sol's subagent. see openai above.
@@ -108722,9 +108761,9 @@ var providers = {
108722
108761
  },
108723
108762
  "gpt-luna": {
108724
108763
  displayName: "GPT Luna",
108725
- resolve: "openrouter/openai/gpt-5.6-luna",
108764
+ resolve: "openrouter/openai/gpt-6-luna",
108726
108765
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108727
- openRouterResolve: "openrouter/openai/gpt-5.6-luna"
108766
+ openRouterResolve: "openrouter/openai/gpt-6-luna"
108728
108767
  },
108729
108768
  // legacy aliases — see openai provider for context.
108730
108769
  "gpt-codex": {
@@ -108788,9 +108827,9 @@ var providers = {
108788
108827
  },
108789
108828
  grok: {
108790
108829
  displayName: "Grok",
108791
- resolve: "openrouter/x-ai/grok-4.6",
108830
+ resolve: "openrouter/x-ai/grok-4.7",
108792
108831
  effort: ["low", "medium", "high", "xhigh"],
108793
- openRouterResolve: "openrouter/x-ai/grok-4.6"
108832
+ openRouterResolve: "openrouter/x-ai/grok-4.7"
108794
108833
  },
108795
108834
  // dated pin, not the bare id — see `deepseek/deepseek-pro` for why
108796
108835
  // OpenRouter's unversioned `deepseek-v4-pro` is the stale April preview.
@@ -108861,8 +108900,10 @@ var providers = {
108861
108900
  vercel: provider({
108862
108901
  // Vercel AI Gateway — one key serves every model it fronts. model IDs use
108863
108902
  // the models.dev `vercel` catalog's own naming (dotted versions, e.g.
108864
- // `anthropic/claude-opus-5`, `zai/glm-5.3`), and effort ladders mirror that
108865
- // catalog's entries, not the upstream vendor's. deliberately no
108903
+ // `anthropic/claude-opus-5.5`, `zai/glm-5.3`). effort ladders come from the
108904
+ // gateway's OWN `/v1/models`, not models.dev — the two disagree routinely
108905
+ // (on 2026-09-22 they disagreed on all ten entries that drifted), and the
108906
+ // drift test reads the gateway for that reason. deliberately no
108866
108907
  // `openRouterResolve`: a gateway pick is BYOK-only — silently rerouting it
108867
108908
  // over the Router proxy would bill the wallet for traffic the user pointed
108868
108909
  // at their own gateway.
@@ -108871,7 +108912,7 @@ var providers = {
108871
108912
  models: {
108872
108913
  "claude-opus": {
108873
108914
  displayName: "Claude Opus",
108874
- resolve: "vercel/anthropic/claude-opus-5",
108915
+ resolve: "vercel/anthropic/claude-opus-5.5",
108875
108916
  effort: ["low", "medium", "high", "xhigh", "max"],
108876
108917
  preferred: true,
108877
108918
  subagentModel: "claude-sonnet"
@@ -108879,7 +108920,7 @@ var providers = {
108879
108920
  "claude-sonnet": {
108880
108921
  displayName: "Claude Sonnet",
108881
108922
  resolve: "vercel/anthropic/claude-sonnet-5",
108882
- effort: ["low", "medium", "high", "xhigh"]
108923
+ effort: ["none", "low", "medium", "high", "xhigh", "max"]
108883
108924
  },
108884
108925
  "claude-haiku": {
108885
108926
  displayName: "Claude Haiku",
@@ -108887,7 +108928,7 @@ var providers = {
108887
108928
  },
108888
108929
  "gpt-sol": {
108889
108930
  displayName: "GPT Sol",
108890
- resolve: "vercel/openai/gpt-5.6-sol",
108931
+ resolve: "vercel/openai/gpt-6-sol",
108891
108932
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108892
108933
  subagentModel: "gpt-terra"
108893
108934
  },
@@ -108900,35 +108941,35 @@ var providers = {
108900
108941
  "gpt-terra": {
108901
108942
  displayName: "GPT Terra",
108902
108943
  resolve: "vercel/openai/gpt-5.6-terra",
108903
- effort: ["none", "low", "medium", "high", "xhigh", "max"]
108944
+ effort: ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
108904
108945
  },
108905
108946
  "gpt-luna": {
108906
108947
  displayName: "GPT Luna",
108907
- resolve: "vercel/openai/gpt-5.6-luna",
108948
+ resolve: "vercel/openai/gpt-6-luna",
108908
108949
  effort: ["none", "low", "medium", "high", "xhigh", "max"]
108909
108950
  },
108910
108951
  "gemini-pro": {
108911
108952
  displayName: "Gemini Pro",
108912
108953
  resolve: "vercel/google/gemini-3.1-pro-preview",
108913
- effort: ["low", "medium", "high"]
108954
+ effort: ["low", "high"]
108914
108955
  },
108915
108956
  "gemini-flash": {
108916
108957
  displayName: "Gemini Flash",
108917
108958
  resolve: "vercel/google/gemini-3.8-flash",
108918
- effort: ["low", "medium", "high"]
108959
+ effort: ["low", "high"]
108919
108960
  },
108920
108961
  "deepseek-pro": {
108921
108962
  displayName: "DeepSeek Pro",
108922
108963
  resolve: "vercel/deepseek/deepseek-v4-pro-0813",
108923
- effort: ["high", "xhigh"]
108964
+ effort: ["none", "high", "max"]
108924
108965
  },
108925
108966
  // the gateway's bare `deepseek-v4-flash` is the April preview — the same
108926
108967
  // fork trap as OpenRouter, with `deepseek-v4-flash-0731` beside it — so
108927
- // this entry sat on the preview until V4.1. the gateway publishes no
108928
- // effort ladder for the V4.1 id.
108968
+ // this entry sat on the preview until V4.1.
108929
108969
  "deepseek-flash": {
108930
108970
  displayName: "DeepSeek Flash",
108931
- resolve: "vercel/deepseek/deepseek-v4.1-flash"
108971
+ resolve: "vercel/deepseek/deepseek-v4.1-flash",
108972
+ effort: ["none", "high", "max"]
108932
108973
  },
108933
108974
  glm: {
108934
108975
  displayName: "GLM",
@@ -108938,12 +108979,12 @@ var providers = {
108938
108979
  "kimi-k3": {
108939
108980
  displayName: "Kimi K3",
108940
108981
  resolve: "vercel/moonshotai/kimi-k3",
108941
- effort: ["low", "high", "max"]
108982
+ effort: ["none", "low", "high", "max"]
108942
108983
  },
108943
- // the gateway publishes no effort ladder for this id.
108944
108984
  "muse-spark": {
108945
108985
  displayName: "Muse Spark",
108946
- resolve: "vercel/meta/muse-spark-1.3"
108986
+ resolve: "vercel/meta/muse-spark-1.3",
108987
+ effort: ["minimal", "low", "medium", "high", "xhigh"]
108947
108988
  }
108948
108989
  }
108949
108990
  })
@@ -110005,7 +110046,7 @@ var import_semver = __toESM(require_semver2(), 1);
110005
110046
  // package.json
110006
110047
  var package_default = {
110007
110048
  name: "pullfrog",
110008
- version: "0.1.82",
110049
+ version: "0.1.83",
110009
110050
  cliContractVersion: "1",
110010
110051
  type: "module",
110011
110052
  bin: {
@@ -110022,6 +110063,7 @@ var package_default = {
110022
110063
  typecheck: "tsc --noEmit",
110023
110064
  build: "node esbuild.config.js && tsc -p tsconfig.exports.json",
110024
110065
  "check:entrypoints": "nub scripts/check-entrypoint-imports.ts",
110066
+ "check:secret-commands": "nub scripts/check-secret-commands.ts",
110025
110067
  docker: "nub docker.ts",
110026
110068
  play: "nub play.ts",
110027
110069
  runtest: "nub test/run.ts",
@@ -110032,7 +110074,7 @@ var package_default = {
110032
110074
  },
110033
110075
  devDependencies: {
110034
110076
  "@actions/core": "^1.11.1",
110035
- "@anthropic-ai/claude-code": "2.1.150",
110077
+ "@anthropic-ai/claude-code": "2.1.280",
110036
110078
  "@ark/fs": "0.56.0",
110037
110079
  "@ark/util": "0.56.0",
110038
110080
  "@clack/prompts": "^1.2.0",
@@ -110642,7 +110684,7 @@ process.stdin.on("end", () => {
110642
110684
  });
110643
110685
  `;
110644
110686
  }
110645
- function buildClaudePretoolGateSettings(scriptAbsolutePath, execToolDenyRules) {
110687
+ function buildClaudePretoolGateSettings(scriptAbsolutePath, denyRules) {
110646
110688
  return {
110647
110689
  hooks: {
110648
110690
  PreToolUse: [
@@ -110662,7 +110704,7 @@ function buildClaudePretoolGateSettings(scriptAbsolutePath, execToolDenyRules) {
110662
110704
  }
110663
110705
  ]
110664
110706
  },
110665
- permissions: { deny: execToolDenyRules }
110707
+ permissions: { deny: denyRules }
110666
110708
  };
110667
110709
  }
110668
110710
 
@@ -111525,12 +111567,22 @@ async function installClaudeCli() {
111525
111567
  installDependencies: true
111526
111568
  });
111527
111569
  }
111528
- var CLAUDE_EXEC_TOOLS = ["Bash", "Monitor", "REPL", "Workflow"];
111529
- var CLAUDE_EXEC_TOOL_DENY_RULES = [
111570
+ var CLAUDE_EXEC_TOOLS = ["Bash", "PowerShell", "Monitor", "REPL", "Workflow"];
111571
+ var CLAUDE_DENIED_TOOLS = [
111530
111572
  ...CLAUDE_EXEC_TOOLS,
111531
- ...CLAUDE_EXEC_TOOLS.map((t) => `Agent(${t})`)
111573
+ "DesignSync",
111574
+ "Artifact",
111575
+ "ShareOnboardingGuide",
111576
+ "SendMessage",
111577
+ "ListAgents",
111578
+ "PushNotification",
111579
+ "RemoteTrigger"
111580
+ ];
111581
+ var CLAUDE_DENY_RULES = [
111582
+ ...CLAUDE_DENIED_TOOLS,
111583
+ ...CLAUDE_DENIED_TOOLS.map((t) => `Agent(${t})`)
111532
111584
  ];
111533
- var CLAUDE_DISALLOWED_TOOLS = CLAUDE_EXEC_TOOL_DENY_RULES.join(",");
111585
+ var CLAUDE_DISALLOWED_TOOLS = CLAUDE_DENY_RULES.join(",");
111534
111586
  function writeMcpConfig(ctx) {
111535
111587
  const configDir = join4(ctx.tmpdir, ".claude");
111536
111588
  mkdirSync4(configDir, { recursive: true });
@@ -111963,14 +112015,11 @@ function buildClaudeSettings(params) {
111963
112015
  `Glob(${path4}/**)`,
111964
112016
  `Glob(/${path4}/**)`
111965
112017
  ]);
111966
- const gate = buildClaudePretoolGateSettings(
111967
- params.pretoolGateScriptPath,
111968
- CLAUDE_EXEC_TOOL_DENY_RULES
111969
- );
112018
+ const gate = buildClaudePretoolGateSettings(params.pretoolGateScriptPath, CLAUDE_DENY_RULES);
111970
112019
  const base = {
111971
112020
  permissions: {
111972
112021
  deny: [
111973
- // native exec tools — the authoritative, bypass-immune deny.
112022
+ // CLAUDE_DENIED_TOOLS — the authoritative, bypass-immune deny.
111974
112023
  // `--disallowedTools` (a cliArg-source deny) leaked under
111975
112024
  // `--dangerously-skip-permissions`; policySettings denies survive
111976
112025
  // bypassPermissions mode. covers top-level + Agent(...) subagent use.
@@ -112184,7 +112233,6 @@ var claude = agent({
112184
112233
  });
112185
112234
 
112186
112235
  // agents/codex.ts
112187
- var core3 = __toESM(require_core(), 1);
112188
112236
  import { existsSync as existsSync5, mkdirSync as mkdirSync6, readFileSync as readFileSync3, writeFileSync as writeFileSync5 } from "node:fs";
112189
112237
  import { join as join6 } from "node:path";
112190
112238
  import { performance as performance6 } from "node:perf_hooks";
@@ -112470,6 +112518,15 @@ async function apiFetch(options) {
112470
112518
  // utils/oauthWriteback.ts
112471
112519
  var OAUTH_WRITEBACK_STATE = "oauth_writeback";
112472
112520
 
112521
+ // utils/secretCommands.ts
112522
+ var core3 = __toESM(require_core(), 1);
112523
+ function maskSecret(value2) {
112524
+ if (isGitHubActions) core3.setSecret(value2);
112525
+ }
112526
+ function saveSecretState(name, value2) {
112527
+ if (isGitHubActions) core3.saveState(name, value2);
112528
+ }
112529
+
112473
112530
  // utils/secrets.ts
112474
112531
  var SENSITIVE_PATTERNS = [
112475
112532
  /_KEY$/i,
@@ -112818,8 +112875,8 @@ function toTodoWriteInput(item) {
112818
112875
  }
112819
112876
  var CODEX_MODEL_PRICING = {
112820
112877
  "gpt-6-astra": { input: 10, cacheRead: 1, cacheWrite: 12.5, output: 50 },
112821
- "gpt-5.6-sol": { input: 5, cacheRead: 0.5, cacheWrite: 6.25, output: 30 },
112822
- "gpt-5.6-luna": { input: 0.2, cacheRead: 0.02, cacheWrite: 0.25, output: 1.2 },
112878
+ "gpt-6-sol": { input: 2, cacheRead: 0.2, cacheWrite: 2.5, output: 10 },
112879
+ "gpt-6-luna": { input: 0.1, cacheRead: 0.01, cacheWrite: 0.125, output: 0.5 },
112823
112880
  "gpt-5.6-terra": { input: 2, cacheRead: 0.2, cacheWrite: 2.5, output: 12 }
112824
112881
  };
112825
112882
  function codexCostUsd(params) {
@@ -113057,7 +113114,7 @@ var codex = agent({
113057
113114
  gatewayUrl: codexHomeAuth ? void 0 : getProviderGatewayUrl("openai/")
113058
113115
  });
113059
113116
  if (codexHomeAuth) {
113060
- core3.saveState(
113117
+ saveSecretState(
113061
113118
  OAUTH_WRITEBACK_STATE,
113062
113119
  JSON.stringify({
113063
113120
  apiToken: ctx.apiToken,
@@ -113142,7 +113199,6 @@ var codex = agent({
113142
113199
  });
113143
113200
 
113144
113201
  // agents/opencode.ts
113145
- var core4 = __toESM(require_core(), 1);
113146
113202
  import { spawn as nodeSpawn2 } from "node:child_process";
113147
113203
  import { mkdirSync as mkdirSync7, writeFileSync as writeFileSync6 } from "node:fs";
113148
113204
  import { join as join7 } from "node:path";
@@ -119584,7 +119640,7 @@ var opencode = agent({
119584
119640
  });
119585
119641
  }
119586
119642
  if (writebacks.length > 0) {
119587
- core4.saveState(
119643
+ saveSecretState(
119588
119644
  OAUTH_WRITEBACK_STATE,
119589
119645
  JSON.stringify({ apiToken: ctx.apiToken, entries: writebacks })
119590
119646
  );
@@ -130679,7 +130735,7 @@ var Hono2 = class extends Hono {
130679
130735
  }
130680
130736
  };
130681
130737
 
130682
- // node_modules/.pnpm/mcp-proxy@6.7.11/node_modules/mcp-proxy/dist/startStdioServer-C4sEMMHS.mjs
130738
+ // node_modules/.pnpm/mcp-proxy@6.7.12/node_modules/mcp-proxy/dist/startStdioServer-C9HzKfjR.mjs
130683
130739
  import { createRequire } from "node:module";
130684
130740
  import { randomUUID as randomUUID2, timingSafeEqual } from "node:crypto";
130685
130741
 
@@ -140452,7 +140508,7 @@ var require_core$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
140452
140508
  Object.defineProperty(exports, "__esModule", { value: true });
140453
140509
  const id_1 = require_id2();
140454
140510
  const ref_1 = require_ref2();
140455
- const core12 = [
140511
+ const core8 = [
140456
140512
  "$schema",
140457
140513
  "$id",
140458
140514
  "$defs",
@@ -140462,7 +140518,7 @@ var require_core$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
140462
140518
  id_1.default,
140463
140519
  ref_1.default
140464
140520
  ];
140465
- exports.default = core12;
140521
+ exports.default = core8;
140466
140522
  }));
140467
140523
  var require_limitNumber2 = /* @__PURE__ */ __commonJSMin(((exports) => {
140468
140524
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -142600,7 +142656,7 @@ var require_json_schema_2019_09 = /* @__PURE__ */ __commonJSMin(((exports) => {
142600
142656
  const metaSchema = require_schema$1();
142601
142657
  const applicator = require_applicator$1();
142602
142658
  const content = require_content$1();
142603
- const core12 = require_core$1();
142659
+ const core8 = require_core$1();
142604
142660
  const format2 = require_format3();
142605
142661
  const metadata = require_meta_data$1();
142606
142662
  const validation = require_validation$1();
@@ -142610,7 +142666,7 @@ var require_json_schema_2019_09 = /* @__PURE__ */ __commonJSMin(((exports) => {
142610
142666
  metaSchema,
142611
142667
  applicator,
142612
142668
  content,
142613
- core12,
142669
+ core8,
142614
142670
  with$data(this, format2),
142615
142671
  metadata,
142616
142672
  with$data(this, validation)
@@ -143050,7 +143106,7 @@ var require_json_schema_2020_12 = /* @__PURE__ */ __commonJSMin(((exports) => {
143050
143106
  const applicator = require_applicator2();
143051
143107
  const unevaluated = require_unevaluated();
143052
143108
  const content = require_content();
143053
- const core12 = require_core4();
143109
+ const core8 = require_core4();
143054
143110
  const format2 = require_format_annotation();
143055
143111
  const metadata = require_meta_data();
143056
143112
  const validation = require_validation2();
@@ -143061,7 +143117,7 @@ var require_json_schema_2020_12 = /* @__PURE__ */ __commonJSMin(((exports) => {
143061
143117
  applicator,
143062
143118
  unevaluated,
143063
143119
  content,
143064
- core12,
143120
+ core8,
143065
143121
  with$data(this, format2),
143066
143122
  metadata,
143067
143123
  with$data(this, validation)
@@ -146278,7 +146334,7 @@ function createMcpHandler(factory, options = {}) {
146278
146334
  };
146279
146335
  }
146280
146336
 
146281
- // node_modules/.pnpm/mcp-proxy@6.7.11/node_modules/mcp-proxy/dist/startStdioServer-C4sEMMHS.mjs
146337
+ // node_modules/.pnpm/mcp-proxy@6.7.12/node_modules/mcp-proxy/dist/startStdioServer-C9HzKfjR.mjs
146282
146338
  import http from "http";
146283
146339
  import { Http2ServerRequest } from "http2";
146284
146340
  import { Readable } from "stream";
@@ -154503,7 +154559,7 @@ var require_core$22 = /* @__PURE__ */ __commonJSMin2(((exports) => {
154503
154559
  Object.defineProperty(exports, "__esModule", { value: true });
154504
154560
  const id_1 = require_id3();
154505
154561
  const ref_1 = require_ref3();
154506
- const core12 = [
154562
+ const core8 = [
154507
154563
  "$schema",
154508
154564
  "$id",
154509
154565
  "$defs",
@@ -154513,7 +154569,7 @@ var require_core$22 = /* @__PURE__ */ __commonJSMin2(((exports) => {
154513
154569
  id_1.default,
154514
154570
  ref_1.default
154515
154571
  ];
154516
- exports.default = core12;
154572
+ exports.default = core8;
154517
154573
  }));
154518
154574
  var require_limitNumber3 = /* @__PURE__ */ __commonJSMin2(((exports) => {
154519
154575
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -156651,7 +156707,7 @@ var require_json_schema_2019_092 = /* @__PURE__ */ __commonJSMin2(((exports) =>
156651
156707
  const metaSchema = require_schema$12();
156652
156708
  const applicator = require_applicator$12();
156653
156709
  const content = require_content$12();
156654
- const core12 = require_core$12();
156710
+ const core8 = require_core$12();
156655
156711
  const format2 = require_format4();
156656
156712
  const metadata = require_meta_data$12();
156657
156713
  const validation = require_validation$12();
@@ -156661,7 +156717,7 @@ var require_json_schema_2019_092 = /* @__PURE__ */ __commonJSMin2(((exports) =>
156661
156717
  metaSchema,
156662
156718
  applicator,
156663
156719
  content,
156664
- core12,
156720
+ core8,
156665
156721
  with$data(this, format2),
156666
156722
  metadata,
156667
156723
  with$data(this, validation)
@@ -157101,7 +157157,7 @@ var require_json_schema_2020_122 = /* @__PURE__ */ __commonJSMin2(((exports) =>
157101
157157
  const applicator = require_applicator3();
157102
157158
  const unevaluated = require_unevaluated2();
157103
157159
  const content = require_content2();
157104
- const core12 = require_core5();
157160
+ const core8 = require_core5();
157105
157161
  const format2 = require_format_annotation2();
157106
157162
  const metadata = require_meta_data2();
157107
157163
  const validation = require_validation3();
@@ -157112,7 +157168,7 @@ var require_json_schema_2020_122 = /* @__PURE__ */ __commonJSMin2(((exports) =>
157112
157168
  applicator,
157113
157169
  unevaluated,
157114
157170
  content,
157115
- core12,
157171
+ core8,
157116
157172
  with$data(this, format2),
157117
157173
  metadata,
157118
157174
  with$data(this, validation)
@@ -157683,7 +157739,7 @@ var SseError = class extends Error {
157683
157739
  }
157684
157740
  };
157685
157741
 
157686
- // node_modules/.pnpm/mcp-proxy@6.7.11/node_modules/mcp-proxy/dist/startStdioServer-C4sEMMHS.mjs
157742
+ // node_modules/.pnpm/mcp-proxy@6.7.12/node_modules/mcp-proxy/dist/startStdioServer-C9HzKfjR.mjs
157687
157743
  var __create4 = Object.create;
157688
157744
  var __defProp$1 = Object.defineProperty;
157689
157745
  var __getOwnPropDesc4 = Object.getOwnPropertyDescriptor;
@@ -174696,6 +174752,10 @@ var applyCorsHeaders = (req, res, corsOptions) => {
174696
174752
  console.error("[mcp-proxy] error parsing origin", error62);
174697
174753
  }
174698
174754
  };
174755
+ var canServeModernRoute = (server) => {
174756
+ const target = server instanceof McpServer ? server.server : server;
174757
+ return Array.isArray(target._supportedProtocolVersions);
174758
+ };
174699
174759
  var createModernLeg = ({ createServer: createServer4, onClose, onConnect, onListenSubscriptions }) => {
174700
174760
  const requestContext = new AsyncLocalStorage2();
174701
174761
  const createInstance = async ({ authResult, body, req }) => {
@@ -174715,6 +174775,18 @@ var createModernLeg = ({ createServer: createServer4, onClose, onConnect, onList
174715
174775
  };
174716
174776
  target.onclose = teardown;
174717
174777
  try {
174778
+ if (!canServeModernRoute(server)) throw new Response(JSON.stringify({
174779
+ error: {
174780
+ code: -32e3,
174781
+ data: { reason: "server_missing_modern_protocol_support" },
174782
+ message: "Unsupported protocol version: the server instance cannot serve the 2026-07-28 protocol revision. It was built by the 1.x MCP SDK (e.g. fastmcp <=4.x pulling mcp-proxy through its `^6.4.6` range), which does not declare `_supportedProtocolVersions`. Upgrade the framework that builds it, or serve only 2025-era clients (`modern: false`)."
174783
+ },
174784
+ id: getRequestId(body),
174785
+ jsonrpc: "2.0"
174786
+ }), {
174787
+ headers: { "content-type": "application/json" },
174788
+ status: 400
174789
+ });
174718
174790
  if (onListenSubscriptions) {
174719
174791
  const listenUris = readListenSubscriptions(body);
174720
174792
  if (listenUris.length > 0) releaseSubscriptions = await onListenSubscriptions(listenUris);
@@ -187817,7 +187889,7 @@ this usually means your local branch has commits that were never pushed \u2014 s
187817
187889
  }
187818
187890
 
187819
187891
  // utils/github.ts
187820
- var core5 = __toESM(require_core(), 1);
187892
+ var core4 = __toESM(require_core(), 1);
187821
187893
  import { createSign } from "node:crypto";
187822
187894
  import { rename, writeFile } from "node:fs/promises";
187823
187895
  import { dirname as dirname3, join as join12 } from "node:path";
@@ -192066,9 +192138,7 @@ async function fetchIdTokenFromStash(creds) {
192066
192138
  if (!body.value) {
192067
192139
  throw new Error("ID token response has no value field");
192068
192140
  }
192069
- if (isGitHubActions) {
192070
- core5.setSecret(body.value);
192071
- }
192141
+ maskSecret(body.value);
192072
192142
  return body.value;
192073
192143
  }
192074
192144
  function translateIdTokenError(error62) {
@@ -192080,7 +192150,7 @@ function translateIdTokenError(error62) {
192080
192150
  var mintIdToken = op(
192081
192151
  async () => {
192082
192152
  try {
192083
- return await core5.getIDToken(OIDC_AUDIENCE);
192153
+ return await core4.getIDToken(OIDC_AUDIENCE);
192084
192154
  } catch (error62) {
192085
192155
  throw translateIdTokenError(error62);
192086
192156
  }
@@ -193418,6 +193488,15 @@ function buildImplementPlanLink(ctx, issueNumber, commentId) {
193418
193488
  const apiUrl = getApiUrl();
193419
193489
  return `[Implement plan \u2794](${apiUrl}/trigger/${ctx.repo.owner}/${ctx.repo.name}/${issueNumber}?action=implement&comment_id=${commentId})`;
193420
193490
  }
193491
+ function buildEnrichmentLinks(ctx) {
193492
+ const event = ctx.payload.event;
193493
+ if (event.trigger !== "issues_opened" || event.is_pr || ctx.payload.prompt || ctx.toolState.selectedMode === "Build") {
193494
+ return [];
193495
+ }
193496
+ return [
193497
+ `[Implement a fix \u2794](${getApiUrl()}/trigger/${ctx.repo.owner}/${ctx.repo.name}/${event.issue_number}?action=build)`
193498
+ ];
193499
+ }
193421
193500
  function addFooter(ctx, body) {
193422
193501
  if (/<br\s*\/?>[ \t]*\n(?!\s*\n)/i.test(body)) {
193423
193502
  throw new Error(
@@ -193454,13 +193533,14 @@ function CreateCommentTool(ctx) {
193454
193533
  if (issueNumber === ctx.payload.event.issue_number) {
193455
193534
  ctx.toolState.standaloneCommentId = result.data.id;
193456
193535
  }
193457
- if (commentType === "Plan") {
193458
- if (result.data.node_id) {
193536
+ const enrichmentLinks = issueNumber === ctx.payload.event.issue_number ? buildEnrichmentLinks(ctx) : [];
193537
+ if (commentType === "Plan" || enrichmentLinks.length > 0) {
193538
+ if (commentType === "Plan" && result.data.node_id) {
193459
193539
  await patchWorkflowRunFields(ctx, { planCommentNodeId: result.data.node_id });
193460
193540
  }
193461
- const customParts = [buildImplementPlanLink(ctx, issueNumber, result.data.id)];
193541
+ const customParts = commentType === "Plan" ? [buildImplementPlanLink(ctx, issueNumber, result.data.id)] : enrichmentLinks;
193462
193542
  const footer = buildCommentFooter(ctx, customParts);
193463
- const bodyWithPlanLink = `${stripExistingFooter(body)}${footer}`;
193543
+ const bodyWithPlanLink = `${stripExistingFooter(bodyWithFooter)}${footer}`;
193464
193544
  const updateResult = await ctx.octokit.rest.issues.updateComment({
193465
193545
  owner: ctx.repo.owner,
193466
193546
  repo: ctx.repo.name,
@@ -193532,6 +193612,7 @@ async function reportProgress(ctx, params) {
193532
193612
  }
193533
193613
  const issueNumber = ctx.payload.event.issue_number ?? primaryRepoState(ctx.toolState).issueNumber;
193534
193614
  const isPlanMode = ctx.toolState.selectedMode === "Plan";
193615
+ const enrichmentLinks = params.liveProgress ? [] : buildEnrichmentLinks(ctx);
193535
193616
  const apiCtx = { octokit: ctx.octokit, owner: ctx.repo.owner, repo: ctx.repo.name };
193536
193617
  if (target_plan_comment === true && ctx.toolState.existingPlanCommentId === void 0) {
193537
193618
  log.warning("target_plan_comment requested but no existingPlanCommentId in tool state");
@@ -193539,7 +193620,7 @@ async function reportProgress(ctx, params) {
193539
193620
  if (target_plan_comment === true && ctx.toolState.existingPlanCommentId !== void 0) {
193540
193621
  const commentId = ctx.toolState.existingPlanCommentId;
193541
193622
  const customParts = issueNumber !== void 0 ? [buildImplementPlanLink(ctx, issueNumber, commentId)] : void 0;
193542
- const bodyWithoutFooter = stripExistingFooter(body);
193623
+ const bodyWithoutFooter = stripExistingFooter(fixDoubleEscapedString(body));
193543
193624
  const footer = buildCommentFooter(ctx, customParts);
193544
193625
  const bodyWithFooter = `${bodyWithoutFooter}${footer}`;
193545
193626
  const result = await updateProgressComment(
@@ -193560,8 +193641,8 @@ async function reportProgress(ctx, params) {
193560
193641
  }
193561
193642
  const existingComment = ctx.toolState.progressComment;
193562
193643
  if (existingComment) {
193563
- const customParts = isPlanMode && issueNumber !== void 0 ? [buildImplementPlanLink(ctx, issueNumber, existingComment.id)] : void 0;
193564
- const bodyWithoutFooter = stripExistingFooter(body);
193644
+ const customParts = isPlanMode && issueNumber !== void 0 ? [buildImplementPlanLink(ctx, issueNumber, existingComment.id)] : enrichmentLinks;
193645
+ const bodyWithoutFooter = stripExistingFooter(fixDoubleEscapedString(body));
193565
193646
  const footer = buildCommentFooter(ctx, customParts);
193566
193647
  const bodyWithFooter = `${bodyWithoutFooter}${footer}`;
193567
193648
  let result;
@@ -193613,13 +193694,13 @@ async function reportProgress(ctx, params) {
193613
193694
  );
193614
193695
  ctx.toolState.progressComment = created.comment;
193615
193696
  if (!params.liveProgress) ctx.toolState.wasUpdated = true;
193616
- if (isPlanMode) {
193617
- const customParts = [buildImplementPlanLink(ctx, issueNumber, created.comment.id)];
193618
- const bodyWithoutFooter = stripExistingFooter(body);
193697
+ if (isPlanMode || enrichmentLinks.length > 0) {
193698
+ const customParts = isPlanMode ? [buildImplementPlanLink(ctx, issueNumber, created.comment.id)] : enrichmentLinks;
193699
+ const bodyWithoutFooter = stripExistingFooter(initialBody);
193619
193700
  const footer = buildCommentFooter(ctx, customParts);
193620
193701
  const bodyWithPlanLink = `${bodyWithoutFooter}${footer}`;
193621
193702
  const updateResult = await updateProgressComment(apiCtx, created.comment, bodyWithPlanLink);
193622
- if (updateResult.node_id) {
193703
+ if (isPlanMode && updateResult.node_id) {
193623
193704
  await patchWorkflowRunFields(ctx, { planCommentNodeId: updateResult.node_id });
193624
193705
  }
193625
193706
  return {
@@ -197534,6 +197615,37 @@ function ResolveReviewThreadTool(ctx) {
197534
197615
  });
197535
197616
  }
197536
197617
 
197618
+ // mcp/searchIssues.ts
197619
+ var SearchIssues = type({
197620
+ terms: type.string.matching(/^[\p{L}\p{N}_./-]+$/u).atMostLength(40).array().atLeastLength(1).atMostLength(5).describe("1-5 keywords from the issue; no GitHub qualifiers or query operators")
197621
+ });
197622
+ function SearchIssuesTool(ctx) {
197623
+ return tool({
197624
+ name: "search_issues",
197625
+ description: "Find open or closed issues in this repository by keyword. Inspect promising matches with get_issue before deciding whether they are duplicates or related. Results are bounded, not an exhaustive duplicate check.",
197626
+ parameters: SearchIssues,
197627
+ execute: execute(async (params) => {
197628
+ const repoPath = `/repos/${ctx.repo.owner}/${ctx.repo.name}`.toLowerCase();
197629
+ const terms = params.terms.map((term) => `"${term}"`).join(" ");
197630
+ const response = await ctx.octokit.rest.search.issuesAndPullRequests({
197631
+ q: `repo:${ctx.repo.owner}/${ctx.repo.name} is:issue ${terms}`,
197632
+ per_page: 20
197633
+ });
197634
+ return {
197635
+ incomplete: response.data.incomplete_results || response.data.total_count > 20,
197636
+ issues: response.data.items.filter(
197637
+ (issue3) => new URL(issue3.repository_url).pathname.toLowerCase() === repoPath && !issue3.pull_request && issue3.number !== ctx.payload.event.issue_number
197638
+ ).map((issue3) => ({
197639
+ number: issue3.number,
197640
+ title: issue3.title,
197641
+ url: issue3.html_url,
197642
+ state: issue3.state
197643
+ }))
197644
+ };
197645
+ })
197646
+ });
197647
+ }
197648
+
197537
197649
  // mcp/selectMode.ts
197538
197650
  var SelectModeParams = type({
197539
197651
  mode: type.string.describe(
@@ -197948,6 +198060,9 @@ function buildCommonTools(ctx, outputSchema) {
197948
198060
  if (hasSimilarIssues({ repoIntelligence: ctx.repoIntelligence, event: ctx.payload.event })) {
197949
198061
  tools.push(SimilarIssuesTool(ctx));
197950
198062
  }
198063
+ if (ctx.payload.event.issue_number !== void 0 && !ctx.payload.event.is_pr) {
198064
+ tools.push(SearchIssuesTool(ctx));
198065
+ }
197951
198066
  const isStandalone = ctx.payload.event.trigger === "unknown";
197952
198067
  if (isStandalone || outputSchema) {
197953
198068
  tools.push(SetOutputTool(ctx, outputSchema));
@@ -199673,7 +199788,6 @@ function buildModelAccessError(input2) {
199673
199788
  }
199674
199789
 
199675
199790
  // utils/normalizeEnv.ts
199676
- var core6 = __toESM(require_core(), 1);
199677
199791
  function hasControlCharacter(value2) {
199678
199792
  return [...value2].some((ch) => {
199679
199793
  const code = ch.charCodeAt(0);
@@ -199699,7 +199813,7 @@ function sanitizeSecret(key, value2) {
199699
199813
  `\xBB stripped whitespace from ${key} (whitespace in secret values breaks GitHub Actions log masking)`
199700
199814
  );
199701
199815
  }
199702
- core6.setSecret(trimmed);
199816
+ maskSecret(trimmed);
199703
199817
  return trimmed;
199704
199818
  }
199705
199819
  function normalizeEnv() {
@@ -199743,7 +199857,6 @@ function normalizeEnv() {
199743
199857
  }
199744
199858
 
199745
199859
  // utils/overrides.ts
199746
- var core7 = __toESM(require_core(), 1);
199747
199860
  var DENIED_OVERRIDE_NAMES = /* @__PURE__ */ new Set([
199748
199861
  "GITHUB_TOKEN",
199749
199862
  "GH_TOKEN",
@@ -199789,7 +199902,7 @@ function applyOverrides(params) {
199789
199902
  denied.push(key);
199790
199903
  continue;
199791
199904
  }
199792
- if (value2.length > 0) core7.setSecret(value2);
199905
+ if (value2.length > 0) maskSecret(value2);
199793
199906
  params.env[key] = value2;
199794
199907
  applied.push(key);
199795
199908
  }
@@ -199798,7 +199911,7 @@ function applyOverrides(params) {
199798
199911
  }
199799
199912
 
199800
199913
  // utils/payload.ts
199801
- var core8 = __toESM(require_core(), 1);
199914
+ var core5 = __toESM(require_core(), 1);
199802
199915
  import { readFileSync as readFileSync7 } from "node:fs";
199803
199916
  import { isAbsolute as isAbsolute2, resolve as resolve2 } from "node:path";
199804
199917
 
@@ -199941,8 +200054,8 @@ function assertDispatchPayloadIntact(promptInput) {
199941
200054
  );
199942
200055
  }
199943
200056
  function resolvePromptInput() {
199944
- const promptInput = core8.getInput("prompt");
199945
- const promptFile = core8.getInput("prompt_file");
200057
+ const promptInput = core5.getInput("prompt");
200058
+ const promptFile = core5.getInput("prompt_file");
199946
200059
  if (promptInput && promptFile) {
199947
200060
  throw new Error("set exactly one of 'prompt' or 'prompt_file' inputs, not both.");
199948
200061
  }
@@ -199976,7 +200089,7 @@ function resolvePromptFile(input2) {
199976
200089
  }
199977
200090
  function warnIfDeprecatedStatusChecks(value2) {
199978
200091
  if (value2 !== void 0) {
199979
- core8.warning(
200092
+ core5.warning(
199980
200093
  "`status_checks` is deprecated. Both checks are now repository settings \u2014 open the Pullfrog console for this repo (Automations \u2192 Review PRs) and set them there, then remove `status_checks` from your workflow. It keeps working until you do."
199981
200094
  );
199982
200095
  }
@@ -199984,15 +200097,15 @@ function warnIfDeprecatedStatusChecks(value2) {
199984
200097
  }
199985
200098
  function resolveNonPromptInputs() {
199986
200099
  return Inputs.omit("prompt", "prompt_file").assert({
199987
- model: core8.getInput("model") || void 0,
199988
- effort: core8.getInput("effort") || void 0,
199989
- debug: core8.getInput("debug") || void 0,
199990
- timeout: core8.getInput("timeout") || void 0,
199991
- cwd: core8.getInput("cwd") || void 0,
199992
- push: core8.getInput("push") || void 0,
199993
- shell: core8.getInput("shell") || void 0,
199994
- status_checks: warnIfDeprecatedStatusChecks(core8.getInput("status_checks") || void 0),
199995
- progress_comments: core8.getInput("progress_comments") || void 0
200100
+ model: core5.getInput("model") || void 0,
200101
+ effort: core5.getInput("effort") || void 0,
200102
+ debug: core5.getInput("debug") || void 0,
200103
+ timeout: core5.getInput("timeout") || void 0,
200104
+ cwd: core5.getInput("cwd") || void 0,
200105
+ push: core5.getInput("push") || void 0,
200106
+ shell: core5.getInput("shell") || void 0,
200107
+ status_checks: warnIfDeprecatedStatusChecks(core5.getInput("status_checks") || void 0),
200108
+ progress_comments: core5.getInput("progress_comments") || void 0
199996
200109
  });
199997
200110
  }
199998
200111
  function resolvePayload(resolvedPromptInput, repoSettings) {
@@ -200063,7 +200176,7 @@ function resolvePayload(resolvedPromptInput, repoSettings) {
200063
200176
  };
200064
200177
  }
200065
200178
  function resolveOutputSchema() {
200066
- const raw2 = core8.getInput("output_schema");
200179
+ const raw2 = core5.getInput("output_schema");
200067
200180
  if (!raw2) return void 0;
200068
200181
  let parsed2;
200069
200182
  try {
@@ -200078,11 +200191,8 @@ function resolveOutputSchema() {
200078
200191
  return parsed2;
200079
200192
  }
200080
200193
 
200081
- // utils/proxy.ts
200082
- var core10 = __toESM(require_core(), 1);
200083
-
200084
200194
  // utils/token.ts
200085
- var core9 = __toESM(require_core(), 1);
200195
+ var core6 = __toESM(require_core(), 1);
200086
200196
  import assert2 from "node:assert/strict";
200087
200197
  var mcpTokenValue;
200088
200198
  var refreshMcpTokenFn;
@@ -200090,7 +200200,7 @@ function getMcpTokenRefresh() {
200090
200200
  return refreshMcpTokenFn;
200091
200201
  }
200092
200202
  function getJobToken() {
200093
- const inputToken = core9.getInput("token");
200203
+ const inputToken = core6.getInput("token");
200094
200204
  if (inputToken) {
200095
200205
  return inputToken;
200096
200206
  }
@@ -200105,9 +200215,7 @@ async function resolveTokens(params) {
200105
200215
  const externalToken = process.env.GH_TOKEN;
200106
200216
  if (externalToken) {
200107
200217
  mcpTokenValue = externalToken;
200108
- if (isGitHubActions) {
200109
- core9.setSecret(externalToken);
200110
- }
200218
+ maskSecret(externalToken);
200111
200219
  log.info("\xBB using external GH_TOKEN for both git and MCP");
200112
200220
  return {
200113
200221
  gitToken: externalToken,
@@ -200129,9 +200237,7 @@ async function resolveTokens(params) {
200129
200237
  xrepoGrant: params.xrepoGrant,
200130
200238
  permissions: gitPermissions
200131
200239
  });
200132
- if (isGitHubActions) {
200133
- core9.setSecret(gitToken);
200134
- }
200240
+ maskSecret(gitToken);
200135
200241
  log.info(
200136
200242
  `\xBB acquired git token (${Object.entries(gitPermissions).map((e) => e.join(":")).join(", ")})`
200137
200243
  );
@@ -200150,9 +200256,7 @@ async function resolveTokens(params) {
200150
200256
  xrepoGrant: params.xrepoGrant,
200151
200257
  permissions: mcpPermissions
200152
200258
  });
200153
- if (isGitHubActions) {
200154
- core9.setSecret(mcpToken);
200155
- }
200259
+ maskSecret(mcpToken);
200156
200260
  log.info(
200157
200261
  `\xBB acquired scoped MCP token (${Object.entries(mcpPermissions).map((e) => e.join(":")).join(", ")})`
200158
200262
  );
@@ -200160,7 +200264,7 @@ async function resolveTokens(params) {
200160
200264
  let ghToken;
200161
200265
  if (ghPermissions) {
200162
200266
  ghToken = await acquireNewToken({ permissions: ghPermissions });
200163
- if (isGitHubActions) core9.setSecret(ghToken);
200267
+ maskSecret(ghToken);
200164
200268
  log.info(
200165
200269
  `\xBB acquired gh token mirroring ${params.authorPermission} (${formatPermissions(ghPermissions)})`
200166
200270
  );
@@ -200172,7 +200276,7 @@ async function resolveTokens(params) {
200172
200276
  xrepoGrant: params.xrepoGrant,
200173
200277
  permissions: { contents: "read" }
200174
200278
  });
200175
- if (isGitHubActions) core9.setSecret(readToken);
200279
+ maskSecret(readToken);
200176
200280
  log.info(`\xBB acquired cross-repo read token (contents:read, ${params.xrepo.read.length} repos)`);
200177
200281
  }
200178
200282
  mcpTokenValue = mcpToken;
@@ -200191,9 +200295,7 @@ async function resolveTokens(params) {
200191
200295
  permissions: mcpPermissions,
200192
200296
  oidc: params.oidc ?? void 0
200193
200297
  }).then((fresh) => {
200194
- if (isGitHubActions) {
200195
- core9.setSecret(fresh);
200196
- }
200298
+ maskSecret(fresh);
200197
200299
  mcpTokenValue = fresh;
200198
200300
  currentMcpToken = fresh;
200199
200301
  log.warning("\xBB GitHub rejected the MCP token; re-acquired a fresh scoped MCP token");
@@ -200214,7 +200316,7 @@ async function resolveTokens(params) {
200214
200316
  permissions: gitPermissions,
200215
200317
  oidc: params.oidc ?? void 0
200216
200318
  }).then((fresh) => {
200217
- if (isGitHubActions) core9.setSecret(fresh);
200319
+ maskSecret(fresh);
200218
200320
  void revokeGitHubInstallationToken(currentGitToken);
200219
200321
  currentGitToken = fresh;
200220
200322
  log.warning("\xBB GitHub rejected the git token; re-acquired a fresh git token");
@@ -200232,7 +200334,7 @@ async function resolveTokens(params) {
200232
200334
  permissions: { contents: "read" },
200233
200335
  oidc: params.oidc ?? void 0
200234
200336
  }).then((fresh) => {
200235
- if (isGitHubActions) core9.setSecret(fresh);
200337
+ maskSecret(fresh);
200236
200338
  void revokeGitHubInstallationToken(read2);
200237
200339
  currentReadToken = fresh;
200238
200340
  log.warning("\xBB GitHub rejected the read token; re-acquired a fresh read token");
@@ -200446,7 +200548,7 @@ async function resolveProxyModel(ctx) {
200446
200548
  });
200447
200549
  if (!key) return;
200448
200550
  process.env.OPENROUTER_API_KEY = key;
200449
- core10.setSecret(key);
200551
+ maskSecret(key);
200450
200552
  ctx.payload.proxyModel = ctx.proxyModel;
200451
200553
  ctx.toolState.model = ctx.proxyModel;
200452
200554
  const label = ctx.oss ? "oss" : "router";
@@ -200524,7 +200626,7 @@ async function resolveTrialFallback(ctx) {
200524
200626
  });
200525
200627
  if (!key) return false;
200526
200628
  process.env.OPENROUTER_API_KEY = key;
200527
- core10.setSecret(key);
200629
+ maskSecret(key);
200528
200630
  ctx.payload.proxyModel = DEFAULT_PROXY_MODEL;
200529
200631
  ctx.toolState.model = DEFAULT_PROXY_MODEL;
200530
200632
  ctx.toolState.modelClamped = {
@@ -200675,6 +200777,7 @@ var defaultSettings = {
200675
200777
  push: "restricted",
200676
200778
  shell: "restricted",
200677
200779
  prApproveEnabled: false,
200780
+ reviewDrafts: false,
200678
200781
  autoMergeEnabled: false,
200679
200782
  codexAgent: false,
200680
200783
  signedCommits: false,
@@ -201228,7 +201331,7 @@ ${genericBody}`,
201228
201331
  }
201229
201332
 
201230
201333
  // utils/runLifecycle.ts
201231
- var core11 = __toESM(require_core(), 1);
201334
+ var core7 = __toESM(require_core(), 1);
201232
201335
 
201233
201336
  // utils/autoMerge.ts
201234
201337
  function hasBlockingHumanReview(reviews) {
@@ -201372,7 +201475,7 @@ async function dispatchFollowUpReReview(ctx, reviewedSha) {
201372
201475
  });
201373
201476
  if (pr.data.head.sha === reviewedSha) return;
201374
201477
  if (pr.data.state !== "open") return;
201375
- if (pr.data.draft) return;
201478
+ if (pr.data.draft && !ctx.reviewDrafts) return;
201376
201479
  log.info(
201377
201480
  `safety net: pr HEAD moved from ${reviewedSha.slice(0, 7)} to ${pr.data.head.sha.slice(0, 7)} and agent did not review inline \u2014 dispatching follow-up re-review`
201378
201481
  );
@@ -201624,7 +201727,7 @@ async function finalizeSuccessRun(input2) {
201624
201727
  }
201625
201728
  if (input2.toolState.output) {
201626
201729
  log.info(`::pullfrog-output::${Buffer.from(input2.toolState.output).toString("base64")}`);
201627
- core11.setOutput("result", input2.toolState.output);
201730
+ core7.setOutput("result", input2.toolState.output);
201628
201731
  }
201629
201732
  if (input2.result.success) {
201630
201733
  await approveAfterFix(input2.toolContext).catch((error62) => {
@@ -202205,6 +202308,7 @@ async function main() {
202205
202308
  postCheckoutScript: runContext.repoSettings.postCheckoutScript,
202206
202309
  prepushScript: runContext.repoSettings.prepushScript,
202207
202310
  prApproveEnabled: runContext.repoSettings.prApproveEnabled,
202311
+ reviewDrafts: runContext.repoSettings.reviewDrafts,
202208
202312
  autoMergeEnabled: runContext.repoSettings.autoMergeEnabled,
202209
202313
  signedCommits: runContext.repoSettings.signedCommits,
202210
202314
  repoIntelligence: runContext.repoSettings.repoIntelligence,
@@ -202536,7 +202640,7 @@ ieee754/index.js:
202536
202640
  * MIT Licensed
202537
202641
  *)
202538
202642
 
202539
- mcp-proxy/dist/startStdioServer-C4sEMMHS.mjs:
202643
+ mcp-proxy/dist/startStdioServer-C9HzKfjR.mjs:
202540
202644
  (*!
202541
202645
  * content-type
202542
202646
  * Copyright(c) 2015 Douglas Christopher Wilson