karajan-code 3.4.1 → 3.5.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 (716) hide show
  1. package/README.md +1 -1
  2. package/node_modules/@karajan/core/package.json +12 -1
  3. package/package.json +4 -2
  4. package/scripts/verify-pack.mjs +108 -0
  5. package/src/cli/register-meta.js +37 -0
  6. package/src/cli/register-pipeline.js +1 -0
  7. package/src/commands/check.js +22 -0
  8. package/src/commands/harden.js +107 -0
  9. package/src/commands/init.js +15 -0
  10. package/src/harden/check.js +70 -0
  11. package/src/harden/config-engine.js +75 -0
  12. package/src/harden/config-templates.js +112 -0
  13. package/src/harden/guidelines-engine.js +48 -0
  14. package/src/harden/guidelines-templates.js +36 -0
  15. package/src/harden/harden-engine.js +66 -0
  16. package/src/harden/hook-commands.js +20 -0
  17. package/src/harden/hook-templates.js +69 -0
  18. package/src/harden/stack-roots.js +74 -0
  19. package/src/harden/workflow-engine.js +64 -0
  20. package/src/harden/workflow-templates.js +152 -0
  21. package/src/utils/managed-markers.js +93 -0
  22. package/node_modules/@sec-ant/readable-stream/LICENSE +0 -21
  23. package/node_modules/@sec-ant/readable-stream/README.md +0 -230
  24. package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterablePrototype.d.ts +0 -1
  25. package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterator.d.ts +0 -27
  26. package/node_modules/@sec-ant/readable-stream/dist/core/fromAnyIterable.d.ts +0 -6
  27. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.d.ts +0 -2
  28. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.js +0 -5
  29. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.d.ts +0 -2
  30. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.js +0 -5
  31. package/node_modules/@sec-ant/readable-stream/dist/index/index.d.ts +0 -2
  32. package/node_modules/@sec-ant/readable-stream/dist/index/index.js +0 -8
  33. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.d.ts +0 -1
  34. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.js +0 -3
  35. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.d.ts +0 -1
  36. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.js +0 -2
  37. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.d.ts +0 -2
  38. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.js +0 -4
  39. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.d.ts +0 -1
  40. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +0 -89
  41. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.d.ts +0 -1
  42. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +0 -34
  43. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.d.ts +0 -2
  44. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +0 -6
  45. package/node_modules/@sec-ant/readable-stream/dist/types/async-iterator.d.ts +0 -11
  46. package/node_modules/@sec-ant/readable-stream/package.json +0 -96
  47. package/node_modules/@sindresorhus/merge-streams/index.d.ts +0 -44
  48. package/node_modules/@sindresorhus/merge-streams/index.js +0 -265
  49. package/node_modules/@sindresorhus/merge-streams/license +0 -9
  50. package/node_modules/@sindresorhus/merge-streams/package.json +0 -49
  51. package/node_modules/@sindresorhus/merge-streams/readme.md +0 -53
  52. package/node_modules/base64-js/LICENSE +0 -21
  53. package/node_modules/base64-js/README.md +0 -34
  54. package/node_modules/base64-js/base64js.min.js +0 -1
  55. package/node_modules/base64-js/index.d.ts +0 -3
  56. package/node_modules/base64-js/index.js +0 -150
  57. package/node_modules/base64-js/package.json +0 -47
  58. package/node_modules/better-sqlite3/LICENSE +0 -21
  59. package/node_modules/better-sqlite3/README.md +0 -99
  60. package/node_modules/better-sqlite3/binding.gyp +0 -38
  61. package/node_modules/better-sqlite3/deps/common.gypi +0 -68
  62. package/node_modules/better-sqlite3/deps/copy.js +0 -31
  63. package/node_modules/better-sqlite3/deps/defines.gypi +0 -42
  64. package/node_modules/better-sqlite3/deps/download.sh +0 -123
  65. package/node_modules/better-sqlite3/deps/patches/1208.patch +0 -15
  66. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +0 -268879
  67. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +0 -14335
  68. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +0 -739
  69. package/node_modules/better-sqlite3/deps/sqlite3.gyp +0 -80
  70. package/node_modules/better-sqlite3/deps/test_extension.c +0 -21
  71. package/node_modules/better-sqlite3/lib/database.js +0 -90
  72. package/node_modules/better-sqlite3/lib/index.js +0 -3
  73. package/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
  74. package/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
  75. package/node_modules/better-sqlite3/lib/methods/function.js +0 -31
  76. package/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
  77. package/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
  78. package/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
  79. package/node_modules/better-sqlite3/lib/methods/table.js +0 -189
  80. package/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
  81. package/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
  82. package/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
  83. package/node_modules/better-sqlite3/lib/util.js +0 -12
  84. package/node_modules/better-sqlite3/package.json +0 -59
  85. package/node_modules/better-sqlite3/src/addon.cpp +0 -47
  86. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +0 -74
  87. package/node_modules/better-sqlite3/src/objects/backup.cpp +0 -120
  88. package/node_modules/better-sqlite3/src/objects/backup.hpp +0 -36
  89. package/node_modules/better-sqlite3/src/objects/database.cpp +0 -417
  90. package/node_modules/better-sqlite3/src/objects/database.hpp +0 -103
  91. package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +0 -113
  92. package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +0 -50
  93. package/node_modules/better-sqlite3/src/objects/statement.cpp +0 -383
  94. package/node_modules/better-sqlite3/src/objects/statement.hpp +0 -58
  95. package/node_modules/better-sqlite3/src/util/bind-map.cpp +0 -73
  96. package/node_modules/better-sqlite3/src/util/binder.cpp +0 -193
  97. package/node_modules/better-sqlite3/src/util/constants.cpp +0 -172
  98. package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +0 -121
  99. package/node_modules/better-sqlite3/src/util/custom-function.cpp +0 -59
  100. package/node_modules/better-sqlite3/src/util/custom-table.cpp +0 -409
  101. package/node_modules/better-sqlite3/src/util/data-converter.cpp +0 -17
  102. package/node_modules/better-sqlite3/src/util/data.cpp +0 -194
  103. package/node_modules/better-sqlite3/src/util/helpers.cpp +0 -109
  104. package/node_modules/better-sqlite3/src/util/macros.cpp +0 -83
  105. package/node_modules/better-sqlite3/src/util/query-macros.cpp +0 -71
  106. package/node_modules/better-sqlite3/src/util/row-builder.cpp +0 -49
  107. package/node_modules/bindings/LICENSE.md +0 -22
  108. package/node_modules/bindings/README.md +0 -98
  109. package/node_modules/bindings/bindings.js +0 -221
  110. package/node_modules/bindings/package.json +0 -28
  111. package/node_modules/bl/.travis.yml +0 -17
  112. package/node_modules/bl/BufferList.js +0 -396
  113. package/node_modules/bl/LICENSE.md +0 -13
  114. package/node_modules/bl/README.md +0 -247
  115. package/node_modules/bl/bl.js +0 -84
  116. package/node_modules/bl/package.json +0 -37
  117. package/node_modules/bl/test/convert.js +0 -21
  118. package/node_modules/bl/test/indexOf.js +0 -492
  119. package/node_modules/bl/test/isBufferList.js +0 -32
  120. package/node_modules/bl/test/test.js +0 -869
  121. package/node_modules/buffer/AUTHORS.md +0 -70
  122. package/node_modules/buffer/LICENSE +0 -21
  123. package/node_modules/buffer/README.md +0 -410
  124. package/node_modules/buffer/index.d.ts +0 -186
  125. package/node_modules/buffer/index.js +0 -1817
  126. package/node_modules/buffer/package.json +0 -96
  127. package/node_modules/chownr/LICENSE +0 -15
  128. package/node_modules/chownr/README.md +0 -3
  129. package/node_modules/chownr/chownr.js +0 -167
  130. package/node_modules/chownr/package.json +0 -29
  131. package/node_modules/cross-spawn/LICENSE +0 -21
  132. package/node_modules/cross-spawn/README.md +0 -89
  133. package/node_modules/cross-spawn/index.js +0 -39
  134. package/node_modules/cross-spawn/lib/enoent.js +0 -59
  135. package/node_modules/cross-spawn/lib/parse.js +0 -91
  136. package/node_modules/cross-spawn/lib/util/escape.js +0 -47
  137. package/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  138. package/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  139. package/node_modules/cross-spawn/package.json +0 -73
  140. package/node_modules/decompress-response/index.d.ts +0 -22
  141. package/node_modules/decompress-response/index.js +0 -58
  142. package/node_modules/decompress-response/license +0 -9
  143. package/node_modules/decompress-response/package.json +0 -56
  144. package/node_modules/decompress-response/readme.md +0 -48
  145. package/node_modules/deep-extend/LICENSE +0 -20
  146. package/node_modules/deep-extend/README.md +0 -91
  147. package/node_modules/deep-extend/index.js +0 -1
  148. package/node_modules/deep-extend/lib/deep-extend.js +0 -150
  149. package/node_modules/deep-extend/package.json +0 -62
  150. package/node_modules/detect-libc/LICENSE +0 -201
  151. package/node_modules/detect-libc/README.md +0 -163
  152. package/node_modules/detect-libc/index.d.ts +0 -14
  153. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  154. package/node_modules/detect-libc/lib/elf.js +0 -39
  155. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  156. package/node_modules/detect-libc/lib/process.js +0 -24
  157. package/node_modules/detect-libc/package.json +0 -44
  158. package/node_modules/end-of-stream/LICENSE +0 -21
  159. package/node_modules/end-of-stream/README.md +0 -54
  160. package/node_modules/end-of-stream/index.js +0 -96
  161. package/node_modules/end-of-stream/package.json +0 -37
  162. package/node_modules/execa/index.d.ts +0 -27
  163. package/node_modules/execa/index.js +0 -28
  164. package/node_modules/execa/lib/arguments/command.js +0 -20
  165. package/node_modules/execa/lib/arguments/cwd.js +0 -39
  166. package/node_modules/execa/lib/arguments/encoding-option.js +0 -50
  167. package/node_modules/execa/lib/arguments/escape.js +0 -88
  168. package/node_modules/execa/lib/arguments/fd-options.js +0 -108
  169. package/node_modules/execa/lib/arguments/file-url.js +0 -25
  170. package/node_modules/execa/lib/arguments/options.js +0 -96
  171. package/node_modules/execa/lib/arguments/shell.js +0 -11
  172. package/node_modules/execa/lib/arguments/specific.js +0 -111
  173. package/node_modules/execa/lib/convert/add.js +0 -15
  174. package/node_modules/execa/lib/convert/concurrent.js +0 -33
  175. package/node_modules/execa/lib/convert/duplex.js +0 -69
  176. package/node_modules/execa/lib/convert/iterable.js +0 -34
  177. package/node_modules/execa/lib/convert/readable.js +0 -113
  178. package/node_modules/execa/lib/convert/shared.js +0 -46
  179. package/node_modules/execa/lib/convert/writable.js +0 -90
  180. package/node_modules/execa/lib/io/contents.js +0 -116
  181. package/node_modules/execa/lib/io/input-sync.js +0 -44
  182. package/node_modules/execa/lib/io/iterate.js +0 -110
  183. package/node_modules/execa/lib/io/max-buffer.js +0 -89
  184. package/node_modules/execa/lib/io/output-async.js +0 -80
  185. package/node_modules/execa/lib/io/output-sync.js +0 -135
  186. package/node_modules/execa/lib/io/pipeline.js +0 -48
  187. package/node_modules/execa/lib/io/strip-newline.js +0 -12
  188. package/node_modules/execa/lib/ipc/array.js +0 -4
  189. package/node_modules/execa/lib/ipc/buffer-messages.js +0 -47
  190. package/node_modules/execa/lib/ipc/forward.js +0 -56
  191. package/node_modules/execa/lib/ipc/get-each.js +0 -89
  192. package/node_modules/execa/lib/ipc/get-one.js +0 -69
  193. package/node_modules/execa/lib/ipc/graceful.js +0 -72
  194. package/node_modules/execa/lib/ipc/incoming.js +0 -79
  195. package/node_modules/execa/lib/ipc/ipc-input.js +0 -44
  196. package/node_modules/execa/lib/ipc/methods.js +0 -49
  197. package/node_modules/execa/lib/ipc/outgoing.js +0 -47
  198. package/node_modules/execa/lib/ipc/reference.js +0 -44
  199. package/node_modules/execa/lib/ipc/send.js +0 -91
  200. package/node_modules/execa/lib/ipc/strict.js +0 -113
  201. package/node_modules/execa/lib/ipc/validation.js +0 -111
  202. package/node_modules/execa/lib/methods/bind.js +0 -23
  203. package/node_modules/execa/lib/methods/command.js +0 -43
  204. package/node_modules/execa/lib/methods/create.js +0 -65
  205. package/node_modules/execa/lib/methods/main-async.js +0 -194
  206. package/node_modules/execa/lib/methods/main-sync.js +0 -163
  207. package/node_modules/execa/lib/methods/node.js +0 -51
  208. package/node_modules/execa/lib/methods/parameters.js +0 -31
  209. package/node_modules/execa/lib/methods/promise.js +0 -15
  210. package/node_modules/execa/lib/methods/script.js +0 -22
  211. package/node_modules/execa/lib/methods/template.js +0 -153
  212. package/node_modules/execa/lib/pipe/abort.js +0 -20
  213. package/node_modules/execa/lib/pipe/pipe-arguments.js +0 -91
  214. package/node_modules/execa/lib/pipe/sequence.js +0 -24
  215. package/node_modules/execa/lib/pipe/setup.js +0 -72
  216. package/node_modules/execa/lib/pipe/streaming.js +0 -51
  217. package/node_modules/execa/lib/pipe/throw.js +0 -58
  218. package/node_modules/execa/lib/resolve/all-async.js +0 -46
  219. package/node_modules/execa/lib/resolve/all-sync.js +0 -33
  220. package/node_modules/execa/lib/resolve/exit-async.js +0 -54
  221. package/node_modules/execa/lib/resolve/exit-sync.js +0 -25
  222. package/node_modules/execa/lib/resolve/stdio.js +0 -47
  223. package/node_modules/execa/lib/resolve/wait-stream.js +0 -96
  224. package/node_modules/execa/lib/resolve/wait-subprocess.js +0 -146
  225. package/node_modules/execa/lib/return/duration.js +0 -8
  226. package/node_modules/execa/lib/return/early-error.js +0 -60
  227. package/node_modules/execa/lib/return/final-error.js +0 -40
  228. package/node_modules/execa/lib/return/message.js +0 -157
  229. package/node_modules/execa/lib/return/reject.js +0 -13
  230. package/node_modules/execa/lib/return/result.js +0 -186
  231. package/node_modules/execa/lib/stdio/direction.js +0 -76
  232. package/node_modules/execa/lib/stdio/duplicate.js +0 -116
  233. package/node_modules/execa/lib/stdio/handle-async.js +0 -52
  234. package/node_modules/execa/lib/stdio/handle-sync.js +0 -57
  235. package/node_modules/execa/lib/stdio/handle.js +0 -214
  236. package/node_modules/execa/lib/stdio/input-option.js +0 -50
  237. package/node_modules/execa/lib/stdio/native.js +0 -106
  238. package/node_modules/execa/lib/stdio/stdio-option.js +0 -60
  239. package/node_modules/execa/lib/stdio/type.js +0 -173
  240. package/node_modules/execa/lib/terminate/cancel.js +0 -20
  241. package/node_modules/execa/lib/terminate/cleanup.js +0 -16
  242. package/node_modules/execa/lib/terminate/graceful.js +0 -71
  243. package/node_modules/execa/lib/terminate/kill.js +0 -93
  244. package/node_modules/execa/lib/terminate/signal.js +0 -70
  245. package/node_modules/execa/lib/terminate/timeout.js +0 -21
  246. package/node_modules/execa/lib/transform/encoding-transform.js +0 -51
  247. package/node_modules/execa/lib/transform/generator.js +0 -107
  248. package/node_modules/execa/lib/transform/normalize.js +0 -111
  249. package/node_modules/execa/lib/transform/object-mode.js +0 -41
  250. package/node_modules/execa/lib/transform/run-async.js +0 -60
  251. package/node_modules/execa/lib/transform/run-sync.js +0 -50
  252. package/node_modules/execa/lib/transform/split.js +0 -110
  253. package/node_modules/execa/lib/transform/validate.js +0 -43
  254. package/node_modules/execa/lib/utils/abort-signal.js +0 -8
  255. package/node_modules/execa/lib/utils/deferred.js +0 -7
  256. package/node_modules/execa/lib/utils/max-listeners.js +0 -14
  257. package/node_modules/execa/lib/utils/standard-stream.js +0 -6
  258. package/node_modules/execa/lib/utils/uint-array.js +0 -69
  259. package/node_modules/execa/lib/verbose/complete.js +0 -24
  260. package/node_modules/execa/lib/verbose/custom.js +0 -26
  261. package/node_modules/execa/lib/verbose/default.js +0 -54
  262. package/node_modules/execa/lib/verbose/error.js +0 -13
  263. package/node_modules/execa/lib/verbose/info.js +0 -39
  264. package/node_modules/execa/lib/verbose/ipc.js +0 -15
  265. package/node_modules/execa/lib/verbose/log.js +0 -54
  266. package/node_modules/execa/lib/verbose/output.js +0 -60
  267. package/node_modules/execa/lib/verbose/start.js +0 -15
  268. package/node_modules/execa/lib/verbose/values.js +0 -33
  269. package/node_modules/execa/license +0 -9
  270. package/node_modules/execa/package.json +0 -105
  271. package/node_modules/execa/readme.md +0 -461
  272. package/node_modules/execa/types/arguments/encoding-option.d.ts +0 -19
  273. package/node_modules/execa/types/arguments/fd-options.d.ts +0 -8
  274. package/node_modules/execa/types/arguments/options.d.ts +0 -400
  275. package/node_modules/execa/types/arguments/specific.d.ts +0 -52
  276. package/node_modules/execa/types/convert.d.ts +0 -58
  277. package/node_modules/execa/types/ipc.d.ts +0 -156
  278. package/node_modules/execa/types/methods/command.d.ts +0 -114
  279. package/node_modules/execa/types/methods/main-async.d.ts +0 -379
  280. package/node_modules/execa/types/methods/main-sync.d.ts +0 -59
  281. package/node_modules/execa/types/methods/node.d.ts +0 -62
  282. package/node_modules/execa/types/methods/script.d.ts +0 -115
  283. package/node_modules/execa/types/methods/template.d.ts +0 -18
  284. package/node_modules/execa/types/pipe.d.ts +0 -58
  285. package/node_modules/execa/types/return/final-error.d.ts +0 -51
  286. package/node_modules/execa/types/return/ignore.d.ts +0 -26
  287. package/node_modules/execa/types/return/result-all.d.ts +0 -30
  288. package/node_modules/execa/types/return/result-ipc.d.ts +0 -27
  289. package/node_modules/execa/types/return/result-stdio.d.ts +0 -17
  290. package/node_modules/execa/types/return/result-stdout.d.ts +0 -50
  291. package/node_modules/execa/types/return/result.d.ts +0 -203
  292. package/node_modules/execa/types/stdio/array.d.ts +0 -16
  293. package/node_modules/execa/types/stdio/direction.d.ts +0 -12
  294. package/node_modules/execa/types/stdio/option.d.ts +0 -40
  295. package/node_modules/execa/types/stdio/type.d.ts +0 -170
  296. package/node_modules/execa/types/subprocess/all.d.ts +0 -17
  297. package/node_modules/execa/types/subprocess/stdio.d.ts +0 -18
  298. package/node_modules/execa/types/subprocess/stdout.d.ts +0 -22
  299. package/node_modules/execa/types/subprocess/subprocess.d.ts +0 -117
  300. package/node_modules/execa/types/transform/normalize.d.ts +0 -57
  301. package/node_modules/execa/types/transform/object-mode.d.ts +0 -21
  302. package/node_modules/execa/types/utils.d.ts +0 -13
  303. package/node_modules/execa/types/verbose.d.ts +0 -98
  304. package/node_modules/expand-template/.travis.yml +0 -6
  305. package/node_modules/expand-template/LICENSE +0 -21
  306. package/node_modules/expand-template/README.md +0 -43
  307. package/node_modules/expand-template/index.js +0 -26
  308. package/node_modules/expand-template/package.json +0 -29
  309. package/node_modules/expand-template/test.js +0 -67
  310. package/node_modules/figures/index.d.ts +0 -279
  311. package/node_modules/figures/index.js +0 -292
  312. package/node_modules/figures/license +0 -9
  313. package/node_modules/figures/package.json +0 -49
  314. package/node_modules/figures/readme.md +0 -337
  315. package/node_modules/file-uri-to-path/.npmignore +0 -1
  316. package/node_modules/file-uri-to-path/.travis.yml +0 -30
  317. package/node_modules/file-uri-to-path/History.md +0 -21
  318. package/node_modules/file-uri-to-path/LICENSE +0 -20
  319. package/node_modules/file-uri-to-path/README.md +0 -74
  320. package/node_modules/file-uri-to-path/index.d.ts +0 -2
  321. package/node_modules/file-uri-to-path/index.js +0 -66
  322. package/node_modules/file-uri-to-path/package.json +0 -32
  323. package/node_modules/file-uri-to-path/test/test.js +0 -24
  324. package/node_modules/file-uri-to-path/test/tests.json +0 -13
  325. package/node_modules/fs-constants/LICENSE +0 -21
  326. package/node_modules/fs-constants/README.md +0 -26
  327. package/node_modules/fs-constants/browser.js +0 -1
  328. package/node_modules/fs-constants/index.js +0 -1
  329. package/node_modules/fs-constants/package.json +0 -19
  330. package/node_modules/get-stream/license +0 -9
  331. package/node_modules/get-stream/package.json +0 -60
  332. package/node_modules/get-stream/readme.md +0 -303
  333. package/node_modules/get-stream/source/array-buffer.js +0 -84
  334. package/node_modules/get-stream/source/array.js +0 -32
  335. package/node_modules/get-stream/source/buffer.js +0 -19
  336. package/node_modules/get-stream/source/contents.js +0 -121
  337. package/node_modules/get-stream/source/exports.js +0 -5
  338. package/node_modules/get-stream/source/index.d.ts +0 -121
  339. package/node_modules/get-stream/source/index.js +0 -13
  340. package/node_modules/get-stream/source/stream.js +0 -65
  341. package/node_modules/get-stream/source/string.js +0 -41
  342. package/node_modules/get-stream/source/utils.js +0 -11
  343. package/node_modules/github-from-package/.travis.yml +0 -4
  344. package/node_modules/github-from-package/LICENSE +0 -18
  345. package/node_modules/github-from-package/example/package.json +0 -8
  346. package/node_modules/github-from-package/example/url.js +0 -3
  347. package/node_modules/github-from-package/index.js +0 -17
  348. package/node_modules/github-from-package/package.json +0 -30
  349. package/node_modules/github-from-package/readme.markdown +0 -53
  350. package/node_modules/github-from-package/test/a.json +0 -8
  351. package/node_modules/github-from-package/test/b.json +0 -5
  352. package/node_modules/github-from-package/test/c.json +0 -5
  353. package/node_modules/github-from-package/test/d.json +0 -7
  354. package/node_modules/github-from-package/test/e.json +0 -5
  355. package/node_modules/github-from-package/test/url.js +0 -19
  356. package/node_modules/human-signals/LICENSE +0 -201
  357. package/node_modules/human-signals/README.md +0 -171
  358. package/node_modules/human-signals/build/src/core.js +0 -273
  359. package/node_modules/human-signals/build/src/main.d.ts +0 -206
  360. package/node_modules/human-signals/build/src/main.js +0 -70
  361. package/node_modules/human-signals/build/src/realtime.js +0 -16
  362. package/node_modules/human-signals/build/src/signals.js +0 -34
  363. package/node_modules/human-signals/package.json +0 -66
  364. package/node_modules/ieee754/LICENSE +0 -11
  365. package/node_modules/ieee754/README.md +0 -51
  366. package/node_modules/ieee754/index.d.ts +0 -10
  367. package/node_modules/ieee754/index.js +0 -85
  368. package/node_modules/ieee754/package.json +0 -52
  369. package/node_modules/inherits/LICENSE +0 -16
  370. package/node_modules/inherits/README.md +0 -42
  371. package/node_modules/inherits/inherits.js +0 -9
  372. package/node_modules/inherits/inherits_browser.js +0 -27
  373. package/node_modules/inherits/package.json +0 -29
  374. package/node_modules/ini/LICENSE +0 -15
  375. package/node_modules/ini/README.md +0 -102
  376. package/node_modules/ini/ini.js +0 -206
  377. package/node_modules/ini/package.json +0 -33
  378. package/node_modules/is-plain-obj/index.d.ts +0 -35
  379. package/node_modules/is-plain-obj/index.js +0 -8
  380. package/node_modules/is-plain-obj/license +0 -9
  381. package/node_modules/is-plain-obj/package.json +0 -41
  382. package/node_modules/is-plain-obj/readme.md +0 -58
  383. package/node_modules/is-stream/index.d.ts +0 -90
  384. package/node_modules/is-stream/index.js +0 -37
  385. package/node_modules/is-stream/license +0 -9
  386. package/node_modules/is-stream/package.json +0 -48
  387. package/node_modules/is-stream/readme.md +0 -57
  388. package/node_modules/is-unicode-supported/index.d.ts +0 -12
  389. package/node_modules/is-unicode-supported/index.js +0 -21
  390. package/node_modules/is-unicode-supported/license +0 -9
  391. package/node_modules/is-unicode-supported/package.json +0 -47
  392. package/node_modules/is-unicode-supported/readme.md +0 -35
  393. package/node_modules/isexe/.npmignore +0 -2
  394. package/node_modules/isexe/LICENSE +0 -15
  395. package/node_modules/isexe/README.md +0 -51
  396. package/node_modules/isexe/index.js +0 -57
  397. package/node_modules/isexe/mode.js +0 -41
  398. package/node_modules/isexe/package.json +0 -31
  399. package/node_modules/isexe/test/basic.js +0 -221
  400. package/node_modules/isexe/windows.js +0 -42
  401. package/node_modules/mimic-response/index.d.ts +0 -17
  402. package/node_modules/mimic-response/index.js +0 -77
  403. package/node_modules/mimic-response/license +0 -9
  404. package/node_modules/mimic-response/package.json +0 -42
  405. package/node_modules/mimic-response/readme.md +0 -78
  406. package/node_modules/minimist/.eslintrc +0 -29
  407. package/node_modules/minimist/.github/FUNDING.yml +0 -12
  408. package/node_modules/minimist/.nycrc +0 -14
  409. package/node_modules/minimist/CHANGELOG.md +0 -298
  410. package/node_modules/minimist/LICENSE +0 -18
  411. package/node_modules/minimist/README.md +0 -121
  412. package/node_modules/minimist/example/parse.js +0 -4
  413. package/node_modules/minimist/index.js +0 -263
  414. package/node_modules/minimist/package.json +0 -75
  415. package/node_modules/minimist/test/all_bool.js +0 -34
  416. package/node_modules/minimist/test/bool.js +0 -177
  417. package/node_modules/minimist/test/dash.js +0 -43
  418. package/node_modules/minimist/test/default_bool.js +0 -37
  419. package/node_modules/minimist/test/dotted.js +0 -24
  420. package/node_modules/minimist/test/kv_short.js +0 -32
  421. package/node_modules/minimist/test/long.js +0 -33
  422. package/node_modules/minimist/test/num.js +0 -38
  423. package/node_modules/minimist/test/parse.js +0 -209
  424. package/node_modules/minimist/test/parse_modified.js +0 -11
  425. package/node_modules/minimist/test/proto.js +0 -64
  426. package/node_modules/minimist/test/short.js +0 -69
  427. package/node_modules/minimist/test/stop_early.js +0 -17
  428. package/node_modules/minimist/test/unknown.js +0 -104
  429. package/node_modules/minimist/test/whitespace.js +0 -10
  430. package/node_modules/mkdirp-classic/LICENSE +0 -21
  431. package/node_modules/mkdirp-classic/README.md +0 -18
  432. package/node_modules/mkdirp-classic/index.js +0 -98
  433. package/node_modules/mkdirp-classic/package.json +0 -18
  434. package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +0 -31
  435. package/node_modules/napi-build-utils/LICENSE +0 -21
  436. package/node_modules/napi-build-utils/README.md +0 -52
  437. package/node_modules/napi-build-utils/index.js +0 -214
  438. package/node_modules/napi-build-utils/index.md +0 -0
  439. package/node_modules/napi-build-utils/package.json +0 -42
  440. package/node_modules/node-abi/LICENSE +0 -21
  441. package/node_modules/node-abi/README.md +0 -54
  442. package/node_modules/node-abi/abi_registry.json +0 -446
  443. package/node_modules/node-abi/index.js +0 -179
  444. package/node_modules/node-abi/package.json +0 -45
  445. package/node_modules/npm-run-path/index.d.ts +0 -90
  446. package/node_modules/npm-run-path/index.js +0 -55
  447. package/node_modules/npm-run-path/license +0 -9
  448. package/node_modules/npm-run-path/node_modules/path-key/index.d.ts +0 -31
  449. package/node_modules/npm-run-path/node_modules/path-key/index.js +0 -12
  450. package/node_modules/npm-run-path/node_modules/path-key/license +0 -9
  451. package/node_modules/npm-run-path/node_modules/path-key/package.json +0 -41
  452. package/node_modules/npm-run-path/node_modules/path-key/readme.md +0 -57
  453. package/node_modules/npm-run-path/package.json +0 -52
  454. package/node_modules/npm-run-path/readme.md +0 -104
  455. package/node_modules/once/LICENSE +0 -15
  456. package/node_modules/once/README.md +0 -79
  457. package/node_modules/once/once.js +0 -42
  458. package/node_modules/once/package.json +0 -33
  459. package/node_modules/parse-ms/index.d.ts +0 -30
  460. package/node_modules/parse-ms/index.js +0 -45
  461. package/node_modules/parse-ms/license +0 -9
  462. package/node_modules/parse-ms/package.json +0 -47
  463. package/node_modules/parse-ms/readme.md +0 -46
  464. package/node_modules/path-key/index.d.ts +0 -40
  465. package/node_modules/path-key/index.js +0 -16
  466. package/node_modules/path-key/license +0 -9
  467. package/node_modules/path-key/package.json +0 -39
  468. package/node_modules/path-key/readme.md +0 -61
  469. package/node_modules/prebuild-install/CHANGELOG.md +0 -131
  470. package/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
  471. package/node_modules/prebuild-install/LICENSE +0 -21
  472. package/node_modules/prebuild-install/README.md +0 -163
  473. package/node_modules/prebuild-install/asset.js +0 -44
  474. package/node_modules/prebuild-install/bin.js +0 -78
  475. package/node_modules/prebuild-install/download.js +0 -142
  476. package/node_modules/prebuild-install/error.js +0 -14
  477. package/node_modules/prebuild-install/help.txt +0 -16
  478. package/node_modules/prebuild-install/index.js +0 -1
  479. package/node_modules/prebuild-install/log.js +0 -33
  480. package/node_modules/prebuild-install/package.json +0 -67
  481. package/node_modules/prebuild-install/proxy.js +0 -35
  482. package/node_modules/prebuild-install/rc.js +0 -64
  483. package/node_modules/prebuild-install/util.js +0 -143
  484. package/node_modules/pretty-ms/index.d.ts +0 -157
  485. package/node_modules/pretty-ms/index.js +0 -149
  486. package/node_modules/pretty-ms/license +0 -9
  487. package/node_modules/pretty-ms/package.json +0 -55
  488. package/node_modules/pretty-ms/readme.md +0 -179
  489. package/node_modules/pump/.github/FUNDING.yml +0 -2
  490. package/node_modules/pump/.travis.yml +0 -5
  491. package/node_modules/pump/LICENSE +0 -21
  492. package/node_modules/pump/README.md +0 -74
  493. package/node_modules/pump/SECURITY.md +0 -5
  494. package/node_modules/pump/empty.js +0 -1
  495. package/node_modules/pump/index.js +0 -86
  496. package/node_modules/pump/package.json +0 -30
  497. package/node_modules/pump/test-browser.js +0 -66
  498. package/node_modules/pump/test-node.js +0 -53
  499. package/node_modules/rc/LICENSE.APACHE2 +0 -15
  500. package/node_modules/rc/LICENSE.BSD +0 -26
  501. package/node_modules/rc/LICENSE.MIT +0 -24
  502. package/node_modules/rc/README.md +0 -227
  503. package/node_modules/rc/browser.js +0 -7
  504. package/node_modules/rc/cli.js +0 -4
  505. package/node_modules/rc/index.js +0 -53
  506. package/node_modules/rc/lib/utils.js +0 -104
  507. package/node_modules/rc/package.json +0 -29
  508. package/node_modules/rc/test/ini.js +0 -16
  509. package/node_modules/rc/test/nested-env-vars.js +0 -50
  510. package/node_modules/rc/test/test.js +0 -59
  511. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  512. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  513. package/node_modules/readable-stream/LICENSE +0 -47
  514. package/node_modules/readable-stream/README.md +0 -106
  515. package/node_modules/readable-stream/errors-browser.js +0 -127
  516. package/node_modules/readable-stream/errors.js +0 -116
  517. package/node_modules/readable-stream/experimentalWarning.js +0 -17
  518. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
  519. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
  520. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
  521. package/node_modules/readable-stream/lib/_stream_transform.js +0 -190
  522. package/node_modules/readable-stream/lib/_stream_writable.js +0 -641
  523. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
  524. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
  525. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
  526. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
  527. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  528. package/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
  529. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
  530. package/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
  531. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  532. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  533. package/node_modules/readable-stream/package.json +0 -68
  534. package/node_modules/readable-stream/readable-browser.js +0 -9
  535. package/node_modules/readable-stream/readable.js +0 -16
  536. package/node_modules/safe-buffer/LICENSE +0 -21
  537. package/node_modules/safe-buffer/README.md +0 -584
  538. package/node_modules/safe-buffer/index.d.ts +0 -187
  539. package/node_modules/safe-buffer/index.js +0 -65
  540. package/node_modules/safe-buffer/package.json +0 -51
  541. package/node_modules/semver/LICENSE +0 -15
  542. package/node_modules/semver/README.md +0 -665
  543. package/node_modules/semver/bin/semver.js +0 -191
  544. package/node_modules/semver/classes/comparator.js +0 -143
  545. package/node_modules/semver/classes/index.js +0 -7
  546. package/node_modules/semver/classes/range.js +0 -557
  547. package/node_modules/semver/classes/semver.js +0 -333
  548. package/node_modules/semver/functions/clean.js +0 -8
  549. package/node_modules/semver/functions/cmp.js +0 -54
  550. package/node_modules/semver/functions/coerce.js +0 -62
  551. package/node_modules/semver/functions/compare-build.js +0 -9
  552. package/node_modules/semver/functions/compare-loose.js +0 -5
  553. package/node_modules/semver/functions/compare.js +0 -7
  554. package/node_modules/semver/functions/diff.js +0 -60
  555. package/node_modules/semver/functions/eq.js +0 -5
  556. package/node_modules/semver/functions/gt.js +0 -5
  557. package/node_modules/semver/functions/gte.js +0 -5
  558. package/node_modules/semver/functions/inc.js +0 -21
  559. package/node_modules/semver/functions/lt.js +0 -5
  560. package/node_modules/semver/functions/lte.js +0 -5
  561. package/node_modules/semver/functions/major.js +0 -5
  562. package/node_modules/semver/functions/minor.js +0 -5
  563. package/node_modules/semver/functions/neq.js +0 -5
  564. package/node_modules/semver/functions/parse.js +0 -18
  565. package/node_modules/semver/functions/patch.js +0 -5
  566. package/node_modules/semver/functions/prerelease.js +0 -8
  567. package/node_modules/semver/functions/rcompare.js +0 -5
  568. package/node_modules/semver/functions/rsort.js +0 -5
  569. package/node_modules/semver/functions/satisfies.js +0 -12
  570. package/node_modules/semver/functions/sort.js +0 -5
  571. package/node_modules/semver/functions/valid.js +0 -8
  572. package/node_modules/semver/index.js +0 -91
  573. package/node_modules/semver/internal/constants.js +0 -37
  574. package/node_modules/semver/internal/debug.js +0 -11
  575. package/node_modules/semver/internal/identifiers.js +0 -29
  576. package/node_modules/semver/internal/lrucache.js +0 -42
  577. package/node_modules/semver/internal/parse-options.js +0 -17
  578. package/node_modules/semver/internal/re.js +0 -223
  579. package/node_modules/semver/package.json +0 -78
  580. package/node_modules/semver/preload.js +0 -4
  581. package/node_modules/semver/range.bnf +0 -16
  582. package/node_modules/semver/ranges/gtr.js +0 -6
  583. package/node_modules/semver/ranges/intersects.js +0 -9
  584. package/node_modules/semver/ranges/ltr.js +0 -6
  585. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  586. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  587. package/node_modules/semver/ranges/min-version.js +0 -63
  588. package/node_modules/semver/ranges/outside.js +0 -82
  589. package/node_modules/semver/ranges/simplify.js +0 -49
  590. package/node_modules/semver/ranges/subset.js +0 -249
  591. package/node_modules/semver/ranges/to-comparators.js +0 -10
  592. package/node_modules/semver/ranges/valid.js +0 -13
  593. package/node_modules/shebang-command/index.js +0 -19
  594. package/node_modules/shebang-command/license +0 -9
  595. package/node_modules/shebang-command/package.json +0 -34
  596. package/node_modules/shebang-command/readme.md +0 -34
  597. package/node_modules/shebang-regex/index.d.ts +0 -22
  598. package/node_modules/shebang-regex/index.js +0 -2
  599. package/node_modules/shebang-regex/license +0 -9
  600. package/node_modules/shebang-regex/package.json +0 -35
  601. package/node_modules/shebang-regex/readme.md +0 -33
  602. package/node_modules/signal-exit/LICENSE.txt +0 -16
  603. package/node_modules/signal-exit/README.md +0 -74
  604. package/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -12
  605. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -1
  606. package/node_modules/signal-exit/dist/cjs/browser.js +0 -10
  607. package/node_modules/signal-exit/dist/cjs/browser.js.map +0 -1
  608. package/node_modules/signal-exit/dist/cjs/index.d.ts +0 -48
  609. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -1
  610. package/node_modules/signal-exit/dist/cjs/index.js +0 -279
  611. package/node_modules/signal-exit/dist/cjs/index.js.map +0 -1
  612. package/node_modules/signal-exit/dist/cjs/package.json +0 -3
  613. package/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -29
  614. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -1
  615. package/node_modules/signal-exit/dist/cjs/signals.js +0 -42
  616. package/node_modules/signal-exit/dist/cjs/signals.js.map +0 -1
  617. package/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -12
  618. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -1
  619. package/node_modules/signal-exit/dist/mjs/browser.js +0 -4
  620. package/node_modules/signal-exit/dist/mjs/browser.js.map +0 -1
  621. package/node_modules/signal-exit/dist/mjs/index.d.ts +0 -48
  622. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -1
  623. package/node_modules/signal-exit/dist/mjs/index.js +0 -275
  624. package/node_modules/signal-exit/dist/mjs/index.js.map +0 -1
  625. package/node_modules/signal-exit/dist/mjs/package.json +0 -3
  626. package/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -29
  627. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -1
  628. package/node_modules/signal-exit/dist/mjs/signals.js +0 -39
  629. package/node_modules/signal-exit/dist/mjs/signals.js.map +0 -1
  630. package/node_modules/signal-exit/package.json +0 -106
  631. package/node_modules/simple-concat/.travis.yml +0 -3
  632. package/node_modules/simple-concat/LICENSE +0 -20
  633. package/node_modules/simple-concat/README.md +0 -44
  634. package/node_modules/simple-concat/index.js +0 -15
  635. package/node_modules/simple-concat/package.json +0 -47
  636. package/node_modules/simple-concat/test/basic.js +0 -41
  637. package/node_modules/simple-get/.github/dependabot.yml +0 -15
  638. package/node_modules/simple-get/.github/workflows/ci.yml +0 -23
  639. package/node_modules/simple-get/LICENSE +0 -20
  640. package/node_modules/simple-get/README.md +0 -333
  641. package/node_modules/simple-get/index.js +0 -108
  642. package/node_modules/simple-get/package.json +0 -67
  643. package/node_modules/sqlite-vec/README.md +0 -1
  644. package/node_modules/sqlite-vec/package.json +0 -1
  645. package/node_modules/sqlite-vec-linux-x64/README.md +0 -1
  646. package/node_modules/sqlite-vec-linux-x64/package.json +0 -1
  647. package/node_modules/string_decoder/LICENSE +0 -48
  648. package/node_modules/string_decoder/README.md +0 -47
  649. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  650. package/node_modules/string_decoder/package.json +0 -34
  651. package/node_modules/strip-final-newline/index.d.ts +0 -18
  652. package/node_modules/strip-final-newline/index.js +0 -26
  653. package/node_modules/strip-final-newline/license +0 -9
  654. package/node_modules/strip-final-newline/package.json +0 -49
  655. package/node_modules/strip-final-newline/readme.md +0 -34
  656. package/node_modules/strip-json-comments/index.js +0 -70
  657. package/node_modules/strip-json-comments/license +0 -21
  658. package/node_modules/strip-json-comments/package.json +0 -42
  659. package/node_modules/strip-json-comments/readme.md +0 -64
  660. package/node_modules/tar-fs/.travis.yml +0 -6
  661. package/node_modules/tar-fs/LICENSE +0 -21
  662. package/node_modules/tar-fs/README.md +0 -165
  663. package/node_modules/tar-fs/index.js +0 -363
  664. package/node_modules/tar-fs/package.json +0 -41
  665. package/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  666. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  667. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  668. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  669. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  670. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  671. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  672. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  673. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  674. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  675. package/node_modules/tar-fs/test/index.js +0 -346
  676. package/node_modules/tar-stream/LICENSE +0 -21
  677. package/node_modules/tar-stream/README.md +0 -168
  678. package/node_modules/tar-stream/extract.js +0 -257
  679. package/node_modules/tar-stream/headers.js +0 -295
  680. package/node_modules/tar-stream/index.js +0 -2
  681. package/node_modules/tar-stream/pack.js +0 -255
  682. package/node_modules/tar-stream/package.json +0 -58
  683. package/node_modules/tar-stream/sandbox.js +0 -11
  684. package/node_modules/tunnel-agent/LICENSE +0 -55
  685. package/node_modules/tunnel-agent/README.md +0 -4
  686. package/node_modules/tunnel-agent/index.js +0 -244
  687. package/node_modules/tunnel-agent/package.json +0 -22
  688. package/node_modules/unicorn-magic/default.d.ts +0 -13
  689. package/node_modules/unicorn-magic/default.js +0 -14
  690. package/node_modules/unicorn-magic/license +0 -9
  691. package/node_modules/unicorn-magic/node.d.ts +0 -125
  692. package/node_modules/unicorn-magic/node.js +0 -49
  693. package/node_modules/unicorn-magic/package.json +0 -62
  694. package/node_modules/unicorn-magic/readme.md +0 -25
  695. package/node_modules/util-deprecate/History.md +0 -16
  696. package/node_modules/util-deprecate/LICENSE +0 -24
  697. package/node_modules/util-deprecate/README.md +0 -53
  698. package/node_modules/util-deprecate/browser.js +0 -67
  699. package/node_modules/util-deprecate/node.js +0 -6
  700. package/node_modules/util-deprecate/package.json +0 -27
  701. package/node_modules/which/LICENSE +0 -15
  702. package/node_modules/which/README.md +0 -54
  703. package/node_modules/which/bin/node-which +0 -52
  704. package/node_modules/which/package.json +0 -43
  705. package/node_modules/which/which.js +0 -125
  706. package/node_modules/wrappy/LICENSE +0 -15
  707. package/node_modules/wrappy/README.md +0 -36
  708. package/node_modules/wrappy/package.json +0 -29
  709. package/node_modules/wrappy/wrappy.js +0 -33
  710. package/node_modules/yoctocolors/base.d.ts +0 -47
  711. package/node_modules/yoctocolors/base.js +0 -94
  712. package/node_modules/yoctocolors/index.d.ts +0 -2
  713. package/node_modules/yoctocolors/index.js +0 -2
  714. package/node_modules/yoctocolors/license +0 -9
  715. package/node_modules/yoctocolors/package.json +0 -69
  716. package/node_modules/yoctocolors/readme.md +0 -138
