pullfrog 0.1.98 → 0.1.99
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/agents/claudePretoolGate.d.ts +5 -0
- package/dist/agents/nativeFsDenies.d.ts +8 -0
- package/dist/cli.mjs +2521 -1965
- package/dist/index.js +1571 -1006
- package/dist/internal.js +49 -20
- package/dist/mcp/shell.d.ts +1 -0
- package/dist/utils/codexOAuth.d.ts +1 -1
- package/dist/utils/github.d.ts +1 -1
- package/dist/utils/subscriptionCredentials.d.ts +2 -0
- package/dist/utils/vercelBypass.d.ts +6 -0
- package/package.json +2 -2
package/dist/internal.js
CHANGED
|
@@ -8,7 +8,7 @@ var __export = (target, all) => {
|
|
|
8
8
|
// package.json
|
|
9
9
|
var package_default = {
|
|
10
10
|
name: "pullfrog",
|
|
11
|
-
version: "0.1.
|
|
11
|
+
version: "0.1.99",
|
|
12
12
|
cliContractVersion: "1",
|
|
13
13
|
type: "module",
|
|
14
14
|
bin: {
|
|
@@ -74,7 +74,7 @@ var package_default = {
|
|
|
74
74
|
undici: "^7.22.0",
|
|
75
75
|
vitest: "^4.0.17",
|
|
76
76
|
yaml: "^2.8.2",
|
|
77
|
-
yes: "0.2.
|
|
77
|
+
yes: "0.2.4",
|
|
78
78
|
zod: "4.3.6"
|
|
79
79
|
},
|
|
80
80
|
repository: {
|
|
@@ -14358,6 +14358,7 @@ var providers = {
|
|
|
14358
14358
|
displayName: "Claude Haiku",
|
|
14359
14359
|
resolve: "anthropic/claude-haiku-5-5",
|
|
14360
14360
|
effort: ["low", "medium", "high", "xhigh", "max"],
|
|
14361
|
+
openRouterEffort: ["none", "low", "medium", "high", "xhigh", "max"],
|
|
14361
14362
|
openRouterResolve: "openrouter/anthropic/claude-haiku-5.5"
|
|
14362
14363
|
}
|
|
14363
14364
|
}
|
|
@@ -14513,8 +14514,9 @@ var providers = {
|
|
|
14513
14514
|
"grok-4.3": {
|
|
14514
14515
|
displayName: "Grok 4.3",
|
|
14515
14516
|
resolve: "xai/grok-4.3",
|
|
14516
|
-
effort: ["none", "low", "medium", "high"],
|
|
14517
|
-
openRouterResolve: "openrouter/x-ai/grok-4.3"
|
|
14517
|
+
effort: ["none", "low", "medium", "high", "xhigh"],
|
|
14518
|
+
openRouterResolve: "openrouter/x-ai/grok-4.3",
|
|
14519
|
+
openRouterEffort: ["none", "low", "medium", "high"]
|
|
14518
14520
|
},
|
|
14519
14521
|
// legacy aliases — xAI retired the entire fast/code-fast line on
|
|
14520
14522
|
// 2026-05-15 (https://docs.x.ai/developers/migration/may-15-deprecation)
|
|
@@ -14561,6 +14563,7 @@ var providers = {
|
|
|
14561
14563
|
// models.dev gave the direct id V4.1-Flash's ladder on 2026-09-21, which
|
|
14562
14564
|
// is what DeepSeek now serves under it — and the same as the Router pin's.
|
|
14563
14565
|
effort: ["low", "high", "max"],
|
|
14566
|
+
openRouterEffort: ["none", "low", "high", "max"],
|
|
14564
14567
|
openRouterResolve: "openrouter/deepseek/deepseek-v4-pro-0813",
|
|
14565
14568
|
preferred: true
|
|
14566
14569
|
},
|
|
@@ -14580,7 +14583,7 @@ var providers = {
|
|
|
14580
14583
|
displayName: "DeepSeek Flash",
|
|
14581
14584
|
resolve: "deepseek/deepseek-flash",
|
|
14582
14585
|
effort: ["low", "high", "max"],
|
|
14583
|
-
openRouterEffort: ["low", "high", "max"],
|
|
14586
|
+
openRouterEffort: ["none", "low", "high", "max"],
|
|
14584
14587
|
openRouterResolve: "openrouter/deepseek/deepseek-v4.1-flash"
|
|
14585
14588
|
},
|
|
14586
14589
|
// legacy aliases — deepseek retires these on 2026-07-24; transparently
|
|
@@ -14610,6 +14613,7 @@ var providers = {
|
|
|
14610
14613
|
displayName: "Kimi K3",
|
|
14611
14614
|
resolve: "moonshotai/kimi-k3",
|
|
14612
14615
|
effort: ["low", "high", "max"],
|
|
14616
|
+
openRouterEffort: ["none", "low", "high", "max"],
|
|
14613
14617
|
openRouterResolve: "openrouter/moonshotai/kimi-k3",
|
|
14614
14618
|
preferred: true,
|
|
14615
14619
|
subagentModel: "kimi-k2"
|
|
@@ -14778,6 +14782,7 @@ var providers = {
|
|
|
14778
14782
|
displayName: "Claude Haiku",
|
|
14779
14783
|
resolve: "opencode/claude-haiku-5-5",
|
|
14780
14784
|
effort: ["low", "medium", "high", "xhigh", "max"],
|
|
14785
|
+
openRouterEffort: ["none", "low", "medium", "high", "xhigh", "max"],
|
|
14781
14786
|
openRouterResolve: "openrouter/anthropic/claude-haiku-5.5"
|
|
14782
14787
|
},
|
|
14783
14788
|
"gpt-sol": {
|
|
@@ -14875,7 +14880,7 @@ var providers = {
|
|
|
14875
14880
|
resolve: "opencode/kimi-k3",
|
|
14876
14881
|
// Zen publishes a single rung for K3 where OpenRouter publishes three.
|
|
14877
14882
|
effort: ["max"],
|
|
14878
|
-
openRouterEffort: ["low", "high", "max"],
|
|
14883
|
+
openRouterEffort: ["none", "low", "high", "max"],
|
|
14879
14884
|
openRouterResolve: "openrouter/moonshotai/kimi-k3",
|
|
14880
14885
|
subagentModel: "kimi-k2"
|
|
14881
14886
|
},
|
|
@@ -14971,7 +14976,11 @@ var providers = {
|
|
|
14971
14976
|
effort: ["minimal", "low", "medium", "high", "xhigh"],
|
|
14972
14977
|
// free to run, still gated on the provider's own OPENCODE_API_KEY —
|
|
14973
14978
|
// see the big-pickle note above (#1077).
|
|
14974
|
-
isFree: true
|
|
14979
|
+
isFree: true,
|
|
14980
|
+
// Zen answers "Model muse-spark-1.3-contributor-free has been deprecated."
|
|
14981
|
+
// since 2026-10-17 and has no free Muse Spark left; stored picks land on
|
|
14982
|
+
// Big Pickle, as `exo` does, rather than on the paid `muse-spark`.
|
|
14983
|
+
fallback: "opencode/big-pickle"
|
|
14975
14984
|
},
|
|
14976
14985
|
// Zen's FREE stealth preview (listed 2026-09-16), the big-pickle shape: an
|
|
14977
14986
|
// anonymous vendor's model at $0 for a limited time. OpenRouter's listing:
|
|
@@ -15000,7 +15009,10 @@ var providers = {
|
|
|
15000
15009
|
effort: ["low", "medium", "high", "xhigh", "max"],
|
|
15001
15010
|
// free to run, still gated on the provider's own OPENCODE_API_KEY —
|
|
15002
15011
|
// see the big-pickle note above (#1077).
|
|
15003
|
-
isFree: true
|
|
15012
|
+
isFree: true,
|
|
15013
|
+
// Zen dropped the free id from `/v1/models` and models.dev deprecated it
|
|
15014
|
+
// by 2026-10-19; stored picks land on Big Pickle, as `step-5-preview` does.
|
|
15015
|
+
fallback: "opencode/big-pickle"
|
|
15004
15016
|
},
|
|
15005
15017
|
// Zen's FREE Meituan preview (listed 2026-09-25). Zen's docs: zero
|
|
15006
15018
|
// retention, no training. Go lists the same free id, but one key reaches
|
|
@@ -15038,11 +15050,14 @@ var providers = {
|
|
|
15038
15050
|
effort: ["high"],
|
|
15039
15051
|
// free to run, still gated on the provider's own OPENCODE_API_KEY —
|
|
15040
15052
|
// see the big-pickle note above (#1077).
|
|
15041
|
-
isFree: true
|
|
15053
|
+
isFree: true,
|
|
15054
|
+
// Zen answers "Model exo-free has been deprecated." on both lanes since
|
|
15055
|
+
// 2026-10-09; stored picks land on Big Pickle, as `fledge-alpha` does.
|
|
15056
|
+
fallback: "opencode/big-pickle"
|
|
15042
15057
|
},
|
|
15043
15058
|
// Zen's FREE StepFun preview (listed 2026-10-08), the seventh promo. Zen's
|
|
15044
15059
|
// docs: zero retention, no training. Go lists the same free id; one key
|
|
15045
|
-
// reaches both.
|
|
15060
|
+
// reaches both.
|
|
15046
15061
|
"step-5-preview": {
|
|
15047
15062
|
displayName: "Step 5 Preview",
|
|
15048
15063
|
description: "StepFun preview, free for a limited time",
|
|
@@ -15051,7 +15066,9 @@ var providers = {
|
|
|
15051
15066
|
// free to run, still gated on the provider's own OPENCODE_API_KEY —
|
|
15052
15067
|
// see the big-pickle note above (#1077).
|
|
15053
15068
|
isFree: true,
|
|
15054
|
-
|
|
15069
|
+
// Zen dropped the free id from `/v1/models` and models.dev deprecated it
|
|
15070
|
+
// by 2026-10-15; stored picks land on Big Pickle, as `exo` does.
|
|
15071
|
+
fallback: "opencode/big-pickle"
|
|
15055
15072
|
},
|
|
15056
15073
|
// Zen's live free MiMo, and the second free row in a menu that big-pickle
|
|
15057
15074
|
// was alone in since `mimo-v2-pro-free` lost its model.
|
|
@@ -15140,7 +15157,7 @@ var providers = {
|
|
|
15140
15157
|
// Go publishes a single rung for K3 where the OpenRouter route
|
|
15141
15158
|
// publishes three, so every position lands on `max` here.
|
|
15142
15159
|
effort: ["max"],
|
|
15143
|
-
openRouterEffort: ["low", "high", "max"],
|
|
15160
|
+
openRouterEffort: ["none", "low", "high", "max"],
|
|
15144
15161
|
openRouterResolve: "openrouter/moonshotai/kimi-k3",
|
|
15145
15162
|
subagentModel: "kimi-k2"
|
|
15146
15163
|
},
|
|
@@ -15197,7 +15214,10 @@ var providers = {
|
|
|
15197
15214
|
"minimax-m2.5": {
|
|
15198
15215
|
displayName: "MiniMax M2",
|
|
15199
15216
|
resolve: "opencode-go/minimax-m2.7",
|
|
15200
|
-
openRouterResolve: "openrouter/minimax/minimax-m2.7"
|
|
15217
|
+
openRouterResolve: "openrouter/minimax/minimax-m2.7",
|
|
15218
|
+
// models.dev deprecated Go's m2.7 by 2026-10-15 and Go lists no other
|
|
15219
|
+
// M2; M3 is the same vendor at the same $0.30 input price.
|
|
15220
|
+
fallback: "opencode-go/minimax-m3"
|
|
15201
15221
|
},
|
|
15202
15222
|
// Xiaomi — Go-only; Zen serves the free `mimo-v2-pro-free` promo instead.
|
|
15203
15223
|
"mimo-pro": {
|
|
@@ -15339,7 +15359,7 @@ var providers = {
|
|
|
15339
15359
|
resolve: "openrouter/~anthropic/claude-haiku-latest",
|
|
15340
15360
|
// the rolling alias moved to Haiku 5.5 on 2026-10-07, which publishes
|
|
15341
15361
|
// the ladder Haiku 4.5 did not.
|
|
15342
|
-
effort: ["low", "medium", "high", "xhigh", "max"],
|
|
15362
|
+
effort: ["none", "low", "medium", "high", "xhigh", "max"],
|
|
15343
15363
|
openRouterResolve: "openrouter/~anthropic/claude-haiku-latest"
|
|
15344
15364
|
},
|
|
15345
15365
|
// pinned to the explicit Sol/Terra/Luna tiers (not the ~openai/gpt-latest
|
|
@@ -15453,7 +15473,7 @@ var providers = {
|
|
|
15453
15473
|
"deepseek-pro": {
|
|
15454
15474
|
displayName: "DeepSeek Pro",
|
|
15455
15475
|
resolve: "openrouter/deepseek/deepseek-v4-pro-0813",
|
|
15456
|
-
effort: ["low", "high", "max"],
|
|
15476
|
+
effort: ["none", "low", "high", "max"],
|
|
15457
15477
|
openRouterResolve: "openrouter/deepseek/deepseek-v4-pro-0813"
|
|
15458
15478
|
},
|
|
15459
15479
|
// the V4.1 id, not the bare one — see `deepseek/deepseek-flash` for why
|
|
@@ -15462,7 +15482,7 @@ var providers = {
|
|
|
15462
15482
|
"deepseek-flash": {
|
|
15463
15483
|
displayName: "DeepSeek Flash",
|
|
15464
15484
|
resolve: "openrouter/deepseek/deepseek-v4.1-flash",
|
|
15465
|
-
effort: ["low", "high", "max"],
|
|
15485
|
+
effort: ["none", "low", "high", "max"],
|
|
15466
15486
|
openRouterResolve: "openrouter/deepseek/deepseek-v4.1-flash"
|
|
15467
15487
|
},
|
|
15468
15488
|
// legacy alias — deepseek retires this on 2026-07-24; transparently
|
|
@@ -15481,7 +15501,7 @@ var providers = {
|
|
|
15481
15501
|
"kimi-k3": {
|
|
15482
15502
|
displayName: "Kimi K3",
|
|
15483
15503
|
resolve: "openrouter/moonshotai/kimi-k3",
|
|
15484
|
-
effort: ["low", "high", "max"],
|
|
15504
|
+
effort: ["none", "low", "high", "max"],
|
|
15485
15505
|
openRouterResolve: "openrouter/moonshotai/kimi-k3"
|
|
15486
15506
|
},
|
|
15487
15507
|
// slug pins the m2 line for DB stability; resolve tracks the current m2.7.
|
|
@@ -15605,17 +15625,17 @@ var providers = {
|
|
|
15605
15625
|
"kimi-k3": {
|
|
15606
15626
|
displayName: "Kimi K3",
|
|
15607
15627
|
resolve: "vercel/moonshotai/kimi-k3",
|
|
15608
|
-
effort: ["
|
|
15628
|
+
effort: ["low", "high", "max"]
|
|
15609
15629
|
},
|
|
15610
15630
|
"muse-spark": {
|
|
15611
15631
|
displayName: "Muse Spark",
|
|
15612
15632
|
resolve: "vercel/meta/muse-spark-1.3",
|
|
15613
|
-
effort: ["minimal", "low", "medium", "high", "xhigh"]
|
|
15633
|
+
effort: ["minimal", "low", "medium", "high", "xhigh", "max"]
|
|
15614
15634
|
},
|
|
15615
15635
|
"mistral-large": {
|
|
15616
15636
|
displayName: "Mistral Large",
|
|
15617
15637
|
resolve: "vercel/mistral/mistral-large-4",
|
|
15618
|
-
effort: ["none", "
|
|
15638
|
+
effort: ["none", "high"]
|
|
15619
15639
|
}
|
|
15620
15640
|
}
|
|
15621
15641
|
})
|
|
@@ -17188,6 +17208,14 @@ var selectedCredentialSchema = external_exports.object({
|
|
|
17188
17208
|
function subscriptionLabel(input) {
|
|
17189
17209
|
return input.email ?? `\u2022\u2022\u2022\u2022 ${input.suffix}`;
|
|
17190
17210
|
}
|
|
17211
|
+
function subscriptionStatusText(subscription) {
|
|
17212
|
+
if (subscription.status === "rejected") return "Rejected";
|
|
17213
|
+
if (subscription.status !== "exhausted") return null;
|
|
17214
|
+
if (!subscription.resetAt) return "Limit reached";
|
|
17215
|
+
const resetAt = new Date(subscription.resetAt);
|
|
17216
|
+
if (resetAt.getTime() <= Date.now()) return null;
|
|
17217
|
+
return `Limit reached \xB7 resets ${resetAt.toLocaleString(void 0, { month: "short", day: "numeric", hour: "numeric", minute: "2-digit" })}`;
|
|
17218
|
+
}
|
|
17191
17219
|
|
|
17192
17220
|
// utils/xaiOAuth.ts
|
|
17193
17221
|
var XAI_OAUTH_CLIENT_ID = "b1a00492-073a-47ea-816f-4c329264a828";
|
|
@@ -17529,6 +17557,7 @@ export {
|
|
|
17529
17557
|
subscriptionListSchema,
|
|
17530
17558
|
subscriptionNameSchema,
|
|
17531
17559
|
subscriptionSchema,
|
|
17560
|
+
subscriptionStatusText,
|
|
17532
17561
|
truncateAtLineBoundary,
|
|
17533
17562
|
updateProgressComment,
|
|
17534
17563
|
verifyCredential
|
package/dist/mcp/shell.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ export declare function runSandboxed(params: {
|
|
|
32
32
|
env: Record<string, string | undefined>;
|
|
33
33
|
cwd: string;
|
|
34
34
|
timeout: number;
|
|
35
|
+
seal: boolean;
|
|
35
36
|
/** live-stream chunks as they arrive, on top of the buffered `output`.
|
|
36
37
|
* lifecycle hooks use this to keep a long `pnpm test` visible in the
|
|
37
38
|
* workflow log instead of silent until it exits. */
|
|
@@ -34,7 +34,7 @@ export interface CodexAuthBody {
|
|
|
34
34
|
refresh_rejected_at?: string;
|
|
35
35
|
}
|
|
36
36
|
/** OAuth client id Codex CLI and OpenCode both use against `auth.openai.com`.
|
|
37
|
-
* Same chain — a refresh token minted via `codex login
|
|
37
|
+
* Same chain — a refresh token minted via `codex login` can be
|
|
38
38
|
* refreshed against this client_id. */
|
|
39
39
|
export declare const CODEX_OAUTH_CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
|
|
40
40
|
export declare const CODEX_OAUTH_TOKEN_URL = "https://auth.openai.com/oauth/token";
|
package/dist/utils/github.d.ts
CHANGED
|
@@ -75,7 +75,7 @@ export declare function fetchIdTokenFromStash(creds: OidcCredentials): Promise<s
|
|
|
75
75
|
* own retry still re-mints. Mid-run refreshes take the stashed-credentials path
|
|
76
76
|
* (`opts.oidc`) and deliberately bypass this.
|
|
77
77
|
*/
|
|
78
|
-
export declare const mintIdToken: (() => Promise<string>) & yes.CacheMethods<undefined, undefined
|
|
78
|
+
export declare const mintIdToken: (() => Promise<string>) & yes.AttemptMethod<[], string> & yes.CacheMethods<undefined, undefined, () => Promise<string>>;
|
|
79
79
|
/**
|
|
80
80
|
* ensure a GitHub token is available in the environment.
|
|
81
81
|
*
|
|
@@ -88,3 +88,5 @@ export declare function subscriptionLabel(input: {
|
|
|
88
88
|
email: string | null;
|
|
89
89
|
suffix: string;
|
|
90
90
|
}): string;
|
|
91
|
+
/** the provider's last verdict on a subscription, or null when it last worked. */
|
|
92
|
+
export declare function subscriptionStatusText(subscription: Subscription): string | null;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* the Vercel protection-bypass secret for a request to `url`, if it should carry one. only
|
|
3
|
+
* Pullfrog preview deployments sit behind deployment protection, and the env var is Vercel's
|
|
4
|
+
* own name, so a workflow may hold a different project's secret: it never goes anywhere else.
|
|
5
|
+
*/
|
|
6
|
+
export declare function vercelBypassSecretFor(url: URL): string | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pullfrog",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.99",
|
|
4
4
|
"cliContractVersion": "1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"undici": "^7.22.0",
|
|
67
67
|
"vitest": "^4.0.17",
|
|
68
68
|
"yaml": "^2.8.2",
|
|
69
|
-
"yes": "0.2.
|
|
69
|
+
"yes": "0.2.4",
|
|
70
70
|
"zod": "4.3.6"
|
|
71
71
|
},
|
|
72
72
|
"repository": {
|