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 @@
1
+ {"version":3,"file":"SessionTimeline.d.ts","sourceRoot":"","sources":["../../../../../src/gui/renderer/components/surfaces/SessionTimeline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAWxC,wBAAgB,eAAe,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CA8VnD"}
@@ -0,0 +1,136 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { motion, AnimatePresence } from 'motion/react';
4
+ import { usePathsContext } from '../../context/paths-context.js';
5
+ import { useApiQuery } from '../../hooks/use-api-query.js';
6
+ import { Badge } from '../shared/Badge.js';
7
+ import { ErrorBanner } from '../shared/ErrorBanner.js';
8
+ import { LoadingSpinner } from '../shared/LoadingSpinner.js';
9
+ import { EmptyState } from '../shared/EmptyState.js';
10
+ import { GlassSelect } from '../shared/GlassSelect.js';
11
+ export function SessionTimeline() {
12
+ const { lineages, activeLineageId } = usePathsContext();
13
+ const [selectedLineageId, setSelectedLineageId] = useState(activeLineageId);
14
+ const [isFullHistory, setIsFullHistory] = useState(false);
15
+ const [expandedFilesNodeIds, setExpandedFilesNodeIds] = useState(new Set());
16
+ // Keep selectedLineageId in sync with activeLineageId if uninitialized
17
+ const effectiveLineageId = selectedLineageId ?? activeLineageId;
18
+ const { data: rawNodes, isLoading, error, refresh } = useApiQuery(async () => {
19
+ if (!window.pathsApi) {
20
+ throw new Error('PathsApi bridge is unavailable.');
21
+ }
22
+ if (effectiveLineageId === null) {
23
+ return { success: true, data: [] };
24
+ }
25
+ return window.pathsApi.getHistory({
26
+ lineageId: effectiveLineageId,
27
+ full: isFullHistory,
28
+ });
29
+ }, [effectiveLineageId, isFullHistory]);
30
+ const toggleFiles = (id) => {
31
+ setExpandedFilesNodeIds((prev) => {
32
+ const next = new Set(prev);
33
+ if (next.has(id)) {
34
+ next.delete(id);
35
+ }
36
+ else {
37
+ next.add(id);
38
+ }
39
+ return next;
40
+ });
41
+ };
42
+ // Presentation-only transformation: reverse Core's newest-first order for chronological top-to-bottom timeline
43
+ const nodes = rawNodes ? [...rawNodes].reverse() : [];
44
+ if (effectiveLineageId === null) {
45
+ return (_jsx("div", { className: "content-scrollable", children: _jsx(EmptyState, { title: "No Lineage Selected", description: "Select or start a lineage to inspect its chronological session history." }) }));
46
+ }
47
+ return (_jsxs("div", { className: "content-scrollable", children: [error && _jsx(ErrorBanner, { message: error, onDismiss: () => void refresh() }), _jsxs("div", { style: {
48
+ position: 'relative',
49
+ zIndex: 20,
50
+ display: 'flex',
51
+ flexWrap: 'wrap',
52
+ alignItems: 'center',
53
+ justifyContent: 'space-between',
54
+ gap: 'var(--space-3)',
55
+ marginBottom: 'var(--space-5)',
56
+ padding: '16px 24px',
57
+ backgroundColor: 'var(--bg-card)',
58
+ backdropFilter: 'blur(20px) saturate(180%)',
59
+ WebkitBackdropFilter: 'blur(20px) saturate(180%)',
60
+ borderRadius: 'var(--radius-xl)',
61
+ border: '1px solid var(--border-subtle)',
62
+ boxShadow: 'var(--card-shadow), var(--specular-highlight)',
63
+ }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '10px' }, children: [_jsx("label", { htmlFor: "timeline-lineage-select", style: { fontSize: '12px', fontWeight: 600, color: 'var(--text-secondary)' }, children: "Lineage:" }), _jsx(GlassSelect, { id: "timeline-lineage-select", label: "Lineage", value: effectiveLineageId ?? '', onChange: (val) => setSelectedLineageId(Number(val)), options: lineages.map((l) => ({
64
+ value: l.id,
65
+ label: `${l.name}${l.isCurrent ? ' (Active)' : ''}`,
66
+ isCurrent: l.isCurrent,
67
+ })) })] }), _jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '8px' }, children: _jsxs("div", { className: "pill-group", children: [_jsxs("button", { type: "button", onClick: () => setIsFullHistory(false), className: `pill-btn ${!isFullHistory ? 'active' : ''}`, style: { position: 'relative' }, children: [!isFullHistory && (_jsx(motion.div, { layoutId: "timeline-scope-active", transition: { type: 'spring', stiffness: 400, damping: 32 }, style: {
68
+ position: 'absolute',
69
+ inset: 0,
70
+ borderRadius: 'var(--radius-full)',
71
+ backgroundColor: 'var(--bg-control-active)',
72
+ border: '1px solid var(--border-control-active)',
73
+ boxShadow: 'var(--shadow-sm), var(--specular-highlight)',
74
+ zIndex: 0,
75
+ } })), _jsx("span", { style: { position: 'relative', zIndex: 1 }, children: "Digest (15 Max)" })] }), _jsxs("button", { type: "button", onClick: () => setIsFullHistory(true), className: `pill-btn ${isFullHistory ? 'active' : ''}`, style: { position: 'relative' }, children: [isFullHistory && (_jsx(motion.div, { layoutId: "timeline-scope-active", transition: { type: 'spring', stiffness: 400, damping: 32 }, style: {
76
+ position: 'absolute',
77
+ inset: 0,
78
+ borderRadius: 'var(--radius-full)',
79
+ backgroundColor: 'var(--bg-control-active)',
80
+ border: '1px solid var(--border-control-active)',
81
+ boxShadow: 'var(--shadow-sm), var(--specular-highlight)',
82
+ zIndex: 0,
83
+ } })), _jsx("span", { style: { position: 'relative', zIndex: 1 }, children: "Full History" })] })] }) })] }), _jsxs("section", { "aria-labelledby": "timeline-history-heading", children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 'var(--space-4)' }, children: [_jsxs("h3", { id: "timeline-history-heading", style: { fontSize: '14px', fontWeight: 600, color: 'var(--text-primary)' }, children: ["Chronological Session History (", nodes.length, " sessions)"] }), _jsx("span", { style: { fontSize: '12px', color: 'var(--text-muted)' }, children: "Oldest \u2192 Newest" })] }), isLoading ? (_jsx(LoadingSpinner, { label: "Loading session timeline..." })) : nodes.length === 0 ? (_jsx(EmptyState, { title: "No Sessions", description: "No Sessions have been logged to this lineage yet. Run tasks or log progress to populate the continuity chain." })) : (_jsxs("div", { className: "timeline-track-container", children: [_jsx("div", { className: "timeline-track-line", "aria-hidden": "true" }), nodes.map((node, index) => {
84
+ const isLatest = index === nodes.length - 1;
85
+ const isExpandedFiles = expandedFilesNodeIds.has(node.id);
86
+ const files = node.filesTouched ?? [];
87
+ const hasFiles = files.length > 0;
88
+ const isoDate = new Date(node.createdAt).toISOString();
89
+ const formattedDate = new Date(node.createdAt).toLocaleString(undefined, {
90
+ month: 'short',
91
+ day: 'numeric',
92
+ hour: '2-digit',
93
+ minute: '2-digit',
94
+ });
95
+ return (_jsxs("div", { className: "timeline-item", children: [_jsx("div", { className: "timeline-node-marker", style: {
96
+ borderColor: isLatest ? 'var(--accent-primary)' : 'var(--border-strong)',
97
+ backgroundColor: isLatest ? 'var(--nav-active-bg)' : 'var(--bg-card)',
98
+ boxShadow: isLatest ? '0 0 16px var(--accent-subtle), var(--specular-highlight)' : 'var(--specular-highlight)',
99
+ }, "aria-hidden": "true", children: _jsx("span", { style: { fontSize: '11px', fontWeight: 700, color: isLatest ? 'var(--accent-primary)' : 'var(--text-muted)' }, children: index + 1 }) }), _jsxs("article", { className: "timeline-content-card", children: [_jsxs("div", { className: "card-header", style: { marginBottom: '8px' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '8px' }, children: [_jsx(Badge, { variant: "tool", label: node.tool, dot: false }), _jsxs("span", { style: { fontSize: '11px', fontWeight: 600, color: 'var(--text-muted)' }, children: ["Session #", node.id, " ", node.parentNodeId ? `→ Parent #${node.parentNodeId}` : '(Genesis)'] }), isLatest && (_jsx("span", { style: {
100
+ fontSize: '10px',
101
+ fontWeight: 700,
102
+ textTransform: 'uppercase',
103
+ padding: '1px 6px',
104
+ borderRadius: 'var(--radius-full)',
105
+ backgroundColor: 'var(--status-active-bg)',
106
+ color: 'var(--status-active-text)',
107
+ border: '1px solid var(--status-active-border)',
108
+ }, children: "Latest Head" }))] }), _jsx("time", { dateTime: isoDate, style: { fontSize: '12px', fontWeight: 500, color: 'var(--text-secondary)' }, children: formattedDate })] }), _jsx("p", { style: { fontSize: '13px', color: 'var(--text-primary)', lineHeight: 1.5, marginBottom: hasFiles ? '10px' : '0' }, children: node.summary }), hasFiles && (_jsxs("div", { style: { marginTop: '10px', paddingTop: '8px', borderTop: '1px solid var(--border-subtle)' }, children: [_jsxs("button", { type: "button", onClick: () => toggleFiles(node.id), "aria-expanded": isExpandedFiles, style: {
109
+ fontSize: '11px',
110
+ fontWeight: 600,
111
+ color: 'var(--accent-primary)',
112
+ display: 'inline-flex',
113
+ alignItems: 'center',
114
+ gap: '5px',
115
+ padding: '2px 0',
116
+ transition: 'color var(--transition-fast)',
117
+ }, children: [_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), _jsx("polyline", { points: "14 2 14 8 20 8" })] }), _jsx("span", { children: isExpandedFiles
118
+ ? `Hide Modified Files (${files.length})`
119
+ : `Files Touched (${files.length})` }), _jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", style: {
120
+ transform: isExpandedFiles ? 'rotate(180deg)' : 'rotate(0deg)',
121
+ transition: 'transform var(--transition-fast)',
122
+ }, children: _jsx("polyline", { points: "6 9 12 15 18 9" }) })] }), _jsx(AnimatePresence, { children: isExpandedFiles && (_jsx(motion.div, { initial: { opacity: 0, height: 0 }, animate: { opacity: 1, height: 'auto' }, exit: { opacity: 0, height: 0 }, transition: { type: 'spring', stiffness: 350, damping: 28 }, style: { overflow: 'hidden' }, children: _jsx("div", { style: { display: 'flex', flexWrap: 'wrap', gap: '6px', marginTop: '8px' }, children: files.map((filePath, fIndex) => (_jsxs("span", { style: {
123
+ fontSize: '11px',
124
+ fontFamily: 'var(--font-mono)',
125
+ padding: '3px 8px',
126
+ borderRadius: 'var(--radius-sm)',
127
+ backgroundColor: 'var(--bg-control)',
128
+ border: '1px solid var(--border-control)',
129
+ color: 'var(--text-secondary)',
130
+ display: 'inline-flex',
131
+ alignItems: 'center',
132
+ gap: '4px',
133
+ }, children: [_jsxs("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: { color: 'var(--text-muted)', flexShrink: 0 }, "aria-hidden": "true", children: [_jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), _jsx("polyline", { points: "14 2 14 8 20 8" })] }), _jsx("span", { children: filePath })] }, fIndex))) }) })) })] }))] })] }, node.id));
134
+ })] }))] })] }));
135
+ }
136
+ //# sourceMappingURL=SessionTimeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionTimeline.js","sourceRoot":"","sources":["../../../../../src/gui/renderer/components/surfaces/SessionTimeline.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function TodoBoard(): React.JSX.Element;
3
+ //# sourceMappingURL=TodoBoard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoBoard.d.ts","sourceRoot":"","sources":["../../../../../src/gui/renderer/components/surfaces/TodoBoard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAUxC,wBAAgB,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAiR7C"}
@@ -0,0 +1,128 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { motion, AnimatePresence } from 'motion/react';
4
+ import { usePathsContext } from '../../context/paths-context.js';
5
+ import { useApiQuery } from '../../hooks/use-api-query.js';
6
+ import { ErrorBanner } from '../shared/ErrorBanner.js';
7
+ import { LoadingSpinner } from '../shared/LoadingSpinner.js';
8
+ import { EmptyState } from '../shared/EmptyState.js';
9
+ export function TodoBoard() {
10
+ const { activeLineageId, activeLineageName, lineages, refresh: refreshGlobalContext } = usePathsContext();
11
+ const [scope, setScope] = useState('project');
12
+ const [completingIds, setCompletingIds] = useState(new Set());
13
+ const [mutationError, setMutationError] = useState(null);
14
+ // Active lineage filter parameter: omitted for project-wide, activeLineageId for lineage scope
15
+ const targetLineageId = scope === 'lineage' && activeLineageId !== null ? activeLineageId : undefined;
16
+ const { data: rawTodos, isLoading, error, refresh } = useApiQuery(async () => {
17
+ if (!window.pathsApi) {
18
+ throw new Error('PathsApi bridge is unavailable.');
19
+ }
20
+ return window.pathsApi.listTodos(targetLineageId !== undefined ? { lineageId: targetLineageId } : undefined);
21
+ }, [targetLineageId]);
22
+ const handleComplete = async (todoId) => {
23
+ if (!window.pathsApi)
24
+ return;
25
+ setCompletingIds((prev) => new Set(prev).add(todoId));
26
+ setMutationError(null);
27
+ try {
28
+ const res = await window.pathsApi.completeTodoById({ todoId });
29
+ if (!res.success) {
30
+ setMutationError(res.error.message);
31
+ return;
32
+ }
33
+ // Canonical re-read: refresh todos from database projection
34
+ await refresh();
35
+ // Re-synchronize global context counters
36
+ void refreshGlobalContext();
37
+ }
38
+ catch (err) {
39
+ setMutationError(err instanceof Error ? err.message : 'Failed to complete todo.');
40
+ }
41
+ finally {
42
+ setCompletingIds((prev) => {
43
+ const next = new Set(prev);
44
+ next.delete(todoId);
45
+ return next;
46
+ });
47
+ }
48
+ };
49
+ const getLineageName = (lineageId) => {
50
+ if (lineageId === null)
51
+ return 'Project-wide';
52
+ const match = lineages.find((l) => l.id === lineageId);
53
+ return match ? match.name : `Lineage #${lineageId}`;
54
+ };
55
+ const todos = rawTodos ?? [];
56
+ const displayedError = mutationError ?? error;
57
+ return (_jsxs("div", { className: "content-scrollable", children: [displayedError && (_jsx(ErrorBanner, { message: displayedError, onDismiss: () => setMutationError(null) })), _jsxs("div", { style: {
58
+ display: 'flex',
59
+ alignItems: 'center',
60
+ justifyContent: 'space-between',
61
+ marginBottom: 'var(--space-5)',
62
+ padding: '16px 24px',
63
+ backgroundColor: 'var(--bg-card)',
64
+ backdropFilter: 'blur(20px) saturate(180%)',
65
+ WebkitBackdropFilter: 'blur(20px) saturate(180%)',
66
+ borderRadius: 'var(--radius-xl)',
67
+ border: '1px solid var(--border-subtle)',
68
+ boxShadow: 'var(--card-shadow), var(--specular-highlight)',
69
+ }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '10px' }, children: [_jsx("span", { style: { fontSize: '12px', fontWeight: 600, color: 'var(--text-secondary)' }, children: "Scope:" }), _jsxs("div", { className: "pill-group", children: [_jsxs("button", { type: "button", onClick: () => setScope('project'), className: `pill-btn ${scope === 'project' ? 'active' : ''}`, style: { position: 'relative' }, children: [scope === 'project' && (_jsx(motion.div, { layoutId: "todo-scope-active", transition: { type: 'spring', stiffness: 400, damping: 32 }, style: {
70
+ position: 'absolute',
71
+ inset: 0,
72
+ borderRadius: 'var(--radius-full)',
73
+ backgroundColor: 'var(--bg-control-active)',
74
+ border: '1px solid var(--border-control-active)',
75
+ boxShadow: 'var(--shadow-sm), var(--specular-highlight)',
76
+ zIndex: 0,
77
+ } })), _jsx("span", { style: { position: 'relative', zIndex: 1 }, children: "All Project" })] }), _jsxs("button", { type: "button", onClick: () => setScope('lineage'), disabled: activeLineageId === null, className: `pill-btn ${scope === 'lineage' ? 'active' : ''}`, style: { position: 'relative' }, children: [scope === 'lineage' && (_jsx(motion.div, { layoutId: "todo-scope-active", transition: { type: 'spring', stiffness: 400, damping: 32 }, style: {
78
+ position: 'absolute',
79
+ inset: 0,
80
+ borderRadius: 'var(--radius-full)',
81
+ backgroundColor: 'var(--bg-control-active)',
82
+ border: '1px solid var(--border-control-active)',
83
+ boxShadow: 'var(--shadow-sm), var(--specular-highlight)',
84
+ zIndex: 0,
85
+ } })), _jsxs("span", { style: { position: 'relative', zIndex: 1 }, children: ["Active Lineage ", activeLineageName ? `(${activeLineageName})` : ''] })] })] })] }), _jsxs("span", { style: { fontSize: '12px', color: 'var(--text-muted)' }, children: ["Showing ", todos.length, " open todo", todos.length === 1 ? '' : 's'] })] }), _jsxs("section", { "aria-labelledby": "open-todos-heading", children: [_jsx("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 'var(--space-4)' }, children: _jsxs("h3", { id: "open-todos-heading", style: { fontSize: '14px', fontWeight: 600, color: 'var(--text-primary)' }, children: ["Pending Items (", todos.length, ")"] }) }), isLoading ? (_jsx(LoadingSpinner, { label: "Loading open todos..." })) : todos.length === 0 ? (_jsx(EmptyState, { title: "All Caught Up", description: scope === 'lineage'
86
+ ? 'No open todos recorded for the active lineage.'
87
+ : 'No open todos recorded across the entire project. All clear!' })) : (_jsx(motion.div, { layout: true, style: { display: 'flex', flexDirection: 'column', gap: 'var(--space-3)' }, children: _jsx(AnimatePresence, { children: todos.map((todo) => {
88
+ const isCompleting = completingIds.has(todo.id);
89
+ const lineageName = getLineageName(todo.lineageId);
90
+ return (_jsxs(motion.article, { layout: true, initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, scale: 0.94, height: 0, marginBottom: 0, padding: 0 }, transition: { type: 'spring', stiffness: 400, damping: 32 }, whileHover: { y: -2 }, className: "card", style: {
91
+ display: 'flex',
92
+ alignItems: 'flex-start',
93
+ gap: '16px',
94
+ padding: '18px 22px',
95
+ overflow: 'hidden',
96
+ }, children: [_jsx(motion.button, { type: "button", onClick: () => void handleComplete(todo.id), disabled: isCompleting, whileTap: { scale: 0.9 }, "aria-label": `Mark todo "${todo.text}" as completed`, style: {
97
+ marginTop: '2px',
98
+ width: '20px',
99
+ height: '20px',
100
+ borderRadius: '50%',
101
+ border: '2px solid var(--accent-border)',
102
+ backgroundColor: 'transparent',
103
+ display: 'flex',
104
+ alignItems: 'center',
105
+ justifyContent: 'center',
106
+ cursor: 'pointer',
107
+ flexShrink: 0,
108
+ transition: 'all var(--transition-fast)',
109
+ }, onMouseEnter: (e) => {
110
+ e.currentTarget.style.backgroundColor = 'var(--status-active-bg)';
111
+ e.currentTarget.style.borderColor = 'var(--status-active-text)';
112
+ }, onMouseLeave: (e) => {
113
+ e.currentTarget.style.backgroundColor = 'transparent';
114
+ e.currentTarget.style.borderColor = 'var(--accent-border)';
115
+ }, children: isCompleting ? (_jsx("span", { style: { fontSize: '10px', color: 'var(--text-muted)' }, children: "..." })) : (_jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "var(--status-active-text)", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", style: { opacity: 0, transition: 'opacity var(--transition-fast)' }, onMouseEnter: (e) => {
116
+ e.currentTarget.style.opacity = '1';
117
+ }, "aria-hidden": "true", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) })) }), _jsxs("div", { style: { flex: 1 }, children: [_jsx("p", { style: { fontSize: '13px', fontWeight: 500, color: 'var(--text-primary)', lineHeight: 1.5, marginBottom: '8px' }, children: todo.text }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '8px', flexWrap: 'wrap' }, children: [_jsx("span", { style: {
118
+ fontSize: '11px',
119
+ fontWeight: 500,
120
+ padding: '2px 8px',
121
+ borderRadius: 'var(--radius-full)',
122
+ backgroundColor: 'var(--bg-control)',
123
+ color: 'var(--text-secondary)',
124
+ border: '1px solid var(--border-control)',
125
+ }, children: lineageName }), _jsxs("span", { style: { fontSize: '11px', color: 'var(--text-muted)' }, children: ["Created ", new Date(todo.createdAt).toLocaleDateString()] })] })] })] }, todo.id));
126
+ }) }) }))] })] }));
127
+ }
128
+ //# sourceMappingURL=TodoBoard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoBoard.js","sourceRoot":"","sources":["../../../../../src/gui/renderer/components/surfaces/TodoBoard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import React, { ReactNode } from 'react';
2
+ import { IdentityDto, LineageSummaryDto } from '../../shared/ipc-contracts.js';
3
+ export interface PathsContextValue {
4
+ lineages: LineageSummaryDto[];
5
+ activeLineageId: number | null;
6
+ activeLineageName: string | null;
7
+ identity: IdentityDto | null;
8
+ isLoading: boolean;
9
+ error: string | null;
10
+ switchLineage: (id: number) => Promise<void>;
11
+ startLineage: (name: string) => Promise<void>;
12
+ refresh: () => Promise<void>;
13
+ }
14
+ export interface PathsContextProviderProps {
15
+ children: ReactNode;
16
+ }
17
+ export declare function PathsContextProvider({ children }: PathsContextProviderProps): React.JSX.Element;
18
+ export declare function usePathsContext(): PathsContextValue;
19
+ //# sourceMappingURL=paths-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths-context.d.ts","sourceRoot":"","sources":["../../../../src/gui/renderer/context/paths-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA+D,SAAS,EAAE,MAAM,OAAO,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAeD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkI/F;AAED,wBAAgB,eAAe,IAAI,iBAAiB,CAMnD"}
@@ -0,0 +1,122 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect, useState, useCallback } from 'react';
3
+ const PathsContext = createContext(null);
4
+ function isBridgeAvailable() {
5
+ return typeof window !== 'undefined' && typeof window.pathsApi !== 'undefined';
6
+ }
7
+ function requireBridge() {
8
+ if (!isBridgeAvailable()) {
9
+ throw new Error('PathsApi bridge is unavailable.');
10
+ }
11
+ return window.pathsApi;
12
+ }
13
+ export function PathsContextProvider({ children }) {
14
+ const [lineages, setLineages] = useState([]);
15
+ const [activeLineageId, setActiveLineageId] = useState(null);
16
+ const [activeLineageName, setActiveLineageName] = useState(null);
17
+ const [identity, setIdentity] = useState(null);
18
+ const [isLoading, setIsLoading] = useState(true);
19
+ const [error, setError] = useState(null);
20
+ // Sync lineages and derive active lineage strictly from canonical isCurrent projection
21
+ const syncLineages = useCallback(async () => {
22
+ if (!isBridgeAvailable())
23
+ return [];
24
+ const res = await window.pathsApi.listLineages();
25
+ if (!res.success) {
26
+ throw new Error(res.error.message);
27
+ }
28
+ const list = res.data;
29
+ const current = list.find((item) => item.isCurrent);
30
+ setLineages(list);
31
+ setActiveLineageId(current?.id ?? null);
32
+ setActiveLineageName(current?.name ?? null);
33
+ return list;
34
+ }, []);
35
+ const syncIdentity = useCallback(async () => {
36
+ if (!isBridgeAvailable())
37
+ return null;
38
+ const res = await window.pathsApi.getIdentity();
39
+ if (!res.success)
40
+ return null;
41
+ setIdentity(res.data);
42
+ return res.data;
43
+ }, []);
44
+ const refresh = useCallback(async () => {
45
+ try {
46
+ setError(null);
47
+ await Promise.all([syncLineages(), syncIdentity()]);
48
+ }
49
+ catch (err) {
50
+ setError(err instanceof Error ? err.message : 'Failed to synchronize with engine.');
51
+ }
52
+ }, [syncLineages, syncIdentity]);
53
+ // Initial mount synchronization
54
+ useEffect(() => {
55
+ let mounted = true;
56
+ setIsLoading(true);
57
+ refresh().finally(() => {
58
+ if (!mounted)
59
+ return;
60
+ setIsLoading(false);
61
+ });
62
+ return () => {
63
+ mounted = false;
64
+ };
65
+ }, [refresh]);
66
+ // Live cross-adapter synchronization: window focus and polling heartbeat
67
+ useEffect(() => {
68
+ const handleFocus = () => {
69
+ void refresh();
70
+ };
71
+ window.addEventListener('focus', handleFocus);
72
+ const pollInterval = window.setInterval(() => {
73
+ void refresh();
74
+ }, 5000);
75
+ return () => {
76
+ window.removeEventListener('focus', handleFocus);
77
+ window.clearInterval(pollInterval);
78
+ };
79
+ }, [refresh]);
80
+ // Orchestrate switchLineage: continue_lineage -> refresh canonical projection
81
+ const switchLineage = useCallback(async (id) => {
82
+ const api = requireBridge();
83
+ setError(null);
84
+ const res = await api.continueLineage({ lineageId: id });
85
+ if (!res.success) {
86
+ setError(res.error.message);
87
+ throw new Error(res.error.message);
88
+ }
89
+ await syncLineages();
90
+ }, [syncLineages]);
91
+ // Orchestrate startLineage: start_lineage -> refresh canonical projection
92
+ const startLineage = useCallback(async (name) => {
93
+ const api = requireBridge();
94
+ setError(null);
95
+ const res = await api.startLineage({ name });
96
+ if (!res.success) {
97
+ setError(res.error.message);
98
+ throw new Error(res.error.message);
99
+ }
100
+ await syncLineages();
101
+ }, [syncLineages]);
102
+ const contextValue = {
103
+ lineages,
104
+ activeLineageId,
105
+ activeLineageName,
106
+ identity,
107
+ isLoading,
108
+ error,
109
+ switchLineage,
110
+ startLineage,
111
+ refresh,
112
+ };
113
+ return (_jsx(PathsContext.Provider, { value: contextValue, children: children }));
114
+ }
115
+ export function usePathsContext() {
116
+ const context = useContext(PathsContext);
117
+ if (!context) {
118
+ throw new Error('usePathsContext must be used within a PathsContextProvider.');
119
+ }
120
+ return context;
121
+ }
122
+ //# sourceMappingURL=paths-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths-context.js","sourceRoot":"","sources":["../../../../src/gui/renderer/context/paths-context.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export type Theme = 'dark' | 'light';
3
+ export interface ThemeContextValue {
4
+ theme: Theme;
5
+ toggleTheme: () => void;
6
+ }
7
+ export declare function ThemeProvider({ children }: {
8
+ children: React.ReactNode;
9
+ }): React.JSX.Element;
10
+ export declare function useTheme(): ThemeContextValue;
11
+ //# sourceMappingURL=theme-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-context.d.ts","sourceRoot":"","sources":["../../../../src/gui/renderer/context/theme-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkE,MAAM,OAAO,CAAC;AAEvF,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAkBD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmB5F;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect, useState, useMemo } from 'react';
3
+ const ThemeContext = createContext(null);
4
+ const STORAGE_KEY = 'paths-theme';
5
+ function getInitialTheme() {
6
+ try {
7
+ const saved = localStorage.getItem(STORAGE_KEY);
8
+ if (saved === 'light' || saved === 'dark') {
9
+ return saved;
10
+ }
11
+ }
12
+ catch {
13
+ // Fallback if localStorage is inaccessible
14
+ }
15
+ return 'dark';
16
+ }
17
+ export function ThemeProvider({ children }) {
18
+ const [theme, setTheme] = useState(getInitialTheme);
19
+ useEffect(() => {
20
+ document.documentElement.setAttribute('data-theme', theme);
21
+ try {
22
+ localStorage.setItem(STORAGE_KEY, theme);
23
+ }
24
+ catch {
25
+ // Invariant: ignore storage exceptions in sandboxed test runners
26
+ }
27
+ }, [theme]);
28
+ const toggleTheme = () => {
29
+ setTheme((prev) => (prev === 'dark' ? 'light' : 'dark'));
30
+ };
31
+ const value = useMemo(() => ({ theme, toggleTheme }), [theme]);
32
+ return _jsx(ThemeContext.Provider, { value: value, children: children });
33
+ }
34
+ export function useTheme() {
35
+ const context = useContext(ThemeContext);
36
+ if (!context) {
37
+ throw new Error('useTheme must be used within a ThemeProvider');
38
+ }
39
+ return context;
40
+ }
41
+ //# sourceMappingURL=theme-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-context.js","sourceRoot":"","sources":["../../../../src/gui/renderer/context/theme-context.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AASvF,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAEnE,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAiC;IACvE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAQ,eAAe,CAAC,CAAC;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/D,OAAO,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { IpcResponse } from '../../shared/errors.js';
2
+ export interface UseApiQueryResult<T> {
3
+ data: T | null;
4
+ isLoading: boolean;
5
+ error: string | null;
6
+ refresh: () => Promise<void>;
7
+ }
8
+ export declare function useApiQuery<T>(queryFn: () => Promise<IpcResponse<T>>, deps: readonly unknown[]): UseApiQueryResult<T>;
9
+ //# sourceMappingURL=use-api-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-api-query.d.ts","sourceRoot":"","sources":["../../../../src/gui/renderer/hooks/use-api-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,CAAC,EAC3B,OAAO,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACtC,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,iBAAiB,CAAC,CAAC,CAAC,CA+DtB"}