package/README.md CHANGED
@@ -23,7 +23,7 @@
23
23
 
24
24
  ---
25
25
 
26
- > **v3.4.1 released** — Post-Phase-1 hardening. The session journal (Cache hits, budget, commits) is now written on EVERY run ending — not just approved ones; the audit role reports its cached tokens (it was the most expensive role and reported 0); and a new preflight check fails fast with an actionable message when Sonar cannot derive a project key, instead of burning coder iterations and dying in `sonar_repeat`. Plus the top of the v3.4.0 self-audit: shared `escapeRegExp()`, 23 dead exports pruned, 4 complex regexes decomposed, and the HU Board API with zero sync fs calls + mtime-cached plan scans. Full notes in [CHANGELOG.md](CHANGELOG.md).
26
+ > **v3.5.0 released** — Quality harness: `kj harden` brings the guardrails Karajan was built with to any repo in one command — idempotent git hooks, lint/format/commit config, CI quality gates and agent guidelines, all stack-aware and behind `kj:managed` markers that never overwrite your content. Native per-language hook commands mean hardening a Go/Python/Java repo never makes Node a commit-time dependency. `kj check` verifies the harness as a CI drift gate, and `kj init` installs it out of the box. Full notes in [CHANGELOG.md](CHANGELOG.md).
27
27
 
