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,381 @@
1
+ /**
2
+ * MAP (Multi-Agent Protocol) Provider
3
+ *
4
+ * Provider that bridges MAP task operations with OpenTasks.
5
+ * Handles map:// URI scheme for tasks managed via MAP.
6
+ *
7
+ * Supports three scenarios:
8
+ * 1. Same OpenTasks repo — MAP used for real-time coordination, native provider resolves tasks
9
+ * 2. Cross-system — tasks on a remote system accessed via MAP task methods
10
+ * 3. Mixed — local tasks with MAP-based assignment to external agents
11
+ *
12
+ * The provider depends on a MAPTaskClient interface, which can be satisfied by:
13
+ * - A MAP SDK ClientConnection (hub topology)
14
+ * - A MAP SDK BaseConnection wrapper (peer topology)
15
+ * - A local adapter (same-repo coordination, no network)
16
+ */
17
+ import { ProviderError } from './types.js';
18
+ // ============================================================================
19
+ // Constants
20
+ // ============================================================================
21
+ /** Pattern for map:// URIs: map://[systemId/]taskId */
22
+ const MAP_URI_PATTERN = /^map:\/\/(?:([^/]+)\/)?(.+)$/i;
23
+ // ============================================================================
24
+ // Status Mapping
25
+ // ============================================================================
26
+ /**
27
+ * Map MAP task status to OpenTasks normalized status
28
+ */
29
+ function mapStatusToOpenTasks(status) {
30
+ switch (status) {
31
+ case 'open': return 'open';
32
+ case 'in_progress': return 'in_progress';
33
+ case 'blocked': return 'blocked';
34
+ case 'completed': return 'closed';
35
+ case 'failed': return 'closed';
36
+ default: return 'open';
37
+ }
38
+ }
39
+ /**
40
+ * Map OpenTasks status to MAP task status
41
+ */
42
+ function mapStatusToMAP(status) {
43
+ switch (status?.toLowerCase()) {
44
+ case 'open': return 'open';
45
+ case 'in_progress': return 'in_progress';
46
+ case 'blocked': return 'blocked';
47
+ case 'closed': return 'completed';
48
+ case 'completed': return 'completed';
49
+ case 'failed': return 'failed';
50
+ default: return 'open';
51
+ }
52
+ }
53
+ /**
54
+ * Map semantic task action to MAP status
55
+ */
56
+ function actionToMAPStatus(action) {
57
+ switch (action) {
58
+ case 'start': return 'in_progress';
59
+ case 'complete': return 'completed';
60
+ case 'block': return 'blocked';
61
+ case 'reopen': return 'open';
62
+ case 'close': return 'completed';
63
+ }
64
+ }
65
+ // ============================================================================
66
+ // Type Conversion
67
+ // ============================================================================
68
+ /**
69
+ * Convert MAP task to ProviderNode
70
+ */
71
+ function taskToProviderNode(task, systemId) {
72
+ return {
73
+ id: task.id,
74
+ uri: `map://${systemId}/${task.id}`,
75
+ type: 'task',
76
+ title: task.title ?? '',
77
+ content: task.description,
78
+ status: mapStatusToOpenTasks(task.status),
79
+ priority: task.meta?.priority ?? 2,
80
+ rawData: {
81
+ assignee: task.assignee,
82
+ status: task.status,
83
+ meta: task.meta,
84
+ },
85
+ fetchedAt: new Date().toISOString(),
86
+ };
87
+ }
88
+ // ============================================================================
89
+ // MAP Provider Implementation
90
+ // ============================================================================
91
+ /**
92
+ * Create a MAP provider
93
+ *
94
+ * @param config - Provider configuration including the MAPTaskClient
95
+ * @returns A Provider that implements TaskManageable and optionally Watchable
96
+ */
97
+ export function createMAPProvider(config) {
98
+ const { client, systemId = 'default', timeout = 30000 } = config;
99
+ const hasEvents = typeof client.onTaskEvent === 'function';
100
+ let watchCallback = null;
101
+ let unsubscribeEvents = null;
102
+ const capabilities = {
103
+ read: true,
104
+ write: true,
105
+ search: false,
106
+ watch: hasEvents,
107
+ mount: true,
108
+ feedback: false,
109
+ };
110
+ const taskCapabilities = {
111
+ actions: ['start', 'complete', 'block', 'reopen', 'close'],
112
+ supportsAssignment: true,
113
+ supportsReadyQuery: true,
114
+ statusModel: ['open', 'in_progress', 'blocked', 'completed', 'failed'],
115
+ };
116
+ const watchGranularity = {
117
+ reportsChangedFields: false,
118
+ reportsPreviousValues: true,
119
+ reportsEdgeChanges: false,
120
+ mechanism: 'stream',
121
+ };
122
+ const provider = {
123
+ name: 'map',
124
+ schemes: ['map'],
125
+ capabilities,
126
+ description: 'Multi-Agent Protocol (MAP) provider. Surfaces remote MAP tasks as map:// nodes. All operations are direct RPC calls with no local cache.',
127
+ metadataSchema: {
128
+ fields: {},
129
+ description: 'Metadata is passed through as MAP task meta. Priority is stored in meta.priority. Assignee is a top-level field handled via task assignment, not metadata.',
130
+ },
131
+ // =========================================================================
132
+ // URI Operations
133
+ // =========================================================================
134
+ parseUri(uri) {
135
+ const match = uri.match(MAP_URI_PATTERN);
136
+ if (match) {
137
+ return {
138
+ scheme: 'map',
139
+ workspace: match[1] || systemId,
140
+ id: match[2],
141
+ isRelative: !match[1] || match[1] === systemId,
142
+ };
143
+ }
144
+ return null;
145
+ },
146
+ buildUri(id, options) {
147
+ const ws = options?.workspace ?? systemId;
148
+ return `map://${ws}/${id}`;
149
+ },
150
+ isValidUri(uri) {
151
+ return this.parseUri(uri) !== null;
152
+ },
153
+ // =========================================================================
154
+ // CRUD Operations
155
+ // =========================================================================
156
+ async get(id, _context) {
157
+ const parsed = this.parseUri(id);
158
+ const taskId = parsed?.id ?? id;
159
+ try {
160
+ const { tasks } = await client.listTasks({
161
+ limit: 100,
162
+ });
163
+ const task = tasks.find((t) => t.id === taskId);
164
+ return task ? taskToProviderNode(task, systemId) : null;
165
+ }
166
+ catch (error) {
167
+ throw new ProviderError('OPERATION_FAILED', `Failed to get MAP task: ${error instanceof Error ? error.message : String(error)}`, 'map', error instanceof Error ? error : undefined);
168
+ }
169
+ },
170
+ async list(filter, _context) {
171
+ try {
172
+ const mapFilter = {};
173
+ if (filter?.status) {
174
+ mapFilter.status = mapStatusToMAP(filter.status);
175
+ }
176
+ const { tasks } = await client.listTasks({
177
+ filter: Object.keys(mapFilter).length > 0 ? mapFilter : undefined,
178
+ limit: filter?.limit,
179
+ });
180
+ return tasks.map((task) => taskToProviderNode(task, systemId));
181
+ }
182
+ catch (error) {
183
+ throw new ProviderError('OPERATION_FAILED', `Failed to list MAP tasks: ${error instanceof Error ? error.message : String(error)}`, 'map', error instanceof Error ? error : undefined);
184
+ }
185
+ },
186
+ async create(input, _context) {
187
+ try {
188
+ const { task } = await client.createTask({
189
+ task: {
190
+ title: input.title,
191
+ description: input.content,
192
+ status: input.status ? mapStatusToMAP(input.status) : 'open',
193
+ meta: {
194
+ ...input.metadata,
195
+ ...input.extensions,
196
+ provider: 'opentasks',
197
+ priority: input.priority,
198
+ },
199
+ },
200
+ });
201
+ return taskToProviderNode(task, systemId);
202
+ }
203
+ catch (error) {
204
+ throw new ProviderError('OPERATION_FAILED', `Failed to create MAP task: ${error instanceof Error ? error.message : String(error)}`, 'map', error instanceof Error ? error : undefined);
205
+ }
206
+ },
207
+ async update(id, updates, _context) {
208
+ const parsed = this.parseUri(id);
209
+ const taskId = parsed?.id ?? id;
210
+ try {
211
+ const { task } = await client.updateTask({
212
+ taskId,
213
+ ...(updates.title !== undefined && { title: updates.title }),
214
+ ...(updates.content !== undefined && { description: updates.content }),
215
+ ...(updates.status !== undefined && { status: mapStatusToMAP(updates.status) }),
216
+ ...(updates.metadata !== undefined && { meta: updates.metadata }),
217
+ });
218
+ return taskToProviderNode(task, systemId);
219
+ }
220
+ catch (error) {
221
+ throw new ProviderError('OPERATION_FAILED', `Failed to update MAP task: ${error instanceof Error ? error.message : String(error)}`, 'map', error instanceof Error ? error : undefined);
222
+ }
223
+ },
224
+ async delete(id, _context) {
225
+ // MAP doesn't have a delete method — mark as failed/completed instead
226
+ const parsed = this.parseUri(id);
227
+ const taskId = parsed?.id ?? id;
228
+ try {
229
+ await client.updateTask({
230
+ taskId,
231
+ status: 'failed',
232
+ meta: { deleted: true, deletedAt: new Date().toISOString() },
233
+ });
234
+ }
235
+ catch (error) {
236
+ throw new ProviderError('OPERATION_FAILED', `Failed to delete MAP task: ${error instanceof Error ? error.message : String(error)}`, 'map', error instanceof Error ? error : undefined);
237
+ }
238
+ },
239
+ // =========================================================================
240
+ // TaskManageable Trait
241
+ // =========================================================================
242
+ taskCapabilities,
243
+ async transitionTask(id, action, _context) {
244
+ const parsed = this.parseUri(id);
245
+ const taskId = parsed?.id ?? id;
246
+ try {
247
+ const { task } = await client.updateTask({
248
+ taskId,
249
+ status: actionToMAPStatus(action),
250
+ });
251
+ return taskToProviderNode(task, systemId);
252
+ }
253
+ catch (error) {
254
+ throw new ProviderError('OPERATION_FAILED', `Failed to transition MAP task: ${error instanceof Error ? error.message : String(error)}`, 'map', error instanceof Error ? error : undefined);
255
+ }
256
+ },
257
+ async readyTasks(options, _context) {
258
+ try {
259
+ const { tasks } = await client.listTasks({
260
+ filter: {
261
+ status: 'open',
262
+ ...(options?.assignee && { assignee: options.assignee }),
263
+ },
264
+ limit: options?.limit,
265
+ });
266
+ let result = tasks.map((task) => taskToProviderNode(task, systemId));
267
+ // Filter by priority if specified (MAP doesn't have native priority filtering)
268
+ if (options?.priority !== undefined) {
269
+ result = result.filter((node) => (node.priority ?? 0) >= options.priority);
270
+ }
271
+ return result;
272
+ }
273
+ catch (error) {
274
+ throw new ProviderError('OPERATION_FAILED', `Failed to query ready MAP tasks: ${error instanceof Error ? error.message : String(error)}`, 'map', error instanceof Error ? error : undefined);
275
+ }
276
+ },
277
+ async assignTask(id, assignee, _context) {
278
+ const parsed = this.parseUri(id);
279
+ const taskId = parsed?.id ?? id;
280
+ try {
281
+ const { task } = await client.assignTask(taskId, assignee);
282
+ return taskToProviderNode(task, systemId);
283
+ }
284
+ catch (error) {
285
+ throw new ProviderError('OPERATION_FAILED', `Failed to assign MAP task: ${error instanceof Error ? error.message : String(error)}`, 'map', error instanceof Error ? error : undefined);
286
+ }
287
+ },
288
+ async validActions(id, _context) {
289
+ const node = await this.get(id);
290
+ if (!node)
291
+ return [];
292
+ const status = node.rawData?.status;
293
+ switch (status) {
294
+ case 'open': return ['start', 'block', 'close'];
295
+ case 'in_progress': return ['complete', 'block'];
296
+ case 'blocked': return ['reopen', 'close'];
297
+ case 'completed': return ['reopen'];
298
+ case 'failed': return ['reopen'];
299
+ default: return ['start', 'complete', 'block', 'reopen', 'close'];
300
+ }
301
+ },
302
+ };
303
+ // =========================================================================
304
+ // Watchable Trait (conditional — only if client supports events)
305
+ // =========================================================================
306
+ if (hasEvents) {
307
+ Object.assign(provider, {
308
+ watchGranularity,
309
+ startWatching(callback) {
310
+ watchCallback = callback;
311
+ unsubscribeEvents = client.onTaskEvent((event) => {
312
+ const { type, data } = event;
313
+ switch (type) {
314
+ case 'task.created': {
315
+ const task = data.task;
316
+ if (task) {
317
+ callback({
318
+ kind: 'node',
319
+ event: {
320
+ type: 'created',
321
+ nodeId: task.id,
322
+ uri: `map://${systemId}/${task.id}`,
323
+ node: taskToProviderNode(task, systemId),
324
+ timestamp: new Date().toISOString(),
325
+ },
326
+ });
327
+ }
328
+ break;
329
+ }
330
+ case 'task.assigned':
331
+ case 'task.status': {
332
+ const taskId = data.taskId;
333
+ if (taskId) {
334
+ callback({
335
+ kind: 'node',
336
+ event: {
337
+ type: 'updated',
338
+ nodeId: taskId,
339
+ uri: `map://${systemId}/${taskId}`,
340
+ previousValues: type === 'task.status' ? { status: data.previous } : undefined,
341
+ timestamp: new Date().toISOString(),
342
+ },
343
+ });
344
+ }
345
+ break;
346
+ }
347
+ case 'task.completed': {
348
+ const taskId = data.taskId;
349
+ if (taskId) {
350
+ callback({
351
+ kind: 'node',
352
+ event: {
353
+ type: 'updated',
354
+ nodeId: taskId,
355
+ uri: `map://${systemId}/${taskId}`,
356
+ changedFields: ['status'],
357
+ previousValues: { status: 'in_progress' },
358
+ timestamp: new Date().toISOString(),
359
+ },
360
+ });
361
+ }
362
+ break;
363
+ }
364
+ }
365
+ });
366
+ },
367
+ stopWatching() {
368
+ if (unsubscribeEvents) {
369
+ unsubscribeEvents();
370
+ unsubscribeEvents = null;
371
+ }
372
+ watchCallback = null;
373
+ },
374
+ get isWatching() {
375
+ return watchCallback !== null;
376
+ },
377
+ });
378
+ }
379
+ return provider;
380
+ }
381
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/providers/map.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,26 @@
5
5
  * Controls when and how external provider data is cached in the local graph.
