karajan-code 3.3.0 → 3.4.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 (747) hide show
  1. package/README.md +1 -1
  2. package/node_modules/@karajan/core/README.md +42 -0
  3. package/node_modules/@karajan/core/package.json +38 -0
  4. package/node_modules/@karajan/core/src/atomic-write.js +43 -0
  5. package/node_modules/@karajan/core/src/cost/index.js +102 -0
  6. package/node_modules/@karajan/core/src/hu-snapshot.js +105 -0
  7. package/node_modules/@karajan/core/src/index.js +18 -0
  8. package/node_modules/@karajan/core/src/paths.js +123 -0
  9. package/node_modules/@karajan/core/src/plan-hu-ops.js +338 -0
  10. package/node_modules/@karajan/core/src/plan-id.js +45 -0
  11. package/node_modules/@karajan/core/src/plan-validation.js +82 -0
  12. package/node_modules/@karajan/core/src/port-check.js +45 -0
  13. package/node_modules/@karajan/core/src/pricing/index.js +64 -0
  14. package/node_modules/@karajan/core/src/pricing/model-pricing.json +28 -0
  15. package/node_modules/@karajan/core/src/process.js +188 -0
  16. package/node_modules/@karajan/core/src/run-registry.js +115 -0
  17. package/node_modules/@karajan/core/src/shared-paths.js +41 -0
  18. package/node_modules/@karajan/core/src/standby-scheduler.js +92 -0
  19. package/node_modules/@karajan/core/src/standby-store.js +168 -0
  20. package/node_modules/@karajan/core/src/vec-store.js +253 -0
  21. package/node_modules/@karajan/core/tests/atomic-write.test.js +30 -0
  22. package/node_modules/@karajan/core/tests/cost/index.test.js +89 -0
  23. package/node_modules/@karajan/core/tests/hu-snapshot.test.js +39 -0
  24. package/node_modules/@karajan/core/tests/paths.test.js +51 -0
  25. package/node_modules/@karajan/core/tests/plan-hu-ops.test.js +68 -0
  26. package/node_modules/@karajan/core/tests/plan-id.test.js +21 -0
  27. package/node_modules/@karajan/core/tests/plan-validation.test.js +39 -0
  28. package/node_modules/@karajan/core/tests/port-check.test.js +47 -0
  29. package/node_modules/@karajan/core/tests/pricing/index.test.js +95 -0
  30. package/node_modules/@karajan/core/tests/process.test.js +22 -0
  31. package/node_modules/@karajan/core/tests/run-registry.test.js +71 -0
  32. package/node_modules/@karajan/core/tests/shared-paths.test.js +30 -0
  33. package/node_modules/@karajan/core/tests/standby.test.js +66 -0
  34. package/node_modules/@karajan/core/tests/vec-store.test.js +98 -0
  35. package/node_modules/@karajan/core/vitest.config.js +12 -0
  36. package/node_modules/@sec-ant/readable-stream/LICENSE +21 -0
  37. package/node_modules/@sec-ant/readable-stream/README.md +230 -0
  38. package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterablePrototype.d.ts +1 -0
  39. package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterator.d.ts +27 -0
  40. package/node_modules/@sec-ant/readable-stream/dist/core/fromAnyIterable.d.ts +6 -0
  41. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.d.ts +2 -0
  42. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.js +5 -0
  43. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.d.ts +2 -0
  44. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.js +5 -0
  45. package/node_modules/@sec-ant/readable-stream/dist/index/index.d.ts +2 -0
  46. package/node_modules/@sec-ant/readable-stream/dist/index/index.js +8 -0
  47. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.d.ts +1 -0
  48. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.js +3 -0
  49. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.d.ts +1 -0
  50. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.js +2 -0
  51. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.d.ts +2 -0
  52. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.js +4 -0
  53. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.d.ts +1 -0
  54. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +89 -0
  55. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.d.ts +1 -0
  56. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +34 -0
  57. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.d.ts +2 -0
  58. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +6 -0
  59. package/node_modules/@sec-ant/readable-stream/dist/types/async-iterator.d.ts +11 -0
  60. package/node_modules/@sec-ant/readable-stream/package.json +96 -0
  61. package/node_modules/@sindresorhus/merge-streams/index.d.ts +44 -0
  62. package/node_modules/@sindresorhus/merge-streams/index.js +265 -0
  63. package/node_modules/@sindresorhus/merge-streams/license +9 -0
  64. package/node_modules/@sindresorhus/merge-streams/package.json +49 -0
  65. package/node_modules/@sindresorhus/merge-streams/readme.md +53 -0
  66. package/node_modules/base64-js/LICENSE +21 -0
  67. package/node_modules/base64-js/README.md +34 -0
  68. package/node_modules/base64-js/base64js.min.js +1 -0
  69. package/node_modules/base64-js/index.d.ts +3 -0
  70. package/node_modules/base64-js/index.js +150 -0
  71. package/node_modules/base64-js/package.json +47 -0
  72. package/node_modules/better-sqlite3/LICENSE +21 -0
  73. package/node_modules/better-sqlite3/README.md +99 -0
  74. package/node_modules/better-sqlite3/binding.gyp +38 -0
  75. package/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  76. package/node_modules/better-sqlite3/deps/common.gypi +68 -0
  77. package/node_modules/better-sqlite3/deps/copy.js +31 -0
  78. package/node_modules/better-sqlite3/deps/defines.gypi +42 -0
  79. package/node_modules/better-sqlite3/deps/download.sh +123 -0
  80. package/node_modules/better-sqlite3/deps/patches/1208.patch +15 -0
  81. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +268879 -0
  82. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +14335 -0
  83. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +739 -0
  84. package/node_modules/better-sqlite3/deps/sqlite3.gyp +80 -0
  85. package/node_modules/better-sqlite3/deps/test_extension.c +21 -0
  86. package/node_modules/better-sqlite3/lib/database.js +90 -0
  87. package/node_modules/better-sqlite3/lib/index.js +3 -0
  88. package/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  89. package/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  90. package/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  91. package/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  92. package/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  93. package/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  94. package/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  95. package/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  96. package/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  97. package/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  98. package/node_modules/better-sqlite3/lib/util.js +12 -0
  99. package/node_modules/better-sqlite3/package.json +59 -0
  100. package/node_modules/better-sqlite3/src/addon.cpp +47 -0
  101. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +74 -0
  102. package/node_modules/better-sqlite3/src/objects/backup.cpp +120 -0
  103. package/node_modules/better-sqlite3/src/objects/backup.hpp +36 -0
  104. package/node_modules/better-sqlite3/src/objects/database.cpp +417 -0
  105. package/node_modules/better-sqlite3/src/objects/database.hpp +103 -0
  106. package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +113 -0
  107. package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +50 -0
  108. package/node_modules/better-sqlite3/src/objects/statement.cpp +383 -0
  109. package/node_modules/better-sqlite3/src/objects/statement.hpp +58 -0
  110. package/node_modules/better-sqlite3/src/util/bind-map.cpp +73 -0
  111. package/node_modules/better-sqlite3/src/util/binder.cpp +193 -0
  112. package/node_modules/better-sqlite3/src/util/constants.cpp +172 -0
  113. package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +121 -0
  114. package/node_modules/better-sqlite3/src/util/custom-function.cpp +59 -0
  115. package/node_modules/better-sqlite3/src/util/custom-table.cpp +409 -0
  116. package/node_modules/better-sqlite3/src/util/data-converter.cpp +17 -0
  117. package/node_modules/better-sqlite3/src/util/data.cpp +194 -0
  118. package/node_modules/better-sqlite3/src/util/helpers.cpp +109 -0
  119. package/node_modules/better-sqlite3/src/util/macros.cpp +83 -0
  120. package/node_modules/better-sqlite3/src/util/query-macros.cpp +71 -0
  121. package/node_modules/better-sqlite3/src/util/row-builder.cpp +49 -0
  122. package/node_modules/bindings/LICENSE.md +22 -0
  123. package/node_modules/bindings/README.md +98 -0
  124. package/node_modules/bindings/bindings.js +221 -0
  125. package/node_modules/bindings/package.json +28 -0
  126. package/node_modules/bl/.travis.yml +17 -0
  127. package/node_modules/bl/BufferList.js +396 -0
  128. package/node_modules/bl/LICENSE.md +13 -0
  129. package/node_modules/bl/README.md +247 -0
  130. package/node_modules/bl/bl.js +84 -0
  131. package/node_modules/bl/package.json +37 -0
  132. package/node_modules/bl/test/convert.js +21 -0
  133. package/node_modules/bl/test/indexOf.js +492 -0
  134. package/node_modules/bl/test/isBufferList.js +32 -0
  135. package/node_modules/bl/test/test.js +869 -0
  136. package/node_modules/buffer/AUTHORS.md +70 -0
  137. package/node_modules/buffer/LICENSE +21 -0
  138. package/node_modules/buffer/README.md +410 -0
  139. package/node_modules/buffer/index.d.ts +186 -0
  140. package/node_modules/buffer/index.js +1817 -0
  141. package/node_modules/buffer/package.json +96 -0
  142. package/node_modules/chownr/LICENSE +15 -0
  143. package/node_modules/chownr/README.md +3 -0
  144. package/node_modules/chownr/chownr.js +167 -0
  145. package/node_modules/chownr/package.json +29 -0
  146. package/node_modules/cross-spawn/LICENSE +21 -0
  147. package/node_modules/cross-spawn/README.md +89 -0
  148. package/node_modules/cross-spawn/index.js +39 -0
  149. package/node_modules/cross-spawn/lib/enoent.js +59 -0
  150. package/node_modules/cross-spawn/lib/parse.js +91 -0
  151. package/node_modules/cross-spawn/lib/util/escape.js +47 -0
  152. package/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  153. package/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  154. package/node_modules/cross-spawn/package.json +73 -0
  155. package/node_modules/decompress-response/index.d.ts +22 -0
  156. package/node_modules/decompress-response/index.js +58 -0
  157. package/node_modules/decompress-response/license +9 -0
  158. package/node_modules/decompress-response/package.json +56 -0
  159. package/node_modules/decompress-response/readme.md +48 -0
  160. package/node_modules/deep-extend/CHANGELOG.md +46 -0
  161. package/node_modules/deep-extend/LICENSE +20 -0
  162. package/node_modules/deep-extend/README.md +91 -0
  163. package/node_modules/deep-extend/index.js +1 -0
  164. package/node_modules/deep-extend/lib/deep-extend.js +150 -0
  165. package/node_modules/deep-extend/package.json +62 -0
  166. package/node_modules/detect-libc/LICENSE +201 -0
  167. package/node_modules/detect-libc/README.md +163 -0
  168. package/node_modules/detect-libc/index.d.ts +14 -0
  169. package/node_modules/detect-libc/lib/detect-libc.js +313 -0
  170. package/node_modules/detect-libc/lib/elf.js +39 -0
  171. package/node_modules/detect-libc/lib/filesystem.js +51 -0
  172. package/node_modules/detect-libc/lib/process.js +24 -0
  173. package/node_modules/detect-libc/package.json +44 -0
  174. package/node_modules/end-of-stream/LICENSE +21 -0
  175. package/node_modules/end-of-stream/README.md +54 -0
  176. package/node_modules/end-of-stream/index.js +96 -0
  177. package/node_modules/end-of-stream/package.json +37 -0
  178. package/node_modules/execa/index.d.ts +27 -0
  179. package/node_modules/execa/index.js +28 -0
  180. package/node_modules/execa/lib/arguments/command.js +20 -0
  181. package/node_modules/execa/lib/arguments/cwd.js +39 -0
  182. package/node_modules/execa/lib/arguments/encoding-option.js +50 -0
  183. package/node_modules/execa/lib/arguments/escape.js +88 -0
  184. package/node_modules/execa/lib/arguments/fd-options.js +108 -0
  185. package/node_modules/execa/lib/arguments/file-url.js +25 -0
  186. package/node_modules/execa/lib/arguments/options.js +96 -0
  187. package/node_modules/execa/lib/arguments/shell.js +11 -0
  188. package/node_modules/execa/lib/arguments/specific.js +111 -0
  189. package/node_modules/execa/lib/convert/add.js +15 -0
  190. package/node_modules/execa/lib/convert/concurrent.js +33 -0
  191. package/node_modules/execa/lib/convert/duplex.js +69 -0
  192. package/node_modules/execa/lib/convert/iterable.js +34 -0
  193. package/node_modules/execa/lib/convert/readable.js +113 -0
  194. package/node_modules/execa/lib/convert/shared.js +46 -0
  195. package/node_modules/execa/lib/convert/writable.js +90 -0
  196. package/node_modules/execa/lib/io/contents.js +116 -0
  197. package/node_modules/execa/lib/io/input-sync.js +44 -0
  198. package/node_modules/execa/lib/io/iterate.js +110 -0
  199. package/node_modules/execa/lib/io/max-buffer.js +89 -0
  200. package/node_modules/execa/lib/io/output-async.js +80 -0
  201. package/node_modules/execa/lib/io/output-sync.js +135 -0
  202. package/node_modules/execa/lib/io/pipeline.js +48 -0
  203. package/node_modules/execa/lib/io/strip-newline.js +12 -0
  204. package/node_modules/execa/lib/ipc/array.js +4 -0
  205. package/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
  206. package/node_modules/execa/lib/ipc/forward.js +56 -0
  207. package/node_modules/execa/lib/ipc/get-each.js +89 -0
  208. package/node_modules/execa/lib/ipc/get-one.js +69 -0
  209. package/node_modules/execa/lib/ipc/graceful.js +72 -0
  210. package/node_modules/execa/lib/ipc/incoming.js +79 -0
  211. package/node_modules/execa/lib/ipc/ipc-input.js +44 -0
  212. package/node_modules/execa/lib/ipc/methods.js +49 -0
  213. package/node_modules/execa/lib/ipc/outgoing.js +47 -0
  214. package/node_modules/execa/lib/ipc/reference.js +44 -0
  215. package/node_modules/execa/lib/ipc/send.js +91 -0
  216. package/node_modules/execa/lib/ipc/strict.js +113 -0
  217. package/node_modules/execa/lib/ipc/validation.js +111 -0
  218. package/node_modules/execa/lib/methods/bind.js +23 -0
  219. package/node_modules/execa/lib/methods/command.js +43 -0
  220. package/node_modules/execa/lib/methods/create.js +65 -0
  221. package/node_modules/execa/lib/methods/main-async.js +194 -0
  222. package/node_modules/execa/lib/methods/main-sync.js +163 -0
  223. package/node_modules/execa/lib/methods/node.js +51 -0
  224. package/node_modules/execa/lib/methods/parameters.js +31 -0
  225. package/node_modules/execa/lib/methods/promise.js +15 -0
  226. package/node_modules/execa/lib/methods/script.js +22 -0
  227. package/node_modules/execa/lib/methods/template.js +153 -0
  228. package/node_modules/execa/lib/pipe/abort.js +20 -0
  229. package/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
  230. package/node_modules/execa/lib/pipe/sequence.js +24 -0
  231. package/node_modules/execa/lib/pipe/setup.js +72 -0
  232. package/node_modules/execa/lib/pipe/streaming.js +51 -0
  233. package/node_modules/execa/lib/pipe/throw.js +58 -0
  234. package/node_modules/execa/lib/resolve/all-async.js +46 -0
  235. package/node_modules/execa/lib/resolve/all-sync.js +33 -0
  236. package/node_modules/execa/lib/resolve/exit-async.js +54 -0
  237. package/node_modules/execa/lib/resolve/exit-sync.js +25 -0
  238. package/node_modules/execa/lib/resolve/stdio.js +47 -0
  239. package/node_modules/execa/lib/resolve/wait-stream.js +96 -0
  240. package/node_modules/execa/lib/resolve/wait-subprocess.js +146 -0
  241. package/node_modules/execa/lib/return/duration.js +8 -0
  242. package/node_modules/execa/lib/return/early-error.js +60 -0
  243. package/node_modules/execa/lib/return/final-error.js +40 -0
  244. package/node_modules/execa/lib/return/message.js +157 -0
  245. package/node_modules/execa/lib/return/reject.js +13 -0
  246. package/node_modules/execa/lib/return/result.js +186 -0
  247. package/node_modules/execa/lib/stdio/direction.js +76 -0
  248. package/node_modules/execa/lib/stdio/duplicate.js +116 -0
  249. package/node_modules/execa/lib/stdio/handle-async.js +52 -0
  250. package/node_modules/execa/lib/stdio/handle-sync.js +57 -0
  251. package/node_modules/execa/lib/stdio/handle.js +214 -0
  252. package/node_modules/execa/lib/stdio/input-option.js +50 -0
  253. package/node_modules/execa/lib/stdio/native.js +106 -0
  254. package/node_modules/execa/lib/stdio/stdio-option.js +60 -0
  255. package/node_modules/execa/lib/stdio/type.js +173 -0
  256. package/node_modules/execa/lib/terminate/cancel.js +20 -0
  257. package/node_modules/execa/lib/terminate/cleanup.js +16 -0
  258. package/node_modules/execa/lib/terminate/graceful.js +71 -0
  259. package/node_modules/execa/lib/terminate/kill.js +93 -0
  260. package/node_modules/execa/lib/terminate/signal.js +70 -0
  261. package/node_modules/execa/lib/terminate/timeout.js +21 -0
  262. package/node_modules/execa/lib/transform/encoding-transform.js +51 -0
  263. package/node_modules/execa/lib/transform/generator.js +107 -0
  264. package/node_modules/execa/lib/transform/normalize.js +111 -0
  265. package/node_modules/execa/lib/transform/object-mode.js +41 -0
  266. package/node_modules/execa/lib/transform/run-async.js +60 -0
  267. package/node_modules/execa/lib/transform/run-sync.js +50 -0
  268. package/node_modules/execa/lib/transform/split.js +110 -0
  269. package/node_modules/execa/lib/transform/validate.js +43 -0
  270. package/node_modules/execa/lib/utils/abort-signal.js +8 -0
  271. package/node_modules/execa/lib/utils/deferred.js +7 -0
  272. package/node_modules/execa/lib/utils/max-listeners.js +14 -0
  273. package/node_modules/execa/lib/utils/standard-stream.js +6 -0
  274. package/node_modules/execa/lib/utils/uint-array.js +69 -0
  275. package/node_modules/execa/lib/verbose/complete.js +24 -0
  276. package/node_modules/execa/lib/verbose/custom.js +26 -0
  277. package/node_modules/execa/lib/verbose/default.js +54 -0
  278. package/node_modules/execa/lib/verbose/error.js +13 -0
  279. package/node_modules/execa/lib/verbose/info.js +39 -0
  280. package/node_modules/execa/lib/verbose/ipc.js +15 -0
  281. package/node_modules/execa/lib/verbose/log.js +54 -0
  282. package/node_modules/execa/lib/verbose/output.js +60 -0
  283. package/node_modules/execa/lib/verbose/start.js +15 -0
  284. package/node_modules/execa/lib/verbose/values.js +33 -0
  285. package/node_modules/execa/license +9 -0
  286. package/node_modules/execa/package.json +105 -0
  287. package/node_modules/execa/readme.md +461 -0
  288. package/node_modules/execa/types/arguments/encoding-option.d.ts +19 -0
  289. package/node_modules/execa/types/arguments/fd-options.d.ts +8 -0
  290. package/node_modules/execa/types/arguments/options.d.ts +400 -0
  291. package/node_modules/execa/types/arguments/specific.d.ts +52 -0
  292. package/node_modules/execa/types/convert.d.ts +58 -0
  293. package/node_modules/execa/types/ipc.d.ts +156 -0
  294. package/node_modules/execa/types/methods/command.d.ts +114 -0
  295. package/node_modules/execa/types/methods/main-async.d.ts +379 -0
  296. package/node_modules/execa/types/methods/main-sync.d.ts +59 -0
  297. package/node_modules/execa/types/methods/node.d.ts +62 -0
  298. package/node_modules/execa/types/methods/script.d.ts +115 -0
  299. package/node_modules/execa/types/methods/template.d.ts +18 -0
  300. package/node_modules/execa/types/pipe.d.ts +58 -0
  301. package/node_modules/execa/types/return/final-error.d.ts +51 -0
  302. package/node_modules/execa/types/return/ignore.d.ts +26 -0
  303. package/node_modules/execa/types/return/result-all.d.ts +30 -0
  304. package/node_modules/execa/types/return/result-ipc.d.ts +27 -0
  305. package/node_modules/execa/types/return/result-stdio.d.ts +17 -0
  306. package/node_modules/execa/types/return/result-stdout.d.ts +50 -0
  307. package/node_modules/execa/types/return/result.d.ts +203 -0
  308. package/node_modules/execa/types/stdio/array.d.ts +16 -0
  309. package/node_modules/execa/types/stdio/direction.d.ts +12 -0
  310. package/node_modules/execa/types/stdio/option.d.ts +40 -0
  311. package/node_modules/execa/types/stdio/type.d.ts +170 -0
  312. package/node_modules/execa/types/subprocess/all.d.ts +17 -0
  313. package/node_modules/execa/types/subprocess/stdio.d.ts +18 -0
  314. package/node_modules/execa/types/subprocess/stdout.d.ts +22 -0
  315. package/node_modules/execa/types/subprocess/subprocess.d.ts +117 -0
  316. package/node_modules/execa/types/transform/normalize.d.ts +57 -0
  317. package/node_modules/execa/types/transform/object-mode.d.ts +21 -0
  318. package/node_modules/execa/types/utils.d.ts +13 -0
  319. package/node_modules/execa/types/verbose.d.ts +98 -0
  320. package/node_modules/expand-template/.travis.yml +6 -0
  321. package/node_modules/expand-template/LICENSE +21 -0
  322. package/node_modules/expand-template/README.md +43 -0
  323. package/node_modules/expand-template/index.js +26 -0
  324. package/node_modules/expand-template/package.json +29 -0
  325. package/node_modules/expand-template/test.js +67 -0
  326. package/node_modules/figures/index.d.ts +279 -0
  327. package/node_modules/figures/index.js +292 -0
  328. package/node_modules/figures/license +9 -0
  329. package/node_modules/figures/package.json +49 -0
  330. package/node_modules/figures/readme.md +337 -0
  331. package/node_modules/file-uri-to-path/.npmignore +1 -0
  332. package/node_modules/file-uri-to-path/.travis.yml +30 -0
  333. package/node_modules/file-uri-to-path/History.md +21 -0
  334. package/node_modules/file-uri-to-path/LICENSE +20 -0
  335. package/node_modules/file-uri-to-path/README.md +74 -0
  336. package/node_modules/file-uri-to-path/index.d.ts +2 -0
  337. package/node_modules/file-uri-to-path/index.js +66 -0
  338. package/node_modules/file-uri-to-path/package.json +32 -0
  339. package/node_modules/file-uri-to-path/test/test.js +24 -0
  340. package/node_modules/file-uri-to-path/test/tests.json +13 -0
  341. package/node_modules/fs-constants/LICENSE +21 -0
  342. package/node_modules/fs-constants/README.md +26 -0
  343. package/node_modules/fs-constants/browser.js +1 -0
  344. package/node_modules/fs-constants/index.js +1 -0
  345. package/node_modules/fs-constants/package.json +19 -0
  346. package/node_modules/get-stream/license +9 -0
  347. package/node_modules/get-stream/package.json +60 -0
  348. package/node_modules/get-stream/readme.md +303 -0
  349. package/node_modules/get-stream/source/array-buffer.js +84 -0
  350. package/node_modules/get-stream/source/array.js +32 -0
  351. package/node_modules/get-stream/source/buffer.js +19 -0
  352. package/node_modules/get-stream/source/contents.js +121 -0
  353. package/node_modules/get-stream/source/exports.js +5 -0
  354. package/node_modules/get-stream/source/index.d.ts +121 -0
  355. package/node_modules/get-stream/source/index.js +13 -0
  356. package/node_modules/get-stream/source/stream.js +65 -0
  357. package/node_modules/get-stream/source/string.js +41 -0
  358. package/node_modules/get-stream/source/utils.js +11 -0
  359. package/node_modules/github-from-package/.travis.yml +4 -0
  360. package/node_modules/github-from-package/LICENSE +18 -0
  361. package/node_modules/github-from-package/example/package.json +8 -0
  362. package/node_modules/github-from-package/example/url.js +3 -0
  363. package/node_modules/github-from-package/index.js +17 -0
  364. package/node_modules/github-from-package/package.json +30 -0
  365. package/node_modules/github-from-package/readme.markdown +53 -0
  366. package/node_modules/github-from-package/test/a.json +8 -0
  367. package/node_modules/github-from-package/test/b.json +5 -0
  368. package/node_modules/github-from-package/test/c.json +5 -0
  369. package/node_modules/github-from-package/test/d.json +7 -0
  370. package/node_modules/github-from-package/test/e.json +5 -0
  371. package/node_modules/github-from-package/test/url.js +19 -0
  372. package/node_modules/human-signals/LICENSE +201 -0
  373. package/node_modules/human-signals/README.md +171 -0
  374. package/node_modules/human-signals/build/src/core.js +273 -0
  375. package/node_modules/human-signals/build/src/main.d.ts +206 -0
  376. package/node_modules/human-signals/build/src/main.js +70 -0
  377. package/node_modules/human-signals/build/src/realtime.js +16 -0
  378. package/node_modules/human-signals/build/src/signals.js +34 -0
  379. package/node_modules/human-signals/package.json +66 -0
  380. package/node_modules/ieee754/LICENSE +11 -0
  381. package/node_modules/ieee754/README.md +51 -0
  382. package/node_modules/ieee754/index.d.ts +10 -0
  383. package/node_modules/ieee754/index.js +85 -0
  384. package/node_modules/ieee754/package.json +52 -0
  385. package/node_modules/inherits/LICENSE +16 -0
  386. package/node_modules/inherits/README.md +42 -0
  387. package/node_modules/inherits/inherits.js +9 -0
  388. package/node_modules/inherits/inherits_browser.js +27 -0
  389. package/node_modules/inherits/package.json +29 -0
  390. package/node_modules/ini/LICENSE +15 -0
  391. package/node_modules/ini/README.md +102 -0
  392. package/node_modules/ini/ini.js +206 -0
  393. package/node_modules/ini/package.json +33 -0
  394. package/node_modules/is-plain-obj/index.d.ts +35 -0
  395. package/node_modules/is-plain-obj/index.js +8 -0
  396. package/node_modules/is-plain-obj/license +9 -0
  397. package/node_modules/is-plain-obj/package.json +41 -0
  398. package/node_modules/is-plain-obj/readme.md +58 -0
  399. package/node_modules/is-stream/index.d.ts +90 -0
  400. package/node_modules/is-stream/index.js +37 -0
  401. package/node_modules/is-stream/license +9 -0
  402. package/node_modules/is-stream/package.json +48 -0
  403. package/node_modules/is-stream/readme.md +57 -0
  404. package/node_modules/is-unicode-supported/index.d.ts +12 -0
  405. package/node_modules/is-unicode-supported/index.js +21 -0
  406. package/node_modules/is-unicode-supported/license +9 -0
  407. package/node_modules/is-unicode-supported/package.json +47 -0
  408. package/node_modules/is-unicode-supported/readme.md +35 -0
  409. package/node_modules/isexe/.npmignore +2 -0
  410. package/node_modules/isexe/LICENSE +15 -0
  411. package/node_modules/isexe/README.md +51 -0
  412. package/node_modules/isexe/index.js +57 -0
  413. package/node_modules/isexe/mode.js +41 -0
  414. package/node_modules/isexe/package.json +31 -0
  415. package/node_modules/isexe/test/basic.js +221 -0
  416. package/node_modules/isexe/windows.js +42 -0
  417. package/node_modules/mimic-response/index.d.ts +17 -0
  418. package/node_modules/mimic-response/index.js +77 -0
  419. package/node_modules/mimic-response/license +9 -0
  420. package/node_modules/mimic-response/package.json +42 -0
  421. package/node_modules/mimic-response/readme.md +78 -0
  422. package/node_modules/minimist/.eslintrc +29 -0
  423. package/node_modules/minimist/.github/FUNDING.yml +12 -0
  424. package/node_modules/minimist/.nycrc +14 -0
  425. package/node_modules/minimist/CHANGELOG.md +298 -0
  426. package/node_modules/minimist/LICENSE +18 -0
  427. package/node_modules/minimist/README.md +121 -0
  428. package/node_modules/minimist/example/parse.js +4 -0
  429. package/node_modules/minimist/index.js +263 -0
  430. package/node_modules/minimist/package.json +75 -0
  431. package/node_modules/minimist/test/all_bool.js +34 -0
  432. package/node_modules/minimist/test/bool.js +177 -0
  433. package/node_modules/minimist/test/dash.js +43 -0
  434. package/node_modules/minimist/test/default_bool.js +37 -0
  435. package/node_modules/minimist/test/dotted.js +24 -0
  436. package/node_modules/minimist/test/kv_short.js +32 -0
  437. package/node_modules/minimist/test/long.js +33 -0
  438. package/node_modules/minimist/test/num.js +38 -0
  439. package/node_modules/minimist/test/parse.js +209 -0
  440. package/node_modules/minimist/test/parse_modified.js +11 -0
  441. package/node_modules/minimist/test/proto.js +64 -0
  442. package/node_modules/minimist/test/short.js +69 -0
  443. package/node_modules/minimist/test/stop_early.js +17 -0
  444. package/node_modules/minimist/test/unknown.js +104 -0
  445. package/node_modules/minimist/test/whitespace.js +10 -0
  446. package/node_modules/mkdirp-classic/LICENSE +21 -0
  447. package/node_modules/mkdirp-classic/README.md +18 -0
  448. package/node_modules/mkdirp-classic/index.js +98 -0
  449. package/node_modules/mkdirp-classic/package.json +18 -0
  450. package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +31 -0
  451. package/node_modules/napi-build-utils/LICENSE +21 -0
  452. package/node_modules/napi-build-utils/README.md +52 -0
  453. package/node_modules/napi-build-utils/index.js +214 -0
  454. package/node_modules/napi-build-utils/index.md +0 -0
  455. package/node_modules/napi-build-utils/package.json +42 -0
  456. package/node_modules/node-abi/LICENSE +21 -0
  457. package/node_modules/node-abi/README.md +54 -0
  458. package/node_modules/node-abi/abi_registry.json +446 -0
  459. package/node_modules/node-abi/index.js +179 -0
  460. package/node_modules/node-abi/package.json +45 -0
  461. package/node_modules/npm-run-path/index.d.ts +90 -0
  462. package/node_modules/npm-run-path/index.js +55 -0
  463. package/node_modules/npm-run-path/license +9 -0
  464. package/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
  465. package/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
  466. package/node_modules/npm-run-path/node_modules/path-key/license +9 -0
  467. package/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
  468. package/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
  469. package/node_modules/npm-run-path/package.json +52 -0
  470. package/node_modules/npm-run-path/readme.md +104 -0
  471. package/node_modules/once/LICENSE +15 -0
  472. package/node_modules/once/README.md +79 -0
  473. package/node_modules/once/once.js +42 -0
  474. package/node_modules/once/package.json +33 -0
  475. package/node_modules/parse-ms/index.d.ts +30 -0
  476. package/node_modules/parse-ms/index.js +45 -0
  477. package/node_modules/parse-ms/license +9 -0
  478. package/node_modules/parse-ms/package.json +47 -0
  479. package/node_modules/parse-ms/readme.md +46 -0
  480. package/node_modules/path-key/index.d.ts +40 -0
  481. package/node_modules/path-key/index.js +16 -0
  482. package/node_modules/path-key/license +9 -0
  483. package/node_modules/path-key/package.json +39 -0
  484. package/node_modules/path-key/readme.md +61 -0
  485. package/node_modules/prebuild-install/CHANGELOG.md +131 -0
  486. package/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
  487. package/node_modules/prebuild-install/LICENSE +21 -0
  488. package/node_modules/prebuild-install/README.md +163 -0
  489. package/node_modules/prebuild-install/asset.js +44 -0
  490. package/node_modules/prebuild-install/bin.js +78 -0
  491. package/node_modules/prebuild-install/download.js +142 -0
  492. package/node_modules/prebuild-install/error.js +14 -0
  493. package/node_modules/prebuild-install/help.txt +16 -0
  494. package/node_modules/prebuild-install/index.js +1 -0
  495. package/node_modules/prebuild-install/log.js +33 -0
  496. package/node_modules/prebuild-install/package.json +67 -0
  497. package/node_modules/prebuild-install/proxy.js +35 -0
  498. package/node_modules/prebuild-install/rc.js +64 -0
  499. package/node_modules/prebuild-install/util.js +143 -0
  500. package/node_modules/pretty-ms/index.d.ts +157 -0
  501. package/node_modules/pretty-ms/index.js +149 -0
  502. package/node_modules/pretty-ms/license +9 -0
  503. package/node_modules/pretty-ms/package.json +55 -0
  504. package/node_modules/pretty-ms/readme.md +179 -0
  505. package/node_modules/pump/.github/FUNDING.yml +2 -0
  506. package/node_modules/pump/.travis.yml +5 -0
  507. package/node_modules/pump/LICENSE +21 -0
  508. package/node_modules/pump/README.md +74 -0
  509. package/node_modules/pump/SECURITY.md +5 -0
  510. package/node_modules/pump/empty.js +1 -0
  511. package/node_modules/pump/index.js +86 -0
  512. package/node_modules/pump/package.json +30 -0
  513. package/node_modules/pump/test-browser.js +66 -0
  514. package/node_modules/pump/test-node.js +53 -0
  515. package/node_modules/rc/LICENSE.APACHE2 +15 -0
  516. package/node_modules/rc/LICENSE.BSD +26 -0
  517. package/node_modules/rc/LICENSE.MIT +24 -0
  518. package/node_modules/rc/README.md +227 -0
  519. package/node_modules/rc/browser.js +7 -0
  520. package/node_modules/rc/cli.js +4 -0
  521. package/node_modules/rc/index.js +53 -0
  522. package/node_modules/rc/lib/utils.js +104 -0
  523. package/node_modules/rc/package.json +29 -0
  524. package/node_modules/rc/test/ini.js +16 -0
  525. package/node_modules/rc/test/nested-env-vars.js +50 -0
  526. package/node_modules/rc/test/test.js +59 -0
  527. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  528. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  529. package/node_modules/readable-stream/LICENSE +47 -0
  530. package/node_modules/readable-stream/README.md +106 -0
  531. package/node_modules/readable-stream/errors-browser.js +127 -0
  532. package/node_modules/readable-stream/errors.js +116 -0
  533. package/node_modules/readable-stream/experimentalWarning.js +17 -0
  534. package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  535. package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  536. package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  537. package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  538. package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  539. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  540. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  541. package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  542. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  543. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  544. package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  545. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  546. package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  547. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  548. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  549. package/node_modules/readable-stream/package.json +68 -0
  550. package/node_modules/readable-stream/readable-browser.js +9 -0
  551. package/node_modules/readable-stream/readable.js +16 -0
  552. package/node_modules/safe-buffer/LICENSE +21 -0
  553. package/node_modules/safe-buffer/README.md +584 -0
  554. package/node_modules/safe-buffer/index.d.ts +187 -0
  555. package/node_modules/safe-buffer/index.js +65 -0
  556. package/node_modules/safe-buffer/package.json +51 -0
  557. package/node_modules/semver/LICENSE +15 -0
  558. package/node_modules/semver/README.md +665 -0
  559. package/node_modules/semver/bin/semver.js +191 -0
  560. package/node_modules/semver/classes/comparator.js +143 -0
  561. package/node_modules/semver/classes/index.js +7 -0
  562. package/node_modules/semver/classes/range.js +557 -0
  563. package/node_modules/semver/classes/semver.js +333 -0
  564. package/node_modules/semver/functions/clean.js +8 -0
  565. package/node_modules/semver/functions/cmp.js +54 -0
  566. package/node_modules/semver/functions/coerce.js +62 -0
  567. package/node_modules/semver/functions/compare-build.js +9 -0
  568. package/node_modules/semver/functions/compare-loose.js +5 -0
  569. package/node_modules/semver/functions/compare.js +7 -0
  570. package/node_modules/semver/functions/diff.js +60 -0
  571. package/node_modules/semver/functions/eq.js +5 -0
  572. package/node_modules/semver/functions/gt.js +5 -0
  573. package/node_modules/semver/functions/gte.js +5 -0
  574. package/node_modules/semver/functions/inc.js +21 -0
  575. package/node_modules/semver/functions/lt.js +5 -0
  576. package/node_modules/semver/functions/lte.js +5 -0
  577. package/node_modules/semver/functions/major.js +5 -0
  578. package/node_modules/semver/functions/minor.js +5 -0
  579. package/node_modules/semver/functions/neq.js +5 -0
  580. package/node_modules/semver/functions/parse.js +18 -0
  581. package/node_modules/semver/functions/patch.js +5 -0
  582. package/node_modules/semver/functions/prerelease.js +8 -0
  583. package/node_modules/semver/functions/rcompare.js +5 -0
  584. package/node_modules/semver/functions/rsort.js +5 -0
  585. package/node_modules/semver/functions/satisfies.js +12 -0
  586. package/node_modules/semver/functions/sort.js +5 -0
  587. package/node_modules/semver/functions/valid.js +8 -0
  588. package/node_modules/semver/index.js +91 -0
  589. package/node_modules/semver/internal/constants.js +37 -0
  590. package/node_modules/semver/internal/debug.js +11 -0
  591. package/node_modules/semver/internal/identifiers.js +29 -0
  592. package/node_modules/semver/internal/lrucache.js +42 -0
  593. package/node_modules/semver/internal/parse-options.js +17 -0
  594. package/node_modules/semver/internal/re.js +223 -0
  595. package/node_modules/semver/package.json +78 -0
  596. package/node_modules/semver/preload.js +4 -0
  597. package/node_modules/semver/range.bnf +16 -0
  598. package/node_modules/semver/ranges/gtr.js +6 -0
  599. package/node_modules/semver/ranges/intersects.js +9 -0
  600. package/node_modules/semver/ranges/ltr.js +6 -0
  601. package/node_modules/semver/ranges/max-satisfying.js +27 -0
  602. package/node_modules/semver/ranges/min-satisfying.js +26 -0
  603. package/node_modules/semver/ranges/min-version.js +63 -0
  604. package/node_modules/semver/ranges/outside.js +82 -0
  605. package/node_modules/semver/ranges/simplify.js +49 -0
  606. package/node_modules/semver/ranges/subset.js +249 -0
  607. package/node_modules/semver/ranges/to-comparators.js +10 -0
  608. package/node_modules/semver/ranges/valid.js +13 -0
  609. package/node_modules/shebang-command/index.js +19 -0
  610. package/node_modules/shebang-command/license +9 -0
  611. package/node_modules/shebang-command/package.json +34 -0
  612. package/node_modules/shebang-command/readme.md +34 -0
  613. package/node_modules/shebang-regex/index.d.ts +22 -0
  614. package/node_modules/shebang-regex/index.js +2 -0
  615. package/node_modules/shebang-regex/license +9 -0
  616. package/node_modules/shebang-regex/package.json +35 -0
  617. package/node_modules/shebang-regex/readme.md +33 -0
  618. package/node_modules/signal-exit/LICENSE.txt +16 -0
  619. package/node_modules/signal-exit/README.md +74 -0
  620. package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
  621. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  622. package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  623. package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  624. package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
  625. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  626. package/node_modules/signal-exit/dist/cjs/index.js +279 -0
  627. package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  628. package/node_modules/signal-exit/dist/cjs/package.json +3 -0
  629. package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
  630. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  631. package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  632. package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  633. package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
  634. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  635. package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  636. package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  637. package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
  638. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  639. package/node_modules/signal-exit/dist/mjs/index.js +275 -0
  640. package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  641. package/node_modules/signal-exit/dist/mjs/package.json +3 -0
  642. package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
  643. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  644. package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  645. package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  646. package/node_modules/signal-exit/package.json +106 -0
  647. package/node_modules/simple-concat/.travis.yml +3 -0
  648. package/node_modules/simple-concat/LICENSE +20 -0
  649. package/node_modules/simple-concat/README.md +44 -0
  650. package/node_modules/simple-concat/index.js +15 -0
  651. package/node_modules/simple-concat/package.json +47 -0
  652. package/node_modules/simple-concat/test/basic.js +41 -0
  653. package/node_modules/simple-get/.github/dependabot.yml +15 -0
  654. package/node_modules/simple-get/.github/workflows/ci.yml +23 -0
  655. package/node_modules/simple-get/LICENSE +20 -0
  656. package/node_modules/simple-get/README.md +333 -0
  657. package/node_modules/simple-get/index.js +108 -0
  658. package/node_modules/simple-get/package.json +67 -0
  659. package/node_modules/sqlite-vec/README.md +1 -0
  660. package/node_modules/sqlite-vec/index.cjs +46 -0
  661. package/node_modules/sqlite-vec/index.d.ts +17 -0
  662. package/node_modules/sqlite-vec/index.mjs +47 -0
  663. package/node_modules/sqlite-vec/package.json +1 -0
  664. package/node_modules/sqlite-vec-linux-x64/README.md +1 -0
  665. package/node_modules/sqlite-vec-linux-x64/package.json +1 -0
  666. package/node_modules/sqlite-vec-linux-x64/vec0.so +0 -0
  667. package/node_modules/string_decoder/LICENSE +48 -0
  668. package/node_modules/string_decoder/README.md +47 -0
  669. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  670. package/node_modules/string_decoder/package.json +34 -0
  671. package/node_modules/strip-final-newline/index.d.ts +18 -0
  672. package/node_modules/strip-final-newline/index.js +26 -0
  673. package/node_modules/strip-final-newline/license +9 -0
  674. package/node_modules/strip-final-newline/package.json +49 -0
  675. package/node_modules/strip-final-newline/readme.md +34 -0
  676. package/node_modules/strip-json-comments/index.js +70 -0
  677. package/node_modules/strip-json-comments/license +21 -0
  678. package/node_modules/strip-json-comments/package.json +42 -0
  679. package/node_modules/strip-json-comments/readme.md +64 -0
  680. package/node_modules/tar-fs/.travis.yml +6 -0
  681. package/node_modules/tar-fs/LICENSE +21 -0
  682. package/node_modules/tar-fs/README.md +165 -0
  683. package/node_modules/tar-fs/index.js +363 -0
  684. package/node_modules/tar-fs/package.json +41 -0
  685. package/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
  686. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
  687. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  688. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  689. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  690. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  691. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  692. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  693. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  694. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  695. package/node_modules/tar-fs/test/index.js +346 -0
  696. package/node_modules/tar-stream/LICENSE +21 -0
  697. package/node_modules/tar-stream/README.md +168 -0
  698. package/node_modules/tar-stream/extract.js +257 -0
  699. package/node_modules/tar-stream/headers.js +295 -0
  700. package/node_modules/tar-stream/index.js +2 -0
  701. package/node_modules/tar-stream/pack.js +255 -0
  702. package/node_modules/tar-stream/package.json +58 -0
  703. package/node_modules/tar-stream/sandbox.js +11 -0
  704. package/node_modules/tunnel-agent/LICENSE +55 -0
  705. package/node_modules/tunnel-agent/README.md +4 -0
  706. package/node_modules/tunnel-agent/index.js +244 -0
  707. package/node_modules/tunnel-agent/package.json +22 -0
  708. package/node_modules/unicorn-magic/default.d.ts +13 -0
  709. package/node_modules/unicorn-magic/default.js +14 -0
  710. package/node_modules/unicorn-magic/license +9 -0
  711. package/node_modules/unicorn-magic/node.d.ts +125 -0
  712. package/node_modules/unicorn-magic/node.js +49 -0
  713. package/node_modules/unicorn-magic/package.json +62 -0
  714. package/node_modules/unicorn-magic/readme.md +25 -0
  715. package/node_modules/util-deprecate/History.md +16 -0
  716. package/node_modules/util-deprecate/LICENSE +24 -0
  717. package/node_modules/util-deprecate/README.md +53 -0
  718. package/node_modules/util-deprecate/browser.js +67 -0
  719. package/node_modules/util-deprecate/node.js +6 -0
  720. package/node_modules/util-deprecate/package.json +27 -0
  721. package/node_modules/which/CHANGELOG.md +166 -0
  722. package/node_modules/which/LICENSE +15 -0
  723. package/node_modules/which/README.md +54 -0
  724. package/node_modules/which/bin/node-which +52 -0
  725. package/node_modules/which/package.json +43 -0
  726. package/node_modules/which/which.js +125 -0
  727. package/node_modules/wrappy/LICENSE +15 -0
  728. package/node_modules/wrappy/README.md +36 -0
  729. package/node_modules/wrappy/package.json +29 -0
  730. package/node_modules/wrappy/wrappy.js +33 -0
  731. package/node_modules/yoctocolors/base.d.ts +47 -0
  732. package/node_modules/yoctocolors/base.js +94 -0
  733. package/node_modules/yoctocolors/index.d.ts +2 -0
  734. package/node_modules/yoctocolors/index.js +2 -0
  735. package/node_modules/yoctocolors/license +9 -0
  736. package/node_modules/yoctocolors/package.json +69 -0
  737. package/node_modules/yoctocolors/readme.md +138 -0
  738. package/package.json +5 -1
  739. package/src/agents/claude-agent.js +17 -2
  740. package/src/prompts/architect.js +32 -37
  741. package/src/prompts/coder.js +71 -96
  742. package/src/prompts/hu-reviewer.js +23 -29
  743. package/src/prompts/prompt-layout.js +80 -0
  744. package/src/prompts/reviewer.js +34 -39
  745. package/src/roles/agent-role.js +9 -1
  746. package/src/roles/coder-role.js +6 -3
  747. package/src/roles/reviewer-role.js +20 -23
