kortext 3.0.0 → 3.1.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 (373) hide show
  1. package/README.md +159 -139
  2. package/agents/architect.md +85 -0
  3. package/agents/compliance-expert.md +36 -75
  4. package/agents/copywriter.md +36 -92
  5. package/agents/db-admin.md +43 -91
  6. package/agents/designer.md +40 -77
  7. package/agents/devops-engineer.md +37 -113
  8. package/agents/growth-expert.md +45 -88
  9. package/agents/product-manager.md +38 -83
  10. package/agents/qa-engineer.md +51 -99
  11. package/agents/security-engineer.md +47 -92
  12. package/bin/kortext.js +1 -22
  13. package/dist/app.js +829 -0
  14. package/dist/cli-spawn.js +137 -0
  15. package/dist/daemon.js +40 -0
  16. package/dist/db.js +78 -0
  17. package/dist/design-preview.js +533 -0
  18. package/dist/docs.js +701 -0
  19. package/dist/engines.js +225 -0
  20. package/dist/index.js +109 -0
  21. package/dist/pick-directory.js +38 -0
  22. package/dist/projects.js +189 -0
  23. package/dist/readiness.js +288 -0
  24. package/dist/runner.js +771 -0
  25. package/dist/update.js +55 -0
  26. package/docs/CHANGELOG.md +11 -0
  27. package/package.json +25 -57
  28. package/templates/AGENTS.md +62 -0
  29. package/templates/docs/API.md +67 -0
  30. package/templates/docs/ARCHITECTURE.md +31 -0
  31. package/templates/docs/BRIEF.md +27 -0
  32. package/templates/docs/CONTENT.md +66 -0
  33. package/templates/docs/DATABASE.md +63 -0
  34. package/templates/docs/DESIGN.md +124 -0
  35. package/templates/docs/ENGINEERING.md +66 -0
  36. package/templates/docs/ENVIRONMENT.md +102 -0
  37. package/templates/docs/GROWTH.md +44 -0
  38. package/templates/docs/LEGAL.md +48 -0
  39. package/templates/docs/PRODUCT.md +43 -0
  40. package/templates/docs/SECURITY.md +65 -0
  41. package/templates/docs/STACK.md +57 -0
  42. package/templates/docs/STRUCTURE.md +73 -0
  43. package/templates/docs/TEST.md +62 -0
  44. package/ui/dist/assets/abnfDiagram-VCTEODGH-Bm7Q2BML.js +1 -0
  45. package/ui/dist/assets/arc-BV9hs0Hu.js +1 -0
  46. package/ui/dist/assets/architecture-7GRP2DOG-RckR3gBI.js +1 -0
  47. package/ui/dist/assets/architectureDiagram-5GKGNRK7-CHiJ6JFT.js +36 -0
  48. package/ui/dist/assets/array-BifhSqXX.js +1 -0
  49. package/ui/dist/assets/blockDiagram-I7D4REHJ-qCbaKVhd.js +129 -0
  50. package/ui/dist/assets/c4Diagram-7LVT6UL2-DidCDJrv.js +38 -0
  51. package/ui/dist/assets/channel-CNUQ11ne.js +1 -0
  52. package/ui/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  53. package/ui/dist/assets/chunk-4HAMMTFA-CDGFjfVp.js +62 -0
  54. package/ui/dist/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  55. package/ui/dist/assets/chunk-75Z2AOVW-CbNT4sDh.js +2 -0
  56. package/ui/dist/assets/chunk-DU6HZSFF-Cq2BVv26.js +127 -0
  57. package/ui/dist/assets/chunk-F27PBJKO-CE365m0v.js +1 -0
  58. package/ui/dist/assets/chunk-FOHPRMQF-DHwB1DNv.js +161 -0
  59. package/ui/dist/assets/chunk-GMAD6QVW-DxWL1VC-.js +72 -0
  60. package/ui/dist/assets/chunk-GVQU2GXP-aARV8YbK.js +1 -0
  61. package/ui/dist/assets/chunk-IMKFNOWR-CC790Kt2.js +231 -0
  62. package/ui/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  63. package/ui/dist/assets/chunk-L3NEJ4N5-BfE4VE8J.js +1 -0
  64. package/ui/dist/assets/chunk-OSK3NFVY-BImQbSWH.js +10 -0
  65. package/ui/dist/assets/chunk-P2QGCYS3-CN3XD313.js +1 -0
  66. package/ui/dist/assets/chunk-POPQ4Y6H-Dqb6jOrX.js +1 -0
  67. package/ui/dist/assets/chunk-PWAF6VOD-DfXX6rBk.js +1 -0
  68. package/ui/dist/assets/chunk-SHT3W25Y-DATyyqPK.js +168 -0
  69. package/ui/dist/assets/chunk-SVP7TREG-r1chwRmg.js +88 -0
  70. package/ui/dist/assets/chunk-TICWLB2K-DL4atHUC.js +206 -0
  71. package/ui/dist/assets/chunk-XXDRQBXY-DXrM6jh7.js +1 -0
  72. package/ui/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  73. package/ui/dist/assets/classDiagram-ZZMXUADV-BpQxfIQ7.js +1 -0
  74. package/ui/dist/assets/classDiagram-v2-VYDZK3BY-BpQxfIQ7.js +1 -0
  75. package/ui/dist/assets/cose-bilkent-JH36ORCC-Bhe-ZBlS.js +1 -0
  76. package/ui/dist/assets/cynefin-OW5HDTMX-D1koLd-G.js +1 -0
  77. package/ui/dist/assets/cynefinDiagram-5FMLGOSQ-BMcw40hV.js +62 -0
  78. package/ui/dist/assets/cytoscape.esm-CGd-uY3x.js +321 -0
  79. package/ui/dist/assets/dagre-GXQ25YYZ-DBun-Rs2.js +4 -0
  80. package/ui/dist/assets/dagre-PrKaheQc.js +1 -0
  81. package/ui/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  82. package/ui/dist/assets/diagram-S7CK7UJ4-C1fUIGvo.js +30 -0
  83. package/ui/dist/assets/diagram-UQ7AKVKN-B5FDfkvB.js +41 -0
  84. package/ui/dist/assets/diagram-VSXAHHWV-CCIpOCNC.js +3 -0
  85. package/ui/dist/assets/diagram-VX7I27RA-DV0q2xo_.js +24 -0
  86. package/ui/dist/assets/diagram-Z3DM3KII-B3LCdNgI.js +24 -0
  87. package/ui/dist/assets/dist-EcW76Zvr.js +1 -0
  88. package/ui/dist/assets/ebnfDiagram-PWID7BFC-De_oRbYe.js +1 -0
  89. package/ui/dist/assets/erDiagram-RLTQ6QDP-B9NikMr1.js +99 -0
  90. package/ui/dist/assets/eventmodeling-NTZA5JFV-DZ4t581k.js +1 -0
  91. package/ui/dist/assets/flowDiagram-HODETNUW-DuTOJp1C.js +1 -0
  92. package/ui/dist/assets/ganttDiagram-EL5Y4UJY-BVTqqlPw.js +292 -0
  93. package/ui/dist/assets/gitGraph-4MIJSDKK-xRFaEJdZ.js +1 -0
  94. package/ui/dist/assets/gitGraphDiagram-WWUBYQGX-CK5_GCmX.js +106 -0
  95. package/ui/dist/assets/graphlib-DS17s2tU.js +1 -0
  96. package/ui/dist/assets/index-CjkpNftW.js +46 -0
  97. package/ui/dist/assets/index-DVIDTWin.css +1 -0
  98. package/ui/dist/assets/info-A6RAGUB7-Dg7z-CTI.js +1 -0
  99. package/ui/dist/assets/infoDiagram-27XIBGKW-YaqsOXh0.js +2 -0
  100. package/ui/dist/assets/init-C-OQMol4.js +1 -0
  101. package/ui/dist/assets/ishikawaDiagram-5VMMS53U-C-wtxZPa.js +70 -0
  102. package/ui/dist/assets/journeyDiagram-3NMN7TZE-DsXSXf16.js +139 -0
  103. package/ui/dist/assets/kanban-definition-UXKFOSKX-Ct59fuWk.js +89 -0
  104. package/ui/dist/assets/katex-CXMH3UgJ.js +257 -0
  105. package/ui/dist/assets/line-BUVw9Mhs.js +1 -0
  106. package/ui/dist/assets/linear-D8ncLO0X.js +1 -0
  107. package/ui/dist/assets/mermaid-parser.core-BDC4bG-O.js +7 -0
  108. package/ui/dist/assets/mermaid.core-DZY3WwzX.js +44 -0
  109. package/ui/dist/assets/mindmap-definition-YA3MSWOX-DtiuF6Ce.js +96 -0
  110. package/ui/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  111. package/ui/dist/assets/packet-AYTQ26CC-BX2-w9rD.js +1 -0
  112. package/ui/dist/assets/path-fybaL0A-.js +1 -0
  113. package/ui/dist/assets/pegDiagram-XKGWAZYB-CotwuIHB.js +1 -0
  114. package/ui/dist/assets/pie-WAS4IAKB-Hth8ZVpm.js +1 -0
  115. package/ui/dist/assets/pieDiagram-E7YTZNPT-D9-INs8B.js +39 -0
  116. package/ui/dist/assets/quadrantDiagram-AXDQQJYC-CMtBXZGV.js +7 -0
  117. package/ui/dist/assets/radar-RG4KPBEZ-6UuwQPsw.js +1 -0
  118. package/ui/dist/assets/railroad-74A4TZTK-BF5TZgj0.js +1 -0
  119. package/ui/dist/assets/railroad-abnf-HS5TGJTU-3KYovtYT.js +1 -0
  120. package/ui/dist/assets/railroad-ebnf-LZEXJU2U-DeP4WedE.js +1 -0
  121. package/ui/dist/assets/railroad-peg-WCYAUIDC-i42N1-yk.js +1 -0
  122. package/ui/dist/assets/railroadDiagram-O6MQD6OU-BS6zkU3Z.js +1 -0
  123. package/ui/dist/assets/requirementDiagram-BXWQKSXE-J4IOB-kP.js +84 -0
  124. package/ui/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  125. package/ui/dist/assets/sankeyDiagram-P5KCCOFB-jYTCuYzQ.js +40 -0
  126. package/ui/dist/assets/sequenceDiagram-WJ2MYXX4-Cd2r6PW-.js +162 -0
  127. package/ui/dist/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  128. package/ui/dist/assets/src-7TsfZXRO.js +1 -0
  129. package/ui/dist/assets/stateDiagram-D77RDMKH-DXOdtOKe.js +1 -0
  130. package/ui/dist/assets/stateDiagram-v2-MP3YSRHH-9h7sIf3R.js +1 -0
  131. package/ui/dist/assets/swimlanes-42K2YHIH-BvJGmGs1.js +1 -0
  132. package/ui/dist/assets/swimlanesDiagram-VR7AAH4N-QA4gPi6a.js +8 -0
  133. package/ui/dist/assets/timeline-definition-24CTP7MA-CAaD6-yd.js +120 -0
  134. package/ui/dist/assets/treeView-Q6P3EWNA-4gDEXIyJ.js +1 -0
  135. package/ui/dist/assets/treemap-WGGIJYW6-CGel5TwW.js +1 -0
  136. package/ui/dist/assets/vennDiagram-4TSXK5OY-DpxsKboL.js +34 -0
  137. package/ui/dist/assets/wardley-WFR3VGLG-Ck38v5ns.js +1 -0
  138. package/ui/dist/assets/wardleyDiagram-VM6X3IG4-Ba0grrqs.js +78 -0
  139. package/ui/dist/assets/xychartDiagram-S5SC5T6Z-DH_gC96K.js +7 -0
  140. package/ui/dist/index.html +13 -0
  141. package/ui/dist/kortext-logo-dark.svg +41 -0
  142. package/ui/dist/kortext-logo.svg +41 -0
  143. package/workflows/existing-project-analysis.md +87 -0
  144. package/workflows/new-project-analysis.md +98 -0
  145. package/workflows/planning-pipeline.md +61 -0
  146. package/AGENTS.md +0 -24
  147. package/CHANGELOG.md +0 -81
  148. package/USER-GUIDE.md +0 -505
  149. package/agents/backend-developer.md +0 -132
  150. package/agents/delivery-manager.md +0 -121
  151. package/agents/engineering-manager.md +0 -208
  152. package/agents/frontend-developer.md +0 -174
  153. package/agents/operation-manager.md +0 -122
  154. package/bin/kortext.ts +0 -377
  155. package/dist/bin/kortext.js +0 -346
  156. package/dist/bin/kortext.js.map +0 -1
  157. package/dist/mcp/index.js +0 -4
  158. package/dist/mcp/index.js.map +0 -1
  159. package/dist/mcp/server.js +0 -553
  160. package/dist/mcp/server.js.map +0 -1
  161. package/dist/mcp/sse.js +0 -38
  162. package/dist/mcp/sse.js.map +0 -1
  163. package/dist/mcp/stdio.js +0 -44
  164. package/dist/mcp/stdio.js.map +0 -1
  165. package/dist/server/cli/cleanup.js +0 -73
  166. package/dist/server/cli/cleanup.js.map +0 -1
  167. package/dist/server/cli/commands.js +0 -73
  168. package/dist/server/cli/commands.js.map +0 -1
  169. package/dist/server/cli/doctor.js +0 -118
  170. package/dist/server/cli/doctor.js.map +0 -1
  171. package/dist/server/cli/executor-factory.js +0 -39
  172. package/dist/server/cli/executor-factory.js.map +0 -1
  173. package/dist/server/cli/init.js +0 -121
  174. package/dist/server/cli/init.js.map +0 -1
  175. package/dist/server/cli/logs.js +0 -28
  176. package/dist/server/cli/logs.js.map +0 -1
  177. package/dist/server/cli/serve.js +0 -72
  178. package/dist/server/cli/serve.js.map +0 -1
  179. package/dist/server/config/env.js +0 -12
  180. package/dist/server/config/env.js.map +0 -1
  181. package/dist/server/db/client.js +0 -32
  182. package/dist/server/db/client.js.map +0 -1
  183. package/dist/server/db/json.js +0 -21
  184. package/dist/server/db/json.js.map +0 -1
  185. package/dist/server/db/migrate.js +0 -70
  186. package/dist/server/db/migrate.js.map +0 -1
  187. package/dist/server/db/migrations/001_init.sql +0 -243
  188. package/dist/server/db/repositories/audit-log.js +0 -58
  189. package/dist/server/db/repositories/audit-log.js.map +0 -1
  190. package/dist/server/db/repositories/backlog.js +0 -96
  191. package/dist/server/db/repositories/backlog.js.map +0 -1
  192. package/dist/server/db/repositories/contexts.js +0 -54
  193. package/dist/server/db/repositories/contexts.js.map +0 -1
  194. package/dist/server/db/repositories/decisions.js +0 -71
  195. package/dist/server/db/repositories/decisions.js.map +0 -1
  196. package/dist/server/db/repositories/handovers.js +0 -53
  197. package/dist/server/db/repositories/handovers.js.map +0 -1
  198. package/dist/server/db/repositories/index.js +0 -30
  199. package/dist/server/db/repositories/index.js.map +0 -1
  200. package/dist/server/db/repositories/locks.js +0 -59
  201. package/dist/server/db/repositories/locks.js.map +0 -1
  202. package/dist/server/db/repositories/notifications.js +0 -63
  203. package/dist/server/db/repositories/notifications.js.map +0 -1
  204. package/dist/server/db/repositories/pending-questions.js +0 -63
  205. package/dist/server/db/repositories/pending-questions.js.map +0 -1
  206. package/dist/server/db/repositories/runs.js +0 -138
  207. package/dist/server/db/repositories/runs.js.map +0 -1
  208. package/dist/server/db/repositories/runtime-artifacts.js +0 -39
  209. package/dist/server/db/repositories/runtime-artifacts.js.map +0 -1
  210. package/dist/server/db/repositories/secrets.js +0 -65
  211. package/dist/server/db/repositories/secrets.js.map +0 -1
  212. package/dist/server/db/repositories/sessions.js +0 -48
  213. package/dist/server/db/repositories/sessions.js.map +0 -1
  214. package/dist/server/db/schemas.js +0 -308
  215. package/dist/server/db/schemas.js.map +0 -1
  216. package/dist/server/engine/consistency.js +0 -25
  217. package/dist/server/engine/consistency.js.map +0 -1
  218. package/dist/server/engine/dag.js +0 -86
  219. package/dist/server/engine/dag.js.map +0 -1
  220. package/dist/server/engine/executor.js +0 -2
  221. package/dist/server/engine/executor.js.map +0 -1
  222. package/dist/server/engine/executors/claude-cli-executor.js +0 -83
  223. package/dist/server/engine/executors/claude-cli-executor.js.map +0 -1
  224. package/dist/server/engine/executors/cli-spawn.js +0 -127
  225. package/dist/server/engine/executors/cli-spawn.js.map +0 -1
  226. package/dist/server/engine/executors/codex-cli-executor.js +0 -69
  227. package/dist/server/engine/executors/codex-cli-executor.js.map +0 -1
  228. package/dist/server/engine/executors/gemini-cli-executor.js +0 -69
  229. package/dist/server/engine/executors/gemini-cli-executor.js.map +0 -1
  230. package/dist/server/engine/executors/mock-executor.js +0 -52
  231. package/dist/server/engine/executors/mock-executor.js.map +0 -1
  232. package/dist/server/engine/executors/persona-routed-executor.js +0 -17
  233. package/dist/server/engine/executors/persona-routed-executor.js.map +0 -1
  234. package/dist/server/engine/gate-enforcer.js +0 -75
  235. package/dist/server/engine/gate-enforcer.js.map +0 -1
  236. package/dist/server/engine/git-commit.js +0 -42
  237. package/dist/server/engine/git-commit.js.map +0 -1
  238. package/dist/server/engine/handover.js +0 -120
  239. package/dist/server/engine/handover.js.map +0 -1
  240. package/dist/server/engine/item-lifecycle.js +0 -74
  241. package/dist/server/engine/item-lifecycle.js.map +0 -1
  242. package/dist/server/engine/persona-registry.js +0 -108
  243. package/dist/server/engine/persona-registry.js.map +0 -1
  244. package/dist/server/engine/worker-pool.js +0 -324
  245. package/dist/server/engine/worker-pool.js.map +0 -1
  246. package/dist/server/engine/workflow-loader.js +0 -55
  247. package/dist/server/engine/workflow-loader.js.map +0 -1
  248. package/dist/server/engine/workflow-parser.js +0 -158
  249. package/dist/server/engine/workflow-parser.js.map +0 -1
  250. package/dist/server/engine/worktree.js +0 -176
  251. package/dist/server/engine/worktree.js.map +0 -1
  252. package/dist/server/index.js +0 -99
  253. package/dist/server/index.js.map +0 -1
  254. package/dist/server/notifications/dispatcher.js +0 -60
  255. package/dist/server/notifications/dispatcher.js.map +0 -1
  256. package/dist/server/notifications/slack.js +0 -37
  257. package/dist/server/notifications/slack.js.map +0 -1
  258. package/dist/server/notifications/telegram.js +0 -33
  259. package/dist/server/notifications/telegram.js.map +0 -1
  260. package/dist/server/orchestrator/approval-queue.js +0 -83
  261. package/dist/server/orchestrator/approval-queue.js.map +0 -1
  262. package/dist/server/orchestrator/blueprint-watcher.js +0 -94
  263. package/dist/server/orchestrator/blueprint-watcher.js.map +0 -1
  264. package/dist/server/orchestrator/orchestrator.js +0 -283
  265. package/dist/server/orchestrator/orchestrator.js.map +0 -1
  266. package/dist/server/orchestrator/pipeline-chainer.js +0 -96
  267. package/dist/server/orchestrator/pipeline-chainer.js.map +0 -1
  268. package/dist/server/orchestrator/resume.js +0 -36
  269. package/dist/server/orchestrator/resume.js.map +0 -1
  270. package/dist/server/routes/approvals.js +0 -52
  271. package/dist/server/routes/approvals.js.map +0 -1
  272. package/dist/server/routes/backlog.js +0 -44
  273. package/dist/server/routes/backlog.js.map +0 -1
  274. package/dist/server/routes/db-info.js +0 -21
  275. package/dist/server/routes/db-info.js.map +0 -1
  276. package/dist/server/routes/docs.js +0 -70
  277. package/dist/server/routes/docs.js.map +0 -1
  278. package/dist/server/routes/doctor.js +0 -19
  279. package/dist/server/routes/doctor.js.map +0 -1
  280. package/dist/server/routes/handovers.js +0 -25
  281. package/dist/server/routes/handovers.js.map +0 -1
  282. package/dist/server/routes/health.js +0 -11
  283. package/dist/server/routes/health.js.map +0 -1
  284. package/dist/server/routes/personas.js +0 -96
  285. package/dist/server/routes/personas.js.map +0 -1
  286. package/dist/server/routes/runs.js +0 -41
  287. package/dist/server/routes/runs.js.map +0 -1
  288. package/dist/server/routes/workflows.js +0 -38
  289. package/dist/server/routes/workflows.js.map +0 -1
  290. package/dist/server/safety/harmful-output-filter.js +0 -40
  291. package/dist/server/safety/harmful-output-filter.js.map +0 -1
  292. package/dist/server/safety/secret-scanner.js +0 -169
  293. package/dist/server/safety/secret-scanner.js.map +0 -1
  294. package/dist/server/services/markdown-sync.js +0 -101
  295. package/dist/server/services/markdown-sync.js.map +0 -1
  296. package/dist/web/assets/index-B80d5ZPZ.js +0 -75
  297. package/dist/web/assets/index-B80d5ZPZ.js.map +0 -1
  298. package/dist/web/assets/index-Bge5Gzqv.css +0 -1
  299. package/dist/web/index.html +0 -13
  300. package/docs/architecture.md +0 -413
  301. package/rules/behavior.md +0 -252
  302. package/rules/branching.md +0 -82
  303. package/rules/commands.md +0 -112
  304. package/rules/emergency.md +0 -160
  305. package/rules/mcp.md +0 -47
  306. package/rules/models.md +0 -93
  307. package/scripts/copy-migrations.mjs +0 -29
  308. package/workflows/00-kortext-setup.md +0 -53
  309. package/workflows/01a-analysis-pipeline.md +0 -117
  310. package/workflows/01b-onboarding-pipeline.md +0 -110
  311. package/workflows/02-planning-pipeline.md +0 -146
  312. package/workflows/02b-spike-workflow.md +0 -120
  313. package/workflows/03-environment-setup.md +0 -99
  314. package/workflows/04-development-cycle.md +0 -203
  315. package/workflows/05-test-cycle.md +0 -123
  316. package/workflows/06-deployment-cycle.md +0 -224
  317. package/workflows/07-rollback-pipeline.md +0 -203
  318. package/workflows/08-hotfix-pipeline.md +0 -196
  319. package/workflows/09-maintenance-cycle.md +0 -133
  320. package/workspace/.locks/workspace_handover.md.lock +0 -3
  321. package/workspace/archive/.gitkeep +0 -0
  322. package/workspace/backups/.gitkeep +0 -0
  323. package/workspace/memory/backlog/.gitkeep +0 -0
  324. package/workspace/memory/backlog/BXX-[bug-name].md +0 -2
  325. package/workspace/memory/backlog/DXX-[debt-name].md +0 -2
  326. package/workspace/memory/backlog/README.md +0 -31
  327. package/workspace/memory/backlog/TXX-[task-name].md +0 -2
  328. package/workspace/memory/backlog/debt-dashboard.md +0 -3
  329. package/workspace/memory/backlog/epic-dashboard.md +0 -10
  330. package/workspace/memory/backlog/version-dashboard.md +0 -7
  331. package/workspace/memory/context/.gitkeep +0 -0
  332. package/workspace/memory/context/README.md +0 -35
  333. package/workspace/memory/context/[agent-name]-active.md +0 -2
  334. package/workspace/memory/decisions.md +0 -17
  335. package/workspace/memory/handover.md +0 -40
  336. package/workspace/memory/learned.md +0 -21
  337. package/workspace/references/access.md +0 -47
  338. package/workspace/references/api-reference.md +0 -59
  339. package/workspace/references/blueprint.md +0 -29
  340. package/workspace/references/content-strategy.md +0 -39
  341. package/workspace/references/db-schema.md +0 -51
  342. package/workspace/references/design-system.md +0 -107
  343. package/workspace/references/dictionary.md +0 -42
  344. package/workspace/references/file-system.md +0 -42
  345. package/workspace/references/growth-strategy.md +0 -46
  346. package/workspace/references/legal-strategy.md +0 -35
  347. package/workspace/references/required-skills.md +0 -11
  348. package/workspace/references/security-rules.md +0 -34
  349. package/workspace/references/tech-stack.md +0 -49
  350. package/workspace/references/test-strategy.md +0 -48
  351. package/workspace/reports/analysis-reports.md +0 -40
  352. package/workspace/reports/content-reports.md +0 -29
  353. package/workspace/reports/delivery-reports.md +0 -26
  354. package/workspace/reports/growth-reports.md +0 -9
  355. package/workspace/reports/legal-reports.md +0 -29
  356. package/workspace/reports/product-requirements.md +0 -28
  357. package/workspace/reports/release-notes.md +0 -20
  358. package/workspace/reports/security-reports.md +0 -27
  359. package/workspace/reports/status-reports.md +0 -48
  360. package/workspace/reports/tech-requirements.md +0 -30
  361. package/workspace/reports/test-reports.md +0 -61
  362. package/workspace/templates/BXX-[bug-name].md +0 -34
  363. package/workspace/templates/DXX-[debt-name].md +0 -35
  364. package/workspace/templates/EXX-[epic-name].md +0 -48
  365. package/workspace/templates/HXX-[hotfix-name].md +0 -73
  366. package/workspace/templates/SXX-[spike-name].md +0 -51
  367. package/workspace/templates/TXX-[task-name].md +0 -34
  368. package/workspace/templates/[agent-name]-active.md +0 -4
  369. package/workspace/templates/[original-name]_[YYYY-MM-DD_HHMMSS].md +0 -5
  370. package/workspace/templates/adr-XXX.md +0 -66
  371. package/workspace/templates/debt-dashboard.md +0 -10
  372. package/workspace/templates/epic-dashboard.md +0 -10
  373. package/workspace/templates/version-dashboard.md +0 -10
