greenbump 0.6.0 → 0.8.0

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.
Files changed (43) hide show
  1. package/README.md +40 -2
  2. package/README.zh-CN.md +16 -2
  3. package/dist/agent/calllog.js +23 -0
  4. package/dist/agent/calllog.js.map +1 -0
  5. package/dist/agent/calllog.test.js +77 -0
  6. package/dist/agent/calllog.test.js.map +1 -0
  7. package/dist/agent/fixer.js +49 -4
  8. package/dist/agent/fixer.js.map +1 -1
  9. package/dist/agent/fixer.test.js +78 -0
  10. package/dist/agent/fixer.test.js.map +1 -1
  11. package/dist/agent/guard.js +37 -0
  12. package/dist/agent/guard.js.map +1 -0
  13. package/dist/agent/guard.test.js +48 -0
  14. package/dist/agent/guard.test.js.map +1 -0
  15. package/dist/agent/provider-anthropic.js +2 -2
  16. package/dist/agent/provider-anthropic.js.map +1 -1
  17. package/dist/agent/provider-openai.js +2 -2
  18. package/dist/agent/provider-openai.js.map +1 -1
  19. package/dist/cli.js +16 -0
  20. package/dist/cli.js.map +1 -1
  21. package/dist/engine/analyzers/changelog-parser.js +32 -2
  22. package/dist/engine/analyzers/changelog-parser.js.map +1 -1
  23. package/dist/engine/batch.js +24 -0
  24. package/dist/engine/batch.js.map +1 -1
  25. package/dist/engine/fixer/patterns.js +276 -35
  26. package/dist/engine/fixer/patterns.js.map +1 -1
  27. package/dist/engine/fixer/patterns.test.js +192 -0
  28. package/dist/engine/fixer/patterns.test.js.map +1 -1
  29. package/dist/engine/run.js +43 -3
  30. package/dist/engine/run.js.map +1 -1
  31. package/dist/engine/stats/recorder.js +48 -0
  32. package/dist/engine/stats/recorder.js.map +1 -0
  33. package/dist/engine/stats/recorder.test.js +71 -0
  34. package/dist/engine/stats/recorder.test.js.map +1 -0
  35. package/dist/engine/stats/report.js +157 -0
  36. package/dist/engine/stats/report.js.map +1 -0
  37. package/dist/engine/stats/report.test.js +83 -0
  38. package/dist/engine/stats/report.test.js.map +1 -0
  39. package/dist/format.js +15 -0
  40. package/dist/format.js.map +1 -1
  41. package/dist/format.test.js +45 -0
  42. package/dist/format.test.js.map +1 -0
  43. package/package.json +1 -1
@@ -0,0 +1,45 @@
1
+ import { test } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { printSummaryBox } from "./format.js";
4
+ function baseSummary(overrides) {
5
+ return {
6
+ dep: "react",
7
+ from: "18.3.1",
8
+ to: "19.2.0",
9
+ packageManager: "npm",
10
+ baselineGreen: true,
11
+ neededFix: true,
12
+ fixed: false,
13
+ unverifiable: false,
14
+ needsReview: false,
15
+ committed: false,
16
+ rounds: 3,
17
+ usage: { inputTokens: 100, outputTokens: 50 },
18
+ editedFiles: ["src/App.tsx"],
19
+ testFilesTouched: [],
20
+ durationMs: 1234,
21
+ ...overrides,
22
+ };
23
+ }
24
+ function render(summary) {
25
+ const lines = [];
26
+ // strip ANSI so assertions match plain text
27
+ printSummaryBox(summary, (s) => lines.push(s.replace(/\[\d+m/g, "")));
28
+ return lines.join("\n");
29
+ }
30
+ test("printSummaryBox: failed fix on a branch prints exact rollback commands", () => {
31
+ const out = render(baseSummary({ branch: "greenbump/react-19.2.0", baseBranch: "main", committed: false }));
32
+ assert.match(out, /git reset --hard && git checkout main && git branch -D greenbump\/react-19\.2\.0/);
33
+ assert.match(out, /nothing was committed/);
34
+ });
35
+ test("printSummaryBox: failed fix without git isolation warns about the dirty working tree", () => {
36
+ const out = render(baseSummary({ branch: undefined, baseBranch: undefined }));
37
+ assert.match(out, /no git isolation/);
38
+ assert.doesNotMatch(out, /git branch -D/);
39
+ });
40
+ test("printSummaryBox: successful fix prints no rollback block", () => {
41
+ const out = render(baseSummary({ fixed: true, committed: true, branch: "greenbump/react-19.2.0", baseBranch: "main" }));
42
+ assert.doesNotMatch(out, /git reset --hard/);
43
+ assert.doesNotMatch(out, /no git isolation/);
44
+ });
45
+ //# sourceMappingURL=format.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.test.js","sourceRoot":"","sources":["../src/format.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,SAAS,WAAW,CAAC,SAA8B;IACjD,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,QAAQ;QACZ,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE;QAC7C,WAAW,EAAE,CAAC,aAAa,CAAC;QAC5B,gBAAgB,EAAE,EAAE;QACpB,UAAU,EAAE,IAAI;QAChB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,OAAmB;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,4CAA4C;IAC5C,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;IAClF,MAAM,GAAG,GAAG,MAAM,CAChB,WAAW,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CACxF,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,kFAAkF,CAAC,CAAC;IACtG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sFAAsF,EAAE,GAAG,EAAE;IAChG,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACtC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACpE,MAAM,GAAG,GAAG,MAAM,CAChB,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CACpG,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC7C,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greenbump",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Upgrade a dependency and let an AI agent fix the code it breaks — until CI is green. The Renovate that actually mends your code.",
5
5
  "type": "module",
6
6
  "bin": {