opentasks 0.0.5 → 0.0.7

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 (406) hide show
  1. package/README.md +108 -0
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +217 -8
  5. package/dist/cli.js.map +1 -1
  6. package/dist/client/client.d.ts +47 -1
  7. package/dist/client/client.d.ts.map +1 -1
  8. package/dist/client/client.js +71 -0
  9. package/dist/client/client.js.map +1 -1
  10. package/dist/client/index.d.ts +1 -1
  11. package/dist/client/index.d.ts.map +1 -1
  12. package/dist/config/schema.d.ts +232 -4
  13. package/dist/config/schema.d.ts.map +1 -1
  14. package/dist/config/schema.js +161 -7
  15. package/dist/config/schema.js.map +1 -1
  16. package/dist/context-files/context-files.d.ts +72 -0
  17. package/dist/context-files/context-files.d.ts.map +1 -0
  18. package/dist/context-files/context-files.js +145 -0
  19. package/dist/context-files/context-files.js.map +1 -0
  20. package/dist/context-files/index.d.ts +16 -0
  21. package/dist/context-files/index.d.ts.map +1 -0
  22. package/dist/context-files/index.js +14 -0
  23. package/dist/context-files/index.js.map +1 -0
  24. package/dist/context-files/resolver.d.ts +43 -0
  25. package/dist/context-files/resolver.d.ts.map +1 -0
  26. package/dist/context-files/resolver.js +127 -0
  27. package/dist/context-files/resolver.js.map +1 -0
  28. package/dist/context-files/types.d.ts +94 -0
  29. package/dist/context-files/types.d.ts.map +1 -0
  30. package/dist/context-files/types.js +10 -0
  31. package/dist/context-files/types.js.map +1 -0
  32. package/dist/context-files/watcher-integration.d.ts +47 -0
  33. package/dist/context-files/watcher-integration.d.ts.map +1 -0
  34. package/dist/context-files/watcher-integration.js +47 -0
  35. package/dist/context-files/watcher-integration.js.map +1 -0
  36. package/dist/core/merge-driver.d.ts +11 -2
  37. package/dist/core/merge-driver.d.ts.map +1 -1
  38. package/dist/core/merge-driver.js +46 -7
  39. package/dist/core/merge-driver.js.map +1 -1
  40. package/dist/core/worktree.js +1 -1
  41. package/dist/core/worktree.js.map +1 -1
  42. package/dist/daemon/index.d.ts +6 -4
  43. package/dist/daemon/index.d.ts.map +1 -1
  44. package/dist/daemon/index.js +3 -2
  45. package/dist/daemon/index.js.map +1 -1
  46. package/dist/daemon/ipc.d.ts.map +1 -1
  47. package/dist/daemon/ipc.js +12 -2
  48. package/dist/daemon/ipc.js.map +1 -1
  49. package/dist/daemon/lifecycle.d.ts.map +1 -1
  50. package/dist/daemon/lifecycle.js +143 -25
  51. package/dist/daemon/lifecycle.js.map +1 -1
  52. package/dist/daemon/location-state.d.ts +12 -6
  53. package/dist/daemon/location-state.d.ts.map +1 -1
  54. package/dist/daemon/location-state.js +50 -20
  55. package/dist/daemon/location-state.js.map +1 -1
  56. package/dist/daemon/methods/context-files.d.ts +14 -0
  57. package/dist/daemon/methods/context-files.d.ts.map +1 -0
  58. package/dist/daemon/methods/context-files.js +95 -0
  59. package/dist/daemon/methods/context-files.js.map +1 -0
  60. package/dist/daemon/methods/provider.d.ts.map +1 -1
  61. package/dist/daemon/methods/provider.js +15 -0
  62. package/dist/daemon/methods/provider.js.map +1 -1
  63. package/dist/daemon/methods/tools.d.ts +1 -1
  64. package/dist/daemon/methods/tools.d.ts.map +1 -1
  65. package/dist/daemon/methods/tools.js +3 -2
  66. package/dist/daemon/methods/tools.js.map +1 -1
  67. package/dist/daemon/sessionlog-linker.d.ts +71 -0
  68. package/dist/daemon/sessionlog-linker.d.ts.map +1 -0
  69. package/dist/daemon/sessionlog-linker.js +472 -0
  70. package/dist/daemon/sessionlog-linker.js.map +1 -0
  71. package/dist/daemon/sessionlog-watcher.d.ts +79 -0
  72. package/dist/daemon/sessionlog-watcher.d.ts.map +1 -0
  73. package/dist/daemon/sessionlog-watcher.js +289 -0
  74. package/dist/daemon/sessionlog-watcher.js.map +1 -0
  75. package/dist/graph/git-graph-syncer.js +1 -1
  76. package/dist/graph/git-graph-syncer.js.map +1 -1
  77. package/dist/graph/index.d.ts +1 -1
  78. package/dist/graph/index.d.ts.map +1 -1
  79. package/dist/graph/index.js.map +1 -1
  80. package/dist/graph/provider-store.d.ts +78 -4
  81. package/dist/graph/provider-store.d.ts.map +1 -1
  82. package/dist/graph/provider-store.js +579 -55
  83. package/dist/graph/provider-store.js.map +1 -1
  84. package/dist/graph/store.d.ts.map +1 -1
  85. package/dist/graph/store.js +3 -0
  86. package/dist/graph/store.js.map +1 -1
  87. package/dist/graph/types.d.ts +16 -0
  88. package/dist/graph/types.d.ts.map +1 -1
  89. package/dist/graph/types.js.map +1 -1
  90. package/dist/index.d.ts +4 -2
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +9 -3
  93. package/dist/index.js.map +1 -1
  94. package/dist/materialization/git-archive-store.js +2 -2
  95. package/dist/materialization/git-archive-store.js.map +1 -1
  96. package/dist/materialization/git-remote-store.js +2 -2
  97. package/dist/materialization/git-remote-store.js.map +1 -1
  98. package/dist/materialization/snapshot.js +4 -4
  99. package/dist/materialization/snapshot.js.map +1 -1
  100. package/dist/mcp/index.d.ts +8 -0
  101. package/dist/mcp/index.d.ts.map +1 -0
  102. package/dist/mcp/index.js +8 -0
  103. package/dist/mcp/index.js.map +1 -0
  104. package/dist/mcp/server.d.ts +39 -0
  105. package/dist/mcp/server.d.ts.map +1 -0
  106. package/dist/mcp/server.js +677 -0
  107. package/dist/mcp/server.js.map +1 -0
  108. package/dist/mcp/stdio.d.ts +14 -0
  109. package/dist/mcp/stdio.d.ts.map +1 -0
  110. package/dist/mcp/stdio.js +19 -0
  111. package/dist/mcp/stdio.js.map +1 -0
  112. package/dist/providers/beads.d.ts.map +1 -1
  113. package/dist/providers/beads.js +17 -1
  114. package/dist/providers/beads.js.map +1 -1
  115. package/dist/providers/claude-tasks-fs.d.ts +22 -0
  116. package/dist/providers/claude-tasks-fs.d.ts.map +1 -0
  117. package/dist/providers/claude-tasks-fs.js +158 -0
  118. package/dist/providers/claude-tasks-fs.js.map +1 -0
  119. package/dist/providers/claude-tasks.d.ts +13 -4
  120. package/dist/providers/claude-tasks.d.ts.map +1 -1
  121. package/dist/providers/claude-tasks.js +318 -5
  122. package/dist/providers/claude-tasks.js.map +1 -1
  123. package/dist/providers/from-config.d.ts +3 -0
  124. package/dist/providers/from-config.d.ts.map +1 -1
  125. package/dist/providers/from-config.js +64 -17
  126. package/dist/providers/from-config.js.map +1 -1
  127. package/dist/providers/global.d.ts.map +1 -1
  128. package/dist/providers/global.js +5 -0
  129. package/dist/providers/global.js.map +1 -1
  130. package/dist/providers/index.d.ts +9 -4
  131. package/dist/providers/index.d.ts.map +1 -1
  132. package/dist/providers/index.js +10 -3
  133. package/dist/providers/index.js.map +1 -1
  134. package/dist/providers/map-client-factory.d.ts +55 -0
  135. package/dist/providers/map-client-factory.d.ts.map +1 -0
  136. package/dist/providers/map-client-factory.js +123 -0
  137. package/dist/providers/map-client-factory.js.map +1 -0
  138. package/dist/providers/map-event-bridge.d.ts +146 -0
  139. package/dist/providers/map-event-bridge.d.ts.map +1 -0
  140. package/dist/providers/map-event-bridge.js +208 -0
  141. package/dist/providers/map-event-bridge.js.map +1 -0
  142. package/dist/providers/map.d.ts +115 -0
  143. package/dist/providers/map.d.ts.map +1 -0
  144. package/dist/providers/map.js +381 -0
  145. package/dist/providers/map.js.map +1 -0
  146. package/dist/providers/materialization.d.ts +23 -5
  147. package/dist/providers/materialization.d.ts.map +1 -1
  148. package/dist/providers/materialization.js +95 -4
  149. package/dist/providers/materialization.js.map +1 -1
  150. package/dist/providers/native.d.ts.map +1 -1
  151. package/dist/providers/native.js +5 -0
  152. package/dist/providers/native.js.map +1 -1
  153. package/dist/providers/sessionlog.d.ts +81 -0
  154. package/dist/providers/sessionlog.d.ts.map +1 -0
  155. package/dist/providers/sessionlog.js +478 -0
  156. package/dist/providers/sessionlog.js.map +1 -0
  157. package/dist/providers/sudocode.d.ts.map +1 -1
  158. package/dist/providers/sudocode.js +17 -1
  159. package/dist/providers/sudocode.js.map +1 -1
  160. package/dist/providers/traits/Reconcilable.d.ts +57 -0
  161. package/dist/providers/traits/Reconcilable.d.ts.map +1 -0
  162. package/dist/providers/traits/Reconcilable.js +18 -0
  163. package/dist/providers/traits/Reconcilable.js.map +1 -0
  164. package/dist/providers/traits/index.d.ts +2 -0
  165. package/dist/providers/traits/index.d.ts.map +1 -1
  166. package/dist/providers/traits/index.js +1 -0
  167. package/dist/providers/traits/index.js.map +1 -1
  168. package/dist/providers/types.d.ts +63 -0
  169. package/dist/providers/types.d.ts.map +1 -1
  170. package/dist/providers/types.js +22 -0
  171. package/dist/providers/types.js.map +1 -1
  172. package/dist/schema/edges.d.ts +3 -3
  173. package/dist/schema/edges.d.ts.map +1 -1
  174. package/dist/sessionlog/agent/agents/claude-code.d.ts +76 -0
  175. package/dist/sessionlog/agent/agents/claude-code.d.ts.map +1 -0
  176. package/dist/sessionlog/agent/agents/claude-code.js +759 -0
  177. package/dist/sessionlog/agent/agents/claude-code.js.map +1 -0
  178. package/dist/sessionlog/agent/agents/cursor.d.ts +35 -0
  179. package/dist/sessionlog/agent/agents/cursor.d.ts.map +1 -0
  180. package/dist/sessionlog/agent/agents/cursor.js +294 -0
  181. package/dist/sessionlog/agent/agents/cursor.js.map +1 -0
  182. package/dist/sessionlog/agent/agents/gemini-cli.d.ts +62 -0
  183. package/dist/sessionlog/agent/agents/gemini-cli.d.ts.map +1 -0
  184. package/dist/sessionlog/agent/agents/gemini-cli.js +462 -0
  185. package/dist/sessionlog/agent/agents/gemini-cli.js.map +1 -0
  186. package/dist/sessionlog/agent/agents/opencode.d.ts +100 -0
  187. package/dist/sessionlog/agent/agents/opencode.d.ts.map +1 -0
  188. package/dist/sessionlog/agent/agents/opencode.js +423 -0
  189. package/dist/sessionlog/agent/agents/opencode.js.map +1 -0
  190. package/dist/sessionlog/agent/registry.d.ts +54 -0
  191. package/dist/sessionlog/agent/registry.d.ts.map +1 -0
  192. package/dist/sessionlog/agent/registry.js +123 -0
  193. package/dist/sessionlog/agent/registry.js.map +1 -0
  194. package/dist/sessionlog/agent/session-types.d.ts +45 -0
  195. package/dist/sessionlog/agent/session-types.d.ts.map +1 -0
  196. package/dist/sessionlog/agent/session-types.js +50 -0
  197. package/dist/sessionlog/agent/session-types.js.map +1 -0
  198. package/dist/sessionlog/agent/types.d.ts +126 -0
  199. package/dist/sessionlog/agent/types.d.ts.map +1 -0
  200. package/dist/sessionlog/agent/types.js +39 -0
  201. package/dist/sessionlog/agent/types.js.map +1 -0
  202. package/dist/sessionlog/commands/clean.d.ts +40 -0
  203. package/dist/sessionlog/commands/clean.d.ts.map +1 -0
  204. package/dist/sessionlog/commands/clean.js +105 -0
  205. package/dist/sessionlog/commands/clean.js.map +1 -0
  206. package/dist/sessionlog/commands/disable.d.ts +23 -0
  207. package/dist/sessionlog/commands/disable.d.ts.map +1 -0
  208. package/dist/sessionlog/commands/disable.js +57 -0
  209. package/dist/sessionlog/commands/disable.js.map +1 -0
  210. package/dist/sessionlog/commands/doctor.d.ts +43 -0
  211. package/dist/sessionlog/commands/doctor.d.ts.map +1 -0
  212. package/dist/sessionlog/commands/doctor.js +97 -0
  213. package/dist/sessionlog/commands/doctor.js.map +1 -0
  214. package/dist/sessionlog/commands/enable.d.ts +31 -0
  215. package/dist/sessionlog/commands/enable.d.ts.map +1 -0
  216. package/dist/sessionlog/commands/enable.js +102 -0
  217. package/dist/sessionlog/commands/enable.js.map +1 -0
  218. package/dist/sessionlog/commands/explain.d.ts +69 -0
  219. package/dist/sessionlog/commands/explain.d.ts.map +1 -0
  220. package/dist/sessionlog/commands/explain.js +185 -0
  221. package/dist/sessionlog/commands/explain.js.map +1 -0
  222. package/dist/sessionlog/commands/reset.d.ts +23 -0
  223. package/dist/sessionlog/commands/reset.d.ts.map +1 -0
  224. package/dist/sessionlog/commands/reset.js +68 -0
  225. package/dist/sessionlog/commands/reset.js.map +1 -0
  226. package/dist/sessionlog/commands/resume.d.ts +42 -0
  227. package/dist/sessionlog/commands/resume.d.ts.map +1 -0
  228. package/dist/sessionlog/commands/resume.js +134 -0
  229. package/dist/sessionlog/commands/resume.js.map +1 -0
  230. package/dist/sessionlog/commands/rewind.d.ts +40 -0
  231. package/dist/sessionlog/commands/rewind.d.ts.map +1 -0
  232. package/dist/sessionlog/commands/rewind.js +155 -0
  233. package/dist/sessionlog/commands/rewind.js.map +1 -0
  234. package/dist/sessionlog/commands/status.d.ts +54 -0
  235. package/dist/sessionlog/commands/status.d.ts.map +1 -0
  236. package/dist/sessionlog/commands/status.js +95 -0
  237. package/dist/sessionlog/commands/status.js.map +1 -0
  238. package/dist/sessionlog/config.d.ts +40 -0
  239. package/dist/sessionlog/config.d.ts.map +1 -0
  240. package/dist/sessionlog/config.js +126 -0
  241. package/dist/sessionlog/config.js.map +1 -0
  242. package/dist/sessionlog/git-operations.d.ts +173 -0
  243. package/dist/sessionlog/git-operations.d.ts.map +1 -0
  244. package/dist/sessionlog/git-operations.js +399 -0
  245. package/dist/sessionlog/git-operations.js.map +1 -0
  246. package/dist/sessionlog/hooks/git-hooks.d.ts +22 -0
  247. package/dist/sessionlog/hooks/git-hooks.d.ts.map +1 -0
  248. package/dist/sessionlog/hooks/git-hooks.js +145 -0
  249. package/dist/sessionlog/hooks/git-hooks.js.map +1 -0
  250. package/dist/sessionlog/hooks/lifecycle.d.ts +21 -0
  251. package/dist/sessionlog/hooks/lifecycle.d.ts.map +1 -0
  252. package/dist/sessionlog/hooks/lifecycle.js +179 -0
  253. package/dist/sessionlog/hooks/lifecycle.js.map +1 -0
  254. package/dist/sessionlog/index.d.ts +69 -0
  255. package/dist/sessionlog/index.d.ts.map +1 -0
  256. package/dist/sessionlog/index.js +154 -0
  257. package/dist/sessionlog/index.js.map +1 -0
  258. package/dist/sessionlog/security/redaction.d.ts +35 -0
  259. package/dist/sessionlog/security/redaction.d.ts.map +1 -0
  260. package/dist/sessionlog/security/redaction.js +221 -0
  261. package/dist/sessionlog/security/redaction.js.map +1 -0
  262. package/dist/sessionlog/session/state-machine.d.ts +90 -0
  263. package/dist/sessionlog/session/state-machine.d.ts.map +1 -0
  264. package/dist/sessionlog/session/state-machine.js +347 -0
  265. package/dist/sessionlog/session/state-machine.js.map +1 -0
  266. package/dist/sessionlog/store/checkpoint-store.d.ts +47 -0
  267. package/dist/sessionlog/store/checkpoint-store.d.ts.map +1 -0
  268. package/dist/sessionlog/store/checkpoint-store.js +309 -0
  269. package/dist/sessionlog/store/checkpoint-store.js.map +1 -0
  270. package/dist/sessionlog/store/native-store.d.ts +21 -0
  271. package/dist/sessionlog/store/native-store.d.ts.map +1 -0
  272. package/dist/sessionlog/store/native-store.js +162 -0
  273. package/dist/sessionlog/store/native-store.js.map +1 -0
  274. package/dist/sessionlog/store/provider-types.d.ts +78 -0
  275. package/dist/sessionlog/store/provider-types.d.ts.map +1 -0
  276. package/dist/sessionlog/store/provider-types.js +12 -0
  277. package/dist/sessionlog/store/provider-types.js.map +1 -0
  278. package/dist/sessionlog/store/session-store.d.ts +28 -0
  279. package/dist/sessionlog/store/session-store.d.ts.map +1 -0
  280. package/dist/sessionlog/store/session-store.js +187 -0
  281. package/dist/sessionlog/store/session-store.js.map +1 -0
  282. package/dist/sessionlog/strategy/attribution.d.ts +39 -0
  283. package/dist/sessionlog/strategy/attribution.d.ts.map +1 -0
  284. package/dist/sessionlog/strategy/attribution.js +227 -0
  285. package/dist/sessionlog/strategy/attribution.js.map +1 -0
  286. package/dist/sessionlog/strategy/common.d.ts +60 -0
  287. package/dist/sessionlog/strategy/common.d.ts.map +1 -0
  288. package/dist/sessionlog/strategy/common.js +162 -0
  289. package/dist/sessionlog/strategy/common.js.map +1 -0
  290. package/dist/sessionlog/strategy/content-overlap.d.ts +33 -0
  291. package/dist/sessionlog/strategy/content-overlap.d.ts.map +1 -0
  292. package/dist/sessionlog/strategy/content-overlap.js +168 -0
  293. package/dist/sessionlog/strategy/content-overlap.js.map +1 -0
  294. package/dist/sessionlog/strategy/manual-commit.d.ts +35 -0
  295. package/dist/sessionlog/strategy/manual-commit.d.ts.map +1 -0
  296. package/dist/sessionlog/strategy/manual-commit.js +732 -0
  297. package/dist/sessionlog/strategy/manual-commit.js.map +1 -0
  298. package/dist/sessionlog/strategy/types.d.ts +163 -0
  299. package/dist/sessionlog/strategy/types.d.ts.map +1 -0
  300. package/dist/sessionlog/strategy/types.js +49 -0
  301. package/dist/sessionlog/strategy/types.js.map +1 -0
  302. package/dist/sessionlog/summarize/claude-generator.d.ts +25 -0
  303. package/dist/sessionlog/summarize/claude-generator.d.ts.map +1 -0
  304. package/dist/sessionlog/summarize/claude-generator.js +87 -0
  305. package/dist/sessionlog/summarize/claude-generator.js.map +1 -0
  306. package/dist/sessionlog/summarize/summarize.d.ts +52 -0
  307. package/dist/sessionlog/summarize/summarize.d.ts.map +1 -0
  308. package/dist/sessionlog/summarize/summarize.js +335 -0
  309. package/dist/sessionlog/summarize/summarize.js.map +1 -0
  310. package/dist/sessionlog/types.d.ts +298 -0
  311. package/dist/sessionlog/types.d.ts.map +1 -0
  312. package/dist/sessionlog/types.js +104 -0
  313. package/dist/sessionlog/types.js.map +1 -0
  314. package/dist/sessionlog/utils/chunk-files.d.ts +25 -0
  315. package/dist/sessionlog/utils/chunk-files.d.ts.map +1 -0
  316. package/dist/sessionlog/utils/chunk-files.js +47 -0
  317. package/dist/sessionlog/utils/chunk-files.js.map +1 -0
  318. package/dist/sessionlog/utils/commit-message.d.ts +11 -0
  319. package/dist/sessionlog/utils/commit-message.d.ts.map +1 -0
  320. package/dist/sessionlog/utils/commit-message.js +54 -0
  321. package/dist/sessionlog/utils/commit-message.js.map +1 -0
  322. package/dist/sessionlog/utils/detect-agent.d.ts +19 -0
  323. package/dist/sessionlog/utils/detect-agent.d.ts.map +1 -0
  324. package/dist/sessionlog/utils/detect-agent.js +34 -0
  325. package/dist/sessionlog/utils/detect-agent.js.map +1 -0
  326. package/dist/sessionlog/utils/hook-managers.d.ts +24 -0
  327. package/dist/sessionlog/utils/hook-managers.d.ts.map +1 -0
  328. package/dist/sessionlog/utils/hook-managers.js +87 -0
  329. package/dist/sessionlog/utils/hook-managers.js.map +1 -0
  330. package/dist/sessionlog/utils/ide-tags.d.ts +12 -0
  331. package/dist/sessionlog/utils/ide-tags.d.ts.map +1 -0
  332. package/dist/sessionlog/utils/ide-tags.js +30 -0
  333. package/dist/sessionlog/utils/ide-tags.js.map +1 -0
  334. package/dist/sessionlog/utils/paths.d.ts +32 -0
  335. package/dist/sessionlog/utils/paths.d.ts.map +1 -0
  336. package/dist/sessionlog/utils/paths.js +55 -0
  337. package/dist/sessionlog/utils/paths.js.map +1 -0
  338. package/dist/sessionlog/utils/preview-rewind.d.ts +23 -0
  339. package/dist/sessionlog/utils/preview-rewind.d.ts.map +1 -0
  340. package/dist/sessionlog/utils/preview-rewind.js +63 -0
  341. package/dist/sessionlog/utils/preview-rewind.js.map +1 -0
  342. package/dist/sessionlog/utils/rewind-conflict.d.ts +52 -0
  343. package/dist/sessionlog/utils/rewind-conflict.d.ts.map +1 -0
  344. package/dist/sessionlog/utils/rewind-conflict.js +79 -0
  345. package/dist/sessionlog/utils/rewind-conflict.js.map +1 -0
  346. package/dist/sessionlog/utils/shadow-branch.d.ts +53 -0
  347. package/dist/sessionlog/utils/shadow-branch.d.ts.map +1 -0
  348. package/dist/sessionlog/utils/shadow-branch.js +97 -0
  349. package/dist/sessionlog/utils/shadow-branch.js.map +1 -0
  350. package/dist/sessionlog/utils/string-utils.d.ts +24 -0
  351. package/dist/sessionlog/utils/string-utils.d.ts.map +1 -0
  352. package/dist/sessionlog/utils/string-utils.js +47 -0
  353. package/dist/sessionlog/utils/string-utils.js.map +1 -0
  354. package/dist/sessionlog/utils/todo-extract.d.ts +52 -0
  355. package/dist/sessionlog/utils/todo-extract.d.ts.map +1 -0
  356. package/dist/sessionlog/utils/todo-extract.js +167 -0
  357. package/dist/sessionlog/utils/todo-extract.js.map +1 -0
  358. package/dist/sessionlog/utils/trailers.d.ts +36 -0
  359. package/dist/sessionlog/utils/trailers.d.ts.map +1 -0
  360. package/dist/sessionlog/utils/trailers.js +149 -0
  361. package/dist/sessionlog/utils/trailers.js.map +1 -0
  362. package/dist/sessionlog/utils/transcript-parse.d.ts +57 -0
  363. package/dist/sessionlog/utils/transcript-parse.d.ts.map +1 -0
  364. package/dist/sessionlog/utils/transcript-parse.js +126 -0
  365. package/dist/sessionlog/utils/transcript-parse.js.map +1 -0
  366. package/dist/sessionlog/utils/transcript-timestamp.d.ts +22 -0
  367. package/dist/sessionlog/utils/transcript-timestamp.d.ts.map +1 -0
  368. package/dist/sessionlog/utils/transcript-timestamp.js +56 -0
  369. package/dist/sessionlog/utils/transcript-timestamp.js.map +1 -0
  370. package/dist/sessionlog/utils/tree-ops.d.ts +47 -0
  371. package/dist/sessionlog/utils/tree-ops.d.ts.map +1 -0
  372. package/dist/sessionlog/utils/tree-ops.js +145 -0
  373. package/dist/sessionlog/utils/tree-ops.js.map +1 -0
  374. package/dist/sessionlog/utils/tty.d.ts +25 -0
  375. package/dist/sessionlog/utils/tty.d.ts.map +1 -0
  376. package/dist/sessionlog/utils/tty.js +70 -0
  377. package/dist/sessionlog/utils/tty.js.map +1 -0
  378. package/dist/sessionlog/utils/validation.d.ts +31 -0
  379. package/dist/sessionlog/utils/validation.d.ts.map +1 -0
  380. package/dist/sessionlog/utils/validation.js +59 -0
  381. package/dist/sessionlog/utils/validation.js.map +1 -0
  382. package/dist/sessionlog/utils/worktree.d.ts +16 -0
  383. package/dist/sessionlog/utils/worktree.d.ts.map +1 -0
  384. package/dist/sessionlog/utils/worktree.js +50 -0
  385. package/dist/sessionlog/utils/worktree.js.map +1 -0
  386. package/dist/storage/sqlite-schema.d.ts.map +1 -1
  387. package/dist/storage/sqlite-schema.js +2 -0
  388. package/dist/storage/sqlite-schema.js.map +1 -1
  389. package/dist/storage/sqlite.d.ts.map +1 -1
  390. package/dist/storage/sqlite.js +18 -4
  391. package/dist/storage/sqlite.js.map +1 -1
  392. package/dist/tools/index.d.ts +1 -1
  393. package/dist/tools/index.d.ts.map +1 -1
  394. package/dist/tools/index.js.map +1 -1
  395. package/dist/tools/query.d.ts +2 -1
  396. package/dist/tools/query.d.ts.map +1 -1
  397. package/dist/tools/query.js +217 -7
  398. package/dist/tools/query.js.map +1 -1
  399. package/dist/tools/types.d.ts +57 -0
  400. package/dist/tools/types.d.ts.map +1 -1
  401. package/dist/tools/types.js.map +1 -1
  402. package/dist/tracking/transcript-extractor.d.ts +3 -3
  403. package/dist/tracking/transcript-extractor.d.ts.map +1 -1
  404. package/dist/tracking/transcript-extractor.js +1 -1
  405. package/dist/tracking/transcript-extractor.js.map +1 -1
  406. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-files.js","sourceRoot":"","sources":["../../src/context-files/context-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Context Files
