@jamesaphoenix/tx-core 0.8.1 → 0.9.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 (517) hide show
  1. package/dist/db.d.ts +6 -6
  2. package/dist/db.d.ts.map +1 -1
  3. package/dist/db.js +29 -2
  4. package/dist/db.js.map +1 -1
  5. package/dist/index.d.ts +8 -3
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +8 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/internal/cycle-scan-service-impl.d.ts +28 -0
  10. package/dist/internal/cycle-scan-service-impl.d.ts.map +1 -0
  11. package/dist/internal/cycle-scan-service-impl.js +877 -0
  12. package/dist/internal/cycle-scan-service-impl.js.map +1 -0
  13. package/dist/internal/doc-service-impl.d.ts +42 -0
  14. package/dist/internal/doc-service-impl.d.ts.map +1 -0
  15. package/dist/internal/doc-service-impl.js +812 -0
  16. package/dist/internal/doc-service-impl.js.map +1 -0
  17. package/dist/internal/embedding-service-impl.d.ts +202 -0
  18. package/dist/internal/embedding-service-impl.d.ts.map +1 -0
  19. package/dist/internal/embedding-service-impl.js +466 -0
  20. package/dist/internal/embedding-service-impl.js.map +1 -0
  21. package/dist/internal/memory-service-impl.d.ts +49 -0
  22. package/dist/internal/memory-service-impl.d.ts.map +1 -0
  23. package/dist/internal/memory-service-impl.js +1061 -0
  24. package/dist/internal/memory-service-impl.js.map +1 -0
  25. package/dist/internal/spec-trace-service-impl.d.ts +50 -0
  26. package/dist/internal/spec-trace-service-impl.d.ts.map +1 -0
  27. package/dist/internal/spec-trace-service-impl.js +707 -0
  28. package/dist/internal/spec-trace-service-impl.js.map +1 -0
  29. package/dist/internal/sync/service-impl.d.ts +41 -0
  30. package/dist/internal/sync/service-impl.d.ts.map +1 -0
  31. package/dist/{services/sync-service.js → internal/sync/service-impl.js} +954 -499
  32. package/dist/internal/sync/service-impl.js.map +1 -0
  33. package/dist/layer.d.ts +8 -5
  34. package/dist/layer.d.ts.map +1 -1
  35. package/dist/layer.js +22 -10
  36. package/dist/layer.js.map +1 -1
  37. package/dist/mappers/anchor.d.ts.map +1 -1
  38. package/dist/mappers/anchor.js +5 -4
  39. package/dist/mappers/anchor.js.map +1 -1
  40. package/dist/mappers/attempt.d.ts.map +1 -1
  41. package/dist/mappers/attempt.js +2 -1
  42. package/dist/mappers/attempt.js.map +1 -1
  43. package/dist/mappers/candidate.d.ts.map +1 -1
  44. package/dist/mappers/candidate.js +2 -1
  45. package/dist/mappers/candidate.js.map +1 -1
  46. package/dist/mappers/claim.d.ts.map +1 -1
  47. package/dist/mappers/claim.js +2 -1
  48. package/dist/mappers/claim.js.map +1 -1
  49. package/dist/mappers/doc.d.ts.map +1 -1
  50. package/dist/mappers/doc.js +9 -8
  51. package/dist/mappers/doc.js.map +1 -1
  52. package/dist/mappers/edge.d.ts.map +1 -1
  53. package/dist/mappers/edge.js +4 -3
  54. package/dist/mappers/edge.js.map +1 -1
  55. package/dist/mappers/file-learning.d.ts.map +1 -1
  56. package/dist/mappers/file-learning.js +2 -1
  57. package/dist/mappers/file-learning.js.map +1 -1
  58. package/dist/mappers/index.d.ts +1 -0
  59. package/dist/mappers/index.d.ts.map +1 -1
  60. package/dist/mappers/index.js +2 -0
  61. package/dist/mappers/index.js.map +1 -1
  62. package/dist/mappers/learning.d.ts.map +1 -1
  63. package/dist/mappers/learning.js +4 -3
  64. package/dist/mappers/learning.js.map +1 -1
  65. package/dist/mappers/memory.d.ts.map +1 -1
  66. package/dist/mappers/memory.js +7 -6
  67. package/dist/mappers/memory.js.map +1 -1
  68. package/dist/mappers/orchestrator-state.d.ts.map +1 -1
  69. package/dist/mappers/orchestrator-state.js +2 -1
  70. package/dist/mappers/orchestrator-state.js.map +1 -1
  71. package/dist/mappers/pin.d.ts.map +1 -1
  72. package/dist/mappers/pin.js +2 -1
  73. package/dist/mappers/pin.js.map +1 -1
  74. package/dist/mappers/run.d.ts.map +1 -1
  75. package/dist/mappers/run.js +4 -3
  76. package/dist/mappers/run.js.map +1 -1
  77. package/dist/mappers/spec-trace.d.ts +11 -0
  78. package/dist/mappers/spec-trace.d.ts.map +1 -0
  79. package/dist/mappers/spec-trace.js +59 -0
  80. package/dist/mappers/spec-trace.js.map +1 -0
  81. package/dist/mappers/task.d.ts.map +1 -1
  82. package/dist/mappers/task.js +4 -4
  83. package/dist/mappers/task.js.map +1 -1
  84. package/dist/mappers/worker.d.ts.map +1 -1
  85. package/dist/mappers/worker.js +2 -1
  86. package/dist/mappers/worker.js.map +1 -1
  87. package/dist/migrations-embedded.d.ts.map +1 -1
  88. package/dist/migrations-embedded.js +15 -0
  89. package/dist/migrations-embedded.js.map +1 -1
  90. package/dist/repo/anchor-repo.d.ts +2 -2
  91. package/dist/repo/anchor-repo.d.ts.map +1 -1
  92. package/dist/repo/anchor-repo.js +18 -17
  93. package/dist/repo/anchor-repo.js.map +1 -1
  94. package/dist/repo/attempt-repo.d.ts.map +1 -1
  95. package/dist/repo/attempt-repo.js +11 -10
  96. package/dist/repo/attempt-repo.js.map +1 -1
  97. package/dist/repo/candidate-repo.d.ts.map +1 -1
  98. package/dist/repo/candidate-repo.js +8 -7
  99. package/dist/repo/candidate-repo.js.map +1 -1
  100. package/dist/repo/claim-repo.d.ts +4 -4
  101. package/dist/repo/claim-repo.d.ts.map +1 -1
  102. package/dist/repo/claim-repo.js +14 -13
  103. package/dist/repo/claim-repo.js.map +1 -1
  104. package/dist/repo/compaction-repo.d.ts +4 -4
  105. package/dist/repo/compaction-repo.d.ts.map +1 -1
  106. package/dist/repo/compaction-repo.js +7 -6
  107. package/dist/repo/compaction-repo.js.map +1 -1
  108. package/dist/repo/deduplication-repo.d.ts.map +1 -1
  109. package/dist/repo/deduplication-repo.js +80 -57
  110. package/dist/repo/deduplication-repo.js.map +1 -1
  111. package/dist/repo/dep-repo.d.ts.map +1 -1
  112. package/dist/repo/dep-repo.js +90 -88
  113. package/dist/repo/dep-repo.js.map +1 -1
  114. package/dist/repo/doc-repo.d.ts +2 -63
  115. package/dist/repo/doc-repo.d.ts.map +1 -1
  116. package/dist/repo/doc-repo.js +6 -4
  117. package/dist/repo/doc-repo.js.map +1 -1
  118. package/dist/repo/doc-repo.types.d.ts +64 -0
  119. package/dist/repo/doc-repo.types.d.ts.map +1 -0
  120. package/dist/repo/doc-repo.types.js +2 -0
  121. package/dist/repo/doc-repo.types.js.map +1 -0
  122. package/dist/repo/edge-repo.d.ts.map +1 -1
  123. package/dist/repo/edge-repo.js +91 -81
  124. package/dist/repo/edge-repo.js.map +1 -1
  125. package/dist/repo/file-learning-repo.d.ts.map +1 -1
  126. package/dist/repo/file-learning-repo.js +7 -6
  127. package/dist/repo/file-learning-repo.js.map +1 -1
  128. package/dist/repo/guard-repo.d.ts +4 -4
  129. package/dist/repo/guard-repo.d.ts.map +1 -1
  130. package/dist/repo/guard-repo.js +8 -7
  131. package/dist/repo/guard-repo.js.map +1 -1
  132. package/dist/repo/index.d.ts +1 -0
  133. package/dist/repo/index.d.ts.map +1 -1
  134. package/dist/repo/index.js +1 -0
  135. package/dist/repo/index.js.map +1 -1
  136. package/dist/repo/label-repo.d.ts +4 -4
  137. package/dist/repo/label-repo.d.ts.map +1 -1
  138. package/dist/repo/label-repo.js +9 -8
  139. package/dist/repo/label-repo.js.map +1 -1
  140. package/dist/repo/learning-repo.d.ts +2 -2
  141. package/dist/repo/learning-repo.d.ts.map +1 -1
  142. package/dist/repo/learning-repo.js +37 -31
  143. package/dist/repo/learning-repo.js.map +1 -1
  144. package/dist/repo/memory-repo/document.d.ts +4 -0
  145. package/dist/repo/memory-repo/document.d.ts.map +1 -0
  146. package/dist/repo/memory-repo/document.js +205 -0
  147. package/dist/repo/memory-repo/document.js.map +1 -0
  148. package/dist/repo/memory-repo/link.d.ts +4 -0
  149. package/dist/repo/memory-repo/link.d.ts.map +1 -0
  150. package/dist/repo/memory-repo/link.js +124 -0
  151. package/dist/repo/memory-repo/link.js.map +1 -0
  152. package/dist/repo/memory-repo/property.d.ts +4 -0
  153. package/dist/repo/memory-repo/property.d.ts.map +1 -0
  154. package/dist/repo/memory-repo/property.js +56 -0
  155. package/dist/repo/memory-repo/property.js.map +1 -0
  156. package/dist/repo/memory-repo/shared.d.ts +28 -0
  157. package/dist/repo/memory-repo/shared.d.ts.map +1 -0
  158. package/dist/repo/memory-repo/shared.js +63 -0
  159. package/dist/repo/memory-repo/shared.js.map +1 -0
  160. package/dist/repo/memory-repo/source.d.ts +4 -0
  161. package/dist/repo/memory-repo/source.d.ts.map +1 -0
  162. package/dist/repo/memory-repo/source.js +58 -0
  163. package/dist/repo/memory-repo/source.js.map +1 -0
  164. package/dist/repo/memory-repo.d.ts +14 -10
  165. package/dist/repo/memory-repo.d.ts.map +1 -1
  166. package/dist/repo/memory-repo.js +8 -527
  167. package/dist/repo/memory-repo.js.map +1 -1
  168. package/dist/repo/message-repo.d.ts.map +1 -1
  169. package/dist/repo/message-repo.js +9 -8
  170. package/dist/repo/message-repo.js.map +1 -1
  171. package/dist/repo/orchestrator-state-repo.d.ts.map +1 -1
  172. package/dist/repo/orchestrator-state-repo.js +2 -1
  173. package/dist/repo/orchestrator-state-repo.js.map +1 -1
  174. package/dist/repo/pin-repo.d.ts.map +1 -1
  175. package/dist/repo/pin-repo.js +5 -4
  176. package/dist/repo/pin-repo.js.map +1 -1
  177. package/dist/repo/run-repo.d.ts.map +1 -1
  178. package/dist/repo/run-repo.js +11 -10
  179. package/dist/repo/run-repo.js.map +1 -1
  180. package/dist/repo/spec-trace-repo.d.ts +9 -0
  181. package/dist/repo/spec-trace-repo.d.ts.map +1 -0
  182. package/dist/repo/spec-trace-repo.filter.d.ts +3 -0
  183. package/dist/repo/spec-trace-repo.filter.d.ts.map +1 -0
  184. package/dist/repo/spec-trace-repo.filter.js +13 -0
  185. package/dist/repo/spec-trace-repo.filter.js.map +1 -0
  186. package/dist/repo/spec-trace-repo.js +323 -0
  187. package/dist/repo/spec-trace-repo.js.map +1 -0
  188. package/dist/repo/spec-trace-repo.types.d.ts +60 -0
  189. package/dist/repo/spec-trace-repo.types.d.ts.map +1 -0
  190. package/dist/repo/spec-trace-repo.types.js +2 -0
  191. package/dist/repo/spec-trace-repo.types.js.map +1 -0
  192. package/dist/repo/task-repo/factory.d.ts +4 -0
  193. package/dist/repo/task-repo/factory.d.ts.map +1 -0
  194. package/dist/repo/task-repo/factory.js +7 -0
  195. package/dist/repo/task-repo/factory.js.map +1 -0
  196. package/dist/repo/task-repo/read.d.ts +6 -0
  197. package/dist/repo/task-repo/read.d.ts.map +1 -0
  198. package/dist/repo/task-repo/read.js +332 -0
  199. package/dist/repo/task-repo/read.js.map +1 -0
  200. package/dist/repo/task-repo/shared.d.ts +10 -0
  201. package/dist/repo/task-repo/shared.d.ts.map +1 -0
  202. package/dist/repo/task-repo/shared.js +29 -0
  203. package/dist/repo/task-repo/shared.js.map +1 -0
  204. package/dist/repo/task-repo/write.d.ts +6 -0
  205. package/dist/repo/task-repo/write.d.ts.map +1 -0
  206. package/dist/repo/task-repo/write.js +182 -0
  207. package/dist/repo/task-repo/write.js.map +1 -0
  208. package/dist/repo/task-repo.d.ts +5 -4
  209. package/dist/repo/task-repo.d.ts.map +1 -1
  210. package/dist/repo/task-repo.js +2 -520
  211. package/dist/repo/task-repo.js.map +1 -1
  212. package/dist/repo/tracked-project-repo.d.ts.map +1 -1
  213. package/dist/repo/tracked-project-repo.js +6 -5
  214. package/dist/repo/tracked-project-repo.js.map +1 -1
  215. package/dist/repo/worker-repo.d.ts.map +1 -1
  216. package/dist/repo/worker-repo.js +60 -47
  217. package/dist/repo/worker-repo.js.map +1 -1
  218. package/dist/schemas/index.d.ts +4 -2
  219. package/dist/schemas/index.d.ts.map +1 -1
  220. package/dist/schemas/index.js +2 -1
  221. package/dist/schemas/index.js.map +1 -1
  222. package/dist/schemas/sync-events.d.ts +25 -0
  223. package/dist/schemas/sync-events.d.ts.map +1 -0
  224. package/dist/schemas/sync-events.js +23 -0
  225. package/dist/schemas/sync-events.js.map +1 -0
  226. package/dist/schemas/sync.d.ts +20 -10
  227. package/dist/schemas/sync.d.ts.map +1 -1
  228. package/dist/schemas/sync.js +10 -4
  229. package/dist/schemas/sync.js.map +1 -1
  230. package/dist/services/agent-service.d.ts +4 -4
  231. package/dist/services/agent-service.d.ts.map +1 -1
  232. package/dist/services/agent-service.js.map +1 -1
  233. package/dist/services/anchor/anchor-service-core-ops.d.ts +125 -0
  234. package/dist/services/anchor/anchor-service-core-ops.d.ts.map +1 -0
  235. package/dist/services/anchor/anchor-service-core-ops.js +41 -0
  236. package/dist/services/anchor/anchor-service-core-ops.js.map +1 -0
  237. package/dist/services/anchor/anchor-service-deps.d.ts +10 -0
  238. package/dist/services/anchor/anchor-service-deps.d.ts.map +1 -0
  239. package/dist/services/anchor/anchor-service-deps.js +2 -0
  240. package/dist/services/anchor/anchor-service-deps.js.map +1 -0
  241. package/dist/services/anchor/anchor-service-ops.d.ts +296 -0
  242. package/dist/services/anchor/anchor-service-ops.d.ts.map +1 -0
  243. package/dist/services/anchor/anchor-service-ops.js +9 -0
  244. package/dist/services/anchor/anchor-service-ops.js.map +1 -0
  245. package/dist/services/anchor/anchor-service-state-ops.d.ts +116 -0
  246. package/dist/services/anchor/anchor-service-state-ops.d.ts.map +1 -0
  247. package/dist/services/anchor/anchor-service-state-ops.js +150 -0
  248. package/dist/services/anchor/anchor-service-state-ops.js.map +1 -0
  249. package/dist/services/anchor/anchor-service-validation.d.ts +7 -0
  250. package/dist/services/anchor/anchor-service-validation.d.ts.map +1 -0
  251. package/dist/services/anchor/anchor-service-validation.js +114 -0
  252. package/dist/services/anchor/anchor-service-validation.js.map +1 -0
  253. package/dist/services/anchor/anchor-service-verification-ops.d.ts +71 -0
  254. package/dist/services/anchor/anchor-service-verification-ops.d.ts.map +1 -0
  255. package/dist/services/anchor/anchor-service-verification-ops.js +169 -0
  256. package/dist/services/anchor/anchor-service-verification-ops.js.map +1 -0
  257. package/dist/services/anchor/anchor-verification-batch.d.ts +12 -0
  258. package/dist/services/anchor/anchor-verification-batch.d.ts.map +1 -0
  259. package/dist/services/anchor/anchor-verification-batch.js +109 -0
  260. package/dist/services/anchor/anchor-verification-batch.js.map +1 -0
  261. package/dist/services/anchor/anchor-verification-single.d.ts +7 -0
  262. package/dist/services/anchor/anchor-verification-single.d.ts.map +1 -0
  263. package/dist/services/anchor/anchor-verification-single.js +407 -0
  264. package/dist/services/anchor/anchor-verification-single.js.map +1 -0
  265. package/dist/services/anchor/anchor-verification-utils.d.ts +19 -0
  266. package/dist/services/anchor/anchor-verification-utils.d.ts.map +1 -0
  267. package/dist/services/anchor/anchor-verification-utils.js +107 -0
  268. package/dist/services/anchor/anchor-verification-utils.js.map +1 -0
  269. package/dist/services/anchor-service.d.ts +12 -90
  270. package/dist/services/anchor-service.d.ts.map +1 -1
  271. package/dist/services/anchor-service.js +5 -530
  272. package/dist/services/anchor-service.js.map +1 -1
  273. package/dist/services/anchor-verification.d.ts +9 -60
  274. package/dist/services/anchor-verification.d.ts.map +1 -1
  275. package/dist/services/anchor-verification.js +5 -796
  276. package/dist/services/anchor-verification.js.map +1 -1
  277. package/dist/services/ast-grep-service/patterns.d.ts +90 -0
  278. package/dist/services/ast-grep-service/patterns.d.ts.map +1 -0
  279. package/dist/services/ast-grep-service/patterns.js +261 -0
  280. package/dist/services/ast-grep-service/patterns.js.map +1 -0
  281. package/dist/services/ast-grep-service.d.ts +2 -13
  282. package/dist/services/ast-grep-service.d.ts.map +1 -1
  283. package/dist/services/ast-grep-service.js +3 -261
  284. package/dist/services/ast-grep-service.js.map +1 -1
  285. package/dist/services/auto-sync-service.d.ts +3 -3
  286. package/dist/services/auto-sync-service.d.ts.map +1 -1
  287. package/dist/services/auto-sync-service.js +12 -13
  288. package/dist/services/auto-sync-service.js.map +1 -1
  289. package/dist/services/compaction-service.d.ts +6 -6
  290. package/dist/services/compaction-service.d.ts.map +1 -1
  291. package/dist/services/compaction-service.js +11 -7
  292. package/dist/services/compaction-service.js.map +1 -1
  293. package/dist/services/cycle-scan-service.d.ts +1 -27
  294. package/dist/services/cycle-scan-service.d.ts.map +1 -1
  295. package/dist/services/cycle-scan-service.js +1 -876
  296. package/dist/services/cycle-scan-service.js.map +1 -1
  297. package/dist/services/daemon-service/process.d.ts +93 -0
  298. package/dist/services/daemon-service/process.d.ts.map +1 -0
  299. package/dist/services/daemon-service/process.js +325 -0
  300. package/dist/services/daemon-service/process.js.map +1 -0
  301. package/dist/services/daemon-service/templates.d.ts +88 -0
  302. package/dist/services/daemon-service/templates.d.ts.map +1 -0
  303. package/dist/services/daemon-service/templates.js +119 -0
  304. package/dist/services/daemon-service/templates.js.map +1 -0
  305. package/dist/services/daemon-service.d.ts +8 -160
  306. package/dist/services/daemon-service.d.ts.map +1 -1
  307. package/dist/services/daemon-service.js +4 -440
  308. package/dist/services/daemon-service.js.map +1 -1
  309. package/dist/services/doc-service.d.ts +1 -41
  310. package/dist/services/doc-service.d.ts.map +1 -1
  311. package/dist/services/doc-service.js +1 -780
  312. package/dist/services/doc-service.js.map +1 -1
  313. package/dist/services/edge-service.d.ts +6 -6
  314. package/dist/services/edge-service.d.ts.map +1 -1
  315. package/dist/services/edge-service.js.map +1 -1
  316. package/dist/services/embedding-service.d.ts +1 -201
  317. package/dist/services/embedding-service.d.ts.map +1 -1
  318. package/dist/services/embedding-service.js +1 -465
  319. package/dist/services/embedding-service.js.map +1 -1
  320. package/dist/services/feedback-tracker.d.ts +2 -2
  321. package/dist/services/feedback-tracker.d.ts.map +1 -1
  322. package/dist/services/feedback-tracker.js.map +1 -1
  323. package/dist/services/file-watcher-service/shared.d.ts +76 -0
  324. package/dist/services/file-watcher-service/shared.d.ts.map +1 -0
  325. package/dist/services/file-watcher-service/shared.js +43 -0
  326. package/dist/services/file-watcher-service/shared.js.map +1 -0
  327. package/dist/services/file-watcher-service.d.ts +2 -42
  328. package/dist/services/file-watcher-service.d.ts.map +1 -1
  329. package/dist/services/file-watcher-service.js +1 -46
  330. package/dist/services/file-watcher-service.js.map +1 -1
  331. package/dist/services/graph-expansion/from-files.d.ts +14 -0
  332. package/dist/services/graph-expansion/from-files.d.ts.map +1 -0
  333. package/dist/services/graph-expansion/from-files.js +187 -0
  334. package/dist/services/graph-expansion/from-files.js.map +1 -0
  335. package/dist/services/graph-expansion/live.d.ts +11 -0
  336. package/dist/services/graph-expansion/live.d.ts.map +1 -0
  337. package/dist/services/graph-expansion/live.js +263 -0
  338. package/dist/services/graph-expansion/live.js.map +1 -0
  339. package/dist/services/graph-expansion.d.ts +17 -20
  340. package/dist/services/graph-expansion.d.ts.map +1 -1
  341. package/dist/services/graph-expansion.js +2 -439
  342. package/dist/services/graph-expansion.js.map +1 -1
  343. package/dist/services/guard-service.d.ts +2 -2
  344. package/dist/services/guard-service.d.ts.map +1 -1
  345. package/dist/services/guard-service.js.map +1 -1
  346. package/dist/services/index.d.ts +3 -1
  347. package/dist/services/index.d.ts.map +1 -1
  348. package/dist/services/index.js +3 -1
  349. package/dist/services/index.js.map +1 -1
  350. package/dist/services/learning-service.d.ts +4 -4
  351. package/dist/services/learning-service.d.ts.map +1 -1
  352. package/dist/services/learning-service.js.map +1 -1
  353. package/dist/services/llm-service.d.ts +4 -4
  354. package/dist/services/llm-service.d.ts.map +1 -1
  355. package/dist/services/llm-service.js.map +1 -1
  356. package/dist/services/memory-retriever-service.d.ts.map +1 -1
  357. package/dist/services/memory-retriever-service.js.map +1 -1
  358. package/dist/services/memory-service.d.ts +1 -48
  359. package/dist/services/memory-service.d.ts.map +1 -1
  360. package/dist/services/memory-service.js +1 -1060
  361. package/dist/services/memory-service.js.map +1 -1
  362. package/dist/services/migration-service.d.ts +6 -6
  363. package/dist/services/migration-service.d.ts.map +1 -1
  364. package/dist/services/migration-service.js +6 -2
  365. package/dist/services/migration-service.js.map +1 -1
  366. package/dist/services/orchestrator-service.d.ts +2 -2
  367. package/dist/services/orchestrator-service.d.ts.map +1 -1
  368. package/dist/services/orchestrator-service.js.map +1 -1
  369. package/dist/services/pin-service.d.ts.map +1 -1
  370. package/dist/services/pin-service.js +21 -28
  371. package/dist/services/pin-service.js.map +1 -1
  372. package/dist/services/promotion-service.d.ts +4 -4
  373. package/dist/services/promotion-service.d.ts.map +1 -1
  374. package/dist/services/promotion-service.js.map +1 -1
  375. package/dist/services/query-expansion-service.d.ts +2 -2
  376. package/dist/services/query-expansion-service.d.ts.map +1 -1
  377. package/dist/services/query-expansion-service.js.map +1 -1
  378. package/dist/services/reflect-service.d.ts +6 -6
  379. package/dist/services/reflect-service.d.ts.map +1 -1
  380. package/dist/services/reflect-service.js.map +1 -1
  381. package/dist/services/reranker-service.d.ts +2 -2
  382. package/dist/services/reranker-service.d.ts.map +1 -1
  383. package/dist/services/reranker-service.js.map +1 -1
  384. package/dist/services/retriever-scoring.d.ts +52 -0
  385. package/dist/services/retriever-scoring.d.ts.map +1 -0
  386. package/dist/services/retriever-scoring.js +146 -0
  387. package/dist/services/retriever-scoring.js.map +1 -0
  388. package/dist/services/retriever-service.d.ts.map +1 -1
  389. package/dist/services/retriever-service.js +1 -191
  390. package/dist/services/retriever-service.js.map +1 -1
  391. package/dist/services/run-heartbeat-service.d.ts +10 -10
  392. package/dist/services/run-heartbeat-service.d.ts.map +1 -1
  393. package/dist/services/run-heartbeat-service.js.map +1 -1
  394. package/dist/services/score-service.d.ts +2 -2
  395. package/dist/services/score-service.d.ts.map +1 -1
  396. package/dist/services/score-service.js.map +1 -1
  397. package/dist/services/spec-trace-service.d.ts +2 -0
  398. package/dist/services/spec-trace-service.d.ts.map +1 -0
  399. package/dist/services/spec-trace-service.js +2 -0
  400. package/dist/services/spec-trace-service.js.map +1 -0
  401. package/dist/services/stream-service.d.ts +31 -0
  402. package/dist/services/stream-service.d.ts.map +1 -0
  403. package/dist/services/stream-service.js +162 -0
  404. package/dist/services/stream-service.js.map +1 -0
  405. package/dist/services/swarm-verification/shared.d.ts +71 -0
  406. package/dist/services/swarm-verification/shared.d.ts.map +1 -0
  407. package/dist/services/swarm-verification/shared.js +108 -0
  408. package/dist/services/swarm-verification/shared.js.map +1 -0
  409. package/dist/services/swarm-verification.d.ts +4 -68
  410. package/dist/services/swarm-verification.d.ts.map +1 -1
  411. package/dist/services/swarm-verification.js +2 -122
  412. package/dist/services/swarm-verification.js.map +1 -1
  413. package/dist/services/sync/converters.d.ts +63 -0
  414. package/dist/services/sync/converters.d.ts.map +1 -0
  415. package/dist/services/sync/converters.js +253 -0
  416. package/dist/services/sync/converters.js.map +1 -0
  417. package/dist/services/sync/entity-export.d.ts +22 -0
  418. package/dist/services/sync/entity-export.d.ts.map +1 -0
  419. package/dist/services/sync/entity-export.js +15 -0
  420. package/dist/services/sync/entity-export.js.map +1 -0
  421. package/dist/services/sync/entity-import.d.ts +22 -0
  422. package/dist/services/sync/entity-import.d.ts.map +1 -0
  423. package/dist/services/sync/entity-import.js +15 -0
  424. package/dist/services/sync/entity-import.js.map +1 -0
  425. package/dist/services/sync/file-utils.d.ts +23 -0
  426. package/dist/services/sync/file-utils.d.ts.map +1 -0
  427. package/dist/services/sync/file-utils.js +97 -0
  428. package/dist/services/sync/file-utils.js.map +1 -0
  429. package/dist/services/sync/index.d.ts +3 -0
  430. package/dist/services/sync/index.d.ts.map +1 -0
  431. package/dist/services/sync/index.js +2 -0
  432. package/dist/services/sync/index.js.map +1 -0
  433. package/dist/services/sync/service.d.ts +2 -0
  434. package/dist/services/sync/service.d.ts.map +1 -0
  435. package/dist/services/sync/service.js +2 -0
  436. package/dist/services/sync/service.js.map +1 -0
  437. package/dist/services/sync/sync-helpers.d.ts +54 -0
  438. package/dist/services/sync/sync-helpers.d.ts.map +1 -0
  439. package/dist/services/sync/sync-helpers.js +245 -0
  440. package/dist/services/sync/sync-helpers.js.map +1 -0
  441. package/dist/services/sync/types.d.ts +104 -0
  442. package/dist/services/sync/types.d.ts.map +1 -0
  443. package/dist/services/sync/types.js +5 -0
  444. package/dist/services/sync/types.js.map +1 -0
  445. package/dist/services/task-service/internals.d.ts +36 -0
  446. package/dist/services/task-service/internals.d.ts.map +1 -0
  447. package/dist/services/task-service/internals.js +270 -0
  448. package/dist/services/task-service/internals.js.map +1 -0
  449. package/dist/services/task-service.d.ts +2 -1
  450. package/dist/services/task-service.d.ts.map +1 -1
  451. package/dist/services/task-service.js +28 -236
  452. package/dist/services/task-service.js.map +1 -1
  453. package/dist/services/tracing-service.d.ts +2 -2
  454. package/dist/services/tracing-service.d.ts.map +1 -1
  455. package/dist/services/tracing-service.js.map +1 -1
  456. package/dist/services/transcript-adapter.d.ts +6 -6
  457. package/dist/services/transcript-adapter.d.ts.map +1 -1
  458. package/dist/services/transcript-adapter.js +3 -8
  459. package/dist/services/transcript-adapter.js.map +1 -1
  460. package/dist/services/validation-service.d.ts +8 -8
  461. package/dist/services/validation-service.d.ts.map +1 -1
  462. package/dist/services/validation-service.js.map +1 -1
  463. package/dist/services/verify-service.d.ts +2 -2
  464. package/dist/services/verify-service.d.ts.map +1 -1
  465. package/dist/services/verify-service.js.map +1 -1
  466. package/dist/services/worker-process/runtime.d.ts +51 -0
  467. package/dist/services/worker-process/runtime.d.ts.map +1 -0
  468. package/dist/services/worker-process/runtime.js +150 -0
  469. package/dist/services/worker-process/runtime.js.map +1 -0
  470. package/dist/services/worker-process.d.ts +3 -18
  471. package/dist/services/worker-process.d.ts.map +1 -1
  472. package/dist/services/worker-process.js +3 -173
  473. package/dist/services/worker-process.js.map +1 -1
  474. package/dist/services/worker-service.d.ts +6 -6
  475. package/dist/services/worker-service.d.ts.map +1 -1
  476. package/dist/services/worker-service.js.map +1 -1
  477. package/dist/utils/db-result.d.ts +14 -0
  478. package/dist/utils/db-result.d.ts.map +1 -0
  479. package/dist/utils/db-result.js +37 -0
  480. package/dist/utils/db-result.js.map +1 -0
  481. package/dist/utils/doc-renderer.d.ts +10 -10
  482. package/dist/utils/doc-renderer.d.ts.map +1 -1
  483. package/dist/utils/doc-renderer.js.map +1 -1
  484. package/dist/utils/ears-validator.d.ts +2 -2
  485. package/dist/utils/ears-validator.d.ts.map +1 -1
  486. package/dist/utils/ears-validator.js.map +1 -1
  487. package/dist/utils/file-path.d.ts +27 -0
  488. package/dist/utils/file-path.d.ts.map +1 -0
  489. package/dist/utils/file-path.js +77 -0
  490. package/dist/utils/file-path.js.map +1 -0
  491. package/dist/utils/glob.d.ts +2 -11
  492. package/dist/utils/glob.d.ts.map +1 -1
  493. package/dist/utils/glob.js +22 -13
  494. package/dist/utils/glob.js.map +1 -1
  495. package/dist/utils/spec-discovery.d.ts +34 -0
  496. package/dist/utils/spec-discovery.d.ts.map +1 -0
  497. package/dist/utils/spec-discovery.js +344 -0
  498. package/dist/utils/spec-discovery.js.map +1 -0
  499. package/dist/utils/toml-config.d.ts +7 -2
  500. package/dist/utils/toml-config.d.ts.map +1 -1
  501. package/dist/utils/toml-config.js +106 -2
  502. package/dist/utils/toml-config.js.map +1 -1
  503. package/dist/utils/ulid.d.ts +8 -0
  504. package/dist/utils/ulid.d.ts.map +1 -0
  505. package/dist/utils/ulid.js +30 -0
  506. package/dist/utils/ulid.js.map +1 -0
  507. package/dist/worker/hooks.d.ts +10 -10
  508. package/dist/worker/hooks.d.ts.map +1 -1
  509. package/dist/worker/run-worker.d.ts.map +1 -1
  510. package/dist/worker/run-worker.js.map +1 -1
  511. package/migrations/033_sync_events.sql +33 -0
  512. package/migrations/034_spec_test_traceability.sql +51 -0
  513. package/migrations/035_anchor_schema_repair.sql +82 -0
  514. package/package.json +3 -2
  515. package/dist/services/sync-service.d.ts +0 -247
  516. package/dist/services/sync-service.d.ts.map +0 -1
  517. package/dist/services/sync-service.js.map +0 -1
