paths-engine 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/README.md +600 -3
  2. package/dist/cli/commands/context.d.ts +3 -0
  3. package/dist/cli/commands/context.d.ts.map +1 -0
  4. package/dist/cli/commands/context.js +89 -0
  5. package/dist/cli/commands/context.js.map +1 -0
  6. package/dist/cli/commands/gui.d.ts +5 -0
  7. package/dist/cli/commands/gui.d.ts.map +1 -0
  8. package/dist/cli/commands/gui.js +28 -0
  9. package/dist/cli/commands/gui.js.map +1 -0
  10. package/dist/cli/commands/identity.d.ts +3 -0
  11. package/dist/cli/commands/identity.d.ts.map +1 -0
  12. package/dist/cli/commands/identity.js +83 -0
  13. package/dist/cli/commands/identity.js.map +1 -0
  14. package/dist/cli/commands/ingest.d.ts +3 -0
  15. package/dist/cli/commands/ingest.d.ts.map +1 -0
  16. package/dist/cli/commands/ingest.js +75 -0
  17. package/dist/cli/commands/ingest.js.map +1 -0
  18. package/dist/cli/commands/knowledge.d.ts +3 -0
  19. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  20. package/dist/cli/commands/knowledge.js +104 -0
  21. package/dist/cli/commands/knowledge.js.map +1 -0
  22. package/dist/cli/commands/lineage.d.ts +3 -0
  23. package/dist/cli/commands/lineage.d.ts.map +1 -0
  24. package/dist/cli/commands/lineage.js +130 -0
  25. package/dist/cli/commands/lineage.js.map +1 -0
  26. package/dist/cli/commands/mcp-setup.d.ts +23 -0
  27. package/dist/cli/commands/mcp-setup.d.ts.map +1 -0
  28. package/dist/cli/commands/mcp-setup.js +190 -0
  29. package/dist/cli/commands/mcp-setup.js.map +1 -0
  30. package/dist/cli/commands/plan.d.ts +8 -0
  31. package/dist/cli/commands/plan.d.ts.map +1 -0
  32. package/dist/cli/commands/plan.js +230 -0
  33. package/dist/cli/commands/plan.js.map +1 -0
  34. package/dist/cli/commands/session.d.ts +3 -0
  35. package/dist/cli/commands/session.d.ts.map +1 -0
  36. package/dist/cli/commands/session.js +82 -0
  37. package/dist/cli/commands/session.js.map +1 -0
  38. package/dist/cli/commands/status.d.ts +3 -0
  39. package/dist/cli/commands/status.d.ts.map +1 -0
  40. package/dist/cli/commands/status.js +65 -0
  41. package/dist/cli/commands/status.js.map +1 -0
  42. package/dist/cli/commands/sync.d.ts +3 -0
  43. package/dist/cli/commands/sync.d.ts.map +1 -0
  44. package/dist/cli/commands/sync.js +168 -0
  45. package/dist/cli/commands/sync.js.map +1 -0
  46. package/dist/cli/commands/todo.d.ts +3 -0
  47. package/dist/cli/commands/todo.d.ts.map +1 -0
  48. package/dist/cli/commands/todo.js +116 -0
  49. package/dist/cli/commands/todo.js.map +1 -0
  50. package/dist/cli/file-reader.d.ts +3 -0
  51. package/dist/cli/file-reader.d.ts.map +1 -0
  52. package/dist/cli/file-reader.js +29 -0
  53. package/dist/cli/file-reader.js.map +1 -0
  54. package/dist/cli/formatters/context.d.ts +3 -0
  55. package/dist/cli/formatters/context.d.ts.map +1 -0
  56. package/dist/cli/formatters/context.js +58 -0
  57. package/dist/cli/formatters/context.js.map +1 -0
  58. package/dist/cli/formatters/errors.d.ts +2 -0
  59. package/dist/cli/formatters/errors.d.ts.map +1 -0
  60. package/dist/cli/formatters/errors.js +7 -0
  61. package/dist/cli/formatters/errors.js.map +1 -0
  62. package/dist/cli/formatters/status.d.ts +6 -0
  63. package/dist/cli/formatters/status.d.ts.map +1 -0
  64. package/dist/cli/formatters/status.js +79 -0
  65. package/dist/cli/formatters/status.js.map +1 -0
  66. package/dist/cli/index.d.ts +3 -0
  67. package/dist/cli/index.d.ts.map +1 -0
  68. package/dist/cli/index.js +40 -0
  69. package/dist/cli/index.js.map +1 -0
  70. package/dist/core/compiler.d.ts +50 -0
  71. package/dist/core/compiler.d.ts.map +1 -0
  72. package/dist/core/compiler.js +424 -0
  73. package/dist/core/compiler.js.map +1 -0
  74. package/dist/core/db/case-mapper.d.ts +3 -0
  75. package/dist/core/db/case-mapper.d.ts.map +1 -0
  76. package/dist/core/db/case-mapper.js +21 -0
  77. package/dist/core/db/case-mapper.js.map +1 -0
  78. package/dist/core/db/embedding-repository.d.ts +14 -0
  79. package/dist/core/db/embedding-repository.d.ts.map +1 -0
  80. package/dist/core/db/embedding-repository.js +57 -0
  81. package/dist/core/db/embedding-repository.js.map +1 -0
  82. package/dist/core/db/external-event-repository.d.ts +13 -0
  83. package/dist/core/db/external-event-repository.d.ts.map +1 -0
  84. package/dist/core/db/external-event-repository.js +73 -0
  85. package/dist/core/db/external-event-repository.js.map +1 -0
  86. package/dist/core/db/identity-repository.d.ts +9 -0
  87. package/dist/core/db/identity-repository.d.ts.map +1 -0
  88. package/dist/core/db/identity-repository.js +37 -0
  89. package/dist/core/db/identity-repository.js.map +1 -0
  90. package/dist/core/db/index.d.ts +12 -0
  91. package/dist/core/db/index.d.ts.map +1 -0
  92. package/dist/core/db/index.js +33 -0
  93. package/dist/core/db/index.js.map +1 -0
  94. package/dist/core/db/knowledge-confirmation-repository.d.ts +12 -0
  95. package/dist/core/db/knowledge-confirmation-repository.d.ts.map +1 -0
  96. package/dist/core/db/knowledge-confirmation-repository.js +40 -0
  97. package/dist/core/db/knowledge-confirmation-repository.js.map +1 -0
  98. package/dist/core/db/knowledge-repository.d.ts +18 -0
  99. package/dist/core/db/knowledge-repository.d.ts.map +1 -0
  100. package/dist/core/db/knowledge-repository.js +77 -0
  101. package/dist/core/db/knowledge-repository.js.map +1 -0
  102. package/dist/core/db/lineage-repository.d.ts +14 -0
  103. package/dist/core/db/lineage-repository.d.ts.map +1 -0
  104. package/dist/core/db/lineage-repository.js +35 -0
  105. package/dist/core/db/lineage-repository.js.map +1 -0
  106. package/dist/core/db/node-repository.d.ts +33 -0
  107. package/dist/core/db/node-repository.d.ts.map +1 -0
  108. package/dist/core/db/node-repository.js +116 -0
  109. package/dist/core/db/node-repository.js.map +1 -0
  110. package/dist/core/db/path.d.ts +3 -0
  111. package/dist/core/db/path.d.ts.map +1 -0
  112. package/dist/core/db/path.js +57 -0
  113. package/dist/core/db/path.js.map +1 -0
  114. package/dist/core/db/plan-repository.d.ts +17 -0
  115. package/dist/core/db/plan-repository.d.ts.map +1 -0
  116. package/dist/core/db/plan-repository.js +56 -0
  117. package/dist/core/db/plan-repository.js.map +1 -0
  118. package/dist/core/db/project-repository.d.ts +11 -0
  119. package/dist/core/db/project-repository.d.ts.map +1 -0
  120. package/dist/core/db/project-repository.js +24 -0
  121. package/dist/core/db/project-repository.js.map +1 -0
  122. package/dist/core/db/rollup-repository.d.ts +10 -0
  123. package/dist/core/db/rollup-repository.d.ts.map +1 -0
  124. package/dist/core/db/rollup-repository.js +55 -0
  125. package/dist/core/db/rollup-repository.js.map +1 -0
  126. package/dist/core/db/schema.d.ts +4 -0
  127. package/dist/core/db/schema.d.ts.map +1 -0
  128. package/dist/core/db/schema.js +315 -0
  129. package/dist/core/db/schema.js.map +1 -0
  130. package/dist/core/db/store.d.ts +298 -0
  131. package/dist/core/db/store.d.ts.map +1 -0
  132. package/dist/core/db/store.js +1054 -0
  133. package/dist/core/db/store.js.map +1 -0
  134. package/dist/core/db/sync-repository.d.ts +23 -0
  135. package/dist/core/db/sync-repository.d.ts.map +1 -0
  136. package/dist/core/db/sync-repository.js +117 -0
  137. package/dist/core/db/sync-repository.js.map +1 -0
  138. package/dist/core/db/todo-repository.d.ts +14 -0
  139. package/dist/core/db/todo-repository.d.ts.map +1 -0
  140. package/dist/core/db/todo-repository.js +37 -0
  141. package/dist/core/db/todo-repository.js.map +1 -0
  142. package/dist/core/embedding/cosine.d.ts +5 -0
  143. package/dist/core/embedding/cosine.d.ts.map +1 -0
  144. package/dist/core/embedding/cosine.js +50 -0
  145. package/dist/core/embedding/cosine.js.map +1 -0
  146. package/dist/core/embedding/embedding.service.d.ts +27 -0
  147. package/dist/core/embedding/embedding.service.d.ts.map +1 -0
  148. package/dist/core/embedding/embedding.service.js +99 -0
  149. package/dist/core/embedding/embedding.service.js.map +1 -0
  150. package/dist/core/embedding/index.d.ts +3 -0
  151. package/dist/core/embedding/index.d.ts.map +1 -0
  152. package/dist/core/embedding/index.js +3 -0
  153. package/dist/core/embedding/index.js.map +1 -0
  154. package/dist/core/identity.d.ts +6 -0
  155. package/dist/core/identity.d.ts.map +1 -0
  156. package/dist/core/identity.js +24 -0
  157. package/dist/core/identity.js.map +1 -0
  158. package/dist/core/index.d.ts +13 -0
  159. package/dist/core/index.d.ts.map +1 -0
  160. package/dist/core/index.js +13 -0
  161. package/dist/core/index.js.map +1 -0
  162. package/dist/core/ingestion/generic-adapter.d.ts +5 -0
  163. package/dist/core/ingestion/generic-adapter.d.ts.map +1 -0
  164. package/dist/core/ingestion/generic-adapter.js +15 -0
  165. package/dist/core/ingestion/generic-adapter.js.map +1 -0
  166. package/dist/core/ingestion/git-adapter.d.ts +12 -0
  167. package/dist/core/ingestion/git-adapter.d.ts.map +1 -0
  168. package/dist/core/ingestion/git-adapter.js +31 -0
  169. package/dist/core/ingestion/git-adapter.js.map +1 -0
  170. package/dist/core/ingestion/github-adapter.d.ts +23 -0
  171. package/dist/core/ingestion/github-adapter.d.ts.map +1 -0
  172. package/dist/core/ingestion/github-adapter.js +55 -0
  173. package/dist/core/ingestion/github-adapter.js.map +1 -0
  174. package/dist/core/ingestion/index.d.ts +6 -0
  175. package/dist/core/ingestion/index.d.ts.map +1 -0
  176. package/dist/core/ingestion/index.js +6 -0
  177. package/dist/core/ingestion/index.js.map +1 -0
  178. package/dist/core/ingestion/ingestion.service.d.ts +25 -0
  179. package/dist/core/ingestion/ingestion.service.d.ts.map +1 -0
  180. package/dist/core/ingestion/ingestion.service.js +109 -0
  181. package/dist/core/ingestion/ingestion.service.js.map +1 -0
  182. package/dist/core/ingestion/types.d.ts +38 -0
  183. package/dist/core/ingestion/types.d.ts.map +1 -0
  184. package/dist/core/ingestion/types.js +2 -0
  185. package/dist/core/ingestion/types.js.map +1 -0
  186. package/dist/core/knowledge.d.ts +13 -0
  187. package/dist/core/knowledge.d.ts.map +1 -0
  188. package/dist/core/knowledge.js +101 -0
  189. package/dist/core/knowledge.js.map +1 -0
  190. package/dist/core/lineage.d.ts +11 -0
  191. package/dist/core/lineage.d.ts.map +1 -0
  192. package/dist/core/lineage.js +75 -0
  193. package/dist/core/lineage.js.map +1 -0
  194. package/dist/core/node.d.ts +27 -0
  195. package/dist/core/node.d.ts.map +1 -0
  196. package/dist/core/node.js +145 -0
  197. package/dist/core/node.js.map +1 -0
  198. package/dist/core/plan.d.ts +26 -0
  199. package/dist/core/plan.d.ts.map +1 -0
  200. package/dist/core/plan.js +109 -0
  201. package/dist/core/plan.js.map +1 -0
  202. package/dist/core/project.d.ts +10 -0
  203. package/dist/core/project.d.ts.map +1 -0
  204. package/dist/core/project.js +108 -0
  205. package/dist/core/project.js.map +1 -0
  206. package/dist/core/rollup.d.ts +7 -0
  207. package/dist/core/rollup.d.ts.map +1 -0
  208. package/dist/core/rollup.js +48 -0
  209. package/dist/core/rollup.js.map +1 -0
  210. package/dist/core/security/error-classifier.d.ts +35 -0
  211. package/dist/core/security/error-classifier.d.ts.map +1 -0
  212. package/dist/core/security/error-classifier.js +169 -0
  213. package/dist/core/security/error-classifier.js.map +1 -0
  214. package/dist/core/sync/bundle-auth.d.ts +23 -0
  215. package/dist/core/sync/bundle-auth.d.ts.map +1 -0
  216. package/dist/core/sync/bundle-auth.js +184 -0
  217. package/dist/core/sync/bundle-auth.js.map +1 -0
  218. package/dist/core/sync/device.d.ts +8 -0
  219. package/dist/core/sync/device.d.ts.map +1 -0
  220. package/dist/core/sync/device.js +32 -0
  221. package/dist/core/sync/device.js.map +1 -0
  222. package/dist/core/sync/hlc.d.ts +12 -0
  223. package/dist/core/sync/hlc.d.ts.map +1 -0
  224. package/dist/core/sync/hlc.js +83 -0
  225. package/dist/core/sync/hlc.js.map +1 -0
  226. package/dist/core/sync/index.d.ts +6 -0
  227. package/dist/core/sync/index.d.ts.map +1 -0
  228. package/dist/core/sync/index.js +5 -0
  229. package/dist/core/sync/index.js.map +1 -0
  230. package/dist/core/sync/sync.service.d.ts +29 -0
  231. package/dist/core/sync/sync.service.d.ts.map +1 -0
  232. package/dist/core/sync/sync.service.js +457 -0
  233. package/dist/core/sync/sync.service.js.map +1 -0
  234. package/dist/core/sync/types.d.ts +101 -0
  235. package/dist/core/sync/types.d.ts.map +1 -0
  236. package/dist/core/sync/types.js +2 -0
  237. package/dist/core/sync/types.js.map +1 -0
  238. package/dist/core/task-context-budget.d.ts +5 -0
  239. package/dist/core/task-context-budget.d.ts.map +1 -0
  240. package/dist/core/task-context-budget.js +11 -0
  241. package/dist/core/task-context-budget.js.map +1 -0
  242. package/dist/core/task-context-order.d.ts +6 -0
  243. package/dist/core/task-context-order.d.ts.map +1 -0
  244. package/dist/core/task-context-order.js +26 -0
  245. package/dist/core/task-context-order.js.map +1 -0
  246. package/dist/core/task-context-paths.d.ts +6 -0
  247. package/dist/core/task-context-paths.d.ts.map +1 -0
  248. package/dist/core/task-context-paths.js +59 -0
  249. package/dist/core/task-context-paths.js.map +1 -0
  250. package/dist/core/task-context.d.ts +21 -0
  251. package/dist/core/task-context.d.ts.map +1 -0
  252. package/dist/core/task-context.js +283 -0
  253. package/dist/core/task-context.js.map +1 -0
  254. package/dist/core/todo.d.ts +16 -0
  255. package/dist/core/todo.d.ts.map +1 -0
  256. package/dist/core/todo.js +110 -0
  257. package/dist/core/todo.js.map +1 -0
  258. package/dist/core/tokenizer.d.ts +3 -0
  259. package/dist/core/tokenizer.d.ts.map +1 -0
  260. package/dist/core/tokenizer.js +9 -0
  261. package/dist/core/tokenizer.js.map +1 -0
  262. package/dist/core/types/context.d.ts +50 -0
  263. package/dist/core/types/context.d.ts.map +1 -0
  264. package/dist/core/types/context.js +2 -0
  265. package/dist/core/types/context.js.map +1 -0
  266. package/dist/core/types/embedding.d.ts +25 -0
  267. package/dist/core/types/embedding.d.ts.map +1 -0
  268. package/dist/core/types/embedding.js +2 -0
  269. package/dist/core/types/embedding.js.map +1 -0
  270. package/dist/core/types/external-event.d.ts +29 -0
  271. package/dist/core/types/external-event.d.ts.map +1 -0
  272. package/dist/core/types/external-event.js +2 -0
  273. package/dist/core/types/external-event.js.map +1 -0
  274. package/dist/core/types/hlc.d.ts +12 -0
  275. package/dist/core/types/hlc.d.ts.map +1 -0
  276. package/dist/core/types/hlc.js +2 -0
  277. package/dist/core/types/hlc.js.map +1 -0
  278. package/dist/core/types/identity.d.ts +26 -0
  279. package/dist/core/types/identity.d.ts.map +1 -0
  280. package/dist/core/types/identity.js +2 -0
  281. package/dist/core/types/identity.js.map +1 -0
  282. package/dist/core/types/index.d.ts +15 -0
  283. package/dist/core/types/index.d.ts.map +1 -0
  284. package/dist/core/types/index.js +15 -0
  285. package/dist/core/types/index.js.map +1 -0
  286. package/dist/core/types/installation-identity.d.ts +13 -0
  287. package/dist/core/types/installation-identity.d.ts.map +1 -0
  288. package/dist/core/types/installation-identity.js +2 -0
  289. package/dist/core/types/installation-identity.js.map +1 -0
  290. package/dist/core/types/knowledge-confirmation.d.ts +25 -0
  291. package/dist/core/types/knowledge-confirmation.d.ts.map +1 -0
  292. package/dist/core/types/knowledge-confirmation.js +2 -0
  293. package/dist/core/types/knowledge-confirmation.js.map +1 -0
  294. package/dist/core/types/knowledge.d.ts +50 -0
  295. package/dist/core/types/knowledge.d.ts.map +1 -0
  296. package/dist/core/types/knowledge.js +12 -0
  297. package/dist/core/types/knowledge.js.map +1 -0
  298. package/dist/core/types/lineage.d.ts +37 -0
  299. package/dist/core/types/lineage.d.ts.map +1 -0
  300. package/dist/core/types/lineage.js +2 -0
  301. package/dist/core/types/lineage.js.map +1 -0
  302. package/dist/core/types/node.d.ts +47 -0
  303. package/dist/core/types/node.d.ts.map +1 -0
  304. package/dist/core/types/node.js +2 -0
  305. package/dist/core/types/node.js.map +1 -0
  306. package/dist/core/types/plan.d.ts +60 -0
  307. package/dist/core/types/plan.d.ts.map +1 -0
  308. package/dist/core/types/plan.js +2 -0
  309. package/dist/core/types/plan.js.map +1 -0
  310. package/dist/core/types/project.d.ts +27 -0
  311. package/dist/core/types/project.d.ts.map +1 -0
  312. package/dist/core/types/project.js +2 -0
  313. package/dist/core/types/project.js.map +1 -0
  314. package/dist/core/types/status-json.d.ts +30 -0
  315. package/dist/core/types/status-json.d.ts.map +1 -0
  316. package/dist/core/types/status-json.js +2 -0
  317. package/dist/core/types/status-json.js.map +1 -0
  318. package/dist/core/types/sync-change.d.ts +49 -0
  319. package/dist/core/types/sync-change.d.ts.map +1 -0
  320. package/dist/core/types/sync-change.js +2 -0
  321. package/dist/core/types/sync-change.js.map +1 -0
  322. package/dist/core/types/task-context.d.ts +55 -0
  323. package/dist/core/types/task-context.d.ts.map +1 -0
  324. package/dist/core/types/task-context.js +2 -0
  325. package/dist/core/types/task-context.js.map +1 -0
  326. package/dist/core/types/todo.d.ts +33 -0
  327. package/dist/core/types/todo.d.ts.map +1 -0
  328. package/dist/core/types/todo.js +2 -0
  329. package/dist/core/types/todo.js.map +1 -0
  330. package/dist/gui/launcher.d.ts +22 -0
  331. package/dist/gui/launcher.d.ts.map +1 -0
  332. package/dist/gui/launcher.js +86 -0
  333. package/dist/gui/launcher.js.map +1 -0
  334. package/dist/gui/main/app-bridge.d.ts +21 -0
  335. package/dist/gui/main/app-bridge.d.ts.map +1 -0
  336. package/dist/gui/main/app-bridge.js +204 -0
  337. package/dist/gui/main/app-bridge.js.map +1 -0
  338. package/dist/gui/main/app-context-manager.d.ts +25 -0
  339. package/dist/gui/main/app-context-manager.d.ts.map +1 -0
  340. package/dist/gui/main/app-context-manager.js +141 -0
  341. package/dist/gui/main/app-context-manager.js.map +1 -0
  342. package/dist/gui/main/context.d.ts +32 -0
  343. package/dist/gui/main/context.d.ts.map +1 -0
  344. package/dist/gui/main/context.js +56 -0
  345. package/dist/gui/main/context.js.map +1 -0
  346. package/dist/gui/main/index.d.ts +2 -0
  347. package/dist/gui/main/index.d.ts.map +1 -0
  348. package/dist/gui/main/index.js +3 -0
  349. package/dist/gui/main/index.js.map +1 -0
  350. package/dist/gui/main/lifecycle.d.ts +45 -0
  351. package/dist/gui/main/lifecycle.d.ts.map +1 -0
  352. package/dist/gui/main/lifecycle.js +272 -0
  353. package/dist/gui/main/lifecycle.js.map +1 -0
  354. package/dist/gui/main/schemas.d.ts +105 -0
  355. package/dist/gui/main/schemas.d.ts.map +1 -0
  356. package/dist/gui/main/schemas.js +131 -0
  357. package/dist/gui/main/schemas.js.map +1 -0
  358. package/dist/gui/main/tray.d.ts +9 -0
  359. package/dist/gui/main/tray.d.ts.map +1 -0
  360. package/dist/gui/main/tray.js +70 -0
  361. package/dist/gui/main/tray.js.map +1 -0
  362. package/dist/gui/preload/api-interface.d.ts +59 -0
  363. package/dist/gui/preload/api-interface.d.ts.map +1 -0
  364. package/dist/gui/preload/api-interface.js +2 -0
  365. package/dist/gui/preload/api-interface.js.map +1 -0
  366. package/dist/gui/preload/preload.cjs +1 -0
  367. package/dist/gui/preload/preload.d.ts +3 -0
  368. package/dist/gui/preload/preload.d.ts.map +1 -0
  369. package/dist/gui/preload/preload.js +36 -0
  370. package/dist/gui/preload/preload.js.map +1 -0
  371. package/dist/gui/renderer/App.d.ts +3 -0
  372. package/dist/gui/renderer/App.d.ts.map +1 -0
  373. package/dist/gui/renderer/App.js +33 -0
  374. package/dist/gui/renderer/App.js.map +1 -0
  375. package/dist/gui/renderer/components/layout/AppShell.d.ts +15 -0
  376. package/dist/gui/renderer/components/layout/AppShell.d.ts.map +1 -0
  377. package/dist/gui/renderer/components/layout/AppShell.js +206 -0
  378. package/dist/gui/renderer/components/layout/AppShell.js.map +1 -0
  379. package/dist/gui/renderer/components/layout/NavItem.d.ts +12 -0
  380. package/dist/gui/renderer/components/layout/NavItem.d.ts.map +1 -0
  381. package/dist/gui/renderer/components/layout/NavItem.js +72 -0
  382. package/dist/gui/renderer/components/layout/NavItem.js.map +1 -0
  383. package/dist/gui/renderer/components/layout/PathsLogo.d.ts +9 -0
  384. package/dist/gui/renderer/components/layout/PathsLogo.d.ts.map +1 -0
  385. package/dist/gui/renderer/components/layout/PathsLogo.js +87 -0
  386. package/dist/gui/renderer/components/layout/PathsLogo.js.map +1 -0
  387. package/dist/gui/renderer/components/shared/Badge.d.ts +11 -0
  388. package/dist/gui/renderer/components/shared/Badge.d.ts.map +1 -0
  389. package/dist/gui/renderer/components/shared/Badge.js +150 -0
  390. package/dist/gui/renderer/components/shared/Badge.js.map +1 -0
  391. package/dist/gui/renderer/components/shared/EmptyState.d.ts +10 -0
  392. package/dist/gui/renderer/components/shared/EmptyState.d.ts.map +1 -0
  393. package/dist/gui/renderer/components/shared/EmptyState.js +59 -0
  394. package/dist/gui/renderer/components/shared/EmptyState.js.map +1 -0
  395. package/dist/gui/renderer/components/shared/ErrorBanner.d.ts +7 -0
  396. package/dist/gui/renderer/components/shared/ErrorBanner.d.ts.map +1 -0
  397. package/dist/gui/renderer/components/shared/ErrorBanner.js +33 -0
  398. package/dist/gui/renderer/components/shared/ErrorBanner.js.map +1 -0
  399. package/dist/gui/renderer/components/shared/ErrorBoundary.d.ts +18 -0
  400. package/dist/gui/renderer/components/shared/ErrorBoundary.d.ts.map +1 -0
  401. package/dist/gui/renderer/components/shared/ErrorBoundary.js +40 -0
  402. package/dist/gui/renderer/components/shared/ErrorBoundary.js.map +1 -0
  403. package/dist/gui/renderer/components/shared/GlassSelect.d.ts +17 -0
  404. package/dist/gui/renderer/components/shared/GlassSelect.d.ts.map +1 -0
  405. package/dist/gui/renderer/components/shared/GlassSelect.js +147 -0
  406. package/dist/gui/renderer/components/shared/GlassSelect.js.map +1 -0
  407. package/dist/gui/renderer/components/shared/LoadingSpinner.d.ts +7 -0
  408. package/dist/gui/renderer/components/shared/LoadingSpinner.d.ts.map +1 -0
  409. package/dist/gui/renderer/components/shared/LoadingSpinner.js +27 -0
  410. package/dist/gui/renderer/components/shared/LoadingSpinner.js.map +1 -0
  411. package/dist/gui/renderer/components/surfaces/Dashboard.d.ts +3 -0
  412. package/dist/gui/renderer/components/surfaces/Dashboard.d.ts.map +1 -0
  413. package/dist/gui/renderer/components/surfaces/Dashboard.js +123 -0
  414. package/dist/gui/renderer/components/surfaces/Dashboard.js.map +1 -0
  415. package/dist/gui/renderer/components/surfaces/KnowledgeExplorer.d.ts +3 -0
  416. package/dist/gui/renderer/components/surfaces/KnowledgeExplorer.d.ts.map +1 -0
  417. package/dist/gui/renderer/components/surfaces/KnowledgeExplorer.js +202 -0
  418. package/dist/gui/renderer/components/surfaces/KnowledgeExplorer.js.map +1 -0
  419. package/dist/gui/renderer/components/surfaces/LineageManager.d.ts +3 -0
  420. package/dist/gui/renderer/components/surfaces/LineageManager.d.ts.map +1 -0
  421. package/dist/gui/renderer/components/surfaces/LineageManager.js +148 -0
  422. package/dist/gui/renderer/components/surfaces/LineageManager.js.map +1 -0
  423. package/dist/gui/renderer/components/surfaces/SessionTimeline.d.ts +3 -0
  424. package/dist/gui/renderer/components/surfaces/SessionTimeline.d.ts.map +1 -0
  425. package/dist/gui/renderer/components/surfaces/SessionTimeline.js +136 -0
  426. package/dist/gui/renderer/components/surfaces/SessionTimeline.js.map +1 -0
  427. package/dist/gui/renderer/components/surfaces/TodoBoard.d.ts +3 -0
  428. package/dist/gui/renderer/components/surfaces/TodoBoard.d.ts.map +1 -0
  429. package/dist/gui/renderer/components/surfaces/TodoBoard.js +128 -0
  430. package/dist/gui/renderer/components/surfaces/TodoBoard.js.map +1 -0
  431. package/dist/gui/renderer/context/paths-context.d.ts +19 -0
  432. package/dist/gui/renderer/context/paths-context.d.ts.map +1 -0
  433. package/dist/gui/renderer/context/paths-context.js +122 -0
  434. package/dist/gui/renderer/context/paths-context.js.map +1 -0
  435. package/dist/gui/renderer/context/theme-context.d.ts +11 -0
  436. package/dist/gui/renderer/context/theme-context.d.ts.map +1 -0
  437. package/dist/gui/renderer/context/theme-context.js +41 -0
  438. package/dist/gui/renderer/context/theme-context.js.map +1 -0
  439. package/dist/gui/renderer/hooks/use-api-query.d.ts +9 -0
  440. package/dist/gui/renderer/hooks/use-api-query.d.ts.map +1 -0
  441. package/dist/gui/renderer/hooks/use-api-query.js +60 -0
  442. package/dist/gui/renderer/hooks/use-api-query.js.map +1 -0
  443. package/dist/gui/renderer/hooks/use-lineage.d.ts +13 -0
  444. package/dist/gui/renderer/hooks/use-lineage.d.ts.map +1 -0
  445. package/dist/gui/renderer/hooks/use-lineage.js +15 -0
  446. package/dist/gui/renderer/hooks/use-lineage.js.map +1 -0
  447. package/dist/gui/renderer/index.d.ts +2 -0
  448. package/dist/gui/renderer/index.d.ts.map +1 -0
  449. package/dist/gui/renderer/index.js +2 -0
  450. package/dist/gui/renderer/index.js.map +1 -0
  451. package/dist/gui/shared/errors.d.ts +23 -0
  452. package/dist/gui/shared/errors.d.ts.map +1 -0
  453. package/dist/gui/shared/errors.js +10 -0
  454. package/dist/gui/shared/errors.js.map +1 -0
  455. package/dist/gui/shared/index.d.ts +4 -0
  456. package/dist/gui/shared/index.d.ts.map +1 -0
  457. package/dist/gui/shared/index.js +4 -0
  458. package/dist/gui/shared/index.js.map +1 -0
  459. package/dist/gui/shared/ipc-channels.d.ts +53 -0
  460. package/dist/gui/shared/ipc-channels.d.ts.map +1 -0
  461. package/dist/gui/shared/ipc-channels.js +63 -0
  462. package/dist/gui/shared/ipc-channels.js.map +1 -0
  463. package/dist/gui/shared/ipc-contracts.d.ts +176 -0
  464. package/dist/gui/shared/ipc-contracts.d.ts.map +1 -0
  465. package/dist/gui/shared/ipc-contracts.js +2 -0
  466. package/dist/gui/shared/ipc-contracts.js.map +1 -0
  467. package/dist/mcp/context.d.ts +55 -0
  468. package/dist/mcp/context.d.ts.map +1 -0
  469. package/dist/mcp/context.js +183 -0
  470. package/dist/mcp/context.js.map +1 -0
  471. package/dist/mcp/handler-utils.d.ts +22 -0
  472. package/dist/mcp/handler-utils.d.ts.map +1 -0
  473. package/dist/mcp/handler-utils.js +26 -0
  474. package/dist/mcp/handler-utils.js.map +1 -0
  475. package/dist/mcp/schemas.d.ts +688 -0
  476. package/dist/mcp/schemas.d.ts.map +1 -0
  477. package/dist/mcp/schemas.js +278 -0
  478. package/dist/mcp/schemas.js.map +1 -0
  479. package/dist/mcp/server.d.ts +8 -0
  480. package/dist/mcp/server.d.ts.map +1 -0
  481. package/dist/mcp/server.js +88 -0
  482. package/dist/mcp/server.js.map +1 -0
  483. package/dist/mcp/tools/abandon-plan.d.ts +4 -0
  484. package/dist/mcp/tools/abandon-plan.d.ts.map +1 -0
  485. package/dist/mcp/tools/abandon-plan.js +32 -0
  486. package/dist/mcp/tools/abandon-plan.js.map +1 -0
  487. package/dist/mcp/tools/add-todo.d.ts +4 -0
  488. package/dist/mcp/tools/add-todo.d.ts.map +1 -0
  489. package/dist/mcp/tools/add-todo.js +34 -0
  490. package/dist/mcp/tools/add-todo.js.map +1 -0
  491. package/dist/mcp/tools/complete-plan.d.ts +4 -0
  492. package/dist/mcp/tools/complete-plan.d.ts.map +1 -0
  493. package/dist/mcp/tools/complete-plan.js +32 -0
  494. package/dist/mcp/tools/complete-plan.js.map +1 -0
  495. package/dist/mcp/tools/complete-todo.d.ts +4 -0
  496. package/dist/mcp/tools/complete-todo.d.ts.map +1 -0
  497. package/dist/mcp/tools/complete-todo.js +51 -0
  498. package/dist/mcp/tools/complete-todo.js.map +1 -0
  499. package/dist/mcp/tools/continue-lineage.d.ts +4 -0
  500. package/dist/mcp/tools/continue-lineage.d.ts.map +1 -0
  501. package/dist/mcp/tools/continue-lineage.js +31 -0
  502. package/dist/mcp/tools/continue-lineage.js.map +1 -0
  503. package/dist/mcp/tools/create-plan.d.ts +4 -0
  504. package/dist/mcp/tools/create-plan.d.ts.map +1 -0
  505. package/dist/mcp/tools/create-plan.js +42 -0
  506. package/dist/mcp/tools/create-plan.js.map +1 -0
  507. package/dist/mcp/tools/get-active-plan.d.ts +4 -0
  508. package/dist/mcp/tools/get-active-plan.d.ts.map +1 -0
  509. package/dist/mcp/tools/get-active-plan.js +30 -0
  510. package/dist/mcp/tools/get-active-plan.js.map +1 -0
  511. package/dist/mcp/tools/get-lineage-history.d.ts +4 -0
  512. package/dist/mcp/tools/get-lineage-history.d.ts.map +1 -0
  513. package/dist/mcp/tools/get-lineage-history.js +38 -0
  514. package/dist/mcp/tools/get-lineage-history.js.map +1 -0
  515. package/dist/mcp/tools/get-lineages.d.ts +4 -0
  516. package/dist/mcp/tools/get-lineages.d.ts.map +1 -0
  517. package/dist/mcp/tools/get-lineages.js +30 -0
  518. package/dist/mcp/tools/get-lineages.js.map +1 -0
  519. package/dist/mcp/tools/get-project-context.d.ts +4 -0
  520. package/dist/mcp/tools/get-project-context.d.ts.map +1 -0
  521. package/dist/mcp/tools/get-project-context.js +38 -0
  522. package/dist/mcp/tools/get-project-context.js.map +1 -0
  523. package/dist/mcp/tools/get-task-context.d.ts +4 -0
  524. package/dist/mcp/tools/get-task-context.d.ts.map +1 -0
  525. package/dist/mcp/tools/get-task-context.js +42 -0
  526. package/dist/mcp/tools/get-task-context.js.map +1 -0
  527. package/dist/mcp/tools/ingest-event.d.ts +4 -0
  528. package/dist/mcp/tools/ingest-event.d.ts.map +1 -0
  529. package/dist/mcp/tools/ingest-event.js +71 -0
  530. package/dist/mcp/tools/ingest-event.js.map +1 -0
  531. package/dist/mcp/tools/list-plans.d.ts +4 -0
  532. package/dist/mcp/tools/list-plans.d.ts.map +1 -0
  533. package/dist/mcp/tools/list-plans.js +44 -0
  534. package/dist/mcp/tools/list-plans.js.map +1 -0
  535. package/dist/mcp/tools/list-todos.d.ts +4 -0
  536. package/dist/mcp/tools/list-todos.d.ts.map +1 -0
  537. package/dist/mcp/tools/list-todos.js +31 -0
  538. package/dist/mcp/tools/list-todos.js.map +1 -0
  539. package/dist/mcp/tools/log-session.d.ts +4 -0
  540. package/dist/mcp/tools/log-session.d.ts.map +1 -0
  541. package/dist/mcp/tools/log-session.js +35 -0
  542. package/dist/mcp/tools/log-session.js.map +1 -0
  543. package/dist/mcp/tools/open-gui.d.ts +14 -0
  544. package/dist/mcp/tools/open-gui.d.ts.map +1 -0
  545. package/dist/mcp/tools/open-gui.js +42 -0
  546. package/dist/mcp/tools/open-gui.js.map +1 -0
  547. package/dist/mcp/tools/save-knowledge.d.ts +4 -0
  548. package/dist/mcp/tools/save-knowledge.d.ts.map +1 -0
  549. package/dist/mcp/tools/save-knowledge.js +36 -0
  550. package/dist/mcp/tools/save-knowledge.js.map +1 -0
  551. package/dist/mcp/tools/search-knowledge.d.ts +4 -0
  552. package/dist/mcp/tools/search-knowledge.d.ts.map +1 -0
  553. package/dist/mcp/tools/search-knowledge.js +31 -0
  554. package/dist/mcp/tools/search-knowledge.js.map +1 -0
  555. package/dist/mcp/tools/search-nodes.d.ts +4 -0
  556. package/dist/mcp/tools/search-nodes.d.ts.map +1 -0
  557. package/dist/mcp/tools/search-nodes.js +33 -0
  558. package/dist/mcp/tools/search-nodes.js.map +1 -0
  559. package/dist/mcp/tools/start-lineage.d.ts +4 -0
  560. package/dist/mcp/tools/start-lineage.d.ts.map +1 -0
  561. package/dist/mcp/tools/start-lineage.js +31 -0
  562. package/dist/mcp/tools/start-lineage.js.map +1 -0
  563. package/dist/mcp/tools/sync-apply.d.ts +4 -0
  564. package/dist/mcp/tools/sync-apply.d.ts.map +1 -0
  565. package/dist/mcp/tools/sync-apply.js +23 -0
  566. package/dist/mcp/tools/sync-apply.js.map +1 -0
  567. package/dist/mcp/tools/sync-export.d.ts +4 -0
  568. package/dist/mcp/tools/sync-export.d.ts.map +1 -0
  569. package/dist/mcp/tools/sync-export.js +33 -0
  570. package/dist/mcp/tools/sync-export.js.map +1 -0
  571. package/dist/mcp/tools/sync-status.d.ts +4 -0
  572. package/dist/mcp/tools/sync-status.d.ts.map +1 -0
  573. package/dist/mcp/tools/sync-status.js +29 -0
  574. package/dist/mcp/tools/sync-status.js.map +1 -0
  575. package/dist/mcp/tools/update-identity.d.ts +4 -0
  576. package/dist/mcp/tools/update-identity.d.ts.map +1 -0
  577. package/dist/mcp/tools/update-identity.js +39 -0
  578. package/dist/mcp/tools/update-identity.js.map +1 -0
  579. package/dist/renderer/assets/index-Bs2j5Xf4.css +1 -0
  580. package/dist/renderer/assets/index-ovMIJ8mi.js +22 -0
  581. package/dist/renderer/index.html +17 -0
  582. package/package.json +77 -6
