opentasks 0.0.1 → 0.0.3

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 (662) hide show
  1. package/README.md +344 -1
  2. package/dist/__tests__/cli-tools.test.d.ts +8 -0
  3. package/dist/__tests__/cli-tools.test.d.ts.map +1 -0
  4. package/dist/__tests__/cli-tools.test.js +546 -0
  5. package/dist/__tests__/cli-tools.test.js.map +1 -0
  6. package/dist/__tests__/cli.test.d.ts +5 -0
  7. package/dist/__tests__/cli.test.d.ts.map +1 -0
  8. package/dist/__tests__/cli.test.js +77 -0
  9. package/dist/__tests__/cli.test.js.map +1 -0
  10. package/dist/__tests__/p1-p3-gaps.test.d.ts +2 -0
  11. package/dist/__tests__/p1-p3-gaps.test.d.ts.map +1 -0
  12. package/dist/__tests__/p1-p3-gaps.test.js +463 -0
  13. package/dist/__tests__/p1-p3-gaps.test.js.map +1 -0
  14. package/dist/cli.d.ts +19 -1
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +702 -23
  17. package/dist/cli.js.map +1 -1
  18. package/dist/client/__tests__/client-crud.test.d.ts +7 -0
  19. package/dist/client/__tests__/client-crud.test.d.ts.map +1 -0
  20. package/dist/client/__tests__/client-crud.test.js +404 -0
  21. package/dist/client/__tests__/client-crud.test.js.map +1 -0
  22. package/dist/client/__tests__/client.test.d.ts +5 -0
  23. package/dist/client/__tests__/client.test.d.ts.map +1 -0
  24. package/dist/client/__tests__/client.test.js +518 -0
  25. package/dist/client/__tests__/client.test.js.map +1 -0
  26. package/dist/client/client.d.ts +228 -0
  27. package/dist/client/client.d.ts.map +1 -0
  28. package/dist/client/client.js +393 -0
  29. package/dist/client/client.js.map +1 -0
  30. package/dist/client/index.d.ts +11 -0
  31. package/dist/client/index.d.ts.map +1 -0
  32. package/dist/client/index.js +9 -0
  33. package/dist/client/index.js.map +1 -0
  34. package/dist/config/__tests__/defaults.test.d.ts +2 -0
  35. package/dist/config/__tests__/defaults.test.d.ts.map +1 -0
  36. package/dist/config/__tests__/defaults.test.js +57 -0
  37. package/dist/config/__tests__/defaults.test.js.map +1 -0
  38. package/dist/config/__tests__/env.test.d.ts +2 -0
  39. package/dist/config/__tests__/env.test.d.ts.map +1 -0
  40. package/dist/config/__tests__/env.test.js +136 -0
  41. package/dist/config/__tests__/env.test.js.map +1 -0
  42. package/dist/config/__tests__/index.test.d.ts +2 -0
  43. package/dist/config/__tests__/index.test.d.ts.map +1 -0
  44. package/dist/config/__tests__/index.test.js +113 -0
  45. package/dist/config/__tests__/index.test.js.map +1 -0
  46. package/dist/config/__tests__/loader.test.d.ts +2 -0
  47. package/dist/config/__tests__/loader.test.d.ts.map +1 -0
  48. package/dist/config/__tests__/loader.test.js +128 -0
  49. package/dist/config/__tests__/loader.test.js.map +1 -0
  50. package/dist/config/__tests__/merge.test.d.ts +2 -0
  51. package/dist/config/__tests__/merge.test.d.ts.map +1 -0
  52. package/dist/config/__tests__/merge.test.js +79 -0
  53. package/dist/config/__tests__/merge.test.js.map +1 -0
  54. package/dist/config/__tests__/schema.test.d.ts +2 -0
  55. package/dist/config/__tests__/schema.test.d.ts.map +1 -0
  56. package/dist/config/__tests__/schema.test.js +300 -0
  57. package/dist/config/__tests__/schema.test.js.map +1 -0
  58. package/dist/config/defaults.d.ts +13 -0
  59. package/dist/config/defaults.d.ts.map +1 -0
  60. package/dist/config/defaults.js +15 -0
  61. package/dist/config/defaults.js.map +1 -0
  62. package/dist/config/env.d.ts +14 -0
  63. package/dist/config/env.d.ts.map +1 -0
  64. package/dist/config/env.js +130 -0
  65. package/dist/config/env.js.map +1 -0
  66. package/dist/config/errors.d.ts +21 -0
  67. package/dist/config/errors.d.ts.map +1 -0
  68. package/dist/config/errors.js +30 -0
  69. package/dist/config/errors.js.map +1 -0
  70. package/dist/config/index.d.ts +21 -0
  71. package/dist/config/index.d.ts.map +1 -0
  72. package/dist/config/index.js +41 -0
  73. package/dist/config/index.js.map +1 -0
  74. package/dist/config/loader.d.ts +8 -0
  75. package/dist/config/loader.d.ts.map +1 -0
  76. package/dist/config/loader.js +87 -0
  77. package/dist/config/loader.js.map +1 -0
  78. package/dist/config/merge.d.ts +12 -0
  79. package/dist/config/merge.d.ts.map +1 -0
  80. package/dist/config/merge.js +54 -0
  81. package/dist/config/merge.js.map +1 -0
  82. package/dist/config/schema.d.ts +644 -0
  83. package/dist/config/schema.d.ts.map +1 -0
  84. package/dist/config/schema.js +491 -0
  85. package/dist/config/schema.js.map +1 -0
  86. package/dist/core/__tests__/conditional-redirects.test.d.ts +2 -0
  87. package/dist/core/__tests__/conditional-redirects.test.d.ts.map +1 -0
  88. package/dist/core/__tests__/conditional-redirects.test.js +83 -0
  89. package/dist/core/__tests__/conditional-redirects.test.js.map +1 -0
  90. package/dist/core/__tests__/connections.test.d.ts +2 -0
  91. package/dist/core/__tests__/connections.test.d.ts.map +1 -0
  92. package/dist/core/__tests__/connections.test.js +158 -0
  93. package/dist/core/__tests__/connections.test.js.map +1 -0
  94. package/dist/core/__tests__/hash.test.d.ts +2 -0
  95. package/dist/core/__tests__/hash.test.d.ts.map +1 -0
  96. package/dist/core/__tests__/hash.test.js +139 -0
  97. package/dist/core/__tests__/hash.test.js.map +1 -0
  98. package/dist/core/__tests__/id.test.d.ts +2 -0
  99. package/dist/core/__tests__/id.test.d.ts.map +1 -0
  100. package/dist/core/__tests__/id.test.js +142 -0
  101. package/dist/core/__tests__/id.test.js.map +1 -0
  102. package/dist/core/__tests__/location.test.d.ts +2 -0
  103. package/dist/core/__tests__/location.test.d.ts.map +1 -0
  104. package/dist/core/__tests__/location.test.js +77 -0
  105. package/dist/core/__tests__/location.test.js.map +1 -0
  106. package/dist/core/__tests__/merge-driver.test.d.ts +2 -0
  107. package/dist/core/__tests__/merge-driver.test.d.ts.map +1 -0
  108. package/dist/core/__tests__/merge-driver.test.js +218 -0
  109. package/dist/core/__tests__/merge-driver.test.js.map +1 -0
  110. package/dist/core/__tests__/redirects.test.d.ts +2 -0
  111. package/dist/core/__tests__/redirects.test.d.ts.map +1 -0
  112. package/dist/core/__tests__/redirects.test.js +123 -0
  113. package/dist/core/__tests__/redirects.test.js.map +1 -0
  114. package/dist/core/__tests__/resolve-location-target.test.d.ts +8 -0
  115. package/dist/core/__tests__/resolve-location-target.test.d.ts.map +1 -0
  116. package/dist/core/__tests__/resolve-location-target.test.js +303 -0
  117. package/dist/core/__tests__/resolve-location-target.test.js.map +1 -0
  118. package/dist/core/__tests__/uri.test.d.ts +2 -0
  119. package/dist/core/__tests__/uri.test.d.ts.map +1 -0
  120. package/dist/core/__tests__/uri.test.js +159 -0
  121. package/dist/core/__tests__/uri.test.js.map +1 -0
  122. package/dist/core/__tests__/worktree.test.d.ts +2 -0
  123. package/dist/core/__tests__/worktree.test.d.ts.map +1 -0
  124. package/dist/core/__tests__/worktree.test.js +120 -0
  125. package/dist/core/__tests__/worktree.test.js.map +1 -0
  126. package/dist/core/conditional-redirects.d.ts +42 -0
  127. package/dist/core/conditional-redirects.d.ts.map +1 -0
  128. package/dist/core/conditional-redirects.js +59 -0
  129. package/dist/core/conditional-redirects.js.map +1 -0
  130. package/dist/core/connections.d.ts +87 -0
  131. package/dist/core/connections.d.ts.map +1 -0
  132. package/dist/core/connections.js +160 -0
  133. package/dist/core/connections.js.map +1 -0
  134. package/dist/core/discover.d.ts +39 -0
  135. package/dist/core/discover.d.ts.map +1 -0
  136. package/dist/core/discover.js +136 -0
  137. package/dist/core/discover.js.map +1 -0
  138. package/dist/core/hash.d.ts +25 -0
  139. package/dist/core/hash.d.ts.map +1 -0
  140. package/dist/core/hash.js +62 -0
  141. package/dist/core/hash.js.map +1 -0
  142. package/dist/core/id.d.ts +79 -0
  143. package/dist/core/id.d.ts.map +1 -0
  144. package/dist/core/id.js +141 -0
  145. package/dist/core/id.js.map +1 -0
  146. package/dist/core/index.d.ts +15 -0
  147. package/dist/core/index.d.ts.map +1 -0
  148. package/dist/core/index.js +24 -0
  149. package/dist/core/index.js.map +1 -0
  150. package/dist/core/location.d.ts +70 -0
  151. package/dist/core/location.d.ts.map +1 -0
  152. package/dist/core/location.js +121 -0
  153. package/dist/core/location.js.map +1 -0
  154. package/dist/core/merge-driver.d.ts +50 -0
  155. package/dist/core/merge-driver.d.ts.map +1 -0
  156. package/dist/core/merge-driver.js +258 -0
  157. package/dist/core/merge-driver.js.map +1 -0
  158. package/dist/core/redirects.d.ts +91 -0
  159. package/dist/core/redirects.d.ts.map +1 -0
  160. package/dist/core/redirects.js +113 -0
  161. package/dist/core/redirects.js.map +1 -0
  162. package/dist/core/uri.d.ts +105 -0
  163. package/dist/core/uri.d.ts.map +1 -0
  164. package/dist/core/uri.js +190 -0
  165. package/dist/core/uri.js.map +1 -0
  166. package/dist/core/worktree.d.ts +106 -0
  167. package/dist/core/worktree.d.ts.map +1 -0
  168. package/dist/core/worktree.js +394 -0
  169. package/dist/core/worktree.js.map +1 -0
  170. package/dist/daemon/__tests__/flush.test.d.ts +5 -0
  171. package/dist/daemon/__tests__/flush.test.d.ts.map +1 -0
  172. package/dist/daemon/__tests__/flush.test.js +213 -0
  173. package/dist/daemon/__tests__/flush.test.js.map +1 -0
  174. package/dist/daemon/__tests__/integration.test.d.ts +7 -0
  175. package/dist/daemon/__tests__/integration.test.d.ts.map +1 -0
  176. package/dist/daemon/__tests__/integration.test.js +276 -0
  177. package/dist/daemon/__tests__/integration.test.js.map +1 -0
  178. package/dist/daemon/__tests__/ipc.test.d.ts +5 -0
  179. package/dist/daemon/__tests__/ipc.test.d.ts.map +1 -0
  180. package/dist/daemon/__tests__/ipc.test.js +314 -0
  181. package/dist/daemon/__tests__/ipc.test.js.map +1 -0
  182. package/dist/daemon/__tests__/lifecycle.test.d.ts +5 -0
  183. package/dist/daemon/__tests__/lifecycle.test.d.ts.map +1 -0
  184. package/dist/daemon/__tests__/lifecycle.test.js +301 -0
  185. package/dist/daemon/__tests__/lifecycle.test.js.map +1 -0
  186. package/dist/daemon/__tests__/lock.test.d.ts +5 -0
  187. package/dist/daemon/__tests__/lock.test.d.ts.map +1 -0
  188. package/dist/daemon/__tests__/lock.test.js +192 -0
  189. package/dist/daemon/__tests__/lock.test.js.map +1 -0
  190. package/dist/daemon/__tests__/methods/graph.test.d.ts +5 -0
  191. package/dist/daemon/__tests__/methods/graph.test.d.ts.map +1 -0
  192. package/dist/daemon/__tests__/methods/graph.test.js +309 -0
  193. package/dist/daemon/__tests__/methods/graph.test.js.map +1 -0
  194. package/dist/daemon/__tests__/methods/provider.test.d.ts +7 -0
  195. package/dist/daemon/__tests__/methods/provider.test.d.ts.map +1 -0
  196. package/dist/daemon/__tests__/methods/provider.test.js +181 -0
  197. package/dist/daemon/__tests__/methods/provider.test.js.map +1 -0
  198. package/dist/daemon/__tests__/methods/tools.test.d.ts +5 -0
  199. package/dist/daemon/__tests__/methods/tools.test.d.ts.map +1 -0
  200. package/dist/daemon/__tests__/methods/tools.test.js +587 -0
  201. package/dist/daemon/__tests__/methods/tools.test.js.map +1 -0
  202. package/dist/daemon/__tests__/multi-location.test.d.ts +8 -0
  203. package/dist/daemon/__tests__/multi-location.test.d.ts.map +1 -0
  204. package/dist/daemon/__tests__/multi-location.test.js +669 -0
  205. package/dist/daemon/__tests__/multi-location.test.js.map +1 -0
  206. package/dist/daemon/__tests__/registry.test.d.ts +5 -0
  207. package/dist/daemon/__tests__/registry.test.d.ts.map +1 -0
  208. package/dist/daemon/__tests__/registry.test.js +208 -0
  209. package/dist/daemon/__tests__/registry.test.js.map +1 -0
  210. package/dist/daemon/__tests__/watcher.test.d.ts +5 -0
  211. package/dist/daemon/__tests__/watcher.test.d.ts.map +1 -0
  212. package/dist/daemon/__tests__/watcher.test.js +234 -0
  213. package/dist/daemon/__tests__/watcher.test.js.map +1 -0
  214. package/dist/daemon/entire-linker.d.ts +68 -0
  215. package/dist/daemon/entire-linker.d.ts.map +1 -0
  216. package/dist/daemon/entire-linker.js +439 -0
  217. package/dist/daemon/entire-linker.js.map +1 -0
  218. package/dist/daemon/entire-watcher.d.ts +66 -0
  219. package/dist/daemon/entire-watcher.d.ts.map +1 -0
  220. package/dist/daemon/entire-watcher.js +258 -0
  221. package/dist/daemon/entire-watcher.js.map +1 -0
  222. package/dist/daemon/factory.d.ts +59 -0
  223. package/dist/daemon/factory.d.ts.map +1 -0
  224. package/dist/daemon/factory.js +72 -0
  225. package/dist/daemon/factory.js.map +1 -0
  226. package/dist/daemon/flush.d.ts +51 -0
  227. package/dist/daemon/flush.d.ts.map +1 -0
  228. package/dist/daemon/flush.js +89 -0
  229. package/dist/daemon/flush.js.map +1 -0
  230. package/dist/daemon/index.d.ts +39 -0
  231. package/dist/daemon/index.d.ts.map +1 -0
  232. package/dist/daemon/index.js +24 -0
  233. package/dist/daemon/index.js.map +1 -0
  234. package/dist/daemon/ipc.d.ts +97 -0
  235. package/dist/daemon/ipc.d.ts.map +1 -0
  236. package/dist/daemon/ipc.js +304 -0
  237. package/dist/daemon/ipc.js.map +1 -0
  238. package/dist/daemon/lifecycle.d.ts +85 -0
  239. package/dist/daemon/lifecycle.d.ts.map +1 -0
  240. package/dist/daemon/lifecycle.js +754 -0
  241. package/dist/daemon/lifecycle.js.map +1 -0
  242. package/dist/daemon/location-state.d.ts +85 -0
  243. package/dist/daemon/location-state.d.ts.map +1 -0
  244. package/dist/daemon/location-state.js +291 -0
  245. package/dist/daemon/location-state.js.map +1 -0
  246. package/dist/daemon/lock.d.ts +29 -0
  247. package/dist/daemon/lock.d.ts.map +1 -0
  248. package/dist/daemon/lock.js +131 -0
  249. package/dist/daemon/lock.js.map +1 -0
  250. package/dist/daemon/methods/__tests__/graph.test.d.ts +5 -0
  251. package/dist/daemon/methods/__tests__/graph.test.d.ts.map +1 -0
  252. package/dist/daemon/methods/__tests__/graph.test.js +274 -0
  253. package/dist/daemon/methods/__tests__/graph.test.js.map +1 -0
  254. package/dist/daemon/methods/__tests__/provider.test.d.ts +5 -0
  255. package/dist/daemon/methods/__tests__/provider.test.d.ts.map +1 -0
  256. package/dist/daemon/methods/__tests__/provider.test.js +184 -0
  257. package/dist/daemon/methods/__tests__/provider.test.js.map +1 -0
  258. package/dist/daemon/methods/__tests__/tools.test.d.ts +5 -0
  259. package/dist/daemon/methods/__tests__/tools.test.d.ts.map +1 -0
  260. package/dist/daemon/methods/__tests__/tools.test.js +295 -0
  261. package/dist/daemon/methods/__tests__/tools.test.js.map +1 -0
  262. package/dist/daemon/methods/archive.d.ts +22 -0
  263. package/dist/daemon/methods/archive.d.ts.map +1 -0
  264. package/dist/daemon/methods/archive.js +107 -0
  265. package/dist/daemon/methods/archive.js.map +1 -0
  266. package/dist/daemon/methods/graph.d.ts +26 -0
  267. package/dist/daemon/methods/graph.d.ts.map +1 -0
  268. package/dist/daemon/methods/graph.js +157 -0
  269. package/dist/daemon/methods/graph.js.map +1 -0
  270. package/dist/daemon/methods/lifecycle.d.ts +54 -0
  271. package/dist/daemon/methods/lifecycle.d.ts.map +1 -0
  272. package/dist/daemon/methods/lifecycle.js +46 -0
  273. package/dist/daemon/methods/lifecycle.js.map +1 -0
  274. package/dist/daemon/methods/location.d.ts +24 -0
  275. package/dist/daemon/methods/location.d.ts.map +1 -0
  276. package/dist/daemon/methods/location.js +72 -0
  277. package/dist/daemon/methods/location.js.map +1 -0
  278. package/dist/daemon/methods/provider.d.ts +22 -0
  279. package/dist/daemon/methods/provider.d.ts.map +1 -0
  280. package/dist/daemon/methods/provider.js +72 -0
  281. package/dist/daemon/methods/provider.js.map +1 -0
  282. package/dist/daemon/methods/tools.d.ts +23 -0
  283. package/dist/daemon/methods/tools.d.ts.map +1 -0
  284. package/dist/daemon/methods/tools.js +111 -0
  285. package/dist/daemon/methods/tools.js.map +1 -0
  286. package/dist/daemon/registry.d.ts +35 -0
  287. package/dist/daemon/registry.d.ts.map +1 -0
  288. package/dist/daemon/registry.js +189 -0
  289. package/dist/daemon/registry.js.map +1 -0
  290. package/dist/daemon/types.d.ts +101 -0
  291. package/dist/daemon/types.d.ts.map +1 -0
  292. package/dist/daemon/types.js +19 -0
  293. package/dist/daemon/types.js.map +1 -0
  294. package/dist/daemon/watcher.d.ts +62 -0
  295. package/dist/daemon/watcher.d.ts.map +1 -0
  296. package/dist/daemon/watcher.js +142 -0
  297. package/dist/daemon/watcher.js.map +1 -0
  298. package/dist/graph/EdgeTypeRegistry.d.ts +134 -0
  299. package/dist/graph/EdgeTypeRegistry.d.ts.map +1 -0
  300. package/dist/graph/EdgeTypeRegistry.js +255 -0
  301. package/dist/graph/EdgeTypeRegistry.js.map +1 -0
  302. package/dist/graph/FederatedGraph.d.ts +296 -0
  303. package/dist/graph/FederatedGraph.d.ts.map +1 -0
  304. package/dist/graph/FederatedGraph.js +406 -0
  305. package/dist/graph/FederatedGraph.js.map +1 -0
  306. package/dist/graph/GraphologyAdapter.d.ts +151 -0
  307. package/dist/graph/GraphologyAdapter.d.ts.map +1 -0
  308. package/dist/graph/GraphologyAdapter.js +209 -0
  309. package/dist/graph/GraphologyAdapter.js.map +1 -0
  310. package/dist/graph/HydratingFederatedGraph.d.ts +151 -0
  311. package/dist/graph/HydratingFederatedGraph.d.ts.map +1 -0
  312. package/dist/graph/HydratingFederatedGraph.js +327 -0
  313. package/dist/graph/HydratingFederatedGraph.js.map +1 -0
  314. package/dist/graph/__tests__/EdgeTypeRegistry.test.d.ts +2 -0
  315. package/dist/graph/__tests__/EdgeTypeRegistry.test.d.ts.map +1 -0
  316. package/dist/graph/__tests__/EdgeTypeRegistry.test.js +212 -0
  317. package/dist/graph/__tests__/EdgeTypeRegistry.test.js.map +1 -0
  318. package/dist/graph/__tests__/FederatedGraph.test.d.ts +2 -0
  319. package/dist/graph/__tests__/FederatedGraph.test.d.ts.map +1 -0
  320. package/dist/graph/__tests__/FederatedGraph.test.js +661 -0
  321. package/dist/graph/__tests__/FederatedGraph.test.js.map +1 -0
  322. package/dist/graph/__tests__/GraphologyAdapter.test.d.ts +2 -0
  323. package/dist/graph/__tests__/GraphologyAdapter.test.d.ts.map +1 -0
  324. package/dist/graph/__tests__/GraphologyAdapter.test.js +326 -0
  325. package/dist/graph/__tests__/GraphologyAdapter.test.js.map +1 -0
  326. package/dist/graph/__tests__/HydratingFederatedGraph.test.d.ts +2 -0
  327. package/dist/graph/__tests__/HydratingFederatedGraph.test.d.ts.map +1 -0
  328. package/dist/graph/__tests__/HydratingFederatedGraph.test.js +587 -0
  329. package/dist/graph/__tests__/HydratingFederatedGraph.test.js.map +1 -0
  330. package/dist/graph/__tests__/debounce.test.d.ts +5 -0
  331. package/dist/graph/__tests__/debounce.test.d.ts.map +1 -0
  332. package/dist/graph/__tests__/debounce.test.js +195 -0
  333. package/dist/graph/__tests__/debounce.test.js.map +1 -0
  334. package/dist/graph/__tests__/edge-cases.test.d.ts +8 -0
  335. package/dist/graph/__tests__/edge-cases.test.d.ts.map +1 -0
  336. package/dist/graph/__tests__/edge-cases.test.js +472 -0
  337. package/dist/graph/__tests__/edge-cases.test.js.map +1 -0
  338. package/dist/graph/__tests__/expansion.test.d.ts +2 -0
  339. package/dist/graph/__tests__/expansion.test.d.ts.map +1 -0
  340. package/dist/graph/__tests__/expansion.test.js +105 -0
  341. package/dist/graph/__tests__/expansion.test.js.map +1 -0
  342. package/dist/graph/__tests__/provider-store.test.d.ts +5 -0
  343. package/dist/graph/__tests__/provider-store.test.d.ts.map +1 -0
  344. package/dist/graph/__tests__/provider-store.test.js +791 -0
  345. package/dist/graph/__tests__/provider-store.test.js.map +1 -0
  346. package/dist/graph/__tests__/query.test.d.ts +5 -0
  347. package/dist/graph/__tests__/query.test.d.ts.map +1 -0
  348. package/dist/graph/__tests__/query.test.js +774 -0
  349. package/dist/graph/__tests__/query.test.js.map +1 -0
  350. package/dist/graph/__tests__/store.test.d.ts +5 -0
  351. package/dist/graph/__tests__/store.test.d.ts.map +1 -0
  352. package/dist/graph/__tests__/store.test.js +489 -0
  353. package/dist/graph/__tests__/store.test.js.map +1 -0
  354. package/dist/graph/__tests__/sync.test.d.ts +5 -0
  355. package/dist/graph/__tests__/sync.test.d.ts.map +1 -0
  356. package/dist/graph/__tests__/sync.test.js +129 -0
  357. package/dist/graph/__tests__/sync.test.js.map +1 -0
  358. package/dist/graph/__tests__/validation.test.d.ts +2 -0
  359. package/dist/graph/__tests__/validation.test.d.ts.map +1 -0
  360. package/dist/graph/__tests__/validation.test.js +521 -0
  361. package/dist/graph/__tests__/validation.test.js.map +1 -0
  362. package/dist/graph/coordination.d.ts +190 -0
  363. package/dist/graph/coordination.d.ts.map +1 -0
  364. package/dist/graph/coordination.js +180 -0
  365. package/dist/graph/coordination.js.map +1 -0
  366. package/dist/graph/debounce.d.ts +47 -0
  367. package/dist/graph/debounce.d.ts.map +1 -0
  368. package/dist/graph/debounce.js +95 -0
  369. package/dist/graph/debounce.js.map +1 -0
  370. package/dist/graph/expansion.d.ts +64 -0
  371. package/dist/graph/expansion.d.ts.map +1 -0
  372. package/dist/graph/expansion.js +205 -0
  373. package/dist/graph/expansion.js.map +1 -0
  374. package/dist/graph/history.d.ts +186 -0
  375. package/dist/graph/history.d.ts.map +1 -0
  376. package/dist/graph/history.js +155 -0
  377. package/dist/graph/history.js.map +1 -0
  378. package/dist/graph/index.d.ts +35 -0
  379. package/dist/graph/index.d.ts.map +1 -0
  380. package/dist/graph/index.js +22 -0
  381. package/dist/graph/index.js.map +1 -0
  382. package/dist/graph/provider-store.d.ts +211 -0
  383. package/dist/graph/provider-store.d.ts.map +1 -0
  384. package/dist/graph/provider-store.js +594 -0
  385. package/dist/graph/provider-store.js.map +1 -0
  386. package/dist/graph/query.d.ts +90 -0
  387. package/dist/graph/query.d.ts.map +1 -0
  388. package/dist/graph/query.js +463 -0
  389. package/dist/graph/query.js.map +1 -0
  390. package/dist/graph/store.d.ts +71 -0
  391. package/dist/graph/store.d.ts.map +1 -0
  392. package/dist/graph/store.js +531 -0
  393. package/dist/graph/store.js.map +1 -0
  394. package/dist/graph/sync.d.ts +48 -0
  395. package/dist/graph/sync.d.ts.map +1 -0
  396. package/dist/graph/sync.js +60 -0
  397. package/dist/graph/sync.js.map +1 -0
  398. package/dist/graph/types.d.ts +291 -0
  399. package/dist/graph/types.d.ts.map +1 -0
  400. package/dist/graph/types.js +19 -0
  401. package/dist/graph/types.js.map +1 -0
  402. package/dist/graph/validation.d.ts +26 -0
  403. package/dist/graph/validation.d.ts.map +1 -0
  404. package/dist/graph/validation.js +338 -0
  405. package/dist/graph/validation.js.map +1 -0
  406. package/dist/index.d.ts +25 -14
  407. package/dist/index.d.ts.map +1 -1
  408. package/dist/index.js +22 -25
  409. package/dist/index.js.map +1 -1
  410. package/dist/materialization/archiver.d.ts +12 -0
  411. package/dist/materialization/archiver.d.ts.map +1 -0
  412. package/dist/materialization/archiver.js +273 -0
  413. package/dist/materialization/archiver.js.map +1 -0
  414. package/dist/materialization/git-archive-store.d.ts +17 -0
  415. package/dist/materialization/git-archive-store.d.ts.map +1 -0
  416. package/dist/materialization/git-archive-store.js +509 -0
  417. package/dist/materialization/git-archive-store.js.map +1 -0
  418. package/dist/materialization/git-remote-store.d.ts +22 -0
  419. package/dist/materialization/git-remote-store.d.ts.map +1 -0
  420. package/dist/materialization/git-remote-store.js +448 -0
  421. package/dist/materialization/git-remote-store.js.map +1 -0
  422. package/dist/materialization/graph-id.d.ts +53 -0
  423. package/dist/materialization/graph-id.d.ts.map +1 -0
  424. package/dist/materialization/graph-id.js +163 -0
  425. package/dist/materialization/graph-id.js.map +1 -0
  426. package/dist/materialization/http-remote-store.d.ts +12 -0
  427. package/dist/materialization/http-remote-store.d.ts.map +1 -0
  428. package/dist/materialization/http-remote-store.js +143 -0
  429. package/dist/materialization/http-remote-store.js.map +1 -0
  430. package/dist/materialization/index.d.ts +15 -0
  431. package/dist/materialization/index.d.ts.map +1 -0
  432. package/dist/materialization/index.js +17 -0
  433. package/dist/materialization/index.js.map +1 -0
  434. package/dist/materialization/remote-store-factory.d.ts +17 -0
  435. package/dist/materialization/remote-store-factory.d.ts.map +1 -0
  436. package/dist/materialization/remote-store-factory.js +46 -0
  437. package/dist/materialization/remote-store-factory.js.map +1 -0
  438. package/dist/materialization/snapshot.d.ts +34 -0
  439. package/dist/materialization/snapshot.d.ts.map +1 -0
  440. package/dist/materialization/snapshot.js +177 -0
  441. package/dist/materialization/snapshot.js.map +1 -0
  442. package/dist/materialization/types.d.ts +300 -0
  443. package/dist/materialization/types.d.ts.map +1 -0
  444. package/dist/materialization/types.js +17 -0
  445. package/dist/materialization/types.js.map +1 -0
  446. package/dist/providers/__tests__/beads.test.d.ts +5 -0
  447. package/dist/providers/__tests__/beads.test.d.ts.map +1 -0
  448. package/dist/providers/__tests__/beads.test.js +591 -0
  449. package/dist/providers/__tests__/beads.test.js.map +1 -0
  450. package/dist/providers/__tests__/claude-tasks.test.d.ts +5 -0
  451. package/dist/providers/__tests__/claude-tasks.test.d.ts.map +1 -0
  452. package/dist/providers/__tests__/claude-tasks.test.js +392 -0
  453. package/dist/providers/__tests__/claude-tasks.test.js.map +1 -0
  454. package/dist/providers/__tests__/from-config.test.d.ts +5 -0
  455. package/dist/providers/__tests__/from-config.test.d.ts.map +1 -0
  456. package/dist/providers/__tests__/from-config.test.js +152 -0
  457. package/dist/providers/__tests__/from-config.test.js.map +1 -0
  458. package/dist/providers/__tests__/materialization.test.d.ts +5 -0
  459. package/dist/providers/__tests__/materialization.test.d.ts.map +1 -0
  460. package/dist/providers/__tests__/materialization.test.js +407 -0
  461. package/dist/providers/__tests__/materialization.test.js.map +1 -0
  462. package/dist/providers/__tests__/native.test.d.ts +5 -0
  463. package/dist/providers/__tests__/native.test.d.ts.map +1 -0
  464. package/dist/providers/__tests__/native.test.js +566 -0
  465. package/dist/providers/__tests__/native.test.js.map +1 -0
  466. package/dist/providers/__tests__/registry.test.d.ts +5 -0
  467. package/dist/providers/__tests__/registry.test.d.ts.map +1 -0
  468. package/dist/providers/__tests__/registry.test.js +183 -0
  469. package/dist/providers/__tests__/registry.test.js.map +1 -0
  470. package/dist/providers/beads.d.ts +46 -0
  471. package/dist/providers/beads.d.ts.map +1 -0
  472. package/dist/providers/beads.js +865 -0
  473. package/dist/providers/beads.js.map +1 -0
  474. package/dist/providers/claude-tasks.d.ts +56 -0
  475. package/dist/providers/claude-tasks.d.ts.map +1 -0
  476. package/dist/providers/claude-tasks.js +282 -0
  477. package/dist/providers/claude-tasks.js.map +1 -0
  478. package/dist/providers/entire.d.ts +88 -0
  479. package/dist/providers/entire.d.ts.map +1 -0
  480. package/dist/providers/entire.js +409 -0
  481. package/dist/providers/entire.js.map +1 -0
  482. package/dist/providers/from-config.d.ts +47 -0
  483. package/dist/providers/from-config.d.ts.map +1 -0
  484. package/dist/providers/from-config.js +150 -0
  485. package/dist/providers/from-config.js.map +1 -0
  486. package/dist/providers/index.d.ts +26 -0
  487. package/dist/providers/index.d.ts.map +1 -0
  488. package/dist/providers/index.js +29 -0
  489. package/dist/providers/index.js.map +1 -0
  490. package/dist/providers/location.d.ts +44 -0
  491. package/dist/providers/location.d.ts.map +1 -0
  492. package/dist/providers/location.js +157 -0
  493. package/dist/providers/location.js.map +1 -0
  494. package/dist/providers/materialization.d.ts +46 -0
  495. package/dist/providers/materialization.d.ts.map +1 -0
  496. package/dist/providers/materialization.js +237 -0
  497. package/dist/providers/materialization.js.map +1 -0
  498. package/dist/providers/native.d.ts +32 -0
  499. package/dist/providers/native.d.ts.map +1 -0
  500. package/dist/providers/native.js +552 -0
  501. package/dist/providers/native.js.map +1 -0
  502. package/dist/providers/registry.d.ts +11 -0
  503. package/dist/providers/registry.d.ts.map +1 -0
  504. package/dist/providers/registry.js +97 -0
  505. package/dist/providers/registry.js.map +1 -0
  506. package/dist/providers/sudocode.d.ts +49 -0
  507. package/dist/providers/sudocode.d.ts.map +1 -0
  508. package/dist/providers/sudocode.js +945 -0
  509. package/dist/providers/sudocode.js.map +1 -0
  510. package/dist/providers/sync.d.ts +299 -0
  511. package/dist/providers/sync.d.ts.map +1 -0
  512. package/dist/providers/sync.js +93 -0
  513. package/dist/providers/sync.js.map +1 -0
  514. package/dist/providers/traits/RelationshipQueryable.d.ts +129 -0
  515. package/dist/providers/traits/RelationshipQueryable.d.ts.map +1 -0
  516. package/dist/providers/traits/RelationshipQueryable.js +68 -0
  517. package/dist/providers/traits/RelationshipQueryable.js.map +1 -0
  518. package/dist/providers/traits/TaskManageable.d.ts +157 -0
  519. package/dist/providers/traits/TaskManageable.d.ts.map +1 -0
  520. package/dist/providers/traits/TaskManageable.js +37 -0
  521. package/dist/providers/traits/TaskManageable.js.map +1 -0
  522. package/dist/providers/traits/Watchable.d.ts +216 -0
  523. package/dist/providers/traits/Watchable.d.ts.map +1 -0
  524. package/dist/providers/traits/Watchable.js +37 -0
  525. package/dist/providers/traits/Watchable.js.map +1 -0
  526. package/dist/providers/traits/__tests__/RelationshipQueryable.test.d.ts +2 -0
  527. package/dist/providers/traits/__tests__/RelationshipQueryable.test.d.ts.map +1 -0
  528. package/dist/providers/traits/__tests__/RelationshipQueryable.test.js +169 -0
  529. package/dist/providers/traits/__tests__/RelationshipQueryable.test.js.map +1 -0
  530. package/dist/providers/traits/__tests__/TaskManageable.test.d.ts +2 -0
  531. package/dist/providers/traits/__tests__/TaskManageable.test.d.ts.map +1 -0
  532. package/dist/providers/traits/__tests__/TaskManageable.test.js +172 -0
  533. package/dist/providers/traits/__tests__/TaskManageable.test.js.map +1 -0
  534. package/dist/providers/traits/index.d.ts +13 -0
  535. package/dist/providers/traits/index.d.ts.map +1 -0
  536. package/dist/providers/traits/index.js +10 -0
  537. package/dist/providers/traits/index.js.map +1 -0
  538. package/dist/providers/types.d.ts +284 -0
  539. package/dist/providers/types.d.ts.map +1 -0
  540. package/dist/providers/types.js +30 -0
  541. package/dist/providers/types.js.map +1 -0
  542. package/dist/schema/__tests__/validation.test.d.ts +2 -0
  543. package/dist/schema/__tests__/validation.test.d.ts.map +1 -0
  544. package/dist/schema/__tests__/validation.test.js +241 -0
  545. package/dist/schema/__tests__/validation.test.js.map +1 -0
  546. package/dist/schema/base.d.ts +68 -0
  547. package/dist/schema/base.d.ts.map +1 -0
  548. package/dist/schema/base.js +5 -0
  549. package/dist/schema/base.js.map +1 -0
  550. package/dist/schema/edges.d.ts +49 -0
  551. package/dist/schema/edges.d.ts.map +1 -0
  552. package/dist/schema/edges.js +9 -0
  553. package/dist/schema/edges.js.map +1 -0
  554. package/dist/schema/index.d.ts +11 -0
  555. package/dist/schema/index.d.ts.map +1 -0
  556. package/dist/schema/index.js +8 -0
  557. package/dist/schema/index.js.map +1 -0
  558. package/dist/schema/nodes.d.ts +97 -0
  559. package/dist/schema/nodes.d.ts.map +1 -0
  560. package/dist/schema/nodes.js +5 -0
  561. package/dist/schema/nodes.js.map +1 -0
  562. package/dist/schema/storage.d.ts +107 -0
  563. package/dist/schema/storage.d.ts.map +1 -0
  564. package/dist/schema/storage.js +10 -0
  565. package/dist/schema/storage.js.map +1 -0
  566. package/dist/schema/validation.d.ts +61 -0
  567. package/dist/schema/validation.d.ts.map +1 -0
  568. package/dist/schema/validation.js +170 -0
  569. package/dist/schema/validation.js.map +1 -0
  570. package/dist/storage/__tests__/atomic-write.test.d.ts +5 -0
  571. package/dist/storage/__tests__/atomic-write.test.d.ts.map +1 -0
  572. package/dist/storage/__tests__/atomic-write.test.js +170 -0
  573. package/dist/storage/__tests__/atomic-write.test.js.map +1 -0
  574. package/dist/storage/__tests__/file-lock.test.d.ts +2 -0
  575. package/dist/storage/__tests__/file-lock.test.d.ts.map +1 -0
  576. package/dist/storage/__tests__/file-lock.test.js +89 -0
  577. package/dist/storage/__tests__/file-lock.test.js.map +1 -0
  578. package/dist/storage/__tests__/jsonl.test.d.ts +2 -0
  579. package/dist/storage/__tests__/jsonl.test.d.ts.map +1 -0
  580. package/dist/storage/__tests__/jsonl.test.js +228 -0
  581. package/dist/storage/__tests__/jsonl.test.js.map +1 -0
  582. package/dist/storage/__tests__/locked-writer.test.d.ts +2 -0
  583. package/dist/storage/__tests__/locked-writer.test.d.ts.map +1 -0
  584. package/dist/storage/__tests__/locked-writer.test.js +109 -0
  585. package/dist/storage/__tests__/locked-writer.test.js.map +1 -0
  586. package/dist/storage/__tests__/sqlite.test.d.ts +2 -0
  587. package/dist/storage/__tests__/sqlite.test.d.ts.map +1 -0
  588. package/dist/storage/__tests__/sqlite.test.js +470 -0
  589. package/dist/storage/__tests__/sqlite.test.js.map +1 -0
  590. package/dist/storage/atomic-write.d.ts +38 -0
  591. package/dist/storage/atomic-write.d.ts.map +1 -0
  592. package/dist/storage/atomic-write.js +83 -0
  593. package/dist/storage/atomic-write.js.map +1 -0
  594. package/dist/storage/file-lock.d.ts +66 -0
  595. package/dist/storage/file-lock.d.ts.map +1 -0
  596. package/dist/storage/file-lock.js +176 -0
  597. package/dist/storage/file-lock.js.map +1 -0
  598. package/dist/storage/index.d.ts +11 -0
  599. package/dist/storage/index.d.ts.map +1 -0
  600. package/dist/storage/index.js +13 -0
  601. package/dist/storage/index.js.map +1 -0
  602. package/dist/storage/interface.d.ts +219 -0
  603. package/dist/storage/interface.d.ts.map +1 -0
  604. package/dist/storage/interface.js +22 -0
  605. package/dist/storage/interface.js.map +1 -0
  606. package/dist/storage/jsonl.d.ts +106 -0
  607. package/dist/storage/jsonl.d.ts.map +1 -0
  608. package/dist/storage/jsonl.js +218 -0
  609. package/dist/storage/jsonl.js.map +1 -0
  610. package/dist/storage/locked-writer.d.ts +67 -0
  611. package/dist/storage/locked-writer.d.ts.map +1 -0
  612. package/dist/storage/locked-writer.js +105 -0
  613. package/dist/storage/locked-writer.js.map +1 -0
  614. package/dist/storage/sqlite-schema.d.ts +48 -0
  615. package/dist/storage/sqlite-schema.d.ts.map +1 -0
  616. package/dist/storage/sqlite-schema.js +169 -0
  617. package/dist/storage/sqlite-schema.js.map +1 -0
  618. package/dist/storage/sqlite.d.ts +73 -0
  619. package/dist/storage/sqlite.d.ts.map +1 -0
  620. package/dist/storage/sqlite.js +698 -0
  621. package/dist/storage/sqlite.js.map +1 -0
  622. package/dist/tools/__tests__/annotate.test.d.ts +5 -0
  623. package/dist/tools/__tests__/annotate.test.d.ts.map +1 -0
  624. package/dist/tools/__tests__/annotate.test.js +314 -0
  625. package/dist/tools/__tests__/annotate.test.js.map +1 -0
  626. package/dist/tools/__tests__/link.test.d.ts +5 -0
  627. package/dist/tools/__tests__/link.test.d.ts.map +1 -0
  628. package/dist/tools/__tests__/link.test.js +245 -0
  629. package/dist/tools/__tests__/link.test.js.map +1 -0
  630. package/dist/tools/__tests__/query.test.d.ts +5 -0
  631. package/dist/tools/__tests__/query.test.d.ts.map +1 -0
  632. package/dist/tools/__tests__/query.test.js +288 -0
  633. package/dist/tools/__tests__/query.test.js.map +1 -0
  634. package/dist/tools/__tests__/task.test.d.ts +5 -0
  635. package/dist/tools/__tests__/task.test.d.ts.map +1 -0
  636. package/dist/tools/__tests__/task.test.js +178 -0
  637. package/dist/tools/__tests__/task.test.js.map +1 -0
  638. package/dist/tools/annotate.d.ts +17 -0
  639. package/dist/tools/annotate.d.ts.map +1 -0
  640. package/dist/tools/annotate.js +218 -0
  641. package/dist/tools/annotate.js.map +1 -0
  642. package/dist/tools/index.d.ts +14 -0
  643. package/dist/tools/index.d.ts.map +1 -0
  644. package/dist/tools/index.js +14 -0
  645. package/dist/tools/index.js.map +1 -0
  646. package/dist/tools/link.d.ts +17 -0
  647. package/dist/tools/link.d.ts.map +1 -0
  648. package/dist/tools/link.js +127 -0
  649. package/dist/tools/link.js.map +1 -0
  650. package/dist/tools/query.d.ts +17 -0
  651. package/dist/tools/query.d.ts.map +1 -0
  652. package/dist/tools/query.js +342 -0
  653. package/dist/tools/query.js.map +1 -0
  654. package/dist/tools/task.d.ts +20 -0
  655. package/dist/tools/task.d.ts.map +1 -0
  656. package/dist/tools/task.js +161 -0
  657. package/dist/tools/task.js.map +1 -0
  658. package/dist/tools/types.d.ts +334 -0
  659. package/dist/tools/types.d.ts.map +1 -0
  660. package/dist/tools/types.js +19 -0
  661. package/dist/tools/types.js.map +1 -0
  662. package/package.json +40 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationshipQueryable.js","sourceRoot":"","sources":["../../../src/providers/traits/RelationshipQueryable.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgGH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAkB;IAElB,MAAM,CAAC,GAAG,QAA4C,CAAC;IACvD,OAAO,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,kBAAkB,KAAK,UAAU,CAAC;AAC1F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAqB,EAAE,QAAgB;IACvE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAqB,EACrB,MAAc,EACd,SAAwB;IAExB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAC9C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAChD,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAkB,EAAE,MAAc;IACpE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * TaskManageable Trait
