pullfrog 0.1.22 → 0.1.24

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
@@ -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.22",
101870
+ version: "0.1.24",
101859
101871
  type: "module",
101860
101872
  bin: {
101861
101873
  pullfrog: "dist/cli.mjs",
@@ -107617,6 +107629,7 @@ function installCodexAuth() {
107617
107629
  mkdirSync5(opencodeDir, { recursive: true });
107618
107630
  writeFileSync5(authPath, `${JSON.stringify(opencodeAuth, null, 2)}
107619
107631
  `, { mode: 384 });
107632
+ process.env.XDG_DATA_HOME = xdgDataHome;
107620
107633
  log.info(`\xBB installed Codex auth at ${authPath}`);
107621
107634
  return {
107622
107635
  authPath,
@@ -117134,6 +117147,9 @@ function formatModelLabel(params) {
117134
117147
  // still render a friendly display name.
117135
117148
  modelAliases.find((a) => a.resolve === params.model || a.openRouterResolve === params.model);
117136
117149
  const displayName = alias?.displayName ?? params.model;
117150
+ if (params.oss) {
117151
+ return `\`${displayName}\` (free via [Pullfrog for OSS](https://pullfrog.com/for-oss))`;
117152
+ }
117137
117153
  const base = alias?.isFree ? `\`${displayName}\` (free)` : `\`${displayName}\``;
117138
117154
  if (!params.fallbackFrom) return base;
117139
117155
  return `${base} (credentials for ${providerDisplayName(params.fallbackFrom)} not configured)`;
@@ -117155,7 +117171,7 @@ function buildPullfrogFooter(params) {
117155
117171
  }
117156
117172
  if (params.model) {
117157
117173
  parts.push(
117158
- `Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom })}`
117174
+ `Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom, oss: params.oss })}`
117159
117175
  );
117160
117176
  }
117161
117177
  const allParts = [...parts, "[\u{1D54F}](https://x.com/pullfrogai)"];
@@ -117950,7 +117966,8 @@ function buildCommentFooter(ctx, customParts) {
117950
117966
  } : void 0,
117951
117967
  customParts,
117952
117968
  model: ctx.toolState.model,
117953
- fallbackFrom: ctx.toolState.modelFallback?.from
117969
+ fallbackFrom: ctx.toolState.modelFallback?.from,
117970
+ oss: ctx.oss
117954
117971
  });
117955
117972
  }
117956
117973
  function buildImplementPlanLink(ctx, issueNumber, commentId) {
@@ -152818,7 +152835,8 @@ async function createAndSubmitWithFooter(ctx, params, opts) {
152818
152835
  workflowRun: ctx.runId ? { owner: ctx.repo.owner, repo: ctx.repo.name, runId: ctx.runId, jobId: ctx.jobId } : void 0,
152819
152836
  customParts,
152820
152837
  model: ctx.toolState.model,
152821
- fallbackFrom: ctx.toolState.modelFallback?.from
152838
+ fallbackFrom: ctx.toolState.modelFallback?.from,
152839
+ oss: ctx.oss
152822
152840
  });
152823
152841
  return await ctx.octokit.rest.pulls.submitReview({
152824
152842
  owner: params.owner,
@@ -154242,7 +154260,8 @@ function buildPrBodyWithFooter(ctx, body) {
154242
154260
  triggeredBy: true,
154243
154261
  workflowRun: ctx.runId ? { owner: ctx.repo.owner, repo: ctx.repo.name, runId: ctx.runId, jobId: ctx.jobId } : void 0,
154244
154262
  model: ctx.toolState.model,
154245
- fallbackFrom: ctx.toolState.modelFallback?.from
154263
+ fallbackFrom: ctx.toolState.modelFallback?.from,
154264
+ oss: ctx.oss
154246
154265
  });
154247
154266
  const bodyWithoutFooter = stripExistingFooter(fixDoubleEscapedString(body));
154248
154267
  return `${bodyWithoutFooter}${footer}`;
@@ -160768,7 +160787,8 @@ ${ctx.error}` : ctx.error;
160768
160787
  workflowRun: runId ? { owner: repoContext.owner, repo: repoContext.name, runId } : void 0,
160769
160788
  customParts,
160770
160789
  model: ctx.toolState.model,
160771
- fallbackFrom: ctx.toolState.modelFallback?.from
160790
+ fallbackFrom: ctx.toolState.modelFallback?.from,
160791
+ oss: ctx.toolState.oss
160772
160792
  });
160773
160793
  const body = `${formattedError}${footer}`;
160774
160794
  const comment = ctx.toolState.progressComment;
@@ -161740,6 +161760,7 @@ async function main() {
161740
161760
  }
161741
161761
  const payload = resolvePayload(resolvedPromptInput, runContext.repoSettings);
161742
161762
  toolState.model = payload.model;
161763
+ toolState.oss = runContext.oss;
161743
161764
  if (payload.event.trigger === "pull_request_synchronize") {
161744
161765
  toolState.beforeSha = payload.event.before_sha;
161745
161766
  }
@@ -162984,7 +163005,7 @@ async function run2() {
162984
163005
  }
162985
163006
 
162986
163007
  // cli.ts
162987
- var VERSION10 = "0.1.22";
163008
+ var VERSION10 = "0.1.24";
162988
163009
  var bin = basename2(process.argv[1] || "");
162989
163010
  var PROG = bin === "pf" || bin === "pullfrog" ? bin : "pullfrog";
162990
163011
  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.22",
100070
+ version: "0.1.24",
100059
100071
  type: "module",
100060
100072
  bin: {
100061
100073
  pullfrog: "dist/cli.mjs",
@@ -105859,6 +105871,7 @@ function installCodexAuth() {
105859
105871
  mkdirSync5(opencodeDir, { recursive: true });
105860
105872
  writeFileSync4(authPath, `${JSON.stringify(opencodeAuth, null, 2)}
105861
105873
  `, { mode: 384 });
105874
+ process.env.XDG_DATA_HOME = xdgDataHome;
105862
105875
  log.info(`\xBB installed Codex auth at ${authPath}`);
105863
105876
  return {
105864
105877
  authPath,
@@ -115376,6 +115389,9 @@ function formatModelLabel(params) {
115376
115389
  // still render a friendly display name.
115377
115390
  modelAliases.find((a) => a.resolve === params.model || a.openRouterResolve === params.model);
115378
115391
  const displayName = alias?.displayName ?? params.model;
115392
+ if (params.oss) {
115393
+ return `\`${displayName}\` (free via [Pullfrog for OSS](https://pullfrog.com/for-oss))`;
115394
+ }
115379
115395
  const base = alias?.isFree ? `\`${displayName}\` (free)` : `\`${displayName}\``;
115380
115396
  if (!params.fallbackFrom) return base;
115381
115397
  return `${base} (credentials for ${providerDisplayName(params.fallbackFrom)} not configured)`;
@@ -115397,7 +115413,7 @@ function buildPullfrogFooter(params) {
115397
115413
  }
115398
115414
  if (params.model) {
115399
115415
  parts.push(
115400
- `Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom })}`
115416
+ `Using ${formatModelLabel({ model: params.model, fallbackFrom: params.fallbackFrom, oss: params.oss })}`
115401
115417
  );
115402
115418
  }
115403
115419
  const allParts = [...parts, "[\u{1D54F}](https://x.com/pullfrogai)"];
@@ -116192,7 +116208,8 @@ function buildCommentFooter(ctx, customParts) {
116192
116208
  } : void 0,
116193
116209
  customParts,
116194
116210
  model: ctx.toolState.model,
116195
- fallbackFrom: ctx.toolState.modelFallback?.from
116211
+ fallbackFrom: ctx.toolState.modelFallback?.from,
116212
+ oss: ctx.oss
116196
116213
  });
