binary-collections 2.0.13 → 2.0.14

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 (286) hide show
  1. package/binaries/binary-executor.cjs +307 -238
  2. package/binaries/clean-nodemodule.cjs +307 -238
  3. package/binaries/clean-nodemodules.cjs +307 -238
  4. package/binaries/composer.cjs +323 -0
  5. package/binaries/composer.cmd +2 -0
  6. package/binaries/composer.phar +0 -0
  7. package/binaries/dev.cjs +307 -238
  8. package/binaries/empty.cjs +307 -238
  9. package/binaries/git-reduce-size.cjs +307 -238
  10. package/binaries/javakill.cjs +307 -238
  11. package/binaries/kill-process.cjs +307 -238
  12. package/binaries/nodekill.cjs +307 -238
  13. package/binaries/prod.cjs +307 -238
  14. package/binaries/py.cjs +307 -238
  15. package/binaries/rmfind.cjs +307 -238
  16. package/binaries/rmx.cjs +307 -238
  17. package/binaries/submodule-token.cjs +307 -238
  18. package/binaries/test-cjs.cjs +307 -238
  19. package/binaries/test-esm.cjs +307 -238
  20. package/binaries/yarn-clean.cjs +307 -238
  21. package/binaries/yc.cjs +307 -238
  22. package/binaries/ycw.cjs +307 -238
  23. package/docs-src/binary-collections.md +1 -1
  24. package/docs-src/clean-github-actions-caches.md +1 -1
  25. package/docs-src/copy-move-file.md +1 -4
  26. package/docs-src/del-ps.md +1 -1
  27. package/docs-src/find-node-modules.md +1 -1
  28. package/docs-src/generate-test-ci.md +56 -0
  29. package/docs-src/get-latest-workflow-status.md +100 -0
  30. package/docs-src/git-diff.md +1 -1
  31. package/docs-src/git-fix.md +1 -1
  32. package/docs-src/git-purge.md +1 -1
  33. package/docs-src/kill-night-crows.md +1 -1
  34. package/docs-src/node-cache-cleaner.md +2 -2
  35. package/docs-src/node-package-packer.md +1 -1
  36. package/docs-src/opencode-cli.md +127 -0
  37. package/docs-src/package-resolutions-updater.md +1 -1
  38. package/docs-src/rmpath.md +1 -1
  39. package/docs-src/run-by-checksum.md +1 -1
  40. package/docs-src/submodule-remove.md +1 -1
  41. package/docs-src/upload-backend.md +29 -0
  42. package/docs-src/vscode-cli.md +84 -0
  43. package/docs-src/workflow-badge.md +120 -0
  44. package/lib/binary-collections/config.cjs +14 -2
  45. package/lib/binary-collections/config.d.cts +10 -0
  46. package/lib/binary-collections/config.mjs +2 -2
  47. package/lib/binary-collections/findScript.cjs +43 -21
  48. package/lib/binary-collections/findScript.mjs +2 -2
  49. package/lib/binary-collections/listScript.cjs +43 -21
  50. package/lib/binary-collections/listScript.mjs +2 -2
  51. package/lib/binary-collections.cjs +43 -21
  52. package/lib/binary-collections.mjs +6 -6
  53. package/lib/chunk-2SJKVOTN.mjs +146 -0
  54. package/lib/{chunk-2MN4VPV2.mjs → chunk-3F6EIHYG.mjs} +2 -2
  55. package/lib/chunk-546KAIYT.mjs +113 -0
  56. package/lib/chunk-56BVU63B.mjs +86 -0
  57. package/lib/chunk-5WAOOOGZ.mjs +77 -0
  58. package/lib/chunk-72XTQ3CK.mjs +45 -0
  59. package/lib/chunk-7N52Z4IJ.mjs +39 -0
  60. package/lib/chunk-7Q6YEUQF.mjs +246 -0
  61. package/lib/{chunk-NQXUYO67.mjs → chunk-AJ3OIYYP.mjs} +43 -21
  62. package/lib/chunk-AQZ7LMFS.mjs +100 -0
  63. package/lib/chunk-BDCMTOZI.mjs +246 -0
  64. package/lib/chunk-BEUM4LH4.mjs +184 -0
  65. package/lib/{chunk-TBWXE7ST.mjs → chunk-BO4TZS4Q.mjs} +5 -2
  66. package/lib/chunk-CM3IC5YC.mjs +226 -0
  67. package/lib/{chunk-FLYSZFLW.mjs → chunk-D42YBRZW.mjs} +1 -1
  68. package/lib/chunk-FR3DMHJC.mjs +146 -0
  69. package/lib/chunk-I3O5ZRYU.mjs +77 -0
  70. package/lib/chunk-J4M5EL5P.mjs +108 -0
  71. package/lib/chunk-JK3MG2KF.mjs +236 -0
  72. package/lib/chunk-JMUFQSPE.mjs +184 -0
  73. package/lib/chunk-JVMLKHD2.mjs +62 -0
  74. package/lib/chunk-KAT2JNLZ.mjs +146 -0
  75. package/lib/{chunk-CD3HF3LK.mjs → chunk-KRCPFWIF.mjs} +6 -3
  76. package/lib/chunk-LACQTD5V.mjs +225 -0
  77. package/lib/chunk-MCCMMZSM.mjs +60 -0
  78. package/lib/chunk-OA2RKEY3.mjs +162 -0
  79. package/lib/{chunk-X2B3X7D4.mjs → chunk-PAZH45HS.mjs} +7 -1
  80. package/lib/chunk-QZMGBDSA.mjs +32 -0
  81. package/lib/chunk-RKPIBGKE.mjs +61 -0
  82. package/lib/chunk-SARIXFHP.mjs +44 -0
  83. package/lib/chunk-SJYP66BO.mjs +62 -0
  84. package/lib/chunk-SWUAEY4H.mjs +44 -0
  85. package/lib/chunk-TP3O2JGW.mjs +88 -0
  86. package/lib/chunk-UAIF5VIA.mjs +89 -0
  87. package/lib/chunk-UDZBVKXH.mjs +94 -0
  88. package/lib/chunk-UEOWRYAN.mjs +32 -0
  89. package/lib/chunk-UHPFLJXH.mjs +227 -0
  90. package/lib/chunk-UYNBNLV5.mjs +113 -0
  91. package/lib/chunk-WOC4FZ6F.mjs +164 -0
  92. package/lib/chunk-X7UVQ6ZC.mjs +183 -0
  93. package/lib/{chunk-RDN6HF5Z.mjs → chunk-XI67TI46.mjs} +1 -1
  94. package/lib/chunk-XW5NZAKI.mjs +82 -0
  95. package/lib/chunk-YLV4QATP.mjs +86 -0
  96. package/lib/chunk-YWSLMAQ7.mjs +65 -0
  97. package/lib/chunk-ZB4IQ6VJ.mjs +46 -0
  98. package/lib/cross-env/index.mjs +3 -3
  99. package/lib/del-gradle.cjs +1 -1
  100. package/lib/del-gradle.mjs +22 -16
  101. package/lib/del-node-modules.cjs +1 -1
  102. package/lib/del-node-modules.mjs +148 -142
  103. package/lib/find-node-modules-cli.cjs +1 -1
  104. package/lib/find-node-modules-cli.mjs +10 -4
  105. package/lib/{git-diff-cli.cjs → git/git-diff-cli.cjs} +18 -6
  106. package/lib/{git-diff-cli.mjs → git/git-diff-cli.mjs} +7 -7
  107. package/lib/{git-diff.cjs → git/git-diff.cjs} +16 -4
  108. package/lib/{git-diff.js → git/git-diff.js} +3 -3
  109. package/lib/{git-diff.mjs → git/git-diff.mjs} +6 -6
  110. package/lib/{git-fix.cjs → git/git-fix.cjs} +134 -3
  111. package/lib/{git-fix.mjs → git/git-fix.mjs} +19 -14
  112. package/lib/{git-purge.cjs → git/git-purge.cjs} +1 -1
  113. package/lib/{git-purge.mjs → git/git-purge.mjs} +4 -4
  114. package/lib/git/user-config.cjs +131 -1
  115. package/lib/git/user-config.mjs +3 -1
  116. package/lib/{clean-github-actions-caches-cli.cjs → github-workflows/clean-github-actions-caches-cli.cjs} +38 -10
  117. package/lib/{clean-github-actions-caches-cli.mjs → github-workflows/clean-github-actions-caches-cli.mjs} +7 -6
  118. package/lib/{clean-github-actions-caches.cjs → github-workflows/clean-github-actions-caches.cjs} +38 -10
  119. package/lib/{clean-github-actions-caches.mjs → github-workflows/clean-github-actions-caches.mjs} +5 -4
  120. package/lib/github-workflows/generate-test-ci-step-cli.cjs +240 -0
  121. package/lib/github-workflows/generate-test-ci-step-cli.d.mts +2 -0
  122. package/lib/github-workflows/generate-test-ci-step-cli.mjs +132 -0
  123. package/lib/github-workflows/get-latest-workflow-status-cli.cjs +541 -0
  124. package/lib/github-workflows/get-latest-workflow-status-cli.d.mts +2 -0
  125. package/lib/github-workflows/get-latest-workflow-status-cli.mjs +61 -0
  126. package/lib/github-workflows/get-latest-workflow-status.cjs +56 -0
  127. package/lib/github-workflows/get-latest-workflow-status.d.mts +1 -0
  128. package/lib/github-workflows/get-latest-workflow-status.mjs +8 -0
  129. package/lib/github-workflows/utils.cjs +271 -0
  130. package/lib/github-workflows/utils.d.cts +76 -0
  131. package/lib/github-workflows/utils.mjs +8 -0
  132. package/lib/github-workflows/workflow-badge-cli.cjs +722 -0
  133. package/lib/github-workflows/workflow-badge-cli.d.mts +2 -0
  134. package/lib/github-workflows/workflow-badge-cli.mjs +98 -0
  135. package/lib/github-workflows/workflow-badge-generator.cjs +200 -0
  136. package/lib/github-workflows/workflow-badge-generator.d.mts +14 -0
  137. package/lib/github-workflows/workflow-badge-generator.mjs +8 -0
  138. package/lib/github-workflows/workflow-test-data.cjs +73 -0
  139. package/lib/github-workflows/workflow-test-data.d.cts +63 -0
  140. package/lib/github-workflows/workflow-test-data.mjs +6 -0
  141. package/lib/opencode/cli/auth-rotate.cjs +143 -0
  142. package/lib/opencode/cli/auth-rotate.d.ts +1 -0
  143. package/lib/opencode/cli/auth-rotate.js +70 -0
  144. package/lib/opencode/cli/auth-rotate.mjs +10 -0
  145. package/lib/opencode/cli/list-projects.cjs +184 -0
  146. package/lib/opencode/cli/list-projects.d.ts +1 -0
  147. package/lib/opencode/cli/list-projects.js +32 -0
  148. package/lib/opencode/cli/list-projects.mjs +11 -0
  149. package/lib/opencode/cli/list-sessions.cjs +215 -0
  150. package/lib/opencode/cli/list-sessions.d.ts +1 -0
  151. package/lib/opencode/cli/list-sessions.js +45 -0
  152. package/lib/opencode/cli/list-sessions.mjs +11 -0
  153. package/lib/opencode/database.cjs +349 -0
  154. package/lib/opencode/database.d.ts +91 -0
  155. package/lib/opencode/database.js +252 -0
  156. package/lib/opencode/database.mjs +28 -0
  157. package/lib/opencode/database.runner.cjs +145 -0
  158. package/lib/opencode/database.runner.d.ts +1 -0
  159. package/lib/opencode/database.runner.js +56 -0
  160. package/lib/opencode/database.runner.mjs +37 -0
  161. package/lib/opencode/opencode-zen.runner.cjs +48 -0
  162. package/lib/opencode/opencode-zen.runner.d.mts +1 -0
  163. package/lib/opencode/opencode-zen.runner.mjs +31 -0
  164. package/lib/opencode/sqlite.cjs +114 -0
  165. package/lib/opencode/sqlite.d.ts +18 -0
  166. package/lib/opencode/sqlite.js +82 -0
  167. package/lib/opencode/sqlite.mjs +10 -0
  168. package/lib/opencode/storage.cjs +124 -0
  169. package/lib/opencode/storage.d.ts +27 -0
  170. package/lib/opencode/storage.js +101 -0
  171. package/lib/opencode/storage.mjs +38 -0
  172. package/lib/opencode/storage.runner.cjs +50 -0
  173. package/lib/opencode/storage.runner.d.ts +1 -0
  174. package/lib/opencode/storage.runner.js +13 -0
  175. package/lib/opencode/storage.runner.mjs +29 -0
  176. package/lib/opencode/types.cjs +17 -0
  177. package/lib/opencode/types.d.ts +31 -0
  178. package/lib/opencode/types.js +2 -0
  179. package/lib/opencode/types.mjs +7 -0
  180. package/lib/opencode/utils/check-api.cjs +59 -0
  181. package/lib/opencode/utils/check-api.d.ts +12 -0
  182. package/lib/opencode/utils/check-api.js +46 -0
  183. package/lib/opencode/utils/check-api.mjs +8 -0
  184. package/lib/opencode-cli.cjs +473 -0
  185. package/lib/opencode-cli.d.ts +2 -0
  186. package/lib/opencode-cli.js +115 -0
  187. package/lib/opencode-cli.mjs +111 -0
  188. package/lib/package-resolutions-updater-cli.cjs +181 -154
  189. package/lib/package-resolutions-updater-cli.mjs +3 -2
  190. package/lib/package-resolutions-updater.cjs +181 -154
  191. package/lib/package-resolutions-updater.d.mts +12 -3
  192. package/lib/package-resolutions-updater.mjs +3 -2
  193. package/lib/print-directory-tree.cjs +131 -3
  194. package/lib/print-directory-tree.mjs +6 -3
  195. package/lib/rmpath-cli.cjs +131 -5
  196. package/lib/rmpath-cli.mjs +3 -1
  197. package/lib/rmpath.cjs +147 -11
  198. package/lib/rmpath.mjs +3 -1
  199. package/lib/run-by-checksum/hash.cjs +18 -2
  200. package/lib/run-by-checksum/hash.d.ts +4 -1
  201. package/lib/run-by-checksum/hash.js +38 -4
  202. package/lib/run-by-checksum/hash.mjs +1 -1
  203. package/lib/run-by-checksum/run.cjs +18 -2
  204. package/lib/run-by-checksum/run.mjs +2 -2
  205. package/lib/run-by-checksum-cli.cjs +18 -2
  206. package/lib/run-by-checksum-cli.mjs +2 -2
  207. package/lib/submodule-install.cjs +130 -4
  208. package/lib/submodule-install.mjs +5 -4
  209. package/lib/submodule-remove-cli.cjs +131 -5
  210. package/lib/submodule-remove-cli.mjs +3 -1
  211. package/lib/submodule-remove.cjs +146 -5
  212. package/lib/submodule-remove.mjs +3 -1
  213. package/lib/utils/findEnvFiles.cjs +3 -0
  214. package/lib/utils/findEnvFiles.d.cts +2 -2
  215. package/lib/utils/findEnvFiles.mjs +1 -1
  216. package/lib/vscode/project.cjs +0 -0
  217. package/lib/vscode/project.d.ts +0 -0
  218. package/lib/vscode/project.js +1 -0
  219. package/lib/vscode/project.mjs +7 -0
  220. package/lib/vscode/storage.cjs +138 -0
  221. package/lib/vscode/storage.d.ts +51 -0
  222. package/lib/vscode/storage.js +169 -0
  223. package/lib/vscode/storage.mjs +42 -0
  224. package/lib/vscode/storage.runner.cjs +125 -0
  225. package/lib/vscode/storage.runner.d.ts +1 -0
  226. package/lib/vscode/storage.runner.js +47 -0
  227. package/lib/vscode/storage.runner.mjs +60 -0
  228. package/lib/vscode-cli.cjs +155 -0
  229. package/lib/vscode-cli.d.ts +2 -0
  230. package/lib/vscode-cli.js +80 -0
  231. package/lib/vscode-cli.mjs +71 -0
  232. package/package.json +43 -21
  233. package/readme.md +41 -8
  234. package/releases/readme.md +1 -1
  235. package/src/github-workflows/generate-test-ci-step-cli.mjs +126 -0
  236. package/vendor/clue/ndjson-react/README.md +365 -0
  237. package/vendor/composer/pcre/README.md +189 -0
  238. package/vendor/composer/semver/README.md +99 -0
  239. package/vendor/composer/xdebug-handler/README.md +305 -0
  240. package/vendor/ergebnis/agent-detector/README.md +107 -0
  241. package/vendor/evenement/evenement/README.md +64 -0
  242. package/vendor/fidry/cpu-core-counter/README.md +138 -0
  243. package/vendor/friendsofphp/php-cs-fixer/README.md +97 -0
  244. package/vendor/psr/container/README.md +13 -0
  245. package/vendor/psr/event-dispatcher/README.md +6 -0
  246. package/vendor/psr/log/README.md +58 -0
  247. package/vendor/react/cache/README.md +367 -0
  248. package/vendor/react/child-process/README.md +619 -0
  249. package/vendor/react/dns/README.md +453 -0
  250. package/vendor/react/event-loop/README.md +930 -0
  251. package/vendor/react/promise/README.md +722 -0
  252. package/vendor/react/socket/README.md +1564 -0
  253. package/vendor/react/stream/README.md +1249 -0
  254. package/vendor/sebastian/diff/README.md +151 -0
  255. package/vendor/symfony/console/README.md +30 -0
  256. package/vendor/symfony/deprecation-contracts/README.md +26 -0
  257. package/vendor/symfony/event-dispatcher/README.md +25 -0
  258. package/vendor/symfony/event-dispatcher-contracts/README.md +9 -0
  259. package/vendor/symfony/filesystem/README.md +23 -0
  260. package/vendor/symfony/finder/README.md +24 -0
  261. package/vendor/symfony/options-resolver/README.md +25 -0
  262. package/vendor/symfony/polyfill-ctype/README.md +12 -0
  263. package/vendor/symfony/polyfill-intl-grapheme/README.md +32 -0
  264. package/vendor/symfony/polyfill-intl-normalizer/README.md +14 -0
  265. package/vendor/symfony/polyfill-mbstring/README.md +13 -0
  266. package/vendor/symfony/polyfill-php80/README.md +25 -0
  267. package/vendor/symfony/polyfill-php81/README.md +18 -0
  268. package/vendor/symfony/polyfill-php84/README.md +23 -0
  269. package/vendor/symfony/polyfill-php85/README.md +20 -0
  270. package/vendor/symfony/process/README.md +23 -0
  271. package/vendor/symfony/service-contracts/README.md +9 -0
  272. package/vendor/symfony/stopwatch/README.md +52 -0
  273. package/vendor/symfony/string/README.md +24 -0
  274. package/lib/del-gradle.js +0 -16
  275. package/lib/del-node-modules.js +0 -211
  276. package/lib/find-node-modules-cli.js +0 -4
  277. /package/lib/{clean-github-actions-caches-cli.d.cts → del-gradle.d.cts} +0 -0
  278. /package/lib/{del-gradle.d.ts → del-node-modules.d.cts} +0 -0
  279. /package/lib/{find-node-modules-cli.d.ts → find-node-modules-cli.d.cts} +0 -0
  280. /package/lib/{git-diff-cli.d.ts → git/git-diff-cli.d.ts} +0 -0
  281. /package/lib/{git-diff-cli.js → git/git-diff-cli.js} +0 -0
  282. /package/lib/{git-diff.d.ts → git/git-diff.d.ts} +0 -0
  283. /package/lib/{git-fix.d.cts → git/git-fix.d.cts} +0 -0
  284. /package/lib/{git-purge.d.cts → git/git-purge.d.cts} +0 -0
  285. /package/lib/{del-node-modules.d.ts → github-workflows/clean-github-actions-caches-cli.d.cts} +0 -0
  286. /package/lib/{clean-github-actions-caches.d.cts → github-workflows/clean-github-actions-caches.d.cts} +0 -0
