@jamesaphoenix/tx-core 0.8.1 → 0.9.2

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 +4 -3
  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
@@ -1 +1 @@
1
- {"version":3,"file":"cycle-scan-service.js","sourceRoot":"","sources":["../../src/services/cycle-scan-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cycle-scan-service.js","sourceRoot":"","sources":["../../src/services/cycle-scan-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,wCAAwC,CAAA"}
@@ -0,0 +1,93 @@
1
+ import { Effect } from "effect";
2
+ import { DaemonError } from "../../errors.js";
3
+ /**
4
+ * Default path for the daemon PID file.
5
+ */
6
+ export declare const PID_FILE_PATH = ".tx/daemon.pid";
7
+ /**
8
+ * Check if a process with the given PID is currently running.
9
+ * Uses kill signal 0 which doesn't actually send a signal but checks if the process exists.
10
+ *
11
+ * @param pid - The process ID to check
12
+ * @returns Effect that resolves to true if the process is running, false otherwise
13
+ */
14
+ export declare const isProcessRunning: (pid: number) => Effect.Effect<boolean, DaemonError>;
15
+ /**
16
+ * Write a PID to the daemon PID file.
17
+ * Creates the .tx directory if it doesn't exist.
18
+ *
19
+ * @param pid - The process ID to write
20
+ * @returns Effect that resolves to void on success
21
+ */
22
+ export declare const writePid: (pid: number) => Effect.Effect<void, DaemonError>;
23
+ /**
24
+ * Remove the PID file only if its current content matches the expected value.
25
+ *
26
+ * This is a compare-and-swap guard that prevents the TOCTOU race where
27
+ * readPid()'s stale cleanup could delete a freshly-written PID file created
28
+ * by a concurrent daemon start. Between isProcessRunning() returning false
29
+ * and removePid() executing, a new daemon may have written a fresh PID.
30
+ *
31
+ * If the file no longer exists or its content has changed, this is a no-op.
32
+ *
33
+ * @param expectedContent - The PID file content we originally read
34
+ * @returns Effect that resolves to void on success
35
+ */
36
+ export declare const removePidIfContentMatches: (expectedContent: string) => Effect.Effect<void, DaemonError>;
37
+ /**
38
+ * Read the PID from the daemon PID file.
39
+ * Returns null if the file doesn't exist.
40
+ * Handles stale PID cleanup: if the PID file exists but the process is not running,
41
+ * the stale PID file is automatically removed and null is returned.
42
+ *
43
+ * @returns Effect that resolves to the PID number, or null if no valid PID file exists
44
+ */
45
+ export declare const readPid: () => Effect.Effect<number | null, DaemonError>;
46
+ /**
47
+ * Remove the daemon PID file.
48
+ * Does nothing if the file doesn't exist.
49
+ *
50
+ * @returns Effect that resolves to void on success
51
+ */
52
+ export declare const removePid: () => Effect.Effect<void, DaemonError>;
53
+ /**
54
+ * Write the daemon start timestamp to a file.
55
+ */
56
+ export declare const writeStartedAt: (date: Date) => Effect.Effect<void, DaemonError>;
57
+ /**
58
+ * Read the daemon start timestamp from file.
59
+ */
60
+ export declare const readStartedAt: () => Effect.Effect<Date | null, DaemonError>;
61
+ /**
62
+ * Remove the daemon start timestamp file.
63
+ */
64
+ export declare const removeStartedAt: () => Effect.Effect<void, DaemonError>;
65
+ /**
66
+ * Send a signal to a process by PID.
67
+ * Returns true if the signal was sent successfully, false if the process doesn't exist.
68
+ */
69
+ export declare const sendSignal: (pid: number, signal: NodeJS.Signals) => Effect.Effect<boolean, DaemonError>;
70
+ /**
71
+ * Wait for a process to exit with a timeout.
72
+ * Returns true if the process exited, false if timeout was reached.
73
+ */
74
+ export declare const waitForExit: (pid: number, timeoutMs: number) => Effect.Effect<boolean, DaemonError>;
75
+ /**
76
+ * Try to atomically create the PID file using O_EXCL.
77
+ * Returns true if created successfully, false if the file already exists.
78
+ * This is the atomic primitive that prevents the TOCTOU race condition.
79
+ */
80
+ export declare const tryAtomicPidCreate: () => Effect.Effect<boolean, DaemonError>;
81
+ /**
82
+ * Atomically acquire the daemon PID file lock.
83
+ *
84
+ * Uses O_EXCL flag to prevent the TOCTOU race condition where two concurrent
85
+ * `tx daemon start` commands both pass the existence check before either writes
86
+ * the PID file. With O_EXCL, the filesystem guarantees only one process can
87
+ * create the file — the loser gets EEXIST immediately.
88
+ *
89
+ * If the file already exists, checks whether the PID is stale (process dead).
90
+ * Stale files are removed and creation is retried once.
91
+ */
92
+ export declare const acquirePidLock: () => Effect.Effect<void, DaemonError>;
93
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/services/daemon-service/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,aAAa,mBAAmB,CAAA;AAO7C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CA4B9E,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAelE,CAAA;AAEJ;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB,GAAI,iBAAiB,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAkB/F,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,QAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,WAAW,CAqC/D,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAaxD,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAevE,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,WAAW,CAgBnE,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAa9D,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,CAAC,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAsBhG,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAc3F,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CA0BrE,CAAA;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,QAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAwD7D,CAAA"}
@@ -0,0 +1,325 @@
1
+ import { Effect } from "effect";
2
+ import { closeSync, existsSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync, writeSync } from "node:fs";
3
+ import { dirname } from "node:path";
4
+ import { DaemonError } from "../../errors.js";
5
+ /**
6
+ * Default path for the daemon PID file.
7
+ */
8
+ export const PID_FILE_PATH = ".tx/daemon.pid";
9
+ /**
10
+ * Path to store the daemon start timestamp for uptime calculation.
11
+ */
12
+ const STARTED_AT_PATH = ".tx/daemon.started";
13
+ /**
14
+ * Check if a process with the given PID is currently running.
15
+ * Uses kill signal 0 which doesn't actually send a signal but checks if the process exists.
16
+ *
17
+ * @param pid - The process ID to check
18
+ * @returns Effect that resolves to true if the process is running, false otherwise
19
+ */
20
+ export const isProcessRunning = (pid) => Effect.try({
21
+ try: () => {
22
+ // Signal 0 doesn't send anything but checks if process exists
23
+ process.kill(pid, 0);
24
+ return true;
25
+ },
26
+ catch: (error) => error
27
+ }).pipe(Effect.catchAll((error) => {
28
+ // ESRCH means no such process - return false (not running) as success value
29
+ if (error instanceof Error && "code" in error && error.code === "ESRCH") {
30
+ return Effect.succeed(false);
31
+ }
32
+ // EPERM means process exists but we don't have permission to signal it
33
+ // The process is still running, just owned by another user - return true as success value
34
+ if (error instanceof Error && "code" in error && error.code === "EPERM") {
35
+ return Effect.succeed(true);
36
+ }
37
+ // Any other error is unexpected - convert to DaemonError
38
+ return Effect.fail(new DaemonError({
39
+ code: "PROCESS_CHECK_FAILED",
40
+ reason: `Failed to check if process ${pid} is running: ${error}`,
41
+ pid
42
+ }));
43
+ }));
44
+ /**
45
+ * Write a PID to the daemon PID file.
46
+ * Creates the .tx directory if it doesn't exist.
47
+ *
48
+ * @param pid - The process ID to write
49
+ * @returns Effect that resolves to void on success
50
+ */
51
+ export const writePid = (pid) => Effect.try({
52
+ try: () => {
53
+ const dir = dirname(PID_FILE_PATH);
54
+ if (!existsSync(dir)) {
55
+ mkdirSync(dir, { recursive: true });
56
+ }
57
+ writeFileSync(PID_FILE_PATH, String(pid), "utf-8");
58
+ },
59
+ catch: (error) => new DaemonError({
60
+ code: "PID_WRITE_FAILED",
61
+ reason: `Failed to write PID file: ${error}`,
62
+ pid
63
+ })
64
+ });
65
+ /**
66
+ * Remove the PID file only if its current content matches the expected value.
67
+ *
68
+ * This is a compare-and-swap guard that prevents the TOCTOU race where
69
+ * readPid()'s stale cleanup could delete a freshly-written PID file created
70
+ * by a concurrent daemon start. Between isProcessRunning() returning false
71
+ * and removePid() executing, a new daemon may have written a fresh PID.
72
+ *
73
+ * If the file no longer exists or its content has changed, this is a no-op.
74
+ *
75
+ * @param expectedContent - The PID file content we originally read
76
+ * @returns Effect that resolves to void on success
77
+ */
78
+ export const removePidIfContentMatches = (expectedContent) => Effect.try({
79
+ try: () => {
80
+ if (!existsSync(PID_FILE_PATH)) {
81
+ return;
82
+ }
83
+ const currentContent = readFileSync(PID_FILE_PATH, "utf-8").trim();
84
+ if (currentContent === expectedContent) {
85
+ unlinkSync(PID_FILE_PATH);
86
+ }
87
+ // Content changed — a concurrent start wrote a fresh PID. Do not delete.
88
+ },
89
+ catch: (error) => new DaemonError({
90
+ code: "PID_REMOVE_FAILED",
91
+ reason: `Failed to remove PID file: ${error}`,
92
+ pid: null
93
+ })
94
+ });
95
+ /**
96
+ * Read the PID from the daemon PID file.
97
+ * Returns null if the file doesn't exist.
98
+ * Handles stale PID cleanup: if the PID file exists but the process is not running,
99
+ * the stale PID file is automatically removed and null is returned.
100
+ *
101
+ * @returns Effect that resolves to the PID number, or null if no valid PID file exists
102
+ */
103
+ export const readPid = () => Effect.gen(function* () {
104
+ // Check if file exists
105
+ if (!existsSync(PID_FILE_PATH)) {
106
+ return null;
107
+ }
108
+ // Read the PID file
109
+ const content = yield* Effect.try({
110
+ try: () => readFileSync(PID_FILE_PATH, "utf-8").trim(),
111
+ catch: (error) => new DaemonError({
112
+ code: "PID_READ_FAILED",
113
+ reason: `Failed to read PID file: ${error}`,
114
+ pid: null
115
+ })
116
+ });
117
+ // Parse the PID
118
+ const pid = parseInt(content, 10);
119
+ if (isNaN(pid) || pid <= 0) {
120
+ // Invalid PID content — use CAS removal so we don't delete a fresh PID
121
+ // written by a concurrent daemon start between our read and this removal.
122
+ yield* removePidIfContentMatches(content);
123
+ return null;
124
+ }
125
+ // Check if the process is still running
126
+ const running = yield* isProcessRunning(pid);
127
+ if (!running) {
128
+ // Stale PID — use CAS removal so we don't delete a fresh PID written
129
+ // by a concurrent daemon start between isProcessRunning() and here.
130
+ yield* removePidIfContentMatches(content);
131
+ return null;
132
+ }
133
+ return pid;
134
+ });
135
+ /**
136
+ * Remove the daemon PID file.
137
+ * Does nothing if the file doesn't exist.
138
+ *
139
+ * @returns Effect that resolves to void on success
140
+ */
141
+ export const removePid = () => Effect.try({
142
+ try: () => {
143
+ if (existsSync(PID_FILE_PATH)) {
144
+ unlinkSync(PID_FILE_PATH);
145
+ }
146
+ },
147
+ catch: (error) => new DaemonError({
148
+ code: "PID_REMOVE_FAILED",
149
+ reason: `Failed to remove PID file: ${error}`,
150
+ pid: null
151
+ })
152
+ });
153
+ /**
154
+ * Write the daemon start timestamp to a file.
155
+ */
156
+ export const writeStartedAt = (date) => Effect.try({
157
+ try: () => {
158
+ const dir = dirname(STARTED_AT_PATH);
159
+ if (!existsSync(dir)) {
160
+ mkdirSync(dir, { recursive: true });
161
+ }
162
+ writeFileSync(STARTED_AT_PATH, date.toISOString(), "utf-8");
163
+ },
164
+ catch: (error) => new DaemonError({
165
+ code: "STARTED_AT_WRITE_FAILED",
166
+ reason: `Failed to write started_at file: ${error}`,
167
+ pid: null
168
+ })
169
+ });
170
+ /**
171
+ * Read the daemon start timestamp from file.
172
+ */
173
+ export const readStartedAt = () => Effect.try({
174
+ try: () => {
175
+ if (!existsSync(STARTED_AT_PATH)) {
176
+ return null;
177
+ }
178
+ const content = readFileSync(STARTED_AT_PATH, "utf-8").trim();
179
+ const date = new Date(content);
180
+ return isNaN(date.getTime()) ? null : date;
181
+ },
182
+ catch: (error) => new DaemonError({
183
+ code: "STARTED_AT_READ_FAILED",
184
+ reason: `Failed to read started_at file: ${error}`,
185
+ pid: null
186
+ })
187
+ });
188
+ /**
189
+ * Remove the daemon start timestamp file.
190
+ */
191
+ export const removeStartedAt = () => Effect.try({
192
+ try: () => {
193
+ if (existsSync(STARTED_AT_PATH)) {
194
+ unlinkSync(STARTED_AT_PATH);
195
+ }
196
+ },
197
+ catch: (error) => new DaemonError({
198
+ code: "STARTED_AT_REMOVE_FAILED",
199
+ reason: `Failed to remove started_at file: ${error}`,
200
+ pid: null
201
+ })
202
+ });
203
+ /**
204
+ * Send a signal to a process by PID.
205
+ * Returns true if the signal was sent successfully, false if the process doesn't exist.
206
+ */
207
+ export const sendSignal = (pid, signal) => Effect.try({
208
+ try: () => {
209
+ process.kill(pid, signal);
210
+ return true;
211
+ },
212
+ catch: (error) => error
213
+ }).pipe(Effect.catchAll((error) => {
214
+ // ESRCH means no such process - return false (not running) as success value
215
+ if (error instanceof Error && "code" in error && error.code === "ESRCH") {
216
+ return Effect.succeed(false);
217
+ }
218
+ // Any other error is unexpected - convert to DaemonError
219
+ return Effect.fail(new DaemonError({
220
+ code: "SIGNAL_FAILED",
221
+ reason: `Failed to send signal ${signal} to process ${pid}: ${error}`,
222
+ pid
223
+ }));
224
+ }));
225
+ /**
226
+ * Wait for a process to exit with a timeout.
227
+ * Returns true if the process exited, false if timeout was reached.
228
+ */
229
+ export const waitForExit = (pid, timeoutMs) => Effect.gen(function* () {
230
+ const startTime = Date.now();
231
+ const pollIntervalMs = 100;
232
+ while (Date.now() - startTime < timeoutMs) {
233
+ const running = yield* isProcessRunning(pid);
234
+ if (!running) {
235
+ return true;
236
+ }
237
+ yield* Effect.sleep(`${pollIntervalMs} millis`);
238
+ }
239
+ return false;
240
+ });
241
+ /**
242
+ * Try to atomically create the PID file using O_EXCL.
243
+ * Returns true if created successfully, false if the file already exists.
244
+ * This is the atomic primitive that prevents the TOCTOU race condition.
245
+ */
246
+ export const tryAtomicPidCreate = () => Effect.try({
247
+ try: () => {
248
+ // O_CREAT | O_EXCL | O_WRONLY — fails with EEXIST if file already exists
249
+ const fd = openSync(PID_FILE_PATH, "wx");
250
+ // Write the lock holder's PID so stale detection works.
251
+ // This is the `tx daemon start` process PID, not the daemon PID.
252
+ // After spawning, writePid() overwrites with the actual daemon PID.
253
+ writeSync(fd, String(process.pid));
254
+ closeSync(fd);
255
+ return true;
256
+ },
257
+ catch: (error) => error
258
+ }).pipe(Effect.catchAll((error) => {
259
+ if (error instanceof Error && "code" in error && error.code === "EEXIST") {
260
+ return Effect.succeed(false);
261
+ }
262
+ return Effect.fail(new DaemonError({
263
+ code: "PID_WRITE_FAILED",
264
+ reason: `Failed to create PID lock file: ${error}`,
265
+ pid: null
266
+ }));
267
+ }));
268
+ /**
269
+ * Atomically acquire the daemon PID file lock.
270
+ *
271
+ * Uses O_EXCL flag to prevent the TOCTOU race condition where two concurrent
272
+ * `tx daemon start` commands both pass the existence check before either writes
273
+ * the PID file. With O_EXCL, the filesystem guarantees only one process can
274
+ * create the file — the loser gets EEXIST immediately.
275
+ *
276
+ * If the file already exists, checks whether the PID is stale (process dead).
277
+ * Stale files are removed and creation is retried once.
278
+ */
279
+ export const acquirePidLock = () => Effect.gen(function* () {
280
+ const dir = dirname(PID_FILE_PATH);
281
+ if (!existsSync(dir)) {
282
+ mkdirSync(dir, { recursive: true });
283
+ }
284
+ // First attempt: atomic file creation
285
+ const created = yield* tryAtomicPidCreate();
286
+ if (created)
287
+ return;
288
+ // File already exists — check if the PID inside is stale
289
+ const existingContent = yield* Effect.try({
290
+ try: () => existsSync(PID_FILE_PATH) ? readFileSync(PID_FILE_PATH, "utf-8").trim() : null,
291
+ catch: (error) => new DaemonError({
292
+ code: "PID_READ_FAILED",
293
+ reason: `Failed to read existing PID file: ${error}`,
294
+ pid: null
295
+ })
296
+ });
297
+ if (existingContent !== null && existingContent !== "") {
298
+ const pid = parseInt(existingContent, 10);
299
+ if (!isNaN(pid) && pid > 0) {
300
+ const running = yield* isProcessRunning(pid);
301
+ if (running) {
302
+ return yield* Effect.fail(new DaemonError({
303
+ code: "ALREADY_RUNNING",
304
+ reason: `Daemon is already running with PID ${pid}`,
305
+ pid
306
+ }));
307
+ }
308
+ }
309
+ }
310
+ // PID file is stale — CAS removal to avoid deleting a fresh PID written
311
+ // by a concurrent start that raced us between isProcessRunning() and here.
312
+ if (existingContent !== null) {
313
+ yield* removePidIfContentMatches(existingContent);
314
+ }
315
+ const retryCreated = yield* tryAtomicPidCreate();
316
+ if (!retryCreated) {
317
+ // Another process won the race after our stale cleanup
318
+ return yield* Effect.fail(new DaemonError({
319
+ code: "ALREADY_RUNNING",
320
+ reason: "Another daemon start is in progress",
321
+ pid: null
322
+ }));
323
+ }
324
+ });
325
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/services/daemon-service/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Default install path for the launchd plist file.
3
+ * Located in the user's LaunchAgents directory for per-user daemons.
4
+ */
5
+ export declare const LAUNCHD_PLIST_PATH = "~/Library/LaunchAgents/com.tx.daemon.plist";
6
+ /**
7
+ * Default install path for the systemd service file.
8
+ * Located in the user's systemd user directory for per-user services.
9
+ */
10
+ export declare const SYSTEMD_SERVICE_PATH = "~/.config/systemd/user/tx-daemon.service";
11
+ /**
12
+ * Options for generating a launchd plist file.
13
+ */
14
+ export type LaunchdPlistOptions = {
15
+ /**
16
+ * The label for the launchd job (e.g., "com.tx.daemon").
17
+ * This must be unique among all launchd jobs.
18
+ */
19
+ readonly label: string;
20
+ /**
21
+ * The absolute path to the executable to run.
22
+ */
23
+ readonly executablePath: string;
24
+ /**
25
+ * Optional path for log output (both stdout and stderr).
26
+ * If not provided, defaults to ~/Library/Logs/tx-daemon.log
27
+ */
28
+ readonly logPath?: string;
29
+ };
30
+ /**
31
+ * Generate a macOS launchd plist file content.
32
+ * Creates a valid XML plist that can be used with launchctl to run the daemon.
33
+ *
34
+ * The generated plist configures the daemon to:
35
+ * - Run at load (start when user logs in)
36
+ * - Keep alive (restart if it crashes)
37
+ * - Log stdout and stderr to the specified log path
38
+ *
39
+ * @param options - Configuration options for the plist
40
+ * @returns The XML content for the launchd plist file
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const plist = generateLaunchdPlist({
45
+ * label: "com.tx.daemon",
46
+ * executablePath: "/usr/local/bin/tx",
47
+ * logPath: "~/Library/Logs/tx-daemon.log"
48
+ * })
49
+ * ```
50
+ */
51
+ export declare const generateLaunchdPlist: (options: LaunchdPlistOptions) => string;
52
+ /**
53
+ * Options for generating a systemd service file.
54
+ */
55
+ export type SystemdServiceOptions = {
56
+ /**
57
+ * The absolute path to the executable to run.
58
+ */
59
+ readonly executablePath: string;
60
+ /**
61
+ * Optional user to run the service as.
62
+ * If not provided, the service runs as the current user (for user services).
63
+ */
64
+ readonly user?: string;
65
+ };
66
+ /**
67
+ * Generate a Linux systemd service file content.
68
+ * Creates a valid systemd unit file for a user service.
69
+ *
70
+ * The generated service file configures the daemon to:
71
+ * - Start after the network is available
72
+ * - Run as Type=simple (foreground process)
73
+ * - Restart always on failure with 5 second delay
74
+ * - Be enabled for multi-user target
75
+ *
76
+ * @param options - Configuration options for the service file
77
+ * @returns The content for the systemd service file
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * const service = generateSystemdService({
82
+ * executablePath: "/usr/local/bin/tx",
83
+ * user: "myuser"
84
+ * })
85
+ * ```
86
+ */
87
+ export declare const generateSystemdService: (options: SystemdServiceOptions) => string;
88
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/services/daemon-service/templates.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,+CAA+C,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,6CAA6C,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAaD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,mBAAmB,KAAG,MAgCnE,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,qBAAqB,KAAG,MA0BvE,CAAA"}