@@ -0,0 +1,332 @@
1
+ import { Effect } from "effect";
2
+ import { DatabaseError } from "../../errors.js";
3
+ import { rowToTask } from "../../mappers/task.js";
4
+ import { escapeLikePattern } from "../../utils/sql.js";
5
+ import { chunkBySqlLimit } from "./shared.js";
6
+ export const createTaskRepositoryReadService = (db) => ({
7
+ findById: (id) => Effect.try({
8
+ try: () => {
9
+ const row = db.prepare("SELECT * FROM tasks WHERE id = ?").get(id);
10
+ return row ? rowToTask(row) : null;
11
+ },
12
+ catch: (cause) => new DatabaseError({ cause })
13
+ }),
14
+ findByIds: (ids) => Effect.try({
15
+ try: () => {
16
+ if (ids.length === 0)
17
+ return [];
18
+ const rows = [];
19
+ for (const chunk of chunkBySqlLimit(ids)) {
20
+ const placeholders = chunk.map(() => "?").join(",");
21
+ const chunkRows = db.prepare(`SELECT * FROM tasks WHERE id IN (${placeholders})`).all(...chunk);
22
+ rows.push(...chunkRows);
23
+ }
24
+ return rows.map(rowToTask);
25
+ },
26
+ catch: (cause) => new DatabaseError({ cause })
27
+ }),
28
+ findAll: (filter) => Effect.try({
29
+ try: () => {
30
+ const conditions = [];
31
+ const params = [];
32
+ if (filter?.status) {
33
+ if (Array.isArray(filter.status)) {
34
+ const placeholders = filter.status.map(() => "?").join(",");
35
+ conditions.push(`status IN (${placeholders})`);
36
+ params.push(...filter.status);
37
+ }
38
+ else {
39
+ conditions.push("status = ?");
40
+ params.push(filter.status);
41
+ }
42
+ }
43
+ if (filter?.parentId !== undefined) {
44
+ if (filter.parentId === null) {
45
+ conditions.push("parent_id IS NULL");
46
+ }
47
+ else {
48
+ conditions.push("parent_id = ?");
49
+ params.push(filter.parentId);
50
+ }
51
+ }
52
+ // Search filter: case-insensitive search in title and description
53
+ if (filter?.search) {
54
+ const searchPattern = `%${escapeLikePattern(filter.search)}%`;
55
+ conditions.push("(title LIKE ? ESCAPE '\\' COLLATE NOCASE OR description LIKE ? ESCAPE '\\' COLLATE NOCASE)");
56
+ params.push(searchPattern, searchPattern);
57
+ }
58
+ // Cursor-based pagination: fetch tasks after the cursor position
59
+ // Order is score DESC, id ASC, so "after cursor" means:
60
+ // (score < cursor.score) OR (score = cursor.score AND id > cursor.id)
61
+ if (filter?.cursor) {
62
+ conditions.push("(score < ? OR (score = ? AND id > ?))");
63
+ params.push(filter.cursor.score, filter.cursor.score, filter.cursor.id);
64
+ }
65
+ // Exclude tasks with active claims (thundering herd prevention)
66
+ // Uses idx_claims_active_task partial index for efficient lookup
67
+ if (filter?.excludeClaimed) {
68
+ conditions.push("NOT EXISTS (SELECT 1 FROM task_claims WHERE task_id = tasks.id AND status = 'active')");
69
+ }
70
+ // Label filters: include tasks with ALL specified labels
71
+ if (filter?.labels && filter.labels.length > 0) {
72
+ for (const label of filter.labels) {
73
+ conditions.push(`EXISTS (SELECT 1 FROM task_label_assignments tla JOIN task_labels tl ON tl.id = tla.label_id WHERE tla.task_id = tasks.id AND lower(tl.name) = lower(?))`);
74
+ params.push(label);
75
+ }
76
+ }
77
+ // Exclude label filters: exclude tasks with ANY specified label
78
+ if (filter?.excludeLabels && filter.excludeLabels.length > 0) {
79
+ for (const label of filter.excludeLabels) {
80
+ conditions.push(`NOT EXISTS (SELECT 1 FROM task_label_assignments tla JOIN task_labels tl ON tl.id = tla.label_id WHERE tla.task_id = tasks.id AND lower(tl.name) = lower(?))`);
81
+ params.push(label);
82
+ }
83
+ }
84
+ const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
85
+ // Use parameterized query for LIMIT to prevent SQL injection
86
+ let limitClause = "";
87
+ if (filter?.limit != null && filter.limit > 0) {
88
+ limitClause = "LIMIT ?";
89
+ params.push(Math.floor(filter.limit));
90
+ }
91
+ const sql = `SELECT * FROM tasks ${where} ORDER BY score DESC, id ASC ${limitClause}`;
92
+ const rows = db.prepare(sql).all(...params);
93
+ return rows.map(rowToTask);
94
+ },
95
+ catch: (cause) => new DatabaseError({ cause })
96
+ }),
97
+ findByParent: (parentId) => Effect.try({
98
+ try: () => {
99
+ const rows = parentId === null
100
+ ? db.prepare("SELECT * FROM tasks WHERE parent_id IS NULL ORDER BY score DESC").all()
101
+ : db.prepare("SELECT * FROM tasks WHERE parent_id = ? ORDER BY score DESC").all(parentId);
102
+ return rows.map(rowToTask);
103
+ },
104
+ catch: (cause) => new DatabaseError({ cause })
105
+ }),
106
+ getChildIds: (id) => Effect.try({
107
+ try: () => {
108
+ const rows = db.prepare("SELECT id FROM tasks WHERE parent_id = ?").all(id);
109
+ return rows.map(r => r.id);
110
+ },
111
+ catch: (cause) => new DatabaseError({ cause })
112
+ }),
113
+ getChildIdsForMany: (ids) => Effect.try({
114
+ try: () => {
115
+ const result = new Map();
116
+ if (ids.length === 0)
117
+ return new Map();
118
+ // Initialize all requested IDs with empty arrays
119
+ for (const id of ids) {
120
+ result.set(id, []);
121
+ }
122
+ for (const chunk of chunkBySqlLimit(ids)) {
123
+ const placeholders = chunk.map(() => "?").join(",");
124
+ const rows = db.prepare(`SELECT id, parent_id FROM tasks WHERE parent_id IN (${placeholders})`).all(...chunk);
125
+ // Group by parent_id - use push() for O(1) insertion instead of spread for O(n)
126
+ for (const row of rows) {
127
+ const existing = result.get(row.parent_id);
128
+ if (existing) {
129
+ existing.push(row.id);
130
+ }
131
+ }
132
+ }
133
+ const output = new Map();
134
+ for (const [taskId, childIds] of result.entries()) {
135
+ output.set(taskId, childIds);
136
+ }
137
+ return output;
138
+ },
139
+ catch: (cause) => new DatabaseError({ cause })
140
+ }),
141
+ getAncestorChain: (id) => Effect.try({
142
+ try: () => {
143
+ // Use recursive CTE to get the task and all its ancestors in one query
144
+ // Returns from the given task to root (depth-first ordering)
145
+ const rows = db.prepare(`
146
+ WITH RECURSIVE ancestors AS (
147
+ SELECT t.*, 1 as depth FROM tasks t WHERE t.id = ?
148
+ UNION ALL
149
+ SELECT t.*, a.depth + 1 FROM tasks t
150
+ JOIN ancestors a ON t.id = a.parent_id
151
+ WHERE a.depth < 100 AND t.id != ?
152
+ )
153
+ SELECT * FROM ancestors ORDER BY depth ASC
154
+ `).all(id, id);
155
+ return rows.map(rowToTask);
156
+ },
157
+ catch: (cause) => new DatabaseError({ cause })
158
+ }),
159
+ getDescendants: (id, maxDepth = 10) => Effect.try({
160
+ try: () => {
161
+ // Use recursive CTE to get the task and all its descendants in one query
162
+ // Returns the root task first, then all descendants ordered by depth
163
+ // maxDepth limits recursion to prevent unbounded traversal
164
+ const rows = db.prepare(`
165
+ WITH RECURSIVE descendants AS (
166
+ SELECT t.*, 1 as depth FROM tasks t WHERE t.id = ?
167
+ UNION ALL
168
+ SELECT t.*, d.depth + 1 FROM tasks t
169
+ JOIN descendants d ON t.parent_id = d.id
170
+ WHERE d.depth < ?
171
+ )
172
+ SELECT * FROM descendants ORDER BY depth ASC
173
+ `).all(id, maxDepth);
174
+ return rows.map(rowToTask);
175
+ },
176
+ catch: (cause) => new DatabaseError({ cause })
177
+ }),
178
+ getGroupContextForMany: (ids) => Effect.try({
179
+ try: () => {
180
+ const result = new Map();
181
+ if (ids.length === 0)
182
+ return result;
183
+ for (const chunk of chunkBySqlLimit(ids)) {
184
+ const placeholders = chunk.map(() => "?").join(",");
185
+ const rows = db.prepare(`SELECT id, group_context
186
+ FROM tasks
187
+ WHERE id IN (${placeholders})
188
+ AND group_context IS NOT NULL
189
+ AND length(trim(group_context)) > 0`).all(...chunk);
190
+ for (const row of rows) {
191
+ if (row.group_context != null) {
192
+ result.set(row.id, row.group_context);
193
+ }
194
+ }
195
+ }
196
+ return result;
197
+ },
198
+ catch: (cause) => new DatabaseError({ cause })
199
+ }),
200
+ resolveEffectiveGroupContextForMany: (ids) => Effect.try({
201
+ try: () => {
202
+ const result = new Map();
203
+ if (ids.length === 0)
204
+ return result;
205
+ for (const chunk of chunkBySqlLimit(ids)) {
206
+ const valuesClause = chunk.map(() => "(?)").join(", ");
207
+ const rows = db.prepare(`WITH RECURSIVE
208
+ targets(target_id) AS (
209
+ VALUES ${valuesClause}
210
+ ),
211
+ ancestors(target_id, node_id, distance, path) AS (
212
+ SELECT t.target_id, t.target_id, 0, ',' || t.target_id || ','
213
+ FROM targets t
214
+ UNION ALL
215
+ SELECT a.target_id, parent.id, a.distance + 1, a.path || parent.id || ','
216
+ FROM ancestors a
217
+ JOIN tasks current ON current.id = a.node_id
218
+ JOIN tasks parent ON parent.id = current.parent_id
219
+ WHERE a.distance < 1000
220
+ AND instr(a.path, ',' || parent.id || ',') = 0
221
+ ),
222
+ descendants(target_id, node_id, distance, path) AS (
223
+ SELECT t.target_id, t.target_id, 0, ',' || t.target_id || ','
224
+ FROM targets t
225
+ UNION ALL
226
+ SELECT d.target_id, child.id, d.distance + 1, d.path || child.id || ','
227
+ FROM descendants d
228
+ JOIN tasks child ON child.parent_id = d.node_id
229
+ WHERE d.distance < 1000
230
+ AND instr(d.path, ',' || child.id || ',') = 0
231
+ ),
232
+ lineage(target_id, node_id, distance) AS (
233
+ SELECT target_id, node_id, distance FROM ancestors
234
+ UNION
235
+ SELECT target_id, node_id, distance FROM descendants
236
+ ),
237
+ ranked_sources AS (
238
+ SELECT l.target_id,
239
+ source.id AS source_id,
240
+ source.group_context,
241
+ ROW_NUMBER() OVER (
242
+ PARTITION BY l.target_id
243
+ ORDER BY l.distance ASC, source.updated_at DESC, source.id ASC
244
+ ) AS rn
245
+ FROM lineage l
246
+ JOIN tasks source ON source.id = l.node_id
247
+ WHERE source.group_context IS NOT NULL
248
+ AND length(trim(source.group_context)) > 0
249
+ )
250
+ SELECT target_id, source_id, group_context
251
+ FROM ranked_sources
252
+ WHERE rn = 1
253
+ ORDER BY target_id ASC`).all(...chunk);
254
+ for (const row of rows) {
255
+ result.set(row.target_id, {
256
+ sourceTaskId: row.source_id,
257
+ context: row.group_context
258
+ });
259
+ }
260
+ }
261
+ return result;
262
+ },
263
+ catch: (cause) => new DatabaseError({ cause })
264
+ }),
265
+ count: (filter) => Effect.try({
266
+ try: () => {
267
+ const conditions = [];
268
+ const params = [];
269
+ if (filter?.status) {
270
+ if (Array.isArray(filter.status)) {
271
+ const placeholders = filter.status.map(() => "?").join(",");
272
+ conditions.push(`status IN (${placeholders})`);
273
+ params.push(...filter.status);
274
+ }
275
+ else {
276
+ conditions.push("status = ?");
277
+ params.push(filter.status);
278
+ }
279
+ }
280
+ if (filter?.parentId !== undefined) {
281
+ if (filter.parentId === null) {
282
+ conditions.push("parent_id IS NULL");
283
+ }
284
+ else {
285
+ conditions.push("parent_id = ?");
286
+ params.push(filter.parentId);
287
+ }
288
+ }
289
+ // Search filter for count (same as findAll)
290
+ if (filter?.search) {
291
+ const searchPattern = `%${escapeLikePattern(filter.search)}%`;
292
+ conditions.push("(title LIKE ? ESCAPE '\\' COLLATE NOCASE OR description LIKE ? ESCAPE '\\' COLLATE NOCASE)");
293
+ params.push(searchPattern, searchPattern);
294
+ }
295
+ // Exclude claimed tasks (same as findAll)
296
+ if (filter?.excludeClaimed) {
297
+ conditions.push("NOT EXISTS (SELECT 1 FROM task_claims WHERE task_id = tasks.id AND status = 'active')");
298
+ }
299
+ // Label filters (same as findAll)
300
+ if (filter?.labels && filter.labels.length > 0) {
301
+ for (const label of filter.labels) {
302
+ conditions.push(`EXISTS (SELECT 1 FROM task_label_assignments tla JOIN task_labels tl ON tl.id = tla.label_id WHERE tla.task_id = tasks.id AND lower(tl.name) = lower(?))`);
303
+ params.push(label);
304
+ }
305
+ }
306
+ if (filter?.excludeLabels && filter.excludeLabels.length > 0) {
307
+ for (const label of filter.excludeLabels) {
308
+ conditions.push(`NOT EXISTS (SELECT 1 FROM task_label_assignments tla JOIN task_labels tl ON tl.id = tla.label_id WHERE tla.task_id = tasks.id AND lower(tl.name) = lower(?))`);
309
+ params.push(label);
310
+ }
311
+ }
312
+ // Note: cursor is intentionally not included in count - we want total matching records
313
+ const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
314
+ const result = db.prepare(`SELECT COUNT(*) as cnt FROM tasks ${where}`).get(...params);
315
+ if (!result)
316
+ return 0;
317
+ return result.cnt;
318
+ },
319
+ catch: (cause) => new DatabaseError({ cause })
320
+ }),
321
+ getVerifyCmd: (taskId) => Effect.try({
322
+ try: () => {
323
+ const row = db.prepare("SELECT verify_cmd, verify_schema FROM tasks WHERE id = ?").get(taskId);
324
+ return {
325
+ cmd: row?.verify_cmd ?? null,
326
+ schema: row?.verify_schema ?? null,
327
+ };
328
+ },
329
+ catch: (cause) => new DatabaseError({ cause })
330
+ }),
331
+ });
332
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/repo/task-repo/read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { SqliteDatabase } from "../../db.js";
2
+ export declare const chunkBySqlLimit: <T>(values: readonly T[], chunkSize?: number) => ReadonlyArray<ReadonlyArray<T>>;
3
+ export declare const runImmediateTransaction: <T>(db: SqliteDatabase, body: () => T) => {
4
+ ok: true;
5
+ value: T;
6
+ } | {
7
+ ok: false;
8
+ error: unknown;
9
+ };
10
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/repo/task-repo/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD,eAAO,MAAM,eAAe,GAAI,CAAC,EAC/B,QAAQ,SAAS,CAAC,EAAE,EACpB,YAAW,MAA0B,KACpC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAShC,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,CAAC,EACvC,IAAI,cAAc,EAClB,MAAM,MAAM,CAAC,KACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CActD,CAAA"}
@@ -0,0 +1,29 @@
1
+ const MAX_SQL_VARIABLES = 900;
2
+ export const chunkBySqlLimit = (values, chunkSize = MAX_SQL_VARIABLES) => {
3
+ if (values.length === 0) {
4
+ return [];
5
+ }
6
+ const chunks = [];
7
+ for (let i = 0; i < values.length; i += chunkSize) {
8
+ chunks.push(values.slice(i, i + chunkSize));
9
+ }
10
+ return chunks;
11
+ };
12
+ export const runImmediateTransaction = (db, body) => {
13
+ db.exec("BEGIN IMMEDIATE");
14
+ try {
15
+ const value = body();
16
+ db.exec("COMMIT");
17
+ return { ok: true, value };
18
+ }
19
+ catch (error) {
20
+ try {
21
+ db.exec("ROLLBACK");
22
+ }
23
+ catch {
24
+ // no-op
25
+ }
26
+ return { ok: false, error };
27
+ }
28
+ };
29
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/repo/task-repo/shared.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAAoB,EACpB,YAAoB,iBAAiB,EACJ,EAAE;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,MAAM,GAAU,EAAE,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,EAAkB,EAClB,IAAa,EAC2C,EAAE;IAC1D,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC1B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,EAAE,CAAA;QACpB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ;QACV,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { SqliteDatabase } from "../../db.js";
2
+ import type { TaskRepositoryService } from "../task-repo.js";
3
+ type TaskRepositoryWriteService = Pick<TaskRepositoryService, "insert" | "update" | "updateMany" | "setGroupContext" | "clearGroupContext" | "remove" | "recoverTaskStatus" | "updateVerifyCmd">;
4
+ export declare const createTaskRepositoryWriteService: (db: SqliteDatabase) => TaskRepositoryWriteService;
5
+ export {};
6
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/repo/task-repo/write.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAG5D,KAAK,0BAA0B,GAAG,IAAI,CACpC,qBAAqB,EACnB,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,QAAQ,GACR,mBAAmB,GACnB,iBAAiB,CACpB,CAAA;AAED,eAAO,MAAM,gCAAgC,GAC3C,IAAI,cAAc,KACjB,0BAoRD,CAAA"}
@@ -0,0 +1,182 @@
1
+ import { Effect } from "effect";
2
+ import { DatabaseError, TaskNotFoundError, UnexpectedRowCountError, StaleDataError } from "../../errors.js";
3
+ import { runImmediateTransaction } from "./shared.js";
4
+ export const createTaskRepositoryWriteService = (db) => ({
5
+ insert: (task) => Effect.try({
6
+ try: () => {
7
+ const result = db.prepare(`INSERT INTO tasks (id, title, description, status, parent_id, score, created_at, updated_at, completed_at,
8
+ assignee_type, assignee_id, assigned_at, assigned_by, metadata)
9
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(task.id, task.title, task.description, task.status, task.parentId, task.score, task.createdAt.toISOString(), task.updatedAt.toISOString(), task.completedAt?.toISOString() ?? null, task.assigneeType, task.assigneeId, task.assignedAt?.toISOString() ?? null, task.assignedBy, JSON.stringify(task.metadata));
10
+ if (result.changes !== 1) {
11
+ throw new UnexpectedRowCountError({
12
+ operation: "task insert",
13
+ expected: 1,
14
+ actual: result.changes
15
+ });
16
+ }
17
+ },
18
+ catch: (cause) => new DatabaseError({ cause })
19
+ }),
20
+ update: (task, expectedUpdatedAt) => Effect.gen(function* () {
21
+ if (expectedUpdatedAt) {
22
+ // Optimistic locking: include updated_at in WHERE clause
23
+ const result = yield* Effect.try({
24
+ try: () => db.prepare(`UPDATE tasks SET
25
+ title = ?, description = ?, status = ?, parent_id = ?,
26
+ score = ?, updated_at = ?, completed_at = ?,
27
+ assignee_type = ?, assignee_id = ?, assigned_at = ?, assigned_by = ?,
28
+ metadata = ?
29
+ WHERE id = ? AND updated_at = ?`).run(task.title, task.description, task.status, task.parentId, task.score, task.updatedAt.toISOString(), task.completedAt?.toISOString() ?? null, task.assigneeType, task.assigneeId, task.assignedAt?.toISOString() ?? null, task.assignedBy, JSON.stringify(task.metadata), task.id, expectedUpdatedAt.toISOString()),
30
+ catch: (cause) => new DatabaseError({ cause })
31
+ });
32
+ if (result.changes === 0) {
33
+ // Distinguish not-found from stale: re-read the row
34
+ const current = yield* Effect.try({
35
+ try: () => db.prepare("SELECT updated_at FROM tasks WHERE id = ?").get(task.id),
36
+ catch: (cause) => new DatabaseError({ cause })
37
+ });
38
+ if (!current) {
39
+ yield* Effect.fail(new TaskNotFoundError({ id: task.id }));
40
+ }
41
+ else {
42
+ yield* Effect.fail(new StaleDataError({
43
+ taskId: task.id,
44
+ expectedUpdatedAt: expectedUpdatedAt.toISOString(),
45
+ actualUpdatedAt: current.updated_at
46
+ }));
47
+ }
48
+ }
49
+ }
50
+ else {
51
+ // No optimistic locking (backward compatible)
52
+ const result = yield* Effect.try({
53
+ try: () => db.prepare(`UPDATE tasks SET
54
+ title = ?, description = ?, status = ?, parent_id = ?,
55
+ score = ?, updated_at = ?, completed_at = ?,
56
+ assignee_type = ?, assignee_id = ?, assigned_at = ?, assigned_by = ?,
57
+ metadata = ?
58
+ WHERE id = ?`).run(task.title, task.description, task.status, task.parentId, task.score, task.updatedAt.toISOString(), task.completedAt?.toISOString() ?? null, task.assigneeType, task.assigneeId, task.assignedAt?.toISOString() ?? null, task.assignedBy, JSON.stringify(task.metadata), task.id),
59
+ catch: (cause) => new DatabaseError({ cause })
60
+ });
61
+ if (result.changes === 0) {
62
+ yield* Effect.fail(new TaskNotFoundError({ id: task.id }));
63
+ }
64
+ }
65
+ }),
66
+ updateMany: (tasks) => Effect.gen(function* () {
67
+ if (tasks.length === 0)
68
+ return;
69
+ const updateStmt = db.prepare(`UPDATE tasks SET
70
+ title = ?, description = ?, status = ?, parent_id = ?,
71
+ score = ?, updated_at = ?, completed_at = ?,
72
+ assignee_type = ?, assignee_id = ?, assigned_at = ?, assigned_by = ?,
73
+ metadata = ?
74
+ WHERE id = ?`);
75
+ const selectStmt = db.prepare(`SELECT updated_at FROM tasks WHERE id = ?`);
76
+ // Use a transaction for atomicity with optimistic locking
77
+ // Re-read updated_at inside transaction to detect stale data
78
+ const transaction = runImmediateTransaction(db, () => {
79
+ for (const task of tasks) {
80
+ // Check for stale data by comparing updated_at
81
+ const current = selectStmt.get(task.id);
82
+ if (!current) {
83
+ return { type: "not_found", id: task.id };
84
+ }
85
+ const currentUpdatedAt = new Date(current.updated_at);
86
+ // If the database has a newer version, the data being written is stale
87
+ if (currentUpdatedAt > task.updatedAt) {
88
+ return {
89
+ type: "stale",
90
+ id: task.id,
91
+ expected: task.updatedAt.toISOString(),
92
+ actual: current.updated_at
93
+ };
94
+ }
95
+ const result = updateStmt.run(task.title, task.description, task.status, task.parentId, task.score, task.updatedAt.toISOString(), task.completedAt?.toISOString() ?? null, task.assigneeType, task.assigneeId, task.assignedAt?.toISOString() ?? null, task.assignedBy, JSON.stringify(task.metadata), task.id);
96
+ if (result.changes === 0) {
97
+ return { type: "not_found", id: task.id };
98
+ }
99
+ }
100
+ return null; // All tasks updated successfully
101
+ });
102
+ if (!transaction.ok) {
103
+ return yield* Effect.fail(new DatabaseError({ cause: transaction.error }));
104
+ }
105
+ const errorInfo = transaction.value;
106
+ if (errorInfo !== null) {
107
+ if (errorInfo.type === "not_found") {
108
+ yield* Effect.fail(new TaskNotFoundError({ id: errorInfo.id }));
109
+ }
110
+ else {
111
+ yield* Effect.fail(new StaleDataError({
112
+ taskId: errorInfo.id,
113
+ expectedUpdatedAt: errorInfo.expected,
114
+ actualUpdatedAt: errorInfo.actual
115
+ }));
116
+ }
117
+ }
118
+ }),
119
+ setGroupContext: (taskId, context) => Effect.gen(function* () {
120
+ const now = new Date().toISOString();
121
+ const result = yield* Effect.try({
122
+ try: () => db.prepare(`UPDATE tasks
123
+ SET group_context = ?, updated_at = ?
124
+ WHERE id = ?`).run(context, now, taskId),
125
+ catch: (cause) => new DatabaseError({ cause })
126
+ });
127
+ if (result.changes === 0) {
128
+ yield* Effect.fail(new TaskNotFoundError({ id: taskId }));
129
+ }
130
+ }),
131
+ clearGroupContext: (taskId) => Effect.gen(function* () {
132
+ const now = new Date().toISOString();
133
+ const result = yield* Effect.try({
134
+ try: () => db.prepare(`UPDATE tasks
135
+ SET group_context = NULL, updated_at = ?
136
+ WHERE id = ?`).run(now, taskId),
137
+ catch: (cause) => new DatabaseError({ cause })
138
+ });
139
+ if (result.changes === 0) {
140
+ yield* Effect.fail(new TaskNotFoundError({ id: taskId }));
141
+ }
142
+ }),
143
+ remove: (id) => Effect.gen(function* () {
144
+ const result = yield* Effect.try({
145
+ try: () => db.prepare("DELETE FROM tasks WHERE id = ?").run(id),
146
+ catch: (cause) => new DatabaseError({ cause })
147
+ });
148
+ if (result.changes === 0) {
149
+ yield* Effect.fail(new TaskNotFoundError({ id }));
150
+ }
151
+ }),
152
+ recoverTaskStatus: (taskId, expectedStatus) => Effect.try({
153
+ try: () => {
154
+ const now = new Date().toISOString();
155
+ const result = db.prepare(`
156
+ UPDATE tasks SET
157
+ status = CASE
158
+ WHEN NOT EXISTS (
159
+ SELECT 1 FROM task_dependencies d
160
+ JOIN tasks blocker ON blocker.id = d.blocker_id
161
+ WHERE d.blocked_id = ? AND blocker.status != 'done'
162
+ ) THEN 'ready'
163
+ ELSE 'blocked'
164
+ END,
165
+ updated_at = ?
166
+ WHERE id = ? AND status = ?
167
+ `).run(taskId, now, taskId, expectedStatus);
168
+ return result.changes > 0;
169
+ },
170
+ catch: (cause) => new DatabaseError({ cause })
171
+ }),
172
+ updateVerifyCmd: (taskId, cmd, schema) => Effect.gen(function* () {
173
+ const result = yield* Effect.try({
174
+ try: () => db.prepare("UPDATE tasks SET verify_cmd = ?, verify_schema = ?, updated_at = ? WHERE id = ?").run(cmd, schema, new Date().toISOString(), taskId),
175
+ catch: (cause) => new DatabaseError({ cause })
176
+ });
177
+ if (result.changes === 0) {
178
+ return yield* Effect.fail(new TaskNotFoundError({ id: taskId }));
179
+ }
180
+ }),
181
+ });
182
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/repo/task-repo/write.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,11 @@ import { Context, Effect, Layer } from "effect";
2
2
  import { SqliteClient } from "../db.js";
3
3
  import { DatabaseError, TaskNotFoundError, StaleDataError } from "../errors.js";
4
4
  import type { Task, TaskId, TaskFilter } from "@jamesaphoenix/tx-types";
5
- export interface EffectiveGroupContext {
5
+ export type EffectiveGroupContext = {
6
6
  readonly sourceTaskId: TaskId;
7
7
  readonly context: string;
8
- }
9
- declare const TaskRepository_base: Context.TagClass<TaskRepository, "TaskRepository", {
8
+ };
9
+ export type TaskRepositoryService = {
10
10
  readonly findById: (id: string) => Effect.Effect<Task | null, DatabaseError>;
11
11
  readonly findByIds: (ids: readonly string[]) => Effect.Effect<readonly Task[], DatabaseError>;
12
12
  readonly findAll: (filter?: TaskFilter) => Effect.Effect<readonly Task[], DatabaseError>;
@@ -37,7 +37,8 @@ declare const TaskRepository_base: Context.TagClass<TaskRepository, "TaskReposit
37
37
  cmd: string | null;
38
38
  schema: string | null;
39
39
  }, DatabaseError>;
40
- }>;
40
+ };
41
+ declare const TaskRepository_base: Context.TagClass<TaskRepository, "TaskRepository", TaskRepositoryService>;
41
42
  export declare class TaskRepository extends TaskRepository_base {
42
43
  }
43
44
  export declare const TaskRepositoryLive: Layer.Layer<TaskRepository, never, SqliteClient>;