pullfrog 0.1.26 → 0.1.28
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 +23 -19
- package/dist/index.js +22 -18
- package/dist/internal.js +14 -14
- package/dist/utils/patchWorkflowRunFields.d.ts +15 -9
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -101069,25 +101069,25 @@ var providers = {
|
|
|
101069
101069
|
models: {
|
|
101070
101070
|
"claude-opus": {
|
|
101071
101071
|
displayName: "Claude Opus",
|
|
101072
|
-
resolve: "openrouter
|
|
101073
|
-
openRouterResolve: "openrouter
|
|
101072
|
+
resolve: "openrouter/~anthropic/claude-opus-latest",
|
|
101073
|
+
openRouterResolve: "openrouter/~anthropic/claude-opus-latest",
|
|
101074
101074
|
preferred: true,
|
|
101075
101075
|
subagentModel: "claude-sonnet"
|
|
101076
101076
|
},
|
|
101077
101077
|
"claude-sonnet": {
|
|
101078
101078
|
displayName: "Claude Sonnet",
|
|
101079
|
-
resolve: "openrouter
|
|
101080
|
-
openRouterResolve: "openrouter
|
|
101079
|
+
resolve: "openrouter/~anthropic/claude-sonnet-latest",
|
|
101080
|
+
openRouterResolve: "openrouter/~anthropic/claude-sonnet-latest"
|
|
101081
101081
|
},
|
|
101082
101082
|
"claude-haiku": {
|
|
101083
101083
|
displayName: "Claude Haiku",
|
|
101084
|
-
resolve: "openrouter
|
|
101085
|
-
openRouterResolve: "openrouter
|
|
101084
|
+
resolve: "openrouter/~anthropic/claude-haiku-latest",
|
|
101085
|
+
openRouterResolve: "openrouter/~anthropic/claude-haiku-latest"
|
|
101086
101086
|
},
|
|
101087
101087
|
gpt: {
|
|
101088
101088
|
displayName: "GPT",
|
|
101089
|
-
resolve: "openrouter
|
|
101090
|
-
openRouterResolve: "openrouter
|
|
101089
|
+
resolve: "openrouter/~openai/gpt-latest",
|
|
101090
|
+
openRouterResolve: "openrouter/~openai/gpt-latest",
|
|
101091
101091
|
subagentModel: "gpt-5.4"
|
|
101092
101092
|
},
|
|
101093
101093
|
"gpt-pro": {
|
|
@@ -101105,8 +101105,8 @@ var providers = {
|
|
|
101105
101105
|
},
|
|
101106
101106
|
"gpt-mini": {
|
|
101107
101107
|
displayName: "GPT Mini",
|
|
101108
|
-
resolve: "openrouter
|
|
101109
|
-
openRouterResolve: "openrouter
|
|
101108
|
+
resolve: "openrouter/~openai/gpt-mini-latest",
|
|
101109
|
+
openRouterResolve: "openrouter/~openai/gpt-mini-latest"
|
|
101110
101110
|
},
|
|
101111
101111
|
// legacy aliases — see openai provider for context.
|
|
101112
101112
|
"gpt-codex": {
|
|
@@ -101128,14 +101128,14 @@ var providers = {
|
|
|
101128
101128
|
},
|
|
101129
101129
|
"gemini-pro": {
|
|
101130
101130
|
displayName: "Gemini Pro",
|
|
101131
|
-
resolve: "openrouter
|
|
101132
|
-
openRouterResolve: "openrouter
|
|
101131
|
+
resolve: "openrouter/~google/gemini-pro-latest",
|
|
101132
|
+
openRouterResolve: "openrouter/~google/gemini-pro-latest"
|
|
101133
101133
|
// Inherit — see google/gemini-pro for rationale.
|
|
101134
101134
|
},
|
|
101135
101135
|
"gemini-flash": {
|
|
101136
101136
|
displayName: "Gemini Flash",
|
|
101137
|
-
resolve: "openrouter
|
|
101138
|
-
openRouterResolve: "openrouter
|
|
101137
|
+
resolve: "openrouter/~google/gemini-flash-latest",
|
|
101138
|
+
openRouterResolve: "openrouter/~google/gemini-flash-latest"
|
|
101139
101139
|
},
|
|
101140
101140
|
grok: {
|
|
101141
101141
|
displayName: "Grok",
|
|
@@ -101867,7 +101867,7 @@ var import_semver = __toESM(require_semver2(), 1);
|
|
|
101867
101867
|
// package.json
|
|
101868
101868
|
var package_default = {
|
|
101869
101869
|
name: "pullfrog",
|
|
101870
|
-
version: "0.1.
|
|
101870
|
+
version: "0.1.28",
|
|
101871
101871
|
type: "module",
|
|
101872
101872
|
bin: {
|
|
101873
101873
|
pullfrog: "dist/cli.mjs",
|
|
@@ -108449,6 +108449,7 @@ var opencode = agent({
|
|
|
108449
108449
|
run: async (ctx) => {
|
|
108450
108450
|
const cliPath = await installCli();
|
|
108451
108451
|
const rawModel = ctx.payload.proxyModel ?? ctx.resolvedModel ?? autoSelectModel();
|
|
108452
|
+
if (rawModel) ctx.toolState.model = rawModel;
|
|
108452
108453
|
const bedrockModelId = process.env[BEDROCK_MODEL_ID_ENV]?.trim();
|
|
108453
108454
|
const isBedrockRoute = rawModel !== void 0 && bedrockModelId !== void 0 && bedrockModelId === rawModel;
|
|
108454
108455
|
const vertexModel = resolveVertexOpenCodeModel(rawModel);
|
|
@@ -117274,7 +117275,8 @@ var STRING_KEYS = [
|
|
|
117274
117275
|
"issueNodeId",
|
|
117275
117276
|
"reviewNodeId",
|
|
117276
117277
|
"planCommentNodeId",
|
|
117277
|
-
"summarySnapshot"
|
|
117278
|
+
"summarySnapshot",
|
|
117279
|
+
"model"
|
|
117278
117280
|
];
|
|
117279
117281
|
var NUMBER_KEYS = [
|
|
117280
117282
|
"inputTokens",
|
|
@@ -161865,11 +161867,12 @@ async function main() {
|
|
|
161865
161867
|
}
|
|
161866
161868
|
vertexCredentials = materializeVertexCredentials({ model: resolvedModel });
|
|
161867
161869
|
const agent2 = resolveAgent({ model: resolvedModel });
|
|
161868
|
-
|
|
161870
|
+
const effectiveModel = payload.proxyModel ?? resolvedModel ?? effectiveSlug;
|
|
161871
|
+
toolState.model = effectiveModel;
|
|
161869
161872
|
if (!fallback.fallback && !payload.proxyModel) {
|
|
161870
161873
|
validateAgentApiKey({
|
|
161871
161874
|
agent: agent2,
|
|
161872
|
-
model:
|
|
161875
|
+
model: effectiveModel,
|
|
161873
161876
|
authorized: authorized2,
|
|
161874
161877
|
owner: runContext.repo.owner,
|
|
161875
161878
|
name: runContext.repo.name
|
|
@@ -162149,6 +162152,7 @@ ${instructions.user}` : null,
|
|
|
162149
162152
|
}
|
|
162150
162153
|
if (toolContext) {
|
|
162151
162154
|
const patch = aggregateUsage(toolState.usageEntries);
|
|
162155
|
+
if (toolState.model) patch.model = toolState.model;
|
|
162152
162156
|
if (Object.keys(patch).length > 0) {
|
|
162153
162157
|
await patchWorkflowRunFields(toolContext, patch);
|
|
162154
162158
|
}
|
|
@@ -163042,7 +163046,7 @@ async function run2() {
|
|
|
163042
163046
|
}
|
|
163043
163047
|
|
|
163044
163048
|
// cli.ts
|
|
163045
|
-
var VERSION10 = "0.1.
|
|
163049
|
+
var VERSION10 = "0.1.28";
|
|
163046
163050
|
var bin = basename2(process.argv[1] || "");
|
|
163047
163051
|
var PROG = bin === "pf" || bin === "pullfrog" ? bin : "pullfrog";
|
|
163048
163052
|
var rawArgs = process.argv.slice(2);
|
package/dist/index.js
CHANGED
|
@@ -99269,25 +99269,25 @@ var providers = {
|
|
|
99269
99269
|
models: {
|
|
99270
99270
|
"claude-opus": {
|
|
99271
99271
|
displayName: "Claude Opus",
|
|
99272
|
-
resolve: "openrouter
|
|
99273
|
-
openRouterResolve: "openrouter
|
|
99272
|
+
resolve: "openrouter/~anthropic/claude-opus-latest",
|
|
99273
|
+
openRouterResolve: "openrouter/~anthropic/claude-opus-latest",
|
|
99274
99274
|
preferred: true,
|
|
99275
99275
|
subagentModel: "claude-sonnet"
|
|
99276
99276
|
},
|
|
99277
99277
|
"claude-sonnet": {
|
|
99278
99278
|
displayName: "Claude Sonnet",
|
|
99279
|
-
resolve: "openrouter
|
|
99280
|
-
openRouterResolve: "openrouter
|
|
99279
|
+
resolve: "openrouter/~anthropic/claude-sonnet-latest",
|
|
99280
|
+
openRouterResolve: "openrouter/~anthropic/claude-sonnet-latest"
|
|
99281
99281
|
},
|
|
99282
99282
|
"claude-haiku": {
|
|
99283
99283
|
displayName: "Claude Haiku",
|
|
99284
|
-
resolve: "openrouter
|
|
99285
|
-
openRouterResolve: "openrouter
|
|
99284
|
+
resolve: "openrouter/~anthropic/claude-haiku-latest",
|
|
99285
|
+
openRouterResolve: "openrouter/~anthropic/claude-haiku-latest"
|
|
99286
99286
|
},
|
|
99287
99287
|
gpt: {
|
|
99288
99288
|
displayName: "GPT",
|
|
99289
|
-
resolve: "openrouter
|
|
99290
|
-
openRouterResolve: "openrouter
|
|
99289
|
+
resolve: "openrouter/~openai/gpt-latest",
|
|
99290
|
+
openRouterResolve: "openrouter/~openai/gpt-latest",
|
|
99291
99291
|
subagentModel: "gpt-5.4"
|
|
99292
99292
|
},
|
|
99293
99293
|
"gpt-pro": {
|
|
@@ -99305,8 +99305,8 @@ var providers = {
|
|
|
99305
99305
|
},
|
|
99306
99306
|
"gpt-mini": {
|
|
99307
99307
|
displayName: "GPT Mini",
|
|
99308
|
-
resolve: "openrouter
|
|
99309
|
-
openRouterResolve: "openrouter
|
|
99308
|
+
resolve: "openrouter/~openai/gpt-mini-latest",
|
|
99309
|
+
openRouterResolve: "openrouter/~openai/gpt-mini-latest"
|
|
99310
99310
|
},
|
|
99311
99311
|
// legacy aliases — see openai provider for context.
|
|
99312
99312
|
"gpt-codex": {
|
|
@@ -99328,14 +99328,14 @@ var providers = {
|
|
|
99328
99328
|
},
|
|
99329
99329
|
"gemini-pro": {
|
|
99330
99330
|
displayName: "Gemini Pro",
|
|
99331
|
-
resolve: "openrouter
|
|
99332
|
-
openRouterResolve: "openrouter
|
|
99331
|
+
resolve: "openrouter/~google/gemini-pro-latest",
|
|
99332
|
+
openRouterResolve: "openrouter/~google/gemini-pro-latest"
|
|
99333
99333
|
// Inherit — see google/gemini-pro for rationale.
|
|
99334
99334
|
},
|
|
99335
99335
|
"gemini-flash": {
|
|
99336
99336
|
displayName: "Gemini Flash",
|
|
99337
|
-
resolve: "openrouter
|
|
99338
|
-
openRouterResolve: "openrouter
|
|
99337
|
+
resolve: "openrouter/~google/gemini-flash-latest",
|
|
99338
|
+
openRouterResolve: "openrouter/~google/gemini-flash-latest"
|
|
99339
99339
|
},
|
|
99340
99340
|
grok: {
|
|
99341
99341
|
displayName: "Grok",
|
|
@@ -100067,7 +100067,7 @@ var import_semver = __toESM(require_semver2(), 1);
|
|
|
100067
100067
|
// package.json
|
|
100068
100068
|
var package_default = {
|
|
100069
100069
|
name: "pullfrog",
|
|
100070
|
-
version: "0.1.
|
|
100070
|
+
version: "0.1.28",
|
|
100071
100071
|
type: "module",
|
|
100072
100072
|
bin: {
|
|
100073
100073
|
pullfrog: "dist/cli.mjs",
|
|
@@ -106691,6 +106691,7 @@ var opencode = agent({
|
|
|
106691
106691
|
run: async (ctx) => {
|
|
106692
106692
|
const cliPath = await installCli();
|
|
106693
106693
|
const rawModel = ctx.payload.proxyModel ?? ctx.resolvedModel ?? autoSelectModel();
|
|
106694
|
+
if (rawModel) ctx.toolState.model = rawModel;
|
|
106694
106695
|
const bedrockModelId = process.env[BEDROCK_MODEL_ID_ENV]?.trim();
|
|
106695
106696
|
const isBedrockRoute = rawModel !== void 0 && bedrockModelId !== void 0 && bedrockModelId === rawModel;
|
|
106696
106697
|
const vertexModel = resolveVertexOpenCodeModel(rawModel);
|
|
@@ -115516,7 +115517,8 @@ var STRING_KEYS = [
|
|
|
115516
115517
|
"issueNodeId",
|
|
115517
115518
|
"reviewNodeId",
|
|
115518
115519
|
"planCommentNodeId",
|
|
115519
|
-
"summarySnapshot"
|
|
115520
|
+
"summarySnapshot",
|
|
115521
|
+
"model"
|
|
115520
115522
|
];
|
|
115521
115523
|
var NUMBER_KEYS = [
|
|
115522
115524
|
"inputTokens",
|
|
@@ -160107,11 +160109,12 @@ async function main() {
|
|
|
160107
160109
|
}
|
|
160108
160110
|
vertexCredentials = materializeVertexCredentials({ model: resolvedModel });
|
|
160109
160111
|
const agent2 = resolveAgent({ model: resolvedModel });
|
|
160110
|
-
|
|
160112
|
+
const effectiveModel = payload.proxyModel ?? resolvedModel ?? effectiveSlug;
|
|
160113
|
+
toolState.model = effectiveModel;
|
|
160111
160114
|
if (!fallback.fallback && !payload.proxyModel) {
|
|
160112
160115
|
validateAgentApiKey({
|
|
160113
160116
|
agent: agent2,
|
|
160114
|
-
model:
|
|
160117
|
+
model: effectiveModel,
|
|
160115
160118
|
authorized: authorized2,
|
|
160116
160119
|
owner: runContext.repo.owner,
|
|
160117
160120
|
name: runContext.repo.name
|
|
@@ -160391,6 +160394,7 @@ ${instructions.user}` : null,
|
|
|
160391
160394
|
}
|
|
160392
160395
|
if (toolContext) {
|
|
160393
160396
|
const patch = aggregateUsage(toolState.usageEntries);
|
|
160397
|
+
if (toolState.model) patch.model = toolState.model;
|
|
160394
160398
|
if (Object.keys(patch).length > 0) {
|
|
160395
160399
|
await patchWorkflowRunFields(toolContext, patch);
|
|
160396
160400
|
}
|
package/dist/internal.js
CHANGED
|
@@ -335,25 +335,25 @@ var providers = {
|
|
|
335
335
|
models: {
|
|
336
336
|
"claude-opus": {
|
|
337
337
|
displayName: "Claude Opus",
|
|
338
|
-
resolve: "openrouter
|
|
339
|
-
openRouterResolve: "openrouter
|
|
338
|
+
resolve: "openrouter/~anthropic/claude-opus-latest",
|
|
339
|
+
openRouterResolve: "openrouter/~anthropic/claude-opus-latest",
|
|
340
340
|
preferred: true,
|
|
341
341
|
subagentModel: "claude-sonnet"
|
|
342
342
|
},
|
|
343
343
|
"claude-sonnet": {
|
|
344
344
|
displayName: "Claude Sonnet",
|
|
345
|
-
resolve: "openrouter
|
|
346
|
-
openRouterResolve: "openrouter
|
|
345
|
+
resolve: "openrouter/~anthropic/claude-sonnet-latest",
|
|
346
|
+
openRouterResolve: "openrouter/~anthropic/claude-sonnet-latest"
|
|
347
347
|
},
|
|
348
348
|
"claude-haiku": {
|
|
349
349
|
displayName: "Claude Haiku",
|
|
350
|
-
resolve: "openrouter
|
|
351
|
-
openRouterResolve: "openrouter
|
|
350
|
+
resolve: "openrouter/~anthropic/claude-haiku-latest",
|
|
351
|
+
openRouterResolve: "openrouter/~anthropic/claude-haiku-latest"
|
|
352
352
|
},
|
|
353
353
|
gpt: {
|
|
354
354
|
displayName: "GPT",
|
|
355
|
-
resolve: "openrouter
|
|
356
|
-
openRouterResolve: "openrouter
|
|
355
|
+
resolve: "openrouter/~openai/gpt-latest",
|
|
356
|
+
openRouterResolve: "openrouter/~openai/gpt-latest",
|
|
357
357
|
subagentModel: "gpt-5.4"
|
|
358
358
|
},
|
|
359
359
|
"gpt-pro": {
|
|
@@ -371,8 +371,8 @@ var providers = {
|
|
|
371
371
|
},
|
|
372
372
|
"gpt-mini": {
|
|
373
373
|
displayName: "GPT Mini",
|
|
374
|
-
resolve: "openrouter
|
|
375
|
-
openRouterResolve: "openrouter
|
|
374
|
+
resolve: "openrouter/~openai/gpt-mini-latest",
|
|
375
|
+
openRouterResolve: "openrouter/~openai/gpt-mini-latest"
|
|
376
376
|
},
|
|
377
377
|
// legacy aliases — see openai provider for context.
|
|
378
378
|
"gpt-codex": {
|
|
@@ -394,14 +394,14 @@ var providers = {
|
|
|
394
394
|
},
|
|
395
395
|
"gemini-pro": {
|
|
396
396
|
displayName: "Gemini Pro",
|
|
397
|
-
resolve: "openrouter
|
|
398
|
-
openRouterResolve: "openrouter
|
|
397
|
+
resolve: "openrouter/~google/gemini-pro-latest",
|
|
398
|
+
openRouterResolve: "openrouter/~google/gemini-pro-latest"
|
|
399
399
|
// Inherit — see google/gemini-pro for rationale.
|
|
400
400
|
},
|
|
401
401
|
"gemini-flash": {
|
|
402
402
|
displayName: "Gemini Flash",
|
|
403
|
-
resolve: "openrouter
|
|
404
|
-
openRouterResolve: "openrouter
|
|
403
|
+
resolve: "openrouter/~google/gemini-flash-latest",
|
|
404
|
+
openRouterResolve: "openrouter/~google/gemini-flash-latest"
|
|
405
405
|
},
|
|
406
406
|
grok: {
|
|
407
407
|
displayName: "Grok",
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import type { AgentUsage } from "../agents/shared.ts";
|
|
2
2
|
import type { ToolContext } from "../mcp/server.ts";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* String-valued PATCH fields (all serialized identically on the wire):
|
|
5
|
+
* - artifact node IDs (`*NodeId`, `summarySnapshot`) — PATCHed incrementally
|
|
6
|
+
* by MCP tools as GitHub entities are created during the run.
|
|
7
|
+
* - `model` — the resolved/effective model the run actually ran on (proxy spec
|
|
8
|
+
* for router/oss, post-fallback slug otherwise; NOT the configured
|
|
9
|
+
* `Repo.model` slug), PATCHed once at end-of-run so per-model cost analytics
|
|
10
|
+
* don't parse the audit-only `payload`.
|
|
6
11
|
* Keep in sync with `STRING_FIELDS` in `app/api/workflow-run/[runId]/route.ts`.
|
|
7
12
|
*/
|
|
8
|
-
|
|
13
|
+
declare const STRING_KEYS: readonly ["prNodeId", "issueNodeId", "reviewNodeId", "planCommentNodeId", "summarySnapshot", "model"];
|
|
9
14
|
/**
|
|
10
|
-
*
|
|
11
|
-
* end-of-run. Token counts are Int4 on the DB side (ample for any
|
|
12
|
-
* run); `costUsd` is a Decimal populated by provider-reported dollar
|
|
13
|
-
* Keep in sync with `INT_FIELDS` + `DECIMAL_FIELDS` in the server route.
|
|
15
|
+
* Number-valued usage fields — aggregated across all agent calls and PATCHed
|
|
16
|
+
* once at end-of-run. Token counts are Int4 on the DB side (ample for any
|
|
17
|
+
* realistic run); `costUsd` is a Decimal populated by provider-reported dollar
|
|
18
|
+
* amounts. Keep in sync with `INT_FIELDS` + `DECIMAL_FIELDS` in the server route.
|
|
14
19
|
*/
|
|
15
|
-
|
|
16
|
-
export type WorkflowRunPatch = Partial<Record<
|
|
20
|
+
declare const NUMBER_KEYS: readonly ["inputTokens", "outputTokens", "cacheReadTokens", "cacheWriteTokens", "costUsd"];
|
|
21
|
+
export type WorkflowRunPatch = Partial<Record<(typeof STRING_KEYS)[number], string>> & Partial<Record<(typeof NUMBER_KEYS)[number], number>>;
|
|
17
22
|
/** PATCH workflow-run fields (Pullfrog JWT, not GitHub). */
|
|
18
23
|
export declare function patchWorkflowRunFields(ctx: ToolContext, fields: WorkflowRunPatch): Promise<void>;
|
|
19
24
|
/**
|
|
@@ -27,3 +32,4 @@ export declare function patchWorkflowRunFields(ctx: ToolContext, fields: Workflo
|
|
|
27
32
|
* sees is always self-consistent across all numeric columns.
|
|
28
33
|
*/
|
|
29
34
|
export declare function aggregateUsage(entries: AgentUsage[]): WorkflowRunPatch;
|
|
35
|
+
export {};
|