28
28
  You describe what you want to build. Karajan orchestrates multiple AI agents to plan it, implement it, test it, review it with SonarQube, and iterate. No babysitting required.
29
29
 
@@ -27,11 +27,22 @@
27
27
  "scripts": {
28
28
  "test": "vitest run"
29
29
  },
30
- "dependencies": {
30
+ "peerDependencies": {
31
31
  "better-sqlite3": "^12.10.0",
32
32
  "execa": "^9.6.0",
33
33
  "sqlite-vec": "^0.1.9"
34
34
  },
35
+ "peerDependenciesMeta": {
36
+ "better-sqlite3": {
37
+ "optional": true
38
+ },
39
+ "execa": {
40
+ "optional": true
41
+ },
42
+ "sqlite-vec": {
43
+ "optional": true
44
+ }
45
+ },
35
46
  "devDependencies": {
36
47
  "vitest": "^4.0.0"
37
48
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karajan-code",
3
- "version": "3.4.1",
3
+ "version": "3.5.0",
4
4
  "description": "Local multi-agent coding orchestrator with TDD, SonarQube, and code review pipeline",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0",
@@ -71,7 +71,9 @@
71
71
  "typecheck": "npx -p typescript@5 tsc --noEmit -p tsconfig.json",
72
72
  "validate": "npm run lint && npm run lint:syntax && npm test",
73
73
  "mcp": "node src/mcp/server.js",
74
- "audit:test-diet": "node scripts/audit-test-diet.mjs"
74
+ "audit:test-diet": "node scripts/audit-test-diet.mjs",
75
+ "verify-pack": "node scripts/verify-pack.mjs",
76
+ "prepublishOnly": "node scripts/verify-pack.mjs"
75
77
  },
76
78
  "simple-git-hooks": {
77
79
  "pre-commit": "npx lint-staged"
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pre-publish tarball smoke gate (KJC-TSK-0553).
4
+ *
5
+ * WHY: the test suite runs against the linked workspace, where
6
+ * `@karajan/core` and its deps resolve via symlink — so a broken
7
+ * PUBLISHED artifact (bundleDependencies dragging in sqlite-vec without
8
+ * its entry point, KJC-BUG-0082 / 0086) passed CI yet failed on every
9
+ * clean `npm install`. v3.2.0, v3.3.0 and v3.4.1 all shipped unable to
10
+ * run even `kj --version`.
11
+ *
12
+ * WHAT: pack the real tarball, install it into an isolated tmpdir
13
+ * (outside the repo, with CLAUDECODE stripped), and assert the binary
14
+ * actually starts and its native-ish deps resolve. Exit non-zero on any
15
+ * failure so `prepublishOnly` aborts the publish and CI blocks the PR.
16
+ *
17
+ * `npm pack` fires prepack/postpack, NOT prepublishOnly — so invoking
18
+ * this from prepublishOnly does not recurse.
19
+ */
20
+
21
+ import { execFileSync } from "node:child_process";
22
+ import fs from "node:fs";
23
+ import os from "node:os";
24
+ import path from "node:path";
25
+ import { fileURLToPath } from "node:url";
26
+
27
+ const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
28
+ const pkg = JSON.parse(fs.readFileSync(path.join(repoRoot, "package.json"), "utf8"));
29
+ const expectedVersion = pkg.version;
30
+
31
+ // Subprocess env: strip CLAUDECODE (Claude Code blocks nested non-interactive
32
+ // runs otherwise) and force a non-interactive, quiet npm.
33
+ const { CLAUDECODE: _omit, ...cleanEnv } = process.env;
34
+ const childEnv = { ...cleanEnv, npm_config_yes: "true", CI: "1" };
35
+
36
+ function run(cmd, args, opts = {}) {
37
+ return execFileSync(cmd, args, {
38
+ encoding: "utf8",
39
+ env: childEnv,
40
+ stdio: ["ignore", "pipe", "pipe"],
41
+ ...opts,
42
+ });
43
+ }
44
+
45
+ function fail(msg, detail) {
46
+ console.error(`\n✗ verify-pack: ${msg}`);
47
+ if (detail) console.error(String(detail).split("\n").slice(0, 20).join("\n"));
48
+ process.exit(1);
49
+ }
50
+
51
+ let tgzPath = null;
52
+ let tmpDir = null;
53
+ try {
54
+ console.log(`verify-pack: packing karajan-code@${expectedVersion}…`);
55
+ // --json gives us the exact filename without parsing human output.
56
+ const packOut = run("npm", ["pack", "--json", "--silent"], { cwd: repoRoot });
57
+ const filename = JSON.parse(packOut)[0]?.filename;
58
+ if (!filename) fail("npm pack did not report a filename", packOut);
59
+ // npm normalizes scoped names in --json but karajan-code is unscoped;
60
+ // the file lands in cwd under the reported name.
61
+ tgzPath = path.join(repoRoot, filename);
62
+ if (!fs.existsSync(tgzPath)) fail(`packed tarball not found at ${tgzPath}`);
63
+
64
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "kj-verify-pack-"));
65
+ console.log(`verify-pack: installing the tarball into ${tmpDir} (clean, isolated)…`);
66
+ run("npm", ["install", tgzPath, "--no-audit", "--no-fund", "--silent", "--prefix", tmpDir], {
67
+ cwd: tmpDir,
68
+ });
69
+
70
+ const binPath = path.join(tmpDir, "node_modules", ".bin", "kj");
71
+ if (!fs.existsSync(binPath)) fail(`kj binary missing after install: ${binPath}`);
72
+
73
+ // 1. kj --version must start AND report the version we just packed.
74
+ let versionOut;
75
+ try {
76
+ versionOut = run(binPath, ["--version"]).trim();
77
+ } catch (err) {
78
+ fail("`kj --version` crashed on a clean install", err.stderr || err.message);
79
+ }
80
+ if (!versionOut.includes(expectedVersion)) {
81
+ fail(`kj --version returned "${versionOut}", expected ${expectedVersion}`);
82
+ }
83
+ console.log(`verify-pack: kj --version → ${versionOut} ✓`);
84
+
85
+ // 2. kj --help must exit 0 (exercises the command tree wiring).
86
+ try {
87
+ run(binPath, ["--help"]);
88
+ } catch (err) {
89
+ fail("`kj --help` failed on a clean install", err.stderr || err.message);
90
+ }
91
+ console.log("verify-pack: kj --help ✓");
92
+
93
+ // 3. The deps that broke before must resolve in the installed tree.
94
+ const installedRoot = path.join(tmpDir, "node_modules", "karajan-code");
95
+ const checks = [
96
+ path.join(tmpDir, "node_modules", "sqlite-vec", "index.mjs"),
97
+ path.join(installedRoot, "node_modules", "@karajan", "core", "src", "vec-store.js"),
98
+ ];
99
+ for (const p of checks) {
100
+ if (!fs.existsSync(p)) fail(`expected resolved path missing in install: ${p}`);
101
+ }
102
+ console.log("verify-pack: sqlite-vec + @karajan/core resolve ✓");
103
+
104
+ console.log(`\n✓ verify-pack: karajan-code@${expectedVersion} installs clean and runs.`);
105
+ } finally {
106
+ if (tgzPath && fs.existsSync(tgzPath)) fs.rmSync(tgzPath, { force: true });
107
+ if (tmpDir && fs.existsSync(tmpDir)) fs.rmSync(tmpDir, { recursive: true, force: true });
108
+ }
@@ -14,6 +14,8 @@ import { webperfCommand } from "../commands/webperf.js";
14
14
  import { undoCommand } from "../commands/undo.js";
