@jamesaphoenix/tx-core 0.4.2 → 0.4.4

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 (336) 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 +108 -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/attempt.d.ts +3 -1
  23. package/dist/mappers/attempt.d.ts.map +1 -1
  24. package/dist/mappers/attempt.js +23 -9
  25. package/dist/mappers/attempt.js.map +1 -1
  26. package/dist/mappers/claim.d.ts +1 -1
  27. package/dist/mappers/claim.d.ts.map +1 -1
  28. package/dist/mappers/claim.js +11 -4
  29. package/dist/mappers/claim.js.map +1 -1
  30. package/dist/mappers/deduplication.d.ts +13 -1
  31. package/dist/mappers/deduplication.d.ts.map +1 -1
  32. package/dist/mappers/deduplication.js +22 -3
  33. package/dist/mappers/deduplication.js.map +1 -1
  34. package/dist/mappers/doc.d.ts +24 -0
  35. package/dist/mappers/doc.d.ts.map +1 -0
  36. package/dist/mappers/doc.js +161 -0
  37. package/dist/mappers/doc.js.map +1 -0
  38. package/dist/mappers/file-learning.d.ts.map +1 -1
  39. package/dist/mappers/file-learning.js +2 -1
  40. package/dist/mappers/file-learning.js.map +1 -1
  41. package/dist/mappers/index.d.ts +6 -7
  42. package/dist/mappers/index.d.ts.map +1 -1
  43. package/dist/mappers/index.js +10 -12
  44. package/dist/mappers/index.js.map +1 -1
  45. package/dist/mappers/learning.d.ts +9 -1
  46. package/dist/mappers/learning.d.ts.map +1 -1
  47. package/dist/mappers/learning.js +94 -14
  48. package/dist/mappers/learning.js.map +1 -1
  49. package/dist/mappers/orchestrator-state.d.ts +1 -1
  50. package/dist/mappers/orchestrator-state.d.ts.map +1 -1
  51. package/dist/mappers/orchestrator-state.js +31 -5
  52. package/dist/mappers/orchestrator-state.js.map +1 -1
  53. package/dist/mappers/parse-date.d.ts +11 -0
  54. package/dist/mappers/parse-date.d.ts.map +1 -0
  55. package/dist/mappers/parse-date.js +18 -0
  56. package/dist/mappers/parse-date.js.map +1 -0
  57. package/dist/mappers/run.d.ts +14 -4
  58. package/dist/mappers/run.d.ts.map +1 -1
  59. package/dist/mappers/run.js +49 -18
  60. package/dist/mappers/run.js.map +1 -1
  61. package/dist/mappers/task.d.ts +5 -1
  62. package/dist/mappers/task.d.ts.map +1 -1
  63. package/dist/mappers/task.js +66 -16
  64. package/dist/mappers/task.js.map +1 -1
  65. package/dist/mappers/tracked-project.d.ts +3 -1
  66. package/dist/mappers/tracked-project.d.ts.map +1 -1
  67. package/dist/mappers/tracked-project.js +23 -9
  68. package/dist/mappers/tracked-project.js.map +1 -1
  69. package/dist/mappers/worker.d.ts +1 -1
  70. package/dist/mappers/worker.d.ts.map +1 -1
  71. package/dist/mappers/worker.js +44 -6
  72. package/dist/mappers/worker.js.map +1 -1
  73. package/dist/repo/attempt-repo.d.ts +2 -2
  74. package/dist/repo/attempt-repo.d.ts.map +1 -1
  75. package/dist/repo/attempt-repo.js +16 -6
  76. package/dist/repo/attempt-repo.js.map +1 -1
  77. package/dist/repo/claim-repo.d.ts +46 -2
  78. package/dist/repo/claim-repo.d.ts.map +1 -1
  79. package/dist/repo/claim-repo.js +113 -6
  80. package/dist/repo/claim-repo.js.map +1 -1
  81. package/dist/repo/deduplication-repo.d.ts +9 -1
  82. package/dist/repo/deduplication-repo.d.ts.map +1 -1
  83. package/dist/repo/deduplication-repo.js +46 -9
  84. package/dist/repo/deduplication-repo.js.map +1 -1
  85. package/dist/repo/dep-repo.d.ts +27 -3
  86. package/dist/repo/dep-repo.d.ts.map +1 -1
  87. package/dist/repo/dep-repo.js +166 -39
  88. package/dist/repo/dep-repo.js.map +1 -1
  89. package/dist/repo/doc-repo.d.ts +59 -0
  90. package/dist/repo/doc-repo.d.ts.map +1 -0
  91. package/dist/repo/doc-repo.js +276 -0
  92. package/dist/repo/doc-repo.js.map +1 -0
  93. package/dist/repo/file-learning-repo.d.ts +3 -3
  94. package/dist/repo/file-learning-repo.d.ts.map +1 -1
  95. package/dist/repo/file-learning-repo.js +19 -8
  96. package/dist/repo/file-learning-repo.js.map +1 -1
  97. package/dist/repo/index.d.ts +4 -6
  98. package/dist/repo/index.d.ts.map +1 -1
  99. package/dist/repo/index.js +3 -5
  100. package/dist/repo/index.js.map +1 -1
  101. package/dist/repo/learning-repo.d.ts +10 -3
  102. package/dist/repo/learning-repo.d.ts.map +1 -1
  103. package/dist/repo/learning-repo.js +68 -11
  104. package/dist/repo/learning-repo.js.map +1 -1
  105. package/dist/repo/orchestrator-state-repo.d.ts.map +1 -1
  106. package/dist/repo/orchestrator-state-repo.js +8 -1
  107. package/dist/repo/orchestrator-state-repo.js.map +1 -1
  108. package/dist/repo/run-repo.d.ts +3 -3
  109. package/dist/repo/run-repo.d.ts.map +1 -1
  110. package/dist/repo/run-repo.js +40 -19
  111. package/dist/repo/run-repo.js.map +1 -1
  112. package/dist/repo/task-repo.d.ts +14 -3
  113. package/dist/repo/task-repo.d.ts.map +1 -1
  114. package/dist/repo/task-repo.js +194 -20
  115. package/dist/repo/task-repo.js.map +1 -1
  116. package/dist/repo/tracked-project-repo.d.ts.map +1 -1
  117. package/dist/repo/tracked-project-repo.js +15 -1
  118. package/dist/repo/tracked-project-repo.js.map +1 -1
  119. package/dist/repo/worker-repo.d.ts +3 -2
  120. package/dist/repo/worker-repo.d.ts.map +1 -1
  121. package/dist/repo/worker-repo.js +54 -8
  122. package/dist/repo/worker-repo.js.map +1 -1
  123. package/dist/schemas/sync.js +2 -2
  124. package/dist/schemas/sync.js.map +1 -1
  125. package/dist/schemas/worker.d.ts +1 -0
  126. package/dist/schemas/worker.d.ts.map +1 -1
  127. package/dist/schemas/worker.js +1 -0
  128. package/dist/schemas/worker.js.map +1 -1
  129. package/dist/services/agent-service.d.ts +57 -0
  130. package/dist/services/agent-service.d.ts.map +1 -0
  131. package/dist/services/agent-service.js +81 -0
  132. package/dist/services/agent-service.js.map +1 -0
  133. package/dist/services/attempt-service.d.ts.map +1 -1
  134. package/dist/services/attempt-service.js +1 -4
  135. package/dist/services/attempt-service.js.map +1 -1
  136. package/dist/services/auto-sync-service.d.ts.map +1 -1
  137. package/dist/services/auto-sync-service.js +18 -10
  138. package/dist/services/auto-sync-service.js.map +1 -1
  139. package/dist/services/claim-service.d.ts +8 -2
  140. package/dist/services/claim-service.d.ts.map +1 -1
  141. package/dist/services/claim-service.js +37 -23
  142. package/dist/services/claim-service.js.map +1 -1
  143. package/dist/services/cycle-scan-service.d.ts +32 -0
  144. package/dist/services/cycle-scan-service.d.ts.map +1 -0
  145. package/dist/services/cycle-scan-service.js +546 -0
  146. package/dist/services/cycle-scan-service.js.map +1 -0
  147. package/dist/services/daemon-service.d.ts +40 -2
  148. package/dist/services/daemon-service.d.ts.map +1 -1
  149. package/dist/services/daemon-service.js +199 -52
  150. package/dist/services/daemon-service.js.map +1 -1
  151. package/dist/services/deduplication-service.d.ts +8 -4
  152. package/dist/services/deduplication-service.d.ts.map +1 -1
  153. package/dist/services/deduplication-service.js +79 -25
  154. package/dist/services/deduplication-service.js.map +1 -1
  155. package/dist/services/dep-service.d.ts +2 -2
  156. package/dist/services/dep-service.d.ts.map +1 -1
  157. package/dist/services/dep-service.js +9 -5
  158. package/dist/services/dep-service.js.map +1 -1
  159. package/dist/services/diversifier-service.d.ts +2 -1
  160. package/dist/services/diversifier-service.d.ts.map +1 -1
  161. package/dist/services/diversifier-service.js +37 -43
  162. package/dist/services/diversifier-service.js.map +1 -1
  163. package/dist/services/doc-service.d.ts +49 -0
  164. package/dist/services/doc-service.d.ts.map +1 -0
  165. package/dist/services/doc-service.js +605 -0
  166. package/dist/services/doc-service.js.map +1 -0
  167. package/dist/services/embedding-service.d.ts +66 -2
  168. package/dist/services/embedding-service.d.ts.map +1 -1
  169. package/dist/services/embedding-service.js +138 -24
  170. package/dist/services/embedding-service.js.map +1 -1
  171. package/dist/services/file-learning-service.d.ts.map +1 -1
  172. package/dist/services/file-learning-service.js +8 -7
  173. package/dist/services/file-learning-service.js.map +1 -1
  174. package/dist/services/file-watcher-service.d.ts.map +1 -1
  175. package/dist/services/file-watcher-service.js +58 -11
  176. package/dist/services/file-watcher-service.js.map +1 -1
  177. package/dist/services/hierarchy-service.d.ts +1 -1
  178. package/dist/services/hierarchy-service.d.ts.map +1 -1
  179. package/dist/services/hierarchy-service.js +50 -32
  180. package/dist/services/hierarchy-service.js.map +1 -1
  181. package/dist/services/index.d.ts +13 -15
  182. package/dist/services/index.d.ts.map +1 -1
  183. package/dist/services/index.js +13 -15
  184. package/dist/services/index.js.map +1 -1
  185. package/dist/services/learning-service.d.ts +3 -3
  186. package/dist/services/learning-service.d.ts.map +1 -1
  187. package/dist/services/learning-service.js +75 -42
  188. package/dist/services/learning-service.js.map +1 -1
  189. package/dist/services/llm-service.d.ts +62 -0
  190. package/dist/services/llm-service.d.ts.map +1 -0
  191. package/dist/services/llm-service.js +172 -0
  192. package/dist/services/llm-service.js.map +1 -0
  193. package/dist/services/migration-service.d.ts +1 -1
  194. package/dist/services/migration-service.d.ts.map +1 -1
  195. package/dist/services/migration-service.js +18 -7
  196. package/dist/services/migration-service.js.map +1 -1
  197. package/dist/services/orchestrator-service.d.ts +4 -3
  198. package/dist/services/orchestrator-service.d.ts.map +1 -1
  199. package/dist/services/orchestrator-service.js +66 -27
  200. package/dist/services/orchestrator-service.js.map +1 -1
  201. package/dist/services/query-expansion-service.d.ts +30 -9
  202. package/dist/services/query-expansion-service.d.ts.map +1 -1
  203. package/dist/services/query-expansion-service.js +54 -63
  204. package/dist/services/query-expansion-service.js.map +1 -1
  205. package/dist/services/ready-service.d.ts +21 -1
  206. package/dist/services/ready-service.d.ts.map +1 -1
  207. package/dist/services/ready-service.js +44 -21
  208. package/dist/services/ready-service.js.map +1 -1
  209. package/dist/services/retriever-service.d.ts +10 -10
  210. package/dist/services/retriever-service.d.ts.map +1 -1
  211. package/dist/services/retriever-service.js +53 -161
  212. package/dist/services/retriever-service.js.map +1 -1
  213. package/dist/services/sync-service.d.ts +17 -4
  214. package/dist/services/sync-service.d.ts.map +1 -1
  215. package/dist/services/sync-service.js +381 -116
  216. package/dist/services/sync-service.js.map +1 -1
  217. package/dist/services/task-service.d.ts +6 -4
  218. package/dist/services/task-service.d.ts.map +1 -1
  219. package/dist/services/task-service.js +165 -35
  220. package/dist/services/task-service.js.map +1 -1
  221. package/dist/services/tracing-service.d.ts +55 -0
  222. package/dist/services/tracing-service.d.ts.map +1 -0
  223. package/dist/services/tracing-service.js +99 -0
  224. package/dist/services/tracing-service.js.map +1 -0
  225. package/dist/services/transcript-adapter.d.ts +99 -0
  226. package/dist/services/transcript-adapter.d.ts.map +1 -0
  227. package/dist/services/transcript-adapter.js +283 -0
  228. package/dist/services/transcript-adapter.js.map +1 -0
  229. package/dist/services/validation-service.d.ts +85 -0
  230. package/dist/services/validation-service.d.ts.map +1 -0
  231. package/dist/services/validation-service.js +289 -0
  232. package/dist/services/validation-service.js.map +1 -0
  233. package/dist/services/worker-process.d.ts +23 -4
  234. package/dist/services/worker-process.d.ts.map +1 -1
  235. package/dist/services/worker-process.js +168 -72
  236. package/dist/services/worker-process.js.map +1 -1
  237. package/dist/services/worker-service.d.ts.map +1 -1
  238. package/dist/services/worker-service.js +7 -12
  239. package/dist/services/worker-service.js.map +1 -1
  240. package/dist/sync/claude-task-writer.d.ts +49 -0
  241. package/dist/sync/claude-task-writer.d.ts.map +1 -0
  242. package/dist/sync/claude-task-writer.js +135 -0
  243. package/dist/sync/claude-task-writer.js.map +1 -0
  244. package/dist/utils/doc-hash.d.ts +10 -0
  245. package/dist/utils/doc-hash.d.ts.map +1 -0
  246. package/dist/utils/doc-hash.js +14 -0
  247. package/dist/utils/doc-hash.js.map +1 -0
  248. package/dist/utils/doc-renderer.d.ts +44 -0
  249. package/dist/utils/doc-renderer.d.ts.map +1 -0
  250. package/dist/utils/doc-renderer.js +202 -0
  251. package/dist/utils/doc-renderer.js.map +1 -0
  252. package/dist/utils/math.d.ts +5 -1
  253. package/dist/utils/math.d.ts.map +1 -1
  254. package/dist/utils/math.js +12 -4
  255. package/dist/utils/math.js.map +1 -1
  256. package/dist/utils/sql.d.ts +9 -0
  257. package/dist/utils/sql.d.ts.map +1 -0
  258. package/dist/utils/sql.js +9 -0
  259. package/dist/utils/sql.js.map +1 -0
  260. package/dist/utils/toml-config.d.ts +22 -0
  261. package/dist/utils/toml-config.d.ts.map +1 -0
  262. package/dist/utils/toml-config.js +75 -0
  263. package/dist/utils/toml-config.js.map +1 -0
  264. package/dist/worker/hooks.d.ts +102 -0
  265. package/dist/worker/hooks.d.ts.map +1 -0
  266. package/dist/worker/hooks.js +11 -0
  267. package/dist/worker/hooks.js.map +1 -0
  268. package/dist/worker/index.d.ts +9 -0
  269. package/dist/worker/index.d.ts.map +1 -0
  270. package/dist/worker/index.js +8 -0
  271. package/dist/worker/index.js.map +1 -0
  272. package/dist/worker/run-worker.d.ts +33 -0
  273. package/dist/worker/run-worker.d.ts.map +1 -0
  274. package/dist/worker/run-worker.js +265 -0
  275. package/dist/worker/run-worker.js.map +1 -0
  276. package/package.json +14 -12
  277. package/dist/mappers/anchor.d.ts +0 -14
  278. package/dist/mappers/anchor.d.ts.map +0 -1
  279. package/dist/mappers/anchor.js +0 -38
  280. package/dist/mappers/anchor.js.map +0 -1
  281. package/dist/mappers/candidate.d.ts +0 -23
  282. package/dist/mappers/candidate.d.ts.map +0 -1
  283. package/dist/mappers/candidate.js +0 -53
  284. package/dist/mappers/candidate.js.map +0 -1
  285. package/dist/mappers/edge.d.ts +0 -10
  286. package/dist/mappers/edge.d.ts.map +0 -1
  287. package/dist/mappers/edge.js +0 -19
  288. package/dist/mappers/edge.js.map +0 -1
  289. package/dist/repo/anchor-repo.d.ts +0 -52
  290. package/dist/repo/anchor-repo.d.ts.map +0 -1
  291. package/dist/repo/anchor-repo.js +0 -204
  292. package/dist/repo/anchor-repo.js.map +0 -1
  293. package/dist/repo/candidate-repo.d.ts +0 -16
  294. package/dist/repo/candidate-repo.d.ts.map +0 -1
  295. package/dist/repo/candidate-repo.js +0 -143
  296. package/dist/repo/candidate-repo.js.map +0 -1
  297. package/dist/repo/edge-repo.d.ts +0 -26
  298. package/dist/repo/edge-repo.d.ts.map +0 -1
  299. package/dist/repo/edge-repo.js +0 -227
  300. package/dist/repo/edge-repo.js.map +0 -1
  301. package/dist/services/anchor-service.d.ts +0 -147
  302. package/dist/services/anchor-service.d.ts.map +0 -1
  303. package/dist/services/anchor-service.js +0 -540
  304. package/dist/services/anchor-service.js.map +0 -1
  305. package/dist/services/anchor-verification.d.ts +0 -94
  306. package/dist/services/anchor-verification.d.ts.map +0 -1
  307. package/dist/services/anchor-verification.js +0 -617
  308. package/dist/services/anchor-verification.js.map +0 -1
  309. package/dist/services/ast-grep-service.d.ts +0 -58
  310. package/dist/services/ast-grep-service.d.ts.map +0 -1
  311. package/dist/services/ast-grep-service.js +0 -356
  312. package/dist/services/ast-grep-service.js.map +0 -1
  313. package/dist/services/candidate-extractor-service.d.ts +0 -56
  314. package/dist/services/candidate-extractor-service.d.ts.map +0 -1
  315. package/dist/services/candidate-extractor-service.js +0 -365
  316. package/dist/services/candidate-extractor-service.js.map +0 -1
  317. package/dist/services/edge-service.d.ts +0 -78
  318. package/dist/services/edge-service.d.ts.map +0 -1
  319. package/dist/services/edge-service.js +0 -158
  320. package/dist/services/edge-service.js.map +0 -1
  321. package/dist/services/feedback-tracker.d.ts +0 -64
  322. package/dist/services/feedback-tracker.d.ts.map +0 -1
  323. package/dist/services/feedback-tracker.js +0 -110
  324. package/dist/services/feedback-tracker.js.map +0 -1
  325. package/dist/services/graph-expansion.d.ts +0 -155
  326. package/dist/services/graph-expansion.d.ts.map +0 -1
  327. package/dist/services/graph-expansion.js +0 -466
  328. package/dist/services/graph-expansion.js.map +0 -1
  329. package/dist/services/promotion-service.d.ts +0 -67
  330. package/dist/services/promotion-service.d.ts.map +0 -1
  331. package/dist/services/promotion-service.js +0 -151
  332. package/dist/services/promotion-service.js.map +0 -1
  333. package/dist/services/swarm-verification.d.ts +0 -104
  334. package/dist/services/swarm-verification.d.ts.map +0 -1
  335. package/dist/services/swarm-verification.js +0 -400
  336. package/dist/services/swarm-verification.js.map +0 -1