116197
116214
  }
116198
116215
  function buildImplementPlanLink(ctx, issueNumber, commentId) {
@@ -151060,7 +151077,8 @@ async function createAndSubmitWithFooter(ctx, params, opts) {
151060
151077
  workflowRun: ctx.runId ? { owner: ctx.repo.owner, repo: ctx.repo.name, runId: ctx.runId, jobId: ctx.jobId } : void 0,
151061
151078
  customParts,
151062
151079
  model: ctx.toolState.model,
151063
- fallbackFrom: ctx.toolState.modelFallback?.from
151080
+ fallbackFrom: ctx.toolState.modelFallback?.from,
151081
+ oss: ctx.oss
151064
151082
  });
151065
151083
  return await ctx.octokit.rest.pulls.submitReview({
151066
151084
  owner: params.owner,
@@ -152484,7 +152502,8 @@ function buildPrBodyWithFooter(ctx, body) {
152484
152502
  triggeredBy: true,
152485
152503
  workflowRun: ctx.runId ? { owner: ctx.repo.owner, repo: ctx.repo.name, runId: ctx.runId, jobId: ctx.jobId } : void 0,
152486
152504
  model: ctx.toolState.model,
152487
- fallbackFrom: ctx.toolState.modelFallback?.from
152505
+ fallbackFrom: ctx.toolState.modelFallback?.from,
152506
+ oss: ctx.oss
152488
152507
  });
152489
152508
  const bodyWithoutFooter = stripExistingFooter(fixDoubleEscapedString(body));
152490
152509
  return `${bodyWithoutFooter}${footer}`;
@@ -159010,7 +159029,8 @@ ${ctx.error}` : ctx.error;
159010
159029
  workflowRun: runId ? { owner: repoContext.owner, repo: repoContext.name, runId } : void 0,
159011
159030
  customParts,
159012
159031
  model: ctx.toolState.model,
159013
- fallbackFrom: ctx.toolState.modelFallback?.from
159032
+ fallbackFrom: ctx.toolState.modelFallback?.from,
159033
+ oss: ctx.toolState.oss
159014
159034
  });
159015
159035
  const body = `${formattedError}${footer}`;
159016
159036
  const comment = ctx.toolState.progressComment;
@@ -159982,6 +160002,7 @@ async function main() {
159982
160002
  }
159983
160003
  const payload = resolvePayload(resolvedPromptInput, runContext.repoSettings);
159984
160004
  toolState.model = payload.model;
160005
+ toolState.oss = runContext.oss;
159985
160006
  if (payload.event.trigger === "pull_request_synchronize") {
159986
160007
  toolState.beforeSha = payload.event.before_sha;
159987
160008
  }
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
@@ -85,6 +85,7 @@ export declare const providers: {
85
85
  deepseek: ProviderConfig;
86
86
  moonshotai: ProviderConfig;
87
87
  opencode: ProviderConfig;
88
+ "opencode-go": ProviderConfig;
88
89
  bedrock: ProviderConfig;
89
90
  vertex: ProviderConfig;
90
91
  openrouter: ProviderConfig;
@@ -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
@@ -23,6 +23,7 @@ export interface InstalledCodexAuth {
23
23
  * caller treats null as "no codex auth, fall through to API key flow".
24
24
  *
25
25
  * The env value is server-side guaranteed fresh by `maybeRotateCodexSecret`
26
- * in the run-context endpoint. We only parse + write it here; no refresh,
27
- * no DB interaction. */
26
+ * in the run-context endpoint. We parse + write it here and set
27
+ * `process.env.XDG_DATA_HOME` so every opencode subprocess discovers the
28
+ * auth.json; no refresh, no DB interaction. */
28
29
  export declare function installCodexAuth(): InstalledCodexAuth | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pullfrog",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "pullfrog": "dist/cli.mjs",