15
15
  import { syncCommand } from "../commands/sync.js";
16
16
  import { cleanCommand } from "../commands/clean.js";
17
+ import { checkCommand } from "../commands/check.js";
18
+ import { hardenCommand } from "../commands/harden.js";
17
19
  import { telemetryPreviewCommand, telemetryStatusCommand } from "../commands/telemetry.js";
18
20
  import { withConfig } from "./_shared.js";
19
21
 
@@ -396,4 +398,39 @@ export function registerMeta(program, { pkgVersion }) {
396
398
  huDays: flags.huDays ? Number(flags.huDays) : undefined,
397
399
  });
398
400
  });
401
+
402
+ program
403
+ .command("harden")
404
+ .description("Install the quality harness (git hooks) into this repo — idempotent")
405
+ .option("--profile <name>", "minimal | standard | strict", "standard")
406
+ .option("--no-config", "Skip lint/format/commit config files (hooks only)")
407
+ .option("--no-ci", "Skip CI quality workflows")
408
+ .option("--no-guidelines", "Skip AI-agent guideline files (AGENTS.md/CLAUDE.md)")
409
+ .option("--dry-run", "Show what would change without writing")
410
+ .option("--json", "Emit machine-readable JSON")
411
+ .action(async (flags) => {
412
+ await withConfig(pkgVersion, "harden", flags, async ({ logger }) => {
413
+ await hardenCommand({
414
+ profile: flags.profile,
415
+ config: flags.config !== false,
416
+ ci: flags.ci !== false,
417
+ guidelines: flags.guidelines !== false,
418
+ dryRun: Boolean(flags.dryRun),
419
+ json: Boolean(flags.json),
420
+ logger,
421
+ });
422
+ });
423
+ });
424
+
425
+ program
426
+ .command("check")
427
+ .description("Verify the quality harness installed by kj harden (drift gate)")
428
+ .option("--profile <name>", "minimal | standard | strict", "standard")
429
+ .option("--json", "Emit machine-readable JSON")
430
+ .action(async (flags) => {
431
+ const code = await withConfig(pkgVersion, "check", flags, async ({ logger }) =>
432
+ checkCommand({ profile: flags.profile, json: Boolean(flags.json), logger })
433
+ );
434
+ if (Number.isInteger(code)) process.exit(code);
435
+ });
399
436
  }
