karajan-code 3.4.0 → 3.4.2

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 (749) hide show
  1. package/README.md +1 -1
  2. package/node_modules/@karajan/core/package.json +12 -1
  3. package/package.json +4 -2
  4. package/packages/hu-board/src/routes/api.js +70 -49
  5. package/packages/hu-board/src/zombie-reaper.js +1 -1
  6. package/scripts/verify-pack.mjs +108 -0
  7. package/src/agents/aider-agent.js +1 -1
  8. package/src/agents/gemini-agent.js +1 -1
  9. package/src/agents/opencode-agent.js +1 -1
  10. package/src/audit/agent-readiness.js +2 -1
  11. package/src/audit/deterministic-summary.js +11 -5
  12. package/src/audit/issue-filter.js +3 -6
  13. package/src/audit/plan-adherence.js +3 -1
  14. package/src/audit/semgrep-findings.js +5 -1
  15. package/src/brain/agent-error-classifier.js +8 -1
  16. package/src/brain/decisor.js +2 -2
  17. package/src/brain/solomon-consult.js +2 -2
  18. package/src/brain/standby-scheduler.js +0 -2
  19. package/src/commands/audit.js +8 -3
  20. package/src/commands/board.js +1 -1
  21. package/src/commands/standby.js +4 -1
  22. package/src/config/loader.js +2 -2
  23. package/src/golden/asserter.js +3 -1
  24. package/src/golden/schema.js +1 -1
  25. package/src/hu/auto-generator.js +1 -1
  26. package/src/lang/tree-sitter-loader.js +1 -5
  27. package/src/mcp/handlers/management-handlers.js +4 -3
  28. package/src/orchestrator/drivers/post-loop.js +43 -91
  29. package/src/orchestrator/flow-runner.js +25 -0
  30. package/src/orchestrator/fs-leak-detector.js +6 -1
  31. package/src/orchestrator/preflight-checks.js +51 -0
  32. package/src/orchestrator/solomon-rules.js +12 -1
  33. package/src/prompts/audit.js +12 -11
  34. package/src/prompts/hu-reviewer.js +1 -1
  35. package/src/prompts/planner.js +1 -1
  36. package/src/rag/embedders/factory.js +0 -1
  37. package/src/rag/retriever.js +1 -1
  38. package/src/roles/agent-role.js +1 -1
  39. package/src/roles/audit-role.js +10 -2
  40. package/src/session/journal/write-all.js +89 -0
  41. package/src/sonar/discovery.js +2 -1
  42. package/src/sonar/scanner.js +1 -1
  43. package/src/utils/cli-progress.js +4 -2
  44. package/src/utils/escape-regexp.js +15 -0
  45. package/src/utils/paths.js +0 -1
  46. package/src/utils/port-occupant.js +2 -1
  47. package/src/utils/project-detect.js +1 -1
  48. package/node_modules/@sec-ant/readable-stream/LICENSE +0 -21
  49. package/node_modules/@sec-ant/readable-stream/README.md +0 -230
  50. package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterablePrototype.d.ts +0 -1
  51. package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterator.d.ts +0 -27
  52. package/node_modules/@sec-ant/readable-stream/dist/core/fromAnyIterable.d.ts +0 -6
  53. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.d.ts +0 -2
  54. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.js +0 -5
  55. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.d.ts +0 -2
  56. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.js +0 -5
  57. package/node_modules/@sec-ant/readable-stream/dist/index/index.d.ts +0 -2
  58. package/node_modules/@sec-ant/readable-stream/dist/index/index.js +0 -8
  59. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.d.ts +0 -1
  60. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.js +0 -3
  61. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.d.ts +0 -1
  62. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.js +0 -2
  63. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.d.ts +0 -2
  64. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.js +0 -4
  65. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.d.ts +0 -1
  66. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +0 -89
  67. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.d.ts +0 -1
  68. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +0 -34
  69. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.d.ts +0 -2
  70. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +0 -6
  71. package/node_modules/@sec-ant/readable-stream/dist/types/async-iterator.d.ts +0 -11
  72. package/node_modules/@sec-ant/readable-stream/package.json +0 -96
  73. package/node_modules/@sindresorhus/merge-streams/index.d.ts +0 -44
  74. package/node_modules/@sindresorhus/merge-streams/index.js +0 -265
  75. package/node_modules/@sindresorhus/merge-streams/license +0 -9
  76. package/node_modules/@sindresorhus/merge-streams/package.json +0 -49
  77. package/node_modules/@sindresorhus/merge-streams/readme.md +0 -53
  78. package/node_modules/base64-js/LICENSE +0 -21
  79. package/node_modules/base64-js/README.md +0 -34
  80. package/node_modules/base64-js/base64js.min.js +0 -1
  81. package/node_modules/base64-js/index.d.ts +0 -3
  82. package/node_modules/base64-js/index.js +0 -150
  83. package/node_modules/base64-js/package.json +0 -47
  84. package/node_modules/better-sqlite3/LICENSE +0 -21
  85. package/node_modules/better-sqlite3/README.md +0 -99
  86. package/node_modules/better-sqlite3/binding.gyp +0 -38
  87. package/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  88. package/node_modules/better-sqlite3/deps/common.gypi +0 -68
  89. package/node_modules/better-sqlite3/deps/copy.js +0 -31
  90. package/node_modules/better-sqlite3/deps/defines.gypi +0 -42
  91. package/node_modules/better-sqlite3/deps/download.sh +0 -123
  92. package/node_modules/better-sqlite3/deps/patches/1208.patch +0 -15
  93. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +0 -268879
  94. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +0 -14335
  95. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +0 -739
  96. package/node_modules/better-sqlite3/deps/sqlite3.gyp +0 -80
  97. package/node_modules/better-sqlite3/deps/test_extension.c +0 -21
  98. package/node_modules/better-sqlite3/lib/database.js +0 -90
  99. package/node_modules/better-sqlite3/lib/index.js +0 -3
  100. package/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
  101. package/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
  102. package/node_modules/better-sqlite3/lib/methods/function.js +0 -31
  103. package/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
  104. package/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
  105. package/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
  106. package/node_modules/better-sqlite3/lib/methods/table.js +0 -189
  107. package/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
  108. package/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
  109. package/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
  110. package/node_modules/better-sqlite3/lib/util.js +0 -12
  111. package/node_modules/better-sqlite3/package.json +0 -59
  112. package/node_modules/better-sqlite3/src/addon.cpp +0 -47
  113. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +0 -74
  114. package/node_modules/better-sqlite3/src/objects/backup.cpp +0 -120
  115. package/node_modules/better-sqlite3/src/objects/backup.hpp +0 -36
  116. package/node_modules/better-sqlite3/src/objects/database.cpp +0 -417
  117. package/node_modules/better-sqlite3/src/objects/database.hpp +0 -103
  118. package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +0 -113
  119. package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +0 -50
  120. package/node_modules/better-sqlite3/src/objects/statement.cpp +0 -383
  121. package/node_modules/better-sqlite3/src/objects/statement.hpp +0 -58
  122. package/node_modules/better-sqlite3/src/util/bind-map.cpp +0 -73
  123. package/node_modules/better-sqlite3/src/util/binder.cpp +0 -193
  124. package/node_modules/better-sqlite3/src/util/constants.cpp +0 -172
  125. package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +0 -121
  126. package/node_modules/better-sqlite3/src/util/custom-function.cpp +0 -59
  127. package/node_modules/better-sqlite3/src/util/custom-table.cpp +0 -409
  128. package/node_modules/better-sqlite3/src/util/data-converter.cpp +0 -17
  129. package/node_modules/better-sqlite3/src/util/data.cpp +0 -194
  130. package/node_modules/better-sqlite3/src/util/helpers.cpp +0 -109
  131. package/node_modules/better-sqlite3/src/util/macros.cpp +0 -83
  132. package/node_modules/better-sqlite3/src/util/query-macros.cpp +0 -71
  133. package/node_modules/better-sqlite3/src/util/row-builder.cpp +0 -49
  134. package/node_modules/bindings/LICENSE.md +0 -22
  135. package/node_modules/bindings/README.md +0 -98
  136. package/node_modules/bindings/bindings.js +0 -221
  137. package/node_modules/bindings/package.json +0 -28
  138. package/node_modules/bl/.travis.yml +0 -17
  139. package/node_modules/bl/BufferList.js +0 -396
  140. package/node_modules/bl/LICENSE.md +0 -13
  141. package/node_modules/bl/README.md +0 -247
  142. package/node_modules/bl/bl.js +0 -84
  143. package/node_modules/bl/package.json +0 -37
  144. package/node_modules/bl/test/convert.js +0 -21
  145. package/node_modules/bl/test/indexOf.js +0 -492
  146. package/node_modules/bl/test/isBufferList.js +0 -32
  147. package/node_modules/bl/test/test.js +0 -869
  148. package/node_modules/buffer/AUTHORS.md +0 -70
  149. package/node_modules/buffer/LICENSE +0 -21
  150. package/node_modules/buffer/README.md +0 -410
  151. package/node_modules/buffer/index.d.ts +0 -186
  152. package/node_modules/buffer/index.js +0 -1817
  153. package/node_modules/buffer/package.json +0 -96
  154. package/node_modules/chownr/LICENSE +0 -15
  155. package/node_modules/chownr/README.md +0 -3
  156. package/node_modules/chownr/chownr.js +0 -167
  157. package/node_modules/chownr/package.json +0 -29
  158. package/node_modules/cross-spawn/LICENSE +0 -21
  159. package/node_modules/cross-spawn/README.md +0 -89
  160. package/node_modules/cross-spawn/index.js +0 -39
  161. package/node_modules/cross-spawn/lib/enoent.js +0 -59
  162. package/node_modules/cross-spawn/lib/parse.js +0 -91
  163. package/node_modules/cross-spawn/lib/util/escape.js +0 -47
  164. package/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  165. package/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  166. package/node_modules/cross-spawn/package.json +0 -73
  167. package/node_modules/decompress-response/index.d.ts +0 -22
  168. package/node_modules/decompress-response/index.js +0 -58
  169. package/node_modules/decompress-response/license +0 -9
  170. package/node_modules/decompress-response/package.json +0 -56
  171. package/node_modules/decompress-response/readme.md +0 -48
  172. package/node_modules/deep-extend/CHANGELOG.md +0 -46
  173. package/node_modules/deep-extend/LICENSE +0 -20
  174. package/node_modules/deep-extend/README.md +0 -91
  175. package/node_modules/deep-extend/index.js +0 -1
  176. package/node_modules/deep-extend/lib/deep-extend.js +0 -150
  177. package/node_modules/deep-extend/package.json +0 -62
  178. package/node_modules/detect-libc/LICENSE +0 -201
  179. package/node_modules/detect-libc/README.md +0 -163
  180. package/node_modules/detect-libc/index.d.ts +0 -14
  181. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  182. package/node_modules/detect-libc/lib/elf.js +0 -39
  183. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  184. package/node_modules/detect-libc/lib/process.js +0 -24
  185. package/node_modules/detect-libc/package.json +0 -44
  186. package/node_modules/end-of-stream/LICENSE +0 -21
  187. package/node_modules/end-of-stream/README.md +0 -54
  188. package/node_modules/end-of-stream/index.js +0 -96
  189. package/node_modules/end-of-stream/package.json +0 -37
  190. package/node_modules/execa/index.d.ts +0 -27
  191. package/node_modules/execa/index.js +0 -28
  192. package/node_modules/execa/lib/arguments/command.js +0 -20
  193. package/node_modules/execa/lib/arguments/cwd.js +0 -39
  194. package/node_modules/execa/lib/arguments/encoding-option.js +0 -50
  195. package/node_modules/execa/lib/arguments/escape.js +0 -88
  196. package/node_modules/execa/lib/arguments/fd-options.js +0 -108
  197. package/node_modules/execa/lib/arguments/file-url.js +0 -25
  198. package/node_modules/execa/lib/arguments/options.js +0 -96
  199. package/node_modules/execa/lib/arguments/shell.js +0 -11
  200. package/node_modules/execa/lib/arguments/specific.js +0 -111
  201. package/node_modules/execa/lib/convert/add.js +0 -15
  202. package/node_modules/execa/lib/convert/concurrent.js +0 -33
  203. package/node_modules/execa/lib/convert/duplex.js +0 -69
  204. package/node_modules/execa/lib/convert/iterable.js +0 -34
  205. package/node_modules/execa/lib/convert/readable.js +0 -113
  206. package/node_modules/execa/lib/convert/shared.js +0 -46
  207. package/node_modules/execa/lib/convert/writable.js +0 -90
  208. package/node_modules/execa/lib/io/contents.js +0 -116
  209. package/node_modules/execa/lib/io/input-sync.js +0 -44
  210. package/node_modules/execa/lib/io/iterate.js +0 -110
  211. package/node_modules/execa/lib/io/max-buffer.js +0 -89
  212. package/node_modules/execa/lib/io/output-async.js +0 -80
  213. package/node_modules/execa/lib/io/output-sync.js +0 -135
  214. package/node_modules/execa/lib/io/pipeline.js +0 -48
  215. package/node_modules/execa/lib/io/strip-newline.js +0 -12
  216. package/node_modules/execa/lib/ipc/array.js +0 -4
  217. package/node_modules/execa/lib/ipc/buffer-messages.js +0 -47
  218. package/node_modules/execa/lib/ipc/forward.js +0 -56
  219. package/node_modules/execa/lib/ipc/get-each.js +0 -89
  220. package/node_modules/execa/lib/ipc/get-one.js +0 -69
  221. package/node_modules/execa/lib/ipc/graceful.js +0 -72
  222. package/node_modules/execa/lib/ipc/incoming.js +0 -79
  223. package/node_modules/execa/lib/ipc/ipc-input.js +0 -44
  224. package/node_modules/execa/lib/ipc/methods.js +0 -49
  225. package/node_modules/execa/lib/ipc/outgoing.js +0 -47
  226. package/node_modules/execa/lib/ipc/reference.js +0 -44
  227. package/node_modules/execa/lib/ipc/send.js +0 -91
  228. package/node_modules/execa/lib/ipc/strict.js +0 -113
  229. package/node_modules/execa/lib/ipc/validation.js +0 -111
  230. package/node_modules/execa/lib/methods/bind.js +0 -23
  231. package/node_modules/execa/lib/methods/command.js +0 -43
  232. package/node_modules/execa/lib/methods/create.js +0 -65
  233. package/node_modules/execa/lib/methods/main-async.js +0 -194
  234. package/node_modules/execa/lib/methods/main-sync.js +0 -163
  235. package/node_modules/execa/lib/methods/node.js +0 -51
  236. package/node_modules/execa/lib/methods/parameters.js +0 -31
  237. package/node_modules/execa/lib/methods/promise.js +0 -15
  238. package/node_modules/execa/lib/methods/script.js +0 -22
  239. package/node_modules/execa/lib/methods/template.js +0 -153
  240. package/node_modules/execa/lib/pipe/abort.js +0 -20
  241. package/node_modules/execa/lib/pipe/pipe-arguments.js +0 -91
  242. package/node_modules/execa/lib/pipe/sequence.js +0 -24
  243. package/node_modules/execa/lib/pipe/setup.js +0 -72
  244. package/node_modules/execa/lib/pipe/streaming.js +0 -51
  245. package/node_modules/execa/lib/pipe/throw.js +0 -58
  246. package/node_modules/execa/lib/resolve/all-async.js +0 -46
  247. package/node_modules/execa/lib/resolve/all-sync.js +0 -33
  248. package/node_modules/execa/lib/resolve/exit-async.js +0 -54
  249. package/node_modules/execa/lib/resolve/exit-sync.js +0 -25
  250. package/node_modules/execa/lib/resolve/stdio.js +0 -47
  251. package/node_modules/execa/lib/resolve/wait-stream.js +0 -96
  252. package/node_modules/execa/lib/resolve/wait-subprocess.js +0 -146
  253. package/node_modules/execa/lib/return/duration.js +0 -8
  254. package/node_modules/execa/lib/return/early-error.js +0 -60
  255. package/node_modules/execa/lib/return/final-error.js +0 -40
  256. package/node_modules/execa/lib/return/message.js +0 -157
  257. package/node_modules/execa/lib/return/reject.js +0 -13
  258. package/node_modules/execa/lib/return/result.js +0 -186
  259. package/node_modules/execa/lib/stdio/direction.js +0 -76
  260. package/node_modules/execa/lib/stdio/duplicate.js +0 -116
  261. package/node_modules/execa/lib/stdio/handle-async.js +0 -52
  262. package/node_modules/execa/lib/stdio/handle-sync.js +0 -57
  263. package/node_modules/execa/lib/stdio/handle.js +0 -214
  264. package/node_modules/execa/lib/stdio/input-option.js +0 -50
  265. package/node_modules/execa/lib/stdio/native.js +0 -106
  266. package/node_modules/execa/lib/stdio/stdio-option.js +0 -60
  267. package/node_modules/execa/lib/stdio/type.js +0 -173
  268. package/node_modules/execa/lib/terminate/cancel.js +0 -20
  269. package/node_modules/execa/lib/terminate/cleanup.js +0 -16
  270. package/node_modules/execa/lib/terminate/graceful.js +0 -71
  271. package/node_modules/execa/lib/terminate/kill.js +0 -93
  272. package/node_modules/execa/lib/terminate/signal.js +0 -70
  273. package/node_modules/execa/lib/terminate/timeout.js +0 -21
  274. package/node_modules/execa/lib/transform/encoding-transform.js +0 -51
  275. package/node_modules/execa/lib/transform/generator.js +0 -107
  276. package/node_modules/execa/lib/transform/normalize.js +0 -111
  277. package/node_modules/execa/lib/transform/object-mode.js +0 -41
  278. package/node_modules/execa/lib/transform/run-async.js +0 -60
  279. package/node_modules/execa/lib/transform/run-sync.js +0 -50
  280. package/node_modules/execa/lib/transform/split.js +0 -110
  281. package/node_modules/execa/lib/transform/validate.js +0 -43
  282. package/node_modules/execa/lib/utils/abort-signal.js +0 -8
  283. package/node_modules/execa/lib/utils/deferred.js +0 -7
  284. package/node_modules/execa/lib/utils/max-listeners.js +0 -14
  285. package/node_modules/execa/lib/utils/standard-stream.js +0 -6
  286. package/node_modules/execa/lib/utils/uint-array.js +0 -69
  287. package/node_modules/execa/lib/verbose/complete.js +0 -24
  288. package/node_modules/execa/lib/verbose/custom.js +0 -26
  289. package/node_modules/execa/lib/verbose/default.js +0 -54
  290. package/node_modules/execa/lib/verbose/error.js +0 -13
  291. package/node_modules/execa/lib/verbose/info.js +0 -39
  292. package/node_modules/execa/lib/verbose/ipc.js +0 -15
  293. package/node_modules/execa/lib/verbose/log.js +0 -54
  294. package/node_modules/execa/lib/verbose/output.js +0 -60
  295. package/node_modules/execa/lib/verbose/start.js +0 -15
  296. package/node_modules/execa/lib/verbose/values.js +0 -33
  297. package/node_modules/execa/license +0 -9
  298. package/node_modules/execa/package.json +0 -105
  299. package/node_modules/execa/readme.md +0 -461
  300. package/node_modules/execa/types/arguments/encoding-option.d.ts +0 -19
  301. package/node_modules/execa/types/arguments/fd-options.d.ts +0 -8
  302. package/node_modules/execa/types/arguments/options.d.ts +0 -400
  303. package/node_modules/execa/types/arguments/specific.d.ts +0 -52
  304. package/node_modules/execa/types/convert.d.ts +0 -58
  305. package/node_modules/execa/types/ipc.d.ts +0 -156
  306. package/node_modules/execa/types/methods/command.d.ts +0 -114
  307. package/node_modules/execa/types/methods/main-async.d.ts +0 -379
  308. package/node_modules/execa/types/methods/main-sync.d.ts +0 -59
  309. package/node_modules/execa/types/methods/node.d.ts +0 -62
  310. package/node_modules/execa/types/methods/script.d.ts +0 -115
  311. package/node_modules/execa/types/methods/template.d.ts +0 -18
  312. package/node_modules/execa/types/pipe.d.ts +0 -58
  313. package/node_modules/execa/types/return/final-error.d.ts +0 -51
  314. package/node_modules/execa/types/return/ignore.d.ts +0 -26
  315. package/node_modules/execa/types/return/result-all.d.ts +0 -30
  316. package/node_modules/execa/types/return/result-ipc.d.ts +0 -27
  317. package/node_modules/execa/types/return/result-stdio.d.ts +0 -17
  318. package/node_modules/execa/types/return/result-stdout.d.ts +0 -50
  319. package/node_modules/execa/types/return/result.d.ts +0 -203
  320. package/node_modules/execa/types/stdio/array.d.ts +0 -16
  321. package/node_modules/execa/types/stdio/direction.d.ts +0 -12
  322. package/node_modules/execa/types/stdio/option.d.ts +0 -40
  323. package/node_modules/execa/types/stdio/type.d.ts +0 -170
  324. package/node_modules/execa/types/subprocess/all.d.ts +0 -17
  325. package/node_modules/execa/types/subprocess/stdio.d.ts +0 -18
  326. package/node_modules/execa/types/subprocess/stdout.d.ts +0 -22
  327. package/node_modules/execa/types/subprocess/subprocess.d.ts +0 -117
  328. package/node_modules/execa/types/transform/normalize.d.ts +0 -57
  329. package/node_modules/execa/types/transform/object-mode.d.ts +0 -21
  330. package/node_modules/execa/types/utils.d.ts +0 -13
  331. package/node_modules/execa/types/verbose.d.ts +0 -98
  332. package/node_modules/expand-template/.travis.yml +0 -6
  333. package/node_modules/expand-template/LICENSE +0 -21
  334. package/node_modules/expand-template/README.md +0 -43
  335. package/node_modules/expand-template/index.js +0 -26
  336. package/node_modules/expand-template/package.json +0 -29
  337. package/node_modules/expand-template/test.js +0 -67
  338. package/node_modules/figures/index.d.ts +0 -279
  339. package/node_modules/figures/index.js +0 -292
  340. package/node_modules/figures/license +0 -9
  341. package/node_modules/figures/package.json +0 -49
  342. package/node_modules/figures/readme.md +0 -337
  343. package/node_modules/file-uri-to-path/.npmignore +0 -1
  344. package/node_modules/file-uri-to-path/.travis.yml +0 -30
  345. package/node_modules/file-uri-to-path/History.md +0 -21
  346. package/node_modules/file-uri-to-path/LICENSE +0 -20
  347. package/node_modules/file-uri-to-path/README.md +0 -74
  348. package/node_modules/file-uri-to-path/index.d.ts +0 -2
  349. package/node_modules/file-uri-to-path/index.js +0 -66
  350. package/node_modules/file-uri-to-path/package.json +0 -32
  351. package/node_modules/file-uri-to-path/test/test.js +0 -24
  352. package/node_modules/file-uri-to-path/test/tests.json +0 -13
  353. package/node_modules/fs-constants/LICENSE +0 -21
  354. package/node_modules/fs-constants/README.md +0 -26
  355. package/node_modules/fs-constants/browser.js +0 -1
  356. package/node_modules/fs-constants/index.js +0 -1
  357. package/node_modules/fs-constants/package.json +0 -19
  358. package/node_modules/get-stream/license +0 -9
  359. package/node_modules/get-stream/package.json +0 -60
  360. package/node_modules/get-stream/readme.md +0 -303
  361. package/node_modules/get-stream/source/array-buffer.js +0 -84
  362. package/node_modules/get-stream/source/array.js +0 -32
  363. package/node_modules/get-stream/source/buffer.js +0 -19
  364. package/node_modules/get-stream/source/contents.js +0 -121
  365. package/node_modules/get-stream/source/exports.js +0 -5
  366. package/node_modules/get-stream/source/index.d.ts +0 -121
  367. package/node_modules/get-stream/source/index.js +0 -13
  368. package/node_modules/get-stream/source/stream.js +0 -65
  369. package/node_modules/get-stream/source/string.js +0 -41
  370. package/node_modules/get-stream/source/utils.js +0 -11
  371. package/node_modules/github-from-package/.travis.yml +0 -4
  372. package/node_modules/github-from-package/LICENSE +0 -18
  373. package/node_modules/github-from-package/example/package.json +0 -8
  374. package/node_modules/github-from-package/example/url.js +0 -3
  375. package/node_modules/github-from-package/index.js +0 -17
  376. package/node_modules/github-from-package/package.json +0 -30
  377. package/node_modules/github-from-package/readme.markdown +0 -53
  378. package/node_modules/github-from-package/test/a.json +0 -8
  379. package/node_modules/github-from-package/test/b.json +0 -5
  380. package/node_modules/github-from-package/test/c.json +0 -5
  381. package/node_modules/github-from-package/test/d.json +0 -7
  382. package/node_modules/github-from-package/test/e.json +0 -5
  383. package/node_modules/github-from-package/test/url.js +0 -19
  384. package/node_modules/human-signals/LICENSE +0 -201
  385. package/node_modules/human-signals/README.md +0 -171
  386. package/node_modules/human-signals/build/src/core.js +0 -273
  387. package/node_modules/human-signals/build/src/main.d.ts +0 -206
  388. package/node_modules/human-signals/build/src/main.js +0 -70
  389. package/node_modules/human-signals/build/src/realtime.js +0 -16
  390. package/node_modules/human-signals/build/src/signals.js +0 -34
  391. package/node_modules/human-signals/package.json +0 -66
  392. package/node_modules/ieee754/LICENSE +0 -11
  393. package/node_modules/ieee754/README.md +0 -51
  394. package/node_modules/ieee754/index.d.ts +0 -10
  395. package/node_modules/ieee754/index.js +0 -85
  396. package/node_modules/ieee754/package.json +0 -52
  397. package/node_modules/inherits/LICENSE +0 -16
  398. package/node_modules/inherits/README.md +0 -42
  399. package/node_modules/inherits/inherits.js +0 -9
  400. package/node_modules/inherits/inherits_browser.js +0 -27
  401. package/node_modules/inherits/package.json +0 -29
  402. package/node_modules/ini/LICENSE +0 -15
  403. package/node_modules/ini/README.md +0 -102
  404. package/node_modules/ini/ini.js +0 -206
  405. package/node_modules/ini/package.json +0 -33
  406. package/node_modules/is-plain-obj/index.d.ts +0 -35
  407. package/node_modules/is-plain-obj/index.js +0 -8
  408. package/node_modules/is-plain-obj/license +0 -9
  409. package/node_modules/is-plain-obj/package.json +0 -41
  410. package/node_modules/is-plain-obj/readme.md +0 -58
  411. package/node_modules/is-stream/index.d.ts +0 -90
  412. package/node_modules/is-stream/index.js +0 -37
  413. package/node_modules/is-stream/license +0 -9
  414. package/node_modules/is-stream/package.json +0 -48
  415. package/node_modules/is-stream/readme.md +0 -57
  416. package/node_modules/is-unicode-supported/index.d.ts +0 -12
  417. package/node_modules/is-unicode-supported/index.js +0 -21
  418. package/node_modules/is-unicode-supported/license +0 -9
  419. package/node_modules/is-unicode-supported/package.json +0 -47
  420. package/node_modules/is-unicode-supported/readme.md +0 -35
  421. package/node_modules/isexe/.npmignore +0 -2
  422. package/node_modules/isexe/LICENSE +0 -15
  423. package/node_modules/isexe/README.md +0 -51
  424. package/node_modules/isexe/index.js +0 -57
  425. package/node_modules/isexe/mode.js +0 -41
  426. package/node_modules/isexe/package.json +0 -31
  427. package/node_modules/isexe/test/basic.js +0 -221
  428. package/node_modules/isexe/windows.js +0 -42
  429. package/node_modules/mimic-response/index.d.ts +0 -17
  430. package/node_modules/mimic-response/index.js +0 -77
  431. package/node_modules/mimic-response/license +0 -9
  432. package/node_modules/mimic-response/package.json +0 -42
  433. package/node_modules/mimic-response/readme.md +0 -78
  434. package/node_modules/minimist/.eslintrc +0 -29
  435. package/node_modules/minimist/.github/FUNDING.yml +0 -12
  436. package/node_modules/minimist/.nycrc +0 -14
  437. package/node_modules/minimist/CHANGELOG.md +0 -298
  438. package/node_modules/minimist/LICENSE +0 -18
  439. package/node_modules/minimist/README.md +0 -121
  440. package/node_modules/minimist/example/parse.js +0 -4
  441. package/node_modules/minimist/index.js +0 -263
  442. package/node_modules/minimist/package.json +0 -75
  443. package/node_modules/minimist/test/all_bool.js +0 -34
  444. package/node_modules/minimist/test/bool.js +0 -177
  445. package/node_modules/minimist/test/dash.js +0 -43
  446. package/node_modules/minimist/test/default_bool.js +0 -37
  447. package/node_modules/minimist/test/dotted.js +0 -24
  448. package/node_modules/minimist/test/kv_short.js +0 -32
  449. package/node_modules/minimist/test/long.js +0 -33
  450. package/node_modules/minimist/test/num.js +0 -38
  451. package/node_modules/minimist/test/parse.js +0 -209
  452. package/node_modules/minimist/test/parse_modified.js +0 -11
  453. package/node_modules/minimist/test/proto.js +0 -64
  454. package/node_modules/minimist/test/short.js +0 -69
  455. package/node_modules/minimist/test/stop_early.js +0 -17
  456. package/node_modules/minimist/test/unknown.js +0 -104
  457. package/node_modules/minimist/test/whitespace.js +0 -10
  458. package/node_modules/mkdirp-classic/LICENSE +0 -21
  459. package/node_modules/mkdirp-classic/README.md +0 -18
  460. package/node_modules/mkdirp-classic/index.js +0 -98
  461. package/node_modules/mkdirp-classic/package.json +0 -18
  462. package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +0 -31
  463. package/node_modules/napi-build-utils/LICENSE +0 -21
  464. package/node_modules/napi-build-utils/README.md +0 -52
  465. package/node_modules/napi-build-utils/index.js +0 -214
  466. package/node_modules/napi-build-utils/index.md +0 -0
  467. package/node_modules/napi-build-utils/package.json +0 -42
  468. package/node_modules/node-abi/LICENSE +0 -21
  469. package/node_modules/node-abi/README.md +0 -54
  470. package/node_modules/node-abi/abi_registry.json +0 -446
  471. package/node_modules/node-abi/index.js +0 -179
  472. package/node_modules/node-abi/package.json +0 -45
  473. package/node_modules/npm-run-path/index.d.ts +0 -90
  474. package/node_modules/npm-run-path/index.js +0 -55
  475. package/node_modules/npm-run-path/license +0 -9
  476. package/node_modules/npm-run-path/node_modules/path-key/index.d.ts +0 -31
  477. package/node_modules/npm-run-path/node_modules/path-key/index.js +0 -12
  478. package/node_modules/npm-run-path/node_modules/path-key/license +0 -9
  479. package/node_modules/npm-run-path/node_modules/path-key/package.json +0 -41
  480. package/node_modules/npm-run-path/node_modules/path-key/readme.md +0 -57
  481. package/node_modules/npm-run-path/package.json +0 -52
  482. package/node_modules/npm-run-path/readme.md +0 -104
  483. package/node_modules/once/LICENSE +0 -15
  484. package/node_modules/once/README.md +0 -79
  485. package/node_modules/once/once.js +0 -42
  486. package/node_modules/once/package.json +0 -33
  487. package/node_modules/parse-ms/index.d.ts +0 -30
  488. package/node_modules/parse-ms/index.js +0 -45
  489. package/node_modules/parse-ms/license +0 -9
  490. package/node_modules/parse-ms/package.json +0 -47
  491. package/node_modules/parse-ms/readme.md +0 -46
  492. package/node_modules/path-key/index.d.ts +0 -40
  493. package/node_modules/path-key/index.js +0 -16
  494. package/node_modules/path-key/license +0 -9
  495. package/node_modules/path-key/package.json +0 -39
  496. package/node_modules/path-key/readme.md +0 -61
  497. package/node_modules/prebuild-install/CHANGELOG.md +0 -131
  498. package/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
  499. package/node_modules/prebuild-install/LICENSE +0 -21
  500. package/node_modules/prebuild-install/README.md +0 -163
  501. package/node_modules/prebuild-install/asset.js +0 -44
  502. package/node_modules/prebuild-install/bin.js +0 -78
  503. package/node_modules/prebuild-install/download.js +0 -142
  504. package/node_modules/prebuild-install/error.js +0 -14
  505. package/node_modules/prebuild-install/help.txt +0 -16
  506. package/node_modules/prebuild-install/index.js +0 -1
  507. package/node_modules/prebuild-install/log.js +0 -33
  508. package/node_modules/prebuild-install/package.json +0 -67
  509. package/node_modules/prebuild-install/proxy.js +0 -35
  510. package/node_modules/prebuild-install/rc.js +0 -64
  511. package/node_modules/prebuild-install/util.js +0 -143
  512. package/node_modules/pretty-ms/index.d.ts +0 -157
  513. package/node_modules/pretty-ms/index.js +0 -149
  514. package/node_modules/pretty-ms/license +0 -9
  515. package/node_modules/pretty-ms/package.json +0 -55
  516. package/node_modules/pretty-ms/readme.md +0 -179
  517. package/node_modules/pump/.github/FUNDING.yml +0 -2
  518. package/node_modules/pump/.travis.yml +0 -5
  519. package/node_modules/pump/LICENSE +0 -21
  520. package/node_modules/pump/README.md +0 -74
  521. package/node_modules/pump/SECURITY.md +0 -5
  522. package/node_modules/pump/empty.js +0 -1
  523. package/node_modules/pump/index.js +0 -86
  524. package/node_modules/pump/package.json +0 -30
  525. package/node_modules/pump/test-browser.js +0 -66
  526. package/node_modules/pump/test-node.js +0 -53
  527. package/node_modules/rc/LICENSE.APACHE2 +0 -15
  528. package/node_modules/rc/LICENSE.BSD +0 -26
  529. package/node_modules/rc/LICENSE.MIT +0 -24
  530. package/node_modules/rc/README.md +0 -227
  531. package/node_modules/rc/browser.js +0 -7
  532. package/node_modules/rc/cli.js +0 -4
  533. package/node_modules/rc/index.js +0 -53
  534. package/node_modules/rc/lib/utils.js +0 -104
  535. package/node_modules/rc/package.json +0 -29
  536. package/node_modules/rc/test/ini.js +0 -16
  537. package/node_modules/rc/test/nested-env-vars.js +0 -50
  538. package/node_modules/rc/test/test.js +0 -59
  539. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  540. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  541. package/node_modules/readable-stream/LICENSE +0 -47
  542. package/node_modules/readable-stream/README.md +0 -106
  543. package/node_modules/readable-stream/errors-browser.js +0 -127
  544. package/node_modules/readable-stream/errors.js +0 -116
  545. package/node_modules/readable-stream/experimentalWarning.js +0 -17
  546. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
  547. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
  548. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
  549. package/node_modules/readable-stream/lib/_stream_transform.js +0 -190
  550. package/node_modules/readable-stream/lib/_stream_writable.js +0 -641
  551. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
  552. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
  553. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
  554. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
  555. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  556. package/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
  557. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
  558. package/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
  559. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  560. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  561. package/node_modules/readable-stream/package.json +0 -68
  562. package/node_modules/readable-stream/readable-browser.js +0 -9
  563. package/node_modules/readable-stream/readable.js +0 -16
  564. package/node_modules/safe-buffer/LICENSE +0 -21
  565. package/node_modules/safe-buffer/README.md +0 -584
  566. package/node_modules/safe-buffer/index.d.ts +0 -187
  567. package/node_modules/safe-buffer/index.js +0 -65
  568. package/node_modules/safe-buffer/package.json +0 -51
  569. package/node_modules/semver/LICENSE +0 -15
  570. package/node_modules/semver/README.md +0 -665
  571. package/node_modules/semver/bin/semver.js +0 -191
  572. package/node_modules/semver/classes/comparator.js +0 -143
  573. package/node_modules/semver/classes/index.js +0 -7
  574. package/node_modules/semver/classes/range.js +0 -557
  575. package/node_modules/semver/classes/semver.js +0 -333
  576. package/node_modules/semver/functions/clean.js +0 -8
  577. package/node_modules/semver/functions/cmp.js +0 -54
  578. package/node_modules/semver/functions/coerce.js +0 -62
  579. package/node_modules/semver/functions/compare-build.js +0 -9
  580. package/node_modules/semver/functions/compare-loose.js +0 -5
  581. package/node_modules/semver/functions/compare.js +0 -7
  582. package/node_modules/semver/functions/diff.js +0 -60
  583. package/node_modules/semver/functions/eq.js +0 -5
  584. package/node_modules/semver/functions/gt.js +0 -5
  585. package/node_modules/semver/functions/gte.js +0 -5
  586. package/node_modules/semver/functions/inc.js +0 -21
  587. package/node_modules/semver/functions/lt.js +0 -5
  588. package/node_modules/semver/functions/lte.js +0 -5
  589. package/node_modules/semver/functions/major.js +0 -5
  590. package/node_modules/semver/functions/minor.js +0 -5
  591. package/node_modules/semver/functions/neq.js +0 -5
  592. package/node_modules/semver/functions/parse.js +0 -18
  593. package/node_modules/semver/functions/patch.js +0 -5
  594. package/node_modules/semver/functions/prerelease.js +0 -8
  595. package/node_modules/semver/functions/rcompare.js +0 -5
  596. package/node_modules/semver/functions/rsort.js +0 -5
  597. package/node_modules/semver/functions/satisfies.js +0 -12
  598. package/node_modules/semver/functions/sort.js +0 -5
  599. package/node_modules/semver/functions/valid.js +0 -8
  600. package/node_modules/semver/index.js +0 -91
  601. package/node_modules/semver/internal/constants.js +0 -37
  602. package/node_modules/semver/internal/debug.js +0 -11
  603. package/node_modules/semver/internal/identifiers.js +0 -29
  604. package/node_modules/semver/internal/lrucache.js +0 -42
  605. package/node_modules/semver/internal/parse-options.js +0 -17
  606. package/node_modules/semver/internal/re.js +0 -223
  607. package/node_modules/semver/package.json +0 -78
  608. package/node_modules/semver/preload.js +0 -4
  609. package/node_modules/semver/range.bnf +0 -16
  610. package/node_modules/semver/ranges/gtr.js +0 -6
  611. package/node_modules/semver/ranges/intersects.js +0 -9
  612. package/node_modules/semver/ranges/ltr.js +0 -6
  613. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  614. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  615. package/node_modules/semver/ranges/min-version.js +0 -63
  616. package/node_modules/semver/ranges/outside.js +0 -82
  617. package/node_modules/semver/ranges/simplify.js +0 -49
  618. package/node_modules/semver/ranges/subset.js +0 -249
  619. package/node_modules/semver/ranges/to-comparators.js +0 -10
  620. package/node_modules/semver/ranges/valid.js +0 -13
  621. package/node_modules/shebang-command/index.js +0 -19
  622. package/node_modules/shebang-command/license +0 -9
  623. package/node_modules/shebang-command/package.json +0 -34
  624. package/node_modules/shebang-command/readme.md +0 -34
  625. package/node_modules/shebang-regex/index.d.ts +0 -22
  626. package/node_modules/shebang-regex/index.js +0 -2
  627. package/node_modules/shebang-regex/license +0 -9
  628. package/node_modules/shebang-regex/package.json +0 -35
  629. package/node_modules/shebang-regex/readme.md +0 -33
  630. package/node_modules/signal-exit/LICENSE.txt +0 -16
  631. package/node_modules/signal-exit/README.md +0 -74
  632. package/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -12
  633. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -1
  634. package/node_modules/signal-exit/dist/cjs/browser.js +0 -10
  635. package/node_modules/signal-exit/dist/cjs/browser.js.map +0 -1
  636. package/node_modules/signal-exit/dist/cjs/index.d.ts +0 -48
  637. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -1
  638. package/node_modules/signal-exit/dist/cjs/index.js +0 -279
  639. package/node_modules/signal-exit/dist/cjs/index.js.map +0 -1
  640. package/node_modules/signal-exit/dist/cjs/package.json +0 -3
  641. package/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -29
  642. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -1
  643. package/node_modules/signal-exit/dist/cjs/signals.js +0 -42
  644. package/node_modules/signal-exit/dist/cjs/signals.js.map +0 -1
  645. package/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -12
  646. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -1
  647. package/node_modules/signal-exit/dist/mjs/browser.js +0 -4
  648. package/node_modules/signal-exit/dist/mjs/browser.js.map +0 -1
  649. package/node_modules/signal-exit/dist/mjs/index.d.ts +0 -48
  650. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -1
  651. package/node_modules/signal-exit/dist/mjs/index.js +0 -275
  652. package/node_modules/signal-exit/dist/mjs/index.js.map +0 -1
  653. package/node_modules/signal-exit/dist/mjs/package.json +0 -3
  654. package/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -29
  655. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -1
  656. package/node_modules/signal-exit/dist/mjs/signals.js +0 -39
  657. package/node_modules/signal-exit/dist/mjs/signals.js.map +0 -1
  658. package/node_modules/signal-exit/package.json +0 -106
  659. package/node_modules/simple-concat/.travis.yml +0 -3
  660. package/node_modules/simple-concat/LICENSE +0 -20
  661. package/node_modules/simple-concat/README.md +0 -44
  662. package/node_modules/simple-concat/index.js +0 -15
  663. package/node_modules/simple-concat/package.json +0 -47
  664. package/node_modules/simple-concat/test/basic.js +0 -41
  665. package/node_modules/simple-get/.github/dependabot.yml +0 -15
  666. package/node_modules/simple-get/.github/workflows/ci.yml +0 -23
  667. package/node_modules/simple-get/LICENSE +0 -20
  668. package/node_modules/simple-get/README.md +0 -333
  669. package/node_modules/simple-get/index.js +0 -108
  670. package/node_modules/simple-get/package.json +0 -67
  671. package/node_modules/sqlite-vec/README.md +0 -1
  672. package/node_modules/sqlite-vec/index.cjs +0 -46
  673. package/node_modules/sqlite-vec/index.d.ts +0 -17
  674. package/node_modules/sqlite-vec/index.mjs +0 -47
  675. package/node_modules/sqlite-vec/package.json +0 -1
  676. package/node_modules/sqlite-vec-linux-x64/README.md +0 -1
  677. package/node_modules/sqlite-vec-linux-x64/package.json +0 -1
  678. package/node_modules/sqlite-vec-linux-x64/vec0.so +0 -0
  679. package/node_modules/string_decoder/LICENSE +0 -48
  680. package/node_modules/string_decoder/README.md +0 -47
  681. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  682. package/node_modules/string_decoder/package.json +0 -34
  683. package/node_modules/strip-final-newline/index.d.ts +0 -18
  684. package/node_modules/strip-final-newline/index.js +0 -26
  685. package/node_modules/strip-final-newline/license +0 -9
  686. package/node_modules/strip-final-newline/package.json +0 -49
  687. package/node_modules/strip-final-newline/readme.md +0 -34
  688. package/node_modules/strip-json-comments/index.js +0 -70
  689. package/node_modules/strip-json-comments/license +0 -21
  690. package/node_modules/strip-json-comments/package.json +0 -42
  691. package/node_modules/strip-json-comments/readme.md +0 -64
  692. package/node_modules/tar-fs/.travis.yml +0 -6
  693. package/node_modules/tar-fs/LICENSE +0 -21
  694. package/node_modules/tar-fs/README.md +0 -165
  695. package/node_modules/tar-fs/index.js +0 -363
  696. package/node_modules/tar-fs/package.json +0 -41
  697. package/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  698. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  699. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  700. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  701. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  702. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  703. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  704. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  705. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  706. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  707. package/node_modules/tar-fs/test/index.js +0 -346
  708. package/node_modules/tar-stream/LICENSE +0 -21
  709. package/node_modules/tar-stream/README.md +0 -168
  710. package/node_modules/tar-stream/extract.js +0 -257
  711. package/node_modules/tar-stream/headers.js +0 -295
  712. package/node_modules/tar-stream/index.js +0 -2
  713. package/node_modules/tar-stream/pack.js +0 -255
  714. package/node_modules/tar-stream/package.json +0 -58
  715. package/node_modules/tar-stream/sandbox.js +0 -11
  716. package/node_modules/tunnel-agent/LICENSE +0 -55
  717. package/node_modules/tunnel-agent/README.md +0 -4
  718. package/node_modules/tunnel-agent/index.js +0 -244
  719. package/node_modules/tunnel-agent/package.json +0 -22
  720. package/node_modules/unicorn-magic/default.d.ts +0 -13
  721. package/node_modules/unicorn-magic/default.js +0 -14
  722. package/node_modules/unicorn-magic/license +0 -9
  723. package/node_modules/unicorn-magic/node.d.ts +0 -125
  724. package/node_modules/unicorn-magic/node.js +0 -49
  725. package/node_modules/unicorn-magic/package.json +0 -62
  726. package/node_modules/unicorn-magic/readme.md +0 -25
  727. package/node_modules/util-deprecate/History.md +0 -16
  728. package/node_modules/util-deprecate/LICENSE +0 -24
  729. package/node_modules/util-deprecate/README.md +0 -53
  730. package/node_modules/util-deprecate/browser.js +0 -67
  731. package/node_modules/util-deprecate/node.js +0 -6
  732. package/node_modules/util-deprecate/package.json +0 -27
  733. package/node_modules/which/CHANGELOG.md +0 -166
  734. package/node_modules/which/LICENSE +0 -15
  735. package/node_modules/which/README.md +0 -54
  736. package/node_modules/which/bin/node-which +0 -52
  737. package/node_modules/which/package.json +0 -43
  738. package/node_modules/which/which.js +0 -125
  739. package/node_modules/wrappy/LICENSE +0 -15
  740. package/node_modules/wrappy/README.md +0 -36
  741. package/node_modules/wrappy/package.json +0 -29
  742. package/node_modules/wrappy/wrappy.js +0 -33
  743. package/node_modules/yoctocolors/base.d.ts +0 -47
  744. package/node_modules/yoctocolors/base.js +0 -94
  745. package/node_modules/yoctocolors/index.d.ts +0 -2
  746. package/node_modules/yoctocolors/index.js +0 -2
  747. package/node_modules/yoctocolors/license +0 -9
  748. package/node_modules/yoctocolors/package.json +0 -69
  749. package/node_modules/yoctocolors/readme.md +0 -138
