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
@@ -0,0 +1,48 @@
1
+ /**
2
+ * guidelines-engine — seeds AI-agent guideline files for `kj harden`
3
+ * (KJC-TSK-0559), absorbing dev-hooks' generate_guidelines without an external
4
+ * MCP. Writes a kj:managed block into AGENTS.md and CLAUDE.md, preserving any
5
+ * content the user keeps outside the markers. Idempotent.
6
+ */
7
+
8
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
9
+ import { join } from "node:path";
10
+
11
+ import { upsertManagedBlock } from "../utils/managed-markers.js";
12
+ import { GUIDELINES_BODY } from "./guidelines-templates.js";
13
+
14
+ const BLOCK_VERSION = 1;
15
+ const TARGETS = ["AGENTS.md", "CLAUDE.md"];
16
+ const DH_START = "<!-- @manufosela/dev-git-hooks:start -->";
17
+ const DH_END = "<!-- @manufosela/dev-git-hooks:end -->";
18
+
19
+ /** Remove a legacy dev-hooks managed block, preserving everything else. */
20
+ export function stripDevHooksBlock(source) {
21
+ const s = source.indexOf(DH_START);
22
+ if (s === -1) return { content: source, migrated: false };
23
+ const e = source.indexOf(DH_END, s);
24
+ if (e === -1) return { content: source, migrated: false };
25
+ const before = source.slice(0, s).replace(/\n+$/, "");
26
+ const after = source.slice(e + DH_END.length).replace(/^\n+/, "");
27
+ const joiner = before && after ? "\n\n" : "";
28
+ return { content: `${before}${joiner}${after}`, migrated: true };
29
+ }
30
+
31
+ export function installGuidelines({ projectDir = process.cwd(), dryRun = false } = {}) {
32
+ const results = [];
33
+ for (const file of TARGETS) {
34
+ const target = join(projectDir, file);
35
+ const raw = existsSync(target) ? readFileSync(target, "utf8") : "";
36
+ const { content: source, migrated } = stripDevHooksBlock(raw);
37
+ const { content, action } = upsertManagedBlock({
38
+ source,
39
+ blockId: "guidelines",
40
+ version: BLOCK_VERSION,
41
+ body: GUIDELINES_BODY,
42
+ style: "html",
43
+ });
44
+ if (!dryRun && (migrated || action !== "unchanged")) writeFileSync(target, content);
45
+ results.push({ file, action: migrated ? "migrated" : action });
46
+ }
47
+ return { dryRun, guidelines: results };
48
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Distilled AI-agent guidelines for `kj harden` (KJC-TSK-0559).
3
+ *
4
+ * A compact, high-signal rule set seeded into AGENTS.md / CLAUDE.md inside a
5
+ * kj:managed block, so it preserves whatever the user wrote outside it. Kept
6
+ * deliberately short — these rules enter the agent's context on every run, so
7
+ * bloat dilutes the signal. Distilled from the dev-toolkit guidelines.
8
+ */
9
+
10
+ export const GUIDELINES_BODY = [
11
+ "# Project guidelines (kj harden)",
12
+ "",
13
+ "## Code",
14
+ "- SOLID, DRY, KISS, YAGNI. `const` by default; arrow callbacks; template literals.",
15
+ "- ES2025 target: never `var`, `document.write`, `alert`/`confirm`/`prompt`, `escape`/`unescape`, `substr`.",
16
+ " Prefer modern APIs (`structuredClone`, `Object.groupBy`, `Array.at`/`findLast`/`toSorted`, optional chaining, `??`).",
17
+ "- ES modules (`import`/`export`), never `require` in new code. Names in English, descriptive.",
18
+ "- No silent fallbacks: the system works or fails loudly. Validate and sanitize all input.",
19
+ "",
20
+ "## Commits & PRs",
21
+ "- Conventional Commits (`feat:`/`fix:`/`refactor:`/`docs:`/`test:`/`chore:`). Header <=100 chars, lowercase subject.",
22
+ '- Never attribute commits or PRs to AI (no `Co-Authored-By`, no "generated by").',
23
+ "- Atomic PRs: one purpose, small (~150 LOC). Each PR compiles and passes its tests on its own.",
24
+ "",
25
+ "## Testing",
26
+ "- Test-first. Run the tests after each meaningful change. Never skip tests.",
27
+ "",
28
+ "## Security",
29
+ "- Never commit secrets, keys or tokens. Parameterized queries; sanitize output against XSS.",
30
+ "",
31
+ "## UI/UX",
32
+ "- No native `alert`/`confirm`/`prompt` — use the app's modal system. Loading states; accessible; mobile-first.",
33
+ "",
34
+ "## Files",
35
+ "- Edit existing files in place; never overwrite a whole file to make a small change.",
36
+ ].join("\n");
@@ -0,0 +1,66 @@
1
+ /**
2
+ * harden-engine — installs kj-managed git hooks idempotently (KJC-TSK-0555).
3
+ *
4
+ * Hooks live under `.karajan/hooks/` and are activated via `core.hooksPath`,
5
+ * so harden never fights husky/simple-git-hooks nor touches `.git/hooks/`.
6
+ * Each hook is a shebang + a kj:managed block; re-running is a no-op and any
7
+ * content outside the block is preserved.
8
+ */
9
+
10
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
11
+ import { join } from "node:path";
12
+
13
+ import { upsertManagedBlock } from "../utils/managed-markers.js";
14
+ import { runCommand } from "../utils/process.js";
15
+ import { hookBody, PROFILE_HOOKS, SHEBANG } from "./hook-templates.js";
16
+
17
+ const BLOCK_VERSION = 1;
18
+ const HOOKS_DIR = join(".karajan", "hooks");
19
+ const HOOK_PREAMBLE = `${SHEBANG}\nset -e\n`;
20
+
21
+ export function isGitRepo(projectDir) {
22
+ return existsSync(join(projectDir, ".git"));
23
+ }
24
+
25
+ /**
26
+ * Install (or refresh) the profile's hooks under `.karajan/hooks/` and point
27
+ * `core.hooksPath` there. Idempotent. `dryRun` computes actions without
28
+ * touching disk or git config. `cmds` supplies stack-aware lint/format/test
29
+ * commands (npm-script defaults). Returns a per-hook action report.
30
+ */
31
+ export async function installHooks({
32
+ projectDir = process.cwd(),
33
+ profile = "standard",
34
+ cmds = {},
35
+ dryRun = false,
36
+ } = {}) {
37
+ if (!isGitRepo(projectDir)) throw new Error(`Not a git repository: ${projectDir}`);
38
+ const hooks = PROFILE_HOOKS[profile];
39
+ if (!hooks) throw new Error(`Unknown harden profile: ${profile}`);
40
+
41
+ const absHooksDir = join(projectDir, HOOKS_DIR);
42
+ const results = [];
43
+ for (const hook of hooks) {
44
+ const target = join(absHooksDir, hook);
45
+ const source = existsSync(target) ? readFileSync(target, "utf8") : HOOK_PREAMBLE;
46
+ const { content, action } = upsertManagedBlock({
47
+ source,
48
+ blockId: `hook:${hook}`,
49
+ version: BLOCK_VERSION,
50
+ body: hookBody(hook, cmds),
51
+ style: "hash",
52
+ });
53
+ results.push({ hook, target, action });
54
+ if (!dryRun && action !== "unchanged") {
55
+ mkdirSync(absHooksDir, { recursive: true });
56
+ writeFileSync(target, content);
57
+ chmodSync(target, 0o755);
58
+ }
59
+ }
60
+
61
+ if (!dryRun) {
62
+ await runCommand("git", ["config", "core.hooksPath", HOOKS_DIR], { cwd: projectDir });
63
+ }
64
+
65
+ return { profile, hooksPath: HOOKS_DIR, dryRun, hooks: results };
66
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Native lint/format/test commands per language for `kj harden` hooks
3
+ * (KJC-TSK-0562).
4
+ *
5
+ * The installed hooks call the project's OWN toolchain, never npm by default,
6
+ * so hardening a Go/Python repo never drags Node onto a contributor's machine.
7
+ * JavaScript/TypeScript is built from package.json scripts by the caller (its
8
+ * commands depend on what the project defines). Unknown language ⇒ no commands,
9
+ * leaving only the universal POSIX-shell checks.
10
+ */
11
+
12
+ export const COMMANDS_BY_LANGUAGE = {
13
+ python: { lint: "ruff check .", format: "ruff format --check .", test: "pytest" },
14
+ go: { lint: "go vet ./...", format: 'test -z "$(gofmt -l .)"', test: "go test ./..." },
15
+ };
16
+
17
+ /** Native commands for a language, or {} when JS/TS or unknown. */
18
+ export function commandsForLanguage(language) {
19
+ return COMMANDS_BY_LANGUAGE[language] ?? {};
20
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Hook bodies + profile→hooks mapping for `kj harden` (KJC-TSK-0555, 0562).
3
+ *
4
+ * A body is the MANAGED portion only; harden-engine adds the shebang and the
5
+ * kj:managed markers around it. Pure POSIX sh — the universal checks (commit
6
+ * format, AI-attribution) need no toolchain, and lint/format/test lines call
7
+ * the project's NATIVE commands (from `cmds`), only when present. No npm/Node
8
+ * is imposed on non-JS repos. See docs/specs/quality-harness.md §5.
9
+ */
10
+
11
+ const CONVENTIONAL_TYPES = "feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert";
12
+ const AI_ATTRIBUTION = "co-authored-by:.*(claude|gpt|copilot|gemini)|(generated|written) (by|with) .*(claude|gpt|copilot)";
13
+
14
+ export const SHEBANG = "#!/usr/bin/env sh";
15
+
16
+ /** Hooks enabled per profile. */
17
+ export const PROFILE_HOOKS = {
18
+ minimal: ["commit-msg"],
19
+ standard: ["pre-commit", "commit-msg", "pre-push", "post-merge"],
20
+ strict: ["pre-commit", "commit-msg", "pre-push", "post-merge"],
21
+ };
22
+
23
+ /** Build the managed body for a single hook. */
24
+ export function hookBody(hook, cmds = {}) {
25
+ switch (hook) {
26
+ case "pre-commit": {
27
+ const lines = ["# Lint + format the working tree with the project's native tools."];
28
+ if (cmds.lint) lines.push(`${cmds.lint} || { echo 'kj harden: lint failed'; exit 1; }`);
29
+ if (cmds.format) lines.push(`${cmds.format} || { echo 'kj harden: format check failed'; exit 1; }`);
30
+ if (!cmds.lint && !cmds.format) lines.push("# (no lint/format command detected for this stack)");
31
+ return lines.join("\n");
32
+ }
33
+ case "commit-msg":
34
+ // Pure POSIX — Conventional Commits header, length cap, AI-attribution.
35
+ return [
36
+ 'msg_file="$1"',
37
+ 'header=$(head -n1 "$msg_file")',
38
+ `if ! printf '%s' "$header" | grep -qE '^(${CONVENTIONAL_TYPES})(\\([a-z0-9._-]+\\))?!?: .+'; then`,
39
+ " echo 'kj harden: commit header must follow Conventional Commits (type: subject)'; exit 1",
40
+ "fi",
41
+ 'if [ "${#header}" -gt 100 ]; then echo \'kj harden: commit header exceeds 100 chars\'; exit 1; fi',
42
+ `if grep -qiE '${AI_ATTRIBUTION}' "$msg_file"; then`,
43
+ " echo 'kj harden: AI attribution is not allowed in commit messages'; exit 1",
44
+ "fi",
45
+ ].join("\n");
46
+ case "pre-push": {
47
+ const lines = [
48
+ "# Identity guard — never push without a configured git identity.",
49
+ 'if [ -z "$(git config user.email)" ] || [ -z "$(git config user.name)" ]; then',
50
+ " echo 'kj harden: git user.name/user.email not set — refusing to push'; exit 1",
51
+ "fi",
52
+ 'echo "kj harden: pushing as $(git config user.name) <$(git config user.email)>"',
53
+ "# Run the test suite before pushing.",
54
+ ];
55
+ if (cmds.test) lines.push(`${cmds.test} || { echo 'kj harden: tests failed'; exit 1; }`);
56
+ else lines.push("# (no test command detected for this stack)");
57
+ return lines.join("\n");
58
+ }
59
+ case "post-merge":
60
+ return [
61
+ "# Refresh the local RAG index so retrieval never serves stale code.",
62
+ "if command -v kj >/dev/null 2>&1; then",
63
+ " kj rag index --since auto >/dev/null 2>&1 || true",
64
+ "fi",
65
+ ].join("\n");
66
+ default:
67
+ throw new Error(`Unknown hook: ${hook}`);
68
+ }
69
+ }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * detectStackRoots — find every language root in a (possibly monorepo) tree
3
+ * for `kj harden` (KJC-TSK-0561).
4
+ *
5
+ * Walks the project up to a shallow depth and returns the shallowest
6
+ * directory where each language appears, e.g. a fullstack repo yields
7
+ * `[{dir:"frontend",language:"javascript"},{dir:"backend",language:"python"}]`
8
+ * so lint/format config is seeded on each side. Universal config (handled by
9
+ * the caller) stays at the project root. Noise dirs are never descended.
10
+ */
11
+
12
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
13
+ import { join, relative } from "node:path";
14
+
15
+ const IGNORE_DIRS = new Set([
16
+ "node_modules",
17
+ "dist",
18
+ "build",
19
+ "coverage",
20
+ "vendor",
21
+ "target",
22
+ "__pycache__",
23
+ "venv",
24
+ ]);
25
+ const DEFAULT_MAX_DEPTH = 2;
26
+
27
+ /** Identify the language of a single directory by its manifest files. */
28
+ export function languageAt(dir) {
29
+ if (existsSync(join(dir, "package.json"))) {
30
+ if (existsSync(join(dir, "tsconfig.json"))) return "typescript";
31
+ try {
32
+ const pkg = JSON.parse(readFileSync(join(dir, "package.json"), "utf8"));
33
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
34
+ if (deps.typescript || deps["ts-node"]) return "typescript";
35
+ } catch {
36
+ /* unreadable package.json → treat as plain JS */
37
+ }
38
+ return "javascript";
39
+ }
40
+ if (["pyproject.toml", "requirements.txt", "setup.py"].some((f) => existsSync(join(dir, f)))) return "python";
41
+ if (existsSync(join(dir, "go.mod"))) return "go";
42
+ return null;
43
+ }
44
+
45
+ export function detectStackRoots(projectDir, { maxDepth = DEFAULT_MAX_DEPTH } = {}) {
46
+ const found = [];
47
+ function walk(dir, depth) {
48
+ const language = languageAt(dir);
49
+ if (language) found.push({ dir: relative(projectDir, dir) || ".", language, depth });
50
+ if (depth >= maxDepth) return;
51
+ let entries;
52
+ try {
53
+ entries = readdirSync(dir, { withFileTypes: true });
54
+ } catch {
55
+ return;
56
+ }
57
+ for (const e of entries) {
58
+ if (e.isDirectory() && !e.name.startsWith(".") && !IGNORE_DIRS.has(e.name)) {
59
+ walk(join(dir, e.name), depth + 1);
60
+ }
61
+ }
62
+ }
63
+ walk(projectDir, 0);
64
+
65
+ // Keep only the shallowest directory per language.
66
+ const byLanguage = new Map();
67
+ for (const f of found) {
68
+ const cur = byLanguage.get(f.language);
69
+ if (!cur || f.depth < cur.depth) byLanguage.set(f.language, f);
70
+ }
71
+ return [...byLanguage.values()]
72
+ .map(({ dir, language }) => ({ dir, language }))
73
+ .sort((a, b) => a.dir.localeCompare(b.dir));
74
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * workflow-engine — seeds CI quality workflows for `kj harden` (KJC-TSK-0557).
3
+ *
4
+ * Seed-if-absent into `.github/workflows/`: a workflow the user already wrote
5
+ * (no kj:managed marker) is left untouched and reported "skipped". kj-managed
6
+ * workflows refresh in place. Markers ride in YAML `#` comments.
7
+ */
8
+
9
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
10
+ import { join } from "node:path";
11
+
12
+ import { upsertManagedBlock } from "../utils/managed-markers.js";
13
+ import { extraWorkflowsFor, qualityWorkflowFor, WORKFLOWS } from "./workflow-templates.js";
14
+
15
+ const BLOCK_VERSION = 1;
16
+ const WORKFLOWS_DIR = join(".github", "workflows");
17
+
18
+ /** A package.json that ships code (not private, has bin or main) ⇒ publishable. */
19
+ export function isPublishableNpm(projectDir) {
20
+ const pkgPath = join(projectDir, "package.json");
21
+ if (!existsSync(pkgPath)) return false;
22
+ try {
23
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
24
+ return pkg.private !== true && Boolean(pkg.bin || pkg.main);
25
+ } catch {
26
+ return false;
27
+ }
28
+ }
29
+
30
+ export function installWorkflows({
31
+ projectDir = process.cwd(),
32
+ language = null,
33
+ profile = "standard",
34
+ dryRun = false,
35
+ } = {}) {
36
+ const dir = join(projectDir, WORKFLOWS_DIR);
37
+ const quality = qualityWorkflowFor(language);
38
+ const extras = extraWorkflowsFor({ profile, publishable: isPublishableNpm(projectDir) });
39
+ const all = [...WORKFLOWS, ...(quality ? [quality] : []), ...extras];
40
+ const results = [];
41
+ for (const wf of all) {
42
+ const target = join(dir, wf.file);
43
+ const label = join(WORKFLOWS_DIR, wf.file);
44
+ const exists = existsSync(target);
45
+ const source = exists ? readFileSync(target, "utf8") : "";
46
+ if (exists && !source.includes(`kj:managed:${wf.blockId}`)) {
47
+ results.push({ file: label, action: "skipped" });
48
+ continue;
49
+ }
50
+ const { content, action } = upsertManagedBlock({
51
+ source,
52
+ blockId: wf.blockId,
53
+ version: BLOCK_VERSION,
54
+ body: wf.body,
55
+ style: "hash",
56
+ });
57
+ if (!dryRun && action !== "unchanged") {
58
+ mkdirSync(dir, { recursive: true });
59
+ writeFileSync(target, content);
60
+ }
61
+ results.push({ file: label, action });
62
+ }
63
+ return { dryRun, workflows: results };
64
+ }
@@ -0,0 +1,152 @@
1
+ /**
2
+ * CI workflow templates for `kj harden` (KJC-TSK-0557).
3
+ *
4
+ * Generic, language-agnostic GitHub Actions that `kj harden` seeds into a
5
+ * target repo's `.github/workflows/`. Bodies are plain strings (NOT template
6
+ * literals) so the `${{ … }}` GitHub expressions survive verbatim.
7
+ */
8
+
9
+ // Blocks AI self-attribution in PR commit messages. Pure bash + grep, no Node.
10
+ // Pins github.base_ref to an env var (never interpolated into the run block).
11
+ export const NO_AI_ATTRIBUTION_WORKFLOW = [
12
+ "name: Block AI attribution",
13
+ "on:",
14
+ " pull_request:",
15
+ " branches: [main]",
16
+ "permissions:",
17
+ " contents: read",
18
+ "jobs:",
19
+ " scan:",
20
+ " runs-on: ubuntu-latest",
21
+ " steps:",
22
+ " - uses: actions/checkout@v4",
23
+ " with:",
24
+ " fetch-depth: 0",
25
+ " - name: Scan commit messages for AI attribution",
26
+ " env:",
27
+ " BASE_REF: ${{ github.base_ref }}",
28
+ " run: |",
29
+ ' msgs=$(git log --format=%B "origin/${BASE_REF}...HEAD" || true)',
30
+ " pat='co-authored-by:.*(claude|anthropic|openai|chatgpt|gpt-[0-9]|copilot|gemini|cursor|windsurf|codeium|deepseek)'",
31
+ " pat=\"$pat|(generated|written|authored|assisted|powered) (by|with|using) .*(claude|anthropic|openai|copilot|gemini)\"",
32
+ ' if printf "%s" "$msgs" | grep -qiE "$pat"; then',
33
+ ' echo "::error::AI attribution detected in commit messages"; exit 1',
34
+ " fi",
35
+ ' echo "AI attribution scan: clean"',
36
+ ].join("\n");
37
+
38
+ /** Universal workflows (every stack). style:hash ⇒ marker in YAML comments. */
39
+ export const WORKFLOWS = [
40
+ { file: "kj-no-ai-attribution.yml", blockId: "wf-no-ai", body: NO_AI_ATTRIBUTION_WORKFLOW },
41
+ ];
42
+
43
+ const header = (steps) =>
44
+ [
45
+ "name: Quality",
46
+ "on:",
47
+ " pull_request:",
48
+ " branches: [main]",
49
+ "jobs:",
50
+ " quality:",
51
+ " runs-on: ubuntu-latest",
52
+ " steps:",
53
+ " - uses: actions/checkout@v4",
54
+ ...steps,
55
+ ].join("\n");
56
+
57
+ const QUALITY_BY_LANGUAGE = {
58
+ javascript: header([
59
+ " - uses: actions/setup-node@v4",
60
+ " with:",
61
+ " node-version: 22",
62
+ " - run: npm ci",
63
+ " - run: npm run -s lint --if-present",
64
+ " - run: npm test",
65
+ ]),
66
+ python: header([
67
+ " - uses: actions/setup-python@v5",
68
+ " with:",
69
+ " python-version: '3.12'",
70
+ " - run: pip install ruff pytest",
71
+ " - run: ruff check .",
72
+ " - run: pytest",
73
+ ]),
74
+ go: header([
75
+ " - uses: actions/setup-go@v5",
76
+ " with:",
77
+ " go-version: stable",
78
+ " - run: go vet ./...",
79
+ " - run: go test ./...",
80
+ ]),
81
+ };
82
+ QUALITY_BY_LANGUAGE.typescript = QUALITY_BY_LANGUAGE.javascript;
83
+
84
+ /** Stack-aware Quality workflow entry, or null for an unknown language. */
85
+ export function qualityWorkflowFor(language) {
86
+ const body = QUALITY_BY_LANGUAGE[language];
87
+ return body ? { file: "kj-quality.yml", blockId: "wf-quality", body } : null;
88
+ }
89
+
90
+ // Caps the net LOC delta of a PR (strict profile only — it is opinionated).
91
+ export const SHRINK_BUDGET_WORKFLOW = [
92
+ "name: Shrink budget",
93
+ "on:",
94
+ " pull_request:",
95
+ " branches: [main]",
96
+ "permissions:",
97
+ " contents: read",
98
+ "jobs:",
99
+ " budget:",
100
+ " runs-on: ubuntu-latest",
101
+ ' env: { LOC_LIMIT: "200" }',
102
+ " steps:",
103
+ " - uses: actions/checkout@v4",
104
+ " with:",
105
+ " fetch-depth: 0",
106
+ " - name: Net LOC delta within budget",
107
+ " env:",
108
+ " BASE_REF: ${{ github.base_ref }}",
109
+ " run: |",
110
+ " d=$(git diff --numstat \"origin/${BASE_REF}...HEAD\" -- . ':!**/*.md' ':!*.lock' ':!package-lock.json' || true)",
111
+ ' a=$(printf "%s\\n" "$d" | awk \'$1!="-"{s+=$1}END{print s+0}\')',
112
+ ' r=$(printf "%s\\n" "$d" | awk \'$2!="-"{s+=$2}END{print s+0}\')',
113
+ ' net=$((a - r)); echo "net=$net (limit=$LOC_LIMIT)"',
114
+ ' if [ "$net" -gt "$LOC_LIMIT" ]; then echo "::error::PR adds $net net lines (limit $LOC_LIMIT)"; exit 1; fi',
115
+ ].join("\n");
116
+
117
+ // Packs the tarball and installs it clean — only for publishable npm packages.
118
+ export const PACK_SMOKE_WORKFLOW = [
119
+ "name: Pack smoke",
120
+ "on:",
121
+ " pull_request:",
122
+ " branches: [main]",
123
+ "permissions:",
124
+ " contents: read",
125
+ "jobs:",
126
+ " pack-smoke:",
127
+ " runs-on: ubuntu-latest",
128
+ " steps:",
129
+ " - uses: actions/checkout@v4",
130
+ " - uses: actions/setup-node@v4",
131
+ " with:",
132
+ " node-version: 22",
133
+ " - run: npm ci",
134
+ " - name: Pack and install the tarball clean",
135
+ " run: |",
136
+ " tgz=$(npm pack --silent)",
137
+ " dir=$(mktemp -d)",
138
+ ' npm install --prefix "$dir" "$PWD/$tgz" --no-audit --no-fund',
139
+ ' echo "Tarball installs clean: $tgz"',
140
+ ].join("\n");
141
+
142
+ /** Conditional workflows: shrink-budget on strict, pack-smoke when publishable. */
143
+ export function extraWorkflowsFor({ profile = "standard", publishable = false } = {}) {
144
+ const extras = [];
145
+ if (profile === "strict") {
146
+ extras.push({ file: "kj-shrink-budget.yml", blockId: "wf-shrink", body: SHRINK_BUDGET_WORKFLOW });
147
+ }
148
+ if (publishable) {
149
+ extras.push({ file: "kj-pack-smoke.yml", blockId: "wf-pack-smoke", body: PACK_SMOKE_WORKFLOW });
150
+ }
151
+ return extras;
152
+ }
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Managed-markers — idempotent file-block scaffolding for `kj harden`
3
+ * (KJC-TSK-0555, design in docs/specs/quality-harness.md §4).
4
+ *
5
+ * harden owns ONLY the content between a pair of markers; everything else in
6
+ * the file is preserved verbatim. Re-running with the same input is a no-op.
7
+ * Generalises the `KJC-TSK-0455` marker already used by the post-merge hook
8
+ * installer, and honours the project rule "never overwrite existing files".
9
+ *
10
+ * Block shape (comment syntax varies by file type):
11
+ * # >>> kj:managed:<id> v<N> >>> (do not edit: regenerated by kj harden)
12
+ * …managed body…
13
+ * # <<< kj:managed:<id> <<<
14
+ */
15
+
16
+ const DEFAULT_NOTE = "do not edit: regenerated by kj harden";
17
+
18
+ /** Wrap marker payload text in the comment syntax for a given style. */
19
+ const COMMENT = {
20
+ hash: (text) => `# ${text}`,
21
+ slash: (text) => `// ${text}`,
22
+ html: (text) => `<!-- ${text} -->`,
23
+ };
24
+
25
+ /** Pick a comment style from a file path. Defaults to hash (shell/yaml/conf). */
26
+ export function commentStyleFor(filePath = "") {
27
+ if (/\.(md|markdown|mdx)$/i.test(filePath)) return "html";
28
+ if (/\.(m?[jt]sx?|c[jt]s)$/i.test(filePath)) return "slash";
29
+ return "hash";
30
+ }
31
+
32
+ const openPayload = (blockId, version) => `>>> kj:managed:${blockId} v${version} >>>`;
33
+ const closePayload = (blockId) => `<<< kj:managed:${blockId} <<<`;
34
+
35
+ /** Render the full managed block (open marker + body + close marker). */
36
+ export function buildManagedBlock({ blockId, version, body, style = "hash", note = DEFAULT_NOTE }) {
37
+ const comment = COMMENT[style] ?? COMMENT.hash;
38
+ const open = comment(`${openPayload(blockId, version)} (${note})`);
39
+ const close = comment(closePayload(blockId));
40
+ return `${open}\n${body}\n${close}`;
41
+ }
42
+
43
+ /**
44
+ * Locate a managed block by id in `source`, regardless of comment style or
45
+ * version. Returns line indices and the detected version, or { found:false }.
46
+ */
47
+ export function findManagedBlock(source = "", blockId) {
48
+ const lines = source.split("\n");
49
+ const openTag = `>>> kj:managed:${blockId} v`;
50
+ const closeTag = `<<< kj:managed:${blockId} <<<`;
51
+ let startLine = -1;
52
+ let version = null;
53
+ for (let i = 0; i < lines.length; i += 1) {
54
+ const at = lines[i].indexOf(openTag);
55
+ if (at === -1) continue;
56
+ const rest = lines[i].slice(at + openTag.length);
57
+ const end = rest.indexOf(" >>>");
58
+ const digits = end === -1 ? "" : rest.slice(0, end);
59
+ if (/^\d+$/.test(digits)) {
60
+ startLine = i;
61
+ version = Number(digits);
62
+ break;
63
+ }
64
+ }
65
+ if (startLine === -1) return { found: false };
66
+ for (let i = startLine + 1; i < lines.length; i += 1) {
67
+ if (lines[i].includes(closeTag)) return { found: true, startLine, endLine: i, version };
68
+ }
69
+ return { found: false, malformed: true, startLine };
70
+ }
71
+
72
+ /**
73
+ * Insert or update the managed block for `blockId` in `source`, preserving all
74
+ * content outside the markers. Idempotent: identical input → action "unchanged".
75
+ *
76
+ * @returns {{content: string, action: "inserted"|"updated"|"unchanged", previousVersion: number|null}}
77
+ */
78
+ export function upsertManagedBlock({ source = "", blockId, version, body, style = "hash", note }) {
79
+ const block = buildManagedBlock({ blockId, version, body, style, note });
80
+ const existing = findManagedBlock(source, blockId);
81
+
82
+ if (!existing.found) {
83
+ const base = source === "" ? "" : source.replace(/\n*$/, "\n");
84
+ return { content: `${base}${block}\n`, action: "inserted", previousVersion: null };
85
+ }
86
+
87
+ const lines = source.split("\n");
88
+ const before = lines.slice(0, existing.startLine);
89
+ const after = lines.slice(existing.endLine + 1);
90
+ const content = [...before, ...block.split("\n"), ...after].join("\n");
91
+ if (content === source) return { content, action: "unchanged", previousVersion: existing.version };
92
+ return { content, action: "updated", previousVersion: existing.version };
93
+ }
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 Ze-Zheng Wu
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.