pullfrog 0.1.21 → 0.1.23
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 +34 -10
- package/dist/index.js +33 -9
- package/dist/internal.js +16 -1
- package/dist/models.d.ts +1 -0
- package/dist/toolState.d.ts +1 -0
- package/dist/utils/buildPullfrogFooter.d.ts +6 -0
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -101018,6 +101018,18 @@ var providers = {
|
|
|
101018
101018
|
}
|
|
101019
101019
|
}
|
|
101020
101020
|
}),
|
|
101021
|
+
"opencode-go": provider({
|
|
101022
|
+
displayName: "OpenCode Go",
|
|
101023
|
+
envVars: ["OPENCODE_API_KEY"],
|
|
101024
|
+
models: {
|
|
101025
|
+
"glm-5.1": {
|
|
101026
|
+
displayName: "GLM 5.1",
|
|
101027
|
+
resolve: "opencode-go/glm-5.1",
|
|
101028
|
+
openRouterResolve: "openrouter/z-ai/glm-5.1",
|
|
101029
|
+
preferred: true
|
|
101030
|
+
}
|
|
101031
|
+
}
|
|
101032
|
+
}),
|
|
101021
101033
|
bedrock: provider({
|
|
101022
101034
|
displayName: "Amazon Bedrock",
|
|
101023
101035
|
envVars: ["AWS_BEARER_TOKEN_BEDROCK", "AWS_REGION", "BEDROCK_MODEL_ID"],
|
|
@@ -101855,7 +101867,7 @@ var import_semver = __toESM(require_semver2(), 1);
|
|
|
101855
101867
|
// package.json
|
|
101856
101868
|
var package_default = {
|
|
101857
101869
|
name: "pullfrog",
|
|
101858
|
-
version: "0.1.
|
|
101870
|
+
version: "0.1.23",
|
|
101859
101871
|
type: "module",
|
|
101860
101872
|
bin: {
|
|
101861
101873
|
pullfrog: "dist/cli.mjs",
|
|
@@ -107929,8 +107941,12 @@ function buildSecurityConfig(ctx, model) {
|
|
|
107929
107941
|
const slashIndex = model.indexOf("/");
|
|
107930
107942
|
if (slashIndex > 0) {
|
|
107931
107943
|
config3.enabled_providers = [model.slice(0, slashIndex).toLowerCase()];
|
|
107932
|
-
if (model.startsWith("openrouter/
|
|
107933
|
-
const
|
|
107944
|
+
if (model.startsWith("openrouter/")) {
|
|
107945
|
+
const openrouterModelIDs = /* @__PURE__ */ new Set([model.slice(slashIndex + 1)]);
|
|
107946
|
+
const reviewerModel = deriveSubagentModels(model).reviewer;
|
|
107947
|
+
if (reviewerModel?.startsWith("openrouter/")) {
|
|
107948
|
+
openrouterModelIDs.add(reviewerModel.slice(reviewerModel.indexOf("/") + 1));
|
|
107949
|
+
}
|
|
107934
107950
|
config3.provider = {
|
|
107935
107951
|
...config3.provider,
|
|
107936
107952
|
openrouter: {
|
|
@@ -107939,7 +107955,7 @@ function buildSecurityConfig(ctx, model) {
|
|
|
107939
107955
|
baseURL: "https://openrouter.ai/api/v1",
|
|
107940
107956
|
apiKey: "{env:OPENROUTER_API_KEY}"
|
|
107941
107957
|
},
|
|
107942
|
-
models:
|
|
107958
|
+
models: Object.fromEntries([...openrouterModelIDs].map((id) => [id, {}]))
|
|
107943
107959
|
}
|
|
107944
107960
|
};
|
|
107945
107961
|
}
|
|
@@ -117130,6 +117146,9 @@ function formatModelLabel(params) {
|
|
|
117130
117146
|
// still render a friendly display name.
|
|
117131
117147
|
modelAliases.find((a) => a.resolve === params.model || a.openRouterResolve === params.model);
|
|
117132
117148
|
const displayName = alias?.displayName ?? params.model;
|
|
117149
|
+
if (params.oss) {
|
|
117150
|
+
return `\`${displayName}\` (free via [Pullfrog for OSS](https://pullfrog.com/for-oss))`;
|
|
117151
|
+
}
|
|
117133
117152
|
const base = alias?.isFree ? `\`${displayName}\` (free)` : `\`${displayName}\``;
|
|
117134
117153
|
if (!params.fallbackFrom) return base;
|
|
117135
117154
|
return `${base} (credentials for ${providerDisplayName(params.fallbackFrom)} not configured)`;
|
|
@@ -117151,7 +117170,7 @@ function buildPullfrogFooter(params) {
|
|
|
117151
117170
|
}
|
|
117152
117171
|
if (params.model) {
|
|
117153
117172
|
parts.push(
|
|
117154
|
-
`Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom })}`
|
|
117173
|
+
`Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom, oss: params.oss })}`
|
|
117155
117174
|
);
|
|
117156
117175
|
}
|
|
117157
117176
|
const allParts = [...parts, "[\u{1D54F}](https://x.com/pullfrogai)"];
|
|
@@ -117946,7 +117965,8 @@ function buildCommentFooter(ctx, customParts) {
|
|
|
117946
117965
|
} : void 0,
|
|
117947
117966
|
customParts,
|
|
117948
117967
|
model: ctx.toolState.model,
|
|
117949
|
-
fallbackFrom: ctx.toolState.modelFallback?.from
|
|
117968
|
+
fallbackFrom: ctx.toolState.modelFallback?.from,
|
|
117969
|
+
oss: ctx.oss
|
|
117950
117970
|
});
|
|
117951
117971
|
}
|
|
117952
117972
|
function buildImplementPlanLink(ctx, issueNumber, commentId) {
|
|
@@ -152814,7 +152834,8 @@ async function createAndSubmitWithFooter(ctx, params, opts) {
|
|
|
152814
152834
|
workflowRun: ctx.runId ? { owner: ctx.repo.owner, repo: ctx.repo.name, runId: ctx.runId, jobId: ctx.jobId } : void 0,
|
|
152815
152835
|
customParts,
|
|
152816
152836
|
model: ctx.toolState.model,
|
|
152817
|
-
fallbackFrom: ctx.toolState.modelFallback?.from
|
|
152837
|
+
fallbackFrom: ctx.toolState.modelFallback?.from,
|
|
152838
|
+
oss: ctx.oss
|
|
152818
152839
|
});
|
|
152819
152840
|
return await ctx.octokit.rest.pulls.submitReview({
|
|
152820
152841
|
owner: params.owner,
|
|
@@ -154238,7 +154259,8 @@ function buildPrBodyWithFooter(ctx, body) {
|
|
|
154238
154259
|
triggeredBy: true,
|
|
154239
154260
|
workflowRun: ctx.runId ? { owner: ctx.repo.owner, repo: ctx.repo.name, runId: ctx.runId, jobId: ctx.jobId } : void 0,
|
|
154240
154261
|
model: ctx.toolState.model,
|
|
154241
|
-
fallbackFrom: ctx.toolState.modelFallback?.from
|
|
154262
|
+
fallbackFrom: ctx.toolState.modelFallback?.from,
|
|
154263
|
+
oss: ctx.oss
|
|
154242
154264
|
});
|
|
154243
154265
|
const bodyWithoutFooter = stripExistingFooter(fixDoubleEscapedString(body));
|
|
154244
154266
|
return `${bodyWithoutFooter}${footer}`;
|
|
@@ -160764,7 +160786,8 @@ ${ctx.error}` : ctx.error;
|
|
|
160764
160786
|
workflowRun: runId ? { owner: repoContext.owner, repo: repoContext.name, runId } : void 0,
|
|
160765
160787
|
customParts,
|
|
160766
160788
|
model: ctx.toolState.model,
|
|
160767
|
-
fallbackFrom: ctx.toolState.modelFallback?.from
|
|
160789
|
+
fallbackFrom: ctx.toolState.modelFallback?.from,
|
|
160790
|
+
oss: ctx.toolState.oss
|
|
160768
160791
|
});
|
|
160769
160792
|
const body = `${formattedError}${footer}`;
|
|
160770
160793
|
const comment = ctx.toolState.progressComment;
|
|
@@ -161736,6 +161759,7 @@ async function main() {
|
|
|
161736
161759
|
}
|
|
161737
161760
|
const payload = resolvePayload(resolvedPromptInput, runContext.repoSettings);
|
|
161738
161761
|
toolState.model = payload.model;
|
|
161762
|
+
toolState.oss = runContext.oss;
|
|
161739
161763
|
if (payload.event.trigger === "pull_request_synchronize") {
|
|
161740
161764
|
toolState.beforeSha = payload.event.before_sha;
|
|
161741
161765
|
}
|
|
@@ -162980,7 +163004,7 @@ async function run2() {
|
|
|
162980
163004
|
}
|
|
162981
163005
|
|
|
162982
163006
|
// cli.ts
|
|
162983
|
-
var VERSION10 = "0.1.
|
|
163007
|
+
var VERSION10 = "0.1.23";
|
|
162984
163008
|
var bin = basename2(process.argv[1] || "");
|
|
162985
163009
|
var PROG = bin === "pf" || bin === "pullfrog" ? bin : "pullfrog";
|
|
162986
163010
|
var rawArgs = process.argv.slice(2);
|
package/dist/index.js
CHANGED
|
@@ -99218,6 +99218,18 @@ var providers = {
|
|
|
99218
99218
|
}
|
|
99219
99219
|
}
|
|
99220
99220
|
}),
|
|
99221
|
+
"opencode-go": provider({
|
|
99222
|
+
displayName: "OpenCode Go",
|
|
99223
|
+
envVars: ["OPENCODE_API_KEY"],
|
|
99224
|
+
models: {
|
|
99225
|
+
"glm-5.1": {
|
|
99226
|
+
displayName: "GLM 5.1",
|
|
99227
|
+
resolve: "opencode-go/glm-5.1",
|
|
99228
|
+
openRouterResolve: "openrouter/z-ai/glm-5.1",
|
|
99229
|
+
preferred: true
|
|
99230
|
+
}
|
|
99231
|
+
}
|
|
99232
|
+
}),
|
|
99221
99233
|
bedrock: provider({
|
|
99222
99234
|
displayName: "Amazon Bedrock",
|
|
99223
99235
|
envVars: ["AWS_BEARER_TOKEN_BEDROCK", "AWS_REGION", "BEDROCK_MODEL_ID"],
|
|
@@ -100055,7 +100067,7 @@ var import_semver = __toESM(require_semver2(), 1);
|
|
|
100055
100067
|
// package.json
|
|
100056
100068
|
var package_default = {
|
|
100057
100069
|
name: "pullfrog",
|
|
100058
|
-
version: "0.1.
|
|
100070
|
+
version: "0.1.23",
|
|
100059
100071
|
type: "module",
|
|
100060
100072
|
bin: {
|
|
100061
100073
|
pullfrog: "dist/cli.mjs",
|
|
@@ -106171,8 +106183,12 @@ function buildSecurityConfig(ctx, model) {
|
|
|
106171
106183
|
const slashIndex = model.indexOf("/");
|
|
106172
106184
|
if (slashIndex > 0) {
|
|
106173
106185
|
config3.enabled_providers = [model.slice(0, slashIndex).toLowerCase()];
|
|
106174
|
-
if (model.startsWith("openrouter/
|
|
106175
|
-
const
|
|
106186
|
+
if (model.startsWith("openrouter/")) {
|
|
106187
|
+
const openrouterModelIDs = /* @__PURE__ */ new Set([model.slice(slashIndex + 1)]);
|
|
106188
|
+
const reviewerModel = deriveSubagentModels(model).reviewer;
|
|
106189
|
+
if (reviewerModel?.startsWith("openrouter/")) {
|
|
106190
|
+
openrouterModelIDs.add(reviewerModel.slice(reviewerModel.indexOf("/") + 1));
|
|
106191
|
+
}
|
|
106176
106192
|
config3.provider = {
|
|
106177
106193
|
...config3.provider,
|
|
106178
106194
|
openrouter: {
|
|
@@ -106181,7 +106197,7 @@ function buildSecurityConfig(ctx, model) {
|
|
|
106181
106197
|
baseURL: "https://openrouter.ai/api/v1",
|
|
106182
106198
|
apiKey: "{env:OPENROUTER_API_KEY}"
|
|
106183
106199
|
},
|
|
106184
|
-
models:
|
|
106200
|
+
models: Object.fromEntries([...openrouterModelIDs].map((id) => [id, {}]))
|
|
106185
106201
|
}
|
|
106186
106202
|
};
|
|
106187
106203
|
}
|
|
@@ -115372,6 +115388,9 @@ function formatModelLabel(params) {
|
|
|
115372
115388
|
// still render a friendly display name.
|
|
115373
115389
|
modelAliases.find((a) => a.resolve === params.model || a.openRouterResolve === params.model);
|
|
115374
115390
|
const displayName = alias?.displayName ?? params.model;
|
|
115391
|
+
if (params.oss) {
|
|
115392
|
+
return `\`${displayName}\` (free via [Pullfrog for OSS](https://pullfrog.com/for-oss))`;
|
|
115393
|
+
}
|
|
115375
115394
|
const base = alias?.isFree ? `\`${displayName}\` (free)` : `\`${displayName}\``;
|
|
115376
115395
|
if (!params.fallbackFrom) return base;
|
|
115377
115396
|
return `${base} (credentials for ${providerDisplayName(params.fallbackFrom)} not configured)`;
|
|
@@ -115393,7 +115412,7 @@ function buildPullfrogFooter(params) {
|
|
|
115393
115412
|
}
|
|
115394
115413
|
if (params.model) {
|
|
115395
115414
|
parts.push(
|
|
115396
|
-
`Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom })}`
|
|
115415
|
+
`Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom, oss: params.oss })}`
|
|
115397
115416
|
);
|
|
115398
115417
|
}
|
|
115399
115418
|
const allParts = [...parts, "[\u{1D54F}](https://x.com/pullfrogai)"];
|
|
@@ -116188,7 +116207,8 @@ function buildCommentFooter(ctx, customParts) {
|
|
|
116188
116207
|
} : void 0,
|
|
116189
116208
|
customParts,
|
|
116190
116209
|
model: ctx.toolState.model,
|
|
116191
|
-
fallbackFrom: ctx.toolState.modelFallback?.from
|
|
116210
|
+
fallbackFrom: ctx.toolState.modelFallback?.from,
|
|
116211
|
+
oss: ctx.oss
|
|
116192
116212
|
});
|
|
116193
116213
|
}
|
|
116194
116214
|
function buildImplementPlanLink(ctx, issueNumber, commentId) {
|
|
@@ -151056,7 +151076,8 @@ async function createAndSubmitWithFooter(ctx, params, opts) {
|
|
|
151056
151076
|
workflowRun: ctx.runId ? { owner: ctx.repo.owner, repo: ctx.repo.name, runId: ctx.runId, jobId: ctx.jobId } : void 0,
|
|
151057
151077
|
customParts,
|
|
151058
151078
|
model: ctx.toolState.model,
|
|
151059
|
-
fallbackFrom: ctx.toolState.modelFallback?.from
|
|
151079
|
+
fallbackFrom: ctx.toolState.modelFallback?.from,
|
|
151080
|
+
oss: ctx.oss
|
|
151060
151081
|
});
|
|
151061
151082
|
return await ctx.octokit.rest.pulls.submitReview({
|
|
151062
151083
|
owner: params.owner,
|
|
@@ -152480,7 +152501,8 @@ function buildPrBodyWithFooter(ctx, body) {
|
|
|
152480
152501
|
triggeredBy: true,
|
|
152481
152502
|
workflowRun: ctx.runId ? { owner: ctx.repo.owner, repo: ctx.repo.name, runId: ctx.runId, jobId: ctx.jobId } : void 0,
|
|
152482
152503
|
model: ctx.toolState.model,
|
|
152483
|
-
fallbackFrom: ctx.toolState.modelFallback?.from
|
|
152504
|
+
fallbackFrom: ctx.toolState.modelFallback?.from,
|
|
152505
|
+
oss: ctx.oss
|
|
152484
152506
|
});
|
|
152485
152507
|
const bodyWithoutFooter = stripExistingFooter(fixDoubleEscapedString(body));
|
|
152486
152508
|
return `${bodyWithoutFooter}${footer}`;
|
|
@@ -159006,7 +159028,8 @@ ${ctx.error}` : ctx.error;
|
|
|
159006
159028
|
workflowRun: runId ? { owner: repoContext.owner, repo: repoContext.name, runId } : void 0,
|
|
159007
159029
|
customParts,
|
|
159008
159030
|
model: ctx.toolState.model,
|
|
159009
|
-
fallbackFrom: ctx.toolState.modelFallback?.from
|
|
159031
|
+
fallbackFrom: ctx.toolState.modelFallback?.from,
|
|
159032
|
+
oss: ctx.toolState.oss
|
|
159010
159033
|
});
|
|
159011
159034
|
const body = `${formattedError}${footer}`;
|
|
159012
159035
|
const comment = ctx.toolState.progressComment;
|
|
@@ -159978,6 +160001,7 @@ async function main() {
|
|
|
159978
160001
|
}
|
|
159979
160002
|
const payload = resolvePayload(resolvedPromptInput, runContext.repoSettings);
|
|
159980
160003
|
toolState.model = payload.model;
|
|
160004
|
+
toolState.oss = runContext.oss;
|
|
159981
160005
|
if (payload.event.trigger === "pull_request_synchronize") {
|
|
159982
160006
|
toolState.beforeSha = payload.event.before_sha;
|
|
159983
160007
|
}
|
package/dist/internal.js
CHANGED
|
@@ -284,6 +284,18 @@ var providers = {
|
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
286
|
}),
|
|
287
|
+
"opencode-go": provider({
|
|
288
|
+
displayName: "OpenCode Go",
|
|
289
|
+
envVars: ["OPENCODE_API_KEY"],
|
|
290
|
+
models: {
|
|
291
|
+
"glm-5.1": {
|
|
292
|
+
displayName: "GLM 5.1",
|
|
293
|
+
resolve: "opencode-go/glm-5.1",
|
|
294
|
+
openRouterResolve: "openrouter/z-ai/glm-5.1",
|
|
295
|
+
preferred: true
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}),
|
|
287
299
|
bedrock: provider({
|
|
288
300
|
displayName: "Amazon Bedrock",
|
|
289
301
|
envVars: ["AWS_BEARER_TOKEN_BEDROCK", "AWS_REGION", "BEDROCK_MODEL_ID"],
|
|
@@ -1127,6 +1139,9 @@ function formatModelLabel(params) {
|
|
|
1127
1139
|
// still render a friendly display name.
|
|
1128
1140
|
modelAliases.find((a) => a.resolve === params.model || a.openRouterResolve === params.model);
|
|
1129
1141
|
const displayName = alias?.displayName ?? params.model;
|
|
1142
|
+
if (params.oss) {
|
|
1143
|
+
return `\`${displayName}\` (free via [Pullfrog for OSS](https://pullfrog.com/for-oss))`;
|
|
1144
|
+
}
|
|
1130
1145
|
const base = alias?.isFree ? `\`${displayName}\` (free)` : `\`${displayName}\``;
|
|
1131
1146
|
if (!params.fallbackFrom) return base;
|
|
1132
1147
|
return `${base} (credentials for ${providerDisplayName(params.fallbackFrom)} not configured)`;
|
|
@@ -1148,7 +1163,7 @@ function buildPullfrogFooter(params) {
|
|
|
1148
1163
|
}
|
|
1149
1164
|
if (params.model) {
|
|
1150
1165
|
parts.push(
|
|
1151
|
-
`Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom })}`
|
|
1166
|
+
`Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom, oss: params.oss })}`
|
|
1152
1167
|
);
|
|
1153
1168
|
}
|
|
1154
1169
|
const allParts = [...parts, "[\u{1D54F}](https://x.com/pullfrogai)"];
|
package/dist/models.d.ts
CHANGED
package/dist/toolState.d.ts
CHANGED
|
@@ -108,6 +108,7 @@ export interface ToolState {
|
|
|
108
108
|
modelFallback?: {
|
|
109
109
|
from: string;
|
|
110
110
|
} | undefined;
|
|
111
|
+
oss?: boolean | undefined;
|
|
111
112
|
todoTracker?: TodoTracker | undefined;
|
|
112
113
|
diffCoverage?: DiffCoverageState | undefined;
|
|
113
114
|
agentDiagnostic?: AgentDiagnostic | undefined;
|
|
@@ -24,6 +24,12 @@ export interface BuildPullfrogFooterParams {
|
|
|
24
24
|
* so the substitution is visible in PR comments + reviews.
|
|
25
25
|
*/
|
|
26
26
|
fallbackFrom?: string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* true when the run's model costs are covered by the Pullfrog for OSS
|
|
29
|
+
* program — the footer renders `Using <model> (free via Pullfrog for OSS)`
|
|
30
|
+
* with the phrase linking to the OSS application page.
|
|
31
|
+
*/
|
|
32
|
+
oss?: boolean | undefined;
|
|
27
33
|
}
|
|
28
34
|
/**
|
|
29
35
|
* build a pullfrog footer with configurable parts
|