@@ -0,0 +1,183 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-QQ4A6DLD.mjs";
5
+
6
+ // src/github-workflows/workflow-badge-generator.mjs
7
+ init_esm_shims();
8
+ var COLORS = {
9
+ success: "#2da44e",
10
+ failure: "#cf222e",
11
+ cancelled: "#656d76",
12
+ skipped: "#656d76",
13
+ inProgress: "#d4920b",
14
+ pending: "#656d76",
15
+ unknown: "#656d76",
16
+ text: "#1f2328",
17
+ textSecondary: "#656d76",
18
+ border: "#d0d7de",
19
+ bg: "#ffffff",
20
+ cardBg: "#f6f8fa"
21
+ };
22
+ function getStatusMeta(run) {
23
+ const { status, conclusion } = run;
24
+ if (conclusion === "success") return { label: "Passing", color: COLORS.success };
25
+ if (conclusion === "failure") return { label: "Failing", color: COLORS.failure };
26
+ if (conclusion === "cancelled") return { label: "Cancelled", color: COLORS.cancelled };
27
+ if (conclusion === "skipped") return { label: "Skipped", color: COLORS.skipped };
28
+ if (status === "in_progress") return { label: "In Progress", color: COLORS.inProgress };
29
+ if (status === "queued" || status === "pending") return { label: "Pending", color: COLORS.pending };
30
+ return { label: status || "Unknown", color: COLORS.unknown };
31
+ }
32
+ function esc(str) {
33
+ return String(str).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
34
+ }
35
+ function countSteps(jobs) {
36
+ let total = 0, passed = 0, failed = 0, skipped = 0, pending = 0;
37
+ for (const job of jobs) {
38
+ for (const step of job.steps || []) {
39
+ total++;
40
+ if (step.conclusion === "success") passed++;
41
+ else if (step.conclusion === "failure") failed++;
42
+ else if (step.conclusion === "skipped") skipped++;
43
+ else pending++;
44
+ }
45
+ }
46
+ return { total, passed, failed, skipped, pending };
47
+ }
48
+ function jobColor(job) {
49
+ if (job.conclusion === "success") return COLORS.success;
50
+ if (job.conclusion === "failure") return COLORS.failure;
51
+ if (job.status === "in_progress") return COLORS.inProgress;
52
+ return COLORS.pending;
53
+ }
54
+ function generateBadge(run, jobs, options = {}) {
55
+ const width = options.width || 520;
56
+ const maxSteps = options.maxSteps;
57
+ const { label: statusLabel, color: accentColor } = getStatusMeta(run);
58
+ const steps = countSteps(jobs);
59
+ const PAD = 20;
60
+ const W = width;
61
+ const RIGHT = width - PAD;
62
+ const INNER_W = RIGHT - PAD;
63
+ const els = [];
64
+ const el = (str) => els.push(str);
65
+ const LABEL_X = PAD;
66
+ const VALUE_X = 110;
67
+ let yCursor = 0;
68
+ const divider = () => {
69
+ yCursor += 4;
70
+ el(`<line x1="${PAD}" y1="${yCursor}" x2="${RIGHT}" y2="${yCursor}" stroke="${COLORS.border}" stroke-width="1"/>`);
71
+ yCursor += 5;
72
+ };
73
+ const sectionHeading = (text) => {
74
+ yCursor += 8;
75
+ el(
76
+ `<text x="${PAD}" y="${yCursor + 13}" font-size="11" font-weight="700" fill="${COLORS.textSecondary}" letter-spacing="0.5">${esc(text)}</text>`
77
+ );
78
+ yCursor += 22;
79
+ };
80
+ el(`<rect x="0" y="0" width="${W}" height="4" fill="${accentColor}"/>`);
81
+ yCursor = 4;
82
+ yCursor += 14;
83
+ const titleBaseline = yCursor + 15;
84
+ el(
85
+ `<text x="${PAD}" y="${titleBaseline}" font-size="15" font-weight="700" fill="${COLORS.text}">Workflow Status</text>`
86
+ );
87
+ const pillText = statusLabel;
88
+ const pillTextW = pillText.length * 7.8 + 32;
89
+ const pillX = RIGHT - pillTextW;
90
+ const pillY = titleBaseline - 12;
91
+ el(`<rect x="${pillX}" y="${pillY}" width="${pillTextW}" height="22" rx="11" fill="${accentColor}" opacity="0.12"/>`);
92
+ el(`<circle cx="${pillX + 14}" cy="${titleBaseline - 2}" r="4.5" fill="${accentColor}"/>`);
93
+ el(
94
+ `<text x="${pillX + 24}" y="${titleBaseline + 1}" font-size="12" font-weight="600" fill="${accentColor}">${esc(pillText)}</text>`
95
+ );
96
+ yCursor = titleBaseline + 4;
97
+ divider();
98
+ const metaRows = [
99
+ { label: "Workflow", value: run.name || "" },
100
+ { label: "Status", value: `${run.status}${run.conclusion ? ` (${run.conclusion})` : ""}` },
101
+ { label: "Branch", value: run.head_branch || "" },
102
+ { label: "Run ID", value: `#${run.id || ""}` }
103
+ ];
104
+ for (const row of metaRows) {
105
+ const rowBaseline = yCursor + 14;
106
+ el(
107
+ `<text x="${LABEL_X}" y="${rowBaseline}" font-size="12" fill="${COLORS.textSecondary}">${esc(row.label)}</text>`
108
+ );
109
+ el(
110
+ `<text x="${VALUE_X}" y="${rowBaseline}" font-size="13" fill="${COLORS.text}" font-weight="500">${esc(row.value)}</text>`
111
+ );
112
+ yCursor += 22;
113
+ }
114
+ divider();
115
+ sectionHeading("JOBS");
116
+ for (const job of jobs) {
117
+ const jColor = jobColor(job);
118
+ const jStatus = job.conclusion || job.status;
119
+ el(`<rect x="${PAD}" y="${yCursor}" width="${INNER_W}" height="28" rx="6" fill="${COLORS.cardBg}"/>`);
120
+ el(
121
+ `<text x="${PAD + 10}" y="${yCursor + 18}" font-size="13" font-weight="600" fill="${COLORS.text}">${esc(job.name)}</text>`
122
+ );
123
+ const jobStatusX = RIGHT - 14;
124
+ el(`<circle cx="${jobStatusX - 16}" cy="${yCursor + 14}" r="3.5" fill="${jColor}"/>`);
125
+ el(
126
+ `<text x="${jobStatusX}" y="${yCursor + 18}" font-size="11" fill="${COLORS.textSecondary}" text-anchor="end">${esc(jStatus)}</text>`
127
+ );
128
+ yCursor += 34;
129
+ if (job.steps && job.steps.length > 0) {
130
+ const stepsToRender = maxSteps ? job.steps.slice(0, maxSteps) : job.steps;
131
+ const hiddenCount = maxSteps ? job.steps.length - maxSteps : 0;
132
+ for (const step of stepsToRender) {
133
+ const sIcon = step.conclusion === "success" ? "\u2713" : step.conclusion === "failure" ? "\u2717" : step.conclusion === "skipped" ? "\u2013" : "\u25CB";
134
+ const sColor = step.conclusion === "success" ? COLORS.success : step.conclusion === "failure" ? COLORS.failure : step.conclusion === "skipped" ? COLORS.textSecondary : COLORS.inProgress;
135
+ el(`<text x="${PAD + 18}" y="${yCursor + 13}" font-size="12" fill="${sColor}">${sIcon}</text>`);
136
+ let stepName = step.name || "";
137
+ const maxChars = 52;
138
+ if (stepName.length > maxChars) {
139
+ stepName = stepName.slice(0, maxChars - 3) + "...";
140
+ }
141
+ el(`<text x="${PAD + 36}" y="${yCursor + 13}" font-size="12" fill="${COLORS.text}">${esc(stepName)}</text>`);
142
+ const stepStatus = step.conclusion || step.status || "";
143
+ el(
144
+ `<text x="${RIGHT}" y="${yCursor + 13}" font-size="11" fill="${COLORS.textSecondary}" text-anchor="end">${esc(stepStatus)}</text>`
145
+ );
146
+ yCursor += 20;
147
+ }
148
+ if (hiddenCount > 0) {
149
+ el(
150
+ `<text x="${PAD + 18}" y="${yCursor + 13}" font-size="12" fill="${COLORS.textSecondary}" font-style="italic">and ${hiddenCount} more step${hiddenCount !== 1 ? "s" : ""}...</text>`
151
+ );
152
+ yCursor += 20;
153
+ }
154
+ yCursor += 4;
155
+ }
156
+ }
157
+ divider();
158
+ const footerParts = [];
159
+ if (steps.passed > 0) footerParts.push(`${steps.passed} \u2713 passed`);
160
+ if (steps.failed > 0) footerParts.push(`${steps.failed} \u2717 failed`);
161
+ if (steps.pending > 0) footerParts.push(`${steps.pending} \u25CB pending`);
162
+ if (steps.skipped > 0) footerParts.push(`${steps.skipped} \u2013 skipped`);
163
+ const footerText = footerParts.length > 0 ? footerParts.join(" \xB7 ") : "No steps recorded";
164
+ el(`<text x="${PAD}" y="${yCursor + 13}" font-size="12" fill="${COLORS.textSecondary}">${esc(footerText)}</text>`);
165
+ yCursor += 22;
166
+ const totalHeight = yCursor + 6;
167
+ const svg = [
168
+ `<svg xmlns="http://www.w3.org/2000/svg" width="${W}" height="${totalHeight}" viewBox="0 0 ${W} ${totalHeight}" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif">`,
169
+ ` <defs>`,
170
+ ` <filter id="badge-shadow" x="-2%" y="-2%" width="104%" height="104%">`,
171
+ ` <feDropShadow dx="0" dy="1" stdDeviation="3" flood-color="#000" flood-opacity="0.12"/>`,
172
+ ` </filter>`,
173
+ ` </defs>`,
174
+ ` <rect x="0.5" y="0.5" width="${W - 1}" height="${totalHeight - 1}" rx="8" fill="${COLORS.bg}" stroke="${COLORS.border}" stroke-width="1" filter="url(#badge-shadow)"/>`,
175
+ ...els,
176
+ `</svg>`
177
+ ].join("\n");
178
+ return svg;
179
+ }
180
+
181
+ export {
182
+ generateBadge
183
+ };
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  require_package
4
- } from "./chunk-NQXUYO67.mjs";
4
+ } from "./chunk-AJ3OIYYP.mjs";
5
5
  import {
6
6
  __commonJS,
7
7
  __dirname,
@@ -0,0 +1,82 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-QQ4A6DLD.mjs";
5
+
6
+ // src/opencode/storage.ts
7
+ init_esm_shims();
8
+ import path from "upath";
9
+ import os from "os";
10
+ import fs from "fs-extra";
11
+ import { parse as parseJsonc } from "jsonc-parser";
12
+ var OPCODE_DIR = path.join(os.homedir(), ".local/share/opencode");
13
+ var CONFIG_DIR = path.join(os.homedir(), ".config/opencode");
14
+ var CACHE_DIR = path.join(os.homedir(), ".cache/opencode");
15
+ var LOG_DIR = path.join(OPCODE_DIR, "log");
16
+ var AUTH_PATH = path.join(OPCODE_DIR, "auth.json");
17
+ var PROJECT_DIR = path.join(OPCODE_DIR, "project");
18
+ var STORAGE_PATH = path.join(OPCODE_DIR, "storage");
19
+ var SESSION_PATH = path.join(STORAGE_PATH, "session");
20
+ var SESSION_DIFF_DIR = path.join(STORAGE_PATH, "session_diff");
21
+ var DATABASE_PATH = path.join(OPCODE_DIR, "opencode.db");
22
+ async function scanJson(dir) {
23
+ const results = [];
24
+ try {
25
+ const entries = await fs.readdir(dir);
26
+ for (const entry of entries) {
27
+ if (!entry.endsWith(".json")) continue;
28
+ const content = await fs.readFile(path.join(dir, entry), "utf-8");
29
+ results.push(JSON.parse(content));
30
+ }
31
+ } catch {
32
+ }
33
+ return results;
34
+ }
35
+ async function scanDirs(dir) {
36
+ try {
37
+ const entries = await fs.readdir(dir, { withFileTypes: true });
38
+ return entries.filter((e) => e.isDirectory()).map((e) => e.name);
39
+ } catch {
40
+ return [];
41
+ }
42
+ }
43
+ async function readJson(filePath) {
44
+ try {
45
+ const content = await fs.readFile(filePath, "utf-8");
46
+ return parseJsonc(content);
47
+ } catch {
48
+ return null;
49
+ }
50
+ }
51
+ function getSessionFileById(sessionId) {
52
+ return path.join(SESSION_DIFF_DIR, `${sessionId}.json`);
53
+ }
54
+ function getOpenCodeAuth() {
55
+ const file = path.join(OPCODE_DIR, "auth.json");
56
+ if (!fs.existsSync(file)) return null;
57
+ return readJson(file);
58
+ }
59
+ async function saveOpenCodeAuth(auth) {
60
+ const file = path.join(OPCODE_DIR, "auth.json");
61
+ await fs.ensureFile(file);
62
+ await fs.writeFile(file, JSON.stringify(auth, null, 2), "utf-8");
63
+ }
64
+
65
+ export {
66
+ OPCODE_DIR,
67
+ CONFIG_DIR,
68
+ CACHE_DIR,
69
+ LOG_DIR,
70
+ AUTH_PATH,
71
+ PROJECT_DIR,
72
+ STORAGE_PATH,
73
+ SESSION_PATH,
74
+ SESSION_DIFF_DIR,
75
+ DATABASE_PATH,
76
+ scanJson,
77
+ scanDirs,
78
+ readJson,
79
+ getSessionFileById,
80
+ getOpenCodeAuth,
81
+ saveOpenCodeAuth
82
+ };
@@ -0,0 +1,86 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ getCacheFile,
4
+ loadCache,
5
+ saveCache
6
+ } from "./chunk-QD4T255Z.mjs";
7
+ import {
8
+ buildChecksum,
9
+ getAllFiles
10
+ } from "./chunk-MCCMMZSM.mjs";
11
+ import {
12
+ init_esm_shims
13
+ } from "./chunk-QQ4A6DLD.mjs";
14
+
15
+ // src/run-by-checksum/run.js
16
+ init_esm_shims();
17
+ import { spawn } from "child_process";
18
+ async function runChecksum({
19
+ patterns = [],
20
+ ignore = [],
21
+ exec,
22
+ cwd = process.env.INIT_CWD || process.cwd(),
23
+ dryRun = false
24
+ }) {
25
+ if (!patterns.length && !exec) {
26
+ console.log("No patterns or command provided, skipping checksum runner.");
27
+ process.exit(1);
28
+ }
29
+ if (!exec) {
30
+ console.log("No command provided, skipping checksum runner.");
31
+ process.exit(1);
32
+ }
33
+ if (!patterns.length) {
34
+ console.log("No patterns provided, skipping checksum runner.");
35
+ process.exit(1);
36
+ }
37
+ const files = getAllFiles({ patterns, ignore, cwd });
38
+ const checksum = buildChecksum(files);
39
+ const cacheFile = getCacheFile({ patterns, ignore, cwd });
40
+ const cache = loadCache(cacheFile);
41
+ if ((cache == null ? void 0 : cache.checksum) === checksum) {
42
+ return {
43
+ changed: false,
44
+ cacheFile,
45
+ files
46
+ };
47
+ }
48
+ if (dryRun) {
49
+ return {
50
+ changed: true,
51
+ cacheFile,
52
+ files,
53
+ skipped: true
54
+ };
55
+ }
56
+ await runCommand(exec, cwd);
57
+ saveCache(cacheFile, {
58
+ checksum,
59
+ files,
60
+ patterns,
61
+ ignore,
62
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
63
+ });
64
+ return {
65
+ changed: true,
66
+ cacheFile,
67
+ files
68
+ };
69
+ }
70
+ function runCommand(command, cwd) {
71
+ return new Promise((resolve, reject) => {
72
+ const child = spawn(command, {
73
+ shell: true,
74
+ stdio: "inherit",
75
+ cwd
76
+ });
77
+ child.on("exit", (code) => {
78
+ if (code === 0 || code === null) resolve();
79
+ else reject(new Error(`Command failed: ${code}`));
80
+ });
81
+ });
82
+ }
83
+
84
+ export {
85
+ runChecksum
86
+ };
@@ -0,0 +1,65 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ checkOpenCodeApi
4
+ } from "./chunk-QZMGBDSA.mjs";
5
+ import {
6
+ getOpenCodeAuth,
7
+ readJson,
8
+ saveOpenCodeAuth
9
+ } from "./chunk-XW5NZAKI.mjs";
10
+ import {
11
+ init_esm_shims
12
+ } from "./chunk-QQ4A6DLD.mjs";
13
+
14
+ // src/opencode/cli/auth-rotate.ts
15
+ init_esm_shims();
16
+ import path from "upath";
17
+ async function handleAuthRotate() {
18
+ let keysFile = path.join(process.cwd(), ".opencode.keys.jsonc");
19
+ let keys = await readJson(keysFile);
20
+ if (!keys) {
21
+ keysFile = path.join(process.cwd(), ".opencode.keys.json");
22
+ keys = await readJson(keysFile);
23
+ }
24
+ if (!keys || !Array.isArray(keys) || keys.length === 0) {
25
+ console.error("No valid .opencode.keys.json or .opencode.keys.jsonc found in current directory");
26
+ process.exit(1);
27
+ }
28
+ const auth = await getOpenCodeAuth();
29
+ if (!auth) {
30
+ console.error("No auth file found. Run configure first.");
31
+ process.exit(1);
32
+ }
33
+ const currentKey = auth.opencode.key;
34
+ const candidates = keys.filter((k) => k.key !== currentKey);
35
+ if (candidates.length === 0) {
36
+ console.error("No other keys available to rotate to");
37
+ process.exit(1);
38
+ }
39
+ for (let i = candidates.length - 1; i > 0; i--) {
40
+ const j = Math.floor(Math.random() * (i + 1));
41
+ [candidates[i], candidates[j]] = [candidates[j], candidates[i]];
42
+ }
43
+ let chosen = null;
44
+ for (const candidate of candidates) {
45
+ try {
46
+ const ok = await checkOpenCodeApi("Hello", candidate.key);
47
+ if (ok) {
48
+ chosen = candidate;
49
+ break;
50
+ }
51
+ } catch {
52
+ }
53
+ }
54
+ if (!chosen) {
55
+ console.error("No working key found among available keys");
56
+ process.exit(1);
57
+ }
58
+ auth.opencode.key = chosen.key;
59
+ await saveOpenCodeAuth(auth);
60
+ console.log(`Rotated OpenCode API key to: ${chosen.name}`);
61
+ }
62
+
63
+ export {
64
+ handleAuthRotate
65
+ };
@@ -0,0 +1,46 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ loadSessions
4
+ } from "./chunk-LACQTD5V.mjs";
5
+ import {
6
+ init_esm_shims
7
+ } from "./chunk-QQ4A6DLD.mjs";
8
+
9
+ // src/opencode/cli/list-sessions.ts
10
+ init_esm_shims();
11
+ import moment from "moment";
12
+ async function handleListSessions() {
13
+ const sessions = await loadSessions();
14
+ const grouped = /* @__PURE__ */ new Map();
15
+ for (const s of sessions) {
16
+ const dir = s.directory || "(no directory)";
17
+ if (!grouped.has(dir)) grouped.set(dir, []);
18
+ grouped.get(dir).push(s);
19
+ }
20
+ console.log(`Sessions (${sessions.length} total, ${grouped.size} directories):
21
+ `);
22
+ for (const [dir, dirSessions] of grouped) {
23
+ console.log(` ${dir}`);
24
+ const slugWidth = Math.max(...dirSessions.map((s) => s.slug.length), 4);
25
+ const titleWidth = Math.max(...dirSessions.map((s) => (s.title || "-").length), 5);
26
+ const dateWidth = Math.max(
27
+ ...dirSessions.map((s) => moment(s.time.created).format("YYYY-MM-DDTHH:mm:ssZ").length),
28
+ 25
29
+ );
30
+ const sep = "\u2500".repeat(Math.max(dir.length, slugWidth + titleWidth + dateWidth + 15));
31
+ console.log(` ${sep}`);
32
+ console.log(` ${"Slug".padEnd(slugWidth)} ${"Title".padEnd(titleWidth)} ${"Date".padEnd(dateWidth)} Version`);
33
+ const rowSep = "\u2500".repeat(slugWidth + titleWidth + dateWidth + 17);
34
+ console.log(` ${rowSep}`);
35
+ for (const s of dirSessions) {
36
+ console.log(
37
+ ` ${s.slug.padEnd(slugWidth)} ${(s.title || "-").padEnd(titleWidth)} ${moment(s.time.created).format("YYYY-MM-DDTHH:mm:ssZ").padEnd(dateWidth)} ${s.version}`
38
+ );
39
+ }
40
+ console.log();
41
+ }
42
+ }
43
+
44
+ export {
45
+ handleListSessions
46
+ };
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import {
3
- commandConvert
4
- } from "../chunk-OBXLTXFJ.mjs";
5
2
  import {
6
3
  varValueConvert
7
4
  } from "../chunk-6C7KTYGZ.mjs";