@@ -0,0 +1,57 @@
1
+ import os from 'os';
2
+ import path from 'path';
3
+ import fs from 'fs';
4
+ const DEFAULT_DIR = '.paths-engine';
5
+ const DEFAULT_FILENAME = 'data.sqlite';
6
+ const MAX_DB_PATH_LENGTH = 1024;
7
+ function isForbiddenDbPath(input, resolved) {
8
+ if (input.includes('\0') || resolved.includes('\0')) {
9
+ return true;
10
+ }
11
+ const normInput = input.toLowerCase().replace(/\\/g, '/');
12
+ // Unix system roots matched as leading path segments (avoids false positives
13
+ // on folders merely named 'dev' deeper in a project path).
14
+ if (/^\/etc(\/|$)/.test(normInput) || /^\/proc(\/|$)/.test(normInput) || /^\/sys(\/|$)/.test(normInput) || /^\/dev(\/|$)/.test(normInput)) {
15
+ return true;
16
+ }
17
+ const normalized = resolved.toLowerCase().replace(/\\/g, '/');
18
+ const windowsMarkers = ['/windows/system32', '/program files', '/program files (x86)'];
19
+ if (windowsMarkers.some((m) => normalized.includes(m))) {
20
+ return true;
21
+ }
22
+ if (/^\/\/(global|\.\/pipe)/i.test(normalized)) {
23
+ return true;
24
+ }
25
+ return false;
26
+ }
27
+ export function validateDbPath(p) {
28
+ if (typeof p !== 'string' || !p.trim()) {
29
+ throw new Error('Database path must be a non-empty string.');
30
+ }
31
+ if (p.includes('\0')) {
32
+ throw new Error('Database path contains invalid characters.');
33
+ }
34
+ if (p.length > MAX_DB_PATH_LENGTH) {
35
+ throw new Error('Database path exceeds maximum length.');
36
+ }
37
+ if (p !== ':memory:') {
38
+ const resolved = path.resolve(p);
39
+ if (isForbiddenDbPath(p, resolved)) {
40
+ throw new Error('Database path targets a forbidden system location.');
41
+ }
42
+ }
43
+ }
44
+ export function resolveDbPath(customPath) {
45
+ if (customPath) {
46
+ validateDbPath(customPath);
47
+ return customPath;
48
+ }
49
+ if (process.env.PATHS_DB_PATH) {
50
+ validateDbPath(process.env.PATHS_DB_PATH);
51
+ return process.env.PATHS_DB_PATH;
52
+ }
53
+ const dir = path.join(os.homedir(), DEFAULT_DIR);
54
+ fs.mkdirSync(dir, { recursive: true });
55
+ return path.join(dir, DEFAULT_FILENAME);
56
+ }
57
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../../src/core/db/path.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Store } from './store.js';
2
+ import { Plan, CreatePlanRowInput, UpdatePlanContentInput } from '../types/plan.js';
3
+ export declare class PlanRepository {
4
+ private readonly store;
5
+ constructor(store: Store);
6
+ private mapToDomain;
7
+ create(input: CreatePlanRowInput): Plan;
8
+ findById(id: number): Plan | null;
9
+ findActiveByProjectId(projectId: number): Plan | null;
10
+ findLatestByProjectId(projectId: number): Plan | null;
11
+ listByProjectId(projectId: number, includeInactive?: boolean): Plan[];
12
+ markCompleted(id: number, summary: string, completedAt?: string): Plan;
13
+ markAbandoned(id: number, reason: string, abandonedAt?: string): Plan;
14
+ markReplaced(id: number, replacedByPlanId: number | null, replacedAt?: string): Plan;
15
+ updateContent(id: number, fields: UpdatePlanContentInput, updatedAt?: string): Plan;
16
+ }
17
+ //# sourceMappingURL=plan-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-repository.d.ts","sourceRoot":"","sources":["../../../src/core/db/plan-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EACL,IAAI,EAGJ,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,OAAO,CAAC,WAAW;IAanB,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAKvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKjC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKrD,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKrD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,GAAE,OAAe,GAAG,IAAI,EAAE;IAK5E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAiC,GAAG,IAAI;IAKhG,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAiC,GAAG,IAAI;IAK/F,YAAY,CACV,EAAE,EAAE,MAAM,EACV,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,UAAU,GAAE,MAAiC,GAC5C,IAAI;IAKP,aAAa,CACX,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,sBAAsB,EAC9B,SAAS,GAAE,MAAiC,GAC3C,IAAI;CAIR"}
@@ -0,0 +1,56 @@
1
+ import { toCamel } from './case-mapper.js';
2
+ export class PlanRepository {
3
+ store;
4
+ constructor(store) {
5
+ this.store = store;
6
+ }
7
+ mapToDomain(row) {
8
+ const camel = toCamel(row);
9
+ return {
10
+ ...camel,
11
+ status: row.status,
12
+ completedAt: row.completed_at ?? null,
13
+ completionSummary: row.completion_summary ?? null,
14
+ abandonedAt: row.abandoned_at ?? null,
15
+ abandonmentReason: row.abandonment_reason ?? null,
16
+ replacedByPlanId: row.replaced_by_plan_id ?? null,
17
+ };
18
+ }
19
+ create(input) {
20
+ const row = this.store.createPlanRow(input);
21
+ return this.mapToDomain(row);
22
+ }
23
+ findById(id) {
24
+ const row = this.store.getPlanById(id);
25
+ return row ? this.mapToDomain(row) : null;
26
+ }
27
+ findActiveByProjectId(projectId) {
28
+ const row = this.store.getActivePlanByProjectId(projectId);
29
+ return row ? this.mapToDomain(row) : null;
30
+ }
31
+ findLatestByProjectId(projectId) {
32
+ const row = this.store.getLatestPlanByProjectId(projectId);
33
+ return row ? this.mapToDomain(row) : null;
34
+ }
35
+ listByProjectId(projectId, includeInactive = false) {
36
+ const rows = this.store.getPlansByProjectId(projectId, includeInactive);
37
+ return rows.map((row) => this.mapToDomain(row));
38
+ }
39
+ markCompleted(id, summary, completedAt = new Date().toISOString()) {
40
+ const row = this.store.markPlanCompletedRow(id, summary, completedAt);
41
+ return this.mapToDomain(row);
42
+ }
43
+ markAbandoned(id, reason, abandonedAt = new Date().toISOString()) {
44
+ const row = this.store.markPlanAbandonedRow(id, reason, abandonedAt);
45
+ return this.mapToDomain(row);
46
+ }
47
+ markReplaced(id, replacedByPlanId, replacedAt = new Date().toISOString()) {
48
+ const row = this.store.markPlanReplacedRow(id, replacedByPlanId, replacedAt);
49
+ return this.mapToDomain(row);
50
+ }
51
+ updateContent(id, fields, updatedAt = new Date().toISOString()) {
52
+ const row = this.store.updatePlanContentRow(id, fields, updatedAt);
53
+ return this.mapToDomain(row);
54
+ }
55
+ }
56
+ //# sourceMappingURL=plan-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-repository.js","sourceRoot":"","sources":["../../../src/core/db/plan-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Store } from './store.js';
2
+ import { Project } from '../types/project.js';
3
+ export declare class ProjectRepository {
4
+ private readonly store;
5
+ constructor(store: Store);
6
+ findByKey(key: string): Project | undefined;
7
+ findById(id: number): Project | undefined;
8
+ findLatest(): Project | undefined;
9
+ upsert(key: string, pathHint: string, name?: string): Project;
10
+ }
11
+ //# sourceMappingURL=project-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-repository.d.ts","sourceRoot":"","sources":["../../../src/core/db/project-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAE1D,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAK3C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAKzC,UAAU,IAAI,OAAO,GAAG,SAAS;IAKjC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;CAI9D"}
@@ -0,0 +1,24 @@
1
+ import { toCamel } from './case-mapper.js';
2
+ export class ProjectRepository {
3
+ store;
4
+ constructor(store) {
5
+ this.store = store;
6
+ }
7
+ findByKey(key) {
8
+ const row = this.store.getProjectByKey(key);
9
+ return row ? toCamel(row) : undefined;
10
+ }
11
+ findById(id) {
12
+ const row = this.store.getProjectById(id);
13
+ return row ? toCamel(row) : undefined;
14
+ }
15
+ findLatest() {
16
+ const row = this.store.getLatestProject();
17
+ return row ? toCamel(row) : undefined;
18
+ }
19
+ upsert(key, pathHint, name) {
20
+ const row = this.store.upsertProject(key, pathHint, name);
21
+ return toCamel(row);
22
+ }
23
+ }
24
+ //# sourceMappingURL=project-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-repository.js","sourceRoot":"","sources":["../../../src/core/db/project-repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,SAAS,CAAC,GAAW;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAU,GAAyC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAU,GAAyC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,CAAC;IAED,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAU,GAAyC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,QAAgB,EAAE,IAAa;QACjD,MAAM,GAAG,GAAe,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO,OAAO,CAAU,GAAyC,CAAC,CAAC;IACrE,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { Store } from './store.js';
2
+ import { Rollup } from '../types/node.js';
3
+ export declare class RollupRepository {
4
+ private readonly store;
5
+ constructor(store: Store);
6
+ createRollup(lineageId: number, fromNodeId: number, toNodeId: number, summary: string): Rollup;
7
+ findByLineageId(lineageId: number): Rollup[];
8
+ private mapToDomain;
9
+ }
10
+ //# sourceMappingURL=rollup-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup-repository.d.ts","sourceRoot":"","sources":["../../../src/core/db/rollup-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAA4B,MAAM,kBAAkB,CAAC;AAEpE,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM;IA0BT,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAS5C,OAAO,CAAC,WAAW;CAgCpB"}
@@ -0,0 +1,55 @@
1
+ export class RollupRepository {
2
+ store;
3
+ constructor(store) {
4
+ this.store = store;
5
+ }
6
+ createRollup(lineageId, fromNodeId, toNodeId, summary) {
7
+ return this.store.transaction(() => {
8
+ // Repository invariant: literal constants enforced at this layer
9
+ const nodeRow = this.store.createNodeRow(lineageId, 'rollup', summary, null, undefined, 'rollup');
10
+ const rollupRow = this.store.createRollupRow(lineageId, fromNodeId, toNodeId, nodeRow.id, nodeRow.created_at);
11
+ this.store.touchLineageRow(lineageId);
12
+ return this.mapToDomain(rollupRow, nodeRow);
13
+ });
14
+ }
15
+ findByLineageId(lineageId) {
16
+ const rollupRows = this.store.getRollupsByLineageId(lineageId);
17
+ if (rollupRows.length === 0) {
18
+ return [];
19
+ }
20
+ const nodeMap = new Map(this.store.findNodesByIds(rollupRows.map((r) => r.id)).map((n) => [n.id, n]));
21
+ return rollupRows.map((rollupRow) => this.mapToDomain(rollupRow, nodeMap.get(rollupRow.id)));
22
+ }
23
+ mapToDomain(rollupRow, nodeRow) {
24
+ const node = nodeRow
25
+ ? {
26
+ id: nodeRow.id,
27
+ lineageId: nodeRow.lineage_id,
28
+ tool: nodeRow.tool,
29
+ summary: nodeRow.summary,
30
+ filesTouched: null,
31
+ parentNodeId: null,
32
+ createdAt: nodeRow.created_at,
33
+ nodeType: 'rollup',
34
+ }
35
+ : {
36
+ id: rollupRow.id,
37
+ lineageId: rollupRow.lineage_id,
38
+ tool: 'rollup',
39
+ summary: '',
40
+ filesTouched: null,
41
+ parentNodeId: null,
42
+ createdAt: rollupRow.created_at,
43
+ nodeType: 'rollup',
44
+ };
45
+ return {
46
+ id: rollupRow.id,
47
+ lineageId: rollupRow.lineage_id,
48
+ fromNodeId: rollupRow.from_node_id,
49
+ toNodeId: rollupRow.to_node_id,
50
+ createdAt: rollupRow.created_at,
51
+ node,
52
+ };
53
+ }
54
+ }
55
+ //# sourceMappingURL=rollup-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup-repository.js","sourceRoot":"","sources":["../../../src/core/db/rollup-repository.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,YAAY,CACV,SAAiB,EACjB,UAAkB,EAClB,QAAgB,EAChB,OAAe;QAEf,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACjC,iEAAiE;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CACtC,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,QAAQ,CACT,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAC1C,SAAS,EACT,UAAU,EACV,QAAQ,EACR,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,UAAU,CACnB,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEtC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,SAAiB;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IAEO,WAAW,CAAC,SAAoB,EAAE,OAAiB;QACzD,MAAM,IAAI,GAAS,OAAO;YACxB,CAAC,CAAC;gBACE,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,SAAS,EAAE,OAAO,CAAC,UAAU;gBAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,UAAU;gBAC7B,QAAQ,EAAE,QAAQ;aACnB;YACH,CAAC,CAAC;gBACE,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,QAAQ,EAAE,QAAQ;aACnB,CAAC;QAEN,OAAO;YACL,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,SAAS,EAAE,SAAS,CAAC,UAAU;YAC/B,UAAU,EAAE,SAAS,CAAC,YAAY;YAClC,QAAQ,EAAE,SAAS,CAAC,UAAU;YAC9B,SAAS,EAAE,SAAS,CAAC,UAAU;YAC/B,IAAI;SACL,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type Database from 'better-sqlite3';
2
+ export declare const SCHEMA_STATEMENTS: readonly string[];
3
+ export declare function applyMigrations(db: Database.Database): void;
4
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/core/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAgO9C,CAAC;AAyHF,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAS3D"}
@@ -0,0 +1,315 @@
1
+ export const SCHEMA_STATEMENTS = [
2
+ `CREATE TABLE IF NOT EXISTS projects (
3
+ id INTEGER PRIMARY KEY,
4
+ key TEXT UNIQUE NOT NULL,
5
+ path_hint TEXT,
6
+ name TEXT,
7
+ current_lineage_id INTEGER REFERENCES lineages(id),
8
+ created_at TEXT NOT NULL,
9
+ sync_uuid TEXT UNIQUE,
10
+ sync_hlc TEXT,
11
+ sync_origin_device TEXT,
12
+ sync_is_tombstone INTEGER NOT NULL DEFAULT 0,
13
+ sync_version INTEGER NOT NULL DEFAULT 1
14
+ )`,
15
+ `CREATE TABLE IF NOT EXISTS identity (
16
+ project_id INTEGER PRIMARY KEY REFERENCES projects(id),
17
+ project_name TEXT,
18
+ purpose TEXT,
19
+ architecture TEXT,
20
+ tech_stack TEXT,
21
+ coding_standards TEXT,
22
+ folder_structure TEXT,
23
+ scope TEXT,
24
+ definition_of_done TEXT,
25
+ updated_at TEXT
26
+ )`,
27
+ `CREATE TABLE IF NOT EXISTS lineages (
28
+ id INTEGER PRIMARY KEY,
29
+ project_id INTEGER REFERENCES projects(id),
30
+ name TEXT NOT NULL,
31
+ status TEXT NOT NULL DEFAULT 'active',
32
+ created_at TEXT NOT NULL,
33
+ last_active_at TEXT NOT NULL,
34
+ sync_uuid TEXT UNIQUE,
35
+ sync_hlc TEXT,
36
+ sync_origin_device TEXT,
37
+ sync_is_tombstone INTEGER NOT NULL DEFAULT 0,
38
+ sync_version INTEGER NOT NULL DEFAULT 1
39
+ )`,
40
+ `CREATE TABLE IF NOT EXISTS nodes (
41
+ id INTEGER PRIMARY KEY,
42
+ lineage_id INTEGER REFERENCES lineages(id),
43
+ tool TEXT NOT NULL,
44
+ summary TEXT NOT NULL,
45
+ files_touched TEXT,
46
+ parent_node_id INTEGER REFERENCES nodes(id),
47
+ created_at TEXT NOT NULL,
48
+ node_type TEXT NOT NULL DEFAULT 'session',
49
+ sync_uuid TEXT UNIQUE,
50
+ sync_hlc TEXT,
51
+ sync_origin_device TEXT,
52
+ sync_is_tombstone INTEGER NOT NULL DEFAULT 0,
53
+ sync_version INTEGER NOT NULL DEFAULT 1
54
+ )`,
55
+ `CREATE TABLE IF NOT EXISTS node_rollups (
56
+ id INTEGER PRIMARY KEY REFERENCES nodes(id),
57
+ lineage_id INTEGER NOT NULL REFERENCES lineages(id),
58
+ from_node_id INTEGER NOT NULL REFERENCES nodes(id),
59
+ to_node_id INTEGER NOT NULL REFERENCES nodes(id),
60
+ created_at TEXT NOT NULL,
61
+ CHECK (from_node_id <= to_node_id)
62
+ )`,
63
+ `CREATE TABLE IF NOT EXISTS knowledge (
64
+ id INTEGER PRIMARY KEY,
65
+ project_id INTEGER REFERENCES projects(id),
66
+ category TEXT NOT NULL,
67
+ fact TEXT NOT NULL,
68
+ why TEXT NOT NULL,
69
+ origin_node_id INTEGER REFERENCES nodes(id),
70
+ supersedes_id INTEGER REFERENCES knowledge(id),
71
+ status TEXT NOT NULL DEFAULT 'active',
72
+ created_at TEXT NOT NULL,
73
+ last_referenced_at TEXT,
74
+ legacy_reference_count INTEGER NOT NULL DEFAULT 0,
75
+ conflicted_at TEXT,
76
+ conflicted_reason TEXT,
77
+ resolved_at TEXT,
78
+ resolved_by TEXT,
79
+ resolution_knowledge_id INTEGER REFERENCES knowledge(id),
80
+ sync_uuid TEXT UNIQUE,
81
+ sync_hlc TEXT,
82
+ sync_origin_device TEXT,
83
+ sync_is_tombstone INTEGER NOT NULL DEFAULT 0,
84
+ sync_version INTEGER NOT NULL DEFAULT 1
85
+ )`,
86
+ `CREATE TABLE IF NOT EXISTS knowledge_confirmations (
87
+ id INTEGER PRIMARY KEY,
88
+ knowledge_id INTEGER NOT NULL REFERENCES knowledge(id),
89
+ origin_node_id INTEGER REFERENCES nodes(id),
90
+ tool TEXT,
91
+ confirmed_at TEXT NOT NULL,
92
+ sync_uuid TEXT UNIQUE,
93
+ sync_hlc TEXT,
94
+ sync_origin_device TEXT,
95
+ sync_is_tombstone INTEGER NOT NULL DEFAULT 0,
96
+ sync_version INTEGER NOT NULL DEFAULT 1
97
+ )`,
98
+ `CREATE TABLE IF NOT EXISTS plans (
99
+ id INTEGER PRIMARY KEY,
100
+ project_id INTEGER NOT NULL REFERENCES projects(id),
101
+ lineage_id INTEGER REFERENCES lineages(id),
102
+ title TEXT NOT NULL,
103
+ intent TEXT NOT NULL,
104
+ approach TEXT NOT NULL,
105
+ definition_of_done TEXT NOT NULL,
106
+ status TEXT NOT NULL DEFAULT 'active',
107
+ created_at TEXT NOT NULL,
108
+ updated_at TEXT NOT NULL,
109
+ completed_at TEXT,
110
+ completion_summary TEXT,
111
+ abandoned_at TEXT,
112
+ abandonment_reason TEXT,
113
+ replaced_by_plan_id INTEGER REFERENCES plans(id),
114
+ sync_uuid TEXT UNIQUE,
115
+ sync_hlc TEXT,
116
+ sync_origin_device TEXT,
117
+ sync_is_tombstone INTEGER NOT NULL DEFAULT 0,
118
+ sync_version INTEGER NOT NULL DEFAULT 1
119
+ )`,
120
+ `CREATE INDEX IF NOT EXISTS idx_plans_project_status ON plans(project_id, status)`,
121
+ `CREATE INDEX IF NOT EXISTS idx_knowledge_project_status ON knowledge(project_id, status)`,
122
+ `CREATE INDEX IF NOT EXISTS idx_nodes_lineage_type ON nodes(lineage_id, node_type)`,
123
+ `CREATE UNIQUE INDEX IF NOT EXISTS idx_plans_active_per_project ON plans(project_id) WHERE status = 'active'`,
124
+ `CREATE TABLE IF NOT EXISTS todos (
125
+ id INTEGER PRIMARY KEY,
126
+ project_id INTEGER REFERENCES projects(id),
127
+ lineage_id INTEGER REFERENCES lineages(id),
128
+ origin_node_id INTEGER REFERENCES nodes(id),
129
+ plan_id INTEGER REFERENCES plans(id),
130
+ text TEXT NOT NULL,
131
+ done INTEGER NOT NULL DEFAULT 0,
132
+ created_at TEXT NOT NULL,
133
+ done_at TEXT,
134
+ sync_uuid TEXT UNIQUE,
135
+ sync_hlc TEXT,
136
+ sync_origin_device TEXT,
137
+ sync_is_tombstone INTEGER NOT NULL DEFAULT 0,
138
+ sync_version INTEGER NOT NULL DEFAULT 1
139
+ )`,
140
+ `CREATE TABLE IF NOT EXISTS installation_identity (
141
+ device_id TEXT PRIMARY KEY,
142
+ device_name TEXT,
143
+ last_sequence INTEGER NOT NULL DEFAULT 0,
144
+ created_at TEXT NOT NULL
145
+ )`,
146
+ `CREATE TABLE IF NOT EXISTS hlc_state (
147
+ device_id TEXT PRIMARY KEY,
148
+ physical_time_ms INTEGER NOT NULL,
149
+ logical_counter INTEGER NOT NULL,
150
+ updated_at TEXT NOT NULL
151
+ )`,
152
+ `CREATE TABLE IF NOT EXISTS external_events (
153
+ id INTEGER PRIMARY KEY,
154
+ project_id INTEGER NOT NULL REFERENCES projects(id),
155
+ external_event_id TEXT NOT NULL,
156
+ source_system TEXT NOT NULL,
157
+ event_type TEXT NOT NULL,
158
+ source_record TEXT NOT NULL,
159
+ occurred_at TEXT NOT NULL,
160
+ ingested_at TEXT NOT NULL,
161
+ created_at TEXT NOT NULL,
162
+ canonical_entity_type TEXT,
163
+ canonical_entity_id INTEGER,
164
+ UNIQUE(project_id, source_system, external_event_id)
165
+ )`,
166
+ `CREATE TABLE IF NOT EXISTS embeddings (
167
+ id INTEGER PRIMARY KEY,
168
+ entity_type TEXT NOT NULL,
169
+ entity_id INTEGER NOT NULL,
170
+ model_id TEXT NOT NULL,
171
+ dimensions INTEGER NOT NULL,
172
+ content_hash TEXT NOT NULL,
173
+ metric TEXT NOT NULL DEFAULT 'cosine',
174
+ normalization_version INTEGER NOT NULL DEFAULT 1,
175
+ vector BLOB NOT NULL,
176
+ created_at TEXT NOT NULL,
177
+ UNIQUE(entity_type, entity_id, model_id)
178
+ )`,
179
+ `CREATE TABLE IF NOT EXISTS sync_changes (
180
+ id INTEGER PRIMARY KEY,
181
+ project_key TEXT NOT NULL,
182
+ origin_device_id TEXT NOT NULL,
183
+ origin_sequence INTEGER NOT NULL,
184
+ entity_type TEXT NOT NULL,
185
+ entity_uuid TEXT NOT NULL,
186
+ operation TEXT NOT NULL,
187
+ payload TEXT NOT NULL,
188
+ hlc_timestamp TEXT NOT NULL,
189
+ created_at TEXT NOT NULL,
190
+ UNIQUE(origin_device_id, origin_sequence)
191
+ )`,
192
+ `CREATE TABLE IF NOT EXISTS sync_deferred_changes (
193
+ id INTEGER PRIMARY KEY,
194
+ project_key TEXT NOT NULL,
195
+ origin_device_id TEXT NOT NULL,
196
+ origin_sequence INTEGER NOT NULL,
197
+ entity_type TEXT NOT NULL,
198
+ entity_uuid TEXT NOT NULL,
199
+ missing_dependencies TEXT NOT NULL,
200
+ payload TEXT NOT NULL,
201
+ hlc_timestamp TEXT NOT NULL,
202
+ created_at TEXT NOT NULL,
203
+ UNIQUE(origin_device_id, origin_sequence)
204
+ )`,
205
+ `CREATE INDEX IF NOT EXISTS idx_todos_project_done ON todos(project_id, done)`,
206
+ `CREATE INDEX IF NOT EXISTS idx_lineages_project ON lineages(project_id)`,
207
+ `CREATE INDEX IF NOT EXISTS idx_rollups_lineage ON node_rollups(lineage_id)`,
208
+ ];
209
+ function getColumnNames(db, table) {
210
+ const columns = db.pragma(`table_info(${table})`);
211
+ return new Set(columns.map((col) => col.name));
212
+ }
213
+ function addColumnIfNotExists(db, table, columnName, columnDefinition) {
214
+ const columns = getColumnNames(db, table);
215
+ if (columns.has(columnName)) {
216
+ return;
217
+ }
218
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${columnName} ${columnDefinition}`);
219
+ }
220
+ function renameColumnIfExists(db, table, oldName, newName) {
221
+ const columns = getColumnNames(db, table);
222
+ if (!columns.has(oldName) || columns.has(newName)) {
223
+ return;
224
+ }
225
+ db.exec(`ALTER TABLE ${table} RENAME COLUMN ${oldName} TO ${newName}`);
226
+ }
227
+ function addSyncColumns(db, table) {
228
+ addColumnIfNotExists(db, table, 'sync_uuid', 'TEXT');
229
+ db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS idx_${table}_sync_uuid ON ${table}(sync_uuid) WHERE sync_uuid IS NOT NULL`);
230
+ addColumnIfNotExists(db, table, 'sync_hlc', 'TEXT');
231
+ addColumnIfNotExists(db, table, 'sync_origin_device', 'TEXT');
232
+ addColumnIfNotExists(db, table, 'sync_is_tombstone', 'INTEGER NOT NULL DEFAULT 0');
233
+ addColumnIfNotExists(db, table, 'sync_version', 'INTEGER NOT NULL DEFAULT 1');
234
+ }
235
+ function migrateProjects(db) {
236
+ addColumnIfNotExists(db, 'projects', 'current_lineage_id', 'INTEGER REFERENCES lineages(id)');
237
+ addSyncColumns(db, 'projects');
238
+ }
239
+ function migrateLineages(db) {
240
+ addSyncColumns(db, 'lineages');
241
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_lineages_project ON lineages(project_id)`);
242
+ }
243
+ function migrateNodes(db) {
244
+ addColumnIfNotExists(db, 'nodes', 'node_type', "TEXT NOT NULL DEFAULT 'session'");
245
+ addSyncColumns(db, 'nodes');
246
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_nodes_lineage_type ON nodes(lineage_id, node_type)`);
247
+ }
248
+ function migrateKnowledge(db) {
249
+ renameColumnIfExists(db, 'knowledge', 'reference_count', 'legacy_reference_count');
250
+ addColumnIfNotExists(db, 'knowledge', 'conflicted_at', 'TEXT');
251
+ addColumnIfNotExists(db, 'knowledge', 'conflicted_reason', 'TEXT');
252
+ addColumnIfNotExists(db, 'knowledge', 'resolved_at', 'TEXT');
253
+ addColumnIfNotExists(db, 'knowledge', 'resolved_by', 'TEXT');
254
+ addColumnIfNotExists(db, 'knowledge', 'resolution_knowledge_id', 'INTEGER REFERENCES knowledge(id)');
255
+ addSyncColumns(db, 'knowledge');
256
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_knowledge_project_status ON knowledge(project_id, status)`);
257
+ }
258
+ function migrateKnowledgeConfirmations(db) {
259
+ addSyncColumns(db, 'knowledge_confirmations');
260
+ }
261
+ function migrateTodos(db) {
262
+ addColumnIfNotExists(db, 'todos', 'plan_id', 'INTEGER REFERENCES plans(id)');
263
+ addSyncColumns(db, 'todos');
264
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_todos_project_done ON todos(project_id, done)`);
265
+ }
266
+ function tableExists(db, table) {
267
+ const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name = ?").get(table);
268
+ return row !== undefined;
269
+ }
270
+ function migrateRollups(db) {
271
+ if (!tableExists(db, 'node_rollups')) {
272
+ return;
273
+ }
274
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_rollups_lineage ON node_rollups(lineage_id)`);
275
+ }
276
+ function migratePlans(db) {
277
+ db.exec(`
278
+ CREATE TABLE IF NOT EXISTS plans (
279
+ id INTEGER PRIMARY KEY,
280
+ project_id INTEGER NOT NULL REFERENCES projects(id),
281
+ lineage_id INTEGER REFERENCES lineages(id),
282
+ title TEXT NOT NULL,
283
+ intent TEXT NOT NULL,
284
+ approach TEXT NOT NULL,
285
+ definition_of_done TEXT NOT NULL,
286
+ status TEXT NOT NULL DEFAULT 'active',
287
+ created_at TEXT NOT NULL,
288
+ updated_at TEXT NOT NULL,
289
+ completed_at TEXT,
290
+ completion_summary TEXT,
291
+ abandoned_at TEXT,
292
+ abandonment_reason TEXT,
293
+ replaced_by_plan_id INTEGER REFERENCES plans(id),
294
+ sync_uuid TEXT UNIQUE,
295
+ sync_hlc TEXT,
296
+ sync_origin_device TEXT,
297
+ sync_is_tombstone INTEGER NOT NULL DEFAULT 0,
298
+ sync_version INTEGER NOT NULL DEFAULT 1
299
+ );
300
+ `);
301
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_plans_project_status ON plans(project_id, status)`);
302
+ db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS idx_plans_active_per_project ON plans(project_id) WHERE status = 'active'`);
303
+ addSyncColumns(db, 'plans');
304
+ }
305
+ export function applyMigrations(db) {
306
+ migrateProjects(db);
307
+ migrateLineages(db);
308
+ migrateNodes(db);
309
+ migrateKnowledge(db);
310
+ migrateKnowledgeConfirmations(db);
311
+ migratePlans(db);
312
+ migrateTodos(db);
313
+ migrateRollups(db);
314
+ }
315
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/core/db/schema.ts"],"names":[],"mappings":"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"}