@@ -72,6 +72,10 @@ export async function collectSemgrepFindings(projectDir, logger = null) {
72
72
  return { available: true, ...parseSemgrepOutput(parsed, projectDir) };
73
73
  }
74
74
 
75
+ function relativizeSemgrepPath(p, projectDir) {
76
+ return p.startsWith(projectDir + "/") ? p.slice(projectDir.length + 1) : p;
77
+ }
78
+
75
79
  /**
76
80
  * Convert semgrep's JSON shape into the flat findings list the prompt
77
81
  * builder consumes. Semgrep emits results[] with rule id, severity,
@@ -86,7 +90,7 @@ export function parseSemgrepOutput(raw, projectDir = "") {
86
90
  const findings = [];
87
91
  for (const r of results) {
88
92
  const file = r.path && projectDir
89
- ? r.path.startsWith(projectDir + "/") ? r.path.slice(projectDir.length + 1) : r.path
93
+ ? relativizeSemgrepPath(r.path, projectDir)
90
94
  : r.path || "";
91
95
  findings.push({
92
96
  rule: r.check_id || "(unknown)",
@@ -37,7 +37,14 @@ const SILENCED_PATTERNS = /killed\s+after\s+\d+\s*ms|silence\s*timeout|no\s+outp
37
37
  // ("You've hit your session limit · resets 10:10pm"). Without them the
38
38
  // message fell through to UNKNOWN_FATAL and the run aborted instead of
39
39
  // hibernating until the reset.
40
- const RATE_LIMIT_PATTERNS = /usage\s+limit|rate\s*limit|too\s+many\s+requests|\b429\b|throttl|exceeded\s+your\s+current\s+quota|resource\s+exhausted|quota\s+exceeded|token\s+limit\s+reached|monthly\s+limit|weekly\s+limit|daily\s+limit|session\s+limit/i;
40
+ // Decomposed by family (S5843, complexity 36 → 3 named groups). The
41
+ // union of tokens is identical to the original single alternation.
42
+ const RATE_LIMIT_GROUPS = [
43
+ /rate\s*limit|too\s+many\s+requests|\b429\b|throttl/i,
44
+ /exceeded\s+your\s+current\s+quota|resource\s+exhausted|quota\s+exceeded|token\s+limit\s+reached/i,
45
+ /usage\s+limit|monthly\s+limit|weekly\s+limit|daily\s+limit|session\s+limit/i,
46
+ ];
47
+ const RATE_LIMIT_PATTERNS = { test: (text) => RATE_LIMIT_GROUPS.some((re) => re.test(text)) };
41
48
  const API_DOWN_PATTERNS = /\b50[0-4]\b|bad\s+gateway|service\s+unavailable|gateway\s+timeout|overloaded|internal\s+server\s+error/i;
42
49
  const NETWORK_PATTERNS = /ECONNREFUSED|ECONNRESET|ETIMEDOUT|socket\s+hang\s+up|fetch\s+failed|network\s+error/i;
43
50
 
@@ -179,8 +179,8 @@ export function buildDecision({ triage, task: _task, config = {}, overrides = {}
179
179
  solomonReason = "triage returned no level";
180
180
  }
181
181
 
182
- const rolesOn = Array.from(roles).sort();
183
- const rolesOff = Array.from(VALID_ROLES).filter((r) => !roles.has(r)).sort();
182
+ const rolesOn = Array.from(roles).sort((a, b) => a.localeCompare(b));
183
+ const rolesOff = Array.from(VALID_ROLES).filter((r) => !roles.has(r)).sort((a, b) => a.localeCompare(b));
184
184
 
185
185
  const rationale = buildRationale({ level, taskType, rolesOn, appliedOverrides, triage });
186
186
 
@@ -161,8 +161,8 @@ export function applyRulingToDecision(decision, ruling, logger) {
161
161
 
162
162
  return {
163
163
  ...decision,
164
- rolesOn: Array.from(rolesOn).sort(),
165
- rolesOff: Array.from(rolesOff).sort(),
164
+ rolesOn: Array.from(rolesOn).sort((a, b) => a.localeCompare(b)),
165
+ rolesOff: Array.from(rolesOff).sort((a, b) => a.localeCompare(b)),
166
166
  appliedOverrides: [...decision.appliedOverrides, ...applied],
167
167
  confidence: applied.length > 0 ? "high" : decision.confidence,
168
168
  consultSolomon: false,
@@ -5,6 +5,4 @@ export {
5
5
  scheduleResume,
6
6
  cancelScheduled,
7
7
  reconcileAll,
8
- acquireStandbyLock,
9
- markStandbyDone,
10
8
  } from "@karajan/core/standby-scheduler";
@@ -38,7 +38,8 @@ function promptContinueWithLlm({ promptFn = null } = {}) {
38
38
  function formatFindings(findings) {
39
39
  const lines = [];
40
40
  for (const f of findings) {
41
- const loc = f.file ? `${f.file}${f.line ? `:${f.line}` : ""}` : "";
41
+ const lineSuffix = f.line ? `:${f.line}` : "";
42
+ const loc = f.file ? `${f.file}${lineSuffix}` : "";
42
43
  const rule = f.rule ? ` [${f.rule}]` : "";
43
44
  lines.push(` - [${f.severity.toUpperCase()}] ${loc}${rule}`);
44
45
  lines.push(` ${f.description}`);
@@ -116,7 +117,8 @@ function formatAudit(parsed, usage = null) {
116
117
  function formatUsageSummary(usage) {
117
118
  if (!usage) return null;
118
119
  const lines = ["## LLM Usage"];
119
- lines.push(`- Provider: ${usage.provider}${usage.model ? ` (${usage.model})` : ""}`);
120
+ const modelSuffix = usage.model ? ` (${usage.model})` : "";
121
+ lines.push(`- Provider: ${usage.provider}${modelSuffix}`);
120
122
  if (typeof usage.durationMs === "number") {
121
123
  lines.push(`- Duration: ${(usage.durationMs / 1000).toFixed(1)}s`);
122
124
  }
@@ -130,6 +132,9 @@ function formatUsageSummary(usage) {
130
132
  // locale-less Node and "1,234" on a US-locale workstation).
131
133
  const fmt = (n) => n.toLocaleString("en-US");
132
134
  lines.push(`- Tokens: ${fmt(usage.total_tokens)} total (${fmt(usage.tokens_in)} in, ${fmt(usage.tokens_out)} out)`);
135
+ if (typeof usage.cached_tokens === "number" && usage.cached_tokens > 0) {
136
+ lines.push(`- Cached tokens: ${fmt(usage.cached_tokens)} (prompt-cache hits)`);
137
+ }
133
138
  if (typeof usage.cost_usd === "number") {
134
139
  lines.push(`- Estimated cost: $${usage.cost_usd.toFixed(4)} USD`);
135
140
  }
@@ -402,4 +407,4 @@ export async function auditCommand({ task, config, logger, dimensions, json, age
402
407
  }
403
408
 
404
409
  // Exposed for tests — kept module-private otherwise.
405
- export { formatAudit, formatUsageSummary, AUDIT_DIMENSIONS };
410
+ export { formatAudit, formatUsageSummary };
@@ -128,7 +128,7 @@ export function waitForEarlyExit(child, logPath) {
128
128
  // out, so we never announce "HU Board started" for an unreachable
129
129
  // server. Overridable with KJ_BOARD_READY_TIMEOUT_MS (tests set it
130
130
  // low to stay fast).
131
- export async function waitForBoardReachable(port, totalTimeoutMs) {
131
+ async function waitForBoardReachable(port, totalTimeoutMs) {
132
132
  const envTimeout = Number(process.env.KJ_BOARD_READY_TIMEOUT_MS);
133
133
  const budget = Number.isFinite(envTimeout) && envTimeout >= 0
134
134
  ? envTimeout
@@ -49,7 +49,10 @@ export async function standbyListCommand({ json } = {}) {
49
49
  const ms = new Date(s.cooldownUntil).getTime() - now;
50
50
  const status = ms <= 0 ? "✓ lista para resume" : `⏳ resume en ${formatCountdown(ms)}`;
51
51
  console.log(` ${s.sessionId} · ${s.reason || "?"} · ${status}`);
52
- if (s.planId) console.log(` plan: ${s.planId}${s.huId ? `, HU: ${s.huId}` : ""}`);
52
+ if (s.planId) {
53
+ const huSuffix = s.huId ? `, HU: ${s.huId}` : "";
54
+ console.log(` plan: ${s.planId}${huSuffix}`);
55
+ }
53
56
  }
54
57
  }
55
58
 
@@ -187,8 +187,8 @@ function stripRuntimeOnlyKeys(config) {
187
187
  // warning on every subsequent kj run.
188
188
  if (out.sonarqube && typeof out.sonarqube === "object"
189
189
  && Object.prototype.hasOwnProperty.call(out.sonarqube, "enabled")) {
190
- const { enabled: _drop, ...rest } = out.sonarqube;
191
- void _drop;
190
+ const rest = { ...out.sonarqube };
191
+ delete rest.enabled;
192
192
  out.sonarqube = rest;
193
193
  }
194
194
  return out;
@@ -10,12 +10,14 @@
10
10
  * allowed_loc_range need filesystem access — PR-3a wires those.
11
11
  */