6
6
  */
7
7
  import type { GraphStore } from '../graph/index.js';
8
- import type { ExternalNode } from '../schema/index.js';
8
+ import type { Node, ExternalNode } from '../schema/index.js';
9
9
  import type { Provider, ProviderNode, ProviderRegistry, ProviderOperationContext, MaterializationStrategy, MaterializationConfig } from './types.js';
10
+ /**
11
+ * Options for the materialize() call
12
+ */
13
+ export interface MaterializeOptions {
14
+ /**
15
+ * Whether the provider is local (always reachable, compatible status semantics).
16
+ * When true, materializes as native node type (task/context) with metadata.provider_uri.
17
+ * When false/undefined, materializes as type:'external' (current behavior).
18
+ */
19
+ local?: boolean;
20
+ /**
21
+ * Materialization mode for this node.
22
+ * - 'cached': Store full data (title, content, status) in the graph node.
23
+ * - 'pointer': Store only the provider_uri reference; data resolved on access.
24
+ * Default: 'cached'
25
+ */
26
+ materializeMode?: 'cached' | 'pointer';
27
+ }
10
28
  /**
11
29
  * Context for materialization decisions
12
30
  */
@@ -26,12 +44,12 @@ export interface MaterializationManager {
26
44
  shouldMaterialize(uri: string, context: MaterializationContext): boolean;
27
45
  /** Get the materialization strategy for a URI */
28
46
  getStrategyFor(uri: string): MaterializationStrategy;
29
- /** Materialize an external node */
30
- materialize(uri: string, providerNode: ProviderNode, store: GraphStore): Promise<ExternalNode>;
31
- /** Check if a materialized node is stale */
47
+ /** Materialize a provider node into the local graph */
48
+ materialize(uri: string, providerNode: ProviderNode, store: GraphStore, options?: MaterializeOptions): Promise<Node>;
49
+ /** Check if a materialized node is stale (only applies to remote/external nodes) */
32
50
  isStale(node: ExternalNode): boolean;
33
51
  /** Refresh a stale node */
34
- refresh(node: ExternalNode, provider: Provider, store: GraphStore, context?: ProviderOperationContext): Promise<ExternalNode | null>;
52
+ refresh(node: ExternalNode, provider: Provider, store: GraphStore, context?: ProviderOperationContext): Promise<Node | null>;
35
53
  /** Start background sync */
36
54
  startBackgroundSync(store: GraphStore, registry: ProviderRegistry): void;
37
55
  /** Stop background sync */
@@ -1 +1 @@
1
- {"version":3,"file":"materialization.d.ts","sourceRoot":"","sources":["../../src/providers/materialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,UAAU,EAAE,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;IAEhD,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAEvC,6CAA6C;IAC7C,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC;IAEzE,iDAAiD;IACjD,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAErD,mCAAmC;IACnC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/F,4CAA4C;IAC5C,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC;IAErC,2BAA2B;IAC3B,OAAO,CACL,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAEhC,4BAA4B;IAC5B,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEzE,2BAA2B;IAC3B,kBAAkB,IAAI,IAAI,CAAC;IAE3B,0CAA0C;IAC1C,uBAAuB,IAAI,OAAO,CAAC;CACpC;AAqCD;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,aAAa,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAC7C,sBAAsB,CA0OxB"}
1
+ {"version":3,"file":"materialization.d.ts","sourceRoot":"","sources":["../../src/providers/materialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,UAAU,EAAE,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;IAEhD,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAEvC,6CAA6C;IAC7C,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC;IAEzE,iDAAiD;IACjD,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAErD,uDAAuD;IACvD,WAAW,CACT,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,oFAAoF;IACpF,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC;IAErC,2BAA2B;IAC3B,OAAO,CACL,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAExB,4BAA4B;IAC5B,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEzE,2BAA2B;IAC3B,kBAAkB,IAAI,IAAI,CAAC;IAE3B,0CAA0C;IAC1C,uBAAuB,IAAI,OAAO,CAAC;CACpC;AAqED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,aAAa,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAC7C,sBAAsB,CA4SxB"}
@@ -31,6 +31,36 @@ async function findByUri(uri, store) {
31
31
  }
32
32
  return null;
33
33
  }
34
+ /**
35
+ * Find existing node by provider_uri in metadata (for local-provider nodes)
36
+ */
37
+ async function findByProviderUri(uri, store) {
38
+ // Scan task and context nodes for a metadata.provider_uri match.
39
+ // Note: search only checks title/content, not metadata, so we scan by type.
40
+ for (const type of ['task', 'context']) {
41
+ const nodes = await store.query.nodes({ type });
42
+ for (const node of nodes) {
43
+ if (node.metadata?.provider_uri === uri) {
44
+ return node;
45
+ }
46
+ }
47
+ }
48
+ return null;
49
+ }
50
+ /**
51
+ * Map provider node type to local graph node type
52
+ */
53
+ function mapProviderTypeToNodeType(providerType) {
54
+ switch (providerType) {
55
+ case 'spec':
56
+ return 'context';
57
+ case 'issue':
58
+ case 'task':
59
+ case 'feedback':
60
+ default:
61
+ return 'task';
62
+ }
63
+ }
34
64
  // ============================================================================
35
65
  // Materialization Manager Implementation
36
66
  // ============================================================================
@@ -82,18 +112,76 @@ export function createMaterializationManager(partialConfig) {
82
112
  }
83
113
  },
84
114
  /**
85
- * Materialize an external node from provider data
115
+ * Materialize a provider node into the local graph.
116
+ *
117
+ * When options.local is true, creates a native node (task/context) with
118
+ * metadata.provider_uri and metadata.provider_source as back-references.
119
+ * When false/undefined, creates a type:'external' node (remote behavior).
86
120
  */
87
- async materialize(uri, providerNode, store) {
121
+ async materialize(uri, providerNode, store, options) {
88
122
  const source = extractSource(uri);
89
123
  const now = new Date().toISOString();
124
+ // ── Local provider path ──────────────────────────────────────────
125
+ if (options?.local) {
126
+ const nodeType = mapProviderTypeToNodeType(providerNode.type);
127
+ const isPointer = options.materializeMode === 'pointer';
128
+ // Check for existing node by provider_uri
129
+ const existing = await findByProviderUri(uri, store);
130
+ if (existing) {
131
+ const updated = await store.updateNode(existing.id, {
132
+ // Pointer-only mode: don't cache data fields
133
+ ...(isPointer
134
+ ? {}
135
+ : {
136
+ title: providerNode.title,
137
+ content: providerNode.content,
138
+ status: providerNode.status,
139
+ priority: providerNode.priority,
140
+ }),
141
+ metadata: {
142
+ ...existing.metadata,
143
+ provider_uri: uri,
144
+ provider_source: source,
145
+ provider_cached_at: isPointer ? undefined : now,
146
+ provider_authoritative: true,
147
+ provider_content_hash: providerNode.contentHash ?? existing.metadata?.provider_content_hash,
148
+ ...(isPointer ? { provider_pointer_only: true } : {}),
149
+ },
150
+ });
151
+ return updated;
152
+ }
153
+ // Create new native node with provider back-reference
154
+ const node = await store.createNode({
155
+ type: nodeType,
156
+ // Pointer-only mode: minimal stub
157
+ title: isPointer ? '(pending)' : providerNode.title,
158
+ content: isPointer ? undefined : providerNode.content,
159
+ status: isPointer ? (providerNode.status ?? 'open') : (providerNode.status ?? 'open'),
160
+ priority: isPointer ? undefined : providerNode.priority,
161
+ metadata: {
162
+ provider_uri: uri,
163
+ provider_source: source,
164
+ provider_cached_at: isPointer ? undefined : now,
165
+ provider_authoritative: true,
166
+ provider_content_hash: providerNode.contentHash ?? undefined,
167
+ ...(isPointer ? { provider_pointer_only: true } : {}),
168
+ },
169
+ });
170
+ return node;
171
+ }
172
+ // ── Remote provider path (existing behavior) ─────────────────────
90
173
  // Check if already exists
91
174
  const existing = await findByUri(uri, store);
92
175
  if (existing) {
93
- // Update existing node
176
+ // Update existing node — sync top-level ExternalNode fields + metadata
94
177
  const updated = await store.updateNode(existing.id, {
95
178
  title: providerNode.title,
96
179
  content: providerNode.content,
180
+ external_status: providerNode.status,
181
+ external_data: providerNode.rawData,
182
+ cached_at: now,
183
+ stale: false,
184
+ materialized: true,
97
185
  metadata: {
98
186
  ...existing.metadata,
99
187
  external_status: providerNode.status,
@@ -105,7 +193,7 @@ export function createMaterializationManager(partialConfig) {
105
193
  });
106
194
  return updated;
107
195
  }
108
- // Create new ExternalNode
196
+ // Create new ExternalNode — set top-level fields per schema + metadata
109
197
  const node = await store.createNode({
110
198
  type: 'external',
111
199
  uri,
@@ -113,6 +201,9 @@ export function createMaterializationManager(partialConfig) {
113
201
  title: providerNode.title,
114
202
  content: providerNode.content,
115
203
  materialized: true,
204
+ external_status: providerNode.status,
205
+ external_data: providerNode.rawData,
206
+ cached_at: now,
116
207
  metadata: {
117
208
  external_status: providerNode.status,
118
209
  external_data: providerNode.rawData,
@@ -1 +1 @@
1
- {"version":3,"file":"materialization.js","sourceRoot":"","sources":["../../src/providers/materialization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"materialization.js","sourceRoot":"","sources":["../../src/providers/materialization.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/providers/native.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAiC,MAAM,mBAAmB,CAAC;AAEnF,OAAO,KAAK,EACV,QAAQ,EAWT,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EAAE,SAAS,EAAyC,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,4BAA4B,CAAC;AA4HpC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,QAAQ,GAAG,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,cAAc,CAwhBxE"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/providers/native.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAiC,MAAM,mBAAmB,CAAC;AAEnF,OAAO,KAAK,EACV,QAAQ,EAWT,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EAAE,SAAS,EAAyC,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,4BAA4B,CAAC;AA4HpC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,QAAQ,GAAG,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,cAAc,CA6hBxE"}
@@ -249,6 +249,11 @@ export function createNativeProvider(store, config) {
249
249
  name: 'native',
250
250
  schemes: ['native', 'opentasks'],
251
251
  capabilities,
252
+ description: 'Built-in graph store. Stores tasks as nodes in the local JSONL graph. Tags, assignee, parent_id, and priority are top-level task fields. The metadata bag accepts arbitrary key/value pairs.',
253
+ metadataSchema: {
254
+ fields: {},
255
+ description: 'Accepts arbitrary metadata key/value pairs. Note: tags, assignee, parent_id, and priority are top-level fields on create_task/update_task — do not put them in metadata.',
256
+ },
252
257
  // =========================================================================
253
258
  // URI Operations
254
259
  // =========================================================================