3
+ *
4
+ * Optional trait for providers that support task lifecycle operations.
5
+ * Providers implement this trait to expose semantic task actions
6
+ * (start, complete, block, etc.) beyond raw CRUD.
7
+ *
8
+ * Not all providers manage tasks — a spec-only provider or a feed
9
+ * provider would skip this trait entirely and still work as a
10
+ * standard Provider for CRUD operations.
11
+ */
12
+ import type { Provider, ProviderNode, ProviderOperationContext } from '../types.js';
13
+ /**
14
+ * Semantic task actions.
15
+ *
16
+ * Providers map these to their own native status model.
17
+ * For example, a provider with statuses ['pending', 'active', 'done']
18
+ * might map 'start' → 'active' and 'complete' → 'done'.
19
+ */
20
+ export type TaskAction = 'start' | 'complete' | 'block' | 'reopen' | 'close';
21
+ /**
22
+ * Declares what task operations a provider supports.
23
+ *
24
+ * Consumers inspect this to know what actions are valid before
25
+ * attempting them. The `actions` array is the minimum contract —
26
+ * optional capabilities like assignment are declared separately.
27
+ */
28
+ export interface TaskCapabilities {
29
+ /** Which semantic actions this provider supports */
30
+ actions: TaskAction[];
31
+ /** Whether the provider supports assigning tasks to owners */
32
+ supportsAssignment: boolean;
33
+ /** Whether the provider can compute ready tasks natively */
34
+ supportsReadyQuery: boolean;
35
+ /** The provider's native status values (informational) */
36
+ statusModel: string[];
37
+ }
38
+ /**
39
+ * Options for querying ready tasks from a provider
40
+ */
41
+ export interface ReadyTaskOptions {
42
+ /** Maximum number of tasks to return */
43
+ limit?: number;
44
+ /** Filter by tags */
45
+ tags?: string[];
46
+ /** Filter by minimum priority */
47
+ priority?: number;
48
+ /** Filter by assignee */
49
+ assignee?: string;
50
+ }
51
+ /**
52
+ * TaskManageable Trait
53
+ *
54
+ * Providers implement this trait to expose task lifecycle operations
55
+ * that go beyond raw CRUD. The trait uses semantic actions rather than
56
+ * direct status strings — each provider maps actions to its own
57
+ * status model internally.
58
+ *
59
+ * Required methods:
60
+ * - `transitionTask` — apply a semantic action to a task
61
+ * - `readyTasks` — list tasks with no active blockers
62
+ *
63
+ * Optional methods:
64
+ * - `assignTask` — assign a task to an owner
65
+ * - `validActions` — introspect valid next actions for a task
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * class BeadsProvider implements Provider, TaskManageable {
70
+ * readonly taskCapabilities: TaskCapabilities = {
71
+ * actions: ['start', 'complete', 'block', 'reopen'],
72
+ * supportsAssignment: true,
73
+ * supportsReadyQuery: true,
74
+ * statusModel: ['open', 'in_progress', 'blocked', 'done'],
75
+ * }
76
+ *
77
+ * async transitionTask(id: string, action: TaskAction) {
78
+ * // Map semantic action to bd CLI command
79
+ * switch (action) {
80
+ * case 'start': return this.exec(['task', 'start', id])
81
+ * case 'complete': return this.exec(['task', 'complete', id])
82
+ * // ...
83
+ * }
84
+ * }
85
+ *
86
+ * async readyTasks(options?: ReadyTaskOptions) {
87
+ * return this.exec(['task', 'list', '--ready'])
88
+ * }
89
+ * }
90
+ * ```
91
+ */
92
+ export interface TaskManageable {
93
+ /** Declares what task operations this provider supports */
94
+ readonly taskCapabilities: TaskCapabilities;
95
+ /**
96
+ * Transition a task's status using a semantic action.
97
+ *
98
+ * The provider maps the action to its native status model.
99
+ * Throws if the action is not valid for the task's current state.
100
+ *
101
+ * @param id - Task ID (in provider's local format)
102
+ * @param action - The semantic action to apply
103
+ * @param context - Optional operational context
104
+ * @returns The updated task node
105
+ */
106
+ transitionTask(id: string, action: TaskAction, context?: ProviderOperationContext): Promise<ProviderNode>;
107
+ /**
108
+ * Get tasks that are ready to work on (no active blockers).
109
+ *
110
+ * Each provider determines "ready" based on its own semantics.
111
+ * The store layer can aggregate across providers.
112
+ *
113
+ * @param options - Filtering options
114
+ * @param context - Optional operational context
115
+ * @returns Array of ready task nodes
116
+ */
117
+ readyTasks(options?: ReadyTaskOptions, context?: ProviderOperationContext): Promise<ProviderNode[]>;
118
+ /**
119
+ * Assign a task to an owner.
120
+ *
121
+ * Optional — only available when `taskCapabilities.supportsAssignment` is true.
122
+ *
123
+ * @param id - Task ID (in provider's local format)
124
+ * @param assignee - The assignee identifier
125
+ * @param context - Optional operational context
126
+ * @returns The updated task node
127
+ */
128
+ assignTask?(id: string, assignee: string, context?: ProviderOperationContext): Promise<ProviderNode>;
129
+ /**
130
+ * Get the valid next actions for a task in its current state.
131
+ *
132
+ * Optional — useful for UI to show available actions.
133
+ * If not implemented, consumers can fall back to `taskCapabilities.actions`.
134
+ *
135
+ * @param id - Task ID (in provider's local format)
136
+ * @param context - Optional operational context
137
+ * @returns Array of valid actions for this task's current state
138
+ */
139
+ validActions?(id: string, context?: ProviderOperationContext): Promise<TaskAction[]>;
140
+ }
141
+ /**
142
+ * Check if a provider implements the TaskManageable trait
143
+ *
144
+ * @param provider - The provider to check
145
+ * @returns True if the provider supports task lifecycle operations
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * const provider = registry.resolveProvider(uri)
150
+ * if (provider && isTaskManageable(provider)) {
151
+ * await provider.transitionTask(taskId, 'start')
152
+ * const ready = await provider.readyTasks({ limit: 10 })
153
+ * }
154
+ * ```
155
+ */
156
+ export declare function isTaskManageable(provider: Provider): provider is Provider & TaskManageable;
157
+ //# sourceMappingURL=TaskManageable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskManageable.d.ts","sourceRoot":"","sources":["../../../src/providers/traits/TaskManageable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAMpF;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAM7E;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB,8DAA8D;IAC9D,kBAAkB,EAAE,OAAO,CAAC;IAE5B,4DAA4D;IAC5D,kBAAkB,EAAE,OAAO,CAAC;IAE5B,0DAA0D;IAC1D,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,cAAc,CACZ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;;OASG;IACH,UAAU,CACR,OAAO,CAAC,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE3B;;;;;;;;;OASG;IACH,UAAU,CAAC,CACT,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;;OASG;IACH,YAAY,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CACtF;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,IAAI,QAAQ,GAAG,cAAc,CAQ1F"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * TaskManageable Trait
3
+ *
4
+ * Optional trait for providers that support task lifecycle operations.
5
+ * Providers implement this trait to expose semantic task actions
6
+ * (start, complete, block, etc.) beyond raw CRUD.
7
+ *
8
+ * Not all providers manage tasks — a spec-only provider or a feed
9
+ * provider would skip this trait entirely and still work as a
10
+ * standard Provider for CRUD operations.
11
+ */
12
+ // ============================================================================
13
+ // Type Guard
14
+ // ============================================================================
15
+ /**
16
+ * Check if a provider implements the TaskManageable trait
17
+ *
18
+ * @param provider - The provider to check
19
+ * @returns True if the provider supports task lifecycle operations
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const provider = registry.resolveProvider(uri)
24
+ * if (provider && isTaskManageable(provider)) {
25
+ * await provider.transitionTask(taskId, 'start')
26
+ * const ready = await provider.readyTasks({ limit: 10 })
27
+ * }
28
+ * ```
29
+ */
30
+ export function isTaskManageable(provider) {
31
+ const p = provider;
32
+ return (typeof p.transitionTask === 'function' &&
33
+ typeof p.readyTasks === 'function' &&
34
+ p.taskCapabilities !== undefined &&
35
+ typeof p.taskCapabilities === 'object');
36
+ }
37
+ //# sourceMappingURL=TaskManageable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskManageable.js","sourceRoot":"","sources":["../../../src/providers/traits/TaskManageable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6KH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,MAAM,CAAC,GAAG,QAAqC,CAAC;IAChD,OAAO,CACL,OAAO,CAAC,CAAC,cAAc,KAAK,UAAU;QACtC,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU;QAClC,CAAC,CAAC,gBAAgB,KAAK,SAAS;QAChC,OAAO,CAAC,CAAC,gBAAgB,KAAK,QAAQ,CACvC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Watchable Trait
3
+ *
4
+ * Optional trait for providers that can detect and emit change events
5
+ * from their underlying data source. Each provider is responsible for
6
+ * its own watching mechanism (file watching, polling, webhooks, etc.).
7
+ *
8
+ * The granularity of change events is provider-dependent. Providers
9
+ * declare their capabilities via `watchGranularity`, and consumers
10
+ * can adapt their behavior accordingly.
11
+ */
12
+ import type { Provider, ProviderNode } from '../types.js';
13
+ import type { ProviderEdge } from './RelationshipQueryable.js';
14
+ /**
15
+ * Detection mechanism used by the provider
16
+ *
17
+ * Informational — helps consumers understand latency characteristics.
18
+ */
19
+ export type WatchMechanism = 'file-watch' | 'polling' | 'webhook' | 'stream';
20
+ /**
21
+ * Declares what level of detail a provider's change events carry.
22
+ *
23
+ * Providers set these flags so consumers know what to expect
24
+ * without inspecting every event at runtime.
25
+ */
26
+ export interface WatchGranularity {
27
+ /**
28
+ * Provider can report which fields changed on a node update.
29
+ * When true, `ProviderNodeChangeEvent.changedFields` may be populated.
30
+ */
31
+ reportsChangedFields: boolean;
32
+ /**
33
+ * Provider can report the previous values of changed fields.
34
+ * When true, `ProviderNodeChangeEvent.previousValues` may be populated.
35
+ * Implies `reportsChangedFields`.
36
+ */
37
+ reportsPreviousValues: boolean;
38
+ /**
39
+ * Provider can emit edge change events separately from node events.
40
+ * When true, `ProviderEdgeChangeEvent` events may be emitted.
41
+ */
42
+ reportsEdgeChanges: boolean;
43
+ /** How the provider detects changes (informational) */
44
+ mechanism: WatchMechanism;
45
+ }
46
+ /**
47
+ * Event emitted when a node changes in the provider's data source.
48
+ *
49
+ * All fields beyond `type`, `nodeId`, `uri`, and `timestamp` are
50
+ * optional and depend on the provider's declared granularity.
51
+ */
52
+ export interface ProviderNodeChangeEvent {
53
+ /** What happened */
54
+ type: 'created' | 'updated' | 'deleted';
55
+ /** Node ID in the provider's local format */
56
+ nodeId: string;
57
+ /** Canonical URI for the node */
58
+ uri: string;
59
+ /** Full node data (absent for deletes, may be absent if provider can't supply cheaply) */
60
+ node?: ProviderNode;
61
+ /**
62
+ * Which fields changed (only for 'updated' events).
63
+ * Present when `watchGranularity.reportsChangedFields` is true.
64
+ * Uses ProviderNode field names: 'title', 'content', 'status', 'priority', etc.
65
+ */
66
+ changedFields?: string[];
67
+ /**
68
+ * Previous values of changed fields (only for 'updated' events).
69
+ * Present when `watchGranularity.reportsPreviousValues` is true.
70
+ * Keys match `changedFields`.
71
+ */
72
+ previousValues?: Record<string, unknown>;
73
+ /** Provider-side timestamp of when the change occurred (ISO 8601) */
74
+ timestamp: string;
75
+ }
76
+ /**
77
+ * Event emitted when an edge changes in the provider's data source.
78
+ *
79
+ * Only emitted when `watchGranularity.reportsEdgeChanges` is true.
80
+ * For providers where edges are embedded in nodes (e.g., Beads
81
+ * blocks/blockedBy arrays), edge changes arrive as part of
82
+ * node update events instead.
83
+ */
84
+ export interface ProviderEdgeChangeEvent {
85
+ /** What happened */
86
+ type: 'created' | 'deleted';
87
+ /** The edge that changed */
88
+ edge: ProviderEdge;
89
+ /** URI of the source node */
90
+ sourceUri: string;
91
+ /** URI of the target node */
92
+ targetUri: string;
93
+ /** Provider-side timestamp (ISO 8601) */
94
+ timestamp: string;
95
+ }
96
+ /**
97
+ * Discriminated union of all provider change events.
98
+ *
99
+ * Consumers switch on `kind` to handle node vs. edge events:
100
+ *
101
+ * ```typescript
102
+ * provider.startWatching((event) => {
103
+ * switch (event.kind) {
104
+ * case 'node':
105
+ * handleNodeChange(event.event)
106
+ * break
107
+ * case 'edge':
108
+ * handleEdgeChange(event.event)
109
+ * break
110
+ * }
111
+ * })
112
+ * ```
113
+ */
114
+ export type ProviderChangeEvent = {
115
+ kind: 'node';
116
+ event: ProviderNodeChangeEvent;
117
+ } | {
118
+ kind: 'edge';
119
+ event: ProviderEdgeChangeEvent;
120
+ };
121
+ /**
122
+ * Callback for receiving provider change events
123
+ */
124
+ export type WatchChangeCallback = (event: ProviderChangeEvent) => void;
125
+ /**
126
+ * Watchable Trait
127
+ *
128
+ * Providers implement this trait to emit change events from their
129
+ * underlying data source. The detection mechanism is entirely
130
+ * provider-specific:
131
+ *
132
+ * - **Beads**: file-watch on Beads JSONL files, diff against cached hashes
133
+ * - **Native**: delegates to the daemon FileWatcher on graph.jsonl
134
+ * - **Jira/Linear**: webhook receiver or long-poll
135
+ * - **Claude Tasks**: not applicable (ephemeral, caller is only writer)
136
+ *
137
+ * Lifecycle:
138
+ * 1. Check `isWatchable(provider)` before calling watch methods
139
+ * 2. Call `startWatching(callback)` to begin receiving events
140
+ * 3. Call `stopWatching()` to clean up resources
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * const provider = registry.resolveProvider(uri)
145
+ * if (provider && isWatchable(provider)) {
146
+ * console.log('Mechanism:', provider.watchGranularity.mechanism)
147
+ * console.log('Reports fields:', provider.watchGranularity.reportsChangedFields)
148
+ *
149
+ * provider.startWatching((event) => {
150
+ * if (event.kind === 'node' && event.event.type === 'updated') {
151
+ * console.log(`Node ${event.event.nodeId} changed`)
152
+ * if (event.event.changedFields) {
153
+ * console.log('Changed fields:', event.event.changedFields)
154
+ * }
155
+ * }
156
+ * })
157
+ *
158
+ * // Later...
159
+ * provider.stopWatching()
160
+ * }
161
+ * ```
162
+ */
163
+ export interface Watchable {
164
+ /**
165
+ * Declares the granularity of change events this provider emits.
166
+ *
167
+ * Consumers use this to adapt behavior — e.g., skip full re-fetch
168
+ * when changedFields is available, or listen for edge events only
169
+ * when the provider reports them.
170
+ */
171
+ readonly watchGranularity: WatchGranularity;
172
+ /**
173
+ * Start watching for changes and emitting events via the callback.
174
+ *
175
+ * Providers should:
176
+ * - Set up their detection mechanism (file watcher, interval, etc.)
177
+ * - Emit events through the callback as changes are detected
178
+ * - Handle their own debouncing and deduplication
179
+ * - Be resilient to transient errors (log and continue)
180
+ *
181
+ * Calling `startWatching` when already watching replaces the callback.
182
+ *
183
+ * @param callback - Function called for each change event
184
+ */
185
+ startWatching(callback: WatchChangeCallback): void;
186
+ /**
187
+ * Stop watching and release all associated resources.
188
+ *
189
+ * After calling `stopWatching`:
190
+ * - No more events will be emitted
191
+ * - File watchers / intervals / connections are cleaned up
192
+ * - `isWatching` returns false
193
+ *
194
+ * Safe to call multiple times or when not watching.
195
+ */
196
+ stopWatching(): void;
197
+ /** Whether the provider is currently watching for changes */
198
+ readonly isWatching: boolean;
199
+ }
200
+ /**
201
+ * Check if a provider implements the Watchable trait
202
+ *
203
+ * @param provider - The provider to check
204
+ * @returns True if the provider can watch for changes
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * for (const provider of registry.list()) {
209
+ * if (isWatchable(provider)) {
210
+ * provider.startWatching(handleChange)
211
+ * }
212
+ * }
213
+ * ```
214
+ */
215
+ export declare function isWatchable(provider: Provider): provider is Provider & Watchable;
216
+ //# sourceMappingURL=Watchable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Watchable.d.ts","sourceRoot":"","sources":["../../../src/providers/traits/Watchable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM/D;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B,uDAAuD;IACvD,SAAS,EAAE,cAAc,CAAC;CAC3B;AAMD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,oBAAoB;IACpB,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAExC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IAEZ,0FAA0F;IAC1F,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,oBAAoB;IACpB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAE5B,4BAA4B;IAC5B,IAAI,EAAE,YAAY,CAAC;IAEnB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAMvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE5C;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAEnD;;;;;;;;;OASG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,IAAI,QAAQ,GAAG,SAAS,CAQhF"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Watchable Trait
3
+ *
4
+ * Optional trait for providers that can detect and emit change events
5
+ * from their underlying data source. Each provider is responsible for
6
+ * its own watching mechanism (file watching, polling, webhooks, etc.).
7
+ *
8
+ * The granularity of change events is provider-dependent. Providers
9
+ * declare their capabilities via `watchGranularity`, and consumers
10
+ * can adapt their behavior accordingly.
11
+ */
12
+ // ============================================================================
13
+ // Type Guard
14
+ // ============================================================================
15
+ /**
16
+ * Check if a provider implements the Watchable trait
17
+ *
18
+ * @param provider - The provider to check
19
+ * @returns True if the provider can watch for changes
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * for (const provider of registry.list()) {
24
+ * if (isWatchable(provider)) {
25
+ * provider.startWatching(handleChange)
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ export function isWatchable(provider) {
31
+ const p = provider;
32
+ return (typeof p.startWatching === 'function' &&
33
+ typeof p.stopWatching === 'function' &&
34
+ p.watchGranularity !== undefined &&
35
+ typeof p.watchGranularity === 'object');
36
+ }
37
+ //# sourceMappingURL=Watchable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Watchable.js","sourceRoot":"","sources":["../../../src/providers/traits/Watchable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8NH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,MAAM,CAAC,GAAG,QAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,aAAa,KAAK,UAAU;QACrC,OAAO,CAAC,CAAC,YAAY,KAAK,UAAU;QACpC,CAAC,CAAC,gBAAgB,KAAK,SAAS;QAChC,OAAO,CAAC,CAAC,gBAAgB,KAAK,QAAQ,CACvC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RelationshipQueryable.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationshipQueryable.test.d.ts","sourceRoot":"","sources":["../../../../src/providers/traits/__tests__/RelationshipQueryable.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,169 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { isRelationshipQueryable, filterEdgesByType, filterEdgesByDirection, getNeighborFromEdge, } from '../RelationshipQueryable.js';
3
+ // Mock provider that doesn't implement RelationshipQueryable
4
+ const mockBasicProvider = {
5
+ name: 'basic',
6
+ schemes: ['basic'],
7
+ capabilities: { read: true, write: false, search: false, watch: false, mount: false, feedback: false },
8
+ parseUri: () => null,
9
+ buildUri: (id) => `basic://${id}`,
10
+ isValidUri: () => false,
11
+ get: async () => null,
12
+ list: async () => [],
13
+ create: async () => ({}),
14
+ update: async () => ({}),
15
+ delete: async () => { },
16
+ };
17
+ // Mock provider that implements RelationshipQueryable
18
+ const mockRelationshipProvider = {
19
+ name: 'relationship',
20
+ schemes: ['rel'],
21
+ capabilities: { read: true, write: true, search: false, watch: false, mount: true, feedback: false },
22
+ parseUri: (uri) => {
23
+ if (uri.startsWith('rel://')) {
24
+ return { scheme: 'rel', id: uri.slice(6), isRelative: false };
25
+ }
26
+ return null;
27
+ },
28
+ buildUri: (id) => `rel://${id}`,
29
+ isValidUri: (uri) => uri.startsWith('rel://'),
30
+ get: async () => null,
31
+ list: async () => [],
32
+ create: async () => ({}),
33
+ update: async () => ({}),
34
+ delete: async () => { },
35
+ queryEdges: async (nodeId, options) => {
36
+ const allEdges = [
37
+ { from: 'node-1', to: 'node-2', type: 'blocks' },
38
+ { from: 'node-3', to: 'node-1', type: 'blocks' },
39
+ { from: 'node-1', to: 'node-4', type: 'related' },
40
+ ];
41
+ let edges = allEdges.filter((e) => e.from === nodeId || e.to === nodeId);
42
+ if (options?.edgeType) {
43
+ edges = edges.filter((e) => e.type === options.edgeType);
44
+ }
45
+ if (options?.direction === 'in') {
46
+ edges = edges.filter((e) => e.to === nodeId);
47
+ }
48
+ else if (options?.direction === 'out') {
49
+ edges = edges.filter((e) => e.from === nodeId);
50
+ }
51
+ return edges;
52
+ },
53
+ supportedEdgeTypes: () => [
54
+ { type: 'blocks', canQuery: true, canCreate: true, canDelete: true },
55
+ { type: 'related', canQuery: true, canCreate: false, canDelete: false },
56
+ ],
57
+ };
58
+ describe('isRelationshipQueryable', () => {
59
+ it('returns false for providers without queryEdges', () => {
60
+ expect(isRelationshipQueryable(mockBasicProvider)).toBe(false);
61
+ });
62
+ it('returns true for providers with queryEdges and supportedEdgeTypes', () => {
63
+ expect(isRelationshipQueryable(mockRelationshipProvider)).toBe(true);
64
+ });
65
+ it('returns false for providers with only queryEdges', () => {
66
+ const partialProvider = {
67
+ ...mockBasicProvider,
68
+ queryEdges: async () => [],
69
+ };
70
+ expect(isRelationshipQueryable(partialProvider)).toBe(false);
71
+ });
72
+ it('returns false for providers with only supportedEdgeTypes', () => {
73
+ const partialProvider = {
74
+ ...mockBasicProvider,
75
+ supportedEdgeTypes: () => [],
76
+ };
77
+ expect(isRelationshipQueryable(partialProvider)).toBe(false);
78
+ });
79
+ });
80
+ describe('RelationshipQueryable implementation', () => {
81
+ it('queries all edges for a node', async () => {
82
+ const edges = await mockRelationshipProvider.queryEdges('node-1');
83
+ expect(edges).toHaveLength(3);
84
+ });
85
+ it('filters by edge type', async () => {
86
+ const edges = await mockRelationshipProvider.queryEdges('node-1', {
87
+ edgeType: 'blocks',
88
+ });
89
+ expect(edges).toHaveLength(2);
90
+ expect(edges.every((e) => e.type === 'blocks')).toBe(true);
91
+ });
92
+ it('filters by direction in', async () => {
93
+ const edges = await mockRelationshipProvider.queryEdges('node-1', {
94
+ direction: 'in',
95
+ });
96
+ expect(edges).toHaveLength(1);
97
+ expect(edges[0].to).toBe('node-1');
98
+ });
99
+ it('filters by direction out', async () => {
100
+ const edges = await mockRelationshipProvider.queryEdges('node-1', {
101
+ direction: 'out',
102
+ });
103
+ expect(edges).toHaveLength(2);
104
+ expect(edges.every((e) => e.from === 'node-1')).toBe(true);
105
+ });
106
+ it('returns supported edge types', () => {
107
+ const types = mockRelationshipProvider.supportedEdgeTypes();
108
+ expect(types).toHaveLength(2);
109
+ expect(types[0].type).toBe('blocks');
110
+ expect(types[0].canCreate).toBe(true);
111
+ expect(types[1].type).toBe('related');
112
+ expect(types[1].canCreate).toBe(false);
113
+ });
114
+ });
115
+ describe('filterEdgesByType', () => {
116
+ const edges = [
117
+ { from: 'a', to: 'b', type: 'blocks' },
118
+ { from: 'b', to: 'c', type: 'blocks' },
119
+ { from: 'a', to: 'c', type: 'related' },
120
+ ];
121
+ it('filters edges by type', () => {
122
+ const result = filterEdgesByType(edges, 'blocks');
123
+ expect(result).toHaveLength(2);
124
+ expect(result.every((e) => e.type === 'blocks')).toBe(true);
125
+ });
126
+ it('returns empty for non-matching type', () => {
127
+ const result = filterEdgesByType(edges, 'implements');
128
+ expect(result).toHaveLength(0);
129
+ });
130
+ });
131
+ describe('filterEdgesByDirection', () => {
132
+ const edges = [
133
+ { from: 'a', to: 'b', type: 'blocks' },
134
+ { from: 'b', to: 'a', type: 'blocks' },
135
+ { from: 'a', to: 'c', type: 'related' },
136
+ ];
137
+ it('filters incoming edges', () => {
138
+ const result = filterEdgesByDirection(edges, 'a', 'in');
139
+ expect(result).toHaveLength(1);
140
+ expect(result[0].from).toBe('b');
141
+ expect(result[0].to).toBe('a');
142
+ });
143
+ it('filters outgoing edges', () => {
144
+ const result = filterEdgesByDirection(edges, 'a', 'out');
145
+ expect(result).toHaveLength(2);
146
+ expect(result.every((e) => e.from === 'a')).toBe(true);
147
+ });
148
+ it('returns both directions', () => {
149
+ const result = filterEdgesByDirection(edges, 'a', 'both');
150
+ expect(result).toHaveLength(3);
151
+ });
152
+ it('returns empty for unconnected node', () => {
153
+ const result = filterEdgesByDirection(edges, 'z', 'both');
154
+ expect(result).toHaveLength(0);
155
+ });
156
+ });
157
+ describe('getNeighborFromEdge', () => {
158
+ const edge = { from: 'a', to: 'b', type: 'blocks' };
159
+ it('returns target when nodeId is source', () => {
160
+ expect(getNeighborFromEdge(edge, 'a')).toBe('b');
161
+ });
162
+ it('returns source when nodeId is target', () => {
163
+ expect(getNeighborFromEdge(edge, 'b')).toBe('a');
164
+ });
165
+ it('returns null when nodeId not in edge', () => {
166
+ expect(getNeighborFromEdge(edge, 'c')).toBeNull();
167
+ });
168
+ });
169
+ //# sourceMappingURL=RelationshipQueryable.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationshipQueryable.test.js","sourceRoot":"","sources":["../../../../src/providers/traits/__tests__/RelationshipQueryable.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TaskManageable.test.d.ts.map