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 +52 -24
- package/dist/index.js +50 -22
- package/dist/internal.js +30 -3
- package/package.json +5 -5
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
200713
|
+
`**Pullfrog needs Pro on ${params.ownerLogin}, so this run didn't start.**`,
|
|
200686
200714
|
"",
|
|
200687
|
-
"
|
|
200715
|
+
"Pro is $30/month per organization and covers private repositories. Public repos and personal accounts keep running free.",
|
|
200688
200716
|
"",
|
|
200689
|
-
`[
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
198296
|
+
`**Pullfrog needs Pro on ${params.ownerLogin}, so this run didn't start.**`,
|
|
198269
198297
|
"",
|
|
198270
|
-
"
|
|
198298
|
+
"Pro is $30/month per organization and covers private repositories. Public repos and personal accounts keep running free.",
|
|
198271
198299
|
"",
|
|
198272
|
-
`[
|
|
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
|
|
1686
|
+
`**Pullfrog needs Pro on ${params.ownerLogin}, so this run didn't start.**`,
|
|
1660
1687
|
"",
|
|
1661
|
-
"
|
|
1688
|
+
"Pro is $30/month per organization and covers private repositories. Public repos and personal accounts keep running free.",
|
|
1662
1689
|
"",
|
|
1663
|
-
`[
|
|
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.
|
|
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.
|
|
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",
|