pullfrog 0.1.69 → 0.1.70

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
@@ -110299,6 +110299,13 @@ var providers = {
110299
110299
  // brand-tier names the slug convention asks for — the pre-5.6 `gpt` /
110300
110300
  // `gpt-pro` / `gpt-mini` slugs are holdovers from the retired GPT / GPT Pro
110301
110301
  // / GPT Mini tiering and are carried below as deprecated aliases.
110302
+ "gpt-astra": {
110303
+ displayName: "GPT Astra",
110304
+ resolve: "openai/gpt-6-astra",
110305
+ effort: ["low", "medium", "high", "xhigh", "max"],
110306
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
110307
+ subagentModel: "gpt-sol"
110308
+ },
110302
110309
  "gpt-sol": {
110303
110310
  displayName: "GPT Sol",
110304
110311
  resolve: "openai/gpt-5.6-sol",
@@ -110660,6 +110667,13 @@ var providers = {
110660
110667
  openRouterResolve: "openrouter/openai/gpt-5.6-sol",
110661
110668
  subagentModel: "gpt-terra"
110662
110669
  },
110670
+ "gpt-astra": {
110671
+ displayName: "GPT Astra",
110672
+ resolve: "opencode/gpt-6-astra",
110673
+ effort: ["low", "medium", "high", "xhigh", "max"],
110674
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
110675
+ subagentModel: "gpt-sol"
110676
+ },
110663
110677
  // see openai/gpt-sol-pro — Zen has no -pro id, so direct resolves to plain Sol.
110664
110678
  "gpt-sol-pro": {
110665
110679
  displayName: "GPT Sol Pro",
@@ -111077,6 +111091,13 @@ var providers = {
111077
111091
  openRouterResolve: "openrouter/openai/gpt-5.6-sol",
111078
111092
  subagentModel: "gpt-terra"
111079
111093
  },
111094
+ "gpt-astra": {
111095
+ displayName: "GPT Astra",
111096
+ resolve: "openrouter/openai/gpt-6-astra",
111097
+ effort: ["low", "medium", "high", "xhigh", "max"],
111098
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
111099
+ subagentModel: "gpt-sol"
111100
+ },
111080
111101
  // see openai/gpt-sol-pro. openrouter serves sol-pro directly on both routes.
111081
111102
  "gpt-sol-pro": {
111082
111103
  displayName: "GPT Sol Pro",
@@ -111247,6 +111268,12 @@ var providers = {
111247
111268
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
111248
111269
  subagentModel: "gpt-terra"
111249
111270
  },
111271
+ "gpt-astra": {
111272
+ displayName: "GPT Astra",
111273
+ resolve: "vercel/openai/gpt-6-astra",
111274
+ effort: ["low", "medium", "high", "xhigh", "max"],
111275
+ subagentModel: "gpt-sol"
111276
+ },
111250
111277
  "gpt-terra": {
111251
111278
  displayName: "GPT Terra",
111252
111279
  resolve: "vercel/openai/gpt-5.6-terra",
@@ -112254,7 +112281,7 @@ var import_semver = __toESM(require_semver2(), 1);
112254
112281
  // package.json
112255
112282
  var package_default = {
112256
112283
  name: "pullfrog",
112257
- version: "0.1.69",
112284
+ version: "0.1.70",
112258
112285
  type: "module",
112259
112286
  bin: {
112260
112287
  pullfrog: "dist/cli.mjs",
@@ -112285,12 +112312,12 @@ var package_default = {
112285
112312
  "@ark/util": "0.56.0",
112286
112313
  "@clack/prompts": "^1.2.0",
112287
112314
  "@modelcontextprotocol/sdk": "^1.26.0",
112288
- "@opencode-ai/sdk": "1.18.5",
112289
- "@openai/codex": "0.147.0",
112290
- "@openai/codex-sdk": "0.147.0",
112291
112315
  "@octokit/plugin-throttling": "^11.0.3",
112292
112316
  "@octokit/rest": "^22.0.0",
112293
112317
  "@octokit/webhooks-types": "^7.6.1",
112318
+ "@openai/codex": "0.153.4",
112319
+ "@openai/codex-sdk": "0.153.4",
112320
+ "@opencode-ai/sdk": "1.18.29",
112294
112321
  "@standard-schema/spec": "1.1.0",
112295
112322
  "@toon-format/toon": "^1.0.0",
112296
112323
  "@types/node": "^24.7.2",
@@ -112310,7 +112337,7 @@ var package_default = {
112310
112337
  husky: "^9.0.0",
112311
112338
  "lru-cache": "^11.0.0",
112312
112339
  "object-hash": "^3.0.0",
112313
- "opencode-ai": "1.18.5",
112340
+ "opencode-ai": "1.18.29",
112314
112341
  "package-manager-detector": "^1.6.0",
112315
112342
  picocolors: "^1.1.1",
112316
112343
  semver: "^7.7.3",
@@ -114911,6 +114938,7 @@ function toTodoWriteInput(item) {
114911
114938
  };
114912
114939
  }
114913
114940
  var CODEX_MODEL_PRICING = {
114941
+ "gpt-6-astra": { input: 10, cacheRead: 1, cacheWrite: 12.5, output: 50 },
114914
114942
  "gpt-5.6-sol": { input: 5, cacheRead: 0.5, cacheWrite: 6.25, output: 30 },
114915
114943
  "gpt-5.6-luna": { input: 0.2, cacheRead: 0.02, cacheWrite: 0.25, output: 1.2 },
114916
114944
  "gpt-5.6-terra": { input: 2, cacheRead: 0.2, cacheWrite: 2.5, output: 12 }
@@ -115237,7 +115265,7 @@ import { mkdirSync as mkdirSync7, writeFileSync as writeFileSync7 } from "node:f
115237
115265
  import { join as join8 } from "node:path";
115238
115266
  import { performance as performance7 } from "node:perf_hooks";
115239
115267
 
115240
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
115268
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
115241
115269
  var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url: url4, ...options }) => {
115242
115270
  let lastEventId;
115243
115271
  const sleep5 = sseSleepFn ?? ((ms) => new Promise((resolve3) => setTimeout(resolve3, ms)));
@@ -115356,7 +115384,7 @@ var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer,
115356
115384
  return { stream };
115357
115385
  };
115358
115386
 
115359
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js
115387
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js
115360
115388
  var separatorArrayExplode = (style) => {
115361
115389
  switch (style) {
115362
115390
  case "label":
@@ -115459,7 +115487,7 @@ var serializeObjectParam = ({ allowReserved, explode, name, style, value: value2
115459
115487
  return style === "label" || style === "matrix" ? separator2 + joinedValues : joinedValues;
115460
115488
  };
115461
115489
 
115462
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js
115490
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js
115463
115491
  var PATH_PARAM_RE = /\{[^{}]+\}/g;
115464
115492
  var defaultPathSerializer = ({ path: path4, url: _url3 }) => {
115465
115493
  let url4 = _url3;
@@ -115542,7 +115570,7 @@ function getValidRequestBody(options) {
115542
115570
  return void 0;
115543
115571
  }
115544
115572
 
115545
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js
115573
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js
115546
115574
  var getAuthToken = async (auth2, callback) => {
115547
115575
  const token = typeof callback === "function" ? await callback(auth2) : callback;
115548
115576
  if (!token) {
@@ -115557,12 +115585,12 @@ var getAuthToken = async (auth2, callback) => {
115557
115585
  return token;
115558
115586
  };
115559
115587
 
115560
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js
115588
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js
115561
115589
  var jsonBodySerializer = {
115562
115590
  bodySerializer: (body) => JSON.stringify(body, (_key, value2) => typeof value2 === "bigint" ? value2.toString() : value2)
115563
115591
  };
115564
115592
 
115565
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js
115593
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js
115566
115594
  var createQuerySerializer = ({ parameters = {}, ...args2 } = {}) => {
115567
115595
  const querySerializer = (queryParams) => {
115568
115596
  const search2 = [];
@@ -115772,7 +115800,7 @@ var createConfig = (override = {}) => ({
115772
115800
  ...override
115773
115801
  });
115774
115802
 
115775
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js
115803
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js
115776
115804
  var createClient = (config3 = {}) => {
115777
115805
  let _config = mergeConfigs(createConfig(), config3);
115778
115806
  const getConfig = () => ({ ..._config });
@@ -115980,7 +116008,7 @@ var createClient = (config3 = {}) => {
115980
116008
  };
115981
116009
  };
115982
116010
 
115983
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js
116011
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js
115984
116012
  var extraPrefixesMap = {
115985
116013
  $body_: "body",
115986
116014
  $headers_: "headers",
@@ -116076,10 +116104,10 @@ var buildClientParams = (args2, fields) => {
116076
116104
  return params;
116077
116105
  };
116078
116106
 
116079
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js
116107
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js
116080
116108
  var client = createClient(createConfig({ baseUrl: "http://localhost:4096" }));
116081
116109
 
116082
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js
116110
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js
116083
116111
  var HeyApiClient = class {
116084
116112
  client;
116085
116113
  constructor(args2) {
@@ -116694,7 +116722,7 @@ var Global = class extends HeyApiClient {
116694
116722
  /**
116695
116723
  * Upgrade opencode
116696
116724
  *
116697
- * Upgrade opencode to the specified version or latest if not specified.
116725
+ * Upgrade opencode to the specified version.
116698
116726
  */
116699
116727
  upgrade(parameters, options) {
116700
116728
  const params = buildClientParams([parameters], [{ args: [{ in: "body", key: "target" }] }]);
@@ -120534,7 +120562,7 @@ var OpencodeClient = class _OpencodeClient extends HeyApiClient {
120534
120562
  }
120535
120563
  };
120536
120564
 
120537
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
120565
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
120538
120566
  function wrapClientError(error62, response, request2, opts) {
120539
120567
  if (!opts?.throwOnError)
120540
120568
  return error62;
@@ -120561,7 +120589,7 @@ function describe(request2, response) {
120561
120589
  return `${method} ${url4}${status ? " \u2192 " + status : ""}${statusText ? " " + statusText : ""}`;
120562
120590
  }
120563
120591
 
120564
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/client.js
120592
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/client.js
120565
120593
  function pick(value2, fallback, encode5) {
120566
120594
  if (!value2)
120567
120595
  return;
@@ -120637,7 +120665,7 @@ function createOpencodeClient(config3) {
120637
120665
  return new OpencodeClient({ client: client2 });
120638
120666
  }
120639
120667
 
120640
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/server.js
120668
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/server.js
120641
120669
  var import_cross_spawn = __toESM(require_cross_spawn(), 1);
120642
120670
 
120643
120671
  // agents/opencode.ts
@@ -200682,11 +200710,11 @@ function billingConsoleUrl(owner) {
200682
200710
  function commercialPaywallBody(params) {
200683
200711
  if (params.reason === "commercial") {
200684
200712
  return [
200685
- `**Pullfrog needs a confirmed Pro plan for ${params.ownerLogin}, so this run paused.**`,
200713
+ `**Pullfrog needs Pro on ${params.ownerLogin}, so this run didn't start.**`,
200686
200714
  "",
200687
- "Open Plan and payment to confirm Pro or review the organization's billing status.",
200715
+ "Pro is $30/month per organization and covers private repositories. Public repos and personal accounts keep running free.",
200688
200716
  "",
200689
- `[Review plan and payment \u2192](${params.url})`
200717
+ `[Upgrade to Pro \u2192](${params.url})`
200690
200718
  ].join("\n");
200691
200719
  }
200692
200720
  params.reason;
@@ -204956,7 +204984,7 @@ function resolveTarget(repo) {
204956
204984
  return { owner: match3[1], repo: match3[2] };
204957
204985
  }
204958
204986
  function cliVersion() {
204959
- const parts = /^(\d+)\.(\d+)\.(\d+)$/.exec("0.1.69");
204987
+ const parts = /^(\d+)\.(\d+)\.(\d+)$/.exec("0.1.70");
204960
204988
  if (!parts) return "0.0.0";
204961
204989
  return `${Number(parts[1])}.${Number(parts[2])}.${Number(parts[3])}`;
204962
204990
  }
@@ -205123,7 +205151,7 @@ async function runCli5(input2) {
205123
205151
  }
205124
205152
 
205125
205153
  // cli.ts
205126
- var VERSION10 = "0.1.69";
205154
+ var VERSION10 = "0.1.70";
205127
205155
  var bin = basename2(process.argv[1] || "");
205128
205156
  var PROG = bin === "pf" || bin === "pullfrog" ? bin : "pullfrog";
205129
205157
  var rawArgs = process.argv.slice(2);
package/dist/index.js CHANGED
@@ -107809,6 +107809,13 @@ var providers = {
107809
107809
  // brand-tier names the slug convention asks for — the pre-5.6 `gpt` /
107810
107810
  // `gpt-pro` / `gpt-mini` slugs are holdovers from the retired GPT / GPT Pro
107811
107811
  // / GPT Mini tiering and are carried below as deprecated aliases.
107812
+ "gpt-astra": {
107813
+ displayName: "GPT Astra",
107814
+ resolve: "openai/gpt-6-astra",
107815
+ effort: ["low", "medium", "high", "xhigh", "max"],
107816
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
107817
+ subagentModel: "gpt-sol"
107818
+ },
107812
107819
  "gpt-sol": {
107813
107820
  displayName: "GPT Sol",
107814
107821
  resolve: "openai/gpt-5.6-sol",
@@ -108170,6 +108177,13 @@ var providers = {
108170
108177
  openRouterResolve: "openrouter/openai/gpt-5.6-sol",
108171
108178
  subagentModel: "gpt-terra"
108172
108179
  },
108180
+ "gpt-astra": {
108181
+ displayName: "GPT Astra",
108182
+ resolve: "opencode/gpt-6-astra",
108183
+ effort: ["low", "medium", "high", "xhigh", "max"],
108184
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
108185
+ subagentModel: "gpt-sol"
108186
+ },
108173
108187
  // see openai/gpt-sol-pro — Zen has no -pro id, so direct resolves to plain Sol.
108174
108188
  "gpt-sol-pro": {
108175
108189
  displayName: "GPT Sol Pro",
@@ -108587,6 +108601,13 @@ var providers = {
108587
108601
  openRouterResolve: "openrouter/openai/gpt-5.6-sol",
108588
108602
  subagentModel: "gpt-terra"
108589
108603
  },
108604
+ "gpt-astra": {
108605
+ displayName: "GPT Astra",
108606
+ resolve: "openrouter/openai/gpt-6-astra",
108607
+ effort: ["low", "medium", "high", "xhigh", "max"],
108608
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
108609
+ subagentModel: "gpt-sol"
108610
+ },
108590
108611
  // see openai/gpt-sol-pro. openrouter serves sol-pro directly on both routes.
108591
108612
  "gpt-sol-pro": {
108592
108613
  displayName: "GPT Sol Pro",
@@ -108757,6 +108778,12 @@ var providers = {
108757
108778
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
108758
108779
  subagentModel: "gpt-terra"
108759
108780
  },
108781
+ "gpt-astra": {
108782
+ displayName: "GPT Astra",
108783
+ resolve: "vercel/openai/gpt-6-astra",
108784
+ effort: ["low", "medium", "high", "xhigh", "max"],
108785
+ subagentModel: "gpt-sol"
108786
+ },
108760
108787
  "gpt-terra": {
108761
108788
  displayName: "GPT Terra",
108762
108789
  resolve: "vercel/openai/gpt-5.6-terra",
@@ -109764,7 +109791,7 @@ var import_semver = __toESM(require_semver2(), 1);
109764
109791
  // package.json
109765
109792
  var package_default = {
109766
109793
  name: "pullfrog",
109767
- version: "0.1.69",
109794
+ version: "0.1.70",
109768
109795
  type: "module",
109769
109796
  bin: {
109770
109797
  pullfrog: "dist/cli.mjs",
@@ -109795,12 +109822,12 @@ var package_default = {
109795
109822
  "@ark/util": "0.56.0",
109796
109823
  "@clack/prompts": "^1.2.0",
109797
109824
  "@modelcontextprotocol/sdk": "^1.26.0",
109798
- "@opencode-ai/sdk": "1.18.5",
109799
- "@openai/codex": "0.147.0",
109800
- "@openai/codex-sdk": "0.147.0",
109801
109825
  "@octokit/plugin-throttling": "^11.0.3",
109802
109826
  "@octokit/rest": "^22.0.0",
109803
109827
  "@octokit/webhooks-types": "^7.6.1",
109828
+ "@openai/codex": "0.153.4",
109829
+ "@openai/codex-sdk": "0.153.4",
109830
+ "@opencode-ai/sdk": "1.18.29",
109804
109831
  "@standard-schema/spec": "1.1.0",
109805
109832
  "@toon-format/toon": "^1.0.0",
109806
109833
  "@types/node": "^24.7.2",
@@ -109820,7 +109847,7 @@ var package_default = {
109820
109847
  husky: "^9.0.0",
109821
109848
  "lru-cache": "^11.0.0",
109822
109849
  "object-hash": "^3.0.0",
109823
- "opencode-ai": "1.18.5",
109850
+ "opencode-ai": "1.18.29",
109824
109851
  "package-manager-detector": "^1.6.0",
109825
109852
  picocolors: "^1.1.1",
109826
109853
  semver: "^7.7.3",
@@ -112494,6 +112521,7 @@ function toTodoWriteInput(item) {
112494
112521
  };
112495
112522
  }
112496
112523
  var CODEX_MODEL_PRICING = {
112524
+ "gpt-6-astra": { input: 10, cacheRead: 1, cacheWrite: 12.5, output: 50 },
112497
112525
  "gpt-5.6-sol": { input: 5, cacheRead: 0.5, cacheWrite: 6.25, output: 30 },
112498
112526
  "gpt-5.6-luna": { input: 0.2, cacheRead: 0.02, cacheWrite: 0.25, output: 1.2 },
112499
112527
  "gpt-5.6-terra": { input: 2, cacheRead: 0.2, cacheWrite: 2.5, output: 12 }
@@ -112820,7 +112848,7 @@ import { mkdirSync as mkdirSync7, writeFileSync as writeFileSync6 } from "node:f
112820
112848
  import { join as join7 } from "node:path";
112821
112849
  import { performance as performance7 } from "node:perf_hooks";
112822
112850
 
112823
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
112851
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
112824
112852
  var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url: url4, ...options }) => {
112825
112853
  let lastEventId;
112826
112854
  const sleep5 = sseSleepFn ?? ((ms) => new Promise((resolve3) => setTimeout(resolve3, ms)));
@@ -112939,7 +112967,7 @@ var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer,
112939
112967
  return { stream };
112940
112968
  };
112941
112969
 
112942
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js
112970
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js
112943
112971
  var separatorArrayExplode = (style) => {
112944
112972
  switch (style) {
112945
112973
  case "label":
@@ -113042,7 +113070,7 @@ var serializeObjectParam = ({ allowReserved, explode, name, style, value: value2
113042
113070
  return style === "label" || style === "matrix" ? separator2 + joinedValues : joinedValues;
113043
113071
  };
113044
113072
 
113045
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js
113073
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js
113046
113074
  var PATH_PARAM_RE = /\{[^{}]+\}/g;
113047
113075
  var defaultPathSerializer = ({ path: path4, url: _url3 }) => {
113048
113076
  let url4 = _url3;
@@ -113125,7 +113153,7 @@ function getValidRequestBody(options) {
113125
113153
  return void 0;
113126
113154
  }
113127
113155
 
113128
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js
113156
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js
113129
113157
  var getAuthToken = async (auth2, callback) => {
113130
113158
  const token = typeof callback === "function" ? await callback(auth2) : callback;
113131
113159
  if (!token) {
@@ -113140,12 +113168,12 @@ var getAuthToken = async (auth2, callback) => {
113140
113168
  return token;
113141
113169
  };
113142
113170
 
113143
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js
113171
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js
113144
113172
  var jsonBodySerializer = {
113145
113173
  bodySerializer: (body) => JSON.stringify(body, (_key, value2) => typeof value2 === "bigint" ? value2.toString() : value2)
113146
113174
  };
113147
113175
 
113148
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js
113176
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js
113149
113177
  var createQuerySerializer = ({ parameters = {}, ...args2 } = {}) => {
113150
113178
  const querySerializer = (queryParams) => {
113151
113179
  const search2 = [];
@@ -113355,7 +113383,7 @@ var createConfig = (override = {}) => ({
113355
113383
  ...override
113356
113384
  });
113357
113385
 
113358
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js
113386
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js
113359
113387
  var createClient = (config3 = {}) => {
113360
113388
  let _config = mergeConfigs(createConfig(), config3);
113361
113389
  const getConfig = () => ({ ..._config });
@@ -113563,7 +113591,7 @@ var createClient = (config3 = {}) => {
113563
113591
  };
113564
113592
  };
113565
113593
 
113566
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js
113594
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js
113567
113595
  var extraPrefixesMap = {
113568
113596
  $body_: "body",
113569
113597
  $headers_: "headers",
@@ -113659,10 +113687,10 @@ var buildClientParams = (args2, fields) => {
113659
113687
  return params;
113660
113688
  };
113661
113689
 
113662
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js
113690
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js
113663
113691
  var client = createClient(createConfig({ baseUrl: "http://localhost:4096" }));
113664
113692
 
113665
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js
113693
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js
113666
113694
  var HeyApiClient = class {
113667
113695
  client;
113668
113696
  constructor(args2) {
@@ -114277,7 +114305,7 @@ var Global = class extends HeyApiClient {
114277
114305
  /**
114278
114306
  * Upgrade opencode
114279
114307
  *
114280
- * Upgrade opencode to the specified version or latest if not specified.
114308
+ * Upgrade opencode to the specified version.
114281
114309
  */
114282
114310
  upgrade(parameters, options) {
114283
114311
  const params = buildClientParams([parameters], [{ args: [{ in: "body", key: "target" }] }]);
@@ -118117,7 +118145,7 @@ var OpencodeClient = class _OpencodeClient extends HeyApiClient {
118117
118145
  }
118118
118146
  };
118119
118147
 
118120
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
118148
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
118121
118149
  function wrapClientError(error62, response, request2, opts) {
118122
118150
  if (!opts?.throwOnError)
118123
118151
  return error62;
@@ -118144,7 +118172,7 @@ function describe(request2, response) {
118144
118172
  return `${method} ${url4}${status ? " \u2192 " + status : ""}${statusText ? " " + statusText : ""}`;
118145
118173
  }
118146
118174
 
118147
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/client.js
118175
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/client.js
118148
118176
  function pick(value2, fallback, encode5) {
118149
118177
  if (!value2)
118150
118178
  return;
@@ -118220,7 +118248,7 @@ function createOpencodeClient(config3) {
118220
118248
  return new OpencodeClient({ client: client2 });
118221
118249
  }
118222
118250
 
118223
- // node_modules/.pnpm/@opencode-ai+sdk@1.18.5/node_modules/@opencode-ai/sdk/dist/v2/server.js
118251
+ // node_modules/.pnpm/@opencode-ai+sdk@1.18.29/node_modules/@opencode-ai/sdk/dist/v2/server.js
118224
118252
  var import_cross_spawn = __toESM(require_cross_spawn(), 1);
118225
118253
 
118226
118254
  // agents/opencode.ts
@@ -198265,11 +198293,11 @@ function billingConsoleUrl(owner) {
198265
198293
  function commercialPaywallBody(params) {
198266
198294
  if (params.reason === "commercial") {
198267
198295
  return [
198268
- `**Pullfrog needs a confirmed Pro plan for ${params.ownerLogin}, so this run paused.**`,
198296
+ `**Pullfrog needs Pro on ${params.ownerLogin}, so this run didn't start.**`,
198269
198297
  "",
198270
- "Open Plan and payment to confirm Pro or review the organization's billing status.",
198298
+ "Pro is $30/month per organization and covers private repositories. Public repos and personal accounts keep running free.",
198271
198299
  "",
198272
- `[Review plan and payment \u2192](${params.url})`
198300
+ `[Upgrade to Pro \u2192](${params.url})`
198273
198301
  ].join("\n");
198274
198302
  }
198275
198303
  params.reason;
package/dist/internal.js CHANGED
@@ -105,6 +105,13 @@ var providers = {
105
105
  // brand-tier names the slug convention asks for — the pre-5.6 `gpt` /
106
106
  // `gpt-pro` / `gpt-mini` slugs are holdovers from the retired GPT / GPT Pro
107
107
  // / GPT Mini tiering and are carried below as deprecated aliases.
108
+ "gpt-astra": {
109
+ displayName: "GPT Astra",
110
+ resolve: "openai/gpt-6-astra",
111
+ effort: ["low", "medium", "high", "xhigh", "max"],
112
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
113
+ subagentModel: "gpt-sol"
114
+ },
108
115
  "gpt-sol": {
109
116
  displayName: "GPT Sol",
110
117
  resolve: "openai/gpt-5.6-sol",
@@ -466,6 +473,13 @@ var providers = {
466
473
  openRouterResolve: "openrouter/openai/gpt-5.6-sol",
467
474
  subagentModel: "gpt-terra"
468
475
  },
476
+ "gpt-astra": {
477
+ displayName: "GPT Astra",
478
+ resolve: "opencode/gpt-6-astra",
479
+ effort: ["low", "medium", "high", "xhigh", "max"],
480
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
481
+ subagentModel: "gpt-sol"
482
+ },
469
483
  // see openai/gpt-sol-pro — Zen has no -pro id, so direct resolves to plain Sol.
470
484
  "gpt-sol-pro": {
471
485
  displayName: "GPT Sol Pro",
@@ -883,6 +897,13 @@ var providers = {
883
897
  openRouterResolve: "openrouter/openai/gpt-5.6-sol",
884
898
  subagentModel: "gpt-terra"
885
899
  },
900
+ "gpt-astra": {
901
+ displayName: "GPT Astra",
902
+ resolve: "openrouter/openai/gpt-6-astra",
903
+ effort: ["low", "medium", "high", "xhigh", "max"],
904
+ openRouterResolve: "openrouter/openai/gpt-6-astra",
905
+ subagentModel: "gpt-sol"
906
+ },
886
907
  // see openai/gpt-sol-pro. openrouter serves sol-pro directly on both routes.
887
908
  "gpt-sol-pro": {
888
909
  displayName: "GPT Sol Pro",
@@ -1053,6 +1074,12 @@ var providers = {
1053
1074
  effort: ["none", "low", "medium", "high", "xhigh", "max"],
1054
1075
  subagentModel: "gpt-terra"
1055
1076
  },
1077
+ "gpt-astra": {
1078
+ displayName: "GPT Astra",
1079
+ resolve: "vercel/openai/gpt-6-astra",
1080
+ effort: ["low", "medium", "high", "xhigh", "max"],
1081
+ subagentModel: "gpt-sol"
1082
+ },
1056
1083
  "gpt-terra": {
1057
1084
  displayName: "GPT Terra",
1058
1085
  resolve: "vercel/openai/gpt-5.6-terra",
@@ -1656,11 +1683,11 @@ var modes = computeModes("opencode");
1656
1683
  function commercialPaywallBody(params) {
1657
1684
  if (params.reason === "commercial") {
1658
1685
  return [
1659
- `**Pullfrog needs a confirmed Pro plan for ${params.ownerLogin}, so this run paused.**`,
1686
+ `**Pullfrog needs Pro on ${params.ownerLogin}, so this run didn't start.**`,
1660
1687
  "",
1661
- "Open Plan and payment to confirm Pro or review the organization's billing status.",
1688
+ "Pro is $30/month per organization and covers private repositories. Public repos and personal accounts keep running free.",
1662
1689
  "",
1663
- `[Review plan and payment \u2192](${params.url})`
1690
+ `[Upgrade to Pro \u2192](${params.url})`
1664
1691
  ].join("\n");
1665
1692
  }
1666
1693
  params.reason;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pullfrog",
3
- "version": "0.1.69",
3
+ "version": "0.1.70",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "pullfrog": "dist/cli.mjs",
@@ -31,12 +31,12 @@
31
31
  "@ark/util": "0.56.0",
32
32
  "@clack/prompts": "^1.2.0",
33
33
  "@modelcontextprotocol/sdk": "^1.26.0",
34
- "@opencode-ai/sdk": "1.18.5",
35
- "@openai/codex": "0.147.0",
36
- "@openai/codex-sdk": "0.147.0",
37
34
  "@octokit/plugin-throttling": "^11.0.3",
38
35
  "@octokit/rest": "^22.0.0",
39
36
  "@octokit/webhooks-types": "^7.6.1",
37
+ "@openai/codex": "0.153.4",
38
+ "@openai/codex-sdk": "0.153.4",
39
+ "@opencode-ai/sdk": "1.18.29",
40
40
  "@standard-schema/spec": "1.1.0",
41
41
  "@toon-format/toon": "^1.0.0",
42
42
  "@types/node": "^24.7.2",
@@ -56,7 +56,7 @@
56
56
  "husky": "^9.0.0",
57
57
  "lru-cache": "^11.0.0",
58
58
  "object-hash": "^3.0.0",
59
- "opencode-ai": "1.18.5",
59
+ "opencode-ai": "1.18.29",
60
60
  "package-manager-detector": "^1.6.0",
61
61
  "picocolors": "^1.1.1",
62
62
  "semver": "^7.7.3",