karajan-code 3.3.0 → 3.4.1

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 (781) 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/deps/common.gypi +68 -0
  76. package/node_modules/better-sqlite3/deps/copy.js +31 -0
  77. package/node_modules/better-sqlite3/deps/defines.gypi +42 -0
  78. package/node_modules/better-sqlite3/deps/download.sh +123 -0
  79. package/node_modules/better-sqlite3/deps/patches/1208.patch +15 -0
  80. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +268879 -0
  81. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +14335 -0
  82. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +739 -0
  83. package/node_modules/better-sqlite3/deps/sqlite3.gyp +80 -0
  84. package/node_modules/better-sqlite3/deps/test_extension.c +21 -0
  85. package/node_modules/better-sqlite3/lib/database.js +90 -0
  86. package/node_modules/better-sqlite3/lib/index.js +3 -0
  87. package/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  88. package/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  89. package/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  90. package/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  91. package/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  92. package/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  93. package/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  94. package/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  95. package/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  96. package/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  97. package/node_modules/better-sqlite3/lib/util.js +12 -0
  98. package/node_modules/better-sqlite3/package.json +59 -0
  99. package/node_modules/better-sqlite3/src/addon.cpp +47 -0
  100. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +74 -0
  101. package/node_modules/better-sqlite3/src/objects/backup.cpp +120 -0
  102. package/node_modules/better-sqlite3/src/objects/backup.hpp +36 -0
  103. package/node_modules/better-sqlite3/src/objects/database.cpp +417 -0
  104. package/node_modules/better-sqlite3/src/objects/database.hpp +103 -0
  105. package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +113 -0
  106. package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +50 -0
  107. package/node_modules/better-sqlite3/src/objects/statement.cpp +383 -0
  108. package/node_modules/better-sqlite3/src/objects/statement.hpp +58 -0
  109. package/node_modules/better-sqlite3/src/util/bind-map.cpp +73 -0
  110. package/node_modules/better-sqlite3/src/util/binder.cpp +193 -0
  111. package/node_modules/better-sqlite3/src/util/constants.cpp +172 -0
  112. package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +121 -0
  113. package/node_modules/better-sqlite3/src/util/custom-function.cpp +59 -0
  114. package/node_modules/better-sqlite3/src/util/custom-table.cpp +409 -0
  115. package/node_modules/better-sqlite3/src/util/data-converter.cpp +17 -0
  116. package/node_modules/better-sqlite3/src/util/data.cpp +194 -0
  117. package/node_modules/better-sqlite3/src/util/helpers.cpp +109 -0
  118. package/node_modules/better-sqlite3/src/util/macros.cpp +83 -0
  119. package/node_modules/better-sqlite3/src/util/query-macros.cpp +71 -0
  120. package/node_modules/better-sqlite3/src/util/row-builder.cpp +49 -0
  121. package/node_modules/bindings/LICENSE.md +22 -0
  122. package/node_modules/bindings/README.md +98 -0
  123. package/node_modules/bindings/bindings.js +221 -0
  124. package/node_modules/bindings/package.json +28 -0
  125. package/node_modules/bl/.travis.yml +17 -0
  126. package/node_modules/bl/BufferList.js +396 -0
  127. package/node_modules/bl/LICENSE.md +13 -0
  128. package/node_modules/bl/README.md +247 -0
  129. package/node_modules/bl/bl.js +84 -0
  130. package/node_modules/bl/package.json +37 -0
  131. package/node_modules/bl/test/convert.js +21 -0
  132. package/node_modules/bl/test/indexOf.js +492 -0
  133. package/node_modules/bl/test/isBufferList.js +32 -0
  134. package/node_modules/bl/test/test.js +869 -0
  135. package/node_modules/buffer/AUTHORS.md +70 -0
  136. package/node_modules/buffer/LICENSE +21 -0
  137. package/node_modules/buffer/README.md +410 -0
  138. package/node_modules/buffer/index.d.ts +186 -0
  139. package/node_modules/buffer/index.js +1817 -0
  140. package/node_modules/buffer/package.json +96 -0
  141. package/node_modules/chownr/LICENSE +15 -0
  142. package/node_modules/chownr/README.md +3 -0
  143. package/node_modules/chownr/chownr.js +167 -0
  144. package/node_modules/chownr/package.json +29 -0
  145. package/node_modules/cross-spawn/LICENSE +21 -0
  146. package/node_modules/cross-spawn/README.md +89 -0
  147. package/node_modules/cross-spawn/index.js +39 -0
  148. package/node_modules/cross-spawn/lib/enoent.js +59 -0
  149. package/node_modules/cross-spawn/lib/parse.js +91 -0
  150. package/node_modules/cross-spawn/lib/util/escape.js +47 -0
  151. package/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  152. package/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  153. package/node_modules/cross-spawn/package.json +73 -0
  154. package/node_modules/decompress-response/index.d.ts +22 -0
  155. package/node_modules/decompress-response/index.js +58 -0
  156. package/node_modules/decompress-response/license +9 -0
  157. package/node_modules/decompress-response/package.json +56 -0
  158. package/node_modules/decompress-response/readme.md +48 -0
  159. package/node_modules/deep-extend/LICENSE +20 -0
  160. package/node_modules/deep-extend/README.md +91 -0
  161. package/node_modules/deep-extend/index.js +1 -0
  162. package/node_modules/deep-extend/lib/deep-extend.js +150 -0
  163. package/node_modules/deep-extend/package.json +62 -0
  164. package/node_modules/detect-libc/LICENSE +201 -0
  165. package/node_modules/detect-libc/README.md +163 -0
  166. package/node_modules/detect-libc/index.d.ts +14 -0
  167. package/node_modules/detect-libc/lib/detect-libc.js +313 -0
  168. package/node_modules/detect-libc/lib/elf.js +39 -0
  169. package/node_modules/detect-libc/lib/filesystem.js +51 -0
  170. package/node_modules/detect-libc/lib/process.js +24 -0
  171. package/node_modules/detect-libc/package.json +44 -0
  172. package/node_modules/end-of-stream/LICENSE +21 -0
  173. package/node_modules/end-of-stream/README.md +54 -0
  174. package/node_modules/end-of-stream/index.js +96 -0
  175. package/node_modules/end-of-stream/package.json +37 -0
  176. package/node_modules/execa/index.d.ts +27 -0
  177. package/node_modules/execa/index.js +28 -0
  178. package/node_modules/execa/lib/arguments/command.js +20 -0
  179. package/node_modules/execa/lib/arguments/cwd.js +39 -0
  180. package/node_modules/execa/lib/arguments/encoding-option.js +50 -0
  181. package/node_modules/execa/lib/arguments/escape.js +88 -0
  182. package/node_modules/execa/lib/arguments/fd-options.js +108 -0
  183. package/node_modules/execa/lib/arguments/file-url.js +25 -0
  184. package/node_modules/execa/lib/arguments/options.js +96 -0
  185. package/node_modules/execa/lib/arguments/shell.js +11 -0
  186. package/node_modules/execa/lib/arguments/specific.js +111 -0
  187. package/node_modules/execa/lib/convert/add.js +15 -0
  188. package/node_modules/execa/lib/convert/concurrent.js +33 -0
  189. package/node_modules/execa/lib/convert/duplex.js +69 -0
  190. package/node_modules/execa/lib/convert/iterable.js +34 -0
  191. package/node_modules/execa/lib/convert/readable.js +113 -0
  192. package/node_modules/execa/lib/convert/shared.js +46 -0
  193. package/node_modules/execa/lib/convert/writable.js +90 -0
  194. package/node_modules/execa/lib/io/contents.js +116 -0
  195. package/node_modules/execa/lib/io/input-sync.js +44 -0
  196. package/node_modules/execa/lib/io/iterate.js +110 -0
  197. package/node_modules/execa/lib/io/max-buffer.js +89 -0
  198. package/node_modules/execa/lib/io/output-async.js +80 -0
  199. package/node_modules/execa/lib/io/output-sync.js +135 -0
  200. package/node_modules/execa/lib/io/pipeline.js +48 -0
  201. package/node_modules/execa/lib/io/strip-newline.js +12 -0
  202. package/node_modules/execa/lib/ipc/array.js +4 -0
  203. package/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
  204. package/node_modules/execa/lib/ipc/forward.js +56 -0
  205. package/node_modules/execa/lib/ipc/get-each.js +89 -0
  206. package/node_modules/execa/lib/ipc/get-one.js +69 -0
  207. package/node_modules/execa/lib/ipc/graceful.js +72 -0
  208. package/node_modules/execa/lib/ipc/incoming.js +79 -0
  209. package/node_modules/execa/lib/ipc/ipc-input.js +44 -0
  210. package/node_modules/execa/lib/ipc/methods.js +49 -0
  211. package/node_modules/execa/lib/ipc/outgoing.js +47 -0
  212. package/node_modules/execa/lib/ipc/reference.js +44 -0
  213. package/node_modules/execa/lib/ipc/send.js +91 -0
  214. package/node_modules/execa/lib/ipc/strict.js +113 -0
  215. package/node_modules/execa/lib/ipc/validation.js +111 -0
  216. package/node_modules/execa/lib/methods/bind.js +23 -0
  217. package/node_modules/execa/lib/methods/command.js +43 -0
  218. package/node_modules/execa/lib/methods/create.js +65 -0
  219. package/node_modules/execa/lib/methods/main-async.js +194 -0
  220. package/node_modules/execa/lib/methods/main-sync.js +163 -0
  221. package/node_modules/execa/lib/methods/node.js +51 -0
  222. package/node_modules/execa/lib/methods/parameters.js +31 -0
  223. package/node_modules/execa/lib/methods/promise.js +15 -0
  224. package/node_modules/execa/lib/methods/script.js +22 -0
  225. package/node_modules/execa/lib/methods/template.js +153 -0
  226. package/node_modules/execa/lib/pipe/abort.js +20 -0
  227. package/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
  228. package/node_modules/execa/lib/pipe/sequence.js +24 -0
  229. package/node_modules/execa/lib/pipe/setup.js +72 -0
  230. package/node_modules/execa/lib/pipe/streaming.js +51 -0
  231. package/node_modules/execa/lib/pipe/throw.js +58 -0
  232. package/node_modules/execa/lib/resolve/all-async.js +46 -0
  233. package/node_modules/execa/lib/resolve/all-sync.js +33 -0
  234. package/node_modules/execa/lib/resolve/exit-async.js +54 -0
  235. package/node_modules/execa/lib/resolve/exit-sync.js +25 -0
  236. package/node_modules/execa/lib/resolve/stdio.js +47 -0
  237. package/node_modules/execa/lib/resolve/wait-stream.js +96 -0
  238. package/node_modules/execa/lib/resolve/wait-subprocess.js +146 -0
  239. package/node_modules/execa/lib/return/duration.js +8 -0
  240. package/node_modules/execa/lib/return/early-error.js +60 -0
  241. package/node_modules/execa/lib/return/final-error.js +40 -0
  242. package/node_modules/execa/lib/return/message.js +157 -0
  243. package/node_modules/execa/lib/return/reject.js +13 -0
  244. package/node_modules/execa/lib/return/result.js +186 -0
  245. package/node_modules/execa/lib/stdio/direction.js +76 -0
  246. package/node_modules/execa/lib/stdio/duplicate.js +116 -0
  247. package/node_modules/execa/lib/stdio/handle-async.js +52 -0
  248. package/node_modules/execa/lib/stdio/handle-sync.js +57 -0
  249. package/node_modules/execa/lib/stdio/handle.js +214 -0
  250. package/node_modules/execa/lib/stdio/input-option.js +50 -0
  251. package/node_modules/execa/lib/stdio/native.js +106 -0
  252. package/node_modules/execa/lib/stdio/stdio-option.js +60 -0
  253. package/node_modules/execa/lib/stdio/type.js +173 -0
  254. package/node_modules/execa/lib/terminate/cancel.js +20 -0
  255. package/node_modules/execa/lib/terminate/cleanup.js +16 -0
  256. package/node_modules/execa/lib/terminate/graceful.js +71 -0
  257. package/node_modules/execa/lib/terminate/kill.js +93 -0
  258. package/node_modules/execa/lib/terminate/signal.js +70 -0
  259. package/node_modules/execa/lib/terminate/timeout.js +21 -0
  260. package/node_modules/execa/lib/transform/encoding-transform.js +51 -0
  261. package/node_modules/execa/lib/transform/generator.js +107 -0
  262. package/node_modules/execa/lib/transform/normalize.js +111 -0
  263. package/node_modules/execa/lib/transform/object-mode.js +41 -0
  264. package/node_modules/execa/lib/transform/run-async.js +60 -0
  265. package/node_modules/execa/lib/transform/run-sync.js +50 -0
  266. package/node_modules/execa/lib/transform/split.js +110 -0
  267. package/node_modules/execa/lib/transform/validate.js +43 -0
  268. package/node_modules/execa/lib/utils/abort-signal.js +8 -0
  269. package/node_modules/execa/lib/utils/deferred.js +7 -0
  270. package/node_modules/execa/lib/utils/max-listeners.js +14 -0
  271. package/node_modules/execa/lib/utils/standard-stream.js +6 -0
  272. package/node_modules/execa/lib/utils/uint-array.js +69 -0
  273. package/node_modules/execa/lib/verbose/complete.js +24 -0
  274. package/node_modules/execa/lib/verbose/custom.js +26 -0
  275. package/node_modules/execa/lib/verbose/default.js +54 -0
  276. package/node_modules/execa/lib/verbose/error.js +13 -0
  277. package/node_modules/execa/lib/verbose/info.js +39 -0
  278. package/node_modules/execa/lib/verbose/ipc.js +15 -0
  279. package/node_modules/execa/lib/verbose/log.js +54 -0
  280. package/node_modules/execa/lib/verbose/output.js +60 -0
  281. package/node_modules/execa/lib/verbose/start.js +15 -0
  282. package/node_modules/execa/lib/verbose/values.js +33 -0
  283. package/node_modules/execa/license +9 -0
  284. package/node_modules/execa/package.json +105 -0
  285. package/node_modules/execa/readme.md +461 -0
  286. package/node_modules/execa/types/arguments/encoding-option.d.ts +19 -0
  287. package/node_modules/execa/types/arguments/fd-options.d.ts +8 -0
  288. package/node_modules/execa/types/arguments/options.d.ts +400 -0
  289. package/node_modules/execa/types/arguments/specific.d.ts +52 -0
  290. package/node_modules/execa/types/convert.d.ts +58 -0
  291. package/node_modules/execa/types/ipc.d.ts +156 -0
  292. package/node_modules/execa/types/methods/command.d.ts +114 -0
  293. package/node_modules/execa/types/methods/main-async.d.ts +379 -0
  294. package/node_modules/execa/types/methods/main-sync.d.ts +59 -0
  295. package/node_modules/execa/types/methods/node.d.ts +62 -0
  296. package/node_modules/execa/types/methods/script.d.ts +115 -0
  297. package/node_modules/execa/types/methods/template.d.ts +18 -0
  298. package/node_modules/execa/types/pipe.d.ts +58 -0
  299. package/node_modules/execa/types/return/final-error.d.ts +51 -0
  300. package/node_modules/execa/types/return/ignore.d.ts +26 -0
  301. package/node_modules/execa/types/return/result-all.d.ts +30 -0
  302. package/node_modules/execa/types/return/result-ipc.d.ts +27 -0
  303. package/node_modules/execa/types/return/result-stdio.d.ts +17 -0
  304. package/node_modules/execa/types/return/result-stdout.d.ts +50 -0
  305. package/node_modules/execa/types/return/result.d.ts +203 -0
  306. package/node_modules/execa/types/stdio/array.d.ts +16 -0
  307. package/node_modules/execa/types/stdio/direction.d.ts +12 -0
  308. package/node_modules/execa/types/stdio/option.d.ts +40 -0
  309. package/node_modules/execa/types/stdio/type.d.ts +170 -0
  310. package/node_modules/execa/types/subprocess/all.d.ts +17 -0
  311. package/node_modules/execa/types/subprocess/stdio.d.ts +18 -0
  312. package/node_modules/execa/types/subprocess/stdout.d.ts +22 -0
  313. package/node_modules/execa/types/subprocess/subprocess.d.ts +117 -0
  314. package/node_modules/execa/types/transform/normalize.d.ts +57 -0
  315. package/node_modules/execa/types/transform/object-mode.d.ts +21 -0
  316. package/node_modules/execa/types/utils.d.ts +13 -0
  317. package/node_modules/execa/types/verbose.d.ts +98 -0
  318. package/node_modules/expand-template/.travis.yml +6 -0
  319. package/node_modules/expand-template/LICENSE +21 -0
  320. package/node_modules/expand-template/README.md +43 -0
  321. package/node_modules/expand-template/index.js +26 -0
  322. package/node_modules/expand-template/package.json +29 -0
  323. package/node_modules/expand-template/test.js +67 -0
  324. package/node_modules/figures/index.d.ts +279 -0
  325. package/node_modules/figures/index.js +292 -0
  326. package/node_modules/figures/license +9 -0
  327. package/node_modules/figures/package.json +49 -0
  328. package/node_modules/figures/readme.md +337 -0
  329. package/node_modules/file-uri-to-path/.npmignore +1 -0
  330. package/node_modules/file-uri-to-path/.travis.yml +30 -0
  331. package/node_modules/file-uri-to-path/History.md +21 -0
  332. package/node_modules/file-uri-to-path/LICENSE +20 -0
  333. package/node_modules/file-uri-to-path/README.md +74 -0
  334. package/node_modules/file-uri-to-path/index.d.ts +2 -0
  335. package/node_modules/file-uri-to-path/index.js +66 -0
  336. package/node_modules/file-uri-to-path/package.json +32 -0
  337. package/node_modules/file-uri-to-path/test/test.js +24 -0
  338. package/node_modules/file-uri-to-path/test/tests.json +13 -0
  339. package/node_modules/fs-constants/LICENSE +21 -0
  340. package/node_modules/fs-constants/README.md +26 -0
  341. package/node_modules/fs-constants/browser.js +1 -0
  342. package/node_modules/fs-constants/index.js +1 -0
  343. package/node_modules/fs-constants/package.json +19 -0
  344. package/node_modules/get-stream/license +9 -0
  345. package/node_modules/get-stream/package.json +60 -0
  346. package/node_modules/get-stream/readme.md +303 -0
  347. package/node_modules/get-stream/source/array-buffer.js +84 -0
  348. package/node_modules/get-stream/source/array.js +32 -0
  349. package/node_modules/get-stream/source/buffer.js +19 -0
  350. package/node_modules/get-stream/source/contents.js +121 -0
  351. package/node_modules/get-stream/source/exports.js +5 -0
  352. package/node_modules/get-stream/source/index.d.ts +121 -0
  353. package/node_modules/get-stream/source/index.js +13 -0
  354. package/node_modules/get-stream/source/stream.js +65 -0
  355. package/node_modules/get-stream/source/string.js +41 -0
  356. package/node_modules/get-stream/source/utils.js +11 -0
  357. package/node_modules/github-from-package/.travis.yml +4 -0
  358. package/node_modules/github-from-package/LICENSE +18 -0
  359. package/node_modules/github-from-package/example/package.json +8 -0
  360. package/node_modules/github-from-package/example/url.js +3 -0
  361. package/node_modules/github-from-package/index.js +17 -0
  362. package/node_modules/github-from-package/package.json +30 -0
  363. package/node_modules/github-from-package/readme.markdown +53 -0
  364. package/node_modules/github-from-package/test/a.json +8 -0
  365. package/node_modules/github-from-package/test/b.json +5 -0
  366. package/node_modules/github-from-package/test/c.json +5 -0
  367. package/node_modules/github-from-package/test/d.json +7 -0
  368. package/node_modules/github-from-package/test/e.json +5 -0
  369. package/node_modules/github-from-package/test/url.js +19 -0
  370. package/node_modules/human-signals/LICENSE +201 -0
  371. package/node_modules/human-signals/README.md +171 -0
  372. package/node_modules/human-signals/build/src/core.js +273 -0
  373. package/node_modules/human-signals/build/src/main.d.ts +206 -0
  374. package/node_modules/human-signals/build/src/main.js +70 -0
  375. package/node_modules/human-signals/build/src/realtime.js +16 -0
  376. package/node_modules/human-signals/build/src/signals.js +34 -0
  377. package/node_modules/human-signals/package.json +66 -0
  378. package/node_modules/ieee754/LICENSE +11 -0
  379. package/node_modules/ieee754/README.md +51 -0
  380. package/node_modules/ieee754/index.d.ts +10 -0
  381. package/node_modules/ieee754/index.js +85 -0
  382. package/node_modules/ieee754/package.json +52 -0
  383. package/node_modules/inherits/LICENSE +16 -0
  384. package/node_modules/inherits/README.md +42 -0
  385. package/node_modules/inherits/inherits.js +9 -0
  386. package/node_modules/inherits/inherits_browser.js +27 -0
  387. package/node_modules/inherits/package.json +29 -0
  388. package/node_modules/ini/LICENSE +15 -0
  389. package/node_modules/ini/README.md +102 -0
  390. package/node_modules/ini/ini.js +206 -0
  391. package/node_modules/ini/package.json +33 -0
  392. package/node_modules/is-plain-obj/index.d.ts +35 -0
  393. package/node_modules/is-plain-obj/index.js +8 -0
  394. package/node_modules/is-plain-obj/license +9 -0
  395. package/node_modules/is-plain-obj/package.json +41 -0
  396. package/node_modules/is-plain-obj/readme.md +58 -0
  397. package/node_modules/is-stream/index.d.ts +90 -0
  398. package/node_modules/is-stream/index.js +37 -0
  399. package/node_modules/is-stream/license +9 -0
  400. package/node_modules/is-stream/package.json +48 -0
  401. package/node_modules/is-stream/readme.md +57 -0
  402. package/node_modules/is-unicode-supported/index.d.ts +12 -0
  403. package/node_modules/is-unicode-supported/index.js +21 -0
  404. package/node_modules/is-unicode-supported/license +9 -0
  405. package/node_modules/is-unicode-supported/package.json +47 -0
  406. package/node_modules/is-unicode-supported/readme.md +35 -0
  407. package/node_modules/isexe/.npmignore +2 -0
  408. package/node_modules/isexe/LICENSE +15 -0
  409. package/node_modules/isexe/README.md +51 -0
  410. package/node_modules/isexe/index.js +57 -0
  411. package/node_modules/isexe/mode.js +41 -0
  412. package/node_modules/isexe/package.json +31 -0
  413. package/node_modules/isexe/test/basic.js +221 -0
  414. package/node_modules/isexe/windows.js +42 -0
  415. package/node_modules/mimic-response/index.d.ts +17 -0
  416. package/node_modules/mimic-response/index.js +77 -0
  417. package/node_modules/mimic-response/license +9 -0
  418. package/node_modules/mimic-response/package.json +42 -0
  419. package/node_modules/mimic-response/readme.md +78 -0
  420. package/node_modules/minimist/.eslintrc +29 -0
  421. package/node_modules/minimist/.github/FUNDING.yml +12 -0
  422. package/node_modules/minimist/.nycrc +14 -0
  423. package/node_modules/minimist/CHANGELOG.md +298 -0
  424. package/node_modules/minimist/LICENSE +18 -0
  425. package/node_modules/minimist/README.md +121 -0
  426. package/node_modules/minimist/example/parse.js +4 -0
  427. package/node_modules/minimist/index.js +263 -0
  428. package/node_modules/minimist/package.json +75 -0
  429. package/node_modules/minimist/test/all_bool.js +34 -0
  430. package/node_modules/minimist/test/bool.js +177 -0
  431. package/node_modules/minimist/test/dash.js +43 -0
  432. package/node_modules/minimist/test/default_bool.js +37 -0
  433. package/node_modules/minimist/test/dotted.js +24 -0
  434. package/node_modules/minimist/test/kv_short.js +32 -0
  435. package/node_modules/minimist/test/long.js +33 -0
  436. package/node_modules/minimist/test/num.js +38 -0
  437. package/node_modules/minimist/test/parse.js +209 -0
  438. package/node_modules/minimist/test/parse_modified.js +11 -0
  439. package/node_modules/minimist/test/proto.js +64 -0
  440. package/node_modules/minimist/test/short.js +69 -0
  441. package/node_modules/minimist/test/stop_early.js +17 -0
  442. package/node_modules/minimist/test/unknown.js +104 -0
  443. package/node_modules/minimist/test/whitespace.js +10 -0
  444. package/node_modules/mkdirp-classic/LICENSE +21 -0
  445. package/node_modules/mkdirp-classic/README.md +18 -0
  446. package/node_modules/mkdirp-classic/index.js +98 -0
  447. package/node_modules/mkdirp-classic/package.json +18 -0
  448. package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +31 -0
  449. package/node_modules/napi-build-utils/LICENSE +21 -0
  450. package/node_modules/napi-build-utils/README.md +52 -0
  451. package/node_modules/napi-build-utils/index.js +214 -0
  452. package/node_modules/napi-build-utils/index.md +0 -0
  453. package/node_modules/napi-build-utils/package.json +42 -0
  454. package/node_modules/node-abi/LICENSE +21 -0
  455. package/node_modules/node-abi/README.md +54 -0
  456. package/node_modules/node-abi/abi_registry.json +446 -0
  457. package/node_modules/node-abi/index.js +179 -0
  458. package/node_modules/node-abi/package.json +45 -0
  459. package/node_modules/npm-run-path/index.d.ts +90 -0
  460. package/node_modules/npm-run-path/index.js +55 -0
  461. package/node_modules/npm-run-path/license +9 -0
  462. package/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
  463. package/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
  464. package/node_modules/npm-run-path/node_modules/path-key/license +9 -0
  465. package/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
  466. package/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
  467. package/node_modules/npm-run-path/package.json +52 -0
  468. package/node_modules/npm-run-path/readme.md +104 -0
  469. package/node_modules/once/LICENSE +15 -0
  470. package/node_modules/once/README.md +79 -0
  471. package/node_modules/once/once.js +42 -0
  472. package/node_modules/once/package.json +33 -0
  473. package/node_modules/parse-ms/index.d.ts +30 -0
  474. package/node_modules/parse-ms/index.js +45 -0
  475. package/node_modules/parse-ms/license +9 -0
  476. package/node_modules/parse-ms/package.json +47 -0
  477. package/node_modules/parse-ms/readme.md +46 -0
  478. package/node_modules/path-key/index.d.ts +40 -0
  479. package/node_modules/path-key/index.js +16 -0
  480. package/node_modules/path-key/license +9 -0
  481. package/node_modules/path-key/package.json +39 -0
  482. package/node_modules/path-key/readme.md +61 -0
  483. package/node_modules/prebuild-install/CHANGELOG.md +131 -0
  484. package/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
  485. package/node_modules/prebuild-install/LICENSE +21 -0
  486. package/node_modules/prebuild-install/README.md +163 -0
  487. package/node_modules/prebuild-install/asset.js +44 -0
  488. package/node_modules/prebuild-install/bin.js +78 -0
  489. package/node_modules/prebuild-install/download.js +142 -0
  490. package/node_modules/prebuild-install/error.js +14 -0
  491. package/node_modules/prebuild-install/help.txt +16 -0
  492. package/node_modules/prebuild-install/index.js +1 -0
  493. package/node_modules/prebuild-install/log.js +33 -0
  494. package/node_modules/prebuild-install/package.json +67 -0
  495. package/node_modules/prebuild-install/proxy.js +35 -0
  496. package/node_modules/prebuild-install/rc.js +64 -0
  497. package/node_modules/prebuild-install/util.js +143 -0
  498. package/node_modules/pretty-ms/index.d.ts +157 -0
  499. package/node_modules/pretty-ms/index.js +149 -0
  500. package/node_modules/pretty-ms/license +9 -0
  501. package/node_modules/pretty-ms/package.json +55 -0
  502. package/node_modules/pretty-ms/readme.md +179 -0
  503. package/node_modules/pump/.github/FUNDING.yml +2 -0
  504. package/node_modules/pump/.travis.yml +5 -0
  505. package/node_modules/pump/LICENSE +21 -0
  506. package/node_modules/pump/README.md +74 -0
  507. package/node_modules/pump/SECURITY.md +5 -0
  508. package/node_modules/pump/empty.js +1 -0
  509. package/node_modules/pump/index.js +86 -0
  510. package/node_modules/pump/package.json +30 -0
  511. package/node_modules/pump/test-browser.js +66 -0
  512. package/node_modules/pump/test-node.js +53 -0
  513. package/node_modules/rc/LICENSE.APACHE2 +15 -0
  514. package/node_modules/rc/LICENSE.BSD +26 -0
  515. package/node_modules/rc/LICENSE.MIT +24 -0
  516. package/node_modules/rc/README.md +227 -0
  517. package/node_modules/rc/browser.js +7 -0
  518. package/node_modules/rc/cli.js +4 -0
  519. package/node_modules/rc/index.js +53 -0
  520. package/node_modules/rc/lib/utils.js +104 -0
  521. package/node_modules/rc/package.json +29 -0
  522. package/node_modules/rc/test/ini.js +16 -0
  523. package/node_modules/rc/test/nested-env-vars.js +50 -0
  524. package/node_modules/rc/test/test.js +59 -0
  525. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  526. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  527. package/node_modules/readable-stream/LICENSE +47 -0
  528. package/node_modules/readable-stream/README.md +106 -0
  529. package/node_modules/readable-stream/errors-browser.js +127 -0
  530. package/node_modules/readable-stream/errors.js +116 -0
  531. package/node_modules/readable-stream/experimentalWarning.js +17 -0
  532. package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  533. package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  534. package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  535. package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  536. package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  537. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  538. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  539. package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  540. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  541. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  542. package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  543. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  544. package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  545. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  546. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  547. package/node_modules/readable-stream/package.json +68 -0
  548. package/node_modules/readable-stream/readable-browser.js +9 -0
  549. package/node_modules/readable-stream/readable.js +16 -0
  550. package/node_modules/safe-buffer/LICENSE +21 -0
  551. package/node_modules/safe-buffer/README.md +584 -0
  552. package/node_modules/safe-buffer/index.d.ts +187 -0
  553. package/node_modules/safe-buffer/index.js +65 -0
  554. package/node_modules/safe-buffer/package.json +51 -0
  555. package/node_modules/semver/LICENSE +15 -0
  556. package/node_modules/semver/README.md +665 -0
  557. package/node_modules/semver/bin/semver.js +191 -0
  558. package/node_modules/semver/classes/comparator.js +143 -0
  559. package/node_modules/semver/classes/index.js +7 -0
  560. package/node_modules/semver/classes/range.js +557 -0
  561. package/node_modules/semver/classes/semver.js +333 -0
  562. package/node_modules/semver/functions/clean.js +8 -0
  563. package/node_modules/semver/functions/cmp.js +54 -0
  564. package/node_modules/semver/functions/coerce.js +62 -0
  565. package/node_modules/semver/functions/compare-build.js +9 -0
  566. package/node_modules/semver/functions/compare-loose.js +5 -0
  567. package/node_modules/semver/functions/compare.js +7 -0
  568. package/node_modules/semver/functions/diff.js +60 -0
  569. package/node_modules/semver/functions/eq.js +5 -0
  570. package/node_modules/semver/functions/gt.js +5 -0
  571. package/node_modules/semver/functions/gte.js +5 -0
  572. package/node_modules/semver/functions/inc.js +21 -0
  573. package/node_modules/semver/functions/lt.js +5 -0
  574. package/node_modules/semver/functions/lte.js +5 -0
  575. package/node_modules/semver/functions/major.js +5 -0
  576. package/node_modules/semver/functions/minor.js +5 -0
  577. package/node_modules/semver/functions/neq.js +5 -0
  578. package/node_modules/semver/functions/parse.js +18 -0
  579. package/node_modules/semver/functions/patch.js +5 -0
  580. package/node_modules/semver/functions/prerelease.js +8 -0
  581. package/node_modules/semver/functions/rcompare.js +5 -0
  582. package/node_modules/semver/functions/rsort.js +5 -0
  583. package/node_modules/semver/functions/satisfies.js +12 -0
  584. package/node_modules/semver/functions/sort.js +5 -0
  585. package/node_modules/semver/functions/valid.js +8 -0
  586. package/node_modules/semver/index.js +91 -0
  587. package/node_modules/semver/internal/constants.js +37 -0
  588. package/node_modules/semver/internal/debug.js +11 -0
  589. package/node_modules/semver/internal/identifiers.js +29 -0
  590. package/node_modules/semver/internal/lrucache.js +42 -0
  591. package/node_modules/semver/internal/parse-options.js +17 -0
  592. package/node_modules/semver/internal/re.js +223 -0
  593. package/node_modules/semver/package.json +78 -0
  594. package/node_modules/semver/preload.js +4 -0
  595. package/node_modules/semver/range.bnf +16 -0
  596. package/node_modules/semver/ranges/gtr.js +6 -0
  597. package/node_modules/semver/ranges/intersects.js +9 -0
  598. package/node_modules/semver/ranges/ltr.js +6 -0
  599. package/node_modules/semver/ranges/max-satisfying.js +27 -0
  600. package/node_modules/semver/ranges/min-satisfying.js +26 -0
  601. package/node_modules/semver/ranges/min-version.js +63 -0
  602. package/node_modules/semver/ranges/outside.js +82 -0
  603. package/node_modules/semver/ranges/simplify.js +49 -0
  604. package/node_modules/semver/ranges/subset.js +249 -0
  605. package/node_modules/semver/ranges/to-comparators.js +10 -0
  606. package/node_modules/semver/ranges/valid.js +13 -0
  607. package/node_modules/shebang-command/index.js +19 -0
  608. package/node_modules/shebang-command/license +9 -0
  609. package/node_modules/shebang-command/package.json +34 -0
  610. package/node_modules/shebang-command/readme.md +34 -0
  611. package/node_modules/shebang-regex/index.d.ts +22 -0
  612. package/node_modules/shebang-regex/index.js +2 -0
  613. package/node_modules/shebang-regex/license +9 -0
  614. package/node_modules/shebang-regex/package.json +35 -0
  615. package/node_modules/shebang-regex/readme.md +33 -0
  616. package/node_modules/signal-exit/LICENSE.txt +16 -0
  617. package/node_modules/signal-exit/README.md +74 -0
  618. package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
  619. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  620. package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  621. package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  622. package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
  623. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  624. package/node_modules/signal-exit/dist/cjs/index.js +279 -0
  625. package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  626. package/node_modules/signal-exit/dist/cjs/package.json +3 -0
  627. package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
  628. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  629. package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  630. package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  631. package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
  632. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  633. package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  634. package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  635. package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
  636. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  637. package/node_modules/signal-exit/dist/mjs/index.js +275 -0
  638. package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  639. package/node_modules/signal-exit/dist/mjs/package.json +3 -0
  640. package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
  641. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  642. package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  643. package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  644. package/node_modules/signal-exit/package.json +106 -0
  645. package/node_modules/simple-concat/.travis.yml +3 -0
  646. package/node_modules/simple-concat/LICENSE +20 -0
  647. package/node_modules/simple-concat/README.md +44 -0
  648. package/node_modules/simple-concat/index.js +15 -0
  649. package/node_modules/simple-concat/package.json +47 -0
  650. package/node_modules/simple-concat/test/basic.js +41 -0
  651. package/node_modules/simple-get/.github/dependabot.yml +15 -0
  652. package/node_modules/simple-get/.github/workflows/ci.yml +23 -0
  653. package/node_modules/simple-get/LICENSE +20 -0
  654. package/node_modules/simple-get/README.md +333 -0
  655. package/node_modules/simple-get/index.js +108 -0
  656. package/node_modules/simple-get/package.json +67 -0
  657. package/node_modules/sqlite-vec/README.md +1 -0
  658. package/node_modules/sqlite-vec/package.json +1 -0
  659. package/node_modules/sqlite-vec-linux-x64/README.md +1 -0
  660. package/node_modules/sqlite-vec-linux-x64/package.json +1 -0
  661. package/node_modules/string_decoder/LICENSE +48 -0
  662. package/node_modules/string_decoder/README.md +47 -0
  663. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  664. package/node_modules/string_decoder/package.json +34 -0
  665. package/node_modules/strip-final-newline/index.d.ts +18 -0
  666. package/node_modules/strip-final-newline/index.js +26 -0
  667. package/node_modules/strip-final-newline/license +9 -0
  668. package/node_modules/strip-final-newline/package.json +49 -0
  669. package/node_modules/strip-final-newline/readme.md +34 -0
  670. package/node_modules/strip-json-comments/index.js +70 -0
  671. package/node_modules/strip-json-comments/license +21 -0
  672. package/node_modules/strip-json-comments/package.json +42 -0
  673. package/node_modules/strip-json-comments/readme.md +64 -0
  674. package/node_modules/tar-fs/.travis.yml +6 -0
  675. package/node_modules/tar-fs/LICENSE +21 -0
  676. package/node_modules/tar-fs/README.md +165 -0
  677. package/node_modules/tar-fs/index.js +363 -0
  678. package/node_modules/tar-fs/package.json +41 -0
  679. package/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
  680. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
  681. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  682. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  683. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  684. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  685. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  686. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  687. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  688. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  689. package/node_modules/tar-fs/test/index.js +346 -0
  690. package/node_modules/tar-stream/LICENSE +21 -0
  691. package/node_modules/tar-stream/README.md +168 -0
  692. package/node_modules/tar-stream/extract.js +257 -0
  693. package/node_modules/tar-stream/headers.js +295 -0
  694. package/node_modules/tar-stream/index.js +2 -0
  695. package/node_modules/tar-stream/pack.js +255 -0
  696. package/node_modules/tar-stream/package.json +58 -0
  697. package/node_modules/tar-stream/sandbox.js +11 -0
  698. package/node_modules/tunnel-agent/LICENSE +55 -0
  699. package/node_modules/tunnel-agent/README.md +4 -0
  700. package/node_modules/tunnel-agent/index.js +244 -0
  701. package/node_modules/tunnel-agent/package.json +22 -0
  702. package/node_modules/unicorn-magic/default.d.ts +13 -0
  703. package/node_modules/unicorn-magic/default.js +14 -0
  704. package/node_modules/unicorn-magic/license +9 -0
  705. package/node_modules/unicorn-magic/node.d.ts +125 -0
  706. package/node_modules/unicorn-magic/node.js +49 -0
  707. package/node_modules/unicorn-magic/package.json +62 -0
  708. package/node_modules/unicorn-magic/readme.md +25 -0
  709. package/node_modules/util-deprecate/History.md +16 -0
  710. package/node_modules/util-deprecate/LICENSE +24 -0
  711. package/node_modules/util-deprecate/README.md +53 -0
  712. package/node_modules/util-deprecate/browser.js +67 -0
  713. package/node_modules/util-deprecate/node.js +6 -0
  714. package/node_modules/util-deprecate/package.json +27 -0
  715. package/node_modules/which/LICENSE +15 -0
  716. package/node_modules/which/README.md +54 -0
  717. package/node_modules/which/bin/node-which +52 -0
  718. package/node_modules/which/package.json +43 -0
  719. package/node_modules/which/which.js +125 -0
  720. package/node_modules/wrappy/LICENSE +15 -0
  721. package/node_modules/wrappy/README.md +36 -0
  722. package/node_modules/wrappy/package.json +29 -0
  723. package/node_modules/wrappy/wrappy.js +33 -0
  724. package/node_modules/yoctocolors/base.d.ts +47 -0
  725. package/node_modules/yoctocolors/base.js +94 -0
  726. package/node_modules/yoctocolors/index.d.ts +2 -0
  727. package/node_modules/yoctocolors/index.js +2 -0
  728. package/node_modules/yoctocolors/license +9 -0
  729. package/node_modules/yoctocolors/package.json +69 -0
  730. package/node_modules/yoctocolors/readme.md +138 -0
  731. package/package.json +5 -1
  732. package/packages/hu-board/src/routes/api.js +70 -49
  733. package/packages/hu-board/src/zombie-reaper.js +1 -1
  734. package/src/agents/aider-agent.js +1 -1
  735. package/src/agents/claude-agent.js +17 -2
  736. package/src/agents/gemini-agent.js +1 -1
  737. package/src/agents/opencode-agent.js +1 -1
  738. package/src/audit/agent-readiness.js +2 -1
  739. package/src/audit/deterministic-summary.js +11 -5
  740. package/src/audit/issue-filter.js +3 -6
  741. package/src/audit/plan-adherence.js +3 -1
  742. package/src/audit/semgrep-findings.js +5 -1
  743. package/src/brain/agent-error-classifier.js +8 -1
  744. package/src/brain/decisor.js +2 -2
  745. package/src/brain/solomon-consult.js +2 -2
  746. package/src/brain/standby-scheduler.js +0 -2
  747. package/src/commands/audit.js +8 -3
  748. package/src/commands/board.js +1 -1
  749. package/src/commands/standby.js +4 -1
  750. package/src/config/loader.js +2 -2
  751. package/src/golden/asserter.js +3 -1
  752. package/src/golden/schema.js +1 -1
  753. package/src/hu/auto-generator.js +1 -1
  754. package/src/lang/tree-sitter-loader.js +1 -5
  755. package/src/mcp/handlers/management-handlers.js +4 -3
  756. package/src/orchestrator/drivers/post-loop.js +43 -91
  757. package/src/orchestrator/flow-runner.js +25 -0
  758. package/src/orchestrator/fs-leak-detector.js +6 -1
  759. package/src/orchestrator/preflight-checks.js +51 -0
  760. package/src/orchestrator/solomon-rules.js +12 -1
  761. package/src/prompts/architect.js +32 -37
  762. package/src/prompts/audit.js +12 -11
  763. package/src/prompts/coder.js +71 -96
  764. package/src/prompts/hu-reviewer.js +23 -29
  765. package/src/prompts/planner.js +1 -1
  766. package/src/prompts/prompt-layout.js +80 -0
  767. package/src/prompts/reviewer.js +34 -39
  768. package/src/rag/embedders/factory.js +0 -1
  769. package/src/rag/retriever.js +1 -1
  770. package/src/roles/agent-role.js +10 -2
  771. package/src/roles/audit-role.js +10 -2
  772. package/src/roles/coder-role.js +6 -3
  773. package/src/roles/reviewer-role.js +20 -23
  774. package/src/session/journal/write-all.js +89 -0
  775. package/src/sonar/discovery.js +2 -1
  776. package/src/sonar/scanner.js +1 -1
  777. package/src/utils/cli-progress.js +4 -2
  778. package/src/utils/escape-regexp.js +15 -0
  779. package/src/utils/paths.js +0 -1
  780. package/src/utils/port-occupant.js +2 -1
  781. package/src/utils/project-detect.js +1 -1
