@jamesaphoenix/tx-core 0.4.2 → 0.4.3

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 (330) hide show
  1. package/README.md +480 -0
  2. package/dist/db.d.ts +28 -14
  3. package/dist/db.d.ts.map +1 -1
  4. package/dist/db.js +102 -14
  5. package/dist/db.js.map +1 -1
  6. package/dist/errors.d.ts +178 -34
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +119 -26
  9. package/dist/errors.js.map +1 -1
  10. package/dist/id.d.ts +10 -0
  11. package/dist/id.d.ts.map +1 -1
  12. package/dist/id.js +17 -1
  13. package/dist/id.js.map +1 -1
  14. package/dist/index.d.ts +15 -7
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +62 -8
  17. package/dist/index.js.map +1 -1
  18. package/dist/layer.d.ts +23 -14
  19. package/dist/layer.d.ts.map +1 -1
  20. package/dist/layer.js +75 -76
  21. package/dist/layer.js.map +1 -1
  22. package/dist/mappers/anchor.d.ts +15 -1
  23. package/dist/mappers/anchor.d.ts.map +1 -1
  24. package/dist/mappers/anchor.js +95 -28
  25. package/dist/mappers/anchor.js.map +1 -1
  26. package/dist/mappers/attempt.d.ts +3 -1
  27. package/dist/mappers/attempt.d.ts.map +1 -1
  28. package/dist/mappers/attempt.js +23 -9
  29. package/dist/mappers/attempt.js.map +1 -1
  30. package/dist/mappers/candidate.d.ts +3 -1
  31. package/dist/mappers/candidate.d.ts.map +1 -1
  32. package/dist/mappers/candidate.js +46 -16
  33. package/dist/mappers/candidate.js.map +1 -1
  34. package/dist/mappers/claim.d.ts +1 -1
  35. package/dist/mappers/claim.d.ts.map +1 -1
  36. package/dist/mappers/claim.js +11 -4
  37. package/dist/mappers/claim.js.map +1 -1
  38. package/dist/mappers/deduplication.d.ts +13 -1
  39. package/dist/mappers/deduplication.d.ts.map +1 -1
  40. package/dist/mappers/deduplication.js +22 -3
  41. package/dist/mappers/deduplication.js.map +1 -1
  42. package/dist/mappers/doc.d.ts +24 -0
  43. package/dist/mappers/doc.d.ts.map +1 -0
  44. package/dist/mappers/doc.js +161 -0
  45. package/dist/mappers/doc.js.map +1 -0
  46. package/dist/mappers/edge.d.ts +10 -1
  47. package/dist/mappers/edge.d.ts.map +1 -1
  48. package/dist/mappers/edge.js +74 -12
  49. package/dist/mappers/edge.js.map +1 -1
  50. package/dist/mappers/file-learning.d.ts.map +1 -1
  51. package/dist/mappers/file-learning.js +2 -1
  52. package/dist/mappers/file-learning.js.map +1 -1
  53. package/dist/mappers/index.d.ts +6 -7
  54. package/dist/mappers/index.d.ts.map +1 -1
  55. package/dist/mappers/index.js +10 -12
  56. package/dist/mappers/index.js.map +1 -1
  57. package/dist/mappers/learning.d.ts +9 -1
  58. package/dist/mappers/learning.d.ts.map +1 -1
  59. package/dist/mappers/learning.js +94 -14
  60. package/dist/mappers/learning.js.map +1 -1
  61. package/dist/mappers/orchestrator-state.d.ts +1 -1
  62. package/dist/mappers/orchestrator-state.d.ts.map +1 -1
  63. package/dist/mappers/orchestrator-state.js +31 -5
  64. package/dist/mappers/orchestrator-state.js.map +1 -1
  65. package/dist/mappers/parse-date.d.ts +11 -0
  66. package/dist/mappers/parse-date.d.ts.map +1 -0
  67. package/dist/mappers/parse-date.js +18 -0
  68. package/dist/mappers/parse-date.js.map +1 -0
  69. package/dist/mappers/run.d.ts +14 -4
  70. package/dist/mappers/run.d.ts.map +1 -1
  71. package/dist/mappers/run.js +49 -18
  72. package/dist/mappers/run.js.map +1 -1
  73. package/dist/mappers/task.d.ts +5 -1
  74. package/dist/mappers/task.d.ts.map +1 -1
  75. package/dist/mappers/task.js +66 -16
  76. package/dist/mappers/task.js.map +1 -1
  77. package/dist/mappers/tracked-project.d.ts +3 -1
  78. package/dist/mappers/tracked-project.d.ts.map +1 -1
  79. package/dist/mappers/tracked-project.js +23 -9
  80. package/dist/mappers/tracked-project.js.map +1 -1
  81. package/dist/mappers/worker.d.ts +1 -1
  82. package/dist/mappers/worker.d.ts.map +1 -1
  83. package/dist/mappers/worker.js +44 -6
  84. package/dist/mappers/worker.js.map +1 -1
  85. package/dist/repo/anchor-repo.d.ts +2 -2
  86. package/dist/repo/anchor-repo.d.ts.map +1 -1
  87. package/dist/repo/anchor-repo.js +46 -5
  88. package/dist/repo/anchor-repo.js.map +1 -1
  89. package/dist/repo/attempt-repo.d.ts +2 -2
  90. package/dist/repo/attempt-repo.d.ts.map +1 -1
  91. package/dist/repo/attempt-repo.js +16 -6
  92. package/dist/repo/attempt-repo.js.map +1 -1
  93. package/dist/repo/candidate-repo.d.ts.map +1 -1
  94. package/dist/repo/candidate-repo.js +22 -1
  95. package/dist/repo/candidate-repo.js.map +1 -1
  96. package/dist/repo/claim-repo.d.ts +46 -2
  97. package/dist/repo/claim-repo.d.ts.map +1 -1
  98. package/dist/repo/claim-repo.js +113 -6
  99. package/dist/repo/claim-repo.js.map +1 -1
  100. package/dist/repo/compaction-repo.d.ts +41 -0
  101. package/dist/repo/compaction-repo.d.ts.map +1 -0
  102. package/dist/repo/compaction-repo.js +84 -0
  103. package/dist/repo/compaction-repo.js.map +1 -0
  104. package/dist/repo/deduplication-repo.d.ts +9 -1
  105. package/dist/repo/deduplication-repo.d.ts.map +1 -1
  106. package/dist/repo/deduplication-repo.js +46 -9
  107. package/dist/repo/deduplication-repo.js.map +1 -1
  108. package/dist/repo/dep-repo.d.ts +27 -3
  109. package/dist/repo/dep-repo.d.ts.map +1 -1
  110. package/dist/repo/dep-repo.js +166 -39
  111. package/dist/repo/dep-repo.js.map +1 -1
  112. package/dist/repo/doc-repo.d.ts +59 -0
  113. package/dist/repo/doc-repo.d.ts.map +1 -0
  114. package/dist/repo/doc-repo.js +276 -0
  115. package/dist/repo/doc-repo.js.map +1 -0
  116. package/dist/repo/edge-repo.d.ts +1 -1
  117. package/dist/repo/edge-repo.d.ts.map +1 -1
  118. package/dist/repo/edge-repo.js +65 -34
  119. package/dist/repo/edge-repo.js.map +1 -1
  120. package/dist/repo/file-learning-repo.d.ts +3 -3
  121. package/dist/repo/file-learning-repo.d.ts.map +1 -1
  122. package/dist/repo/file-learning-repo.js +19 -8
  123. package/dist/repo/file-learning-repo.js.map +1 -1
  124. package/dist/repo/index.d.ts +4 -6
  125. package/dist/repo/index.d.ts.map +1 -1
  126. package/dist/repo/index.js +3 -5
  127. package/dist/repo/index.js.map +1 -1
  128. package/dist/repo/learning-repo.d.ts +10 -3
  129. package/dist/repo/learning-repo.d.ts.map +1 -1
  130. package/dist/repo/learning-repo.js +68 -11
  131. package/dist/repo/learning-repo.js.map +1 -1
  132. package/dist/repo/orchestrator-state-repo.d.ts.map +1 -1
  133. package/dist/repo/orchestrator-state-repo.js +8 -1
  134. package/dist/repo/orchestrator-state-repo.js.map +1 -1
  135. package/dist/repo/run-repo.d.ts +3 -3
  136. package/dist/repo/run-repo.d.ts.map +1 -1
  137. package/dist/repo/run-repo.js +40 -19
  138. package/dist/repo/run-repo.js.map +1 -1
  139. package/dist/repo/task-repo.d.ts +14 -3
  140. package/dist/repo/task-repo.d.ts.map +1 -1
  141. package/dist/repo/task-repo.js +194 -20
  142. package/dist/repo/task-repo.js.map +1 -1
  143. package/dist/repo/tracked-project-repo.d.ts.map +1 -1
  144. package/dist/repo/tracked-project-repo.js +15 -1
  145. package/dist/repo/tracked-project-repo.js.map +1 -1
  146. package/dist/repo/worker-repo.d.ts +3 -2
  147. package/dist/repo/worker-repo.d.ts.map +1 -1
  148. package/dist/repo/worker-repo.js +54 -8
  149. package/dist/repo/worker-repo.js.map +1 -1
  150. package/dist/schemas/sync.js +2 -2
  151. package/dist/schemas/sync.js.map +1 -1
  152. package/dist/schemas/worker.d.ts +1 -0
  153. package/dist/schemas/worker.d.ts.map +1 -1
  154. package/dist/schemas/worker.js +1 -0
  155. package/dist/schemas/worker.js.map +1 -1
  156. package/dist/services/agent-service.d.ts +57 -0
  157. package/dist/services/agent-service.d.ts.map +1 -0
  158. package/dist/services/agent-service.js +81 -0
  159. package/dist/services/agent-service.js.map +1 -0
  160. package/dist/services/anchor-service.js +1 -1
  161. package/dist/services/anchor-service.js.map +1 -1
  162. package/dist/services/anchor-verification.d.ts +8 -0
  163. package/dist/services/anchor-verification.d.ts.map +1 -1
  164. package/dist/services/anchor-verification.js +237 -37
  165. package/dist/services/anchor-verification.js.map +1 -1
  166. package/dist/services/ast-grep-service.d.ts.map +1 -1
  167. package/dist/services/ast-grep-service.js +93 -22
  168. package/dist/services/ast-grep-service.js.map +1 -1
  169. package/dist/services/attempt-service.d.ts.map +1 -1
  170. package/dist/services/attempt-service.js +1 -4
  171. package/dist/services/attempt-service.js.map +1 -1
  172. package/dist/services/auto-sync-service.d.ts +1 -1
  173. package/dist/services/auto-sync-service.d.ts.map +1 -1
  174. package/dist/services/auto-sync-service.js +18 -10
  175. package/dist/services/auto-sync-service.js.map +1 -1
  176. package/dist/services/claim-service.d.ts +8 -2
  177. package/dist/services/claim-service.d.ts.map +1 -1
  178. package/dist/services/claim-service.js +37 -23
  179. package/dist/services/claim-service.js.map +1 -1
  180. package/dist/services/compaction-service.d.ts +105 -0
  181. package/dist/services/compaction-service.d.ts.map +1 -0
  182. package/dist/services/compaction-service.js +369 -0
  183. package/dist/services/compaction-service.js.map +1 -0
  184. package/dist/services/cycle-scan-service.d.ts +32 -0
  185. package/dist/services/cycle-scan-service.d.ts.map +1 -0
  186. package/dist/services/cycle-scan-service.js +542 -0
  187. package/dist/services/cycle-scan-service.js.map +1 -0
  188. package/dist/services/daemon-service.d.ts +40 -2
  189. package/dist/services/daemon-service.d.ts.map +1 -1
  190. package/dist/services/daemon-service.js +199 -52
  191. package/dist/services/daemon-service.js.map +1 -1
  192. package/dist/services/deduplication-service.d.ts +8 -4
  193. package/dist/services/deduplication-service.d.ts.map +1 -1
  194. package/dist/services/deduplication-service.js +79 -25
  195. package/dist/services/deduplication-service.js.map +1 -1
  196. package/dist/services/dep-service.d.ts +2 -2
  197. package/dist/services/dep-service.d.ts.map +1 -1
  198. package/dist/services/dep-service.js +9 -5
  199. package/dist/services/dep-service.js.map +1 -1
  200. package/dist/services/diversifier-service.d.ts +2 -1
  201. package/dist/services/diversifier-service.d.ts.map +1 -1
  202. package/dist/services/diversifier-service.js +37 -43
  203. package/dist/services/diversifier-service.js.map +1 -1
  204. package/dist/services/doc-service.d.ts +49 -0
  205. package/dist/services/doc-service.d.ts.map +1 -0
  206. package/dist/services/doc-service.js +605 -0
  207. package/dist/services/doc-service.js.map +1 -0
  208. package/dist/services/edge-service.js +2 -2
  209. package/dist/services/edge-service.js.map +1 -1
  210. package/dist/services/embedding-service.d.ts +66 -2
  211. package/dist/services/embedding-service.d.ts.map +1 -1
  212. package/dist/services/embedding-service.js +138 -24
  213. package/dist/services/embedding-service.js.map +1 -1
  214. package/dist/services/file-learning-service.d.ts.map +1 -1
  215. package/dist/services/file-learning-service.js +8 -7
  216. package/dist/services/file-learning-service.js.map +1 -1
  217. package/dist/services/file-watcher-service.d.ts.map +1 -1
  218. package/dist/services/file-watcher-service.js +58 -11
  219. package/dist/services/file-watcher-service.js.map +1 -1
  220. package/dist/services/graph-expansion.d.ts +3 -0
  221. package/dist/services/graph-expansion.d.ts.map +1 -1
  222. package/dist/services/graph-expansion.js +28 -7
  223. package/dist/services/graph-expansion.js.map +1 -1
  224. package/dist/services/hierarchy-service.d.ts +1 -1
  225. package/dist/services/hierarchy-service.d.ts.map +1 -1
  226. package/dist/services/hierarchy-service.js +50 -32
  227. package/dist/services/hierarchy-service.js.map +1 -1
  228. package/dist/services/index.d.ts +13 -15
  229. package/dist/services/index.d.ts.map +1 -1
  230. package/dist/services/index.js +13 -15
  231. package/dist/services/index.js.map +1 -1
  232. package/dist/services/learning-service.d.ts +4 -4
  233. package/dist/services/learning-service.d.ts.map +1 -1
  234. package/dist/services/learning-service.js +75 -42
  235. package/dist/services/learning-service.js.map +1 -1
  236. package/dist/services/llm-service.d.ts +62 -0
  237. package/dist/services/llm-service.d.ts.map +1 -0
  238. package/dist/services/llm-service.js +172 -0
  239. package/dist/services/llm-service.js.map +1 -0
  240. package/dist/services/migration-service.d.ts +1 -1
  241. package/dist/services/migration-service.d.ts.map +1 -1
  242. package/dist/services/migration-service.js +18 -7
  243. package/dist/services/migration-service.js.map +1 -1
  244. package/dist/services/orchestrator-service.d.ts +4 -3
  245. package/dist/services/orchestrator-service.d.ts.map +1 -1
  246. package/dist/services/orchestrator-service.js +67 -29
  247. package/dist/services/orchestrator-service.js.map +1 -1
  248. package/dist/services/promotion-service.d.ts +1 -1
  249. package/dist/services/promotion-service.js +1 -1
  250. package/dist/services/promotion-service.js.map +1 -1
  251. package/dist/services/query-expansion-service.d.ts +30 -9
  252. package/dist/services/query-expansion-service.d.ts.map +1 -1
  253. package/dist/services/query-expansion-service.js +54 -63
  254. package/dist/services/query-expansion-service.js.map +1 -1
  255. package/dist/services/ready-service.d.ts +21 -1
  256. package/dist/services/ready-service.d.ts.map +1 -1
  257. package/dist/services/ready-service.js +44 -21
  258. package/dist/services/ready-service.js.map +1 -1
  259. package/dist/services/retriever-service.d.ts +10 -10
  260. package/dist/services/retriever-service.d.ts.map +1 -1
  261. package/dist/services/retriever-service.js +53 -161
  262. package/dist/services/retriever-service.js.map +1 -1
  263. package/dist/services/swarm-verification.d.ts +2 -2
  264. package/dist/services/swarm-verification.d.ts.map +1 -1
  265. package/dist/services/swarm-verification.js +12 -6
  266. package/dist/services/swarm-verification.js.map +1 -1
  267. package/dist/services/sync-service.d.ts +17 -4
  268. package/dist/services/sync-service.d.ts.map +1 -1
  269. package/dist/services/sync-service.js +378 -114
  270. package/dist/services/sync-service.js.map +1 -1
  271. package/dist/services/task-service.d.ts +6 -4
  272. package/dist/services/task-service.d.ts.map +1 -1
  273. package/dist/services/task-service.js +162 -33
  274. package/dist/services/task-service.js.map +1 -1
  275. package/dist/services/tracing-service.d.ts +55 -0
  276. package/dist/services/tracing-service.d.ts.map +1 -0
  277. package/dist/services/tracing-service.js +99 -0
  278. package/dist/services/tracing-service.js.map +1 -0
  279. package/dist/services/transcript-adapter.d.ts +99 -0
  280. package/dist/services/transcript-adapter.d.ts.map +1 -0
  281. package/dist/services/transcript-adapter.js +283 -0
  282. package/dist/services/transcript-adapter.js.map +1 -0
  283. package/dist/services/validation-service.d.ts +85 -0
  284. package/dist/services/validation-service.d.ts.map +1 -0
  285. package/dist/services/validation-service.js +289 -0
  286. package/dist/services/validation-service.js.map +1 -0
  287. package/dist/services/worker-process.d.ts +23 -4
  288. package/dist/services/worker-process.d.ts.map +1 -1
  289. package/dist/services/worker-process.js +159 -70
  290. package/dist/services/worker-process.js.map +1 -1
  291. package/dist/services/worker-service.d.ts.map +1 -1
  292. package/dist/services/worker-service.js +7 -12
  293. package/dist/services/worker-service.js.map +1 -1
  294. package/dist/sync/claude-task-writer.d.ts +49 -0
  295. package/dist/sync/claude-task-writer.d.ts.map +1 -0
  296. package/dist/sync/claude-task-writer.js +135 -0
  297. package/dist/sync/claude-task-writer.js.map +1 -0
  298. package/dist/utils/doc-hash.d.ts +10 -0
  299. package/dist/utils/doc-hash.d.ts.map +1 -0
  300. package/dist/utils/doc-hash.js +14 -0
  301. package/dist/utils/doc-hash.js.map +1 -0
  302. package/dist/utils/doc-renderer.d.ts +44 -0
  303. package/dist/utils/doc-renderer.d.ts.map +1 -0
  304. package/dist/utils/doc-renderer.js +202 -0
  305. package/dist/utils/doc-renderer.js.map +1 -0
  306. package/dist/utils/math.d.ts +5 -1
  307. package/dist/utils/math.d.ts.map +1 -1
  308. package/dist/utils/math.js +12 -4
  309. package/dist/utils/math.js.map +1 -1
  310. package/dist/utils/sql.d.ts +9 -0
  311. package/dist/utils/sql.d.ts.map +1 -0
  312. package/dist/utils/sql.js +9 -0
  313. package/dist/utils/sql.js.map +1 -0
  314. package/dist/utils/toml-config.d.ts +22 -0
  315. package/dist/utils/toml-config.d.ts.map +1 -0
  316. package/dist/utils/toml-config.js +75 -0
  317. package/dist/utils/toml-config.js.map +1 -0
  318. package/dist/worker/hooks.d.ts +102 -0
  319. package/dist/worker/hooks.d.ts.map +1 -0
  320. package/dist/worker/hooks.js +11 -0
  321. package/dist/worker/hooks.js.map +1 -0
  322. package/dist/worker/index.d.ts +9 -0
  323. package/dist/worker/index.d.ts.map +1 -0
  324. package/dist/worker/index.js +8 -0
  325. package/dist/worker/index.js.map +1 -0
  326. package/dist/worker/run-worker.d.ts +33 -0
  327. package/dist/worker/run-worker.d.ts.map +1 -0
  328. package/dist/worker/run-worker.js +265 -0
  329. package/dist/worker/run-worker.js.map +1 -0
  330. package/package.json +14 -12