@@ -1,227 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- import { SqliteClient } from "../db.js";
3
- import { DatabaseError, EdgeNotFoundError } from "../errors.js";
4
- import { rowToEdge } from "../mappers/edge.js";
5
- export class EdgeRepository extends Context.Tag("EdgeRepository")() {
6
- }
7
- export const EdgeRepositoryLive = Layer.effect(EdgeRepository, Effect.gen(function* () {
8
- const db = yield* SqliteClient;
9
- return {
10
- create: (input) => Effect.try({
11
- try: () => {
12
- const result = db.prepare(`INSERT INTO learning_edges
13
- (edge_type, source_type, source_id, target_type, target_id, weight, metadata)
14
- VALUES (?, ?, ?, ?, ?, ?, ?)`).run(input.edgeType, input.sourceType, input.sourceId, input.targetType, input.targetId, input.weight ?? 1.0, JSON.stringify(input.metadata ?? {}));
15
- const row = db.prepare("SELECT * FROM learning_edges WHERE id = ?").get(result.lastInsertRowid);
16
- return rowToEdge(row);
17
- },
18
- catch: (cause) => new DatabaseError({ cause })
19
- }),
20
- findById: (id) => Effect.try({
21
- try: () => {
22
- const row = db.prepare("SELECT * FROM learning_edges WHERE id = ? AND invalidated_at IS NULL").get(id);
23
- return row ? rowToEdge(row) : null;
24
- },
25
- catch: (cause) => new DatabaseError({ cause })
26
- }),
27
- findBySource: (sourceType, sourceId) => Effect.try({
28
- try: () => {
29
- const rows = db.prepare(`SELECT * FROM learning_edges
30
- WHERE source_type = ? AND source_id = ? AND invalidated_at IS NULL
31
- ORDER BY created_at ASC`).all(sourceType, sourceId);
32
- return rows.map(rowToEdge);
33
- },
34
- catch: (cause) => new DatabaseError({ cause })
35
- }),
36
- findByTarget: (targetType, targetId) => Effect.try({
37
- try: () => {
38
- const rows = db.prepare(`SELECT * FROM learning_edges
39
- WHERE target_type = ? AND target_id = ? AND invalidated_at IS NULL
40
- ORDER BY created_at ASC`).all(targetType, targetId);
41
- return rows.map(rowToEdge);
42
- },
43
- catch: (cause) => new DatabaseError({ cause })
44
- }),
45
- findByMultipleSources: (sourceType, sourceIds) => Effect.try({
46
- try: () => {
47
- // Return empty map for empty input
48
- if (sourceIds.length === 0) {
49
- return new Map();
50
- }
51
- // Build IN clause with placeholders
52
- const placeholders = sourceIds.map(() => "?").join(", ");
53
- const rows = db.prepare(`SELECT * FROM learning_edges
54
- WHERE source_type = ? AND source_id IN (${placeholders}) AND invalidated_at IS NULL
55
- ORDER BY weight DESC, created_at ASC`).all(sourceType, ...sourceIds);
56
- // Group edges by source_id
57
- const result = new Map();
58
- // Initialize all requested sourceIds with empty arrays
59
- for (const sourceId of sourceIds) {
60
- result.set(sourceId, []);
61
- }
62
- // Populate with actual edges
63
- for (const row of rows) {
64
- const edge = rowToEdge(row);
65
- const existing = result.get(row.source_id);
66
- if (existing) {
67
- existing.push(edge);
68
- }
69
- }
70
- return result;
71
- },
72
- catch: (cause) => new DatabaseError({ cause })
73
- }),
74
- findByEdgeType: (edgeType) => Effect.try({
75
- try: () => {
76
- const rows = db.prepare(`SELECT * FROM learning_edges
77
- WHERE edge_type = ? AND invalidated_at IS NULL
78
- ORDER BY weight DESC, created_at ASC`).all(edgeType);
79
- return rows.map(rowToEdge);
80
- },
81
- catch: (cause) => new DatabaseError({ cause })
82
- }),
83
- countByType: () => Effect.try({
84
- try: () => {
85
- const rows = db.prepare(`SELECT edge_type, COUNT(*) as count FROM learning_edges
86
- WHERE invalidated_at IS NULL
87
- GROUP BY edge_type`).all();
88
- const result = new Map();
89
- for (const row of rows) {
90
- result.set(row.edge_type, row.count);
91
- }
92
- return result;
93
- },
94
- catch: (cause) => new DatabaseError({ cause })
95
- }),
96
- findNeighbors: (nodeType, nodeId, options = {}) => Effect.try({
97
- try: () => {
98
- const direction = options.direction ?? "both";
99
- const edgeTypes = options.edgeTypes;
100
- const neighbors = [];
101
- // Build edge type filter clause
102
- const edgeTypeFilter = edgeTypes && edgeTypes.length > 0
103
- ? `AND edge_type IN (${edgeTypes.map(() => "?").join(", ")})`
104
- : "";
105
- const edgeTypeParams = edgeTypes ?? [];
106
- // Outgoing edges (this node is the source)
107
- if (direction === "outgoing" || direction === "both") {
108
- const outgoingRows = db.prepare(`SELECT * FROM learning_edges
109
- WHERE source_type = ? AND source_id = ? AND invalidated_at IS NULL
110
- ${edgeTypeFilter}
111
- ORDER BY weight DESC, created_at ASC`).all(nodeType, nodeId, ...edgeTypeParams);
112
- for (const row of outgoingRows) {
113
- neighbors.push({
114
- nodeType: row.target_type,
115
- nodeId: row.target_id,
116
- edgeType: row.edge_type,
117
- weight: row.weight,
118
- direction: "outgoing"
119
- });
120
- }
121
- }
122
- // Incoming edges (this node is the target)
123
- if (direction === "incoming" || direction === "both") {
124
- const incomingRows = db.prepare(`SELECT * FROM learning_edges
125
- WHERE target_type = ? AND target_id = ? AND invalidated_at IS NULL
126
- ${edgeTypeFilter}
127
- ORDER BY weight DESC, created_at ASC`).all(nodeType, nodeId, ...edgeTypeParams);
128
- for (const row of incomingRows) {
129
- neighbors.push({
130
- nodeType: row.source_type,
131
- nodeId: row.source_id,
132
- edgeType: row.edge_type,
133
- weight: row.weight,
134
- direction: "incoming"
135
- });
136
- }
137
- }
138
- return neighbors;
139
- },
140
- catch: (cause) => new DatabaseError({ cause })
141
- }),
142
- findPath: (fromType, fromId, toType, toId, maxDepth = 5) => Effect.try({
143
- try: () => {
144
- // BFS for shortest path
145
- const visited = new Set([`${fromType}:${fromId}`]);
146
- let frontier = [{ type: fromType, id: fromId, path: [] }];
147
- for (let depth = 0; depth < maxDepth; depth++) {
148
- const nextFrontier = [];
149
- for (const { type, id, path } of frontier) {
150
- // Get outgoing edges
151
- const rows = db.prepare(`SELECT * FROM learning_edges
152
- WHERE source_type = ? AND source_id = ? AND invalidated_at IS NULL`).all(type, id);
153
- for (const row of rows) {
154
- const edge = rowToEdge(row);
155
- // Found target
156
- if (row.target_type === toType && row.target_id === toId) {
157
- return [...path, edge];
158
- }
159
- const key = `${row.target_type}:${row.target_id}`;
160
- if (!visited.has(key)) {
161
- visited.add(key);
162
- nextFrontier.push({
163
- type: row.target_type,
164
- id: row.target_id,
165
- path: [...path, edge]
166
- });
167
- }
168
- }
169
- }
170
- frontier = nextFrontier;
171
- if (frontier.length === 0)
172
- break;
173
- }
174
- return null; // No path found
175
- },
176
- catch: (cause) => new DatabaseError({ cause })
177
- }),
178
- update: (id, input) => Effect.try({
179
- try: () => {
180
- const updates = [];
181
- const values = [];
182
- if (input.weight !== undefined) {
183
- updates.push("weight = ?");
184
- values.push(input.weight);
185
- }
186
- if (input.metadata !== undefined) {
187
- updates.push("metadata = ?");
188
- values.push(JSON.stringify(input.metadata));
189
- }
190
- if (updates.length === 0) {
191
- const row = db.prepare("SELECT * FROM learning_edges WHERE id = ? AND invalidated_at IS NULL").get(id);
192
- return row ? rowToEdge(row) : null;
193
- }
194
- values.push(id);
195
- const result = db.prepare(`UPDATE learning_edges SET ${updates.join(", ")} WHERE id = ? AND invalidated_at IS NULL`).run(...values);
196
- if (result.changes === 0) {
197
- return null;
198
- }
199
- const row = db.prepare("SELECT * FROM learning_edges WHERE id = ?").get(id);
200
- return rowToEdge(row);
201
- },
202
- catch: (cause) => new DatabaseError({ cause })
203
- }),
204
- invalidate: (id) => Effect.try({
205
- try: () => {
206
- const result = db.prepare("UPDATE learning_edges SET invalidated_at = datetime('now') WHERE id = ? AND invalidated_at IS NULL").run(id);
207
- if (result.changes === 0) {
208
- throw new EdgeNotFoundError({ id });
209
- }
210
- return true;
211
- },
212
- catch: (cause) => {
213
- if (cause instanceof EdgeNotFoundError)
214
- throw cause;
215
- throw new DatabaseError({ cause });
216
- }
217
- }),
218
- findAll: () => Effect.try({
219
- try: () => {
220
- const rows = db.prepare("SELECT * FROM learning_edges WHERE invalidated_at IS NULL ORDER BY created_at ASC").all();
221
- return rows.map(rowToEdge);
222
- },
223
- catch: (cause) => new DatabaseError({ cause })
224
- })
225
- };
226
- }));
227
- //# sourceMappingURL=edge-repo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edge-repo.js","sourceRoot":"","sources":["../../src/repo/edge-repo.ts"],"names":[],"mappings":"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"}
@@ -1,147 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- import { AnchorRepository } from "../repo/anchor-repo.js";
3
- import { LearningRepository } from "../repo/learning-repo.js";
4
- import { AnchorNotFoundError, ValidationError, DatabaseError, LearningNotFoundError } from "../errors.js";
5
- import type { Anchor, AnchorWithFreshness, AnchorStatus, AnchorType, InvalidationLog, InvalidationSource } from "@jamesaphoenix/tx-types";
6
- /** Verification result for an anchor */
7
- export interface AnchorVerificationResult {
8
- readonly anchorId: number;
9
- readonly previousStatus: AnchorStatus;
10
- readonly newStatus: AnchorStatus;
11
- readonly verified: boolean;
12
- readonly reason?: string;
13
- }
14
- /** Result of batch verification */
15
- export interface BatchVerificationResult {
16
- readonly total: number;
17
- readonly verified: number;
18
- readonly drifted: number;
19
- readonly invalid: number;
20
- }
21
- /** Graph status summary */
22
- export interface GraphStatusResult {
23
- readonly total: number;
24
- readonly valid: number;
25
- readonly drifted: number;
26
- readonly invalid: number;
27
- readonly pinned: number;
28
- readonly recentInvalidations: readonly InvalidationLog[];
29
- }
30
- /** Prune result */
31
- export interface PruneResult {
32
- readonly deleted: number;
33
- }
34
- /** Anchor input with type-specific validation */
35
- export interface TypedAnchorInput {
36
- readonly learningId: number;
37
- readonly anchorType: AnchorType;
38
- readonly filePath: string;
39
- /** Value depends on type: glob pattern, content hash, symbol FQName, or line range string */
40
- readonly value: string;
41
- /** Symbol fully-qualified name (for symbol anchors) */
42
- readonly symbolFqname?: string;
43
- /** Start line (for line_range anchors) */
44
- readonly lineStart?: number;
45
- /** End line (for line_range anchors) */
46
- readonly lineEnd?: number;
47
- /** Content hash for verification */
48
- readonly contentHash?: string;
49
- /** Content preview for self-healing comparison (max ~500 chars) */
50
- readonly contentPreview?: string;
51
- }
52
- declare const AnchorService_base: Context.TagClass<AnchorService, "AnchorService", {
53
- /**
54
- * Create an anchor with type-specific validation.
55
- * Supports: glob, hash, symbol, line_range
56
- */
57
- readonly createAnchor: (input: TypedAnchorInput) => Effect.Effect<Anchor, ValidationError | LearningNotFoundError | DatabaseError>;
58
- /**
59
- * Verify an anchor's validity.
60
- * Checks if the file/content still matches what the anchor references.
61
- */
62
- readonly verifyAnchor: (anchorId: number) => Effect.Effect<AnchorVerificationResult, AnchorNotFoundError | DatabaseError>;
63
- /**
64
- * Update an anchor's status (valid, drifted, invalid).
65
- */
66
- readonly updateAnchorStatus: (anchorId: number, status: AnchorStatus, reason?: string, detectedBy?: InvalidationSource) => Effect.Effect<Anchor, AnchorNotFoundError | ValidationError | DatabaseError>;
67
- /**
68
- * Log a status change for an anchor.
69
- * Creates an entry in the invalidation_log table.
70
- */
71
- readonly logStatusChange: (anchorId: number, oldStatus: AnchorStatus, newStatus: AnchorStatus, reason: string, detectedBy?: InvalidationSource, oldHash?: string | null, newHash?: string | null, similarity?: number | null) => Effect.Effect<InvalidationLog, AnchorNotFoundError | DatabaseError>;
72
- /**
73
- * Find all anchors for a given file path.
74
- */
75
- readonly findAnchorsForFile: (filePath: string) => Effect.Effect<readonly Anchor[], DatabaseError>;
76
- /**
77
- * Find all anchors for a learning.
78
- */
79
- readonly findAnchorsForLearning: (learningId: number) => Effect.Effect<readonly Anchor[], DatabaseError>;
80
- /**
81
- * Get an anchor by ID.
82
- */
83
- readonly get: (id: number) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
84
- /**
85
- * Get an anchor with lazy verification.
86
- * If anchor is stale (verified_at > now - TTL), runs verification first.
87
- * Returns anchor with freshness information.
88
- */
89
- readonly getWithVerification: (id: number, options?: {
90
- baseDir?: string;
91
- }) => Effect.Effect<AnchorWithFreshness, AnchorNotFoundError | DatabaseError>;
92
- /**
93
- * Soft delete an anchor (set status='invalid' and log the change).
94
- * Use hardDelete for actual removal.
95
- */
96
- readonly remove: (id: number, reason?: string) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
97
- /**
98
- * Hard delete an anchor (actual removal from database).
99
- * Used by prune operations. Prefer soft delete via remove().
100
- */
101
- readonly hardDelete: (id: number) => Effect.Effect<void, AnchorNotFoundError | DatabaseError>;
102
- /**
103
- * Find all drifted anchors.
104
- */
105
- readonly findDrifted: () => Effect.Effect<readonly Anchor[], DatabaseError>;
106
- /**
107
- * Find all invalid anchors.
108
- */
109
- readonly findInvalid: () => Effect.Effect<readonly Anchor[], DatabaseError>;
110
- /**
111
- * Verify all anchors for a file (batch operation).
112
- */
113
- readonly verifyAnchorsForFile: (filePath: string) => Effect.Effect<BatchVerificationResult, DatabaseError>;
114
- /**
115
- * Pin an anchor (prevents auto-invalidation).
116
- */
117
- readonly pin: (anchorId: number) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
118
- /**
119
- * Unpin an anchor.
120
- */
121
- readonly unpin: (anchorId: number) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
122
- /**
123
- * Manually invalidate an anchor with a reason.
124
- */
125
- readonly invalidate: (anchorId: number, reason: string, detectedBy?: InvalidationSource) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
126
- /**
127
- * Restore a soft-deleted (invalid) anchor to valid status.
128
- */
129
- readonly restore: (anchorId: number) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
130
- /**
131
- * Hard delete old invalid anchors.
132
- */
133
- readonly prune: (olderThanDays: number) => Effect.Effect<PruneResult, DatabaseError>;
134
- /**
135
- * Get graph status summary.
136
- */
137
- readonly getStatus: () => Effect.Effect<GraphStatusResult, DatabaseError>;
138
- /**
139
- * Verify all anchors (batch operation).
140
- */
141
- readonly verifyAll: () => Effect.Effect<BatchVerificationResult, DatabaseError>;
142
- }>;
143
- export declare class AnchorService extends AnchorService_base {
144
- }
145
- export declare const AnchorServiceLive: Layer.Layer<AnchorService, never, LearningRepository | AnchorRepository>;
146
- export {};
147
- //# sourceMappingURL=anchor-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anchor-service.d.ts","sourceRoot":"","sources":["../../src/services/anchor-service.ts"],"names":[],"mappings":"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"}