renovate-log-parser 0.1.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 (325) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +402 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +30 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/analyze.d.ts +24 -0
  7. package/dist/commands/analyze.js +114 -0
  8. package/dist/commands/analyze.js.map +1 -0
  9. package/dist/commands/detect-errors.d.ts +17 -0
  10. package/dist/commands/detect-errors.js +119 -0
  11. package/dist/commands/detect-errors.js.map +1 -0
  12. package/dist/commands/install-analyze-skill.d.ts +27 -0
  13. package/dist/commands/install-analyze-skill.js +181 -0
  14. package/dist/commands/install-analyze-skill.js.map +1 -0
  15. package/dist/commands/web.d.ts +12 -0
  16. package/dist/commands/web.js +103 -0
  17. package/dist/commands/web.js.map +1 -0
  18. package/dist/core/analyzer.d.ts +89 -0
  19. package/dist/core/analyzer.js +179 -0
  20. package/dist/core/analyzer.js.map +1 -0
  21. package/dist/core/error-detector.d.ts +56 -0
  22. package/dist/core/error-detector.js +236 -0
  23. package/dist/core/error-detector.js.map +1 -0
  24. package/dist/core/filters.d.ts +136 -0
  25. package/dist/core/filters.js +95 -0
  26. package/dist/core/filters.js.map +1 -0
  27. package/dist/core/ignore-file.d.ts +52 -0
  28. package/dist/core/ignore-file.js +104 -0
  29. package/dist/core/ignore-file.js.map +1 -0
  30. package/dist/core/levels.d.ts +33 -0
  31. package/dist/core/levels.js +35 -0
  32. package/dist/core/levels.js.map +1 -0
  33. package/dist/core/parser.d.ts +57 -0
  34. package/dist/core/parser.js +201 -0
  35. package/dist/core/parser.js.map +1 -0
  36. package/dist/core/query-builder.d.ts +47 -0
  37. package/dist/core/query-builder.js +155 -0
  38. package/dist/core/query-builder.js.map +1 -0
  39. package/dist/core/skill-template.d.ts +34 -0
  40. package/dist/core/skill-template.js +259 -0
  41. package/dist/core/skill-template.js.map +1 -0
  42. package/package.json +68 -0
  43. package/web/.output/nitro.json +15 -0
  44. package/web/.output/public/_fonts/57NSSoFy1VLVs2gqly8Ls9awBnZMFyXGrefpmqvdqmc-zJfbBtpgM4cDmcXBsqZNW79_kFnlpPd62b48glgdydA.woff2 +0 -0
  45. package/web/.output/public/_fonts/8VR2wSMN-3U4NbWAVYXlkRV6hA0jFBXP-0RtL3X7fko-x2gYI4qfmkRdxyQQUPaBZdZdgl1TeVrquF_TxHeM4lM.woff2 +0 -0
  46. package/web/.output/public/_fonts/GsKUclqeNLJ96g5AU593ug6yanivOiwjW_7zESNPChw-jHA4tBeM1bjF7LATGUpfBuSTyomIFrWBTzjF7txVYfg.woff2 +0 -0
  47. package/web/.output/public/_fonts/Ld1FnTo3yTIwDyGfTQ5-Fws9AWsCbKfMvgxduXr7JcY-W25bL8NF1fjpLRSOgJb7RoZPHqGQNwMTM7S9tHVoxx8.woff2 +0 -0
  48. package/web/.output/public/_fonts/NdzqRASp2bovDUhQT1IRE_EMqKJ2KYQdTCfFcBvL8yw-KhwZiS86o3fErOe5GGMExHUemmI_dBfaEFxjISZrBd0.woff2 +0 -0
  49. package/web/.output/public/_fonts/iTkrULNFJJkTvihIg1Vqi5IODRH_9btXCioVF5l98I8-AndUyau2HR2felA_ra8V2mutQgschhasE5FD1dXGJX8.woff2 +0 -0
  50. package/web/.output/public/_nuxt/BWja8e3M.js +37 -0
  51. package/web/.output/public/_nuxt/BgApMHS1.js +1 -0
  52. package/web/.output/public/_nuxt/CGPWRqbc.js +1 -0
  53. package/web/.output/public/_nuxt/DlAUqK2U.js +1 -0
  54. package/web/.output/public/_nuxt/Sgtec1U0.js +1 -0
  55. package/web/.output/public/_nuxt/builds/latest.json +1 -0
  56. package/web/.output/public/_nuxt/builds/meta/c4723e49-0623-47af-ae79-9ab6428bdcc1.json +1 -0
  57. package/web/.output/public/_nuxt/entry.9mB-pyEY.css +1 -0
  58. package/web/.output/public/_nuxt/error-404.B_PvSG-P.css +1 -0
  59. package/web/.output/public/_nuxt/error-500.CghkKCEr.css +1 -0
  60. package/web/.output/public/_nuxt/index.BlvAG7F6.css +1 -0
  61. package/web/.output/public/favicon.ico +0 -0
  62. package/web/.output/server/chunks/_/error-500.mjs +19 -0
  63. package/web/.output/server/chunks/_/error-500.mjs.map +1 -0
  64. package/web/.output/server/chunks/_/icons.mjs +6153 -0
  65. package/web/.output/server/chunks/_/icons.mjs.map +1 -0
  66. package/web/.output/server/chunks/_/icons2.mjs +11494 -0
  67. package/web/.output/server/chunks/_/icons2.mjs.map +1 -0
  68. package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs +10 -0
  69. package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs.map +1 -0
  70. package/web/.output/server/chunks/build/client.precomputed.mjs +4 -0
  71. package/web/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
  72. package/web/.output/server/chunks/build/error-404-DyaaQUIS.mjs +106 -0
  73. package/web/.output/server/chunks/build/error-404-DyaaQUIS.mjs.map +1 -0
  74. package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs +8 -0
  75. package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs.map +1 -0
  76. package/web/.output/server/chunks/build/error-500-CVSP-p02.mjs +89 -0
  77. package/web/.output/server/chunks/build/error-500-CVSP-p02.mjs.map +1 -0
  78. package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs +8 -0
  79. package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs.map +1 -0
  80. package/web/.output/server/chunks/build/index-88dXYOxO.mjs +19675 -0
  81. package/web/.output/server/chunks/build/index-88dXYOxO.mjs.map +1 -0
  82. package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs +8 -0
  83. package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs.map +1 -0
  84. package/web/.output/server/chunks/build/server.mjs +7910 -0
  85. package/web/.output/server/chunks/build/server.mjs.map +1 -0
  86. package/web/.output/server/chunks/build/styles.mjs +10 -0
  87. package/web/.output/server/chunks/build/styles.mjs.map +1 -0
  88. package/web/.output/server/chunks/nitro/nitro.mjs +6944 -0
  89. package/web/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  90. package/web/.output/server/chunks/routes/api/fields.get.mjs +27 -0
  91. package/web/.output/server/chunks/routes/api/fields.get.mjs.map +1 -0
  92. package/web/.output/server/chunks/routes/api/findings.get.mjs +30 -0
  93. package/web/.output/server/chunks/routes/api/findings.get.mjs.map +1 -0
  94. package/web/.output/server/chunks/routes/api/log/contents.post.mjs +29 -0
  95. package/web/.output/server/chunks/routes/api/log/contents.post.mjs.map +1 -0
  96. package/web/.output/server/chunks/routes/api/log/path.post.mjs +30 -0
  97. package/web/.output/server/chunks/routes/api/log/path.post.mjs.map +1 -0
  98. package/web/.output/server/chunks/routes/api/repositories.get.mjs +27 -0
  99. package/web/.output/server/chunks/routes/api/repositories.get.mjs.map +1 -0
  100. package/web/.output/server/chunks/routes/api/rows.get.mjs +48 -0
  101. package/web/.output/server/chunks/routes/api/rows.get.mjs.map +1 -0
  102. package/web/.output/server/chunks/routes/renderer.mjs +451 -0
  103. package/web/.output/server/chunks/routes/renderer.mjs.map +1 -0
  104. package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  105. package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  106. package/web/.output/server/index.mjs +16 -0
  107. package/web/.output/server/index.mjs.map +1 -0
  108. package/web/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.mjs +290 -0
  109. package/web/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +49 -0
  110. package/web/.output/server/node_modules/.nitro/hookable@6.1.1/dist/index.mjs +257 -0
  111. package/web/.output/server/node_modules/.nitro/hookable@6.1.1/package.json +53 -0
  112. package/web/.output/server/node_modules/@babel/parser/lib/index.js +14599 -0
  113. package/web/.output/server/node_modules/@babel/parser/package.json +50 -0
  114. package/web/.output/server/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +1038 -0
  115. package/web/.output/server/node_modules/@floating-ui/core/package.json +63 -0
  116. package/web/.output/server/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +789 -0
  117. package/web/.output/server/node_modules/@floating-ui/dom/package.json +72 -0
  118. package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +165 -0
  119. package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +136 -0
  120. package/web/.output/server/node_modules/@floating-ui/utils/package.json +70 -0
  121. package/web/.output/server/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs +190 -0
  122. package/web/.output/server/node_modules/@floating-ui/vue/package.json +71 -0
  123. package/web/.output/server/node_modules/@iconify/utils/lib/colors/index.js +295 -0
  124. package/web/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +701 -0
  125. package/web/.output/server/node_modules/@iconify/utils/lib/css/common.js +75 -0
  126. package/web/.output/server/node_modules/@iconify/utils/lib/css/format.js +39 -0
  127. package/web/.output/server/node_modules/@iconify/utils/lib/css/icon.js +47 -0
  128. package/web/.output/server/node_modules/@iconify/utils/lib/css/icons.js +128 -0
  129. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +19 -0
  130. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +13 -0
  131. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +17 -0
  132. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +16 -0
  133. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +30 -0
  134. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +78 -0
  135. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +100 -0
  136. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +28 -0
  137. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +58 -0
  138. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +48 -0
  139. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +203 -0
  140. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +33 -0
  141. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +132 -0
  142. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +165 -0
  143. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +79 -0
  144. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +92 -0
  145. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +26 -0
  146. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +76 -0
  147. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +66 -0
  148. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +45 -0
  149. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +103 -0
  150. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +36 -0
  151. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +92 -0
  152. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +62 -0
  153. package/web/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +25 -0
  154. package/web/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +16 -0
  155. package/web/.output/server/node_modules/@iconify/utils/lib/icon/name.js +57 -0
  156. package/web/.output/server/node_modules/@iconify/utils/lib/icon/square.js +33 -0
  157. package/web/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +12 -0
  158. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +125 -0
  159. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +19 -0
  160. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +25 -0
  161. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +36 -0
  162. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +91 -0
  163. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +46 -0
  164. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +23 -0
  165. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +42 -0
  166. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +123 -0
  167. package/web/.output/server/node_modules/@iconify/utils/lib/index.js +52 -0
  168. package/web/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +30 -0
  169. package/web/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +26 -0
  170. package/web/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +27 -0
  171. package/web/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +105 -0
  172. package/web/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +26 -0
  173. package/web/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +26 -0
  174. package/web/.output/server/node_modules/@iconify/utils/lib/misc/title.js +9 -0
  175. package/web/.output/server/node_modules/@iconify/utils/lib/svg/build.js +113 -0
  176. package/web/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +31 -0
  177. package/web/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +13 -0
  178. package/web/.output/server/node_modules/@iconify/utils/lib/svg/html.js +9 -0
  179. package/web/.output/server/node_modules/@iconify/utils/lib/svg/id.js +41 -0
  180. package/web/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +22 -0
  181. package/web/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +67 -0
  182. package/web/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +54 -0
  183. package/web/.output/server/node_modules/@iconify/utils/lib/svg/size.js +27 -0
  184. package/web/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +7 -0
  185. package/web/.output/server/node_modules/@iconify/utils/lib/svg/url.js +22 -0
  186. package/web/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +8 -0
  187. package/web/.output/server/node_modules/@iconify/utils/package.json +119 -0
  188. package/web/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +1896 -0
  189. package/web/.output/server/node_modules/@iconify/vue/package.json +62 -0
  190. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +1268 -0
  191. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
  192. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
  193. package/web/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
  194. package/web/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
  195. package/web/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
  196. package/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6759 -0
  197. package/web/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  198. package/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  199. package/web/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  200. package/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  201. package/web/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  202. package/web/.output/server/node_modules/@vue/devtools-api/dist/index.js +2 -0
  203. package/web/.output/server/node_modules/@vue/devtools-api/package.json +34 -0
  204. package/web/.output/server/node_modules/@vue/devtools-kit/dist/index.js +5670 -0
  205. package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/dist/index.mjs +290 -0
  206. package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/package.json +49 -0
  207. package/web/.output/server/node_modules/@vue/devtools-kit/package.json +44 -0
  208. package/web/.output/server/node_modules/@vue/devtools-shared/dist/index.js +239 -0
  209. package/web/.output/server/node_modules/@vue/devtools-shared/package.json +33 -0
  210. package/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1899 -0
  211. package/web/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  212. package/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6940 -0
  213. package/web/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  214. package/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1822 -0
  215. package/web/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  216. package/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +896 -0
  217. package/web/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
  218. package/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
  219. package/web/.output/server/node_modules/@vue/shared/package.json +47 -0
  220. package/web/.output/server/node_modules/@vueuse/core/dist/index.js +8464 -0
  221. package/web/.output/server/node_modules/@vueuse/core/package.json +49 -0
  222. package/web/.output/server/node_modules/@vueuse/shared/dist/index.js +2013 -0
  223. package/web/.output/server/node_modules/@vueuse/shared/package.json +42 -0
  224. package/web/.output/server/node_modules/aria-hidden/dist/es5/index.js +174 -0
  225. package/web/.output/server/node_modules/aria-hidden/package.json +71 -0
  226. package/web/.output/server/node_modules/birpc/dist/index.mjs +291 -0
  227. package/web/.output/server/node_modules/birpc/package.json +57 -0
  228. package/web/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  229. package/web/.output/server/node_modules/consola/dist/core.mjs +512 -0
  230. package/web/.output/server/node_modules/consola/dist/index.mjs +651 -0
  231. package/web/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  232. package/web/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  233. package/web/.output/server/node_modules/consola/package.json +136 -0
  234. package/web/.output/server/node_modules/devalue/index.js +4 -0
  235. package/web/.output/server/node_modules/devalue/package.json +40 -0
  236. package/web/.output/server/node_modules/devalue/src/base64.js +60 -0
  237. package/web/.output/server/node_modules/devalue/src/constants.js +12 -0
  238. package/web/.output/server/node_modules/devalue/src/parse.js +283 -0
  239. package/web/.output/server/node_modules/devalue/src/stringify.js +401 -0
  240. package/web/.output/server/node_modules/devalue/src/uneval.js +552 -0
  241. package/web/.output/server/node_modules/devalue/src/utils.js +160 -0
  242. package/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  243. package/web/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  244. package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  245. package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  246. package/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  247. package/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  248. package/web/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  249. package/web/.output/server/node_modules/entities/package.json +120 -0
  250. package/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  251. package/web/.output/server/node_modules/estree-walker/package.json +37 -0
  252. package/web/.output/server/node_modules/hookable/dist/index.mjs +257 -0
  253. package/web/.output/server/node_modules/hookable/package.json +53 -0
  254. package/web/.output/server/node_modules/nostics/dist/index.mjs +179 -0
  255. package/web/.output/server/node_modules/nostics/package.json +124 -0
  256. package/web/.output/server/node_modules/perfect-debounce/dist/index.mjs +89 -0
  257. package/web/.output/server/node_modules/perfect-debounce/package.json +41 -0
  258. package/web/.output/server/node_modules/rou3/dist/index.mjs +501 -0
  259. package/web/.output/server/node_modules/rou3/package.json +48 -0
  260. package/web/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  261. package/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  262. package/web/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  263. package/web/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  264. package/web/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  265. package/web/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  266. package/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  267. package/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  268. package/web/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  269. package/web/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  270. package/web/.output/server/node_modules/source-map-js/package.json +71 -0
  271. package/web/.output/server/node_modules/source-map-js/source-map.js +8 -0
  272. package/web/.output/server/node_modules/srvx/dist/_chunks/_body-limit.mjs +39 -0
  273. package/web/.output/server/node_modules/srvx/dist/_chunks/_plugins.mjs +56 -0
  274. package/web/.output/server/node_modules/srvx/dist/_chunks/_trust-proxy.mjs +58 -0
  275. package/web/.output/server/node_modules/srvx/dist/_chunks/_url.mjs +134 -0
  276. package/web/.output/server/node_modules/srvx/dist/_chunks/_utils.mjs +15 -0
  277. package/web/.output/server/node_modules/srvx/dist/_chunks/_utils2.mjs +75 -0
  278. package/web/.output/server/node_modules/srvx/dist/adapters/node.mjs +976 -0
  279. package/web/.output/server/node_modules/srvx/package.json +102 -0
  280. package/web/.output/server/node_modules/tailwind-merge/dist/bundle-mjs.mjs +3365 -0
  281. package/web/.output/server/node_modules/tailwind-merge/package.json +93 -0
  282. package/web/.output/server/node_modules/tailwind-variants/dist/chunk-LQJYWU4O.js +112 -0
  283. package/web/.output/server/node_modules/tailwind-variants/dist/chunk-RZF76H2U.js +269 -0
  284. package/web/.output/server/node_modules/tailwind-variants/dist/index.js +38 -0
  285. package/web/.output/server/node_modules/tailwind-variants/package.json +122 -0
  286. package/web/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
  287. package/web/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
  288. package/web/.output/server/node_modules/tailwindcss/package.json +89 -0
  289. package/web/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  290. package/web/.output/server/node_modules/ufo/package.json +48 -0
  291. package/web/.output/server/node_modules/unhead/dist/index.mjs +9 -0
  292. package/web/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
  293. package/web/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
  294. package/web/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
  295. package/web/.output/server/node_modules/unhead/dist/server.mjs +180 -0
  296. package/web/.output/server/node_modules/unhead/dist/shared/unhead.B3VbJo7Y.mjs +207 -0
  297. package/web/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  298. package/web/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +269 -0
  299. package/web/.output/server/node_modules/unhead/dist/shared/unhead.CaI5ZD4O.mjs +182 -0
  300. package/web/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
  301. package/web/.output/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +236 -0
  302. package/web/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  303. package/web/.output/server/node_modules/unhead/dist/shared/unhead.Dh1cQCTe.mjs +44 -0
  304. package/web/.output/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +166 -0
  305. package/web/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  306. package/web/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
  307. package/web/.output/server/node_modules/unhead/node_modules/hookable/dist/index.mjs +257 -0
  308. package/web/.output/server/node_modules/unhead/node_modules/hookable/package.json +53 -0
  309. package/web/.output/server/node_modules/unhead/package.json +105 -0
  310. package/web/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  311. package/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  312. package/web/.output/server/node_modules/vue/index.js +7 -0
  313. package/web/.output/server/node_modules/vue/index.mjs +1 -0
  314. package/web/.output/server/node_modules/vue/package.json +112 -0
  315. package/web/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  316. package/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +249 -0
  317. package/web/.output/server/node_modules/vue-bundle-renderer/package.json +57 -0
  318. package/web/.output/server/node_modules/vue-demi/lib/index.mjs +34 -0
  319. package/web/.output/server/node_modules/vue-demi/package.json +47 -0
  320. package/web/.output/server/node_modules/vue-router/dist/devtools-Bpr7ZAVB.js +1056 -0
  321. package/web/.output/server/node_modules/vue-router/dist/useApi-CROJJdhE.js +436 -0
  322. package/web/.output/server/node_modules/vue-router/dist/vue-router.js +1543 -0
  323. package/web/.output/server/node_modules/vue-router/package.json +214 -0
  324. package/web/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
  325. package/web/.output/server/package.json +51 -0