@@ -1,6 +1,95 @@
1
- import { Context, Effect, Layer } from "effect";
1
+ import { Context, Effect, Layer, Schema } from "effect";
2
2
  import { spawn } from "child_process";
3
3
  import { AstGrepError } from "../errors.js";
4
+ // ----- Schema Definitions for JSON Parsing -----
5
+ /**
6
+ * Schema for optional text holder { text?: string }
7
+ */
8
+ const TextHolderSchema = Schema.Struct({
9
+ text: Schema.optional(Schema.String)
10
+ });
11
+ /**
12
+ * Schema for AstGrepMatch - the output from ast-grep --json for symbol extraction.
13
+ */
14
+ const AstGrepMatchSchema = Schema.Struct({
15
+ range: Schema.optional(Schema.Struct({
16
+ start: Schema.optional(Schema.Struct({
17
+ line: Schema.optional(Schema.Number)
18
+ }))
19
+ })),
20
+ metaVariables: Schema.optional(Schema.Struct({
21
+ NAME: Schema.optional(TextHolderSchema)
22
+ })),
23
+ file: Schema.optional(Schema.String),
24
+ text: Schema.optional(Schema.String)
25
+ });
26
+ /**
27
+ * Schema for ImportMatch - the output from ast-grep --json for import extraction.
28
+ */
29
+ const ImportMatchSchema = Schema.Struct({
30
+ metaVariables: Schema.optional(Schema.Struct({
31
+ SOURCE: Schema.optional(TextHolderSchema),
32
+ SPECS: Schema.optional(TextHolderSchema),
33
+ ALIAS: Schema.optional(TextHolderSchema),
34
+ DEFAULT: Schema.optional(TextHolderSchema)
35
+ }))
36
+ });
37
+ /**
38
+ * Schema for PatternMatch - the output from ast-grep --json for pattern matching.
39
+ */
40
+ const PatternMatchSchema = Schema.Struct({
41
+ file: Schema.optional(Schema.String),
42
+ range: Schema.optional(Schema.Struct({
43
+ start: Schema.optional(Schema.Struct({
44
+ line: Schema.optional(Schema.Number),
45
+ column: Schema.optional(Schema.Number)
46
+ }))
47
+ })),
48
+ text: Schema.optional(Schema.String),
49
+ metaVariables: Schema.optional(Schema.Record({ key: Schema.String, value: TextHolderSchema }))
50
+ });
51
+ /**
52
+ * Safely parse and validate ast-grep match array output.
53
+ * Returns empty array if parsing fails or validation fails.
54
+ */
55
+ const parseAstGrepMatches = (output) => {
56
+ try {
57
+ const parsed = JSON.parse(output);
58
+ const result = Schema.decodeUnknownSync(Schema.Array(AstGrepMatchSchema))(parsed);
59
+ return result;
60
+ }
61
+ catch {
62
+ return [];
63
+ }
64
+ };
65
+ /**
66
+ * Safely parse and validate import match array output.
67
+ * Returns empty array if parsing fails or validation fails.
68
+ */
69
+ const parseImportMatches = (output) => {
70
+ try {
71
+ const parsed = JSON.parse(output);
72
+ const result = Schema.decodeUnknownSync(Schema.Array(ImportMatchSchema))(parsed);
73
+ return result;
74
+ }
75
+ catch {
76
+ return [];
77
+ }
78
+ };
79
+ /**
80
+ * Safely parse and validate pattern match array output.
81
+ * Returns empty array if parsing fails or validation fails.
82
+ */
83
+ const parsePatternMatches = (output) => {
84
+ try {
85
+ const parsed = JSON.parse(output);
86
+ const result = Schema.decodeUnknownSync(Schema.Array(PatternMatchSchema))(parsed);
87
+ return result;
88
+ }
89
+ catch {
90
+ return [];
91
+ }
92
+ };
4
93
  /**
5
94
  * File extension to ast-grep language mapping.
6
95
  * Covers TypeScript, JavaScript, Python, Go, Rust, Java, C#, Ruby, PHP, Kotlin, Swift, C/C++.
@@ -229,13 +318,7 @@ export const AstGrepServiceLive = Layer.succeed(AstGrepService, {
229
318
  const symbols = [];
230
319
  for (const { pattern, kind, exported } of patterns) {
231
320
  const output = yield* runAstGrep(["--pattern", pattern, "--json", filePath]).pipe(Effect.catchAll(() => Effect.succeed("[]")));
232
- let matches;
233
- try {
234
- matches = JSON.parse(output);
235
- }
236
- catch {
237
- matches = [];
238
- }
321
+ const matches = parseAstGrepMatches(output);
239
322
  for (const m of matches) {
240
323
  const name = m.metaVariables?.NAME?.text;
241
324
  if (name) {
@@ -266,13 +349,7 @@ export const AstGrepServiceLive = Layer.succeed(AstGrepService, {
266
349
  const imports = [];
267
350
  for (const pattern of importPatterns) {
268
351
  const output = yield* runAstGrep(["--pattern", pattern, "--json", filePath]).pipe(Effect.catchAll(() => Effect.succeed("[]")));
269
- let matches;
270
- try {
271
- matches = JSON.parse(output);
272
- }
273
- catch {
274
- matches = [];
275
- }
352
+ const matches = parseImportMatches(output);
276
353
  for (const m of matches) {
277
354
  const source = m.metaVariables?.SOURCE?.text ?? "";
278
355
  if (!source)
@@ -308,13 +385,7 @@ export const AstGrepServiceLive = Layer.succeed(AstGrepService, {
308
385
  }),
309
386
  matchPattern: (pattern, path) => Effect.gen(function* () {
310
387
  const output = yield* runAstGrep(["--pattern", pattern, "--json", path]);
311
- let matches;
312
- try {
313
- matches = JSON.parse(output);
314
- }
315
- catch {
316
- return [];
317
- }
388
+ const matches = parsePatternMatches(output);
318
389
  return matches.map((m) => ({
319
390
  file: m.file ?? path,
320
391
  line: (m.range?.start?.line ?? 0) + 1, // Convert 0-indexed to 1-indexed
@@ -1 +1 @@
1
- {"version":3,"file":"ast-grep-service.js","sourceRoot":"","sources":["../../src/services/ast-grep-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast-grep-service.js","sourceRoot":"","sources":["../../src/services/ast-grep-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"attempt-service.d.ts","sourceRoot":"","sources":["../../src/services/attempt-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEtG,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;;IAK7E,8DAA8D;qBAC7C,CACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,KACnB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,GAAG,aAAa,CAAC;IAEhF,2BAA2B;kBACb,CAAC,EAAE,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAE7F,mCAAmC;0BACb,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,EAAE,aAAa,CAAC;IAE1F,8BAA8B;qBACb,CAAC,EAAE,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAE7F,8CAA8C;6BACrB,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAEjF,qEAAqE;sCACnC,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC;;AAxBvH,qBAAa,cAAe,SAAQ,mBA0BjC;CAAG;AAEN,eAAO,MAAM,kBAAkB,wEA8D9B,CAAA"}
1
+ {"version":3,"file":"attempt-service.d.ts","sourceRoot":"","sources":["../../src/services/attempt-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEtG,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;;IAK7E,8DAA8D;qBAC7C,CACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,KACnB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,GAAG,aAAa,CAAC;IAEhF,2BAA2B;kBACb,CAAC,EAAE,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAE7F,mCAAmC;0BACb,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,EAAE,aAAa,CAAC;IAE1F,8BAA8B;qBACb,CAAC,EAAE,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAE7F,8CAA8C;6BACrB,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAEjF,qEAAqE;sCACnC,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC;;AAxBvH,qBAAa,cAAe,SAAQ,mBA0BjC;CAAG;AAEN,eAAO,MAAM,kBAAkB,wEA6D9B,CAAA"}
@@ -45,10 +45,7 @@ export const AttemptServiceLive = Layer.effect(AttemptService, Effect.gen(functi
45
45
  }
46
46
  yield* attemptRepo.remove(id);
47
47
  }),
48
- getFailedCount: (taskId) => Effect.gen(function* () {
49
- const attempts = yield* attemptRepo.findByTaskId(taskId);
50
- return attempts.filter(a => a.outcome === "failed").length;
51
- }),
48
+ getFailedCount: (taskId) => attemptRepo.getFailedCountsForTasks([taskId]).pipe(Effect.map(counts => counts.get(taskId) ?? 0)),
52
49
  getFailedCountsForTasks: (taskIds) => attemptRepo.getFailedCountsForTasks(taskIds)
53
50
  };
54
51
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"attempt-service.js","sourceRoot":"","sources":["../../src/services/attempt-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attempt-service.js","sourceRoot":"","sources":["../../src/services/attempt-service.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ declare const AutoSyncService_base: Context.TagClass<AutoSyncService, "AutoSyncS
46
46
  }>;
47
47
  export declare class AutoSyncService extends AutoSyncService_base {
48
48
  }
49
- export declare const AutoSyncServiceLive: Layer.Layer<AutoSyncService, never, SqliteClient | SyncService>;
49
+ export declare const AutoSyncServiceLive: Layer.Layer<AutoSyncService, never, SyncService | SqliteClient>;
50
50
  /**
51
51
  * Noop implementation for use when auto-sync is not needed.
52
52
  * All hooks do nothing.
@@ -1 +1 @@
1
- {"version":3,"file":"auto-sync-service.d.ts","sourceRoot":"","sources":["../../src/services/auto-sync-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,UAAU,CAAA;;IAK9E;;;OAGG;gCACyB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAE5D;;;OAGG;oCAC6B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAEhE;;;OAGG;wCACiC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAEpE;;;OAGG;mCAC4B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAE/D;;;OAGG;+BACwB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;;AA/B/D,qBAAa,eAAgB,SAAQ,oBAiClC;CAAG;AAEN,eAAO,MAAM,mBAAmB,iEAgE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,4CAS/B,CAAA"}
1
+ {"version":3,"file":"auto-sync-service.d.ts","sourceRoot":"","sources":["../../src/services/auto-sync-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAS,KAAK,EAAO,MAAM,QAAQ,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,UAAU,CAAA;;IAK9E;;;OAGG;gCACyB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAE5D;;;OAGG;oCAC6B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAEhE;;;OAGG;wCACiC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAEpE;;;OAGG;mCAC4B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAE/D;;;OAGG;+BACwB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;;AA/B/D,qBAAa,eAAgB,SAAQ,oBAiClC;CAAG;AAEN,eAAO,MAAM,mBAAmB,iEA2E/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,4CAS/B,CAAA"}
@@ -10,7 +10,7 @@
10
10
  * - Error-resilient: Export errors are logged but never propagate to caller
11
11
  * - Configurable: Controlled via sync_config "auto_sync" setting
12
12
  */