12
12
 
13
+ import { escapeRegExp } from "../utils/escape-regexp.js";
14
+
13
15
  const COMMIT_LINE = /^- `([^`]+)`\s+(.*)$/;
14
16
  const SCORE_LINE = /^\*\*Score\*\*:\s*(\d+)\s*\/\s*100/m;
15
17
  const AUDIT_ROW = /^\|\s*`audit`\s*\|\s*([^|]+?)\s*\|/m;
16
18
 
17
19
  function extractSection(content, heading) {
18
- const re = new RegExp(`^## ${heading}\\s*$([\\s\\S]*?)(?=^## |\\Z)`, "m");
20
+ const re = new RegExp(`^## ${escapeRegExp(heading)}\\s*$([\\s\\S]*?)(?=^## |\\Z)`, "m");
19
21
  const m = content.match(re);
20
22
  return m ? m[1].trim() : "";
21
23
  }
@@ -12,7 +12,7 @@ const NonNegInt = v.pipe(v.number(), v.integer(), v.minValue(0));
12
12
  const LocRangeSchema = v.pipe(v.array(NonNegInt), v.length(2),
13
13
  v.check((arr) => arr[0] <= arr[1], "allowed_loc_range: min must be <= max"));
14
14
 
15
- export const GoldenTaskSchema = v.looseObject({
15
+ const GoldenTaskSchema = v.looseObject({
16
16
  id: v.pipe(NonEmptyString, v.regex(/^[a-z0-9_-]+$/, "id must be lowercase a-z0-9_-")),
17
17
  title: NonEmptyString,
18
18
  prompt: NonEmptyString,
@@ -106,7 +106,7 @@ function filterConflictingHints(hints) {
106
106
  * @param {string[]} hints
107
107
  * @returns {"python"|"go"|"rust"|"javascript"}
108
108
  */
109
- export function resolveLanguageFromHints(hints) {
109
+ function resolveLanguageFromHints(hints) {
110
110
  if (!hints || hints.length === 0) return "javascript";
111
111
  if (hints.some((h) => HINT_PYTHON.has(h))) return "python";
112
112
  if (hints.some((h) => HINT_GO.has(h))) return "go";
@@ -24,7 +24,7 @@ async function initRuntime() {
24
24
  return runtimePromise;
25
25
  }
26
26
 
27
- export function grammarPath(id) {
27
+ function grammarPath(id) {
28
28
  return resolve(GRAMMAR_DIR, `${id}.wasm`);
29
29
  }
30
30
 
@@ -43,7 +43,3 @@ export function getLoaded(id) {
43
43
  return cache.get(id) || null;
44
44
  }
45
45
 
46
- export function resetForTests() {
47
- cache.clear();
48
- runtimePromise = null;
49
- }
@@ -16,6 +16,7 @@ import {
16
16
  } from "../shared-helpers.js";
17
17
  import { buildDashboardJson } from "../../utils/status-dashboard.js";
18
18
  import { loadMostRecentSession } from "../../session/store.js";
19
+ import { escapeRegExp } from "../../utils/escape-regexp.js";
19
20
 
20
21
  const AGENT_ROLES = new Set(["coder", "reviewer", "tester", "security", "solomon"]);
21
22
 
@@ -72,9 +73,9 @@ export async function handleAgents(a) {
72
73
  function parseHumanResponseOverrides(humanResponse, overrides) {
73
74
  for (const role of AGENT_ROLES) {
74
75
  const patterns = [
75
- new RegExp(String.raw`use\s+(\w+)\s+(?:as|for)\s+${role}`, "i"),
76
- new RegExp(String.raw`${role}\s*[:=]\s*(\w+)`, "i"),
77
- new RegExp(String.raw`set\s+${role}\s+(?:to|=)\s*(\w+)`, "i")
76
+ new RegExp(String.raw`use\s+(\w+)\s+(?:as|for)\s+${escapeRegExp(role)}`, "i"),
77
+ new RegExp(String.raw`${escapeRegExp(role)}\s*[:=]\s*(\w+)`, "i"),
78
+ new RegExp(String.raw`set\s+${escapeRegExp(role)}\s+(?:to|=)\s*(\w+)`, "i")
78
79
  ];
79
80
  for (const pat of patterns) {
80
81
  const m = pat.exec(humanResponse);
@@ -34,7 +34,6 @@ import { emitProgress, makeEvent } from "../../utils/events.js";
34
34
  import { runTesterStage, runSecurityStage, runFinalAuditStage } from "../post-loop-stages.js";
35
35
  import { invokeSolomon } from "../solomon-escalation.js";
36
36
  import { tryCiComment } from "../ci-integration.js";
37
- import { writeIterationsJournal } from "../session-journal.js";
38
37
  import { getIntegration } from "../integrations.js";
39
38
 
40
39
  export async function handlePostLoopStages({ config, session, emitter, eventBase, coderRole, trackBudget, i, task, stageResults, ciEnabled: _ciEnabled, testerEnabled, securityEnabled, askQuestion, logger, brainCtx }) {
@@ -129,103 +128,56 @@ export async function finalizeApprovedSession({ config, gitCtx, task, logger, se
129
128
  if (rtkSavings) setRtkSavings(session, rtkSavings);
130
129
  await saveSession(session);
131
130
 
132
- // --- Journal: write final files ---
131
+ // --- Journal: write final files (shared writer, KJC-BUG-0084) ---
133
132
  const journalDir = session._journalDir;
134
133
  if (journalDir) {
134
+ // 2026-05-07 dogfooding: gitResult.commits only carries the post-loop
135
+ // commit (scaffold). Compute the full range from session_start_sha so
136
+ // every commit the run produced shows up in execution order.
137
+ let allCommits;
138
+ try { allCommits = (await listCommitsBetween(session.head_at_start || session.session_start_sha)) || []; }
139
+ catch { allCommits = gitResult?.commits || []; }
140
+ const summaryCommits = allCommits.length > 0 ? allCommits : (gitResult?.commits || []);
141
+
142
+ // KJC-TSK-0376 — plan adherence metric (deepeval-inspired). When the
143
+ // run executed against a known plan (`kj run --plan <id>`), score how
144
+ // faithfully the coder followed it. Pure offline; safe-by-default
145
+ // (try/catch swallows missing helper or unreadable plan).
146
+ let planAdherence = null;
135
147
  try {
136
- await writeIterationsJournal(journalDir, session._journalIterations || []);
137
- // decisions.md: writes only when Solomon was invoked (AC of KJC-TSK-0287).
138
- // Pulls structured data from session.solomonRulings + session.brainDecisions.
139
- const { writeDecisionsJournal: writeDecisionsJournalV2 } =
140
- await import("../../session/journal/decisions-writer.js");
141
- const decisionsResult = await writeDecisionsJournalV2(session, { journalDir, logger });
142
- // KJC-TSK-0288: use the new tree-writer with directory grouping
143
- const { writeTreeJournal: writeTreeJournalV2 } =
144
- await import("../../session/journal/tree-writer.js");
145
- const treeResult = await writeTreeJournalV2(journalDir, session.session_start_sha, { logger });
146
-
147
- const journalFiles = [...(session._journalFiles || [])];
148
- if (session._journalIterations?.length) journalFiles.push("iterations.md");
149
- if (decisionsResult.written) journalFiles.push("decisions.md");
150
- if (treeResult.written) journalFiles.push("tree.txt");
151
-
152
- // KJC-TSK-0289: use the richer summary writer (stages table, budget
153
- // breakdown, brain/solomon counts, typed links to other journal files).
154
- const { writeSummaryJournal: writeSummaryJournalV2 } =
155
- await import("../../session/journal/summary-writer.js");
156
- const startedAt = session._startedAt ? new Date(session._startedAt).toISOString() : undefined;
157
- // 2026-05-07 dogfooding: gitResult.commits only carries the post-loop
158
- // commit (scaffold), not the coder's own commit. The summary's
159
- // "Commits" section was therefore misleading — it claimed the run
160
- // produced one chore commit when in fact the coder had also written
161
- // a docs/feat commit. Compute the full range from session_start_sha
162
- // so every commit between then and HEAD shows up in execution order.
163
- // try/catch (instead of `.catch(...)`) so we tolerate both promise
164
- // rejection AND a sync return of undefined — the latter happens
165
- // when a test mocks listCommitsBetween with a plain vi.fn() that
166
- // resetAllMocks has stripped of its mockResolvedValue.
167
- let allCommits = [];
168
- try { allCommits = (await listCommitsBetween(session.head_at_start || session.session_start_sha)) || []; }
169
- catch { allCommits = gitResult?.commits || []; }
170
- const summaryCommits = allCommits.length > 0 ? allCommits : (gitResult?.commits || []);
171
-
172
- // KJC-TSK-0376 — plan adherence metric (deepeval-inspired). When the
173
- // run executed against a known plan (`kj run --plan <id>`), score how
174
- // faithfully the coder followed it. Pure offline; safe-by-default
175
- // (try/catch swallows missing helper or unreadable plan).
176
- let planAdherence = null;
177
- try {
178
- const planId = session._planRef?.planId
179
- || stageResults?.huReviewer?.planId
180
- || null;
181
- if (planId) {
182
- const projectDir = config?.projectDir
183
- || session.config_snapshot?.projectDir
184
- || process.cwd();
185
- const plan = await loadPlan(projectDir, planId).catch(() => null);
186
- if (plan && Array.isArray(plan.hus) && plan.hus.length > 0) {
187
- const filesChanged = await listFilesChangedSince(
188
- session.head_at_start || session.session_start_sha,
189
- ).catch(() => []);
190
- planAdherence = computePlanAdherenceScore({
191
- commits: summaryCommits,
192
- plan,
193
- filesChanged,
194
- });
195
- }
148
+ const planId = session._planRef?.planId
149
+ || stageResults?.huReviewer?.planId
150
+ || null;
151
+ if (planId) {
152
+ const projectDir = config?.projectDir
153
+ || session.config_snapshot?.projectDir
154
+ || process.cwd();
155
+ const plan = await loadPlan(projectDir, planId).catch(() => null);
156
+ if (plan && Array.isArray(plan.hus) && plan.hus.length > 0) {
157
+ const filesChanged = await listFilesChangedSince(
158
+ session.head_at_start || session.session_start_sha,
159
+ ).catch(() => []);
160
+ planAdherence = computePlanAdherenceScore({
161
+ commits: summaryCommits,
162
+ plan,
163
+ filesChanged,
164
+ });
196
165
  }
197
- } catch (err) {
198
- logger?.warn?.(`Plan adherence calculation skipped: ${err.message}`);
199
166
  }
200
-
201
- await writeSummaryJournalV2(journalDir, {
202
- task: session.task,
203
- result: "APPROVED",
204
- sessionId: session.id,
205
- iterations: i,
206
- durationMs: Date.now() - (session._startedAt || Date.now()),
207
- budget: budgetSummary(),
208
- stages: stageResults,
209
- commits: summaryCommits,
210
- files: journalFiles,
211
- startedAt,
212
- finishedAt: new Date().toISOString(),
213
- brainDecisions: Array.isArray(session.brainDecisions) ? session.brainDecisions.length : 0,
214
- solomonInvocations: Array.isArray(session.solomonRulings) ? session.solomonRulings.length : 0,
215
- // KJC-TSK-0327: surface skill-source decisions in the summary so the
216
- // post-mortem shows which process skills (addyosmani) and stack skills
217
- // (OpenSkills) actually shaped the role prompts.
218
- skills: {
219
- addyosmani: session.addyosmaniSkills,
220
- installed: session.autoInstalledSkills,
221
- recommended: session.skillsRecommended,
222
- },
223
- planAdherence,
224
- }, { logger });
225
- logger.info(`Session journal written to ${journalDir}`);
226
167
  } catch (err) {
227
- logger.warn(`Journal write failed (non-blocking): ${err.message}`);
168
+ logger?.warn?.(`Plan adherence calculation skipped: ${err.message}`);
228
169
  }
170
+
171
+ const { writeSessionJournal } = await import("../../session/journal/write-all.js");
172
+ await writeSessionJournal({
173
+ session, logger,
174
+ result: "APPROVED",
175
+ iterations: i,
176
+ budget: budgetSummary(),
177
+ stages: stageResults,
178
+ commits: summaryCommits,
179
+ planAdherence,
180
+ });
229
181
  }
230
182
 
231
183
  // Mirror the same enriched commit list into the session:end event so the
@@ -247,6 +247,31 @@ async function _runFlowInner({ task, config, logger, flags = {}, emitter = null,
247
247
  await sealSessionStatusIfStillRunning(ctx.session, result);
248
248
  return result;
249
249
  } finally {
250
+ // --- Journal: best-effort write for non-approved endings (KJC-BUG-0084) ---
251
+ // finalizeApprovedSession writes the journal on the happy path and sets
252
+ // session._journalWritten. Every other terminal ending (sonar_repeat
253
+ // stall, stage_error, thrown stage, budget exceeded) used to leave only
254
+ // triage.md behind — losing the Cache hits table, budget breakdown and
255
+ // commits exactly on the runs where the post-mortem matters most.
256
+ // Paused sessions are skipped: they resume later and the eventual
257
+ // finalize overwrites the journal with the real outcome.
258
+ try {
259
+ const s = ctx.session;
260
+ if (s && s._journalDir && !s._journalWritten && s.status !== "paused") {
261
+ const { writeSessionJournal } = await import("../session/journal/write-all.js");
262
+ const badge = s.status && s.status !== "running" ? s.status.toUpperCase() : "FAILED";
263
+ await writeSessionJournal({
264
+ session: s, logger,
265
+ result: badge,
266
+ iterations: s._journalIterations?.length || 0,
267
+ budget: typeof ctx.budgetSummary === "function" ? ctx.budgetSummary() : null,
268
+ stages: ctx.stageResults || {},
269
+ });
270
+ }
271
+ } catch (err) {
272
+ logger.warn(`Final journal write failed (non-blocking): ${err.message}`);
273
+ }
274
+
250
275
  // --- Cleanup auto-installed skills ---
251
276
  const autoSkills = ctx.session?.autoInstalledSkills;
252
277
  if (autoSkills && autoSkills.length > 0) {
@@ -156,11 +156,16 @@ export function detectTranscriptCdLeaks(transcript, projectDir) {
156
156
  const projectDirAbs = projectDir ? path.resolve(projectDir) : null;
157
157
  const homeDir = os.homedir();
158
158
  // Capture cd target + the next ~200 chars of the same line for write-cmd lookup.
159
- const cdRegex = /\bcd\s+(~\/[^\s&|;`'"\n]+|\$HOME\/[^\s&|;`'"\n]+|\/[^\s&|;`'"\n]+)([^\n]{0,200})/g;
159
+ // Two-step (S5843, complexity 31): capture ANY cd target with one simple
160
+ // class, then filter to the absolute/home-rooted shapes the original
161
+ // single alternation required (~/, $HOME/, /).
162
+ const cdRegex = /\bcd\s+([^\s&|;`'"\n]+)([^\n]{0,200})/g;
163
+ const absoluteTargetRe = /^(?:~\/|\$HOME\/|\/)/;
160
164
  const writeCmdRegex = /\b(mkdir|touch|cp|mv|git\s+init|(?:pnpm|npm|yarn)\s+(?:init|create)|npx\s+create|cat\s*>|echo\s+[^|]*>|>>?\s*\S)/i;
161
165
  const leaks = new Set();
162
166
  let match;
163
167
  while ((match = cdRegex.exec(transcript)) !== null) {
168
+ if (!absoluteTargetRe.test(match[1])) continue;
164
169
  const original = match[1];
165
170
  let target = original;
166
171
  const rest = match[2] || "";
@@ -11,6 +11,7 @@
11
11
 
12
12
  import { checkBinary } from "../utils/agent-detect.js";
13
13
  import { isSonarReachable, sonarUp } from "../sonar/manager.js";
14
+ import { resolveSonarProjectKey, canResolveSonarProjectKey } from "../sonar/project-key.js";
14
15
  import { runCommand } from "../utils/process.js";
15
16
  import { emitProgress, makeEvent } from "../utils/events.js";
16
17
  import { msg, getLang } from "../utils/messages.js";
@@ -137,6 +138,28 @@ async function checkSonarAuth(config) {
137
138
  return { name: "sonar-auth", ok: false, detail: "Could not validate or generate Sonar token" };
138
139
  }
139
140
 
141
+ /**
142
+ * KJC-BUG-0083 — run the real project-key resolver at preflight time so a
143
+ * repo Sonar cannot scan aborts BEFORE the first coder iteration instead
144
+ * of dying in sonar_repeat after burning tokens. Sonar stays mandatory
145
+ * for code tasks (v2.7.4 contract); this only moves the failure earlier.
146
+ */
147
+ async function checkSonarProjectKey(config) {
148
+ // No remote at all (fresh local project): the SonarStage already skips
149
+ // cleanly via canResolveSonarProjectKey, so preflight must not block.
150
+ // The hard-fail case is the inconsistent one: a remote EXISTS but the
151
+ // resolver cannot parse it — that's what looped into sonar_repeat.
152
+ if (!(await canResolveSonarProjectKey(config))) {
153
+ return { name: "sonar-project-key", ok: true, detail: "No git remote — Sonar stage will skip cleanly" };
154
+ }
155
+ try {
156
+ const key = await resolveSonarProjectKey(config);
157
+ return { name: "sonar-project-key", ok: true, detail: `Project key resolved: ${key}` };
158
+ } catch (err) {
159
+ return { name: "sonar-project-key", ok: false, detail: err.message };
160
+ }
161
+ }
162
+
140
163
  async function checkSecurityAgent(config) {
141
164
  const provider = config.roles?.security?.provider
142
165
  || config.roles?.coder?.provider
@@ -311,6 +334,34 @@ export async function runPreflightChecks({ config, logger, emitter, eventBase, r
311
334
  }
312
335
  }
313
336
 
337
+ // --- 3b. Sonar project key derivable (KJC-BUG-0083) ---
338
+ // The scanner derives its project key from git remote.origin.url. With
339
+ // an unparseable remote (local-path bare, exotic URL) and no explicit
340
+ // sonarqube.project_key, every iteration's scan threw, the run burned
341
+ // coder tokens and died in sonar_repeat. Run the REAL resolver here —
342
+ // canResolveSonarProjectKey() is weaker (any non-empty remote passes) —
343
+ // so the run fails fast with the actionable message before iteration 1.
344
+ if (sonarEnabled && result.ok) {
345
+ const keyCheck = await checkSonarProjectKey(config);
346
+ result.checks.push(keyCheck);
347
+
348
+ emitProgress(emitter, makeEvent("preflight:check", { ...eventBase, stage: "preflight" }, {
349
+ status: keyCheck.ok ? "ok" : "fail",
350
+ message: `Sonar project key: ${keyCheck.detail}`,
351
+ detail: keyCheck
352
+ }));
353
+
354
+ if (!keyCheck.ok) {
355
+ result.ok = false;
356
+ result.errors.push({
357
+ check: "sonar-project-key",
358
+ message: "Sonar cannot scan this repository: no project key can be derived.",
359
+ fix: withDocLink("Set sonarqube.project_key in kj.config.yml, or point remote.origin.url at a valid SSH/HTTPS remote.", "sonar_docker")
360
+ });
361
+ logger.error("Preflight: Sonar project key not derivable — failing fast before burning iterations");
362
+ }
363
+ }
364
+
314
365
  // --- 4. Security agent (graceful — only warning, not blocking) ---
315
366
  if (securityEnabled) {
316
367
  const secCheck = await checkSecurityAgent(config);
@@ -70,7 +70,18 @@ export function evaluateRules(context, rulesConfig = {}) {
70
70
  const styleKeywords = /\b(naming|name|rename|style|format|formatting|indent|spacing|camelCase|snake_case|convention|cosmetic|readability|comment|jsdoc|documentation|whitespace|semicolon|quotes|trailing)\b/i;
71
71
  // Anti-style: if any of these match, the issue is NOT style — it's a real correctness/security concern.
72
72
  // Fixes KJC-BUG-0026 (Solomon approving legitimate security blockers misclassified as "style").
73
- const securityKeywords = /\b(sql\s*injection|xss|csrf|ssrf|rce|injection|vulnerab|exploit|sanitiz|escape\b|encod\b|cors|auth|authn|authz|password|secret|credential|token|api[-_\s]*key|private[-_\s]*key|hash|cipher|crypto|encrypt|decrypt|tls|ssl|certificate|leak|sensitive|pii|privacy|insecure|unsafe|race[-_\s]*condition|deadlock|memory[-_\s]*leak|null[-_\s]*deref|uaf|overflow|traversal|prototype[-_\s]*pollution|deserializ|eval\b|exec\b|spawn|shell|command[-_\s]*injection)\b/i;
73
+ // Decomposed by concern (S5843, complexity 71 → 7 named groups).
74
+ // The union of tokens is byte-identical to the original alternation.
75
+ const SECURITY_KEYWORD_GROUPS = [
76
+ /\b(sql\s*injection|xss|csrf|ssrf|rce|injection|vulnerab|exploit)\b/i,
77
+ /\b(sanitiz|escape\b|encod\b|cors|traversal|prototype[-_\s]*pollution|deserializ)\b/i,
78
+ /\b(auth|authn|authz|password|secret|credential|token|api[-_\s]*key|private[-_\s]*key)\b/i,
79
+ /\b(hash|cipher|crypto|encrypt|decrypt|tls|ssl|certificate)\b/i,
80
+ /\b(leak|sensitive|pii|privacy|insecure|unsafe)\b/i,
81
+ /\b(race[-_\s]*condition|deadlock|memory[-_\s]*leak|null[-_\s]*deref|uaf|overflow)\b/i,
82
+ /\b(eval\b|exec\b|spawn|shell|command[-_\s]*injection)\b/i,
83
+ ];
84
+ const securityKeywords = { test: (text) => SECURITY_KEYWORD_GROUPS.some((re) => re.test(text)) };
74
85
  const securityCategories = new Set(["security", "correctness", "bug", "vulnerability"]);
75
86
  const styleSeverities = new Set(["low", "minor"]);
76
87
  const blockingSeverities = new Set(["critical", "high", "blocker", "major"]);
@@ -49,13 +49,10 @@ export function buildAuditPrompt({ task, instructions, dimensions = null, contex
49
49
  const stackLines = ["## Project Stack"];
50
50
  if (stack.language) stackLines.push(`- Language: ${stack.language}`);
51
51
  if (stack.frameworks?.length) stackLines.push(`- Frameworks: ${stack.frameworks.join(", ")}`);
52
- const tier = stack.isFullstack
53
- ? "fullstack (frontend + backend)"
54
- : stack.isFrontend
55
- ? "frontend-only"
56
- : stack.isBackend
57
- ? "backend-only"
58
- : "unknown";
52
+ let tier = "unknown";
53
+ if (stack.isFullstack) tier = "fullstack (frontend + backend)";
54
+ else if (stack.isFrontend) tier = "frontend-only";
55
+ else if (stack.isBackend) tier = "backend-only";
59
56
  stackLines.push(`- Tier: ${tier}`);
60
57
  if (stack.isFullstack) {
61
58
  stackLines.push("Apply BOTH backend heuristics (queries, sync I/O, caching) AND frontend heuristics (bundle size, lazy loading, render-blocking) where each layer applies.");
@@ -241,7 +238,8 @@ export function buildAuditPrompt({ task, instructions, dimensions = null, contex
241
238
  lines.push(`### ${severity} (${issues.length})`);
242
239
  const slice = issues.slice(0, Math.max(0, remaining));
243
240
  for (const issue of slice) {
244
- const loc = issue.component ? `${issue.component}${issue.line ? `:${issue.line}` : ""}` : "";
241
+ const lineSuffix = issue.line ? `:${issue.line}` : "";
242
+ const loc = issue.component ? `${issue.component}${lineSuffix}` : "";
245
243
  const rule = issue.rule ? ` [${issue.rule}]` : "";
246
244
  lines.push(` - ${loc}${rule} ${issue.message || ""}`.trim());
247
245
  }
@@ -332,8 +330,10 @@ export function buildAuditPrompt({ task, instructions, dimensions = null, contex
332
330
  lines.push(`### ${severity} (${findings.length})`);
333
331
  const slice = findings.slice(0, Math.max(0, remaining));
334
332
  for (const f of slice) {
335
- const loc = f.file ? `${f.file}${f.line ? `:${f.line}` : ""}` : "";
336
- const cwe = f.cwe ? ` (${Array.isArray(f.cwe) ? f.cwe.join(", ") : f.cwe})` : "";
333
+ const lineSuffix = f.line ? `:${f.line}` : "";
334
+ const loc = f.file ? `${f.file}${lineSuffix}` : "";
335
+ const cweText = Array.isArray(f.cwe) ? f.cwe.join(", ") : f.cwe;
336
+ const cwe = f.cwe ? ` (${cweText})` : "";
337
337
  lines.push(` - ${loc} [${f.rule}]${cwe}: ${f.message || ""}`.trim());
338
338
  }
339
339
  if (findings.length > slice.length) {
@@ -355,7 +355,8 @@ export function buildAuditPrompt({ task, instructions, dimensions = null, contex
355
355
  lines.push(`- Unused files: ${(deadExports.files || []).length}`);
356
356
  const allItems = [...(deadExports.exports || []), ...(deadExports.files || [])].slice(0, 40);
357
357
  for (const item of allItems) {
358
- const loc = `${item.path}${item.line ? `:${item.line}` : ""}`;
358
+ const lineSuffix = item.line ? `:${item.line}` : "";
359
+ const loc = `${item.path}${lineSuffix}`;
359
360
  const name = item.name ? ` \`${item.name}\`` : "";
360
361
  lines.push(` - [${item.severity}] ${loc} [${item.rule}]${name}`);
361
362
  }
@@ -29,7 +29,7 @@ const DIMENSION_KEYS = [
29
29
  * identical across batches on the same project; the stories under
30
30
  * evaluation and the per-batch additional context go last.
31
31
  */
32
- export function buildHuReviewerPromptLayout({ stories, instructions, context = null, productContext = null, domainContext = null, hu_language = "en" }) {
32
+ function buildHuReviewerPromptLayout({ stories, instructions, context = null, productContext = null, domainContext = null, hu_language = "en" }) {
33
33
  const langInstruction = getLanguageInstruction(hu_language);
34
34
 
35
35
  return buildPromptLayout([
@@ -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,
@@ -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
  }