@@ -0,0 +1,138 @@
1
+ <sup>yoctocolors 🌈</sup>
2
+
3
+ > The smallest and fastest command-line coloring package on the internet
4
+
5
+ *Check out [Chalk](https://github.com/chalk/chalk) if you want something more mature and comprehensive.*
6
+
7
+ ## Highlights
8
+
9
+ - Tiny
10
+ - Fast
11
+ - Handles nested colors
12
+ - Tree-shakeable
13
+ - No dependencies
14
+ - Actively maintained
15
+
16
+ ## Install
17
+
18
+ ESM:
19
+
20
+ ```sh
21
+ npm install yoctocolors
22
+ ```
23
+
24
+ Or CommonJS:
25
+
26
+ ```sh
27
+ npm install yoctocolors-cjs
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ ```js
33
+ import colors from 'yoctocolors';
34
+
35
+ console.log(colors.red('Yo!'));
36
+
37
+ console.log(colors.blue(`Welcome to the ${colors.green('yoctocolors')} package!`));
38
+ ```
39
+
40
+ You can also import colors as named imports:
41
+
42
+ ```js
43
+ import {red, blue, green} from 'yoctocolors';
44
+
45
+ console.log(red('Yo!'));
46
+
47
+ console.log(blue(`Welcome to the ${green('yoctocolors')} package!`));
48
+ ```
49
+
50
+ *This package supports [basic color detection](https://nodejs.org/api/tty.html#writestreamhascolorscount-env). Colors can be forcefully enabled by setting the `FORCE_COLOR` environment variable to `1` and can be forcefully disabled by setting `NO_COLOR` or `NODE_DISABLE_COLORS` to any value. [More info.](https://nodejs.org/api/tty.html#writestreamgetcolordepthenv)*
51
+
52
+ ## Styles
53
+
54
+ ### Modifiers
55
+
56
+ - `reset` - Reset the current style.
57
+ - `bold` - Make the text bold.
58
+ - `dim` - Make the text have lower opacity.
59
+ - `italic` - Make the text italic. *(Not widely supported)*
60
+ - `underline` - Put a horizontal line above the text. *(Not widely supported)*
61
+ - `overline` - Put a horizontal line below the text. *(Not widely supported)*
62
+ - `inverse`- Invert background and foreground colors.
63
+ - `hidden` - Print the text but make it invisible.
64
+ - `strikethrough` - Put a horizontal line through the center of the text. *(Not widely supported)*
65
+
66
+ ### Colors
67
+
68
+ - `black`
69
+ - `red`
70
+ - `green`
71
+ - `yellow`
72
+ - `blue`
73
+ - `magenta`
74
+ - `cyan`
75
+ - `white`
76
+ - `gray`
77
+ - `redBright`
78
+ - `greenBright`
79
+ - `yellowBright`
80
+ - `blueBright`
81
+ - `magentaBright`
82
+ - `cyanBright`
83
+ - `whiteBright`
84
+
85
+ ### Background colors
86
+
87
+ - `bgBlack`
88
+ - `bgRed`
89
+ - `bgGreen`
90
+ - `bgYellow`
91
+ - `bgBlue`
92
+ - `bgMagenta`
93
+ - `bgCyan`
94
+ - `bgWhite`
95
+ - `bgGray`
96
+ - `bgRedBright`
97
+ - `bgGreenBright`
98
+ - `bgYellowBright`
99
+ - `bgBlueBright`
100
+ - `bgMagentaBright`
101
+ - `bgCyanBright`
102
+ - `bgWhiteBright`
103
+
104
+ ## Prior art
105
+
106
+ Yes
107
+
108
+ ## Benchmark
109
+
110
+ ```sh
111
+ $ ./benchmark.js
112
+ ┌─────────┬────────────────┬─────────────┐
113
+ │ (index) │ library │ ops/sec │
114
+ ├─────────┼────────────────┼─────────────┤
115
+ │ 0 │ 'yoctocolors' │ '8,000,000' │
116
+ │ 1 │ 'colorette' │ '8,000,000' │
117
+ │ 2 │ 'picocolors' │ '8,000,000' │
118
+ │ 3 │ 'nanocolors' │ '5,988,024' │
119
+ │ 4 │ 'chalk' │ '4,807,692' │
120
+ │ 5 │ 'kleur/colors' │ '4,807,692' │
121
+ │ 6 │ 'kleur' │ '4,784,689' │
122
+ │ 7 │ 'ansi-colors' │ '2,178,649' │
123
+ │ 8 │ 'cli-color' │ '585,138' │
124
+ └─────────┴────────────────┴─────────────┘
125
+ ```
126
+
127
+ *See [benchmark.js](benchmark.js).*
128
+
129
+ ## FAQ
130
+
131
+ ### What is yocto?
132
+
133
+ [It was the smallest official unit prefix in the metric system until 2022.](https://en.wikipedia.org/wiki/Yocto-) Much smaller than nano.
134
+
135
+ ## Related
136
+
137
+ - [yoctodelay](https://github.com/sindresorhus/yoctodelay) - Delay a promise a given amount of time
138
+ - [chalk](https://github.com/chalk/chalk) - Terminal string styling
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karajan-code",
3
- "version": "3.3.0",
3
+ "version": "3.4.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",
@@ -84,6 +84,7 @@
84
84
  },
85
85
  "dependencies": {
86
86
  "@babel/parser": "^7.29.7",
87
+ "@karajan/core": "*",
87
88
  "@modelcontextprotocol/sdk": "^1.29.0",
88
89
  "better-sqlite3": "^12.10.0",
89
90
  "chokidar": "^5.0.0",
@@ -99,6 +100,9 @@
99
100
  "valibot": "^1.4.1",
100
101
  "web-tree-sitter": "^0.26.9"
101
102
  },
103
+ "bundleDependencies": [
104
+ "@karajan/core"
105
+ ],
102
106
  "devDependencies": {
103
107
  "@eslint/js": "^10.0.1",
104
108
  "@vitest/coverage-v8": "^4.1.8",
@@ -321,6 +321,21 @@ const ALLOWED_TOOLS = [
321
321
  "Read", "Write", "Edit", "Bash", "Glob", "Grep"
322
322
  ];
323
323
 
324
+ /**
325
+ * Base CLI args for a task (Φ1-D, KJC-PCS-0057). When the role provides the
326
+ * prompt split in stable/volatile buckets, the stable block travels via
327
+ * --append-system-prompt — the CLI places cache breakpoints on the system
328
+ * block, so Anthropic's prompt cache hits on it across iterations — and only
329
+ * the volatile block goes in the -p message. Without the split, legacy
330
+ * single-prompt behavior is unchanged.
331
+ */
332
+ function buildPromptArgs(task) {
333
+ if (task.stablePrompt && task.volatilePrompt) {
334
+ return ["-p", task.volatilePrompt, "--append-system-prompt", task.stablePrompt, "--allowedTools", ...ALLOWED_TOOLS];
335
+ }
336
+ return ["-p", task.prompt, "--allowedTools", ...ALLOWED_TOOLS];
337
+ }
338
+
324
339
  export class ClaudeAgent extends BaseAgent {
325
340
  async runTask(task) {
326
341
  const role = task.role || "coder";
@@ -345,7 +360,7 @@ export class ClaudeAgent extends BaseAgent {
345
360
  }
346
361
 
347
362
  async _runTaskExec(task, model, _role) {
348
- const args = ["-p", task.prompt, "--allowedTools", ...ALLOWED_TOOLS];
363
+ const args = buildPromptArgs(task);
349
364
  if (model) args.push("--model", model);
350
365
 
351
366
  // Use stream-json when onOutput is provided to get real-time feedback
@@ -373,7 +388,7 @@ export class ClaudeAgent extends BaseAgent {
373
388
  }
374
389
 
375
390
  async _reviewTaskExec(task, model) {
376
- const args = ["-p", task.prompt, "--allowedTools", ...ALLOWED_TOOLS, "--output-format", "stream-json", "--verbose"];
391
+ const args = [...buildPromptArgs(task), "--output-format", "stream-json", "--verbose"];
377
392
  if (model) args.push("--model", model);
378
393
  const res = await this.runCommand(resolveBin("claude"), args, cleanExecaOpts({
379
394
  onOutput: task.onOutput,
@@ -1,5 +1,6 @@
1
1
  import { loadAvailableSkills, buildSkillSection } from "../skills/skill-loader.js";
2
2
  import { getLanguageInstruction } from "../utils/locale.js";
3
+ import { section, buildPromptLayout, joinLayout, STABLE, VOLATILE } from "./prompt-layout.js";
3
4
 
4
5
  const SUBAGENT_PREAMBLE = [
5
6
  "IMPORTANT: You are running as a Karajan sub-agent.",
@@ -9,19 +10,28 @@ const SUBAGENT_PREAMBLE = [
9
10
 
10
11
  export const VALID_VERDICTS = new Set(["ready", "needs_clarification"]);
11
12
 
12
- export async function buildArchitectPrompt({ task, instructions, researchContext = null, productContext = null, domainContext = null, projectDir = null, language = "en", provider = null }) {
13
+ /**
14
+ * Build the architect prompt as a { stable, volatile } layout (Φ1,
15
+ * KJC-PCS-0057): instructions, guidelines, schema, contexts and skills
16
+ * are identical across invocations on the same project; research
17
+ * context and the task itself go last.
18
+ */
19
+ export async function buildArchitectPromptLayout({ task, instructions, researchContext = null, productContext = null, domainContext = null, projectDir = null, language = "en", provider = null }) {
13
20
  const langInstruction = getLanguageInstruction(language);
14
- const sections = [SUBAGENT_PREAMBLE, ...(langInstruction ? [langInstruction] : [])];
15
-
16
- if (instructions) {
17
- sections.push(instructions);
21
+ let skillSection = null;
22
+ if (projectDir) {
23
+ const skills = await loadAvailableSkills(projectDir);
24
+ skillSection = buildSkillSection(skills, { provider, role: "architect" });
18
25
  }
19
26
 
20
- sections.push(
21
- "You are the architect in a multi-role AI pipeline.",
22
- "Analyze the task and produce a concrete architecture design including layers, patterns, data model, API contracts, dependencies, and tradeoffs.",
23
- "## Architecture Guidelines",
24
- [
27
+ return buildPromptLayout([
28
+ section(SUBAGENT_PREAMBLE, STABLE),
29
+ section(langInstruction, STABLE),
30
+ section(instructions, STABLE),
31
+ section("You are the architect in a multi-role AI pipeline.", STABLE),
32
+ section("Analyze the task and produce a concrete architecture design including layers, patterns, data model, API contracts, dependencies, and tradeoffs.", STABLE),
33
+ section("## Architecture Guidelines", STABLE),
34
+ section([
25
35
  "- Identify the architecture type (layered, microservices, event-driven, etc.)",
26
36
  "- Define the layers and their responsibilities",
27
37
  "- Identify design patterns to apply",
@@ -30,34 +40,19 @@ export async function buildArchitectPrompt({ task, instructions, researchContext
30
40
  "- List external and internal dependencies",
31
41
  "- Document tradeoffs and their rationale",
32
42
  "- If critical decisions cannot be made without more information, list clarifying questions"
33
- ].join("\n"),
34
- "Return a single valid JSON object and nothing else.",
35
- 'JSON schema: {"verdict":"ready|needs_clarification","architecture":{"type":string,"layers":[string],"patterns":[string],"dataModel":{"entities":[string]},"apiContracts":[string],"dependencies":[string],"tradeoffs":[string]},"questions":[string],"summary":string}'
36
- );
37
-
38
- if (productContext) {
39
- sections.push(`## Product Context\n${productContext}`);
40
- }
41
-
42
- if (domainContext) {
43
- sections.push(`## Domain Context\n${domainContext}`);
44
- }
45
-
46
- if (researchContext) {
47
- sections.push(`## Research Context\n${researchContext}`);
48
- }
49
-
50
- sections.push(`## Task\n${task}`);
51
-
52
- if (projectDir) {
53
- const skills = await loadAvailableSkills(projectDir);
54
- const skillSection = buildSkillSection(skills, { provider, role: "architect" });
55
- if (skillSection) {
56
- sections.push(skillSection);
57
- }
58
- }
43
+ ].join("\n"), STABLE),
44
+ section("Return a single valid JSON object and nothing else.", STABLE),
45
+ section('JSON schema: {"verdict":"ready|needs_clarification","architecture":{"type":string,"layers":[string],"patterns":[string],"dataModel":{"entities":[string]},"apiContracts":[string],"dependencies":[string],"tradeoffs":[string]},"questions":[string],"summary":string}', STABLE),
46
+ section(productContext ? `## Product Context\n${productContext}` : null, STABLE),
47
+ section(domainContext ? `## Domain Context\n${domainContext}` : null, STABLE),
48
+ section(skillSection, STABLE),
49
+ section(researchContext ? `## Research Context\n${researchContext}` : null, VOLATILE),
50
+ section(`## Task\n${task}`, VOLATILE),
51
+ ]);
52
+ }
59
53
 
