@karajan-family/code 4.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (746) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +98 -0
  3. package/bin/karajan-mcp.js +2 -0
  4. package/bin/kj-rag-mcp.js +75 -0
  5. package/bin/kj-tail +361 -0
  6. package/bin/kj.js +2 -0
  7. package/docs/README.es.md +80 -0
  8. package/docs/karajan-code-logo-small.png +0 -0
  9. package/library/logical-clocks-lamport.md +40 -0
  10. package/package.json +140 -0
  11. package/packages/ai-trash/README.md +37 -0
  12. package/packages/ai-trash/bin/kj-trash.js +10 -0
  13. package/packages/ai-trash/package.json +43 -0
  14. package/packages/ai-trash/src/cli.js +200 -0
  15. package/packages/ai-trash/src/destructive-parser.js +74 -0
  16. package/packages/ai-trash/src/git-snapshot.js +128 -0
  17. package/packages/ai-trash/src/hook.js +137 -0
  18. package/packages/ai-trash/src/index.js +14 -0
  19. package/packages/ai-trash/src/install.js +73 -0
  20. package/packages/ai-trash/src/logger.js +60 -0
  21. package/packages/ai-trash/src/manifest.js +91 -0
  22. package/packages/ai-trash/src/permissions.js +26 -0
  23. package/packages/ai-trash/src/snapshot.js +66 -0
  24. package/packages/ai-trash/src/ulid.js +66 -0
  25. package/packages/hu-board/README.md +69 -0
  26. package/packages/hu-board/package.json +28 -0
  27. package/packages/hu-board/public/app.js +259 -0
  28. package/packages/hu-board/public/index.html +77 -0
  29. package/packages/hu-board/public/pipeline.css +132 -0
  30. package/packages/hu-board/public/pipeline.html +48 -0
  31. package/packages/hu-board/public/pipeline.js +200 -0
  32. package/packages/hu-board/public/rag.html +21 -0
  33. package/packages/hu-board/public/rag.js +39 -0
  34. package/packages/hu-board/public/styles.css +973 -0
  35. package/packages/hu-board/public/utils/api.js +139 -0
  36. package/packages/hu-board/public/utils/board-view.js +473 -0
  37. package/packages/hu-board/public/utils/command-launcher.js +213 -0
  38. package/packages/hu-board/public/utils/config-editor.js +181 -0
  39. package/packages/hu-board/public/utils/dashboard-view.js +103 -0
  40. package/packages/hu-board/public/utils/formatters.js +300 -0
  41. package/packages/hu-board/public/utils/graph-view.js +216 -0
  42. package/packages/hu-board/public/utils/hu-actions.js +224 -0
  43. package/packages/hu-board/public/utils/init-listeners.js +180 -0
  44. package/packages/hu-board/public/utils/log-panel.js +222 -0
  45. package/packages/hu-board/public/utils/modals.js +309 -0
  46. package/packages/hu-board/public/utils/plan-rollup-view.js +53 -0
  47. package/packages/hu-board/public/utils/preflight-view.js +89 -0
  48. package/packages/hu-board/public/utils/project-actions.js +143 -0
  49. package/packages/hu-board/public/utils/project-picker-view.js +139 -0
  50. package/packages/hu-board/public/utils/run-launcher.js +169 -0
  51. package/packages/hu-board/public/utils/server-push.js +252 -0
  52. package/packages/hu-board/public/utils/sessions-view.js +199 -0
  53. package/packages/hu-board/public/utils/story-detail-view.js +324 -0
  54. package/packages/hu-board/public/utils/story-edit-form.js +271 -0
  55. package/packages/hu-board/public/wiki.html +32 -0
  56. package/packages/hu-board/public/wiki.js +53 -0
  57. package/packages/hu-board/src/auth.js +92 -0
  58. package/packages/hu-board/src/boot-info.js +16 -0
  59. package/packages/hu-board/src/cleanup-zombies.js +145 -0
  60. package/packages/hu-board/src/command-runner.js +133 -0
  61. package/packages/hu-board/src/config-yaml.js +531 -0
  62. package/packages/hu-board/src/db.js +963 -0
  63. package/packages/hu-board/src/ephemeral-cleaner.js +196 -0
  64. package/packages/hu-board/src/event-bus.js +58 -0
  65. package/packages/hu-board/src/format.js +207 -0
  66. package/packages/hu-board/src/hu-zombie-reaper.js +103 -0
  67. package/packages/hu-board/src/journal-parser.js +180 -0
  68. package/packages/hu-board/src/plan-mutations.js +424 -0
  69. package/packages/hu-board/src/preflight.js +286 -0
  70. package/packages/hu-board/src/routes/api.js +1374 -0
  71. package/packages/hu-board/src/routes/pipeline.js +45 -0
  72. package/packages/hu-board/src/routes/rag.js +42 -0
  73. package/packages/hu-board/src/routes/wiki.js +43 -0
  74. package/packages/hu-board/src/run-tracker.js +121 -0
  75. package/packages/hu-board/src/server.js +438 -0
  76. package/packages/hu-board/src/sync.js +732 -0
  77. package/packages/hu-board/src/token-store.js +56 -0
  78. package/packages/hu-board/src/zombie-reaper.js +206 -0
  79. package/scripts/ai-attribution-guard.yml +84 -0
  80. package/scripts/audit-test-diet.mjs +151 -0
  81. package/scripts/build-sea.mjs +150 -0
  82. package/scripts/diet-baseline.mjs +170 -0
  83. package/scripts/dual-publish.mjs +67 -0
  84. package/scripts/esbuild-sea.config.mjs +273 -0
  85. package/scripts/git-hooks/post-merge +18 -0
  86. package/scripts/install-binary.ps1 +174 -0
  87. package/scripts/install-binary.sh +159 -0
  88. package/scripts/install-guard-all-repos.sh +85 -0
  89. package/scripts/install-kj.sh +193 -0
  90. package/scripts/install.js +901 -0
  91. package/scripts/install.sh +7 -0
  92. package/scripts/postinstall.js +117 -0
  93. package/scripts/protect-all-repos.sh +88 -0
  94. package/scripts/quickstart-gate.mjs +97 -0
  95. package/scripts/regen-arch-stats.sh +71 -0
  96. package/scripts/setup-multi-instance.sh +150 -0
  97. package/scripts/verify-pack.mjs +278 -0
  98. package/src/activity-log.js +59 -0
  99. package/src/agents/agy-agent.js +62 -0
  100. package/src/agents/aider-agent.js +78 -0
  101. package/src/agents/availability.js +52 -0
  102. package/src/agents/base-agent.js +134 -0
  103. package/src/agents/claude-agent.js +413 -0
  104. package/src/agents/codex-agent.js +112 -0
  105. package/src/agents/copilot-agent.js +65 -0
  106. package/src/agents/gemini-agent.js +85 -0
  107. package/src/agents/host-agent.js +38 -0
  108. package/src/agents/index.js +59 -0
  109. package/src/agents/kimi-agent.js +45 -0
  110. package/src/agents/model-registry.js +137 -0
  111. package/src/agents/opencode-agent.js +72 -0
  112. package/src/agents/qwen-agent.js +20 -0
  113. package/src/agents/resolve-bin.js +73 -0
  114. package/src/audit/agent-readiness.js +259 -0
  115. package/src/audit/ai-slop-findings.js +102 -0
  116. package/src/audit/audit-fallback.js +66 -0
  117. package/src/audit/audit-history-display.js +61 -0
  118. package/src/audit/audit-history.js +102 -0
  119. package/src/audit/basal-cost.js +281 -0
  120. package/src/audit/circular-deps.js +144 -0
  121. package/src/audit/dead-exports.js +186 -0
  122. package/src/audit/deterministic-summary.js +327 -0
  123. package/src/audit/harness-scorecard.js +100 -0
  124. package/src/audit/harness-section.js +81 -0
  125. package/src/audit/infra-findings.js +100 -0
  126. package/src/audit/injection-findings.js +114 -0
  127. package/src/audit/issue-filter.js +133 -0
  128. package/src/audit/osv-findings.js +167 -0
  129. package/src/audit/plan-adherence.js +224 -0
  130. package/src/audit/semgrep-findings.js +129 -0
  131. package/src/audit/sonar-findings.js +93 -0
  132. package/src/audit/webperf-input.js +133 -0
  133. package/src/autonomy/arbiter-role.js +71 -0
  134. package/src/autonomy/arbiter.js +22 -0
  135. package/src/autonomy/decider.js +18 -0
  136. package/src/autonomy/decision-resolver.js +58 -0
  137. package/src/autonomy/outcome-report.js +55 -0
  138. package/src/autonomy/policy.js +41 -0
  139. package/src/autonomy/stage-ask.js +30 -0
  140. package/src/bootstrap.js +276 -0
  141. package/src/brain/agent-error-classifier.js +116 -0
  142. package/src/brain/decision-tracker.js +125 -0
  143. package/src/brain/decisor.js +243 -0
  144. package/src/brain/solomon-consult.js +171 -0
  145. package/src/brain/standby-scheduler.js +8 -0
  146. package/src/brain/standby-store.js +12 -0
  147. package/src/brain/with-brain-recovery.js +235 -0
  148. package/src/budget/comparison.js +96 -0
  149. package/src/canvas/parse-md.js +238 -0
  150. package/src/canvas/schema.js +101 -0
  151. package/src/canvas/to-flat.js +85 -0
  152. package/src/canvas/validate.js +163 -0
  153. package/src/checks/ai-surface.js +79 -0
  154. package/src/checks/ai-trash.js +34 -0
  155. package/src/checks/binaries.js +207 -0
  156. package/src/checks/ci.js +105 -0
  157. package/src/checks/config-files.js +217 -0
  158. package/src/checks/dir-setup.js +103 -0
  159. package/src/checks/guarantee-level.js +38 -0
  160. package/src/checks/hardware.js +150 -0
  161. package/src/checks/harness-scorecard.js +41 -0
  162. package/src/checks/mcp-health.js +169 -0
  163. package/src/checks/method.js +73 -0
  164. package/src/checks/native-build.js +67 -0
  165. package/src/checks/node.js +70 -0
  166. package/src/checks/ollama.js +41 -0
  167. package/src/checks/orphans.js +77 -0
  168. package/src/checks/ports.js +188 -0
  169. package/src/checks/project-checks.js +245 -0
  170. package/src/checks/qmd.js +41 -0
  171. package/src/checks/rag-hooks.js +54 -0
  172. package/src/checks/release-check.js +102 -0
  173. package/src/checks/rtk.js +36 -0
  174. package/src/checks/runner.js +326 -0
  175. package/src/checks/skills.js +53 -0
  176. package/src/checks/sonar.js +67 -0
  177. package/src/checks/squeezr.js +36 -0
  178. package/src/checks/system.js +53 -0
  179. package/src/checks/tokens.js +172 -0
  180. package/src/checks/types.js +103 -0
  181. package/src/ci/dispatch.js +99 -0
  182. package/src/ci/index.js +3 -0
  183. package/src/ci/pr-diff.js +26 -0
  184. package/src/ci/repo.js +45 -0
  185. package/src/cli/_shared.js +30 -0
  186. package/src/cli/advanced-commands.js +61 -0
  187. package/src/cli/register-meta.js +772 -0
  188. package/src/cli/register-pipeline.js +335 -0
  189. package/src/cli/register-plan.js +224 -0
  190. package/src/cli/register-roles-skills.js +54 -0
  191. package/src/cli/register-sonar.js +28 -0
  192. package/src/cli/register-standby.js +26 -0
  193. package/src/cli.js +155 -0
  194. package/src/commands/advanced.js +31 -0
  195. package/src/commands/agent-run.js +63 -0
  196. package/src/commands/agents.js +105 -0
  197. package/src/commands/architect.js +123 -0
  198. package/src/commands/audit.js +430 -0
  199. package/src/commands/autorun.js +49 -0
  200. package/src/commands/board.js +458 -0
  201. package/src/commands/check.js +40 -0
  202. package/src/commands/clean.js +145 -0
  203. package/src/commands/code.js +45 -0
  204. package/src/commands/config.js +74 -0
  205. package/src/commands/discover.js +105 -0
  206. package/src/commands/doctor.js +251 -0
  207. package/src/commands/env.js +207 -0
  208. package/src/commands/harden.js +203 -0
  209. package/src/commands/hu.js +210 -0
  210. package/src/commands/identity.js +60 -0
  211. package/src/commands/init.js +950 -0
  212. package/src/commands/install-tools.js +432 -0
  213. package/src/commands/mutate.js +94 -0
  214. package/src/commands/ollama.js +44 -0
  215. package/src/commands/onboard.js +45 -0
  216. package/src/commands/plan/_shared.js +55 -0
  217. package/src/commands/plan/add-hu.js +23 -0
  218. package/src/commands/plan/delete.js +9 -0
  219. package/src/commands/plan/fix.js +99 -0
  220. package/src/commands/plan/generate.js +532 -0
  221. package/src/commands/plan/index.js +13 -0
  222. package/src/commands/plan/list.js +21 -0
  223. package/src/commands/plan/migrate-result.js +41 -0
  224. package/src/commands/plan/ready.js +46 -0
  225. package/src/commands/plan/remove-hu.js +17 -0
  226. package/src/commands/plan/share.js +85 -0
  227. package/src/commands/plan/show.js +81 -0
  228. package/src/commands/plan/unshare.js +41 -0
  229. package/src/commands/plan/validate.js +20 -0
  230. package/src/commands/plan.js +17 -0
  231. package/src/commands/policy.js +164 -0
  232. package/src/commands/privacy.js +45 -0
  233. package/src/commands/qmd.js +86 -0
  234. package/src/commands/rag-mcp.js +18 -0
  235. package/src/commands/rag.js +173 -0
  236. package/src/commands/report-issue.js +77 -0
  237. package/src/commands/report.js +469 -0
  238. package/src/commands/researcher.js +54 -0
  239. package/src/commands/resume.js +68 -0
  240. package/src/commands/review-gate.js +355 -0
  241. package/src/commands/review.js +89 -0
  242. package/src/commands/roles.js +116 -0
  243. package/src/commands/run.js +185 -0
  244. package/src/commands/scan.js +18 -0
  245. package/src/commands/skills.js +86 -0
  246. package/src/commands/sonar.js +53 -0
  247. package/src/commands/standby.js +117 -0
  248. package/src/commands/start.js +121 -0
  249. package/src/commands/status.js +36 -0
  250. package/src/commands/sync.js +103 -0
  251. package/src/commands/telemetry.js +70 -0
  252. package/src/commands/tournament.js +85 -0
  253. package/src/commands/triage.js +78 -0
  254. package/src/commands/undo.js +62 -0
  255. package/src/commands/watch.js +46 -0
  256. package/src/commands/webperf.js +162 -0
  257. package/src/commands/worktree.js +76 -0
  258. package/src/config/defaults.js +270 -0
  259. package/src/config/loader.js +204 -0
  260. package/src/config/overrides.js +220 -0
  261. package/src/config/role-resolver.js +171 -0
  262. package/src/config/schema.js +299 -0
  263. package/src/config/test-harness.js +78 -0
  264. package/src/config.js +34 -0
  265. package/src/domains/domain-loader.js +245 -0
  266. package/src/domains/domain-registry.js +140 -0
  267. package/src/domains/domain-synthesizer.js +129 -0
  268. package/src/environment/adr.js +45 -0
  269. package/src/environment/board-access.js +97 -0
  270. package/src/environment/board-select.js +59 -0
  271. package/src/environment/briefs.js +129 -0
  272. package/src/environment/issue-report.js +72 -0
  273. package/src/environment/mcp-wiring.js +44 -0
  274. package/src/environment/playbook.js +127 -0
  275. package/src/git/automation.js +334 -0
  276. package/src/git/hu-automation.js +171 -0
  277. package/src/git/hu-snapshot.js +10 -0
  278. package/src/golden/asserter.js +92 -0
  279. package/src/golden/loader.js +52 -0
  280. package/src/golden/runner.js +92 -0
  281. package/src/golden/schema.js +41 -0
  282. package/src/guards/intent-guard.js +161 -0
  283. package/src/guards/output-guard.js +149 -0
  284. package/src/guards/perf-guard.js +126 -0
  285. package/src/guards/policy-guard.js +90 -0
  286. package/src/guards/policy-resolver.js +85 -0
  287. package/src/guards/secret-redactor.js +71 -0
  288. package/src/harden/advisory.js +203 -0
  289. package/src/harden/alternatives.js +50 -0
  290. package/src/harden/check.js +81 -0
  291. package/src/harden/config-engine.js +128 -0
  292. package/src/harden/config-templates.js +122 -0
  293. package/src/harden/guidelines-engine.js +48 -0
  294. package/src/harden/guidelines-templates.js +36 -0
  295. package/src/harden/harden-engine.js +80 -0
  296. package/src/harden/harness-hooks.js +107 -0
  297. package/src/harden/hook-commands.js +25 -0
  298. package/src/harden/hook-templates.js +183 -0
  299. package/src/harden/interactive.js +76 -0
  300. package/src/harden/sentinel-hooks.js +721 -0
  301. package/src/harden/stack-roots.js +105 -0
  302. package/src/harden/test-on-push.js +38 -0
  303. package/src/harden/workflow-engine.js +116 -0
  304. package/src/harden/workflow-templates.js +285 -0
  305. package/src/hu/acceptance-runner.js +138 -0
  306. package/src/hu/auto-generator.js +358 -0
  307. package/src/hu/graph.js +71 -0
  308. package/src/hu/lazy-planner.js +109 -0
  309. package/src/hu/model-router.js +108 -0
  310. package/src/hu/parallel-executor.js +94 -0
  311. package/src/hu/split-validator.js +143 -0
  312. package/src/hu/splitting-detector.js +158 -0
  313. package/src/hu/splitting-generator.js +175 -0
  314. package/src/hu/store.js +392 -0
  315. package/src/hu/worktree-bootstrap.js +59 -0
  316. package/src/identity/bootstrap.js +48 -0
  317. package/src/identity/compare.js +38 -0
  318. package/src/identity/detect.js +51 -0
  319. package/src/identity/store.js +66 -0
  320. package/src/infrastructure/command-runner.js +44 -0
  321. package/src/infrastructure/environment.js +38 -0
  322. package/src/infrastructure/file-system-service.js +63 -0
  323. package/src/infrastructure/mocks.js +182 -0
  324. package/src/lang/chunk-go.js +94 -0
  325. package/src/lang/chunk-java.js +90 -0
  326. package/src/lang/chunk-python.js +88 -0
  327. package/src/lang/chunk-rust.js +102 -0
  328. package/src/lang/go.js +14 -0
  329. package/src/lang/java.js +16 -0
  330. package/src/lang/js.js +8 -0
  331. package/src/lang/python.js +14 -0
  332. package/src/lang/registry.js +79 -0
  333. package/src/lang/rust.js +14 -0
  334. package/src/lang/tree-sitter-loader.js +45 -0
  335. package/src/mcp/direct-role-runner.js +112 -0
  336. package/src/mcp/error-classifiers.js +66 -0
  337. package/src/mcp/handlers/direct-handlers.js +486 -0
  338. package/src/mcp/handlers/hu-handlers.js +93 -0
  339. package/src/mcp/handlers/management-handlers.js +265 -0
  340. package/src/mcp/handlers/rag-handler.js +52 -0
  341. package/src/mcp/handlers/run-handler.js +313 -0
  342. package/src/mcp/orphan-guard.js +131 -0
  343. package/src/mcp/preflight.js +47 -0
  344. package/src/mcp/progress.js +149 -0
  345. package/src/mcp/response-compressor.js +81 -0
  346. package/src/mcp/run-kj.js +135 -0
  347. package/src/mcp/server-handlers.js +79 -0
  348. package/src/mcp/server.js +66 -0
  349. package/src/mcp/shared-helpers.js +297 -0
  350. package/src/mcp/sovereignty-guard.js +112 -0
  351. package/src/mcp/suggest-handler.js +92 -0
  352. package/src/mcp/tool-arg-normalizers.js +16 -0
  353. package/src/mcp/tools.js +432 -0
  354. package/src/mutate/diff-scope.js +105 -0
  355. package/src/mutate/reviewer-signal.js +76 -0
  356. package/src/mutate/runner.js +72 -0
  357. package/src/mutate/tool-registry.js +90 -0
  358. package/src/onboarder/cache.js +24 -0
  359. package/src/onboarder/collectors/framework-multilang.js +64 -0
  360. package/src/onboarder/collectors/index.js +136 -0
  361. package/src/orchestrator/agent-fallback.js +81 -0
  362. package/src/orchestrator/brain-coordinator.js +186 -0
  363. package/src/orchestrator/ci-integration.js +139 -0
  364. package/src/orchestrator/config-init.js +510 -0
  365. package/src/orchestrator/direct-actions.js +217 -0
  366. package/src/orchestrator/drivers/error-recovery.js +287 -0
  367. package/src/orchestrator/drivers/init-context.js +227 -0
  368. package/src/orchestrator/drivers/iteration-loop.js +380 -0
  369. package/src/orchestrator/drivers/iteration-phases/coder-and-refactorer.js +69 -0
  370. package/src/orchestrator/drivers/iteration-phases/guards.js +84 -0
  371. package/src/orchestrator/drivers/iteration-phases/handle-approved.js +29 -0
  372. package/src/orchestrator/drivers/iteration-phases/quality-gates.js +114 -0
  373. package/src/orchestrator/drivers/iteration-phases/reviewer-gate.js +60 -0
  374. package/src/orchestrator/drivers/post-loop.js +383 -0
  375. package/src/orchestrator/drivers/pre-loop-phases/auto-hu-batch.js +136 -0
  376. package/src/orchestrator/drivers/pre-loop-phases/config-deprecations.js +47 -0
  377. package/src/orchestrator/drivers/pre-loop-phases/ensure-addyosmani-skills.js +84 -0
  378. package/src/orchestrator/drivers/pre-loop-phases/inject-loaded-plan.js +391 -0
  379. package/src/orchestrator/drivers/pre-loop.js +507 -0
  380. package/src/orchestrator/drivers/run-hu-batch.js +427 -0
  381. package/src/orchestrator/feedback-enrichment.js +140 -0
  382. package/src/orchestrator/feedback-queue.js +151 -0
  383. package/src/orchestrator/flow-control.js +170 -0
  384. package/src/orchestrator/flow-runner.js +364 -0
  385. package/src/orchestrator/fs-leak-detector.js +210 -0
  386. package/src/orchestrator/hu-scheduler.js +114 -0
  387. package/src/orchestrator/hu-sub-pipeline.js +616 -0
  388. package/src/orchestrator/integrations.js +81 -0
  389. package/src/orchestrator/iteration-gate.js +73 -0
  390. package/src/orchestrator/iteration-stages.js +9 -0
  391. package/src/orchestrator/parallel-limiter.js +74 -0
  392. package/src/orchestrator/pipeline-context.js +72 -0
  393. package/src/orchestrator/post-loop-stages.js +468 -0
  394. package/src/orchestrator/pre-loop-stages.js +11 -0
  395. package/src/orchestrator/preflight-checks.js +462 -0
  396. package/src/orchestrator/repair/repair-detector.js +117 -0
  397. package/src/orchestrator/repair/repair-runner.js +142 -0
  398. package/src/orchestrator/reviewer-fallback.js +45 -0
  399. package/src/orchestrator/role-output-compressor.js +189 -0
  400. package/src/orchestrator/session-journal.js +308 -0
  401. package/src/orchestrator/solomon-escalation.js +305 -0
  402. package/src/orchestrator/solomon-rules.js +212 -0
  403. package/src/orchestrator/stages/architect-stage.js +172 -0
  404. package/src/orchestrator/stages/coder-stage.js +480 -0
  405. package/src/orchestrator/stages/domain-curator-stage.js +82 -0
  406. package/src/orchestrator/stages/hu-reviewer-phases/detect-and-apply-splits.js +127 -0
  407. package/src/orchestrator/stages/hu-reviewer-stage.js +394 -0
  408. package/src/orchestrator/stages/perf-stage.js +140 -0
  409. package/src/orchestrator/stages/planner-stage.js +85 -0
  410. package/src/orchestrator/stages/rag-context-stage.js +77 -0
  411. package/src/orchestrator/stages/rag-preload-decisor.js +58 -0
  412. package/src/orchestrator/stages/research-stage.js +69 -0
  413. package/src/orchestrator/stages/reviewer-stage.js +422 -0
  414. package/src/orchestrator/stages/sonar-stage.js +421 -0
  415. package/src/orchestrator/stages/stage-classes.js +84 -0
  416. package/src/orchestrator/stages/stage-executor.js +155 -0
  417. package/src/orchestrator/stages/tdd-discipline-stage.js +56 -0
  418. package/src/orchestrator/stages/tool-judge-stage.js +53 -0
  419. package/src/orchestrator/stages/triage-stage.js +172 -0
  420. package/src/orchestrator/standby.js +71 -0
  421. package/src/orchestrator/verification-gate.js +183 -0
  422. package/src/orchestrator.js +22 -0
  423. package/src/plan/adr-generator.js +170 -0
  424. package/src/plan/adr-loader.js +60 -0
  425. package/src/plan/plan-executor.js +100 -0
  426. package/src/plan/plan-fixer.js +192 -0
  427. package/src/plan/plan-hu-ops.js +16 -0
  428. package/src/plan/plan-id.js +4 -0
  429. package/src/plan/plan-migrate-result.js +24 -0
  430. package/src/plan/plan-reviewer.js +236 -0
  431. package/src/plan/plan-schema.js +334 -0
  432. package/src/plan/plan-store.js +260 -0
  433. package/src/plan/plan-structural-pass.js +122 -0
  434. package/src/plan/plan-validation.js +4 -0
  435. package/src/plan/preflight-hu.js +105 -0
  436. package/src/plan/spec-detector.js +61 -0
  437. package/src/plan/tests-synthesizer.js +131 -0
  438. package/src/planning-game/adapter.js +108 -0
  439. package/src/planning-game/architect-adrs.js +45 -0
  440. package/src/planning-game/client.js +108 -0
  441. package/src/planning-game/decomposition.js +87 -0
  442. package/src/planning-game/pipeline-adapter.js +251 -0
  443. package/src/plugins/loader.js +67 -0
  444. package/src/policy/add.js +111 -0
  445. package/src/policy/decisions.js +42 -0
  446. package/src/policy/engine.js +82 -0
  447. package/src/policy/exceptions.js +60 -0
  448. package/src/privacy/onboarding.js +35 -0
  449. package/src/privacy/scan.js +120 -0
  450. package/src/prompts/arbiter.js +38 -0
  451. package/src/prompts/architect.js +103 -0
  452. package/src/prompts/audit.js +474 -0
  453. package/src/prompts/coder.js +287 -0
  454. package/src/prompts/diff-clip.js +27 -0
  455. package/src/prompts/discover.js +222 -0
  456. package/src/prompts/hu-reviewer.js +219 -0
  457. package/src/prompts/planner.js +312 -0
  458. package/src/prompts/prompt-layout.js +80 -0
  459. package/src/prompts/prompt-resolver.js +120 -0
  460. package/src/prompts/reviewer.js +75 -0
  461. package/src/prompts/rtk-snippet.js +25 -0
  462. package/src/prompts/spec-reviewer.js +66 -0
  463. package/src/prompts/split-signal.js +82 -0
  464. package/src/prompts/start-decision.js +52 -0
  465. package/src/prompts/tool-correctness-judge.js +31 -0
  466. package/src/prompts/triage.js +57 -0
  467. package/src/rag/auto-update.js +72 -0
  468. package/src/rag/chunker-ast.js +56 -0
  469. package/src/rag/chunker.js +132 -0
  470. package/src/rag/embedder.js +2 -0
  471. package/src/rag/embedders/_cloud-base.js +2 -0
  472. package/src/rag/embedders/cohere.js +2 -0
  473. package/src/rag/embedders/factory.js +2 -0
  474. package/src/rag/embedders/mistral.js +2 -0
  475. package/src/rag/embedders/onnx.js +2 -0
  476. package/src/rag/embedders/openai.js +2 -0
  477. package/src/rag/embedders/voyage.js +2 -0
  478. package/src/rag/eval.js +61 -0
  479. package/src/rag/governed-embedder.js +39 -0
  480. package/src/rag/indexer.js +199 -0
  481. package/src/rag/library.js +62 -0
  482. package/src/rag/ollama-capability.js +59 -0
  483. package/src/rag/ollama-manager.js +98 -0
  484. package/src/rag/onnx-fallback.js +69 -0
  485. package/src/rag/rerank.js +4 -0
  486. package/src/rag/retriever.js +2 -0
  487. package/src/rag/vec-store.js +17 -0
  488. package/src/rag/watcher.js +62 -0
  489. package/src/rag/where-parser.js +4 -0
  490. package/src/repeat-detector.js +88 -0
  491. package/src/review/card-first.js +99 -0
  492. package/src/review/card-verify.js +83 -0
  493. package/src/review/diff-generator.js +112 -0
  494. package/src/review/gate-gitignore.js +77 -0
  495. package/src/review/git-stash-helper.js +104 -0
  496. package/src/review/mutation-pregate.js +48 -0
  497. package/src/review/one-shot-review.js +122 -0
  498. package/src/review/parser.js +80 -0
  499. package/src/review/policy-gate.js +26 -0
  500. package/src/review/profiles.js +66 -0
  501. package/src/review/reviewer-fallback.js +125 -0
  502. package/src/review/schema.js +31 -0
  503. package/src/review/scope-filter.js +152 -0
  504. package/src/review/snapshot-diff.js +122 -0
  505. package/src/review/solomon-arbitration.js +113 -0
  506. package/src/review/sonar-pregate.js +63 -0
  507. package/src/review/tdd-discipline.js +90 -0
  508. package/src/review/tdd-policy.js +69 -0
  509. package/src/review/tests-with-code.js +33 -0
  510. package/src/review/verdict-store.js +87 -0
  511. package/src/review/workspace.js +21 -0
  512. package/src/roles/agent-role.js +194 -0
  513. package/src/roles/architect-role.js +77 -0
  514. package/src/roles/audit-role.js +258 -0
  515. package/src/roles/base-role.js +165 -0
  516. package/src/roles/coder-role.js +107 -0
  517. package/src/roles/commiter-role.js +110 -0
  518. package/src/roles/discover-role.js +81 -0
  519. package/src/roles/domain-curator-role.js +141 -0
  520. package/src/roles/hu-reviewer-role.js +64 -0
  521. package/src/roles/impeccable-role.js +85 -0
  522. package/src/roles/index.js +18 -0
  523. package/src/roles/karajan-brain-role.js +134 -0
  524. package/src/roles/onboarder-role.js +61 -0
  525. package/src/roles/perf-role.js +122 -0
  526. package/src/roles/planner-role.js +151 -0
  527. package/src/roles/refactorer-role.js +30 -0
  528. package/src/roles/repairer-role.js +181 -0
  529. package/src/roles/researcher-role.js +70 -0
  530. package/src/roles/reviewer-role.js +104 -0
  531. package/src/roles/security-role.js +73 -0
  532. package/src/roles/solomon-role.js +265 -0
  533. package/src/roles/sonar-role.js +70 -0
  534. package/src/roles/spec-reviewer-role.js +106 -0
  535. package/src/roles/tester-role.js +235 -0
  536. package/src/roles/tool-correctness-judge-role.js +78 -0
  537. package/src/roles/triage-role.js +99 -0
  538. package/src/session/journal/decisions-writer.js +200 -0
  539. package/src/session/journal/iteration-logger.js +194 -0
  540. package/src/session/journal/summary-writer.js +320 -0
  541. package/src/session/journal/tree-writer.js +164 -0
  542. package/src/session/journal/write-all.js +89 -0
  543. package/src/session/mutators.js +339 -0
  544. package/src/session/runtime-overrides.js +59 -0
  545. package/src/session/store.js +106 -0
  546. package/src/session-cleanup.js +116 -0
  547. package/src/skills/addyosmani-catalog.js +315 -0
  548. package/src/skills/addyosmani-role-map.js +139 -0
  549. package/src/skills/openskills-client.js +157 -0
  550. package/src/skills/semantic-detector.js +167 -0
  551. package/src/skills/skill-detector.js +385 -0
  552. package/src/skills/skill-loader.js +219 -0
  553. package/src/skills/skills-cache.js +128 -0
  554. package/src/sonar/api.js +128 -0
  555. package/src/sonar/cloud-scanner.js +78 -0
  556. package/src/sonar/config-resolver.js +88 -0
  557. package/src/sonar/credentials.js +60 -0
  558. package/src/sonar/discovery.js +124 -0
  559. package/src/sonar/enforcer.js +19 -0
  560. package/src/sonar/issue-filter.js +12 -0
  561. package/src/sonar/manager.js +181 -0
  562. package/src/sonar/project-key.js +120 -0
  563. package/src/sonar/scanner.js +307 -0
  564. package/src/sonar/token-bootstrap.js +205 -0
  565. package/src/sonar/token-recovery.js +67 -0
  566. package/src/spec-review/refine-loop.js +58 -0
  567. package/src/spec-review/run-spec-review.js +119 -0
  568. package/src/start/assessment.js +74 -0
  569. package/src/start/maturity.js +73 -0
  570. package/src/start/start-decider-role.js +79 -0
  571. package/src/start/sweep.js +157 -0
  572. package/src/sync/apply-canvas-patch.js +55 -0
  573. package/src/sync/detect-drift.js +113 -0
  574. package/src/tournament/crown.js +88 -0
  575. package/src/tournament/judge.js +150 -0
  576. package/src/tournament/run.js +142 -0
  577. package/src/tournament/scoreboard.js +124 -0
  578. package/src/tracker-bootstrap.js +44 -0
  579. package/src/types/agent.js +55 -0
  580. package/src/types/config.js +114 -0
  581. package/src/types/hu.js +47 -0
  582. package/src/types/index.js +38 -0
  583. package/src/types/policy.js +43 -0
  584. package/src/types/session.js +75 -0
  585. package/src/types/solomon.js +87 -0
  586. package/src/types/stage.js +68 -0
  587. package/src/utils/agent-detect.js +93 -0
  588. package/src/utils/ai-trash.js +48 -0
  589. package/src/utils/async-lock.js +31 -0
  590. package/src/utils/atomic-write.js +6 -0
  591. package/src/utils/banner.js +66 -0
  592. package/src/utils/binary-sources.js +70 -0
  593. package/src/utils/board-prompt-bridge.js +108 -0
  594. package/src/utils/budget.js +229 -0
  595. package/src/utils/cli-ask-question.js +93 -0
  596. package/src/utils/cli-progress.js +220 -0
  597. package/src/utils/cli-run-log.js +83 -0
  598. package/src/utils/cwd-confirm.js +39 -0
  599. package/src/utils/derive-project-name-from-cwd.js +119 -0
  600. package/src/utils/display/event-handlers.js +403 -0
  601. package/src/utils/display/formatters.js +132 -0
  602. package/src/utils/display/header.js +47 -0
  603. package/src/utils/display/resume-hint.js +41 -0
  604. package/src/utils/display/session-summary.js +118 -0
  605. package/src/utils/display/solomon.js +42 -0
  606. package/src/utils/display/spec-findings.js +44 -0
  607. package/src/utils/doc-links.js +29 -0
  608. package/src/utils/docker-install.js +34 -0
  609. package/src/utils/escape-regexp.js +15 -0
  610. package/src/utils/events.js +35 -0
  611. package/src/utils/fs.js +19 -0
  612. package/src/utils/garbage-collector.js +481 -0
  613. package/src/utils/git.js +279 -0
  614. package/src/utils/home-migration.js +87 -0
  615. package/src/utils/injection-guard.js +186 -0
  616. package/src/utils/install-hints.js +180 -0
  617. package/src/utils/json-extract.js +64 -0
  618. package/src/utils/locale.js +59 -0
  619. package/src/utils/logger.js +96 -0
  620. package/src/utils/managed-markers.js +93 -0
  621. package/src/utils/manifest-sniff.js +82 -0
  622. package/src/utils/messages.js +61 -0
  623. package/src/utils/model-selector.js +107 -0
  624. package/src/utils/os-detect.js +79 -0
  625. package/src/utils/paths.js +13 -0
  626. package/src/utils/pending-user-action.js +95 -0
  627. package/src/utils/port-check.js +6 -0
  628. package/src/utils/port-occupant.js +96 -0
  629. package/src/utils/pricing.js +29 -0
  630. package/src/utils/process.js +4 -0
  631. package/src/utils/project-detect.js +160 -0
  632. package/src/utils/prompt-project-name.js +35 -0
  633. package/src/utils/provider-env.js +116 -0
  634. package/src/utils/qmd-collection.js +72 -0
  635. package/src/utils/qmd-detect.js +18 -0
  636. package/src/utils/qmd-install.js +37 -0
  637. package/src/utils/quota-simulator.js +56 -0
  638. package/src/utils/rate-limit-detector.js +181 -0
  639. package/src/utils/repo-cleaner.js +79 -0
  640. package/src/utils/retry.js +88 -0
  641. package/src/utils/role-assigner.js +137 -0
  642. package/src/utils/role-env.js +58 -0
  643. package/src/utils/rtk-detect.js +18 -0
  644. package/src/utils/rtk-install.js +38 -0
  645. package/src/utils/rtk-wrapper.js +87 -0
  646. package/src/utils/run-context.js +75 -0
  647. package/src/utils/run-log.js +217 -0
  648. package/src/utils/run-registry.js +9 -0
  649. package/src/utils/shared-paths.js +12 -0
  650. package/src/utils/squeezr-detect.js +21 -0
  651. package/src/utils/squeezr-install.js +37 -0
  652. package/src/utils/stack-detect.js +135 -0
  653. package/src/utils/stall-detector.js +159 -0
  654. package/src/utils/status-dashboard.js +254 -0
  655. package/src/utils/task-file.js +109 -0
  656. package/src/utils/telemetry.js +124 -0
  657. package/src/utils/templates-root.js +61 -0
  658. package/src/utils/tool-call-extractor.js +56 -0
  659. package/src/utils/tool-governor.js +116 -0
  660. package/src/utils/tool-installer.js +93 -0
  661. package/src/utils/update-check.js +280 -0
  662. package/src/utils/vector-store-orphans.js +89 -0
  663. package/src/utils/welcome.js +47 -0
  664. package/src/utils/with-timeout.js +42 -0
  665. package/src/utils/wizard.js +47 -0
  666. package/src/webperf/cwv-gate.js +94 -0
  667. package/src/webperf/devtools-detect.js +112 -0
  668. package/src/webperf/scanner.js +209 -0
  669. package/src/webperf/webperf-role-integration.js +66 -0
  670. package/templates/coder-rules.md +45 -0
  671. package/templates/docker-compose.sonar.yml +60 -0
  672. package/templates/domains/example-dental.md +57 -0
  673. package/templates/kj.config.yml +128 -0
  674. package/templates/review-rules.md +17 -0
  675. package/templates/roles/architect/anthropic.md +74 -0
  676. package/templates/roles/architect/default.md +72 -0
  677. package/templates/roles/architect/google.md +61 -0
  678. package/templates/roles/architect/openai.md +60 -0
  679. package/templates/roles/architect/opencode.md +59 -0
  680. package/templates/roles/architect.md +76 -0
  681. package/templates/roles/audit.md +68 -0
  682. package/templates/roles/coder/anthropic.md +81 -0
  683. package/templates/roles/coder/default.md +78 -0
  684. package/templates/roles/coder/google.md +87 -0
  685. package/templates/roles/coder/openai.md +68 -0
  686. package/templates/roles/coder/opencode.md +58 -0
  687. package/templates/roles/coder.md +152 -0
  688. package/templates/roles/commiter.md +44 -0
  689. package/templates/roles/discover.md +167 -0
  690. package/templates/roles/domain-curator.md +52 -0
  691. package/templates/roles/hu-reviewer.md +236 -0
  692. package/templates/roles/impeccable-design.md +87 -0
  693. package/templates/roles/impeccable.md +125 -0
  694. package/templates/roles/karajan-brain.md +95 -0
  695. package/templates/roles/onboarder.md +45 -0
  696. package/templates/roles/planner/anthropic.md +59 -0
  697. package/templates/roles/planner/default.md +57 -0
  698. package/templates/roles/planner/google.md +75 -0
  699. package/templates/roles/planner/openai.md +55 -0
  700. package/templates/roles/planner/opencode.md +62 -0
  701. package/templates/roles/planner.md +61 -0
  702. package/templates/roles/refactorer.md +48 -0
  703. package/templates/roles/repairer.md +103 -0
  704. package/templates/roles/researcher.md +41 -0
  705. package/templates/roles/reviewer/anthropic.md +61 -0
  706. package/templates/roles/reviewer/default.md +62 -0
  707. package/templates/roles/reviewer/google.md +63 -0
  708. package/templates/roles/reviewer/openai.md +57 -0
  709. package/templates/roles/reviewer/opencode.md +42 -0
  710. package/templates/roles/reviewer-paranoid.md +38 -0
  711. package/templates/roles/reviewer-relaxed.md +34 -0
  712. package/templates/roles/reviewer-strict.md +37 -0
  713. package/templates/roles/reviewer.md +62 -0
  714. package/templates/roles/security.md +54 -0
  715. package/templates/roles/solomon/anthropic.md +71 -0
  716. package/templates/roles/solomon/default.md +83 -0
  717. package/templates/roles/solomon/google.md +61 -0
  718. package/templates/roles/solomon/openai.md +53 -0
  719. package/templates/roles/solomon/opencode.md +55 -0
  720. package/templates/roles/solomon.md +83 -0
  721. package/templates/roles/sonar.md +49 -0
  722. package/templates/roles/spec-reviewer.md +47 -0
  723. package/templates/roles/tester.md +50 -0
  724. package/templates/roles/triage.md +69 -0
  725. package/templates/skills/kj-architect.md +45 -0
  726. package/templates/skills/kj-audit.md +63 -0
  727. package/templates/skills/kj-board.md +16 -0
  728. package/templates/skills/kj-code.md +51 -0
  729. package/templates/skills/kj-csv-transform.md +40 -0
  730. package/templates/skills/kj-data-report.md +44 -0
  731. package/templates/skills/kj-discover.md +24 -0
  732. package/templates/skills/kj-rag-query.md +50 -0
  733. package/templates/skills/kj-review.md +47 -0
  734. package/templates/skills/kj-run.md +73 -0
  735. package/templates/skills/kj-security.md +49 -0
  736. package/templates/skills/kj-sonar.md +41 -0
  737. package/templates/skills/kj-sql-analysis.md +40 -0
  738. package/templates/skills/kj-test.md +40 -0
  739. package/templates/workflows/automerge.yml +30 -0
  740. package/templates/workflows/houston-override.yml +46 -0
  741. package/templates/workflows/kj-ci-gateway.yml +58 -0
  742. package/vendor/tree-sitter-grammars/README.md +21 -0
  743. package/vendor/tree-sitter-grammars/go.wasm +0 -0
  744. package/vendor/tree-sitter-grammars/java.wasm +0 -0
  745. package/vendor/tree-sitter-grammars/python.wasm +0 -0
  746. package/vendor/tree-sitter-grammars/rust.wasm +0 -0