@@ -30,6 +30,7 @@ export function registerPipeline(program, { pkgVersion }) {
30
30
  .option("--no-rtk", "Skip the RTK auto-install (token savings on Bash outputs). Karajan still runs but burns more tokens")
31
31
  .option("--no-squeezr", "Skip the Squeezr auto-install (context compression). Karajan still runs but burns more tokens")
32
32
  .option("--no-qmd", "Skip the QMD auto-install + collection registration (semantic wiki over docs/, .reviews/ and plans/)")
33
+ .option("--no-harden", "Skip the quality harness (git hooks, lint/commit config, CI gates, agent guidelines)")
33
34
  .action(async (flags) => {
34
35
  await withConfig(pkgVersion, "init", flags, async ({ config: _config, logger }) => {
35
36
  await initCommand({ logger, flags });
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `kj check` — verify the quality harness installed by `kj harden`
3
+ * (KJC-TSK-0558). Prints a per-category table and returns an exit code so it
4
+ * works both locally and as a CI drift gate. `--json` for machine output.
5
+ */
6
+
7
+ import { checkHarden } from "../harden/check.js";
8
+
9
+ export async function checkCommand({ projectDir = process.cwd(), profile = "standard", json = false, logger = console } = {}) {
10
+ const result = await checkHarden({ projectDir, profile });
11
+
12
+ if (json) {
13
+ logger.info?.(JSON.stringify(result));
14
+ return result.ok ? 0 : 1;
15
+ }
16
+
17
+ logger.info?.(`kj check (${profile})`);
18
+ for (const c of result.checks) logger.info?.(` ${c.ok ? "✓" : "✗"} ${c.id}: ${c.detail}`);
19
+ if (!result.ok) logger.info?.("Harness drift detected — run `kj harden` to repair.");
20
+ else logger.info?.("Harness OK.");
21
+ return result.ok ? 0 : 1;
22
+ }
@@ -0,0 +1,107 @@
1
+ /**
2
+ * `kj harden` — install the quality harness (git hooks) into any repo.
3
+ *
4
+ * Thin CLI layer over harden-engine (KJC-TSK-0555): resolves stack-aware
5
+ * lint/format/test commands, runs the installer and reports. Config files
6
+ * (eslint/prettier) and CI gates land in later slices (H-C / H-D).
7
+ */
8
+
9
+ import { existsSync, readFileSync } from "node:fs";
10
+ import { join } from "node:path";
11
+
12
+ import { installConfigsForRoots } from "../harden/config-engine.js";
13
+ import { installGuidelines } from "../harden/guidelines-engine.js";
14
+ import { commandsForLanguage } from "../harden/hook-commands.js";
15
+ import { installHooks } from "../harden/harden-engine.js";
16
+ import { detectStackRoots } from "../harden/stack-roots.js";
17
+ import { installWorkflows } from "../harden/workflow-engine.js";
18
+ import { detectTestFramework } from "../utils/project-detect.js";
19
+
20
+ const JS_TEST_CMD = {
21
+ vitest: "npx vitest run",
22
+ jest: "npx jest",
23
+ mocha: "npx mocha",
24
+ };
25
+
26
+ /**
27
+ * Resolve the hook's lint/format/test commands for the primary language.
28
+ * Non-JS stacks use their native toolchain (go/ruff/…); JS/TS is built from
29
+ * the project's own package.json scripts so no npm command is ever assumed.
30
+ */
31
+ export async function resolveCmds(projectDir, language) {
32
+ const lang = language ?? detectStackRoots(projectDir)[0]?.language ?? null;
33
+ const cmds = { ...commandsForLanguage(lang) };
34
+ if (lang !== "javascript" && lang !== "typescript") return cmds;
35
+
36
+ const pkgPath = join(projectDir, "package.json");
37
+ if (existsSync(pkgPath)) {
38
+ try {
39
+ const scripts = JSON.parse(readFileSync(pkgPath, "utf8")).scripts ?? {};
40
+ if (scripts.lint) cmds.lint = "npm run -s lint";
41
+ if (scripts["format:check"]) cmds.format = "npm run -s format:check";
42
+ else if (scripts.format) cmds.format = "npm run -s format";
43
+ if (scripts.test) cmds.test = "npm test";
44
+ } catch {
45
+ /* unreadable package.json → fall back to framework detection */
46
+ }
47
+ }
48
+ if (!cmds.test) {
49
+ const { framework } = await detectTestFramework(projectDir);
50
+ if (framework && JS_TEST_CMD[framework]) cmds.test = JS_TEST_CMD[framework];
51
+ }
52
+ return cmds;
53
+ }
54
+
55
+ export async function hardenCommand({
56
+ projectDir = process.cwd(),
57
+ profile = "standard",
58
+ config = true,
59
+ ci = true,
60
+ guidelines = true,
61
+ dryRun = false,
62
+ json = false,
63
+ logger = console,
64
+ } = {}) {
65
+ const roots = detectStackRoots(projectDir);
66
+ const cmds = await resolveCmds(projectDir, roots[0]?.language ?? null);
67
+ let result;
68
+ try {
69
+ result = await installHooks({ projectDir, profile, cmds, dryRun });
70
+ } catch (err) {
71
+ if (json) logger.info?.(JSON.stringify({ ok: false, error: err.message }));
72
+ else logger.error?.(`kj harden: ${err.message}`);
73
+ return { ok: false, error: err.message };
74
+ }
75
+
76
+ // Config (lint/format/commit) ships with standard+, per language root so a
77
+ // fullstack monorepo is hardened on every side, not just one.
78
+ const withConfig = config && profile !== "minimal";
79
+ const cfg = withConfig ? installConfigsForRoots({ projectDir, roots, dryRun }) : null;
80
+ const withCi = ci && profile !== "minimal";
81
+ const wf = withCi
82
+ ? installWorkflows({ projectDir, language: roots[0]?.language ?? null, profile, dryRun })
83
+ : null;
84
+ const withGuidelines = guidelines && profile !== "minimal";
85
+ const gl = withGuidelines ? installGuidelines({ projectDir, dryRun }) : null;
86
+ const out = {
87
+ ok: true,
88
+ ...result,
89
+ configs: cfg?.configs ?? [],
90
+ workflows: wf?.workflows ?? [],
91
+ guidelines: gl?.guidelines ?? [],
92
+ };
93
+
94
+ if (json) {
95
+ logger.info?.(JSON.stringify(out));
96
+ return out;
97
+ }
98
+
99
+ const verb = dryRun ? "would install" : "installed";
100
+ logger.info?.(`kj harden (${profile}) — ${verb} ${result.hooks.length} hook(s) → ${result.hooksPath}`);
101
+ for (const h of result.hooks) logger.info?.(` • ${h.hook}: ${h.action}`);
102
+ for (const c of out.configs) logger.info?.(` • ${c.file}: ${c.action}`);
103
+ for (const w of out.workflows) logger.info?.(` • ${w.file}: ${w.action}`);
104
+ for (const g of out.guidelines) logger.info?.(` • ${g.file}: ${g.action}`);
105
+ if (!dryRun) logger.info?.("core.hooksPath set. Verify later with `kj check` (H-E).");
106
+ return out;
107
+ }
@@ -21,6 +21,8 @@ import { detectAiTrash, installAiTrashHook } from "../utils/ai-trash.js";
21
21
  import { detectQmd } from "../utils/qmd-detect.js";
22
22
  import { installQmd } from "../utils/qmd-install.js";
23
23
  import { registerQmdCollections } from "../utils/qmd-collection.js";
24
+ import { isGitRepo } from "../harden/harden-engine.js";
25
+ import { hardenCommand } from "./harden.js";
24
26
  import { detectProjectStack } from "../utils/stack-detect.js";
25
27
  import { bootstrapSonarToken } from "../sonar/token-bootstrap.js";
26
28
 
@@ -834,6 +836,19 @@ export async function initCommand({ logger, flags = {} }) {
834
836
  await setupSonarQube(config, logger, { interactive });
835
837
  await scaffoldCiGateway(config, flags, logger);
836
838
 
839
+ // Install the quality harness (git hooks, lint/format/commit config, CI
840
+ // quality gates, agent guidelines) through the SAME engine as `kj harden`,
841
+ // so init and harden never drift. Opt-out: --no-harden. Needs a git repo.
842
+ const skipHarden = flags?.noHarden === true || flags?.harden === false;
843
+ if (skipHarden) {
844
+ logger.info("Quality harness skipped (--no-harden).");
845
+ } else if (isGitRepo(process.cwd())) {
846
+ logger.info("Installing quality harness (kj harden)...");
847
+ await hardenCommand({ projectDir: process.cwd(), logger });
848
+ } else {
849
+ logger.info("Not a git repository — run `kj harden` after `git init` to add the quality harness.");
850
+ }
851
+
837
852
  // Persist any changes setupSonarQube made (token, etc.) back to disk.
838
853
  // Use writeInitConfig so the deprecated `sonarqube.enabled` key —
839
854
  // which setupSonarQube still mutates as an in-memory hint — never
@@ -0,0 +1,70 @@
1
+ /**
2
+ * checkHarden — verify the quality harness installed by `kj harden`
3
+ * (KJC-TSK-0558). Detects drift: a deleted hook, a hook that lost its kj
4
+ * marker or its executable bit, or a core.hooksPath that no longer points at
5
+ * `.karajan/hooks`. Returns a per-check report; the CLI maps it to exit 0/≠0.
6
+ *
7
+ * Config, workflow and language-advisory checks land in the next slice.
8
+ */
9
+
10
+ import { existsSync, readFileSync, statSync } from "node:fs";
11
+ import { join } from "node:path";
12
+
13
+ import { runCommand } from "../utils/process.js";
14
+ import { CONFIGS_BY_LANGUAGE, UNIVERSAL_CONFIGS } from "./config-templates.js";
15
+ import { PROFILE_HOOKS } from "./hook-templates.js";
16
+ import { detectStackRoots } from "./stack-roots.js";
17
+ import { qualityWorkflowFor, WORKFLOWS } from "./workflow-templates.js";
18
+
19
+ const HOOKS_DIR = join(".karajan", "hooks");
20
+ const WORKFLOWS_DIR = join(".github", "workflows");
21
+
22
+ /** A config/workflow file just needs to be present (it may be user-owned). */
23
+ function presence(projectDir, rel, id, miss) {
24
+ const ok = existsSync(join(projectDir, rel));
25
+ return { id, ok, detail: ok ? "ok" : miss };
26
+ }
27
+
28
+ export async function checkHarden({ projectDir = process.cwd(), profile = "standard" } = {}) {
29
+ const checks = [];
30
+
31
+ const res = await runCommand("git", ["config", "--local", "core.hooksPath"], { cwd: projectDir });
32
+ const hooksPath = (res.stdout ?? "").trim();
33
+ checks.push({
34
+ id: "core.hooksPath",
35
+ ok: hooksPath === HOOKS_DIR,
36
+ detail: hooksPath === HOOKS_DIR ? "ok" : hooksPath || "(unset) — run kj harden",
37
+ });
38
+
39
+ for (const hook of PROFILE_HOOKS[profile] ?? []) {
40
+ const target = join(projectDir, HOOKS_DIR, hook);
41
+ const exists = existsSync(target);
42
+ const executable = exists && (statSync(target).mode & 0o100) !== 0;
43
+ const marked = exists && readFileSync(target, "utf8").includes(`kj:managed:hook:${hook}`);
44
+ const detail = !exists ? "missing" : !executable ? "not executable" : !marked ? "no kj marker" : "ok";
45
+ checks.push({ id: `hook:${hook}`, ok: exists && executable && marked, detail });
46
+ }
47
+
48
+ // Config + workflows ship with standard+ — and surface the greenfield gap:
49
+ // a language now present but never hardened ⇒ its config shows as missing.
50
+ if (profile !== "minimal") {
51
+ const roots = detectStackRoots(projectDir);
52
+ for (const cfg of UNIVERSAL_CONFIGS) {
53
+ checks.push(presence(projectDir, cfg.file, `config:${cfg.file}`, "missing — run kj harden"));
54
+ }
55
+ for (const { dir, language } of roots) {
56
+ for (const cfg of CONFIGS_BY_LANGUAGE[language] ?? []) {
57
+ const rel = dir === "." ? cfg.file : join(dir, cfg.file);
58
+ checks.push(presence(projectDir, rel, `config:${rel}`, `missing for ${language} — run kj harden`));
59
+ }
60
+ }
61
+ const expectedWf = [...WORKFLOWS];
62
+ const quality = qualityWorkflowFor(roots[0]?.language ?? null);
63
+ if (quality) expectedWf.push(quality);
64
+ for (const wf of expectedWf) {
65
+ checks.push(presence(projectDir, join(WORKFLOWS_DIR, wf.file), `workflow:${wf.file}`, "missing — run kj harden"));
66
+ }
67
+ }
68
+
69
+ return { ok: checks.every((c) => c.ok), checks };
70
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * config-engine — seeds/refreshes lint/format/commit config for `kj harden`
3
+ * (KJC-TSK-0556). Seed-if-absent: a config the user already authored (no
4
+ * kj:managed marker) is left untouched and reported as "skipped". Markered
5
+ * files refresh in place; JSON files (no comment syntax) are seed-only.
6
+ */
7
+
8
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
9
+ import { dirname, join } from "node:path";
10
+
11
+ import { upsertManagedBlock } from "../utils/managed-markers.js";
12
+ import { CONFIGS_BY_LANGUAGE, UNIVERSAL_CONFIGS } from "./config-templates.js";
13
+
14
+ const BLOCK_VERSION = 1;
15
+
16
+ function writeFile(target, content) {
17
+ mkdirSync(dirname(target), { recursive: true });
18
+ writeFileSync(target, content);
19
+ }
20
+
21
+ /** Seed a list of config entries into `targetDir`, labelling each by `prefix`. */
22
+ function seedInto(targetDir, configs, dryRun, prefix, results) {
23
+ for (const cfg of configs) {
24
+ const target = join(targetDir, cfg.file);
25
+ const exists = existsSync(target);
26
+ const file = prefix === "." ? cfg.file : join(prefix, cfg.file);
27
+
28
+ if (cfg.json) {
29
+ const action = exists ? "skipped" : "inserted";
30
+ if (!dryRun && !exists) writeFile(target, `${cfg.body}\n`);
31
+ results.push({ file, action });
32
+ continue;
33
+ }
34
+
35
+ const source = exists ? readFileSync(target, "utf8") : "";
36
+ if (exists && !source.includes(`kj:managed:${cfg.blockId}`)) {
37
+ results.push({ file, action: "skipped" });
38
+ continue;
39
+ }
40
+ const { content, action } = upsertManagedBlock({
41
+ source,
42
+ blockId: cfg.blockId,
43
+ version: BLOCK_VERSION,
44
+ body: cfg.body,
45
+ style: cfg.style,
46
+ });
47
+ if (!dryRun && action !== "unchanged") writeFile(target, content);
48
+ results.push({ file, action });
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Single-directory seed: universal (.editorconfig, commitlint) plus the
54
+ * language's lint/format config, all at `projectDir`. Unknown language ⇒
55
+ * universal only. `dryRun` computes actions without writing.
56
+ */
57
+ export function installConfigs({ projectDir = process.cwd(), language = "javascript", dryRun = false } = {}) {
58
+ const results = [];
59
+ seedInto(projectDir, [...UNIVERSAL_CONFIGS, ...(CONFIGS_BY_LANGUAGE[language] ?? [])], dryRun, ".", results);
60
+ return { dryRun, configs: results };
61
+ }
62
+
63
+ /**
64
+ * Monorepo seed: universal config once at the root, then each language's
65
+ * lint/format config inside its own root (from detectStackRoots). A fullstack
66
+ * repo gets eslint in frontend/, ruff in backend/, etc.
67
+ */
68
+ export function installConfigsForRoots({ projectDir = process.cwd(), roots = [], dryRun = false } = {}) {
69
+ const results = [];
70
+ seedInto(projectDir, UNIVERSAL_CONFIGS, dryRun, ".", results);
71
+ for (const { dir, language } of roots) {
72
+ seedInto(join(projectDir, dir), CONFIGS_BY_LANGUAGE[language] ?? [], dryRun, dir, results);
73
+ }
74
+ return { dryRun, configs: results };
75
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Config-file templates for `kj harden` (KJC-TSK-0556).
3
+ *
4
+ * Each entry is seeded only when absent (project rule: never overwrite an
5
+ * existing file); on re-run a kj:managed block is refreshed in place. JSON
6
+ * formats carry no comment syntax, so they are seed-only (no marker).
7
+ *
8
+ * The eslint ES2025 deprecated-API blacklist lands in a follow-up slice.
9
+ */
10
+
11
+ export const EDITORCONFIG_BODY = [
12
+ "root = true",
13
+ "",
14
+ "[*]",
15
+ "charset = utf-8",
16
+ "end_of_line = lf",
17
+ "insert_final_newline = true",
18
+ "trim_trailing_whitespace = true",
19
+ "indent_style = space",
20
+ "indent_size = 2",
21
+ ].join("\n");
22
+
23
+ export const PRETTIER_BODY = JSON.stringify(
24
+ { printWidth: 110, singleQuote: false, trailingComma: "es5", semi: true },
25
+ null,
26
+ 2
27
+ );
28
+
29
+ export const COMMITLINT_BODY = [
30
+ "// Conventional Commits — header <=100 chars, lowercase subject.",
31
+ "export default {",
32
+ ' extends: ["@commitlint/config-conventional"],',
33
+ " rules: {",
34
+ ' "header-max-length": [2, "always", 100],',
35
+ ' "subject-case": [2, "never", ["sentence-case", "start-case", "pascal-case", "upper-case"]],',
36
+ " },",
37
+ "};",
38
+ ].join("\n");
39
+
40
+ // Self-contained flat config (no plugin deps) banning APIs deprecated under
41
+ // an ES2025 target — mirrors the Karajan standard. Seeded only when the
42
+ // project has no eslint config of its own.
43
+ export const ESLINT_BODY = [
44
+ "export default [",
45
+ " {",
46
+ ' files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],',
47
+ ' languageOptions: { ecmaVersion: 2025, sourceType: "module" },',
48
+ " rules: {",
49
+ ' "no-var": "error",',
50
+ ' "no-eval": "error",',
51
+ ' "no-new-func": "error",',
52
+ ' "no-restricted-globals": [',
53
+ ' "error",',
54
+ ' { name: "alert", message: "Use the app modal, not alert()." },',
55
+ ' { name: "confirm", message: "Use the app modal, not confirm()." },',
56
+ ' { name: "prompt", message: "Use the app modal, not prompt()." },',
57
+ ' { name: "escape", message: "Use encodeURIComponent()." },',
58
+ ' { name: "unescape", message: "Use decodeURIComponent()." },',
59
+ ' { name: "event", message: "Use the handler parameter, not window.event." },',
60
+ " ],",
61
+ ' "no-restricted-properties": [',
62
+ ' "error",',
63
+ ' { object: "document", property: "write", message: "Use DOM nodes / Blob URLs, not document.write." },',
64
+ ' { object: "document", property: "writeln", message: "Use DOM nodes, not document.writeln." },',
65
+ ' { property: "substr", message: "Use slice() or substring(), not substr()." },',
66
+ " ],",
67
+ " },",
68
+ " },",
69
+ "];",
70
+ ].join("\n");
71
+
72
+ // Ruff covers lint + format for Python; `UP` (pyupgrade) is the analogue of
73
+ // the ES2025 deprecated-API ban — it rewrites legacy idioms to modern Python.
74
+ export const RUFF_BODY = [
75
+ "line-length = 110",
76
+ 'target-version = "py312"',
77
+ "",
78
+ "[lint]",
79
+ 'select = ["E", "F", "I", "UP", "B", "SIM"]',
80
+ ].join("\n");
81
+
82
+ export const GOLANGCI_BODY = [
83
+ "linters:",
84
+ " enable:",
85
+ " - govet",
86
+ " - staticcheck",
87
+ " - revive",
88
+ " - ineffassign",
89
+ " - gofmt",
90
+ ].join("\n");
91
+
92
+ /** Language-agnostic configs (every stack gets these). */
93
+ export const UNIVERSAL_CONFIGS = [
94
+ { file: ".editorconfig", blockId: "editorconfig", style: "hash", body: EDITORCONFIG_BODY },
95
+ { file: "commitlint.config.js", blockId: "commitlint", style: "slash", body: COMMITLINT_BODY },
96
+ ];
97
+
98
+ /** `json:true` ⇒ seed-only (no comment syntax for a marker). */
99
+ export const JS_CONFIGS = [
100
+ { file: "eslint.config.js", blockId: "eslint", style: "slash", body: ESLINT_BODY },
101
+ { file: ".prettierrc.json", json: true, body: PRETTIER_BODY },
102
+ ];
103
+ export const PY_CONFIGS = [{ file: "ruff.toml", blockId: "ruff", style: "hash", body: RUFF_BODY }];
104
+ export const GO_CONFIGS = [{ file: ".golangci.yml", blockId: "golangci", style: "hash", body: GOLANGCI_BODY }];
105
+
106
+ /** Lint/format configs by detected language. Unknown ⇒ universal only. */
107
+ export const CONFIGS_BY_LANGUAGE = {
108
+ javascript: JS_CONFIGS,
109
+ typescript: JS_CONFIGS,
110
+ python: PY_CONFIGS,
111
+ go: GO_CONFIGS,
112
+ };