@@ -1,71 +0,0 @@
1
- import { DecisionIndexInsertSchema, DecisionIndexSchema, DecisionStatusSchema, } from "../schemas.js";
2
- import { packJson, unpackJson } from "../json.js";
3
- function rowToDecision(row) {
4
- return DecisionIndexSchema.parse({
5
- ...row,
6
- tags: unpackJson(row.tags, []),
7
- });
8
- }
9
- export class DecisionsRepository {
10
- db;
11
- insertStmt;
12
- selectByDecisionIdStmt;
13
- listStmt;
14
- transitionStmt;
15
- constructor(db) {
16
- this.db = db;
17
- this.insertStmt = db.prepare(`
18
- INSERT INTO decisions_index
19
- (decision_id, title, status, markdown_path, item_id, tags, created_at, decided_at)
20
- VALUES
21
- (@decision_id, @title, @status, @markdown_path, @item_id, @tags, @created_at, @decided_at)
22
- `);
23
- this.selectByDecisionIdStmt = db.prepare('SELECT * FROM decisions_index WHERE decision_id = ?');
24
- this.listStmt = db.prepare(`
25
- SELECT * FROM decisions_index
26
- WHERE (@status IS NULL OR status = @status)
27
- ORDER BY created_at DESC
28
- LIMIT @limit OFFSET @offset
29
- `);
30
- this.transitionStmt = db.prepare(`
31
- UPDATE decisions_index
32
- SET status = @status,
33
- decided_at = CASE WHEN @status IN ('accepted','rejected','superseded') THEN @ts ELSE decided_at END
34
- WHERE decision_id = @decision_id
35
- `);
36
- }
37
- create(input) {
38
- const parsed = DecisionIndexInsertSchema.parse(input);
39
- this.insertStmt.run({
40
- decision_id: parsed.decision_id,
41
- title: parsed.title,
42
- status: parsed.status,
43
- markdown_path: parsed.markdown_path,
44
- item_id: parsed.item_id,
45
- tags: packJson(parsed.tags),
46
- created_at: Date.now(),
47
- decided_at: parsed.decided_at,
48
- });
49
- return this.get(parsed.decision_id);
50
- }
51
- get(decision_id) {
52
- const row = this.selectByDecisionIdStmt.get(decision_id);
53
- return row ? rowToDecision(row) : null;
54
- }
55
- list(filter = {}) {
56
- const rows = this.listStmt.all({
57
- status: filter.status ?? null,
58
- limit: filter.limit ?? 100,
59
- offset: filter.offset ?? 0,
60
- });
61
- return rows.map(rowToDecision);
62
- }
63
- transition(decision_id, status) {
64
- DecisionStatusSchema.parse(status);
65
- const result = this.transitionStmt.run({ decision_id, status, ts: Date.now() });
66
- if (result.changes === 0)
67
- throw new Error(`decision not found: ${decision_id}`);
68
- return this.get(decision_id);
69
- }
70
- }
71
- //# sourceMappingURL=decisions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decisions.js","sourceRoot":"","sources":["../../../../server/db/repositories/decisions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,GAIrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAclD,SAAS,aAAa,CAAC,GAAQ;IAC7B,OAAO,mBAAmB,CAAC,KAAK,CAAC;QAC/B,GAAG,GAAG;QACN,IAAI,EAAE,UAAU,CAAW,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;KACzC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,mBAAmB;IAMD;IALZ,UAAU,CAAC;IACX,sBAAsB,CAAC;IACvB,QAAQ,CAAC;IACT,cAAc,CAAC;IAEhC,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAChD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC,OAAO,CACtC,qDAAqD,CACtD,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAK1B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAKhC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAA0B;QAC/B,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAE,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,WAAmB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAoB,CAAC;QAC5E,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,IAAI,CACF,SAA8E,EAAE;QAEhF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;SAC3B,CAAU,CAAC;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,WAAmB,EAAE,MAAsB;QACpD,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChF,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;IAChC,CAAC;CACF"}
@@ -1,53 +0,0 @@
1
- import { HandoverInsertSchema, HandoverSchema, } from "../schemas.js";
2
- import { packJson, unpackJson } from "../json.js";
3
- function rowToHandover(row) {
4
- return HandoverSchema.parse({
5
- ...row,
6
- context_payload: unpackJson(row.context_payload, {}),
7
- });
8
- }
9
- export class HandoversRepository {
10
- db;
11
- insertStmt;
12
- selectByIdStmt;
13
- listByItemStmt;
14
- listRecentStmt;
15
- constructor(db) {
16
- this.db = db;
17
- this.insertStmt = db.prepare(`
18
- INSERT INTO handovers
19
- (item_id, from_persona, to_persona, reason, context_payload, markdown_path, created_at)
20
- VALUES
21
- (@item_id, @from_persona, @to_persona, @reason, @context_payload, @markdown_path, @created_at)
22
- `);
23
- this.selectByIdStmt = db.prepare('SELECT * FROM handovers WHERE id = ?');
24
- this.listByItemStmt = db.prepare('SELECT * FROM handovers WHERE item_id = ? ORDER BY created_at DESC');
25
- this.listRecentStmt = db.prepare('SELECT * FROM handovers ORDER BY created_at DESC LIMIT @limit');
26
- }
27
- create(input) {
28
- const parsed = HandoverInsertSchema.parse(input);
29
- const result = this.insertStmt.run({
30
- item_id: parsed.item_id,
31
- from_persona: parsed.from_persona,
32
- to_persona: parsed.to_persona,
33
- reason: parsed.reason,
34
- context_payload: packJson(parsed.context_payload),
35
- markdown_path: parsed.markdown_path,
36
- created_at: Date.now(),
37
- });
38
- return this.get(Number(result.lastInsertRowid));
39
- }
40
- get(id) {
41
- const row = this.selectByIdStmt.get(id);
42
- return row ? rowToHandover(row) : null;
43
- }
44
- listByItem(itemId) {
45
- const rows = this.listByItemStmt.all(itemId);
46
- return rows.map(rowToHandover);
47
- }
48
- listRecent(limit = 20) {
49
- const rows = this.listRecentStmt.all({ limit });
50
- return rows.map(rowToHandover);
51
- }
52
- }
53
- //# sourceMappingURL=handovers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handovers.js","sourceRoot":"","sources":["../../../../server/db/repositories/handovers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,cAAc,GAGf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAalD,SAAS,aAAa,CAAC,GAAQ;IAC7B,OAAO,cAAc,CAAC,KAAK,CAAC;QAC1B,GAAG,GAAG;QACN,eAAe,EAAE,UAAU,CAA0B,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC;KAC9E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,mBAAmB;IAMD;IALZ,UAAU,CAAC;IACX,cAAc,CAAC;IACf,cAAc,CAAC;IACf,cAAc,CAAC;IAEhC,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAChD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACzE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAC9B,oEAAoE,CACrE,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAC9B,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAqB;QAC1B,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC;YACjD,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAE,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAoB,CAAC;QAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAU,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,KAAK,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAU,CAAC;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -1,30 +0,0 @@
1
- import { BacklogRepository } from "./backlog.js";
2
- import { SessionsRepository } from "./sessions.js";
3
- import { ContextsRepository } from "./contexts.js";
4
- import { LocksRepository } from "./locks.js";
5
- import { HandoversRepository } from "./handovers.js";
6
- import { DecisionsRepository } from "./decisions.js";
7
- import { RunsRepository } from "./runs.js";
8
- import { PendingQuestionsRepository } from "./pending-questions.js";
9
- import { RuntimeArtifactsRepository } from "./runtime-artifacts.js";
10
- import { NotificationsRepository } from "./notifications.js";
11
- import { SecretsRepository } from "./secrets.js";
12
- import { AuditLogRepository } from "./audit-log.js";
13
- export { BacklogRepository, SessionsRepository, ContextsRepository, LocksRepository, HandoversRepository, DecisionsRepository, RunsRepository, PendingQuestionsRepository, RuntimeArtifactsRepository, NotificationsRepository, SecretsRepository, AuditLogRepository, };
14
- export function createRepositories(db) {
15
- return {
16
- backlog: new BacklogRepository(db),
17
- sessions: new SessionsRepository(db),
18
- contexts: new ContextsRepository(db),
19
- locks: new LocksRepository(db),
20
- handovers: new HandoversRepository(db),
21
- decisions: new DecisionsRepository(db),
22
- runs: new RunsRepository(db),
23
- pendingQuestions: new PendingQuestionsRepository(db),
24
- runtimeArtifacts: new RuntimeArtifactsRepository(db),
25
- notifications: new NotificationsRepository(db),
26
- secrets: new SecretsRepository(db),
27
- auditLog: new AuditLogRepository(db),
28
- };
29
- }
30
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/db/repositories/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,GACnB,CAAC;AAiBF,MAAM,UAAU,kBAAkB,CAAC,EAAqB;IACtD,OAAO;QACL,OAAO,EAAE,IAAI,iBAAiB,CAAC,EAAE,CAAC;QAClC,QAAQ,EAAE,IAAI,kBAAkB,CAAC,EAAE,CAAC;QACpC,QAAQ,EAAE,IAAI,kBAAkB,CAAC,EAAE,CAAC;QACpC,KAAK,EAAE,IAAI,eAAe,CAAC,EAAE,CAAC;QAC9B,SAAS,EAAE,IAAI,mBAAmB,CAAC,EAAE,CAAC;QACtC,SAAS,EAAE,IAAI,mBAAmB,CAAC,EAAE,CAAC;QACtC,IAAI,EAAE,IAAI,cAAc,CAAC,EAAE,CAAC;QAC5B,gBAAgB,EAAE,IAAI,0BAA0B,CAAC,EAAE,CAAC;QACpD,gBAAgB,EAAE,IAAI,0BAA0B,CAAC,EAAE,CAAC;QACpD,aAAa,EAAE,IAAI,uBAAuB,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,IAAI,iBAAiB,CAAC,EAAE,CAAC;QAClC,QAAQ,EAAE,IAAI,kBAAkB,CAAC,EAAE,CAAC;KACrC,CAAC;AACJ,CAAC"}
@@ -1,59 +0,0 @@
1
- import { LockInsertSchema, LockSchema } from "../schemas.js";
2
- function rowToLock(row) {
3
- return LockSchema.parse(row);
4
- }
5
- export class LocksRepository {
6
- db;
7
- insertStmt;
8
- selectByResourceStmt;
9
- listStmt;
10
- releaseStmt;
11
- cleanExpiredStmt;
12
- constructor(db) {
13
- this.db = db;
14
- this.insertStmt = db.prepare(`
15
- INSERT INTO locks (resource, holder, reason, acquired_at, expires_at)
16
- VALUES (@resource, @holder, @reason, @acquired_at, @expires_at)
17
- `);
18
- this.selectByResourceStmt = db.prepare('SELECT * FROM locks WHERE resource = ?');
19
- this.listStmt = db.prepare('SELECT * FROM locks ORDER BY acquired_at DESC');
20
- this.releaseStmt = db.prepare('DELETE FROM locks WHERE resource = @resource AND holder = @holder');
21
- this.cleanExpiredStmt = db.prepare('DELETE FROM locks WHERE expires_at IS NOT NULL AND expires_at < ?');
22
- }
23
- /** Returns null if resource is already locked by another holder. */
24
- acquire(input) {
25
- const parsed = LockInsertSchema.parse(input);
26
- try {
27
- this.insertStmt.run({
28
- resource: parsed.resource,
29
- holder: parsed.holder,
30
- reason: parsed.reason,
31
- acquired_at: Date.now(),
32
- expires_at: parsed.expires_at,
33
- });
34
- return this.getByResource(parsed.resource);
35
- }
36
- catch (e) {
37
- const msg = e instanceof Error ? e.message : '';
38
- if (msg.includes('UNIQUE constraint failed'))
39
- return null;
40
- throw e;
41
- }
42
- }
43
- getByResource(resource) {
44
- const row = this.selectByResourceStmt.get(resource);
45
- return row ? rowToLock(row) : null;
46
- }
47
- list() {
48
- const rows = this.listStmt.all();
49
- return rows.map(rowToLock);
50
- }
51
- /** Returns true if the lock was released (resource + holder matched). */
52
- release(resource, holder) {
53
- return this.releaseStmt.run({ resource, holder }).changes > 0;
54
- }
55
- cleanExpired(now = Date.now()) {
56
- return this.cleanExpiredStmt.run(now).changes;
57
- }
58
- }
59
- //# sourceMappingURL=locks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"locks.js","sourceRoot":"","sources":["../../../../server/db/repositories/locks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAA8B,MAAM,eAAe,CAAC;AAWzF,SAAS,SAAS,CAAC,GAAQ;IACzB,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,OAAO,eAAe;IAOG;IANZ,UAAU,CAAC;IACX,oBAAoB,CAAC;IACrB,QAAQ,CAAC;IACT,WAAW,CAAC;IACZ,gBAAgB,CAAC;IAElC,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAChD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC;QACnG,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,OAAO,CAChC,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,OAAO,CAAC,KAAiB;QACvB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,IAAI,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC1D,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,aAAa,CAAC,QAAgB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAoB,CAAC;QACvE,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAW,CAAC;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,yEAAyE;IACzE,OAAO,CAAC,QAAgB,EAAE,MAAc;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAC3B,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IAChD,CAAC;CACF"}
@@ -1,63 +0,0 @@
1
- import { NotificationInsertSchema, NotificationSchema, } from "../schemas.js";
2
- import { packJson, unpackJson } from "../json.js";
3
- function rowToNotification(row) {
4
- return NotificationSchema.parse({
5
- ...row,
6
- payload: unpackJson(row.payload, {}),
7
- });
8
- }
9
- export class NotificationsRepository {
10
- db;
11
- insertStmt;
12
- selectByKeyStmt;
13
- listRecentStmt;
14
- constructor(db) {
15
- this.db = db;
16
- this.insertStmt = db.prepare(`
17
- INSERT INTO notifications_sent
18
- (channel, event_key, payload, status, error_message, created_at)
19
- VALUES
20
- (@channel, @event_key, @payload, @status, @error_message, @created_at)
21
- `);
22
- this.selectByKeyStmt = db.prepare('SELECT * FROM notifications_sent WHERE channel = ? AND event_key = ?');
23
- this.listRecentStmt = db.prepare(`
24
- SELECT * FROM notifications_sent
25
- WHERE (@channel IS NULL OR channel = @channel)
26
- ORDER BY created_at DESC
27
- LIMIT @limit
28
- `);
29
- }
30
- /** Returns null if (channel, event_key) already exists (dedup). */
31
- record(input) {
32
- const parsed = NotificationInsertSchema.parse(input);
33
- try {
34
- this.insertStmt.run({
35
- channel: parsed.channel,
36
- event_key: parsed.event_key,
37
- payload: packJson(parsed.payload),
38
- status: parsed.status,
39
- error_message: parsed.error_message,
40
- created_at: Date.now(),
41
- });
42
- return this.getByKey(parsed.channel, parsed.event_key);
43
- }
44
- catch (e) {
45
- const msg = e instanceof Error ? e.message : '';
46
- if (msg.includes('UNIQUE constraint failed'))
47
- return null;
48
- throw e;
49
- }
50
- }
51
- getByKey(channel, event_key) {
52
- const row = this.selectByKeyStmt.get(channel, event_key);
53
- return row ? rowToNotification(row) : null;
54
- }
55
- listRecent(filter = {}) {
56
- const rows = this.listRecentStmt.all({
57
- channel: filter.channel ?? null,
58
- limit: filter.limit ?? 50,
59
- });
60
- return rows.map(rowToNotification);
61
- }
62
- }
63
- //# sourceMappingURL=notifications.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../../server/db/repositories/notifications.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GAInB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAYlD,SAAS,iBAAiB,CAAC,GAAQ;IACjC,OAAO,kBAAkB,CAAC,KAAK,CAAC;QAC9B,GAAG,GAAG;QACN,OAAO,EAAE,UAAU,CAA0B,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,uBAAuB;IAKL;IAJZ,UAAU,CAAC;IACX,eAAe,CAAC;IAChB,cAAc,CAAC;IAEhC,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAChD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,OAAO,CAC/B,sEAAsE,CACvE,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAKhC,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,MAAM,CAAC,KAAyB;QAC9B,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAClB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,IAAI,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC1D,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,OAA4B,EAAE,SAAiB;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAoB,CAAC;QAC5E,OAAO,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,SAAmE,EAAE;QAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;YAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;SAC1B,CAAU,CAAC;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -1,63 +0,0 @@
1
- import { PendingQuestionInsertSchema, PendingQuestionSchema, PendingQuestionStatusSchema, } from "../schemas.js";
2
- import { packJson, unpackJson } from "../json.js";
3
- function rowToQuestion(row) {
4
- return PendingQuestionSchema.parse({
5
- ...row,
6
- choices: unpackJson(row.choices, []),
7
- });
8
- }
9
- export class PendingQuestionsRepository {
10
- db;
11
- insertStmt;
12
- selectByIdStmt;
13
- listOpenStmt;
14
- answerStmt;
15
- transitionStmt;
16
- constructor(db) {
17
- this.db = db;
18
- this.insertStmt = db.prepare(`
19
- INSERT INTO pending_questions (run_id, step_id, question, choices, created_at)
20
- VALUES (@run_id, @step_id, @question, @choices, @created_at)
21
- `);
22
- this.selectByIdStmt = db.prepare('SELECT * FROM pending_questions WHERE id = ?');
23
- this.listOpenStmt = db.prepare("SELECT * FROM pending_questions WHERE status = 'open' ORDER BY created_at");
24
- this.answerStmt = db.prepare(`
25
- UPDATE pending_questions
26
- SET status = 'answered', answer = @answer, answered_by = @answered_by, answered_at = @ts
27
- WHERE id = @id AND status = 'open'
28
- `);
29
- this.transitionStmt = db.prepare('UPDATE pending_questions SET status = @status WHERE id = @id AND status = \'open\'');
30
- }
31
- create(input) {
32
- const parsed = PendingQuestionInsertSchema.parse(input);
33
- const result = this.insertStmt.run({
34
- run_id: parsed.run_id,
35
- step_id: parsed.step_id,
36
- question: parsed.question,
37
- choices: packJson(parsed.choices),
38
- created_at: Date.now(),
39
- });
40
- return this.get(Number(result.lastInsertRowid));
41
- }
42
- get(id) {
43
- const row = this.selectByIdStmt.get(id);
44
- return row ? rowToQuestion(row) : null;
45
- }
46
- listOpen() {
47
- const rows = this.listOpenStmt.all();
48
- return rows.map(rowToQuestion);
49
- }
50
- answer(id, answer, answered_by) {
51
- const result = this.answerStmt.run({ id, answer, answered_by, ts: Date.now() });
52
- if (result.changes === 0) {
53
- throw new Error(`pending_question not open or not found: ${id}`);
54
- }
55
- return this.get(id);
56
- }
57
- transition(id, status) {
58
- PendingQuestionStatusSchema.parse(status);
59
- this.transitionStmt.run({ id, status });
60
- return this.get(id);
61
- }
62
- }
63
- //# sourceMappingURL=pending-questions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pending-questions.js","sourceRoot":"","sources":["../../../../server/db/repositories/pending-questions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,GAI5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAelD,SAAS,aAAa,CAAC,GAAQ;IAC7B,OAAO,qBAAqB,CAAC,KAAK,CAAC;QACjC,GAAG,GAAG;QACN,OAAO,EAAE,UAAU,CAAW,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,0BAA0B;IAOR;IANZ,UAAU,CAAC;IACX,cAAc,CAAC;IACf,YAAY,CAAC;IACb,UAAU,CAAC;IACX,cAAc,CAAC;IAEhC,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAChD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,OAAO,CAC5B,2EAA2E,CAC5E,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAC9B,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAA4B;QACjC,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;YACjC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAE,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAoB,CAAC;QAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAW,CAAC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,MAAc,EAAE,WAAmB;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChF,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,EAAU,EAAE,MAA2D;QAChF,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;IACvB,CAAC;CACF"}
@@ -1,138 +0,0 @@
1
- import { RunInsertSchema, RunSchema, RunStatusSchema, RunStepInsertSchema, RunStepSchema, RunStepStatusSchema, } from "../schemas.js";
2
- const TERMINAL_RUN_STATUSES = new Set([
3
- 'succeeded',
4
- 'failed',
5
- 'cancelled',
6
- ]);
7
- const TERMINAL_STEP_STATUSES = new Set([
8
- 'succeeded',
9
- 'failed',
10
- 'skipped',
11
- ]);
12
- export class RunsRepository {
13
- db;
14
- insertRunStmt;
15
- selectRunStmt;
16
- listRunsStmt;
17
- transitionRunStmt;
18
- insertStepStmt;
19
- selectStepStmt;
20
- listStepsStmt;
21
- transitionStepStmt;
22
- constructor(db) {
23
- this.db = db;
24
- this.insertRunStmt = db.prepare(`
25
- INSERT INTO runs
26
- (workflow_id, item_id, status, worktree_path, triggered_by, created_at)
27
- VALUES
28
- (@workflow_id, @item_id, @status, @worktree_path, @triggered_by, @created_at)
29
- `);
30
- this.selectRunStmt = db.prepare('SELECT * FROM runs WHERE id = ?');
31
- this.listRunsStmt = db.prepare(`
32
- SELECT * FROM runs
33
- WHERE (@status IS NULL OR status = @status)
34
- AND (@workflow_id IS NULL OR workflow_id = @workflow_id)
35
- ORDER BY created_at DESC
36
- LIMIT @limit OFFSET @offset
37
- `);
38
- this.transitionRunStmt = db.prepare(`
39
- UPDATE runs SET
40
- status = @status,
41
- started_at = CASE WHEN @status = 'running' AND started_at IS NULL THEN @ts ELSE started_at END,
42
- ended_at = CASE WHEN @is_terminal = 1 THEN @ts ELSE ended_at END,
43
- error_message = COALESCE(@error_message, error_message)
44
- WHERE id = @id
45
- `);
46
- this.insertStepStmt = db.prepare(`
47
- INSERT INTO run_steps
48
- (run_id, step_index, step_name, persona, status)
49
- VALUES
50
- (@run_id, @step_index, @step_name, @persona, @status)
51
- `);
52
- this.selectStepStmt = db.prepare('SELECT * FROM run_steps WHERE id = ?');
53
- this.listStepsStmt = db.prepare('SELECT * FROM run_steps WHERE run_id = ? ORDER BY step_index');
54
- this.transitionStepStmt = db.prepare(`
55
- UPDATE run_steps SET
56
- status = @status,
57
- started_at = CASE WHEN @status = 'running' AND started_at IS NULL THEN @ts ELSE started_at END,
58
- ended_at = CASE WHEN @is_terminal = 1 THEN @ts ELSE ended_at END,
59
- output_summary = COALESCE(@output_summary, output_summary),
60
- error_message = COALESCE(@error_message, error_message),
61
- log_path = COALESCE(@log_path, log_path)
62
- WHERE id = @id
63
- `);
64
- }
65
- createRun(input) {
66
- const parsed = RunInsertSchema.parse(input);
67
- const result = this.insertRunStmt.run({
68
- workflow_id: parsed.workflow_id,
69
- item_id: parsed.item_id,
70
- status: parsed.status,
71
- worktree_path: parsed.worktree_path,
72
- triggered_by: parsed.triggered_by,
73
- created_at: Date.now(),
74
- });
75
- return this.getRun(Number(result.lastInsertRowid));
76
- }
77
- getRun(id) {
78
- const row = this.selectRunStmt.get(id);
79
- return row ? RunSchema.parse(row) : null;
80
- }
81
- listRuns(filter = {}) {
82
- const rows = this.listRunsStmt.all({
83
- status: filter.status ?? null,
84
- workflow_id: filter.workflow_id ?? null,
85
- limit: filter.limit ?? 50,
86
- offset: filter.offset ?? 0,
87
- });
88
- return rows.map((r) => RunSchema.parse(r));
89
- }
90
- transitionRun(id, status, opts = {}) {
91
- RunStatusSchema.parse(status);
92
- const result = this.transitionRunStmt.run({
93
- id,
94
- status,
95
- ts: Date.now(),
96
- is_terminal: TERMINAL_RUN_STATUSES.has(status) ? 1 : 0,
97
- error_message: opts.error_message ?? null,
98
- });
99
- if (result.changes === 0)
100
- throw new Error(`run not found: ${id}`);
101
- return this.getRun(id);
102
- }
103
- addStep(input) {
104
- const parsed = RunStepInsertSchema.parse(input);
105
- const result = this.insertStepStmt.run({
106
- run_id: parsed.run_id,
107
- step_index: parsed.step_index,
108
- step_name: parsed.step_name,
109
- persona: parsed.persona,
110
- status: parsed.status,
111
- });
112
- return this.getStep(Number(result.lastInsertRowid));
113
- }
114
- getStep(id) {
115
- const row = this.selectStepStmt.get(id);
116
- return row ? RunStepSchema.parse(row) : null;
117
- }
118
- listSteps(runId) {
119
- const rows = this.listStepsStmt.all(runId);
120
- return rows.map((r) => RunStepSchema.parse(r));
121
- }
122
- transitionStep(id, status, opts = {}) {
123
- RunStepStatusSchema.parse(status);
124
- const result = this.transitionStepStmt.run({
125
- id,
126
- status,
127
- ts: Date.now(),
128
- is_terminal: TERMINAL_STEP_STATUSES.has(status) ? 1 : 0,
129
- output_summary: opts.output_summary ?? null,
130
- error_message: opts.error_message ?? null,
131
- log_path: opts.log_path ?? null,
132
- });
133
- if (result.changes === 0)
134
- throw new Error(`run_step not found: ${id}`);
135
- return this.getStep(id);
136
- }
137
- }
138
- //# sourceMappingURL=runs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../../../server/db/repositories/runs.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { RuntimeArtifactInsertSchema, RuntimeArtifactSchema, } from "../schemas.js";
2
- export class RuntimeArtifactsRepository {
3
- db;
4
- insertStmt;
5
- selectByIdStmt;
6
- listByRunStmt;
7
- listByRunAndKindStmt;
8
- constructor(db) {
9
- this.db = db;
10
- this.insertStmt = db.prepare(`
11
- INSERT INTO runtime_artifacts (run_id, step_id, kind, path, bytes, created_at)
12
- VALUES (@run_id, @step_id, @kind, @path, @bytes, @created_at)
13
- `);
14
- this.selectByIdStmt = db.prepare('SELECT * FROM runtime_artifacts WHERE id = ?');
15
- this.listByRunStmt = db.prepare('SELECT * FROM runtime_artifacts WHERE run_id = ? ORDER BY created_at');
16
- this.listByRunAndKindStmt = db.prepare('SELECT * FROM runtime_artifacts WHERE run_id = ? AND kind = ? ORDER BY created_at');
17
- }
18
- create(input) {
19
- const parsed = RuntimeArtifactInsertSchema.parse(input);
20
- const result = this.insertStmt.run({
21
- run_id: parsed.run_id,
22
- step_id: parsed.step_id,
23
- kind: parsed.kind,
24
- path: parsed.path,
25
- bytes: parsed.bytes,
26
- created_at: Date.now(),
27
- });
28
- return this.get(Number(result.lastInsertRowid));
29
- }
30
- get(id) {
31
- const row = this.selectByIdStmt.get(id);
32
- return row ? RuntimeArtifactSchema.parse(row) : null;
33
- }
34
- listByRun(runId, kind) {
35
- const rows = (kind ? this.listByRunAndKindStmt.all(runId, kind) : this.listByRunStmt.all(runId));
36
- return rows.map((r) => RuntimeArtifactSchema.parse(r));
37
- }
38
- }
39
- //# sourceMappingURL=runtime-artifacts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-artifacts.js","sourceRoot":"","sources":["../../../../server/db/repositories/runtime-artifacts.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,GAItB,MAAM,eAAe,CAAC;AAYvB,MAAM,OAAO,0BAA0B;IAMR;IALZ,UAAU,CAAC;IACX,cAAc,CAAC;IACf,aAAa,CAAC;IACd,oBAAoB,CAAC;IAEtC,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAChD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QACjF,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,OAAO,CAC7B,sEAAsE,CACvE,CAAC;QACF,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,OAAO,CACpC,mFAAmF,CACpF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAA4B;QACjC,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAE,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAoB,CAAC;QAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,SAAS,CAAC,KAAa,EAAE,IAAmB;QAC1C,MAAM,IAAI,GAAG,CACX,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CACzE,CAAC;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -1,65 +0,0 @@
1
- import { SecretScanResultInsertSchema, SecretScanResultSchema, } from "../schemas.js";
2
- function rowToResult(row) {
3
- return SecretScanResultSchema.parse({ ...row, resolved: row.resolved === 1 });
4
- }
5
- export class SecretsRepository {
6
- db;
7
- insertStmt;
8
- selectByIdStmt;
9
- listStmt;
10
- markResolvedStmt;
11
- constructor(db) {
12
- this.db = db;
13
- this.insertStmt = db.prepare(`
14
- INSERT INTO secrets_scan_results
15
- (run_id, scanned_path, finding_type, severity, line_number, context, masked_snippet, created_at)
16
- VALUES
17
- (@run_id, @scanned_path, @finding_type, @severity, @line_number, @context, @masked_snippet, @created_at)
18
- `);
19
- this.selectByIdStmt = db.prepare('SELECT * FROM secrets_scan_results WHERE id = ?');
20
- this.listStmt = db.prepare(`
21
- SELECT * FROM secrets_scan_results
22
- WHERE (@severity IS NULL OR severity = @severity)
23
- AND (@resolved IS NULL OR resolved = @resolved)
24
- ORDER BY created_at DESC
25
- LIMIT @limit OFFSET @offset
26
- `);
27
- this.markResolvedStmt = db.prepare('UPDATE secrets_scan_results SET resolved = 1 WHERE id = ?');
28
- }
29
- create(input) {
30
- const parsed = SecretScanResultInsertSchema.parse(input);
31
- const result = this.insertStmt.run({
32
- run_id: parsed.run_id,
33
- scanned_path: parsed.scanned_path,
34
- finding_type: parsed.finding_type,
35
- severity: parsed.severity,
36
- line_number: parsed.line_number,
37
- context: parsed.context,
38
- masked_snippet: parsed.masked_snippet,
39
- created_at: Date.now(),
40
- });
41
- return this.get(Number(result.lastInsertRowid));
42
- }
43
- get(id) {
44
- const row = this.selectByIdStmt.get(id);
45
- return row ? rowToResult(row) : null;
46
- }
47
- list(filter = {}) {
48
- const resolvedFlag = filter.resolved === undefined || filter.resolved === null
49
- ? null
50
- : filter.resolved
51
- ? 1
52
- : 0;
53
- const rows = this.listStmt.all({
54
- severity: filter.severity ?? null,
55
- resolved: resolvedFlag,
56
- limit: filter.limit ?? 100,
57
- offset: filter.offset ?? 0,
58
- });
59
- return rows.map(rowToResult);
60
- }
61
- markResolved(id) {
62
- return this.markResolvedStmt.run(id).changes > 0;
63
- }
64
- }
65
- //# sourceMappingURL=secrets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../../server/db/repositories/secrets.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GAIvB,MAAM,eAAe,CAAC;AAevB,SAAS,WAAW,CAAC,GAAQ;IAC3B,OAAO,sBAAsB,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,OAAO,iBAAiB;IAMC;IALZ,UAAU,CAAC;IACX,cAAc,CAAC;IACf,QAAQ,CAAC;IACT,gBAAgB,CAAC;IAElC,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAChD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;KAM1B,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,OAAO,CAChC,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAA6B;QAClC,MAAM,MAAM,GAAG,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAE,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAoB,CAAC;QAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,IAAI,CACF,SAKI,EAAE;QAEN,MAAM,YAAY,GAChB,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;YACvD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,CAAC,QAAQ;gBACf,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YACjC,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;SAC3B,CAAU,CAAC;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IACnD,CAAC;CACF"}