5
+ import {
6
+ commandConvert
7
+ } from "../chunk-OBXLTXFJ.mjs";
8
8
  import "../chunk-QII2EKCS.mjs";
9
9
  import {
10
10
  init_esm_shims
@@ -180,7 +180,7 @@ var require_utils = __commonJS({
180
180
  }
181
181
  });
182
182
 
183
- // src/del-gradle.js
183
+ // src/del-gradle.cjs
184
184
  init_cjs_shims();
185
185
  var glob = require("glob");
186
186
  var path = require("upath");
@@ -3,24 +3,30 @@ import {
3
3
  require_utils
4
4
  } from "./chunk-6RK5UCTP.mjs";
5
5
  import {
6
+ __commonJS,
6
7
  __require,
7
8
  init_esm_shims
8
9
  } from "./chunk-QQ4A6DLD.mjs";
9
10
 
10
- // src/del-gradle.js
11
- init_esm_shims();
12
- var glob = __require("glob");
13
- var path = __require("upath");
14
- var { del } = require_utils();
15
- var globStream = new glob.Glob(["**/build.gradle"], {
16
- withFileTypes: false,
17
- cwd: process.cwd(),
18
- ignore: ["**/node_modules/**", "**/vendor/**"]
19
- });
20
- globStream.stream().on("data", (result) => {
21
- const fullPath = path.resolve(process.cwd(), result);
22
- const base = path.dirname(fullPath);
23
- const buildFolder = path.join(base, "build");
24
- console.log("delete build folder", buildFolder);
25
- del(buildFolder);
11
+ // src/del-gradle.cjs
12
+ var require_del_gradle = __commonJS({
13
+ "src/del-gradle.cjs"() {
14
+ init_esm_shims();
15
+ var glob = __require("glob");
16
+ var path = __require("upath");
17
+ var { del } = require_utils();
18
+ var globStream = new glob.Glob(["**/build.gradle"], {
19
+ withFileTypes: false,
20
+ cwd: process.cwd(),
21
+ ignore: ["**/node_modules/**", "**/vendor/**"]
22
+ });
23
+ globStream.stream().on("data", (result) => {
24
+ const fullPath = path.resolve(process.cwd(), result);
25
+ const base = path.dirname(fullPath);
26
+ const buildFolder = path.join(base, "build");
27
+ console.log("delete build folder", buildFolder);
28
+ del(buildFolder);
29
+ });
30
+ }
26
31
  });
32
+ export default require_del_gradle();
@@ -180,7 +180,7 @@ var require_utils = __commonJS({
180
180
  }
181
181
  });
182
182
 
183
- // src/del-node-modules.js
183
+ // src/del-node-modules.cjs
184
184
  init_cjs_shims();
185
185
  var fs = require("fs");
186
186
  var fsp = fs.promises;