@@ -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
+ 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
  /**
@@ -70,7 +70,7 @@ export function parsePlannerOutput(output) {
70
70
  * @param {string} task
71
71
  * @returns {string[]} deduplicated trimmed exclusion items
72
72
  */
73
- export function extractScopeExclusions(task) {
73
+ function extractScopeExclusions(task) {
74
74
  if (!task || typeof task !== "string") return [];
75
75
  const patterns = [
76
76
  /\bNO\s+incluye[^:\n]{0,60}:\s*([^.\n]+)/gi,
@@ -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
+ }
@@ -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.",
@@ -24,51 +25,45 @@ const SERENA_INSTRUCTIONS = [
24
25
  "Fall back to reading files only when Serena tools are not sufficient."
25
26
  ].join("\n");
26
27
 
27
- export async function buildReviewerPrompt({ task, diff, reviewRules, mode, serenaEnabled = false, rtkAvailable = false, productContext = null, domainContext = null, projectDir = null, language = "en", provider = null }) {
28
+ /**
29
+ * Build the reviewer prompt as a { stable, volatile } layout (Φ1,
30
+ * KJC-PCS-0057). The stable block (preamble, mode, scope rules, JSON
31
+ * schema, serena/rtk, contexts, review rules, skills) is identical
32
+ * across reviews of the same project, so prefix-caching providers hit
33
+ * on it; the per-review content (task context + git diff, up to 12 KB
34
+ * and always different) goes last.
35
+ */
36
+ export async function buildReviewerPromptLayout({ task, diff, reviewRules, mode, serenaEnabled = false, rtkAvailable = false, productContext = null, domainContext = null, projectDir = null, language = "en", provider = null }) {
28
37
  const truncatedDiff = diff.length > 12000 ? `${diff.slice(0, 12000)}\n\n[TRUNCATED]` : diff;
29
38
 
30
39
  const langInstruction = getLanguageInstruction(language);
31
- const sections = [
32
- serenaEnabled ? SUBAGENT_PREAMBLE_SERENA : SUBAGENT_PREAMBLE,
33
- ...(langInstruction ? [langInstruction] : []),
34
- `You are a code reviewer in ${mode} mode.`,
35
- "CRITICAL SCOPE RULE: Only review changes that are part of the diff below. Do NOT flag issues in unchanged code, missing features planned for future tasks, or improvements outside the scope of this task. If the diff is correct for what the task asks, approve it — even if the broader codebase has other issues.",
36
- "Only block approval for issues IN THE DIFF that are bugs, security vulnerabilities, or clear violations of the review rules.",
37
- "Return only one valid JSON object and nothing else.",
38
- "JSON schema:",
39
- '{"approved":boolean,"blocking_issues":[{"id":string,"severity":"critical|high|medium|low","file":string,"line":number,"description":string,"suggested_fix":string}],"non_blocking_suggestions":[string],"summary":string,"confidence":number}'
40
- ];
41
-
42
- if (serenaEnabled) {
43
- sections.push(SERENA_INSTRUCTIONS);
44
- }
45
-
46
40
  const rtkSnippet = buildRtkInstructions({ rtkAvailable });
47
- if (rtkSnippet) {
48
- sections.push(rtkSnippet);
49
- }
50
-
51
- if (productContext) {
52
- sections.push(`## Product Context\n${productContext}`);
53
- }
54
-
55
- if (domainContext) {
56
- sections.push(`## Domain Context\n${domainContext}`);
57
- }
58
-
59
- sections.push(
60
- `Task context:\n${task}`,
61
- `Review rules:\n${reviewRules}`,
62
- `Git diff:\n${truncatedDiff}`
63
- );
64
-
41
+ let skillSection = null;
65
42
  if (projectDir) {
66
43
  const skills = await loadAvailableSkills(projectDir);
67
- const skillSection = buildSkillSection(skills, { provider, role: "reviewer" });
68
- if (skillSection) {
69
- sections.push(skillSection);
70
- }
44
+ skillSection = buildSkillSection(skills, { provider, role: "reviewer" });
71
45
  }
72
46
 
73
- return sections.join("\n\n");
47
+ return buildPromptLayout([
48
+ section(serenaEnabled ? SUBAGENT_PREAMBLE_SERENA : SUBAGENT_PREAMBLE, STABLE),
49
+ section(langInstruction, STABLE),
50
+ section(`You are a code reviewer in ${mode} mode.`, STABLE),
51
+ section("CRITICAL SCOPE RULE: Only review changes that are part of the diff below. Do NOT flag issues in unchanged code, missing features planned for future tasks, or improvements outside the scope of this task. If the diff is correct for what the task asks, approve it — even if the broader codebase has other issues.", STABLE),
52
+ section("Only block approval for issues IN THE DIFF that are bugs, security vulnerabilities, or clear violations of the review rules.", STABLE),
53
+ section("Return only one valid JSON object and nothing else.", STABLE),
54
+ section("JSON schema:", STABLE),
55
+ section('{"approved":boolean,"blocking_issues":[{"id":string,"severity":"critical|high|medium|low","file":string,"line":number,"description":string,"suggested_fix":string}],"non_blocking_suggestions":[string],"summary":string,"confidence":number}', STABLE),
56
+ section(serenaEnabled ? SERENA_INSTRUCTIONS : null, STABLE),
57
+ section(rtkSnippet, STABLE),
58
+ section(productContext ? `## Product Context\n${productContext}` : null, STABLE),
59
+ section(domainContext ? `## Domain Context\n${domainContext}` : null, STABLE),
60
+ section(`Review rules:\n${reviewRules}`, STABLE),
61
+ section(skillSection, STABLE),
62
+ section(`Task context:\n${task}`, VOLATILE),
63
+ section(`Git diff:\n${truncatedDiff}`, VOLATILE),
64
+ ]);
65
+ }
66
+
67
+ export async function buildReviewerPrompt(options) {
68
+ return joinLayout(await buildReviewerPromptLayout(options));
74
69
  }
@@ -27,4 +27,3 @@ export function makeEmbedder(config = {}) {
27
27
  return new spec.cls({ url: cfg.url, apiKey: cfg.api_key, model: cfg.model, dim, timeoutMs: cfg.timeout_ms });
28
28
  }
29
29
 
30
- export { PROVIDERS };
@@ -124,4 +124,4 @@ export async function query(db, embedder, text, { topK = 5, scope = "all", kindB
124
124
  return reranked;
125
125
  }
126
126
 
127
- export { shouldBoostSources, isTestPath, fuseHits, cosineSim };
127
+ export { fuseHits, cosineSim };
@@ -25,7 +25,7 @@ import { withBrainRecovery } from "../brain/with-brain-recovery.js";
25
25
  * @param {object} config
26
26
  * @returns {number|null}
27
27
  */
28
- export function resolveAgentSilenceTimeoutMs(config) {
28
+ function resolveAgentSilenceTimeoutMs(config) {
29
29
  const minutes = Number(config?.session?.max_agent_silence_minutes);
30
30
  return Number.isFinite(minutes) && minutes > 0 ? Math.round(minutes * 60 * 1000) : null;
31
31
  }
@@ -123,12 +123,20 @@ export class AgentRole extends BaseRole {
123
123
  const agent = this.createAgentInstance(provider);
124
124
 
125
125
  const promptResult = await this.buildPrompt(extracted);
126
- const { prompt, onOutput } = typeof promptResult === "string"
126
+ const { prompt, onOutput, stablePrompt, volatilePrompt } = typeof promptResult === "string"
127
127
  ? { prompt: promptResult, onOutput: extracted.onOutput }
128
128
  : { onOutput: extracted.onOutput, ...promptResult };
129
129
 
130
130
  const runArgs = { prompt, role: this.name };
131
131
  if (onOutput) runArgs.onOutput = onOutput;
132
+ // Φ1-D (KJC-PCS-0057): roles that build their prompt as a
133
+ // stable/volatile layout forward both buckets so cache-aware agents
134
+ // (ClaudeAgent) can ship the stable block as system prompt. Agents
135
+ // that don't know the fields keep reading `prompt` as before.
136
+ if (stablePrompt && volatilePrompt) {
137
+ runArgs.stablePrompt = stablePrompt;
138
+ runArgs.volatilePrompt = volatilePrompt;
139
+ }
132
140
  // Kill a hung agent: without a silence timeout a coder / reviewer
133
141
  // that stalls with no output left `kj run` waiting indefinitely.
134
142
  // PlannerRole set this itself; every other role was unprotected.
@@ -205,11 +205,13 @@ export class AuditRole extends AgentRole {
205
205
  * result fields. Returns a single object so consumers (CLI formatter,
206
206
  * report-file writer, MCP) don't need to know about the spread shape.
207
207
  *
208
+ * Consumed by tests via vi.importActual (knip blind spot) — keep exported.
209
+ * @public
208
210
  * @param {object} result - raw agent.runTask() return
209
211
  * @param {{provider: string, durationMs: number}} ctx
210
- * @returns {{available: boolean, provider: string, model?: string, tokens_in?: number, tokens_out?: number, total_tokens?: number, cost_usd?: number, durationMs: number, reason?: string}}
212
+ * @returns {{available: boolean, provider: string, model?: string, tokens_in?: number, tokens_out?: number, cached_tokens?: number, total_tokens?: number, cost_usd?: number, durationMs: number, reason?: string}}
211
213
  */
212
- function extractUsage(result, { provider, durationMs }) {
214
+ export function extractUsage(result, { provider, durationMs }) {
213
215
  if (!result || typeof result !== "object") {
214
216
  return { available: false, provider, durationMs, reason: "no agent result" };
215
217
  }
@@ -218,12 +220,18 @@ function extractUsage(result, { provider, durationMs }) {
218
220
  if (tokens_in === null && tokens_out === null) {
219
221
  return { available: false, provider, model: result.model, durationMs, reason: `provider "${provider}" did not report token usage` };
220
222
  }
223
+ // KJC-BUG-0085: cached_tokens must survive this consolidation — the
224
+ // budget chain (computeUsage → BudgetTracker → summary.md Cache hits →
225
+ // telemetry) reads it from `usage` and the audit is the most expensive
226
+ // role of the session.
227
+ const cached_tokens = Number.isFinite(result.cached_tokens) ? result.cached_tokens : 0;
221
228
  return {
222
229
  available: true,
223
230
  provider,
224
231
  model: result.model,
225
232
  tokens_in: tokens_in ?? 0,
226
233
  tokens_out: tokens_out ?? 0,
234
+ cached_tokens,
227
235
  total_tokens: (tokens_in ?? 0) + (tokens_out ?? 0),
228
236
  cost_usd: typeof result.cost_usd === "number" ? result.cost_usd : null,
229
237
  durationMs,
@@ -1,5 +1,6 @@
1
1
  import { AgentRole } from "./agent-role.js";
2
- import { buildCoderPrompt } from "../prompts/coder.js";
2
+ import { buildCoderPromptLayout } from "../prompts/coder.js";
3
+ import { joinLayout } from "../prompts/prompt-layout.js";
3
4
  import { isHostAgent } from "../utils/agent-detect.js";
4
5
  import { HostAgent } from "../agents/host-agent.js";
5
6
  import { detectProjectStack } from "../utils/stack-detect.js";
@@ -66,7 +67,7 @@ export class CoderRole extends AgentRole {
66
67
  try { stack = await detectProjectStack(projectDir); } catch { /* best-effort */ }
67
68
  try { testFramework = await detectTestFramework(projectDir); } catch { /* best-effort */ }
68
69
  }
69
- const prompt = await buildCoderPrompt({
70
+ const layout = await buildCoderPromptLayout({
70
71
  task, reviewerFeedback, sonarSummary, deferredContext, acceptanceTests,
71
72
  adrs, specSection, reviewerFindings, huId,
72
73
  coderRules: this.instructions,
@@ -79,7 +80,9 @@ export class CoderRole extends AgentRole {
79
80
  stack, testFramework,
80
81
  provider: this._resolvedProvider || (typeof this.resolveProvider === "function" ? this.resolveProvider() : null)
81
82
  });
82
- return { prompt };
83
+ // Φ1-D: prompt is the joined layout (identical for every agent);
84
+ // the buckets ride along so ClaudeAgent can system-split them.
85
+ return { prompt: joinLayout(layout), stablePrompt: layout.stable, volatilePrompt: layout.volatile };
83
86
  }
84
87
 
85
88
  buildSuccessResult(parsed, provider, agentResult) {
@@ -1,6 +1,7 @@
1
1
  import { AgentRole } from "./agent-role.js";
2
2
  import { buildRtkInstructions } from "../prompts/rtk-snippet.js";
3
3
  import { extractFirstJson } from "../utils/json-extract.js";
4
+ import { section, buildPromptLayout, joinLayout, STABLE, VOLATILE } from "../prompts/prompt-layout.js";
4
5
 
5
6
  const MAX_DIFF_LENGTH = 12000;
6
7
 
@@ -32,30 +33,26 @@ export class ReviewerRole extends AgentRole {
32
33
  };
33
34
  }
34
35
 
36
+ // Φ1-E (KJC-PCS-0057): stable block (preamble, instructions, mode,
37
+ // schema, contexts, rtk, review rules) first; task + diff — different
38
+ // on every review — last. The buckets ride along so ClaudeAgent can
39
+ // ship the stable block via --append-system-prompt (Φ1-D).
35
40
  async buildPrompt({ task, diff, reviewRules }) {
36
- const sections = [SUBAGENT_PREAMBLE];
37
- if (this.instructions) sections.push(this.instructions);
38
- sections.push(
39
- `You are a code reviewer in ${this.config?.review_mode || "standard"} mode.`,
40
- "Return only one valid JSON object and nothing else.",
41
- "JSON schema:",
42
- '{"approved":boolean,"blocking_issues":[{"id":string,"severity":"critical|high|medium|low","file":string,"line":number,"description":string,"suggested_fix":string}],"non_blocking_suggestions":[string],"summary":string,"confidence":number}',
43
- `Task context:\n${task}`
44
- );
45
-
46
- const pc = this.config?.productContext;
47
- if (pc) sections.push(`## Product Context\n${pc}`);
48
- const dc = this.config?.domainContext;
49
- if (dc) sections.push(`## Domain Context\n${dc}`);
50
-
51
- const rtkSnippet = buildRtkInstructions({
52
- rtkAvailable: Boolean(this.config?.rtk?.available)
53
- });
54
- if (rtkSnippet) sections.push(rtkSnippet);
55
- if (reviewRules) sections.push(`Review rules:\n${reviewRules}`);
56
- sections.push(`Git diff:\n${truncateDiff(diff)}`);
57
-
58
- return { prompt: sections.join("\n\n") };
41
+ const layout = buildPromptLayout([
42
+ section(SUBAGENT_PREAMBLE, STABLE),
43
+ section(this.instructions, STABLE),
44
+ section(`You are a code reviewer in ${this.config?.review_mode || "standard"} mode.`, STABLE),
45
+ section("Return only one valid JSON object and nothing else.", STABLE),
46
+ section("JSON schema:", STABLE),
47
+ section('{"approved":boolean,"blocking_issues":[{"id":string,"severity":"critical|high|medium|low","file":string,"line":number,"description":string,"suggested_fix":string}],"non_blocking_suggestions":[string],"summary":string,"confidence":number}', STABLE),
48
+ section(this.config?.productContext ? `## Product Context\n${this.config.productContext}` : null, STABLE),
49
+ section(this.config?.domainContext ? `## Domain Context\n${this.config.domainContext}` : null, STABLE),
50
+ section(buildRtkInstructions({ rtkAvailable: Boolean(this.config?.rtk?.available) }), STABLE),
51
+ section(reviewRules ? `Review rules:\n${reviewRules}` : null, STABLE),
52
+ section(`Task context:\n${task}`, VOLATILE),
53
+ section(`Git diff:\n${truncateDiff(diff)}`, VOLATILE),
54
+ ]);
55
+ return { prompt: joinLayout(layout), stablePrompt: layout.stable, volatilePrompt: layout.volatile };
59
56
  }
60
57
 
61
58
  parseOutput(raw) {