13
- import { Context, Effect, Layer } from "effect";
13
+ import { Context, Effect, Fiber, Layer, Ref } from "effect";
14
14
  import { SqliteClient } from "../db.js";
15
15
  import { SyncService } from "./sync-service.js";
16
16
  import { DatabaseError } from "../errors.js";
@@ -19,6 +19,10 @@ export class AutoSyncService extends Context.Tag("AutoSyncService")() {
19
19
  export const AutoSyncServiceLive = Layer.effect(AutoSyncService, Effect.gen(function* () {
20
20
  const db = yield* SqliteClient;
21
21
  const syncService = yield* SyncService;
22
+ // Track the current export fiber to prevent unbounded accumulation.
23
+ // When a new mutation triggers an export, any in-flight export is interrupted
24
+ // first — only the latest export needs to succeed since it captures all state.
25
+ const currentFiber = yield* Ref.make(null);
22
26
  // Check if auto-sync is enabled
23
27
  const isEnabled = () => Effect.try({
24
28
  try: () => {
@@ -27,28 +31,32 @@ export const AutoSyncServiceLive = Layer.effect(AutoSyncService, Effect.gen(func
27
31
  },
28
32
  catch: (cause) => new DatabaseError({ cause })
29
33
  });
30
- // Run export in background, catching and logging any errors
34
+ // Run export in background, interrupting any previous in-flight export
31
35
  const runInBackground = (exportEffect) => Effect.gen(function* () {
32
36
  const enabled = yield* isEnabled().pipe(Effect.catchAll(() => Effect.succeed(false)));
33
37
  if (!enabled) {
34
38
  return;
35
39
  }
36
- // Fork the export and ignore the fiber - fire and forget
37
- yield* Effect.fork(exportEffect.pipe(Effect.catchAll((error) => Effect.sync(() => {
40
+ // Fork the new export
41
+ const clearRef = Ref.set(currentFiber, null);
42
+ const fiber = yield* Effect.fork(exportEffect.pipe(Effect.catchAll((error) => Effect.sync(() => {
38
43
  // Log error but don't propagate
39
44
  console.error("[auto-sync] Export failed:", error);
40
- }))));
45
+ })), Effect.asVoid,
46
+ // Clear the fiber ref when this export completes or is interrupted
47
+ Effect.ensuring(clearRef)));
48
+ // Atomically swap the previous fiber with the new one, then interrupt the old one.
49
+ // Using Ref.getAndSet ensures no concurrent caller can read a stale fiber.
50
+ const prevFiber = yield* Ref.getAndSet(currentFiber, fiber);
51
+ if (prevFiber !== null) {
52
+ yield* Fiber.interrupt(prevFiber);
53
+ }
41
54
  });
42
55
  return {
43
- // Tasks use the standard export
44
56
  afterTaskMutation: () => runInBackground(syncService.export()),
45
- // TODO: Implement when learning sync is added to SyncService
46
57
  afterLearningMutation: () => runInBackground(syncService.export()),
47
- // TODO: Implement when file-learning sync is added to SyncService
48
58
  afterFileLearningMutation: () => runInBackground(syncService.export()),
49
- // TODO: Implement when attempt sync is added to SyncService
50
59
  afterAttemptMutation: () => runInBackground(syncService.export()),
51
- // For now, just exports tasks - extend when other entity types are supported
52
60
  afterAnyMutation: () => runInBackground(syncService.export())
53
61
  };
54
62
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"auto-sync-service.js","sourceRoot":"","sources":["../../src/services/auto-sync-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-sync-service.js","sourceRoot":"","sources":["../../src/services/auto-sync-service.ts"],"names":[],"mappings":"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"}
@@ -20,12 +20,12 @@ declare const ClaimService_base: Context.TagClass<ClaimService, "ClaimService",
20
20
  * Release a claim on a task.
21
21
  * Only the worker who holds the claim can release it.
22
22
  */
23
- readonly release: (taskId: string, workerId: string) => Effect.Effect<void, ClaimNotFoundError | DatabaseError>;
23
+ readonly release: (taskId: string, workerId: string) => Effect.Effect<void, ClaimNotFoundError | ClaimIdNotFoundError | DatabaseError>;
24
24
  /**
25
25
  * Renew the lease on an existing claim.
26
26
  * Fails if the claim is expired or max renewals exceeded.
27
27
  */
28
- readonly renew: (taskId: string, workerId: string) => Effect.Effect<TaskClaim, ClaimNotFoundError | LeaseExpiredError | MaxRenewalsExceededError | DatabaseError>;
28
+ readonly renew: (taskId: string, workerId: string) => Effect.Effect<TaskClaim, ClaimNotFoundError | ClaimIdNotFoundError | LeaseExpiredError | MaxRenewalsExceededError | DatabaseError>;
29
29
  /**
30
30
  * Get all claims that have expired but are still marked as active.
31
31
  */
@@ -44,6 +44,12 @@ declare const ClaimService_base: Context.TagClass<ClaimService, "ClaimService",
44
44
  * Get the active claim for a task, if any.
45
45
  */
46
46
  readonly getActiveClaim: (taskId: string) => Effect.Effect<TaskClaim | null, DatabaseError>;
47
+ /**
48
+ * Get active claims on tasks that are not in 'active' status.
49
+ * These are orphaned claims left behind when claim release fails
50
+ * after task completion.
51
+ */
52
+ readonly getOrphanedClaims: () => Effect.Effect<readonly TaskClaim[], DatabaseError>;
47
53
  }>;
48
54
  export declare class ClaimService extends ClaimService_base {
49
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claim-service.d.ts","sourceRoot":"","sources":["../../src/services/claim-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AAChF,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;;IAWjD;;;OAGG;oBACa,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,oBAAoB,CAAC,EAAE,MAAM,KAC1B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,aAAa,CAAC;IAEtF;;;OAGG;sBACe,CAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAE5D;;;OAGG;oBACa,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,wBAAwB,GAAG,aAAa,CAAC;IAEhH;;OAEG;yBACkB,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,SAAS,EAAE,EAAE,aAAa,CAAC;IAE7E;;;OAGG;qBACc,CACf,OAAO,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAE9D;;;OAGG;8BACuB,CACxB,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAEzC;;OAEG;6BACsB,CACvB,MAAM,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,aAAa,CAAC;;AAzDvD,qBAAa,YAAa,SAAQ,iBA2D/B;CAAG;AAEN,eAAO,MAAM,gBAAgB,kGA6J5B,CAAA"}
1
+ {"version":3,"file":"claim-service.d.ts","sourceRoot":"","sources":["../../src/services/claim-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AAChF,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;;IAWjD;;;OAGG;oBACa,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,oBAAoB,CAAC,EAAE,MAAM,KAC1B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,aAAa,CAAC;IAEtF;;;OAGG;sBACe,CAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,aAAa,CAAC;IAEnF;;;OAGG;oBACa,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,wBAAwB,GAAG,aAAa,CAAC;IAEvI;;OAEG;yBACkB,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,SAAS,EAAE,EAAE,aAAa,CAAC;IAE7E;;;OAGG;qBACc,CACf,OAAO,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAE9D;;;OAGG;8BACuB,CACxB,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAEzC;;OAEG;6BACsB,CACvB,MAAM,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,aAAa,CAAC;IAEnD;;;;OAIG;gCACyB,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,SAAS,EAAE,EAAE,aAAa,CAAC;;AAhExF,qBAAa,YAAa,SAAQ,iBAkE/B;CAAG;AAEN,eAAO,MAAM,gBAAgB,kGA8K5B,CAAA"}
@@ -27,12 +27,12 @@ export const ClaimServiceLive = Layer.effect(ClaimService, Effect.gen(function*
27
27
  if (!task) {
28
28
  return yield* Effect.fail(new TaskNotFoundError({ id: taskId }));
29
29
  }
30
- // Check if task is already claimed
31
- const existingClaim = yield* claimRepo.findActiveByTaskId(taskId);
32
- if (existingClaim) {
30
+ // Verify task is in a claimable status (not terminal)
31
+ const TERMINAL_STATUSES = ["done", "review", "human_needs_to_review"];
32
+ if (TERMINAL_STATUSES.some(s => s === task.status)) {
33
33
  return yield* Effect.fail(new AlreadyClaimedError({
34
34
  taskId,
35
- claimedByWorkerId: existingClaim.workerId
35
+ claimedByWorkerId: `task in terminal status '${task.status}'`
36
36
  }));
37
37
  }
38
38
  // Get lease duration from config or use provided/default
@@ -40,7 +40,9 @@ export const ClaimServiceLive = Layer.effect(ClaimService, Effect.gen(function*
40
40
  const duration = leaseDurationMinutes ?? state.leaseDurationMinutes;
41
41
  const now = new Date();
42
42
  const leaseExpiresAt = new Date(now.getTime() + duration * 60 * 1000);
43
- const claim = yield* claimRepo.insert({
43
+ // Use atomic insert to prevent race condition
44
+ // This single SQL operation checks for existing claims AND inserts atomically
45
+ const result = yield* claimRepo.tryInsertAtomic({
44
46
  taskId,
45
47
  workerId,
46
48
  claimedAt: now,
@@ -48,8 +50,15 @@ export const ClaimServiceLive = Layer.effect(ClaimService, Effect.gen(function*
48
50
  renewedCount: 0,
49
51
  status: "active"
50
52
  });
53
+ if (!result.success) {
54
+ // Another worker already has an active claim
55
+ return yield* Effect.fail(new AlreadyClaimedError({
56
+ taskId,
57
+ claimedByWorkerId: result.existingClaim?.workerId ?? "unknown"
58
+ }));
59
+ }
51
60
  yield* Effect.log(`Task ${taskId} claimed by worker ${workerId}, expires at ${leaseExpiresAt.toISOString()}`);
52
- return claim;
61
+ return result.claim;
53
62
  }),
54
63
  release: (taskId, workerId) => Effect.gen(function* () {
55
64
  const claim = yield* claimRepo.findActiveByTaskId(taskId);
@@ -68,6 +77,7 @@ export const ClaimServiceLive = Layer.effect(ClaimService, Effect.gen(function*
68
77
  yield* Effect.log(`Task ${taskId} claim released by worker ${workerId}`);
69
78
  }),
70
79
  renew: (taskId, workerId) => Effect.gen(function* () {
80
+ // First fetch the claim to check ownership and max renewals
71
81
  const claim = yield* claimRepo.findActiveByTaskId(taskId);
72
82
  if (!claim) {
73
83
  return yield* Effect.fail(new ClaimNotFoundError({ taskId, workerId }));
@@ -76,15 +86,7 @@ export const ClaimServiceLive = Layer.effect(ClaimService, Effect.gen(function*
76
86
  if (claim.workerId !== workerId) {
77
87
  return yield* Effect.fail(new ClaimNotFoundError({ taskId, workerId }));
78
88
  }
79
- // Check if claim has already expired
80
- const now = new Date();
81
- if (claim.leaseExpiresAt < now) {
82
- return yield* Effect.fail(new LeaseExpiredError({
83
- taskId,
84
- expiredAt: claim.leaseExpiresAt.toISOString()
85
- }));
86
- }
87
- // Check max renewals
89
+ // Check max renewals before attempting atomic renewal
88
90
  if (claim.renewedCount >= DEFAULT_MAX_RENEWALS) {
89
91
  return yield* Effect.fail(new MaxRenewalsExceededError({
90
92
  taskId,
@@ -94,15 +96,24 @@ export const ClaimServiceLive = Layer.effect(ClaimService, Effect.gen(function*
94
96
  }
95
97
  // Get lease duration from config
96
98
  const state = yield* orchestratorRepo.get();
99
+ const now = new Date();
97
100
  const newLeaseExpiresAt = new Date(now.getTime() + state.leaseDurationMinutes * 60 * 1000);
98
- const updatedClaim = {
99
- ...claim,
100
- leaseExpiresAt: newLeaseExpiresAt,
101
- renewedCount: claim.renewedCount + 1
102
- };
103
- yield* claimRepo.update(updatedClaim);
104
- yield* Effect.log(`Task ${taskId} lease renewed (${updatedClaim.renewedCount}/${DEFAULT_MAX_RENEWALS}), new expiry: ${newLeaseExpiresAt.toISOString()}`);
105
- return updatedClaim;
101
+ // Use atomic renewal to prevent race condition between expiration check and update
102
+ // The renewal only succeeds if the lease hasn't expired at the moment of update
103
+ const result = yield* claimRepo.tryRenewAtomic(claim.id, workerId, newLeaseExpiresAt);
104
+ if (!result.success) {
105
+ if (result.failureReason === "expired") {
106
+ // The lease expired between our initial check and the atomic renewal attempt
107
+ return yield* Effect.fail(new LeaseExpiredError({
108
+ taskId,
109
+ expiredAt: claim.leaseExpiresAt.toISOString()
110
+ }));
111
+ }
112
+ // not_found - claim was released or expired by another process
113
+ return yield* Effect.fail(new ClaimNotFoundError({ taskId, workerId }));
114
+ }
115
+ yield* Effect.log(`Task ${taskId} lease renewed (${result.claim.renewedCount}/${DEFAULT_MAX_RENEWALS}), new expiry: ${newLeaseExpiresAt.toISOString()}`);
116
+ return result.claim;
106
117
  }),
107
118
  getExpired: () => Effect.gen(function* () {
108
119
  const now = new Date();
@@ -128,6 +139,9 @@ export const ClaimServiceLive = Layer.effect(ClaimService, Effect.gen(function*
128
139
  }),
129
140
  getActiveClaim: (taskId) => Effect.gen(function* () {
130
141
  return yield* claimRepo.findActiveByTaskId(taskId);
142
+ }),
143
+ getOrphanedClaims: () => Effect.gen(function* () {
144
+ return yield* claimRepo.findOrphanedClaims();
131
145
  })
132
146
  };
133
147
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"claim-service.js","sourceRoot":"","sources":["../../src/services/claim-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claim-service.js","sourceRoot":"","sources":["../../src/services/claim-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * CompactionService - Compacts completed tasks and exports learnings
3
+ *
4
+ * Implements PRD-006: Task Compaction & Learnings Export
5
+ * See DD-006: LLM Integration for implementation details
6
+ */
7
+ import { Context, Effect, Layer } from "effect";
8
+ import { SqliteClient } from "../db.js";
9
+ import { DatabaseError, ExtractionUnavailableError, ValidationError } from "../errors.js";
10
+ import { CompactionRepository, type CompactionLogEntry } from "../repo/compaction-repo.js";
11
+ import type { Task } from "@jamesaphoenix/tx-types";
12
+ /**
13
+ * Output mode for compaction learnings.
14
+ * - 'database': Store in compaction_log table only
15
+ * - 'markdown': Append to markdown file only
16
+ * - 'both': Store in DB AND append to markdown (default, per DOCTRINE RULE 2)
17
+ */
18
+ export type CompactionOutputMode = 'database' | 'markdown' | 'both';
19
+ /**
20
+ * Result of a compaction operation.
21
+ */
22
+ export interface CompactionResult {
23
+ readonly compactedCount: number;
24
+ readonly summary: string;
25
+ readonly learnings: string;
26
+ readonly taskIds: readonly string[];
27
+ readonly learningsExportedTo: string | null;
28
+ readonly outputMode: CompactionOutputMode;
29
+ }
30
+ /**
31
+ * Options for compaction.
32
+ */
33
+ export interface CompactionOptions {
34
+ /** Compact tasks completed before this date */
35
+ readonly before: Date;
36
+ /** Path to export learnings (default: CLAUDE.md) */
37
+ readonly outputFile?: string;
38
+ /** If true, preview only without actually compacting */
39
+ readonly dryRun?: boolean;
40
+ /**
41
+ * Output mode for learnings: 'database', 'markdown', or 'both'.
42
+ * Default: 'both' (per DOCTRINE RULE 2)
43
+ */
44
+ readonly outputMode?: CompactionOutputMode;
45
+ }
46
+ /**
47
+ * Preview result showing what would be compacted.
48
+ */
49
+ export interface CompactionPreview {
50
+ readonly tasks: readonly Task[];
51
+ readonly summary: string | null;
52
+ readonly learnings: string | null;
53
+ }
54
+ declare const CompactionService_base: Context.TagClass<CompactionService, "CompactionService", {
55
+ /**
56
+ * Compact tasks completed before the given date.
57
+ * Requires ANTHROPIC_API_KEY to be set.
58
+ */
59
+ readonly compact: (options: CompactionOptions) => Effect.Effect<CompactionResult, ExtractionUnavailableError | DatabaseError | ValidationError>;
60
+ /**
61
+ * Preview what would be compacted without LLM processing.
62
+ * Works without ANTHROPIC_API_KEY.
63
+ */
64
+ readonly preview: (before: Date) => Effect.Effect<readonly Task[], DatabaseError>;
65
+ /**
66
+ * Get all compaction history.
67
+ */
68
+ readonly getSummaries: () => Effect.Effect<readonly CompactionLogEntry[], DatabaseError>;
69
+ /**
70
+ * Export learnings to a markdown file.
71
+ */
72
+ readonly exportLearnings: (learnings: string, targetFile: string) => Effect.Effect<void, DatabaseError | ValidationError>;
73
+ /**
74
+ * Check if compaction functionality is available (API key set).
75
+ */
76
+ readonly isAvailable: () => Effect.Effect<boolean>;
77
+ }>;
78
+ /**
79
+ * CompactionService provides compaction operations for completed tasks.
80
+ *
81
+ * Design: Following DD-006 patterns for LLM integration with graceful degradation.
82
+ * When ANTHROPIC_API_KEY is not set, compact() fails gracefully while preview()
83
+ * and getSummaries() still work.
84
+ */
85
+ export declare class CompactionService extends CompactionService_base {
86
+ }
87
+ /**
88
+ * Noop implementation - returns failures for LLM operations.
89
+ * Used for testing and when no API key is configured.
90
+ */
91
+ export declare const CompactionServiceNoop: Layer.Layer<CompactionService, never, SqliteClient | CompactionRepository>;
92
+ /**
93
+ * Live implementation with Anthropic LLM support.
94
+ */
95
+ export declare const CompactionServiceLive: Layer.Layer<CompactionService, never, SqliteClient | CompactionRepository>;
96
+ /**
97
+ * Auto-detecting layer that selects the appropriate backend based on environment.
98
+ *
99
+ * Priority:
100
+ * 1. ANTHROPIC_API_KEY set -> Use Live implementation
101
+ * 2. Not set -> Use Noop (graceful degradation)
102
+ */
103
+ export declare const CompactionServiceAuto: Layer.Layer<CompactionService, never, SqliteClient | CompactionRepository>;
104
+ export {};
105
+ //# sourceMappingURL=compaction-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-service.d.ts","sourceRoot":"","sources":["../../src/services/compaction-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAkB,MAAM,QAAQ,CAAA;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACzF,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE1F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAkBnD;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;IACrB,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;;IA6FG;;;OAGG;sBACe,CAAC,OAAO,EAAE,iBAAiB,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,0BAA0B,GAAG,aAAa,GAAG,eAAe,CAAC;IAC/I;;;OAGG;sBACe,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,CAAC;IACjF;;OAEG;2BACoB,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,kBAAkB,EAAE,EAAE,aAAa,CAAC;IACxF;;OAEG;8BACuB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe,CAAC;IACzH;;OAEG;0BACmB,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;AA/BtD;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,sBA0BpC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,qBAAqB,4EAgEjC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,4EA6OjC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,4EAUjC,CAAA"}