@@ -0,0 +1,155 @@
1
+ /**
2
+ * QueryBuilder — translates the shared {@link Filter} model into a single
3
+ * parameterized SQL SELECT against the parser's `logs` table.
4
+ *
5
+ * All filters are AND'd. WHERE
6
+ * fragments reuse the exact `json_extract(...)` expressions that the parser
7
+ * indexes, so the query planner can use those expression indices.
8
+ *
9
+ * The builder never interpolates user values into SQL text; every value is a
10
+ * bound parameter. Wildcard (`like`) filters compare a single field with a
11
+ * case-insensitive SQLite `LIKE ... ESCAPE`; the `*`-to-`%` translation
12
+ * and escaping happen in {@link globStarToLike}.
13
+ */
14
+ import { extractExpr, globStarToLike, } from "./filters.js";
15
+ const TABLE = "logs";
16
+ const COLUMN = "logentry";
17
+ const LEVEL_EXPR = extractExpr("level", COLUMN);
18
+ /** Convert a scalar filter value to a bound SQL parameter. */
19
+ function scalarParam(value) {
20
+ if (typeof value === "boolean")
21
+ return value ? 1 : 0;
22
+ return value;
23
+ }
24
+ /** Build the WHERE fragment + params for a single filter. */
25
+ function buildFilter(filter) {
26
+ switch (filter.type) {
27
+ case "equals": {
28
+ const expr = extractExpr(filter.field, COLUMN);
29
+ const param = scalarParam(filter.value);
30
+ // Negation is null-safe: entries missing the field are kept when hiding a
31
+ // specific value (they clearly are not that value).
32
+ const sql = filter.negate
33
+ ? `(${expr} IS NULL OR ${expr} <> ?)`
34
+ : `${expr} = ?`;
35
+ return { sql, params: [param] };
36
+ }
37
+ case "presence": {
38
+ const expr = extractExpr(filter.field, COLUMN);
39
+ const sql = filter.negate ? `${expr} IS NULL` : `${expr} IS NOT NULL`;
40
+ return { sql, params: [] };
41
+ }
42
+ case "levelIn": {
43
+ if (filter.levels.length === 0) {
44
+ // An empty set matches nothing (or, negated, everything).
45
+ return { sql: filter.negate ? "1=1" : "1=0", params: [] };
46
+ }
47
+ const placeholders = filter.levels.map(() => "?").join(", ");
48
+ const params = filter.levels.map((l) => l);
49
+ const sql = filter.negate
50
+ ? `(${LEVEL_EXPR} IS NULL OR ${LEVEL_EXPR} NOT IN (${placeholders}))`
51
+ : `${LEVEL_EXPR} IN (${placeholders})`;
52
+ return { sql, params };
53
+ }
54
+ case "inSet": {
55
+ const expr = extractExpr(filter.field, COLUMN);
56
+ if (filter.values.length === 0) {
57
+ // No values: with includeNull it reduces to a presence check; without,
58
+ // it matches nothing (or, negated, everything). Kept null-safe.
59
+ if (filter.includeNull) {
60
+ const sql = filter.negate ? `${expr} IS NOT NULL` : `${expr} IS NULL`;
61
+ return { sql, params: [] };
62
+ }
63
+ return { sql: filter.negate ? "1=1" : "1=0", params: [] };
64
+ }
65
+ const placeholders = filter.values.map(() => "?").join(", ");
66
+ const params = filter.values.map(scalarParam);
67
+ let sql;
68
+ if (filter.negate) {
69
+ // Negation is null-safe. With includeNull the positive match also
70
+ // covered nulls, so the negation must exclude them; otherwise nulls are
71
+ // kept (they clearly are not in the value set).
72
+ sql = filter.includeNull
73
+ ? `(${expr} IS NOT NULL AND ${expr} NOT IN (${placeholders}))`
74
+ : `(${expr} IS NULL OR ${expr} NOT IN (${placeholders}))`;
75
+ }
76
+ else {
77
+ sql = filter.includeNull
78
+ ? `(${expr} IN (${placeholders}) OR ${expr} IS NULL)`
79
+ : `${expr} IN (${placeholders})`;
80
+ }
81
+ return { sql, params };
82
+ }
83
+ case "like": {
84
+ // Case-insensitive wildcard match on one field. CAST to TEXT so numeric/
85
+ // boolean fields are still comparable; `\` escapes LIKE metacharacters.
86
+ const expr = extractExpr(filter.field, COLUMN);
87
+ const text = `CAST(${expr} AS TEXT)`;
88
+ const param = globStarToLike(filter.pattern);
89
+ // Negation is null-safe: entries missing the field are kept when hiding a
90
+ // pattern (they clearly do not match it).
91
+ const sql = filter.negate
92
+ ? `(${expr} IS NULL OR ${text} NOT LIKE ? ESCAPE '\\')`
93
+ : `${text} LIKE ? ESCAPE '\\'`;
94
+ return { sql, params: [param] };
95
+ }
96
+ case "raw": {
97
+ // Case-insensitive wildcard match against the whole line (the `logentry`
98
+ // JSON text). `logentry` is NOT NULL so no null-safety is needed.
99
+ const param = globStarToLike(filter.pattern);
100
+ const sql = filter.negate
101
+ ? `${COLUMN} NOT LIKE ? ESCAPE '\\'`
102
+ : `${COLUMN} LIKE ? ESCAPE '\\'`;
103
+ return { sql, params: [param] };
104
+ }
105
+ }
106
+ }
107
+ /**
108
+ * Build a parameterized SELECT for the given filters and options.
109
+ *
110
+ * @param filters Row-matching filters, AND'd together.
111
+ * @param options Line range, ordering, and pagination.
112
+ * @param columns SELECT list. Defaults to `rowid, logentry`.
113
+ */
114
+ export function buildQuery(filters = [], options = {}, columns = `rowid, ${COLUMN}`) {
115
+ const clauses = [];
116
+ const params = [];
117
+ for (const filter of filters) {
118
+ const built = buildFilter(filter);
119
+ clauses.push(built.sql);
120
+ params.push(...built.params);
121
+ }
122
+ if (options.lineFrom !== undefined) {
123
+ clauses.push("rowid >= ?");
124
+ params.push(options.lineFrom);
125
+ }
126
+ if (options.lineTo !== undefined) {
127
+ clauses.push("rowid <= ?");
128
+ params.push(options.lineTo);
129
+ }
130
+ let sql = `SELECT ${columns} FROM ${TABLE}`;
131
+ if (clauses.length > 0) {
132
+ sql += ` WHERE ${clauses.join(" AND ")}`;
133
+ }
134
+ sql += ` ORDER BY rowid ${options.order === "desc" ? "DESC" : "ASC"}`;
135
+ if (options.limit !== undefined) {
136
+ sql += " LIMIT ?";
137
+ params.push(options.limit);
138
+ if (options.offset !== undefined) {
139
+ sql += " OFFSET ?";
140
+ params.push(options.offset);
141
+ }
142
+ }
143
+ return { sql, params };
144
+ }
145
+ /**
146
+ * Build a `SELECT COUNT(*)` for the given filters (ignores pagination/order),
147
+ * used by the web `total` count.
148
+ */
149
+ export function buildCountQuery(filters = [], options = {}) {
150
+ const built = buildQuery(filters, options, "COUNT(*) AS n");
151
+ // Strip the trailing ORDER BY (harmless but pointless for a count).
152
+ built.sql = built.sql.replace(/ ORDER BY rowid (ASC|DESC)$/, "");
153
+ return built;
154
+ }
155
+ //# sourceMappingURL=query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Skill-template builder — the single source of truth for the
3
+ * `renovate-log-analyzer` SKILL.md that the `install-analyze-skill` command
4
+ * writes into a project (or the user's home).
5
+ *
6
+ * {@link buildSkillMarkdown} is a pure, dependency-free function so it can be
7
+ * unit-tested in isolation and reused anywhere the skill text is needed. The
8
+ * optional GitHub (`gh`) fetch section is emitted only when {@link GhConfig} is
9
+ * provided; a base URL, when given, is threaded onto the `gh` commands as a
10
+ * `GH_HOST=<host>` prefix (the standard way to target a GitHub Enterprise host).
11
+ */
12
+ /** GitHub log-fetch configuration embedded into the skill's `gh` section. */
13
+ export interface GhConfig {
14
+ /** Optional GitHub (Enterprise) host, e.g. `github.example.com`. */
15
+ baseUrl?: string;
16
+ /** GitHub organization / owner that hosts the repository. */
17
+ org: string;
18
+ /** Repository name (without the owner). */
19
+ repo: string;
20
+ /** Filename of the workflow that runs Renovate, e.g. `renovate.yml`. */
21
+ workflow: string;
22
+ }
23
+ /** Options controlling the generated skill markdown. */
24
+ export interface SkillTemplateOptions {
25
+ /** When set, include the "Fetch logs from GitHub" section. */
26
+ gh?: GhConfig;
27
+ }
28
+ /**
29
+ * Build the full `renovate-log-analyzer` SKILL.md text.
30
+ *
31
+ * The output is deterministic for a given {@link SkillTemplateOptions}, ending
32
+ * with a single trailing newline.
33
+ */
34
+ export declare function buildSkillMarkdown(options?: SkillTemplateOptions): string;
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Skill-template builder — the single source of truth for the
3
+ * `renovate-log-analyzer` SKILL.md that the `install-analyze-skill` command
4
+ * writes into a project (or the user's home).
5
+ *
6
+ * {@link buildSkillMarkdown} is a pure, dependency-free function so it can be
7
+ * unit-tested in isolation and reused anywhere the skill text is needed. The
8
+ * optional GitHub (`gh`) fetch section is emitted only when {@link GhConfig} is
9
+ * provided; a base URL, when given, is threaded onto the `gh` commands as a
10
+ * `GH_HOST=<host>` prefix (the standard way to target a GitHub Enterprise host).
11
+ */
12
+ /** The skill's frontmatter description (kept in sync with its purpose). */
13
+ const DESCRIPTION = "Analyze Renovate Bot debug logs (JSONL, produced via the LOG_FILE env " +
14
+ "var) token-efficiently. Use when diagnosing why Renovate did or did not " +
15
+ "do something, investigating dependency-dashboard problems, or reading a " +
16
+ "large Renovate log without exhausting the context window.";
17
+ /**
18
+ * Build the full `renovate-log-analyzer` SKILL.md text.
19
+ *
20
+ * The output is deterministic for a given {@link SkillTemplateOptions}, ending
21
+ * with a single trailing newline.
22
+ */
23
+ export function buildSkillMarkdown(options = {}) {
24
+ const sections = [
25
+ frontmatter(),
26
+ heading(),
27
+ coreLoop(),
28
+ quickStart(),
29
+ logLevels(),
30
+ statsFields(),
31
+ zeroIndexNote(),
32
+ printMode(),
33
+ workflow(),
34
+ detectErrors(),
35
+ ];
36
+ if (options.gh)
37
+ sections.push(githubFetch(options.gh));
38
+ sections.push(tips());
39
+ return sections.join("\n").replace(/\n+$/, "") + "\n";
40
+ }
41
+ /** YAML frontmatter block. */
42
+ function frontmatter() {
43
+ return `---
44
+ name: renovate-log-analyzer
45
+ description: ${DESCRIPTION}
46
+ license: MIT
47
+ ---
48
+ `;
49
+ }
50
+ function heading() {
51
+ return `# Renovate log analyzer
52
+
53
+ You are analyzing a **Renovate Bot debug log**: a JSONL file (one JSON object
54
+ per line) produced by self-hosted Renovate when run with the \`LOG_FILE\`
55
+ environment variable set, or downloaded from the Mend hosted app. These logs are
56
+ large (thousands of mostly \`debug\`-level lines) and the useful signal is
57
+ usually buried in \`debug\` entries, not \`warn\`/\`error\` ones.
58
+
59
+ Never open the raw log file directly — it will blow your context window. Instead
60
+ use the \`renovate-log-parser analyze\` command, which gives you a compact map of
61
+ the log first, then lets you print only the exact line ranges you need.
62
+ `;
63
+ }
64
+ function coreLoop() {
65
+ return `## The core loop (do this every time)
66
+
67
+ 1. **Stats** — get the whole-log map (cheap, one small JSON object):
68
+ \`\`\`bash
69
+ npx --yes renovate-log-parser analyze <path-to-log.jsonl>
70
+ \`\`\`
71
+ 2. **Pick lines** — from the stats, choose the repository and the interesting
72
+ line range or key entries (\`branchesInformationLine\`, \`packageFilesLine\`,
73
+ the repo's \`fromLine\`..\`toLine\`, etc.).
74
+ 3. **Print** — read only that slice as JSONL, narrowed with filters:
75
+ \`\`\`bash
76
+ npx --yes renovate-log-parser analyze <path-to-log.jsonl> --print \\
77
+ --line-from <N> --line-to <M> --filter <key:value> --limit <K>
78
+ \`\`\`
79
+
80
+ Repeat 2–3, tightening the range and filters, until you've answered the
81
+ question. This keeps token use proportional to what you actually read, not to
82
+ the size of the log.
83
+ `;
84
+ }
85
+ function quickStart() {
86
+ return `## Quick start
87
+
88
+ \`\`\`bash
89
+ # Whole-log map: level counts + per-repository structure
90
+ npx --yes renovate-log-parser analyze renovate.jsonl
91
+
92
+ # Read a single key entry (e.g. the per-branch summary at line 1132)
93
+ npx --yes renovate-log-parser analyze renovate.jsonl --print \\
94
+ --line-from 1132 --line-to 1132 --limit 1
95
+
96
+ # Read one repo's range, keeping only npm-manager entries, first 20 matches
97
+ npx --yes renovate-log-parser analyze renovate.jsonl --print \\
98
+ --line-from 37 --line-to 1146 --filter manager:npm --limit 20
99
+
100
+ # Find every entry whose msg starts with "Found match" (case-insensitive)
101
+ npx --yes renovate-log-parser analyze renovate.jsonl --print \\
102
+ --filter-with-wildcard "msg:Found match*"
103
+ \`\`\`
104
+ `;
105
+ }
106
+ function logLevels() {
107
+ return `## Log levels (the numbers in \`level\` and \`levelCounts\`)
108
+
109
+ Renovate uses Bunyan numeric levels. The stats \`levelCounts\` map is keyed by
110
+ these numbers:
111
+
112
+ | \`level\` | Name | Notes |
113
+ | ------- | ----- | -------------------------------------------------- |
114
+ | \`10\` | trace | very verbose |
115
+ | \`20\` | debug | the bulk of the log — most diagnostic signal here |
116
+ | \`30\` | info | normal progress |
117
+ | \`40\` | warn | warnings (also surfaced in \`repoProblems\`) |
118
+ | \`50\` | error | errors |
119
+ | \`60\` | fatal | fatal errors |
120
+
121
+ Do not stop at \`warn\`/\`error\`. Renovate frequently records *why* it made a
122
+ decision only at \`debug\` (\`20\`). Filter to a level with \`--filter level:20\`
123
+ (the value is auto-typed to the number).
124
+ `;
125
+ }
126
+ function statsFields() {
127
+ return `## Reading the stats output
128
+
129
+ Stats mode prints one compact single-line JSON object:
130
+
131
+ - \`logFile\`, \`md5\`, \`totalLines\` — identity and size of the log.
132
+ - \`levelCounts\` — number of entries per numeric \`level\` (see the table above).
133
+ - \`repos\` — one object per repository Renovate processed, in order of first
134
+ appearance. Each has:
135
+
136
+ | Field | Meaning |
137
+ | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
138
+ | \`name\` | The \`repository\` value (\`owner/repo\`). |
139
+ | \`fromLine\` / \`toLine\` | First / last line for this repo — **0-indexed**. Feed straight into \`--line-from\`/\`--line-to\`. |
140
+ | \`branches\` | Unique \`renovate/*\` branch names seen for this repo. |
141
+ | \`branchesInformationLine\` | 0-indexed line of the \`branches info extended\` entry (or \`null\`). This **one** line summarizes every branch: PR number, PR title, \`result\` (e.g. \`pr-created\`), and \`upgrades\`. Read it first to see what Renovate actually did per branch. |
142
+ | \`packageFilesLine\` | 0-indexed line of the \`packageFiles with updates\` entry (or \`null\`). Carries the detected dependency/update inventory grouped by manager (npm, docker, nuget, github-actions, …). Read it to see what updates Renovate found. |
143
+ | \`repoProblems\` | The warning strings Renovate posts to the repo's **Dependency Dashboard** issue (e.g. ignored custom registries, unicode warnings). These are the subtle problems that often go unnoticed — inspect them. |
144
+ | \`depNames\` | Dependency names seen (root-level \`depName\` unioned with the \`packageFiles\` config). |
145
+ | \`packageNames\` | Package names seen (root-level \`packageName\` unioned with the \`packageFiles\` config). |
146
+
147
+ If \`branchesInformationLine\` or \`packageFilesLine\` is \`null\`, that entry was not
148
+ emitted for the repo (often a sign Renovate bailed early — check \`repoProblems\`
149
+ and the repo's line range for errors).
150
+ `;
151
+ }
152
+ function zeroIndexNote() {
153
+ return `## Line numbers are 0-indexed
154
+
155
+ Every line reference is **0-indexed** and they all agree with each other:
156
+ \`fromLine\`, \`toLine\`, \`branchesInformationLine\`, \`packageFilesLine\`, the
157
+ \`--line-from\` / \`--line-to\` bounds (both inclusive), and the \`_oL\` field added
158
+ by \`--include-original-line\`. So a \`branchesInformationLine\` of \`1132\` is read
159
+ with \`--line-from 1132 --line-to 1132\`.
160
+ `;
161
+ }
162
+ function printMode() {
163
+ return `## Print mode reference
164
+
165
+ \`--print\` streams matching entries as JSONL to stdout (one object per line).
166
+ Rows are selected in the order: **line range → filters → limit** (first N in
167
+ line order). A truncation notice (when \`--limit\` caps the result) is written to
168
+ **stderr**, so stdout stays a clean, pipeable JSONL stream.
169
+
170
+ | Option | Effect |
171
+ | -------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
172
+ | \`--line-from\` / \`--line-to\` | Inclusive 0-indexed line bounds. |
173
+ | \`--filter key:value\` | Exact match on a root-level key. Repeatable, AND'd. Value is **auto-typed**: \`level:30\` matches the number \`30\`, \`true\`/\`false\` become booleans; \`007\` / \`1.2.3\` stay strings. |
174
+ | \`--filter-with-wildcard key:pat\` | Case-insensitive wildcard match where \`*\` = any run of characters (only \`*\` is special). Anchored as written — use leading/trailing \`*\` for contains, e.g. \`msg:*lock file*\`. Repeatable, AND'd. |
175
+ | \`--limit N\` | Max lines to print (default \`50\`). |
176
+ | \`--ignored-fields csv\` | Root keys to strip from output (default \`v,time,logContext,pid,hostname,name\`; \`msg\` is never stripped). |
177
+ | \`--include-original-line\` | Add \`_oL\` (the 0-indexed source line) to each printed object — handy to pinpoint an entry for a follow-up query. |
178
+
179
+ Useful root keys to filter on: \`level\`, \`repository\`, \`branch\`, \`manager\`,
180
+ \`depName\`, \`packageName\`, \`msg\`, \`err\`.
181
+ `;
182
+ }
183
+ function workflow() {
184
+ return `## Suggested investigation workflow
185
+
186
+ 1. Run **stats**. Note \`totalLines\`, \`levelCounts\`, and each repo's range.
187
+ 2. For the repo in question, print its \`branchesInformationLine\` — this tells
188
+ you the outcome for every branch/PR in one line.
189
+ 3. Print its \`repoProblems\` context and any \`level:40\`/\`50\`/\`60\` lines within
190
+ the repo's range to catch surfaced issues.
191
+ 4. To understand a specific decision ("why no PR for X?"), filter within the
192
+ repo range by \`depName\`/\`packageName\` and read the surrounding \`debug\`
193
+ (\`level:20\`) lines — that is where Renovate explains itself.
194
+ 5. Use \`--include-original-line\` to get \`_oL\`, then zoom into a tiny
195
+ \`--line-from\`/\`--line-to\` window around it for full context.
196
+ `;
197
+ }
198
+ function detectErrors() {
199
+ return `## Tip: deterministic first pass
200
+
201
+ For a quick, deterministic scan of build-breaking problems and warnings before
202
+ manual analysis, run:
203
+
204
+ \`\`\`bash
205
+ npx --yes renovate-log-parser detect-errors <path-to-log.jsonl>
206
+ \`\`\`
207
+
208
+ It surfaces host-error aborts, config migrations, abandoned packages, \`err\`
209
+ objects, and \`repoProblems\` — a good starting list of what to investigate with
210
+ \`analyze\`.
211
+ `;
212
+ }
213
+ /**
214
+ * The optional GitHub-fetch section. When {@link GhConfig.baseUrl} is set, every
215
+ * `gh` command is prefixed with `GH_HOST=<host>` to target a GHES host.
216
+ */
217
+ function githubFetch(gh) {
218
+ const host = gh.baseUrl?.trim();
219
+ const prefix = host ? `GH_HOST=${host} ` : "";
220
+ const repoRef = `${gh.org}/${gh.repo}`;
221
+ const hostNote = host
222
+ ? `This repository is hosted on GitHub Enterprise at \`${host}\`, so every ` +
223
+ `\`gh\` command is prefixed with \`GH_HOST=${host}\` (ensure you have run ` +
224
+ `\`gh auth login --hostname ${host}\` once).`
225
+ : `Ensure you are authenticated with \`gh auth status\`.`;
226
+ return `## Fetch the log from GitHub (via \`gh\`)
227
+
228
+ The Renovate log for \`${repoRef}\` is produced by the \`${gh.workflow}\` GitHub
229
+ Actions workflow, which uploads it as a build artifact. ${hostNote}
230
+
231
+ 1. Find recent Renovate runs:
232
+ \`\`\`bash
233
+ ${prefix}gh run list --workflow ${gh.workflow} -R ${repoRef} --limit 10
234
+ \`\`\`
235
+ 2. Download the artifact(s) from the run you want (use the run ID from step 1):
236
+ \`\`\`bash
237
+ ${prefix}gh run download <run-id> -R ${repoRef} --dir ./renovate-log
238
+ \`\`\`
239
+ Omit \`-n <artifact-name>\` to download all artifacts; add it to fetch a
240
+ specific one if the run publishes several. List a run's artifacts with
241
+ \`${prefix}gh run view <run-id> -R ${repoRef}\`.
242
+ 3. Locate the JSONL log inside \`./renovate-log\` and analyze it with the core
243
+ loop above:
244
+ \`\`\`bash
245
+ npx --yes renovate-log-parser analyze ./renovate-log/<log-file>.jsonl
246
+ \`\`\`
247
+ `;
248
+ }
249
+ function tips() {
250
+ return `## Reminders
251
+
252
+ - Always start with stats; never \`cat\`/read the whole log.
253
+ - Most answers live in \`debug\` (\`level:20\`) lines — don't ignore them.
254
+ - All line numbers are 0-indexed and inclusive.
255
+ - Keep \`--limit\` small and widen only when needed; truncation is reported on
256
+ stderr.
257
+ `;
258
+ }
259
+ //# sourceMappingURL=skill-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../../src/core/skill-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoBH,2EAA2E;AAC3E,MAAM,WAAW,GACf,wEAAwE;IACxE,0EAA0E;IAC1E,0EAA0E;IAC1E,2DAA2D,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAgC,EAAE;IACnE,MAAM,QAAQ,GAAa;QACzB,WAAW,EAAE;QACb,OAAO,EAAE;QACT,QAAQ,EAAE;QACV,UAAU,EAAE;QACZ,SAAS,EAAE;QACX,WAAW,EAAE;QACb,aAAa,EAAE;QACf,SAAS,EAAE;QACX,QAAQ,EAAE;QACV,YAAY,EAAE;KACf,CAAC;IAEF,IAAI,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvD,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;AACxD,CAAC;AAED,8BAA8B;AAC9B,SAAS,WAAW;IAClB,OAAO;;eAEM,WAAW;;;CAGzB,CAAC;AACF,CAAC;AAED,SAAS,OAAO;IACd,OAAO;;;;;;;;;;;CAWR,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED,SAAS,SAAS;IAChB,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC;AACF,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;;;;;CAuBR,CAAC;AACF,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;;;;;;;CAOR,CAAC;AACF,CAAC;AAED,SAAS,SAAS;IAChB,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;;;;;;;CAYR,CAAC;AACF,CAAC;AAED,SAAS,YAAY;IACnB,OAAO;;;;;;;;;;;;CAYR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,EAAY;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI;QACnB,CAAC,CAAC,uDAAuD,IAAI,eAAe;YAC1E,6CAA6C,IAAI,0BAA0B;YAC3E,8BAA8B,IAAI,WAAW;QAC/C,CAAC,CAAC,uDAAuD,CAAC;IAE5D,OAAO;;yBAEgB,OAAO,2BAA2B,EAAE,CAAC,QAAQ;0DACZ,QAAQ;;;;KAI7D,MAAM,0BAA0B,EAAE,CAAC,QAAQ,OAAO,OAAO;;;;KAIzD,MAAM,+BAA+B,OAAO;;;;OAI1C,MAAM,2BAA2B,OAAO;;;;;;CAM9C,CAAC;AACF,CAAC;AAED,SAAS,IAAI;IACX,OAAO;;;;;;;CAOR,CAAC;AACF,CAAC"}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "renovate-log-parser",
3
+ "version": "0.1.0",
4
+ "description": "A CLI that parses Renovate Bot debug logs to auto-detect issues, with an optional Nuxt-based web UI.",
5
+ "type": "module",
6
+ "bin": {
7
+ "renovate-log-parser": "dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "web/.output"
12
+ ],
13
+ "engines": {
14
+ "node": ">=24"
15
+ },
16
+ "workspaces": [
17
+ "web"
18
+ ],
19
+ "scripts": {
20
+ "build": "npm run build:web && npm run build:cli",
21
+ "build:cli": "tsc -p tsconfig.build.json",
22
+ "build:web": "npm run build --workspace web && node scripts/deref-output-symlinks.mjs",
23
+ "dev:cli": "tsx src/cli.ts",
24
+ "dev:web": "npm run dev --workspace web",
25
+ "format": "prettier --write .",
26
+ "format:check": "prettier --check .",
27
+ "lint": "eslint . && npm run lint --workspace web",
28
+ "start": "node dist/cli.js",
29
+ "test": "node --import tsx --test --test-concurrency=1 \"src/**/*.test.ts\"",
30
+ "test:fixtures": "node --import tsx --test --test-concurrency=1 src/core/__tests__/fixtures.test.ts",
31
+ "test:e2e": "node --import tsx --test --test-concurrency=1 \"e2e/**/*.e2e.ts\"",
32
+ "prepublishOnly": "npm run build"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/MShekow/renovate-log-parser.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/MShekow/renovate-log-parser/issues"
40
+ },
41
+ "homepage": "https://github.com/MShekow/renovate-log-parser#readme",
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "keywords": [
46
+ "renovate",
47
+ "logs",
48
+ "parser",
49
+ "cli"
50
+ ],
51
+ "license": "MIT",
52
+ "dependencies": {
53
+ "yargs": "18.1.0"
54
+ },
55
+ "devDependencies": {
56
+ "@eslint/js": "10.0.1",
57
+ "@types/node": "26.1.1",
58
+ "@types/yargs": "17.0.35",
59
+ "eslint": "10.8.0",
60
+ "eslint-config-prettier": "10.1.8",
61
+ "globals": "17.7.0",
62
+ "playwright-core": "1.62.0",
63
+ "prettier": "3.9.6",
64
+ "tsx": "4.23.1",
65
+ "typescript": "6.0.3",
66
+ "typescript-eslint": "8.65.0"
67
+ }
68
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "date": "2026-07-29T16:05:27.052Z",
3
+ "preset": "node-server",
4
+ "framework": {
5
+ "name": "nuxt",
6
+ "version": "4.4.8"
7
+ },
8
+ "versions": {
9
+ "nitro": "2.13.4"
10
+ },
11
+ "commands": {
12
+ "preview": "node server/index.mjs"
13
+ },
14
+ "config": {}
15
+ }