pullfrog 0.1.88 → 0.1.89

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
@@ -107103,7 +107103,7 @@ var import_picocolors = __toESM(require_picocolors(), 1);
107103
107103
  // package.json
107104
107104
  var package_default = {
107105
107105
  name: "pullfrog",
107106
- version: "0.1.88",
107106
+ version: "0.1.89",
107107
107107
  cliContractVersion: "1",
107108
107108
  type: "module",
107109
107109
  bin: {
@@ -111130,6 +111130,11 @@ import { spawnSync as spawnSync2 } from "node:child_process";
111130
111130
  import { chmodSync, createWriteStream, existsSync as existsSync3, mkdirSync } from "node:fs";
111131
111131
  import { join as join2 } from "node:path";
111132
111132
  import { pipeline } from "node:stream/promises";
111133
+ function resolveNpm() {
111134
+ const npmCli = process.env.npm_execpath;
111135
+ if (npmCli?.endsWith("npm-cli.js")) return { command: process.execPath, args: [npmCli] };
111136
+ return { command: "npm", args: [] };
111137
+ }
111133
111138
  async function installFromNpmTarball(params) {
111134
111139
  const tempDir = process.env.PULLFROG_TEMP_DIR;
111135
111140
  if (!tempDir) throw new Error("PULLFROG_TEMP_DIR is not set");
@@ -111192,7 +111197,8 @@ async function installFromNpmTarball(params) {
111192
111197
  }
111193
111198
  if (params.installDependencies) {
111194
111199
  log2.debug(`\xBB installing dependencies for ${params.packageName}...`);
111195
- const installResult = spawnSync2("npm", ["install", "--production"], {
111200
+ const npm2 = resolveNpm();
111201
+ const installResult = spawnSync2(npm2.command, [...npm2.args, "install", "--production"], {
111196
111202
  cwd: extractedDir,
111197
111203
  stdio: "pipe",
111198
111204
  encoding: "utf-8",
@@ -200098,6 +200104,23 @@ ${input.raw}
200098
200104
  \`\`\``
200099
200105
  ].join("\n");
200100
200106
  }
200107
+ function isRunTimeoutError(message) {
200108
+ return message.startsWith("agent run timed out after");
200109
+ }
200110
+ function formatRunTimeoutSummary(input) {
200111
+ const settingsUrl = `${getApiUrl()}/console/${input.owner}/${input.name}`;
200112
+ return [
200113
+ "**This run hit its time limit while still working, so it stopped before finishing.**",
200114
+ "",
200115
+ "Give runs longer with `--timeout=2h` (or `--notimeout`) in this repo's instructions \u2014 or raise the workflow's `timeout` input if it sets one, since that input wins. A smaller PR or a lower effort also finishes sooner.",
200116
+ "",
200117
+ `[Repo settings \u2192](${settingsUrl}) \xB7 [Flags \u2192](https://docs.pullfrog.com/flags)`,
200118
+ "",
200119
+ `\`\`\`
200120
+ ${input.raw}
200121
+ \`\`\``
200122
+ ].join("\n");
200123
+ }
200101
200124
  function formatContextOverflowSummary(input) {
200102
200125
  const settingsUrl = `${getApiUrl()}/console/${input.owner}/${input.name}`;
200103
200126
  return [
@@ -200347,6 +200370,16 @@ ${body}`, comment: body };
200347
200370
  });
200348
200371
  return { summary: `### \u274C Pullfrog failed
200349
200372
 
200373
+ ${body}`, comment: body };
200374
+ }
200375
+ if (isRunTimeoutError(input.errorMessage)) {
200376
+ const body = formatRunTimeoutSummary({
200377
+ owner: input.repo.owner,
200378
+ name: input.repo.name,
200379
+ raw: input.errorMessage
200380
+ });
200381
+ return { summary: `### \u274C Pullfrog failed
200382
+
200350
200383
  ${body}`, comment: body };
200351
200384
  }
200352
200385
  if (isTransientUpstreamError(input.errorMessage)) {
@@ -202192,7 +202225,7 @@ function resolveTarget2(repo) {
202192
202225
  return { owner: match3[1], repo: match3[2] };
202193
202226
  }
202194
202227
  function cliVersion() {
202195
- const parts = /^(\d+)\.(\d+)\.(\d+)$/.exec("0.1.88");
202228
+ const parts = /^(\d+)\.(\d+)\.(\d+)$/.exec("0.1.89");
202196
202229
  if (!parts) return "0.0.0";
202197
202230
  return `${Number(parts[1])}.${Number(parts[2])}.${Number(parts[3])}`;
202198
202231
  }
@@ -202359,7 +202392,7 @@ async function runCli8(input) {
202359
202392
  }
202360
202393
 
202361
202394
  // cli.ts
202362
- var VERSION10 = "0.1.88";
202395
+ var VERSION10 = "0.1.89";
202363
202396
  var bin = basename2(process.argv[1] || "");
202364
202397
  var PROG = bin === "pf" || bin === "pullfrog" ? bin : "pullfrog";
202365
202398
  var rawArgs = process.argv.slice(2);
package/dist/index.js CHANGED
@@ -105416,6 +105416,11 @@ import { spawnSync } from "node:child_process";
105416
105416
  import { chmodSync, createWriteStream, existsSync as existsSync2, mkdirSync } from "node:fs";
105417
105417
  import { join } from "node:path";
105418
105418
  import { pipeline } from "node:stream/promises";
105419
+ function resolveNpm() {
105420
+ const npmCli = process.env.npm_execpath;
105421
+ if (npmCli?.endsWith("npm-cli.js")) return { command: process.execPath, args: [npmCli] };
105422
+ return { command: "npm", args: [] };
105423
+ }
105419
105424
  async function installFromNpmTarball(params) {
105420
105425
  const tempDir = process.env.PULLFROG_TEMP_DIR;
105421
105426
  if (!tempDir) throw new Error("PULLFROG_TEMP_DIR is not set");
@@ -105478,7 +105483,8 @@ async function installFromNpmTarball(params) {
105478
105483
  }
105479
105484
  if (params.installDependencies) {
105480
105485
  log.debug(`\xBB installing dependencies for ${params.packageName}...`);
105481
- const installResult = spawnSync("npm", ["install", "--production"], {
105486
+ const npm2 = resolveNpm();
105487
+ const installResult = spawnSync(npm2.command, [...npm2.args, "install", "--production"], {
105482
105488
  cwd: extractedDir,
105483
105489
  stdio: "pipe",
105484
105490
  encoding: "utf-8",
@@ -105723,7 +105729,7 @@ var import_semver = __toESM(require_semver2(), 1);
105723
105729
  // package.json
105724
105730
  var package_default = {
105725
105731
  name: "pullfrog",
105726
- version: "0.1.88",
105732
+ version: "0.1.89",
105727
105733
  cliContractVersion: "1",
105728
105734
  type: "module",
105729
105735
  bin: {
@@ -196591,6 +196597,23 @@ ${input.raw}
196591
196597
  \`\`\``
196592
196598
  ].join("\n");
196593
196599
  }
196600
+ function isRunTimeoutError(message) {
196601
+ return message.startsWith("agent run timed out after");
196602
+ }
196603
+ function formatRunTimeoutSummary(input) {
196604
+ const settingsUrl = `${getApiUrl()}/console/${input.owner}/${input.name}`;
196605
+ return [
196606
+ "**This run hit its time limit while still working, so it stopped before finishing.**",
196607
+ "",
196608
+ "Give runs longer with `--timeout=2h` (or `--notimeout`) in this repo's instructions \u2014 or raise the workflow's `timeout` input if it sets one, since that input wins. A smaller PR or a lower effort also finishes sooner.",
196609
+ "",
196610
+ `[Repo settings \u2192](${settingsUrl}) \xB7 [Flags \u2192](https://docs.pullfrog.com/flags)`,
196611
+ "",
196612
+ `\`\`\`
196613
+ ${input.raw}
196614
+ \`\`\``
196615
+ ].join("\n");
196616
+ }
196594
196617
  function formatContextOverflowSummary(input) {
196595
196618
  const settingsUrl = `${getApiUrl()}/console/${input.owner}/${input.name}`;
196596
196619
  return [
@@ -196840,6 +196863,16 @@ ${body}`, comment: body };
196840
196863
  });
196841
196864
  return { summary: `### \u274C Pullfrog failed
196842
196865
 
196866
+ ${body}`, comment: body };
196867
+ }
196868
+ if (isRunTimeoutError(input.errorMessage)) {
196869
+ const body = formatRunTimeoutSummary({
196870
+ owner: input.repo.owner,
196871
+ name: input.repo.name,
196872
+ raw: input.errorMessage
196873
+ });
196874
+ return { summary: `### \u274C Pullfrog failed
196875
+
196843
196876
  ${body}`, comment: body };
196844
196877
  }
196845
196878
  if (isTransientUpstreamError(input.errorMessage)) {
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.88",
11
+ version: "0.1.89",
12
12
  cliContractVersion: "1",
13
13
  type: "module",
14
14
  bin: {
@@ -40,6 +40,9 @@
40
40
  * `maximum context length is N tokens`. Actionable, so it renders on
41
41
  * both surfaces rather than collapsing to the one-line comment.
42
42
  *
43
+ * 4b'. Run time limit — the agent was still working when the run's own
44
+ * timeout fired. Actionable (raise the limit), so both surfaces.
45
+ *
43
46
  * 4c. Transient upstream failure (#1173) — Anthropic `529 Overloaded`,
44
47
  * OpenRouter `provider_unavailable` / `timeout`, Zen `Streaming response
45
48
  * failed: [5xx]`. Last of the classified branches so every more specific
@@ -63,8 +66,8 @@
63
66
  * the hang case, since the raw internal string helps nobody on the PR.
64
67
  *
65
68
  * Net: the actionable classifications (billing, API-key, model-not-found,
66
- * no-provider-available, context-overflow, transient-upstream) render identical
67
- * bodies on both surfaces; the non-actionable ones (unexplained hang,
69
+ * no-provider-available, context-overflow, run time limit, transient-upstream)
70
+ * render identical bodies on both surfaces; the non-actionable ones (unexplained hang,
68
71
  * generic) keep the forensics in the Actions job summary and show a calm
69
72
  * one-liner in the PR comment, whose footer already carries Pullfrog
70
73
  * branding + rerun links.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pullfrog",
3
- "version": "0.1.88",
3
+ "version": "0.1.89",
4
4
  "cliContractVersion": "1",
5
5
  "type": "module",
6
6
  "bin": {