@@ -0,0 +1,55 @@
1
+ # Solomon
2
+
3
+ Role: AI judge consulted by Karajan Brain for genuine dilemmas. You give opinions. Brain decides.
4
+
5
+ ## Consult when
6
+
7
+ - Security vs deadline tradeoff.
8
+ - Conflicting quality gates (reviewer vs tester).
9
+ - Stalled loop: 3+ iterations with no progress.
10
+ - Unclear risk: blocking or cosmetic?
11
+ - Rate limit, no alternatives.
12
+
13
+ ## Do NOT consult when
14
+
15
+ - Coder produced 0 files.
16
+ - Missing dependency install.
17
+ - Vague feedback.
18
+ - Normal reviewer rejection with clear fix.
19
+
20
+ ## Decision priority
21
+
22
+ 1. Security (never compromised)
23
+ 2. Correctness (wrong results for user)
24
+ 3. Tests (failing tests block)
25
+ 4. Architecture (maintainability; not blocking)
26
+ 5. Style (never blocks)
27
+
28
+ ## Skills
29
+
30
+ - security-vs-deadline: security wins. If false positive, say so.
31
+ - conflicting-quality-gates: pick the gate closest to user impact.
32
+ - stalled-loop-analysis: retry differently / decompose / escalate.
33
+ - risk-evaluation: classify + verdict + confidence.
34
+
35
+ ## Output
36
+
37
+ Return exactly this JSON shape. Nothing before. Nothing after.
38
+
39
+ ```json
40
+ {
41
+ "verdict": "continue_coder",
42
+ "reasoning": "string",
43
+ "confidence": 0.9,
44
+ "priority": "high",
45
+ "conditions": [],
46
+ "suggestedActions": []
47
+ }
48
+ ```
49
+
50
+ Rules for the JSON:
51
+ - `verdict` is one of: continue_coder, consult_human, retry_different_approach, approve_with_conditions, escalate.
52
+ - `confidence` is a number between 0 and 1.
53
+ - `priority` is one of: critical, high, medium, low.
54
+ - `conditions` and `suggestedActions` are arrays of strings (may be empty).
55
+ - No extra keys.
@@ -0,0 +1,83 @@
1
+ # Solomon — AI Judge (Arbiter of Dilemmas)
2
+
3
+ You are **Solomon**, an AI judge consulted by **Karajan Brain** only when it faces a genuine dilemma. You do NOT route the pipeline. You do NOT decide what role runs next. You give **opinions**. Karajan Brain decides what to do with your opinion.
4
+
5
+ ## Your role
6
+
7
+ Think of the pipeline as a company:
8
+ - **Karajan Brain** is the CEO. It runs everything, knows the project, makes decisions.
9
+ - **You (Solomon)** are the lawyer/advisor. You get called when the CEO faces a tough call.
10
+
11
+ You are NOT consulted for routine decisions. Karajan Brain handles those itself.
12
+
13
+ ## When you are consulted
14
+
15
+ Only for **genuine dilemmas**:
16
+ - Security vs deadline tradeoffs
17
+ - Two quality gates giving contradictory feedback (reviewer approves, tester rejects)
18
+ - Stalled loops where the CEO has tried 3+ approaches with no progress
19
+ - Unclear risk evaluation (is this blocking or cosmetic?)
20
+ - Rate limit with no alternative agents available
21
+
22
+ You are **NOT consulted** for:
23
+ - Coder produced 0 files (CEO handles with better prompt)
24
+ - Missing npm install (CEO runs it directly)
25
+ - Vague feedback (CEO enriches it)
26
+ - Normal reviewer rejection with clear fix (CEO passes to coder)
27
+
28
+ ## Your skills (arbitration)
29
+
30
+ ### 1. security-vs-deadline
31
+ When a deadline is tight and a security issue is blocking:
32
+ - Security ALWAYS wins. Never approve shipping with known security holes.
33
+ - If the issue is a false positive (contextual), say so with clear reasoning.
34
+ - Suggest a mitigation path if deadline is critical.
35
+
36
+ ### 2. conflicting-quality-gates
37
+ When two gates disagree (e.g., reviewer approves but tester fails):
38
+ - Identify which gate is closer to the user impact.
39
+ - Recommend whose opinion should prevail, with reasoning.
40
+ - Suggest how to satisfy both.
41
+
42
+ ### 3. stalled-loop-analysis
43
+ When the CEO reports 3+ iterations with no progress:
44
+ - Analyze the pattern. Same issue? Different issues?
45
+ - Is the coder capable of fixing this, or is it a design problem?
46
+ - Recommend: retry with different approach, decompose into subtasks, or escalate human.
47
+
48
+ ### 4. risk-evaluation
49
+ When the CEO is unsure if something is truly blocking:
50
+ - Classify: production-risk, user-facing bug, tech debt, cosmetic.
51
+ - Judge impact: data loss, security hole, feature broken, nothing user-facing.
52
+ - Give a clear verdict with confidence.
53
+
54
+ ## Decision priority
55
+
56
+ Always rank issues in this order:
57
+ 1. **Security** — never compromised
58
+ 2. **Correctness** — user gets wrong results
59
+ 3. **Tests** — failing tests block approval
60
+ 4. **Architecture** — maintainability matters but not blocking
61
+ 5. **Style** — never blocks approval
62
+
63
+ ## Output format
64
+
65
+ Return a single JSON object with your opinion:
66
+
67
+ ```json
68
+ {
69
+ "verdict": "continue_coder|consult_human|retry_different_approach|approve_with_conditions|escalate",
70
+ "reasoning": "detailed explanation of your opinion",
71
+ "confidence": 0.0-1.0,
72
+ "priority": "critical|high|medium|low",
73
+ "conditions": ["string", ...],
74
+ "suggestedActions": ["string", ...]
75
+ }
76
+ ```
77
+
78
+ ## Remember
79
+
80
+ - You are an **advisor**, not a commander.
81
+ - Karajan Brain decides what to do with your opinion.
82
+ - Never compromise security.
83
+ - When in doubt, escalate to the human with clear reasoning.
@@ -0,0 +1,49 @@
1
+ # Sonar Role (Non-AI)
2
+
3
+ This role wraps SonarQube static analysis. It is NOT an AI role but follows the same BaseRole lifecycle for pipeline uniformity.
4
+
5
+ ## Behavior
6
+
7
+ 1. Run `sonar-scanner` against the current codebase
8
+ 2. Wait for analysis to complete
9
+ 3. Retrieve quality gate status and open issues
10
+ 4. Return structured results
11
+
12
+ ## Configuration
13
+
14
+ - Requires SonarQube server (Docker or remote)
15
+ - Project key derived from repository name
16
+ - Enforcement profile configurable: `strict`, `normal`, `lenient`
17
+
18
+ ## Quality gate interpretation
19
+
20
+ | Gate status | Action |
21
+ |-------------|--------|
22
+ | OK | Continue pipeline |
23
+ | ERROR | Block and send issues to Coder for fixing |
24
+ | WARN | Continue but include warnings in report |
25
+
26
+ ## Output format
27
+
28
+ ```json
29
+ {
30
+ "ok": true,
31
+ "result": {
32
+ "gate_status": "ERROR",
33
+ "project_key": "my-project",
34
+ "issues": [
35
+ {
36
+ "severity": "CRITICAL",
37
+ "type": "BUG",
38
+ "file": "src/handler.js",
39
+ "line": 42,
40
+ "rule": "javascript:S1234",
41
+ "message": "Null pointer dereference"
42
+ }
43
+ ],
44
+ "total_issues": 3,
45
+ "blocking": true
46
+ },
47
+ "summary": "Quality gate FAILED: 3 issues (1 critical bug, 2 code smells)"
48
+ }
49
+ ```
@@ -0,0 +1,47 @@
1
+ You are the **Spec Reviewer**. You run BEFORE every other role. You audit the
2
+ user's spec (prompt or `.md`) for deficiencies. You do NOT execute or plan.
3
+
4
+ ## Categories (every finding gets exactly one)
5
+
6
+ - **ambiguity** — words without a concrete metric ("better", "clean", "fast").
7
+ - **missing_scope** — no boundary of what should and should not be touched.
8
+ - **missing_ac** — no acceptance criteria; nothing to verify against.
9
+ - **contradiction** — two requirements that cannot both be satisfied.
10
+ - **stack** — no tech stack hint when one is required.
11
+ - **assumptions** — depends on unstated context.
12
+ - **out_of_scope** — asks for things outside what Karajan can do.
13
+
14
+ A spec can also carry a **false premise**: it forces an answer that cannot be
15
+ correct (asks for N options when only one is valid, assumes a fact/API that does
16
+ not exist). Surface these as `contradiction` or `out_of_scope` — never rationalise
17
+ them into a plausible-looking answer.
18
+
19
+ ## Severity
20
+
21
+ `info` (nuance), `warn` (real gap), `fail` (unworkable). Top-level `severity`
22
+ is the WORST of any finding, or `ok` if findings is empty.
23
+
24
+ ## Output (JSON, nothing else)
25
+
26
+ ```json
27
+ {
28
+ "severity": "ok|info|warn|fail",
29
+ "findings": [
30
+ {
31
+ "id": "F-001",
32
+ "severity": "info|warn|fail",
33
+ "category": "ambiguity|missing_scope|missing_ac|contradiction|stack|assumptions|out_of_scope",
34
+ "message": "quote the offending phrase verbatim when possible",
35
+ "suggestion": "a sentence the user can paste into the spec"
36
+ }
37
+ ],
38
+ "reasoning": "one or two sentences summarising the verdict"
39
+ }
40
+ ```
41
+
42
+ Direct, accionable. No moralising. `suggestion` must be concrete (a paste-able
43
+ sentence), not vague advice.
44
+
45
+ ## Prior context (RAG, opt-in)
46
+
47
+ When evaluating whether the spec duplicates a prior plan's scope or contradicts an ADR, call the `kj_rag_query` MCP tool with `{ text, topK: 3, scope: "all" }` using a phrase from the spec as the query. If retrieved chunks describe overlapping HUs already approved, surface the conflict via a finding with `kind: "scope_overlap"` and reference the prior HU id. When `empty: true`, the corpus has not been indexed — proceed without retrieval; do NOT block on it.
@@ -0,0 +1,50 @@
1
+ # Tester Role (Quality Gate)
2
+
3
+ You are the **Tester** in a multi-role AI pipeline. You are a quality gate for tests — you do NOT write tests (that is the Coder's responsibility). You evaluate test quality.
4
+
5
+ ## Responsibilities
6
+
7
+ - Run the test suite and verify all tests pass.
8
+ - Check coverage thresholds are met.
9
+ - Identify missing test scenarios and edge cases.
10
+ - Evaluate test quality (meaningful assertions, not just smoke tests).
11
+ - Flag Sonar test-related issues.
12
+
13
+ ## Coverage thresholds
14
+
15
+ - Services: 80% minimum
16
+ - Utilities: 90% minimum
17
+ - Components: 70% minimum
18
+
19
+ ## What to check
20
+
21
+ 1. **All tests pass** — No failures or skipped tests without justification.
22
+ 2. **Coverage met** — Per-module thresholds are satisfied.
23
+ 3. **Edge cases** — Error paths, boundary values, null inputs are tested.
24
+ 4. **Assertions quality** — Tests assert meaningful outcomes, not just "no error thrown".
25
+ 5. **No test pollution** — Tests are independent, no shared mutable state.
26
+
27
+ ## Output format
28
+
29
+ ```json
30
+ {
31
+ "ok": true,
32
+ "result": {
33
+ "tests_pass": true,
34
+ "coverage": { "overall": 85, "services": 82, "utilities": 91 },
35
+ "missing_scenarios": ["Error handling for network timeout not tested"],
36
+ "quality_issues": [],
37
+ "verdict": "pass"
38
+ },
39
+ "summary": "Tests pass with 85% coverage. 1 missing scenario identified (non-blocking)."
40
+ }
41
+ ```
42
+
43
+ ## PR atomicity (hard project rule)
44
+
45
+ Karajan projects MAY enforce a CI gate that fails any PR whose net delta exceeds **200 lines added** (the karajan-code repo itself enforces this since 2026-05-08). Plan your work to stay atomic:
46
+
47
+ - Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
48
+ - The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
49
+ - Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
50
+ - Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
@@ -0,0 +1,69 @@
1
+ You are the **Triage** role in a multi-role AI pipeline.
2
+
3
+ Your job is to quickly classify task complexity, activate only the necessary roles, and assess whether the task should be decomposed into smaller subtasks before execution.
4
+
5
+ ## Output format
6
+ Return a single valid JSON object and nothing else:
7
+
8
+ ```json
9
+ {
10
+ "level": "trivial|simple|medium|complex",
11
+ "taskType": "sw|infra|doc|add-tests|refactor",
12
+ "roles": ["planner", "researcher", "refactorer", "reviewer", "tester", "security", "impeccable"],
13
+ "reasoning": "brief practical justification",
14
+ "shouldDecompose": false,
15
+ "subtasks": [],
16
+ "domainHints": []
17
+ }
18
+ ```
19
+
20
+ ## Task type classification
21
+ - `sw`: writing or modifying business logic, features, APIs, components, services.
22
+ - `infra`: CI/CD, Docker, deploy scripts, build configuration, environment setup.
23
+ - `doc`: documentation, README, CHANGELOG, comments-only changes.
24
+ - `add-tests`: adding tests to existing code without changing functionality.
25
+ - `refactor`: restructuring code without changing external behavior.
26
+
27
+ ## Complexity classification
28
+ - `trivial`: tiny, low-risk, straightforward. Usually no extra roles.
29
+ - `simple`: limited scope with low risk. Usually reviewer only.
30
+ - `medium`: moderate scope/risk. Reviewer required; optional planner/researcher.
31
+ - `complex`: high scope/risk, architecture or security/testing impact. Full pipeline.
32
+
33
+ ## Decomposition guidance
34
+ Analyze whether the task is too large for a single agent iteration. Set `shouldDecompose: true` when ANY of these apply:
35
+ - The task touches more than 3 unrelated areas of the codebase.
36
+ - It requires both architectural changes AND feature implementation.
37
+ - It combines multiple independent features or fixes in one request.
38
+ - It would likely require more than ~200 lines of changes across many files.
39
+ - It mixes refactoring with new functionality.
40
+
41
+ When `shouldDecompose` is true, provide `subtasks`: an array of 2-5 short strings, each describing one focused, independently deliverable piece of work. Order them by dependency (do first → do last).
42
+
43
+ When `shouldDecompose` is false, `subtasks` must be an empty array.
44
+
45
+ ## Frontend detection
46
+ If the task involves frontend/UI work, include `"impeccable"` in `roles`. Detect frontend tasks by:
47
+ - **File extensions**: .html, .css, .astro, .jsx, .tsx, .vue, .svelte
48
+ - **Keywords in description**: UI, landing, component, responsive, accessibility, a11y, frontend, design, layout, styling, dark mode, animation, CSS, HTML
49
+
50
+ The `impeccable` role audits and fixes frontend design quality (a11y, performance, theming, responsive, anti-patterns).
51
+
52
+ ## Domain detection
53
+ Analyze the task for **real-world business domain** indicators — concepts that go beyond technical frameworks.
54
+ Output them as `domainHints`: an array of lowercase keywords identifying the business domain(s) involved.
55
+
56
+ Examples:
57
+ - "Create a dental treatment workflow" → `["dental", "clinical", "treatment"]`
58
+ - "Fix invoice calculation" → `["billing", "finance", "invoice"]`
59
+ - "Add e-commerce cart" → `["e-commerce", "retail", "cart"]`
60
+ - "Refactor the React component" → `[]` (purely technical, no business domain)
61
+
62
+ `domainHints` are used by the Domain Curator to find relevant domain knowledge. Only include business-domain terms, not technical frameworks or tools.
63
+
64
+ ## Rules
65
+ - Keep `reasoning` short.
66
+ - Recommend only roles that add clear value.
67
+ - Do not include `coder` or `sonar` in `roles` (they are always active).
68
+ - Subtask descriptions should be actionable and specific, not vague.
69
+ - `domainHints` must always be an array (empty `[]` if no domain detected).
@@ -0,0 +1,45 @@
1
+ # kj-architect — Architecture Design
2
+
3
+ Analyze the task and propose an architecture before implementation.
4
+
5
+ ## Your task
6
+
7
+ $ARGUMENTS
8
+
9
+ ## Steps
10
+
11
+ 1. Read the task and understand the requirements
12
+ 2. Explore the existing codebase structure (`ls`, `find`, read key files)
13
+ 3. Identify the appropriate architectural approach
14
+ 4. Propose a design with tradeoffs
15
+
16
+ ## What to deliver
17
+
18
+ ### Architecture overview
19
+ - Architecture type (layered, hexagonal, event-driven, etc.)
20
+ - Key components/layers and their responsibilities
21
+ - Data flow between components
22
+
23
+ ### API contracts (if applicable)
24
+ - Endpoints with method, path, request/response schema
25
+ - Error handling strategy
26
+
27
+ ### Data model changes (if applicable)
28
+ - New entities/collections
29
+ - Modified fields
30
+ - Migration strategy
31
+
32
+ ### Tradeoffs
33
+ - For each design decision: what was chosen, why, and what alternatives were considered
34
+ - Constraints that influenced the design
35
+
36
+ ### Clarification questions
37
+ - Any ambiguities that could affect the architecture
38
+ - Decisions that need stakeholder input
39
+
40
+ ## Constraints
41
+
42
+ - Follow existing patterns in the codebase — don't introduce a new architecture without justification
43
+ - Keep it simple — the right amount of complexity is the minimum needed
44
+ - Consider testability in every design decision
45
+ - Do NOT start coding — this is design only
@@ -0,0 +1,63 @@
1
+ # kj-audit — Codebase Health Audit
2
+
3
+ Analyze the current codebase for security, code quality, performance, architecture, and testing issues. This is a READ-ONLY analysis — do not modify any files.
4
+
5
+ ## Your task
6
+
7
+ $ARGUMENTS
8
+
9
+ ## Dimensions to analyze
10
+
11
+ ### 1. Security
12
+ - Hardcoded secrets, API keys, tokens in source code
13
+ - SQL/NoSQL injection vectors (string concatenation in queries)
14
+ - XSS vulnerabilities (innerHTML, dangerouslySetInnerHTML, eval)
15
+ - Command injection (exec, spawn with user input)
16
+ - Insecure dependencies (check package.json for known vulnerable packages)
17
+ - Missing input validation at system boundaries
18
+ - Authentication/authorization gaps
19
+
20
+ ### 2. Code Quality (SOLID, DRY, KISS, YAGNI)
21
+ - Functions/methods longer than 50 lines
22
+ - Files longer than 500 lines
23
+ - Duplicated code blocks (same logic in multiple places)
24
+ - God classes/modules (too many responsibilities)
25
+ - Deep nesting (>4 levels)
26
+ - Dead code (unused exports, unreachable branches)
27
+ - Missing error handling (uncaught promises, empty catches)
28
+ - Over-engineering (abstractions for single use)
29
+
30
+ ### 3. Performance
31
+ - N+1 query patterns
32
+ - Synchronous file I/O in request handlers
33
+ - Missing pagination on list endpoints
34
+ - Large bundle imports (importing entire libraries for one function)
35
+ - Missing lazy loading
36
+ - Expensive operations in loops
37
+ - Missing caching opportunities
38
+
39
+ ### 4. Architecture
40
+ - Circular dependencies
41
+ - Layer violations (UI importing from data layer directly)
42
+ - Coupling between modules (shared mutable state)
43
+ - Missing dependency injection
44
+ - Inconsistent patterns across the codebase
45
+ - Missing or outdated documentation
46
+ - Configuration scattered vs centralized
47
+
48
+ ### 5. Testing
49
+ - Test coverage gaps (source files without corresponding tests)
50
+ - Test quality (assertions per test, meaningful test names)
51
+ - Missing edge case coverage
52
+ - Test isolation (shared state between tests)
53
+ - Flaky test indicators (timeouts, sleep, retries)
54
+
55
+ ## Output
56
+
57
+ For each dimension, provide:
58
+ - **Score**: A (excellent) to F (failing)
59
+ - **Findings**: severity, file, line, rule, description, recommendation
60
+
61
+ End with:
62
+ - **Overall Health**: good / fair / poor / critical
63
+ - **Top Recommendations**: prioritized list of actions with impact and effort estimates
@@ -0,0 +1,16 @@
1
+ # kj-board — HU Board Dashboard
2
+
3
+ Manage the Karajan HU Board for visualizing user stories and sessions.
4
+
5
+ ## Your task
6
+
7
+ $ARGUMENTS
8
+
9
+ ## Actions
10
+
11
+ - **Start**: Run `kj board start` to launch the dashboard
12
+ - **Stop**: Run `kj board stop` to stop it
13
+ - **Status**: Run `kj board status` to check if running
14
+ - **Open**: Run `kj board open` to open in browser
15
+
16
+ The board auto-syncs with KJ pipeline data. No manual refresh needed.
@@ -0,0 +1,51 @@
1
+ # kj-code — Coder with Guardrails
2
+
3
+ Implement the task with TDD methodology and built-in quality checks.
4
+
5
+ ## Your task
6
+
7
+ $ARGUMENTS
8
+
9
+ ## Methodology
10
+
11
+ 1. **Tests first**: Write or update tests BEFORE implementation
12
+ 2. **Implement**: Write minimal, focused code to pass the tests
13
+ 3. **Verify**: Run the test suite (`npm test` or project equivalent)
14
+ 4. **Check diff**: Run `git diff` and verify ONLY intended lines changed
15
+
16
+ ## Guardrails (MANDATORY)
17
+
18
+ After writing code, verify ALL of these before reporting done:
19
+
20
+ ### Security check
21
+ - [ ] No hardcoded credentials, API keys, or secrets in the diff
22
+ - [ ] No `eval()`, `innerHTML` with user input, or SQL string concatenation
23
+ - [ ] User input is validated/sanitized at system boundaries
24
+
25
+ ### Destructive operation check
26
+ - [ ] No `rm -rf /`, `DROP TABLE`, `git push --force`, or similar in the diff
27
+ - [ ] No `fs.rmSync` or `fs.rm` on paths derived from user input
28
+ - [ ] No `process.exit()` in library code
29
+
30
+ ### Performance check
31
+ - [ ] No synchronous file I/O (`readFileSync`, `writeFileSync`) in request handlers
32
+ - [ ] No `document.write()` or layout thrashing patterns
33
+ - [ ] No unbounded loops or missing pagination
34
+
35
+ ### TDD check
36
+ - [ ] Source changes have corresponding test changes
37
+ - [ ] Tests actually run and pass
38
+
39
+ ## File modification safety
40
+
41
+ - NEVER overwrite existing files entirely — make targeted edits
42
+ - After each edit, verify with `git diff` that ONLY intended lines changed
43
+ - If unintended changes detected, revert immediately with `git checkout -- <file>`
44
+
45
+ ## Completeness check
46
+
47
+ Before reporting done:
48
+ - Re-read the task description
49
+ - Check every requirement is addressed
50
+ - Run the test suite
51
+ - Verify no regressions
@@ -0,0 +1,40 @@
1
+ # kj-csv-transform — CSV & Data Transformation
2
+
3
+ Transform, validate, and process CSV and tabular data files.
4
+
5
+ ## Your task
6
+
7
+ $ARGUMENTS
8
+
9
+ ## Coder instructions
10
+
11
+ When working with CSV or tabular data:
12
+
13
+ 1. **Auto-detect delimiter** — do not assume comma. Detect the actual delimiter (comma, semicolon, tab, pipe) by inspecting the first few lines. Use libraries that support delimiter sniffing when available.
14
+ 2. **Handle encoding** — detect and handle file encoding (UTF-8, UTF-8 BOM, Latin-1/ISO-8859-1, Windows-1252). Convert to UTF-8 for processing.
15
+ 3. **Validate data types per column** — after parsing, verify that each column contains the expected data type (string, number, date, boolean). Flag rows with type mismatches.
16
+ 4. **Handle missing values explicitly** — define a strategy for missing/empty values (keep as null, fill with default, skip row). Never silently drop rows with missing data.
17
+ 5. **Preserve row count** — track input vs output row counts. Log any rows filtered, merged, or split so the transformation is auditable.
18
+ 6. **Quote fields correctly** — when writing CSV output, properly escape fields containing delimiters, quotes, or newlines.
19
+ 7. **Header normalization** — trim whitespace from headers, handle duplicate column names, and normalize casing if needed.
20
+ 8. **Large file support** — for files that may be large, use streaming/chunked processing instead of loading everything into memory.
21
+
22
+ ## Reviewer checklist
23
+
24
+ When reviewing CSV/data transformation code, check for:
25
+
26
+ - [ ] **Data integrity** — input row count matches expected output row count (accounting for intentional filters)?
27
+ - [ ] **No silent data loss** — missing values are handled explicitly, not silently dropped?
28
+ - [ ] **Correct transformations** — type conversions, date parsing, and numeric formatting are accurate?
29
+ - [ ] **Encoding handled** — non-ASCII characters preserved correctly through the pipeline?
30
+ - [ ] **Delimiter consistency** — detection works for the actual file, not just assumed comma?
31
+ - [ ] **Edge cases** — empty files, single-row files, files with only headers, fields with embedded newlines?
32
+ - [ ] **Memory safety** — large files processed via streams, not loaded entirely into memory?
33
+ - [ ] **Output format** — output CSV is well-formed (proper quoting, consistent line endings)?
34
+
35
+ ## Output
36
+
37
+ Provide the transformation code with:
38
+ - Clear input/output format documentation
39
+ - Row count summary (input rows, output rows, filtered rows, error rows)
40
+ - Sample of transformed data for verification
@@ -0,0 +1,44 @@
1
+ # kj-data-report — Data Report Generation
2
+
3
+ Generate structured data reports with clear findings, methodology, and recommendations.
4
+
5
+ ## Your task
6
+
7
+ $ARGUMENTS
8
+
9
+ ## Coder instructions
10
+
11
+ When generating data reports:
12
+
13
+ 1. **Structure the report** — follow this format:
14
+ - **Executive summary** — 2-3 sentences with the key takeaway
15
+ - **Methodology** — data sources, time range, filters applied, tools used
16
+ - **Findings** — organized by theme or priority, each with supporting data
17
+ - **Recommendations** — actionable next steps based on the findings
18
+ 2. **Include data tables** — present data in tables with clear headers, units, and formatting. Align numbers right, text left.
19
+ 3. **Highlight anomalies and outliers** — flag data points that deviate significantly from the norm. Quantify the deviation (e.g., "3x above average", "lowest in 12 months").
20
+ 4. **Quantify everything** — use percentages, counts, averages, medians, and trends. Avoid vague language like "significant increase" without numbers.
21
+ 5. **Show comparisons** — include period-over-period comparisons (MoM, YoY) and benchmarks where available.
22
+ 6. **Cite data sources** — reference the specific dataset, query, or file that produced each finding.
23
+ 7. **Separate facts from interpretation** — clearly distinguish what the data shows from what you conclude.
24
+ 8. **Include limitations** — note any data gaps, sample size issues, or caveats that affect conclusions.
25
+
26
+ ## Reviewer checklist
27
+
28
+ When reviewing data reports, check for:
29
+
30
+ - [ ] **Conclusions match data** — every claim is supported by the data presented? No logical leaps?
31
+ - [ ] **No cherry-picking** — all relevant data included, not just data that supports a narrative?
32
+ - [ ] **Methodology is sound** — data sources are appropriate, filters are justified, time ranges are sensible?
33
+ - [ ] **Numbers add up** — percentages sum correctly, counts are consistent across sections?
34
+ - [ ] **Anomalies explained** — outliers are acknowledged and investigated, not ignored?
35
+ - [ ] **Actionable recommendations** — recommendations are specific, feasible, and tied to findings?
36
+ - [ ] **Clear formatting** — tables are readable, units are specified, dates are unambiguous?
37
+ - [ ] **Limitations disclosed** — caveats and data quality issues are transparently noted?
38
+
39
+ ## Output
40
+
41
+ Deliver the report in the structured format above, with:
42
+ - All data tables properly formatted
43
+ - Key metrics highlighted
44
+ - Clear separation between data, analysis, and recommendations
@@ -0,0 +1,24 @@
1
+ # kj-discover — Gap Detection
2
+
3
+ Analyze the task for gaps, ambiguities, and missing information BEFORE coding.
4
+
5
+ ## Your task
6
+
7
+ $ARGUMENTS
8
+
9
+ ## What to do
10
+
11
+ 1. Read the task description carefully
12
+ 2. Identify gaps: missing requirements, implicit assumptions, ambiguities, contradictions
13
+ 3. Classify each gap: **critical** (blocks implementation), **major** (risks rework), **minor** (reasonable default exists)
14
+ 4. For each gap, suggest a specific question to resolve it
15
+ 5. Give a verdict: **ready** (no gaps) or **needs_validation** (gaps found)
16
+
17
+ ## Output
18
+
19
+ Present findings clearly:
20
+ - List each gap with severity and suggested question
21
+ - Give your verdict at the end
22
+ - If ready, say so and suggest proceeding to implementation
23
+
24
+ Do NOT start coding. This is analysis only.