60
- return sections.join("\n\n");
54
+ export async function buildArchitectPrompt(options) {
55
+ return joinLayout(await buildArchitectPromptLayout(options));
61
56
  }
62
57
 
63
58
  function filterStrings(arr) {
@@ -1,6 +1,7 @@
1
1
  import { buildRtkInstructions } from "./rtk-snippet.js";
2
2
  import { loadAvailableSkills, buildSkillSection } from "../skills/skill-loader.js";
3
3
  import { getLanguageInstruction } from "../utils/locale.js";
4
+ import { section, buildPromptLayout, joinLayout, STABLE, VOLATILE } from "./prompt-layout.js";
4
5
 
5
6
  const SUBAGENT_PREAMBLE = [
6
7
  "IMPORTANT: You are running as a Karajan sub-agent.",
@@ -179,7 +180,16 @@ function buildStackSection({ stack, testFramework }) {
179
180
  return lines.join("\n");
180
181
  }
181
182
 
182
- export async function buildCoderPrompt({ task, reviewerFeedback = null, sonarSummary = null, coderRules = null, methodology = "tdd", serenaEnabled = false, rtkAvailable = false, deferredContext = null, productContext = null, domainContext = null, plan = null, projectDir = null, language = "en", provider = null, acceptanceTests = null, adrs = null, specSection = null, reviewerFindings = null, huId = null, stack = null, testFramework = null }) {
183
+ /**
184
+ * Build the coder prompt as a { stable, volatile } layout (Φ1, KJC-PCS-0057).
185
+ *
186
+ * stable: identical across iterations of the same HU and across HUs of the
187
+ * same plan — rendered FIRST so prefix-caching providers hit on it, and
188
+ * available separately so ClaudeAgent can ship it via --append-system-prompt.
189
+ * volatile: per-HU/iteration content, rendered LAST preserving the relative
190
+ * order the legacy prompt used (ADRs → SPEC → findings → tests → … → feedback).
191
+ */
192
+ export async function buildCoderPromptLayout({ task, reviewerFeedback = null, sonarSummary = null, coderRules = null, methodology = "tdd", serenaEnabled = false, rtkAvailable = false, deferredContext = null, productContext = null, domainContext = null, plan = null, projectDir = null, language = "en", provider = null, acceptanceTests = null, adrs = null, specSection = null, reviewerFindings = null, huId = null, stack = null, testFramework = null }) {
183
193
  const langInstruction = getLanguageInstruction(language);
184
194
  // KJC-BUG-0032 (PR-I): hard rule about file paths. Real bug: a HU
185
195
  // titled "Initialize project skeleton: create assistant/ directory…"
@@ -203,110 +213,75 @@ export async function buildCoderPrompt({ task, reviewerFeedback = null, sonarSum
203
213
  ].join("\n")
204
214
  : null;
205
215
 
206
- const sections = [
207
- serenaEnabled ? SUBAGENT_PREAMBLE_SERENA : SUBAGENT_PREAMBLE,
208
- ...(langInstruction ? [langInstruction] : []),
209
- `Task:\n${task}`,
210
- "Implement directly in the repository.",
211
- "Keep changes minimal and production-ready.",
212
- "Follow SOLID principles. Write small, focused functions (< 30 lines).",
213
- "Make atomic commits: 1 logical change = 1 commit. Keep PRs small and reviewable.",
214
- "Security: validate all input, parameterize queries, never expose secrets. Use the auth pattern that matches the stack (e.g. httpOnly cookies for web sessions).",
215
- "Use the project's standard logger and type system (no console.log when a structured logger exists; use the project's type idiom — TS types, JSDoc, Python type hints, Go interfaces…).",
216
- SUBPROCESS_CONSTRAINTS
217
- ];
218
216
  const stackRule = buildStackSection({ stack, testFramework });
219
- if (stackRule) sections.push(stackRule);
220
- if (projectDirRule) sections.push(projectDirRule);
221
-
222
- if (serenaEnabled) {
223
- sections.push(SERENA_INSTRUCTIONS);
224
- }
225
-
226
217
  const rtkSnippet = buildRtkInstructions({ rtkAvailable });
227
- if (rtkSnippet) {
228
- sections.push(rtkSnippet);
229
- }
230
-
231
- if (productContext) {
232
- sections.push(`## Product Context\n${productContext}`);
233
- }
234
-
235
- if (domainContext) {
236
- sections.push(`## Domain Context\n${domainContext}`);
237
- }
238
-
239
- if (plan) {
240
- sections.push(`## Implementation Plan (from planner)\nFollow these steps:\n${plan}`);
218
+ let skillSection = null;
219
+ if (projectDir) {
220
+ const skills = await loadAvailableSkills(projectDir);
221
+ skillSection = buildSkillSection(skills, { provider });
241
222
  }
242
223
 
243
- // PR F context injections — order matters:
224
+ // Volatile sections keep the legacy relative order — order matters:
244
225
  // 1. ADRs first (they constrain HOW you implement),
245
226
  // 2. SPEC reference (what section we're satisfying),
246
227
  // 3. Reviewer findings about THIS HU (warnings the coder needs
247
228
  // to consider while writing code),
248
229
  // 4. Acceptance tests (the gate the implementation must pass).
249
- // All four sit BEFORE coder rules / TDD policy so the policy
250
- // frames them, not the other way around.
251
- const adrSection = renderAdrSection(adrs);
252
- if (adrSection) sections.push(adrSection);
253
-
254
- const specSectionLine = renderSpecSectionLine(specSection);
255
- if (specSectionLine) sections.push(specSectionLine);
256
-
257
- const reviewerSection = renderReviewerFindingsSection(reviewerFindings, huId);
258
- if (reviewerSection) sections.push(reviewerSection);
259
-
260
- // Tests-first contract: the gate the implementation must pass.
261
- const testsSection = renderAcceptanceTestsSection(acceptanceTests);
262
- if (testsSection) {
263
- sections.push(testsSection);
264
- }
265
-
266
- if (coderRules) {
267
- sections.push(`Coder rules (MUST follow):\n${coderRules}`);
268
- }
269
-
270
- if (methodology === "tdd") {
271
- sections.push(
272
- [
273
- "Default development policy: TDD.",
274
- "1) Add or update failing tests first.",
275
- "2) Implement minimal code to make tests pass.",
276
- "3) Refactor safely while keeping tests green."
277
- ].join("\n")
278
- );
279
- }
280
-
281
- if (sonarSummary) {
282
- sections.push(`Sonar summary:\n${sonarSummary}`);
283
- }
284
-
285
- if (reviewerFeedback) {
286
- sections.push(
287
- `## Reviewer blocking feedback — YOU MUST FIX THESE BEFORE PROCEEDING`,
288
- reviewerFeedback,
289
- "",
290
- "For each issue above:",
291
- "1. Find the relevant file(s) in the project",
292
- "2. Make the specific code change needed to resolve the issue",
293
- "3. If tests are missing, write them",
294
- "4. If dependencies are needed, install them with the project's package manager (npm install / pip install / go get / cargo add — pick the one that matches the stack above)",
295
- "5. Do NOT skip any issue — all must be resolved"
296
- );
297
- }
298
-
299
- if (deferredContext) {
300
- sections.push(deferredContext);
301
- }
230
+ const reviewerFeedbackSection = reviewerFeedback
231
+ ? [
232
+ `## Reviewer blocking feedback — YOU MUST FIX THESE BEFORE PROCEEDING`,
233
+ reviewerFeedback,
234
+ "",
235
+ "For each issue above:",
236
+ "1. Find the relevant file(s) in the project",
237
+ "2. Make the specific code change needed to resolve the issue",
238
+ "3. If tests are missing, write them",
239
+ "4. If dependencies are needed, install them with the project's package manager (npm install / pip install / go get / cargo add — pick the one that matches the stack above)",
240
+ "5. Do NOT skip any issue — all must be resolved"
241
+ ].join("\n\n")
242
+ : null;
302
243
 
303
- if (projectDir) {
304
- const skills = await loadAvailableSkills(projectDir);
305
- const skillSection = buildSkillSection(skills, { provider });
306
- if (skillSection) {
307
- sections.push(skillSection);
308
- }
309
- }
244
+ return buildPromptLayout([
245
+ section(serenaEnabled ? SUBAGENT_PREAMBLE_SERENA : SUBAGENT_PREAMBLE, STABLE),
246
+ section(langInstruction, STABLE),
247
+ section("Implement directly in the repository.", STABLE),
248
+ section("Keep changes minimal and production-ready.", STABLE),
249
+ section("Follow SOLID principles. Write small, focused functions (< 30 lines).", STABLE),
250
+ section("Make atomic commits: 1 logical change = 1 commit. Keep PRs small and reviewable.", STABLE),
251
+ section("Security: validate all input, parameterize queries, never expose secrets. Use the auth pattern that matches the stack (e.g. httpOnly cookies for web sessions).", STABLE),
252
+ section("Use the project's standard logger and type system (no console.log when a structured logger exists; use the project's type idiom — TS types, JSDoc, Python type hints, Go interfaces…).", STABLE),
253
+ section(SUBPROCESS_CONSTRAINTS, STABLE),
254
+ section(stackRule, STABLE),
255
+ section(projectDirRule, STABLE),
256
+ section(serenaEnabled ? SERENA_INSTRUCTIONS : null, STABLE),
257
+ section(rtkSnippet, STABLE),
258
+ section(productContext ? `## Product Context\n${productContext}` : null, STABLE),
259
+ section(domainContext ? `## Domain Context\n${domainContext}` : null, STABLE),
260
+ section(coderRules ? `Coder rules (MUST follow):\n${coderRules}` : null, STABLE),
261
+ section(
262
+ methodology === "tdd"
263
+ ? [
264
+ "Default development policy: TDD.",
265
+ "1) Add or update failing tests first.",
266
+ "2) Implement minimal code to make tests pass.",
267
+ "3) Refactor safely while keeping tests green."
268
+ ].join("\n")
269
+ : null,
270
+ STABLE
271
+ ),
272
+ section(skillSection, STABLE),
273
+ section(`Task:\n${task}`, VOLATILE),
274
+ section(plan ? `## Implementation Plan (from planner)\nFollow these steps:\n${plan}` : null, VOLATILE),
275
+ section(renderAdrSection(adrs) || null, VOLATILE),
276
+ section(renderSpecSectionLine(specSection) || null, VOLATILE),
277
+ section(renderReviewerFindingsSection(reviewerFindings, huId) || null, VOLATILE),
278
+ section(renderAcceptanceTestsSection(acceptanceTests) || null, VOLATILE),
279
+ section(sonarSummary ? `Sonar summary:\n${sonarSummary}` : null, VOLATILE),
280
+ section(reviewerFeedbackSection, VOLATILE),
281
+ section(deferredContext, VOLATILE),
282
+ ]);
283
+ }
310
284
 
311
- return sections.join("\n\n");
285
+ export async function buildCoderPrompt(options) {
286
+ return joinLayout(await buildCoderPromptLayout(options));
312
287
  }
@@ -1,5 +1,6 @@
1
1
  import { extractFirstJson } from "../utils/json-extract.js";
2
2
  import { getLanguageInstruction } from "../utils/locale.js";
3
+ import { section, buildPromptLayout, joinLayout, STABLE, VOLATILE } from "./prompt-layout.js";
3
4
 
4
5
  const SUBAGENT_PREAMBLE = [
5
6
  "IMPORTANT: You are running as a Karajan sub-agent.",
@@ -22,38 +23,31 @@ const DIMENSION_KEYS = [
22
23
  * @param {{stories: Array<{id: string, text: string}>, instructions: string|null, context?: string|null}} params
23
24
  * @returns {string} The assembled prompt.
24
25
  */
25
- export function buildHuReviewerPrompt({ stories, instructions, context = null, productContext = null, domainContext = null, hu_language = "en" }) {
26
+ /**
27
+ * Build the HU-reviewer prompt as a { stable, volatile } layout (Φ1,
28
+ * KJC-PCS-0057): preamble, instructions, JSON schema and contexts are
29
+ * identical across batches on the same project; the stories under
30
+ * evaluation and the per-batch additional context go last.
31
+ */
32
+ export function buildHuReviewerPromptLayout({ stories, instructions, context = null, productContext = null, domainContext = null, hu_language = "en" }) {
26
33
  const langInstruction = getLanguageInstruction(hu_language);
27
- const sections = [SUBAGENT_PREAMBLE, ...(langInstruction ? [langInstruction] : [])];
28
-
29
- if (instructions) {
30
- sections.push(instructions);
31
- }
32
-
33
- sections.push("## Stories to Evaluate");
34
-
35
- for (const story of stories) {
36
- sections.push(`### ${story.id}\n${story.text}`);
37
- }
38
-
39
- sections.push(
40
- "Return a single valid JSON object and nothing else.",
41
- `JSON schema: {"evaluations":[{"story_id":string,"scores":{"D1_jtbd_context":number,"D2_user_specificity":number,"D3_behavior_change":number,"D4_control_zone":number,"D5_time_constraints":number,"D6_survivable_experiment":number},"total":number,"antipatterns_detected":[string],"verdict":"certified|needs_rewrite|needs_context","evaluation_notes":string,"rewritten":object|null,"certified_hu":object|null,"context_needed":object|null}],"batch_summary":{"total":number,"certified":number,"needs_rewrite":number,"needs_context":number,"consolidated_questions":string}}`
42
- );
43
34
 
44
- if (productContext) {
45
- sections.push(`## Product Context\n${productContext}`);
46
- }
47
-
48
- if (domainContext) {
49
- sections.push(`## Domain Context\n${domainContext}`);
50
- }
51
-
52
- if (context) {
53
- sections.push(`## Additional Context\n${context}`);
54
- }
35
+ return buildPromptLayout([
36
+ section(SUBAGENT_PREAMBLE, STABLE),
37
+ section(langInstruction, STABLE),
38
+ section(instructions, STABLE),
39
+ section("Return a single valid JSON object and nothing else.", STABLE),
40
+ section(`JSON schema: {"evaluations":[{"story_id":string,"scores":{"D1_jtbd_context":number,"D2_user_specificity":number,"D3_behavior_change":number,"D4_control_zone":number,"D5_time_constraints":number,"D6_survivable_experiment":number},"total":number,"antipatterns_detected":[string],"verdict":"certified|needs_rewrite|needs_context","evaluation_notes":string,"rewritten":object|null,"certified_hu":object|null,"context_needed":object|null}],"batch_summary":{"total":number,"certified":number,"needs_rewrite":number,"needs_context":number,"consolidated_questions":string}}`, STABLE),
41
+ section(productContext ? `## Product Context\n${productContext}` : null, STABLE),
42
+ section(domainContext ? `## Domain Context\n${domainContext}` : null, STABLE),
43
+ section("## Stories to Evaluate", VOLATILE),
44
+ ...stories.map((story) => section(`### ${story.id}\n${story.text}`, VOLATILE)),
45
+ section(context ? `## Additional Context\n${context}` : null, VOLATILE),
46
+ ]);
47
+ }
55
48
 
56
- return sections.join("\n\n");
49
+ export function buildHuReviewerPrompt(options) {
50
+ return joinLayout(buildHuReviewerPromptLayout(options));
57
51
  }
58
52
 
59
53
  /**
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Prompt layout helper — Phase 1 (KJC-PCS-0057, cache propio).
3
+ *
4
+ * Separates prompt sections into two buckets so every prompt builder can
5
+ * emit a cache-friendly shape:
6
+ *
7
+ * - stable: identical across iterations of the same HU and across HUs
8
+ * of the same plan (preamble, rules, constraints, skills,
9
+ * product/domain context). Goes FIRST in the rendered prompt
10
+ * so providers with automatic prefix caching (OpenAI, Gemini,
11
+ * LiteLLM-routed) hit on the literal prefix. For Anthropic,
12
+ * agents can send this bucket via --append-system-prompt
13
+ * where the CLI already places cache breakpoints.
14
+ * - volatile: changes per HU/iteration (task, plan, acceptance tests,
15
+ * reviewer feedback, diff). Goes LAST, preserving the
16
+ * relative order the builder pushed it in — the semantic
17
+ * ordering inside the bucket ("order matters" in coder.js)
18
+ * is untouched.
19
+ *
20
+ * Tagging is explicit on purpose: an untagged section throws instead of
21
+ * silently landing in one bucket (a misclassified volatile section would
22
+ * silently break the byte-identical invariant the prefix cache relies on).
23
+ */
24
+
25
+ export const STABLE = "stable";
26
+ export const VOLATILE = "volatile";
27
+
28
+ const SEPARATOR = "\n\n";
29
+
30
+ /**
31
+ * Tag a section for buildPromptLayout. Returns null for empty/non-string
32
+ * content so builders can push conditional sections without guards.
33
+ *
34
+ * @param {string|null|undefined} content
35
+ * @param {"stable"|"volatile"} [stability]
36
+ * @returns {{content: string, stability: string}|null}
37
+ */
38
+ export function section(content, stability = VOLATILE) {
39
+ if (typeof content !== "string" || content.length === 0) return null;
40
+ return { content, stability };
41
+ }
42
+
43
+ /**
44
+ * Split tagged sections into { stable, volatile } blocks. Insertion order
45
+ * is preserved within each bucket. Null/undefined entries are skipped.
46
+ *
47
+ * @param {Array<{content: string, stability: string}|null|undefined>} sections
48
+ * @returns {{stable: string, volatile: string}}
49
+ */
50
+ export function buildPromptLayout(sections) {
51
+ const stable = [];
52
+ const volatile = [];
53
+ for (const entry of sections) {
54
+ if (entry == null) continue;
55
+ if (entry.stability === STABLE) {
56
+ stable.push(entry.content);
57
+ } else if (entry.stability === VOLATILE) {
58
+ volatile.push(entry.content);
59
+ } else {
60
+ throw new Error(
61
+ `prompt-layout: section has invalid stability tag "${entry?.stability}" — use section(content, STABLE|VOLATILE)`
62
+ );
63
+ }
64
+ }
65
+ return { stable: stable.join(SEPARATOR), volatile: volatile.join(SEPARATOR) };
66
+ }
67
+
68
+ /**
69
+ * Render a layout as a single prompt string: stable prefix first, volatile
70
+ * tail last. Used by agents whose provider caches on the literal token
71
+ * prefix (codex, gemini, aider, opencode).
72
+ *
73
+ * @param {{stable: string, volatile: string}} layout
74
+ * @returns {string}
75
+ */
76
+ export function joinLayout({ stable, volatile }) {
77
+ if (!stable) return volatile;
78
+ if (!volatile) return stable;
79
+ return `${stable}${SEPARATOR}${volatile}`;
80
+ }