3
+ *
4
+ * Support for context nodes that reference codebase files (code, markdown, etc.).
5
+ * Context-file nodes are lightweight pointers with versioning metadata (commit SHA,
6
+ * content hash). File content is resolved on demand, not stored in the graph.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ export type { ContextFileMetadata, ContextFileType, ContextFileResolution, DriftResult, CreateContextFileInput, SyncContextFileOptions, } from './types.js';
11
+ export { contentHash, getHeadCommit, readFileFromWorktree, readFileAtCommit, resolveContextFile, fileExists, fileExistsAtCommit, inferFileType, } from './resolver.js';
12
+ export type { ContextFileManager } from './context-files.js';
13
+ export { isContextFileNode, getContextFileMetadata, createContextFileManager, } from './context-files.js';
14
+ export type { ContextFileWatcherOptions } from './watcher-integration.js';
15
+ export { createContextFileChangeHandler } from './watcher-integration.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context-files/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Context Files
3
+ *
4
+ * Support for context nodes that reference codebase files (code, markdown, etc.).
5
+ * Context-file nodes are lightweight pointers with versioning metadata (commit SHA,
6
+ * content hash). File content is resolved on demand, not stored in the graph.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ // Resolver
11
+ export { contentHash, getHeadCommit, readFileFromWorktree, readFileAtCommit, resolveContextFile, fileExists, fileExistsAtCommit, inferFileType, } from './resolver.js';
12
+ export { isContextFileNode, getContextFileMetadata, createContextFileManager, } from './context-files.js';
13
+ export { createContextFileChangeHandler } from './watcher-integration.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context-files/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,WAAW;AACX,OAAO,EACL,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,aAAa,GACd,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Context Files — Resolver
3
+ *
4
+ * Resolves file content from the working tree or at a specific git commit.
5
+ * Computes content hashes for drift detection.
6
+ */
7
+ import type { ContextFileResolution, ContextFileType } from './types.js';
8
+ /**
9
+ * Compute SHA-256 hex hash of content.
10
+ */
11
+ export declare function contentHash(content: string): string;
12
+ /**
13
+ * Get the current HEAD commit SHA for a repository.
14
+ */
15
+ export declare function getHeadCommit(repoRoot: string): Promise<string>;
16
+ /**
17
+ * Read file content from the working tree.
18
+ */
19
+ export declare function readFileFromWorktree(repoRoot: string, filePath: string): Promise<string>;
20
+ /**
21
+ * Read file content at a specific git commit via `git show <sha>:<path>`.
22
+ */
23
+ export declare function readFileAtCommit(repoRoot: string, filePath: string, commit: string): Promise<string>;
24
+ /**
25
+ * Resolve a context file — read content and compute hashes.
26
+ *
27
+ * If `atCommit` is provided, reads the file at that specific commit.
28
+ * Otherwise reads from the working tree and uses HEAD as the commit.
29
+ */
30
+ export declare function resolveContextFile(repoRoot: string, filePath: string, capturedHash?: string, atCommit?: string): Promise<ContextFileResolution>;
31
+ /**
32
+ * Check if a file exists in the working tree.
33
+ */
34
+ export declare function fileExists(repoRoot: string, filePath: string): Promise<boolean>;
35
+ /**
36
+ * Check if a file exists at a specific git commit.
37
+ */
38
+ export declare function fileExistsAtCommit(repoRoot: string, filePath: string, commit: string): Promise<boolean>;
39
+ /**
40
+ * Infer the context-file type from a file path.
41
+ */
42
+ export declare function inferFileType(filePath: string): ContextFileType;
43
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/context-files/resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAQzE;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKrE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAsBhC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAuB/D"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Context Files — Resolver
3
+ *
4
+ * Resolves file content from the working tree or at a specific git commit.
5
+ * Computes content hashes for drift detection.
6
+ */
7
+ import { createHash } from 'node:crypto';
8
+ import { execFile } from 'node:child_process';
9
+ import { readFile } from 'node:fs/promises';
10
+ import * as path from 'node:path';
11
+ import { promisify } from 'node:util';
12
+ const execFileAsync = promisify(execFile);
13
+ // ============================================================================
14
+ // Public API
15
+ // ============================================================================
16
+ /**
17
+ * Compute SHA-256 hex hash of content.
18
+ */
19
+ export function contentHash(content) {
20
+ return createHash('sha256').update(content, 'utf8').digest('hex');
21
+ }
22
+ /**
23
+ * Get the current HEAD commit SHA for a repository.
24
+ */
25
+ export async function getHeadCommit(repoRoot) {
26
+ const { stdout } = await execFileAsync('git', ['rev-parse', 'HEAD'], {
27
+ cwd: repoRoot,
28
+ });
29
+ return stdout.trim();
30
+ }
31
+ /**
32
+ * Read file content from the working tree.
33
+ */
34
+ export async function readFileFromWorktree(repoRoot, filePath) {
35
+ const absolute = path.resolve(repoRoot, filePath);
36
+ return readFile(absolute, 'utf8');
37
+ }
38
+ /**
39
+ * Read file content at a specific git commit via `git show <sha>:<path>`.
40
+ */
41
+ export async function readFileAtCommit(repoRoot, filePath, commit) {
42
+ // Normalize to forward-slash for git
43
+ const gitPath = filePath.split(path.sep).join('/');
44
+ const { stdout } = await execFileAsync('git', ['show', `${commit}:${gitPath}`], {
45
+ cwd: repoRoot,
46
+ maxBuffer: 10 * 1024 * 1024, // 10 MB
47
+ });
48
+ return stdout;
49
+ }
50
+ /**
51
+ * Resolve a context file — read content and compute hashes.
52
+ *
53
+ * If `atCommit` is provided, reads the file at that specific commit.
54
+ * Otherwise reads from the working tree and uses HEAD as the commit.
55
+ */
56
+ export async function resolveContextFile(repoRoot, filePath, capturedHash, atCommit) {
57
+ let content;
58
+ let commit;
59
+ if (atCommit) {
60
+ content = await readFileAtCommit(repoRoot, filePath, atCommit);
61
+ commit = atCommit;
62
+ }
63
+ else {
64
+ content = await readFileFromWorktree(repoRoot, filePath);
65
+ commit = await getHeadCommit(repoRoot);
66
+ }
67
+ const hash = contentHash(content);
68
+ const drifted = capturedHash !== undefined && hash !== capturedHash;
69
+ return {
70
+ content,
71
+ commit,
72
+ contentHash: hash,
73
+ drifted,
74
+ filePath,
75
+ };
76
+ }
77
+ /**
78
+ * Check if a file exists in the working tree.
79
+ */
80
+ export async function fileExists(repoRoot, filePath) {
81
+ try {
82
+ await readFile(path.resolve(repoRoot, filePath));
83
+ return true;
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ /**
90
+ * Check if a file exists at a specific git commit.
91
+ */
92
+ export async function fileExistsAtCommit(repoRoot, filePath, commit) {
93
+ try {
94
+ const gitPath = filePath.split(path.sep).join('/');
95
+ await execFileAsync('git', ['cat-file', '-e', `${commit}:${gitPath}`], {
96
+ cwd: repoRoot,
97
+ });
98
+ return true;
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ }
104
+ /**
105
+ * Infer the context-file type from a file path.
106
+ */
107
+ export function inferFileType(filePath) {
108
+ const ext = path.extname(filePath).toLowerCase();
109
+ if (ext === '.md' || ext === '.mdx') {
110
+ return 'markdown';
111
+ }
112
+ const codeExtensions = new Set([
113
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
114
+ '.py', '.rb', '.go', '.rs', '.java', '.kt', '.kts',
115
+ '.c', '.cpp', '.cc', '.h', '.hpp',
116
+ '.cs', '.swift', '.scala', '.clj', '.cljs',
117
+ '.sh', '.bash', '.zsh', '.fish',
118
+ '.sql', '.graphql', '.gql',
119
+ '.yaml', '.yml', '.toml', '.json', '.jsonl',
120
+ '.html', '.css', '.scss', '.less', '.vue', '.svelte',
121
+ ]);
122
+ if (codeExtensions.has(ext)) {
123
+ return 'code';
124
+ }
125
+ return 'text';
126
+ }
127
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/context-files/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Context Files — Types
3
+ *
4
+ * Metadata schema for context nodes that reference files in the codebase.
5
+ * A context-file node stores a lightweight pointer to a repo file plus
6
+ * versioning info (commit SHA, content hash). The actual file content is
7
+ * resolved on access rather than duplicated into the graph store.
8
+ */
9
+ /**
10
+ * Metadata fields added to a context node that references a codebase file.
11
+ *
12
+ * These live inside `node.metadata` alongside any other metadata.
13
+ */
14
+ export interface ContextFileMetadata {
15
+ /** Marker — distinguishes context-file nodes from plain context nodes */
16
+ context_file: true;
17
+ /** Repo-relative path to the file (e.g. "src/auth/middleware.ts", "docs/arch.md") */
18
+ context_file_path: string;
19
+ /**
20
+ * File type hint.
21
+ * - "markdown" for .md files
22
+ * - "code" for source files
23
+ * - "text" for other text files
24
+ */
25
+ context_file_type: ContextFileType;
26
+ /** Git commit SHA when the file was last synced/captured */
27
+ context_file_commit?: string;
28
+ /** SHA-256 hash of the file content at the synced commit */
29
+ context_file_content_hash?: string;
30
+ /** ISO 8601 timestamp of last sync from file */
31
+ context_file_synced_at?: string;
32
+ }
33
+ /**
34
+ * File type classification
35
+ */
36
+ export type ContextFileType = 'markdown' | 'code' | 'text';
37
+ /**
38
+ * Result of resolving a context file's content.
39
+ */
40
+ export interface ContextFileResolution {
41
+ /** The resolved file content */
42
+ content: string;
43
+ /** Commit SHA the content was read from (HEAD if worktree) */
44
+ commit: string;
45
+ /** SHA-256 of the resolved content */
46
+ contentHash: string;
47
+ /** Whether content differs from what was captured (hash mismatch) */
48
+ drifted: boolean;
49
+ /** Repo-relative file path */
50
+ filePath: string;
51
+ }
52
+ /**
53
+ * Drift detection result for a context-file node.
54
+ */
55
+ export interface DriftResult {
56
+ /** Whether the file has changed since the node was synced */
57
+ drifted: boolean;
58
+ /** Current commit SHA (HEAD) */
59
+ currentCommit: string;
60
+ /** Commit SHA stored in the node */
61
+ capturedCommit?: string;
62
+ /** Current content hash */
63
+ currentHash: string;
64
+ /** Content hash stored in the node */
65
+ capturedHash?: string;
66
+ }
67
+ /**
68
+ * Input for creating a context-file node.
69
+ */
70
+ export interface CreateContextFileInput {
71
+ /** Repo-relative file path */
72
+ filePath: string;
73
+ /**
74
+ * Optional title. If omitted, derived from the file path
75
+ * (e.g. "src/auth/middleware.ts" → "auth/middleware.ts")
76
+ */
77
+ title?: string;
78
+ /** Optional tags */
79
+ tags?: string[];
80
+ /** Optional priority */
81
+ priority?: number;
82
+ /**
83
+ * Pin to a specific commit SHA. If omitted, uses current HEAD.
84
+ */
85
+ commit?: string;
86
+ }
87
+ /**
88
+ * Options for syncing a context-file node with the current file state.
89
+ */
90
+ export interface SyncContextFileOptions {
91
+ /** Force sync even if content hash hasn't changed */
92
+ force?: boolean;
93
+ }
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/context-files/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,YAAY,EAAE,IAAI,CAAC;IAEnB,qFAAqF;IACrF,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,iBAAiB,EAAE,eAAe,CAAC;IAEnC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,4DAA4D;IAC5D,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,gDAAgD;IAChD,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAM3D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAEhB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IAEpB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IAEjB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;IAEjB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IAEtB,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Context Files — Types
3
+ *
4
+ * Metadata schema for context nodes that reference files in the codebase.
5
+ * A context-file node stores a lightweight pointer to a repo file plus
6
+ * versioning info (commit SHA, content hash). The actual file content is
7
+ * resolved on access rather than duplicated into the graph store.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/context-files/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Context Files — Watcher Integration
3
+ *
4
+ * Bridges the daemon file watcher with context-file nodes.
5
+ * When a watched file changes, marks the corresponding context-file node
6
+ * as potentially drifted so callers can decide whether to re-sync.
7
+ */
8
+ import type { FileChangeEvent, ChangeHandler } from '../daemon/watcher.js';
9
+ import type { GraphStore } from '../graph/store.js';
10
+ import type { Node } from '../schema/index.js';
11
+ /**
12
+ * Options for the context-file watcher handler.
13
+ */
14
+ export interface ContextFileWatcherOptions {
15
+ /** The graph store to query for context-file nodes */
16
+ store: GraphStore;
17
+ /**
18
+ * Root of the repository (to compute repo-relative paths).
19
+ * The watcher emits absolute paths; we compare against
20
+ * `context_file_path` which is repo-relative.
21
+ */
22
+ repoRoot: string;
23
+ /**
24
+ * Callback invoked when a context-file node's source file changes.
25
+ * Receives the node and the change event.
26
+ */
27
+ onDrift?: (node: Node, event: FileChangeEvent) => void;
28
+ /**
29
+ * Auto-sync context-file nodes when their source file changes.
30
+ * Default: false (only fires onDrift callback).
31
+ */
32
+ autoSync?: boolean;
33
+ }
34
+ /**
35
+ * Create a ChangeHandler that reacts to context-file source changes.
36
+ *
37
+ * Wire this into the daemon file watcher:
38
+ * ```ts
39
+ * const handler = createContextFileChangeHandler({ store, repoRoot });
40
+ * fileWatcher.onchange(handler);
41
+ * ```
42
+ *
43
+ * The handler scans context-file nodes for any whose `context_file_path`
44
+ * matches the changed file, then fires the onDrift callback.
45
+ */
46
+ export declare function createContextFileChangeHandler(options: ContextFileWatcherOptions): ChangeHandler;
47
+ //# sourceMappingURL=watcher-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher-integration.d.ts","sourceRoot":"","sources":["../../src/context-files/watcher-integration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAI/C;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,KAAK,EAAE,UAAU,CAAC;IAElB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,yBAAyB,GACjC,aAAa,CA0Bf"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Context Files — Watcher Integration
3
+ *
4
+ * Bridges the daemon file watcher with context-file nodes.
5
+ * When a watched file changes, marks the corresponding context-file node
6
+ * as potentially drifted so callers can decide whether to re-sync.
7
+ */
8
+ import { isContextFileNode, getContextFileMetadata } from './context-files.js';
9
+ import * as path from 'node:path';
10
+ /**
11
+ * Create a ChangeHandler that reacts to context-file source changes.
12
+ *
13
+ * Wire this into the daemon file watcher:
14
+ * ```ts
15
+ * const handler = createContextFileChangeHandler({ store, repoRoot });
16
+ * fileWatcher.onchange(handler);
17
+ * ```
18
+ *
19
+ * The handler scans context-file nodes for any whose `context_file_path`
20
+ * matches the changed file, then fires the onDrift callback.
21
+ */
22
+ export function createContextFileChangeHandler(options) {
23
+ const { store, repoRoot, onDrift } = options;
24
+ return async (event) => {
25
+ // Only react to file additions and changes (not unlinks for now)
26
+ if (event.type === 'unlink')
27
+ return;
28
+ // Compute repo-relative path from the absolute watcher path
29
+ const repoRelative = path.relative(repoRoot, event.path);
30
+ // Find context-file nodes that reference this file
31
+ const contextNodes = await store.query.nodes({ type: 'context' });
32
+ for (const node of contextNodes) {
33
+ if (!isContextFileNode(node))
34
+ continue;
35
+ const meta = getContextFileMetadata(node);
36
+ if (!meta)
37
+ continue;
38
+ // Normalize for comparison (forward slashes)
39
+ const metaPath = meta.context_file_path.split(path.sep).join('/');
40
+ const eventPath = repoRelative.split(path.sep).join('/');
41
+ if (metaPath === eventPath) {
42
+ onDrift?.(node, event);
43
+ }
44
+ }
45
+ };
46
+ }
47
+ //# sourceMappingURL=watcher-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher-integration.js","sourceRoot":"","sources":["../../src/context-files/watcher-integration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AA6BlC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAkC;IAElC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE7C,OAAO,KAAK,EAAE,KAAsB,EAAE,EAAE;QACtC,iEAAiE;QACjE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAEpC,4DAA4D;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzD,mDAAmD;QACnD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvC,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEzD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -29,6 +29,11 @@ export declare function deepEqual(a: unknown, b: unknown): boolean;
29
29
  * - Both sides agree → use that value
30
30
  * - Only one side changed → use the changed value
31
31
  * - Both changed differently → last-writer-wins by updated_at
32
+ *
33
+ * For provider-authoritative nodes where both sides modified:
34
+ * - Structural fields (id, type, metadata) merge normally
35
+ * - Cached data fields (title, content, status, priority) take whichever side
36
+ * but are marked for re-fetch via provider_needs_reconcile
32
37
  */
33
38
  export declare function fieldLevelMerge(base: JsonLine, ours: JsonLine, theirs: JsonLine): JsonLine;
34
39
  /**
@@ -43,8 +48,12 @@ export declare function mergeJsonl(basePath: string, oursPath: string, theirsPat
43
48
  /**
44
49
  * Install the merge driver in git config and .gitattributes
45
50
  *
46
- * @param worktreePath - Path to the worktree root
51
+ * Places .gitattributes inside the opentasks directory so it doesn't
52
+ * pollute the project root. Git supports .gitattributes in subdirectories;
53
+ * patterns are matched relative to the directory containing the file.
54
+ *
55
+ * @param opentasksDir - Path to the opentasks data directory
47
56
  */
48
- export declare function installMergeDriver(worktreePath: string): void;
57
+ export declare function installMergeDriver(opentasksDir: string): void;
49
58
  export {};
50
59
  //# sourceMappingURL=merge-driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-driver.d.ts","sourceRoot":"","sources":["../../src/core/merge-driver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CA6BvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAoBxF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAsBzD;AAWD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAmD1F;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0DzF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CA6B7D"}
1
+ {"version":3,"file":"merge-driver.d.ts","sourceRoot":"","sources":["../../src/core/merge-driver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CA6BvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAoBxF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAsBzD;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAsE1F;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0DzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CA6B7D"}
@@ -99,6 +99,19 @@ function pickByNewerTimestamp(a, b) {
99
99
  const bTime = b.updated_at || b.created_at || '';
100
100
  return aTime >= bTime ? a : b;
101
101
  }
102
+ /**
103
+ * Fields that contain cached provider data.
104
+ * When both sides modify a provider-authoritative node, these fields are
105
+ * NOT three-way merged — instead the node is flagged for reconciliation.
106
+ */
107
+ const PROVIDER_CACHED_FIELDS = new Set(['title', 'content', 'status', 'priority']);
108
+ /**
109
+ * Check if a JSONL entry is a provider-authoritative node
110
+ */
111
+ function isProviderAuthoritative(entry) {
112
+ const metadata = entry.metadata;
113
+ return metadata?.provider_authoritative === true;
114
+ }
102
115
  /**
103
116
  * Field-level three-way merge
104
117
  *
@@ -106,6 +119,11 @@ function pickByNewerTimestamp(a, b) {
106
119
  * - Both sides agree → use that value
107
120
  * - Only one side changed → use the changed value
108
121
  * - Both changed differently → last-writer-wins by updated_at
122
+ *
123
+ * For provider-authoritative nodes where both sides modified:
124
+ * - Structural fields (id, type, metadata) merge normally
125
+ * - Cached data fields (title, content, status, priority) take whichever side
126
+ * but are marked for re-fetch via provider_needs_reconcile
109
127
  */
110
128
  export function fieldLevelMerge(base, ours, theirs) {
111
129
  const result = { ...base };
@@ -159,6 +177,23 @@ export function fieldLevelMerge(base, ours, theirs) {
159
177
  if (times.length > 0) {
160
178
  result.updated_at = times.sort().pop();
161
179
  }
180
+ // Provider-authoritative handling: if both sides modified cached data fields,
181
+ // mark for reconciliation instead of trusting the merge result.
182
+ if (isProviderAuthoritative(result)) {
183
+ const hasCachedFieldConflict = [...PROVIDER_CACHED_FIELDS].some((key) => {
184
+ const bVal = base[key];
185
+ const oVal = ours[key];
186
+ const tVal = theirs[key];
187
+ // True conflict: both changed differently from base
188
+ return !deepEqual(bVal, oVal) && !deepEqual(bVal, tVal) && !deepEqual(oVal, tVal);
189
+ });
190
+ if (hasCachedFieldConflict) {
191
+ const metadata = (result.metadata ?? {});
192
+ metadata.provider_needs_reconcile = true;
193
+ metadata.provider_cached_at = null;
194
+ result.metadata = metadata;
195
+ }
196
+ }
162
197
  return result;
163
198
  }
164
199
  /**
@@ -224,11 +259,15 @@ export function mergeJsonl(basePath, oursPath, theirsPath) {
224
259
  /**
225
260
  * Install the merge driver in git config and .gitattributes
226
261
  *
227
- * @param worktreePath - Path to the worktree root
262
+ * Places .gitattributes inside the opentasks directory so it doesn't
263
+ * pollute the project root. Git supports .gitattributes in subdirectories;
264
+ * patterns are matched relative to the directory containing the file.
265
+ *
266
+ * @param opentasksDir - Path to the opentasks data directory
228
267
  */
229
- export function installMergeDriver(worktreePath) {
230
- // 1. Add to .gitattributes
231
- const attrPath = `${worktreePath}/.gitattributes`;
268
+ export function installMergeDriver(opentasksDir) {
269
+ // 1. Add .gitattributes inside the opentasks directory
270
+ const attrPath = `${opentasksDir}/.gitattributes`;
232
271
  let attrContent = '';
233
272
  try {
234
273
  attrContent = fs.readFileSync(attrPath, 'utf-8');
@@ -237,17 +276,17 @@ export function installMergeDriver(worktreePath) {
237
276
  // File doesn't exist yet
238
277
  }
239
278
  if (!attrContent.includes('merge=opentasks')) {
240
- const addition = '\n# OpenTasks merge driver for graph.jsonl\n' + '.opentasks/graph.jsonl merge=opentasks\n';
279
+ const addition = '\n# OpenTasks merge driver for graph.jsonl\n' + 'graph.jsonl merge=opentasks\n';
241
280
  fs.writeFileSync(attrPath, attrContent + addition, 'utf-8');
242
281
  }
243
282
  // 2. Configure merge driver in git config
244
283
  try {
245
284
  execSync('git config merge.opentasks.name "OpenTasks JSONL merge driver"', {
246
- cwd: worktreePath,
285
+ cwd: opentasksDir,
247
286
  stdio: ['pipe', 'pipe', 'pipe'],
248
287
  });
249
288
  execSync('git config merge.opentasks.driver "opentasks merge-driver %O %A %B %L %P"', {
250
- cwd: worktreePath,
289
+ cwd: opentasksDir,
251
290
  stdio: ['pipe', 'pipe', 'pipe'],
252
291
  });
253
292
  }
@@ -1 +1 @@
1
- {"version":3,"file":"merge-driver.js","sourceRoot":"","sources":["../../src/core/merge-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-driver.js","sourceRoot":"","sources":["../../src/core/merge-driver.ts"],"names":[],"mappings":"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"}
@@ -306,7 +306,7 @@ export function worktreeSetup(targetPath, managerOpentasksPath, options = {}) {
306
306
  }
307
307
  // 7. Install merge driver
308
308
  try {
309
- installMergeDriver(resolvedTarget);
309
+ installMergeDriver(workerOpentasksDir);
310
310
  }
311
311
  catch {
312
312
  // Non-fatal: merge driver installation might fail