opentasks 0.0.5 → 0.0.6

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 (311) hide show
  1. package/README.md +40 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +153 -8
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config/schema.d.ts +54 -0
  6. package/dist/config/schema.d.ts.map +1 -1
  7. package/dist/config/schema.js +52 -0
  8. package/dist/config/schema.js.map +1 -1
  9. package/dist/core/merge-driver.d.ts +6 -2
  10. package/dist/core/merge-driver.d.ts.map +1 -1
  11. package/dist/core/merge-driver.js +11 -7
  12. package/dist/core/merge-driver.js.map +1 -1
  13. package/dist/core/worktree.js +1 -1
  14. package/dist/core/worktree.js.map +1 -1
  15. package/dist/daemon/ipc.d.ts.map +1 -1
  16. package/dist/daemon/ipc.js +4 -1
  17. package/dist/daemon/ipc.js.map +1 -1
  18. package/dist/daemon/lifecycle.d.ts.map +1 -1
  19. package/dist/daemon/lifecycle.js +5 -0
  20. package/dist/daemon/lifecycle.js.map +1 -1
  21. package/dist/graph/git-graph-syncer.js +1 -1
  22. package/dist/graph/git-graph-syncer.js.map +1 -1
  23. package/dist/providers/from-config.d.ts +3 -0
  24. package/dist/providers/from-config.d.ts.map +1 -1
  25. package/dist/providers/from-config.js +29 -0
  26. package/dist/providers/from-config.js.map +1 -1
  27. package/dist/providers/index.d.ts +3 -0
  28. package/dist/providers/index.d.ts.map +1 -1
  29. package/dist/providers/index.js +6 -0
  30. package/dist/providers/index.js.map +1 -1
  31. package/dist/providers/map-client-factory.d.ts +55 -0
  32. package/dist/providers/map-client-factory.d.ts.map +1 -0
  33. package/dist/providers/map-client-factory.js +123 -0
  34. package/dist/providers/map-client-factory.js.map +1 -0
  35. package/dist/providers/map-event-bridge.d.ts +146 -0
  36. package/dist/providers/map-event-bridge.d.ts.map +1 -0
  37. package/dist/providers/map-event-bridge.js +208 -0
  38. package/dist/providers/map-event-bridge.js.map +1 -0
  39. package/dist/providers/map.d.ts +115 -0
  40. package/dist/providers/map.d.ts.map +1 -0
  41. package/dist/providers/map.js +376 -0
  42. package/dist/providers/map.js.map +1 -0
  43. package/package.json +1 -1
  44. package/dist/__tests__/cli-tools.test.d.ts +0 -8
  45. package/dist/__tests__/cli-tools.test.d.ts.map +0 -1
  46. package/dist/__tests__/cli-tools.test.js +0 -546
  47. package/dist/__tests__/cli-tools.test.js.map +0 -1
  48. package/dist/__tests__/cli.test.d.ts +0 -5
  49. package/dist/__tests__/cli.test.d.ts.map +0 -1
  50. package/dist/__tests__/cli.test.js +0 -77
  51. package/dist/__tests__/cli.test.js.map +0 -1
  52. package/dist/__tests__/p1-p3-gaps.test.d.ts +0 -2
  53. package/dist/__tests__/p1-p3-gaps.test.d.ts.map +0 -1
  54. package/dist/__tests__/p1-p3-gaps.test.js +0 -463
  55. package/dist/__tests__/p1-p3-gaps.test.js.map +0 -1
  56. package/dist/client/__tests__/client-crud.test.d.ts +0 -7
  57. package/dist/client/__tests__/client-crud.test.d.ts.map +0 -1
  58. package/dist/client/__tests__/client-crud.test.js +0 -404
  59. package/dist/client/__tests__/client-crud.test.js.map +0 -1
  60. package/dist/client/__tests__/client.test.d.ts +0 -5
  61. package/dist/client/__tests__/client.test.d.ts.map +0 -1
  62. package/dist/client/__tests__/client.test.js +0 -518
  63. package/dist/client/__tests__/client.test.js.map +0 -1
  64. package/dist/config/__tests__/defaults.test.d.ts +0 -2
  65. package/dist/config/__tests__/defaults.test.d.ts.map +0 -1
  66. package/dist/config/__tests__/defaults.test.js +0 -57
  67. package/dist/config/__tests__/defaults.test.js.map +0 -1
  68. package/dist/config/__tests__/env.test.d.ts +0 -2
  69. package/dist/config/__tests__/env.test.d.ts.map +0 -1
  70. package/dist/config/__tests__/env.test.js +0 -136
  71. package/dist/config/__tests__/env.test.js.map +0 -1
  72. package/dist/config/__tests__/index.test.d.ts +0 -2
  73. package/dist/config/__tests__/index.test.d.ts.map +0 -1
  74. package/dist/config/__tests__/index.test.js +0 -113
  75. package/dist/config/__tests__/index.test.js.map +0 -1
  76. package/dist/config/__tests__/loader.test.d.ts +0 -2
  77. package/dist/config/__tests__/loader.test.d.ts.map +0 -1
  78. package/dist/config/__tests__/loader.test.js +0 -128
  79. package/dist/config/__tests__/loader.test.js.map +0 -1
  80. package/dist/config/__tests__/merge.test.d.ts +0 -2
  81. package/dist/config/__tests__/merge.test.d.ts.map +0 -1
  82. package/dist/config/__tests__/merge.test.js +0 -79
  83. package/dist/config/__tests__/merge.test.js.map +0 -1
  84. package/dist/config/__tests__/schema.test.d.ts +0 -2
  85. package/dist/config/__tests__/schema.test.d.ts.map +0 -1
  86. package/dist/config/__tests__/schema.test.js +0 -300
  87. package/dist/config/__tests__/schema.test.js.map +0 -1
  88. package/dist/core/__tests__/conditional-redirects.test.d.ts +0 -2
  89. package/dist/core/__tests__/conditional-redirects.test.d.ts.map +0 -1
  90. package/dist/core/__tests__/conditional-redirects.test.js +0 -83
  91. package/dist/core/__tests__/conditional-redirects.test.js.map +0 -1
  92. package/dist/core/__tests__/connections.test.d.ts +0 -2
  93. package/dist/core/__tests__/connections.test.d.ts.map +0 -1
  94. package/dist/core/__tests__/connections.test.js +0 -158
  95. package/dist/core/__tests__/connections.test.js.map +0 -1
  96. package/dist/core/__tests__/hash.test.d.ts +0 -2
  97. package/dist/core/__tests__/hash.test.d.ts.map +0 -1
  98. package/dist/core/__tests__/hash.test.js +0 -139
  99. package/dist/core/__tests__/hash.test.js.map +0 -1
  100. package/dist/core/__tests__/id.test.d.ts +0 -2
  101. package/dist/core/__tests__/id.test.d.ts.map +0 -1
  102. package/dist/core/__tests__/id.test.js +0 -142
  103. package/dist/core/__tests__/id.test.js.map +0 -1
  104. package/dist/core/__tests__/location.test.d.ts +0 -2
  105. package/dist/core/__tests__/location.test.d.ts.map +0 -1
  106. package/dist/core/__tests__/location.test.js +0 -77
  107. package/dist/core/__tests__/location.test.js.map +0 -1
  108. package/dist/core/__tests__/merge-driver.test.d.ts +0 -2
  109. package/dist/core/__tests__/merge-driver.test.d.ts.map +0 -1
  110. package/dist/core/__tests__/merge-driver.test.js +0 -218
  111. package/dist/core/__tests__/merge-driver.test.js.map +0 -1
  112. package/dist/core/__tests__/redirects.test.d.ts +0 -2
  113. package/dist/core/__tests__/redirects.test.d.ts.map +0 -1
  114. package/dist/core/__tests__/redirects.test.js +0 -123
  115. package/dist/core/__tests__/redirects.test.js.map +0 -1
  116. package/dist/core/__tests__/resolve-location-target.test.d.ts +0 -8
  117. package/dist/core/__tests__/resolve-location-target.test.d.ts.map +0 -1
  118. package/dist/core/__tests__/resolve-location-target.test.js +0 -303
  119. package/dist/core/__tests__/resolve-location-target.test.js.map +0 -1
  120. package/dist/core/__tests__/uri.test.d.ts +0 -2
  121. package/dist/core/__tests__/uri.test.d.ts.map +0 -1
  122. package/dist/core/__tests__/uri.test.js +0 -159
  123. package/dist/core/__tests__/uri.test.js.map +0 -1
  124. package/dist/core/__tests__/worktree.test.d.ts +0 -2
  125. package/dist/core/__tests__/worktree.test.d.ts.map +0 -1
  126. package/dist/core/__tests__/worktree.test.js +0 -120
  127. package/dist/core/__tests__/worktree.test.js.map +0 -1
  128. package/dist/daemon/__tests__/flush.test.d.ts +0 -5
  129. package/dist/daemon/__tests__/flush.test.d.ts.map +0 -1
  130. package/dist/daemon/__tests__/flush.test.js +0 -213
  131. package/dist/daemon/__tests__/flush.test.js.map +0 -1
  132. package/dist/daemon/__tests__/integration.test.d.ts +0 -7
  133. package/dist/daemon/__tests__/integration.test.d.ts.map +0 -1
  134. package/dist/daemon/__tests__/integration.test.js +0 -276
  135. package/dist/daemon/__tests__/integration.test.js.map +0 -1
  136. package/dist/daemon/__tests__/ipc.test.d.ts +0 -5
  137. package/dist/daemon/__tests__/ipc.test.d.ts.map +0 -1
  138. package/dist/daemon/__tests__/ipc.test.js +0 -314
  139. package/dist/daemon/__tests__/ipc.test.js.map +0 -1
  140. package/dist/daemon/__tests__/lifecycle.test.d.ts +0 -5
  141. package/dist/daemon/__tests__/lifecycle.test.d.ts.map +0 -1
  142. package/dist/daemon/__tests__/lifecycle.test.js +0 -301
  143. package/dist/daemon/__tests__/lifecycle.test.js.map +0 -1
  144. package/dist/daemon/__tests__/lock.test.d.ts +0 -5
  145. package/dist/daemon/__tests__/lock.test.d.ts.map +0 -1
  146. package/dist/daemon/__tests__/lock.test.js +0 -192
  147. package/dist/daemon/__tests__/lock.test.js.map +0 -1
  148. package/dist/daemon/__tests__/methods/graph.test.d.ts +0 -5
  149. package/dist/daemon/__tests__/methods/graph.test.d.ts.map +0 -1
  150. package/dist/daemon/__tests__/methods/graph.test.js +0 -309
  151. package/dist/daemon/__tests__/methods/graph.test.js.map +0 -1
  152. package/dist/daemon/__tests__/methods/provider.test.d.ts +0 -7
  153. package/dist/daemon/__tests__/methods/provider.test.d.ts.map +0 -1
  154. package/dist/daemon/__tests__/methods/provider.test.js +0 -181
  155. package/dist/daemon/__tests__/methods/provider.test.js.map +0 -1
  156. package/dist/daemon/__tests__/methods/tools.test.d.ts +0 -5
  157. package/dist/daemon/__tests__/methods/tools.test.d.ts.map +0 -1
  158. package/dist/daemon/__tests__/methods/tools.test.js +0 -587
  159. package/dist/daemon/__tests__/methods/tools.test.js.map +0 -1
  160. package/dist/daemon/__tests__/multi-location.test.d.ts +0 -8
  161. package/dist/daemon/__tests__/multi-location.test.d.ts.map +0 -1
  162. package/dist/daemon/__tests__/multi-location.test.js +0 -669
  163. package/dist/daemon/__tests__/multi-location.test.js.map +0 -1
  164. package/dist/daemon/__tests__/registry.test.d.ts +0 -5
  165. package/dist/daemon/__tests__/registry.test.d.ts.map +0 -1
  166. package/dist/daemon/__tests__/registry.test.js +0 -208
  167. package/dist/daemon/__tests__/registry.test.js.map +0 -1
  168. package/dist/daemon/__tests__/watcher.test.d.ts +0 -5
  169. package/dist/daemon/__tests__/watcher.test.d.ts.map +0 -1
  170. package/dist/daemon/__tests__/watcher.test.js +0 -234
  171. package/dist/daemon/__tests__/watcher.test.js.map +0 -1
  172. package/dist/daemon/methods/__tests__/graph.test.d.ts +0 -5
  173. package/dist/daemon/methods/__tests__/graph.test.d.ts.map +0 -1
  174. package/dist/daemon/methods/__tests__/graph.test.js +0 -274
  175. package/dist/daemon/methods/__tests__/graph.test.js.map +0 -1
  176. package/dist/daemon/methods/__tests__/provider.test.d.ts +0 -5
  177. package/dist/daemon/methods/__tests__/provider.test.d.ts.map +0 -1
  178. package/dist/daemon/methods/__tests__/provider.test.js +0 -184
  179. package/dist/daemon/methods/__tests__/provider.test.js.map +0 -1
  180. package/dist/daemon/methods/__tests__/tools.test.d.ts +0 -5
  181. package/dist/daemon/methods/__tests__/tools.test.d.ts.map +0 -1
  182. package/dist/daemon/methods/__tests__/tools.test.js +0 -295
  183. package/dist/daemon/methods/__tests__/tools.test.js.map +0 -1
  184. package/dist/graph/__tests__/EdgeTypeRegistry.test.d.ts +0 -2
  185. package/dist/graph/__tests__/EdgeTypeRegistry.test.d.ts.map +0 -1
  186. package/dist/graph/__tests__/EdgeTypeRegistry.test.js +0 -212
  187. package/dist/graph/__tests__/EdgeTypeRegistry.test.js.map +0 -1
  188. package/dist/graph/__tests__/FederatedGraph.test.d.ts +0 -2
  189. package/dist/graph/__tests__/FederatedGraph.test.d.ts.map +0 -1
  190. package/dist/graph/__tests__/FederatedGraph.test.js +0 -661
  191. package/dist/graph/__tests__/FederatedGraph.test.js.map +0 -1
  192. package/dist/graph/__tests__/GraphologyAdapter.test.d.ts +0 -2
  193. package/dist/graph/__tests__/GraphologyAdapter.test.d.ts.map +0 -1
  194. package/dist/graph/__tests__/GraphologyAdapter.test.js +0 -326
  195. package/dist/graph/__tests__/GraphologyAdapter.test.js.map +0 -1
  196. package/dist/graph/__tests__/HydratingFederatedGraph.test.d.ts +0 -2
  197. package/dist/graph/__tests__/HydratingFederatedGraph.test.d.ts.map +0 -1
  198. package/dist/graph/__tests__/HydratingFederatedGraph.test.js +0 -587
  199. package/dist/graph/__tests__/HydratingFederatedGraph.test.js.map +0 -1
  200. package/dist/graph/__tests__/debounce.test.d.ts +0 -5
  201. package/dist/graph/__tests__/debounce.test.d.ts.map +0 -1
  202. package/dist/graph/__tests__/debounce.test.js +0 -195
  203. package/dist/graph/__tests__/debounce.test.js.map +0 -1
  204. package/dist/graph/__tests__/edge-cases.test.d.ts +0 -8
  205. package/dist/graph/__tests__/edge-cases.test.d.ts.map +0 -1
  206. package/dist/graph/__tests__/edge-cases.test.js +0 -472
  207. package/dist/graph/__tests__/edge-cases.test.js.map +0 -1
  208. package/dist/graph/__tests__/expansion.test.d.ts +0 -2
  209. package/dist/graph/__tests__/expansion.test.d.ts.map +0 -1
  210. package/dist/graph/__tests__/expansion.test.js +0 -105
  211. package/dist/graph/__tests__/expansion.test.js.map +0 -1
  212. package/dist/graph/__tests__/provider-store.test.d.ts +0 -5
  213. package/dist/graph/__tests__/provider-store.test.d.ts.map +0 -1
  214. package/dist/graph/__tests__/provider-store.test.js +0 -791
  215. package/dist/graph/__tests__/provider-store.test.js.map +0 -1
  216. package/dist/graph/__tests__/query.test.d.ts +0 -5
  217. package/dist/graph/__tests__/query.test.d.ts.map +0 -1
  218. package/dist/graph/__tests__/query.test.js +0 -774
  219. package/dist/graph/__tests__/query.test.js.map +0 -1
  220. package/dist/graph/__tests__/store.test.d.ts +0 -5
  221. package/dist/graph/__tests__/store.test.d.ts.map +0 -1
  222. package/dist/graph/__tests__/store.test.js +0 -489
  223. package/dist/graph/__tests__/store.test.js.map +0 -1
  224. package/dist/graph/__tests__/sync.test.d.ts +0 -5
  225. package/dist/graph/__tests__/sync.test.d.ts.map +0 -1
  226. package/dist/graph/__tests__/sync.test.js +0 -129
  227. package/dist/graph/__tests__/sync.test.js.map +0 -1
  228. package/dist/graph/__tests__/validation.test.d.ts +0 -2
  229. package/dist/graph/__tests__/validation.test.d.ts.map +0 -1
  230. package/dist/graph/__tests__/validation.test.js +0 -521
  231. package/dist/graph/__tests__/validation.test.js.map +0 -1
  232. package/dist/providers/__tests__/beads.test.d.ts +0 -5
  233. package/dist/providers/__tests__/beads.test.d.ts.map +0 -1
  234. package/dist/providers/__tests__/beads.test.js +0 -591
  235. package/dist/providers/__tests__/beads.test.js.map +0 -1
  236. package/dist/providers/__tests__/claude-tasks.test.d.ts +0 -5
  237. package/dist/providers/__tests__/claude-tasks.test.d.ts.map +0 -1
  238. package/dist/providers/__tests__/claude-tasks.test.js +0 -392
  239. package/dist/providers/__tests__/claude-tasks.test.js.map +0 -1
  240. package/dist/providers/__tests__/from-config.test.d.ts +0 -5
  241. package/dist/providers/__tests__/from-config.test.d.ts.map +0 -1
  242. package/dist/providers/__tests__/from-config.test.js +0 -152
  243. package/dist/providers/__tests__/from-config.test.js.map +0 -1
  244. package/dist/providers/__tests__/materialization.test.d.ts +0 -5
  245. package/dist/providers/__tests__/materialization.test.d.ts.map +0 -1
  246. package/dist/providers/__tests__/materialization.test.js +0 -407
  247. package/dist/providers/__tests__/materialization.test.js.map +0 -1
  248. package/dist/providers/__tests__/native.test.d.ts +0 -5
  249. package/dist/providers/__tests__/native.test.d.ts.map +0 -1
  250. package/dist/providers/__tests__/native.test.js +0 -566
  251. package/dist/providers/__tests__/native.test.js.map +0 -1
  252. package/dist/providers/__tests__/registry.test.d.ts +0 -5
  253. package/dist/providers/__tests__/registry.test.d.ts.map +0 -1
  254. package/dist/providers/__tests__/registry.test.js +0 -183
  255. package/dist/providers/__tests__/registry.test.js.map +0 -1
  256. package/dist/providers/traits/__tests__/RelationshipQueryable.test.d.ts +0 -2
  257. package/dist/providers/traits/__tests__/RelationshipQueryable.test.d.ts.map +0 -1
  258. package/dist/providers/traits/__tests__/RelationshipQueryable.test.js +0 -169
  259. package/dist/providers/traits/__tests__/RelationshipQueryable.test.js.map +0 -1
  260. package/dist/providers/traits/__tests__/TaskManageable.test.d.ts +0 -2
  261. package/dist/providers/traits/__tests__/TaskManageable.test.d.ts.map +0 -1
  262. package/dist/providers/traits/__tests__/TaskManageable.test.js +0 -172
  263. package/dist/providers/traits/__tests__/TaskManageable.test.js.map +0 -1
  264. package/dist/schema/__tests__/validation.test.d.ts +0 -2
  265. package/dist/schema/__tests__/validation.test.d.ts.map +0 -1
  266. package/dist/schema/__tests__/validation.test.js +0 -241
  267. package/dist/schema/__tests__/validation.test.js.map +0 -1
  268. package/dist/storage/__tests__/atomic-write.test.d.ts +0 -5
  269. package/dist/storage/__tests__/atomic-write.test.d.ts.map +0 -1
  270. package/dist/storage/__tests__/atomic-write.test.js +0 -170
  271. package/dist/storage/__tests__/atomic-write.test.js.map +0 -1
  272. package/dist/storage/__tests__/file-lock.test.d.ts +0 -2
  273. package/dist/storage/__tests__/file-lock.test.d.ts.map +0 -1
  274. package/dist/storage/__tests__/file-lock.test.js +0 -89
  275. package/dist/storage/__tests__/file-lock.test.js.map +0 -1
  276. package/dist/storage/__tests__/jsonl.test.d.ts +0 -2
  277. package/dist/storage/__tests__/jsonl.test.d.ts.map +0 -1
  278. package/dist/storage/__tests__/jsonl.test.js +0 -228
  279. package/dist/storage/__tests__/jsonl.test.js.map +0 -1
  280. package/dist/storage/__tests__/locked-writer.test.d.ts +0 -2
  281. package/dist/storage/__tests__/locked-writer.test.d.ts.map +0 -1
  282. package/dist/storage/__tests__/locked-writer.test.js +0 -109
  283. package/dist/storage/__tests__/locked-writer.test.js.map +0 -1
  284. package/dist/storage/__tests__/sqlite.test.d.ts +0 -2
  285. package/dist/storage/__tests__/sqlite.test.d.ts.map +0 -1
  286. package/dist/storage/__tests__/sqlite.test.js +0 -470
  287. package/dist/storage/__tests__/sqlite.test.js.map +0 -1
  288. package/dist/tools/__tests__/annotate.test.d.ts +0 -5
  289. package/dist/tools/__tests__/annotate.test.d.ts.map +0 -1
  290. package/dist/tools/__tests__/annotate.test.js +0 -314
  291. package/dist/tools/__tests__/annotate.test.js.map +0 -1
  292. package/dist/tools/__tests__/link.test.d.ts +0 -5
  293. package/dist/tools/__tests__/link.test.d.ts.map +0 -1
  294. package/dist/tools/__tests__/link.test.js +0 -245
  295. package/dist/tools/__tests__/link.test.js.map +0 -1
  296. package/dist/tools/__tests__/query.test.d.ts +0 -5
  297. package/dist/tools/__tests__/query.test.d.ts.map +0 -1
  298. package/dist/tools/__tests__/query.test.js +0 -288
  299. package/dist/tools/__tests__/query.test.js.map +0 -1
  300. package/dist/tools/__tests__/task.test.d.ts +0 -5
  301. package/dist/tools/__tests__/task.test.d.ts.map +0 -1
  302. package/dist/tools/__tests__/task.test.js +0 -178
  303. package/dist/tools/__tests__/task.test.js.map +0 -1
  304. package/dist/tracking/claude-task-reconstructor.d.ts +0 -41
  305. package/dist/tracking/claude-task-reconstructor.d.ts.map +0 -1
  306. package/dist/tracking/claude-task-reconstructor.js +0 -91
  307. package/dist/tracking/claude-task-reconstructor.js.map +0 -1
  308. package/dist/tracking/plan-mode-tracker.d.ts +0 -20
  309. package/dist/tracking/plan-mode-tracker.d.ts.map +0 -1
  310. package/dist/tracking/plan-mode-tracker.js +0 -35
  311. package/dist/tracking/plan-mode-tracker.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../../src/graph/__tests__/validation.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for Beads Provider
3
- */
4
- export {};
5
- //# sourceMappingURL=beads.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"beads.test.d.ts","sourceRoot":"","sources":["../../../src/providers/__tests__/beads.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,591 +0,0 @@
1
- /**
2
- * Tests for Beads Provider
3
- */
4
- import { describe, it, expect, beforeEach, vi } from 'vitest';
5
- import { createBeadsProvider } from '../beads.js';
6
- import { ProviderError } from '../types.js';
7
- import { isRelationshipQueryable } from '../traits/RelationshipQueryable.js';
8
- // Mock child_process
9
- vi.mock('child_process', () => ({
10
- exec: vi.fn(),
11
- }));
12
- import { exec } from 'child_process';
13
- describe('BeadsProvider', () => {
14
- let provider;
15
- let mockExec;
16
- // Helper to set up mock exec response
17
- function mockExecResponse(stdout, stderr = '') {
18
- mockExec.mockImplementation((cmd, options, callback) => {
19
- // Handle both callback styles
20
- const cb = callback || options;
21
- if (typeof cb === 'function') {
22
- cb(null, { stdout, stderr });
23
- }
24
- return { stdout, stderr };
25
- });
26
- }
27
- function mockExecError(error) {
28
- mockExec.mockImplementation((cmd, options, callback) => {
29
- const cb = callback || options;
30
- if (typeof cb === 'function') {
31
- cb(error, { stdout: '', stderr: error.message });
32
- }
33
- });
34
- }
35
- beforeEach(() => {
36
- mockExec = exec;
37
- mockExec.mockReset();
38
- provider = createBeadsProvider();
39
- });
40
- describe('metadata', () => {
41
- it('should have correct name', () => {
42
- expect(provider.name).toBe('beads');
43
- });
44
- it('should have correct schemes', () => {
45
- expect(provider.schemes).toEqual(['beads', 'bd']);
46
- });
47
- it('should have correct capabilities', () => {
48
- expect(provider.capabilities).toEqual({
49
- read: true,
50
- write: true,
51
- search: true,
52
- watch: false,
53
- mount: true,
54
- feedback: false,
55
- });
56
- });
57
- });
58
- describe('parseUri', () => {
59
- it('should parse beads:// URIs with workspace', () => {
60
- const result = provider.parseUri('beads://workspace/bd-123');
61
- expect(result).toEqual({
62
- scheme: 'beads',
63
- workspace: 'workspace',
64
- id: 'bd-123',
65
- isRelative: false,
66
- });
67
- });
68
- it('should parse beads:// URIs with relative workspace', () => {
69
- const result = provider.parseUri('beads://./bd-456');
70
- expect(result).toEqual({
71
- scheme: 'beads',
72
- workspace: '.',
73
- id: 'bd-456',
74
- isRelative: true,
75
- });
76
- });
77
- it('should parse bd:// shorthand URIs', () => {
78
- const result = provider.parseUri('bd://bd-789');
79
- expect(result).toEqual({
80
- scheme: 'bd',
81
- workspace: '.',
82
- id: 'bd-789',
83
- isRelative: true,
84
- });
85
- });
86
- it('should parse bd:// URIs with workspace', () => {
87
- const result = provider.parseUri('bd://myworkspace/bd-abc');
88
- expect(result).toEqual({
89
- scheme: 'bd',
90
- workspace: 'myworkspace',
91
- id: 'bd-abc',
92
- isRelative: false,
93
- });
94
- });
95
- it('should parse bare Beads IDs', () => {
96
- const result = provider.parseUri('bd-xyz');
97
- expect(result).toEqual({
98
- scheme: 'beads',
99
- workspace: '.',
100
- id: 'bd-xyz',
101
- isRelative: true,
102
- });
103
- });
104
- it('should be case-insensitive for schemes', () => {
105
- expect(provider.parseUri('BEADS://./bd-123')).toMatchObject({
106
- scheme: 'beads',
107
- id: 'bd-123',
108
- });
109
- expect(provider.parseUri('BD://./bd-456')).toMatchObject({
110
- scheme: 'bd',
111
- id: 'bd-456',
112
- });
113
- });
114
- it('should return null for unknown schemes', () => {
115
- expect(provider.parseUri('native://s-abc1')).toBeNull();
116
- expect(provider.parseUri('jira://PROJ-123')).toBeNull();
117
- });
118
- it('should return null for invalid IDs', () => {
119
- expect(provider.parseUri('invalid')).toBeNull();
120
- expect(provider.parseUri('s-abc1')).toBeNull();
121
- });
122
- });
123
- describe('buildUri', () => {
124
- it('should build full URIs with default workspace', () => {
125
- expect(provider.buildUri('bd-123')).toBe('beads://./bd-123');
126
- });
127
- it('should build full URIs with custom workspace', () => {
128
- expect(provider.buildUri('bd-123', { workspace: 'myworkspace' })).toBe('beads://myworkspace/bd-123');
129
- });
130
- it('should build relative URIs when requested', () => {
131
- expect(provider.buildUri('bd-123', { relative: true })).toBe('bd-123');
132
- });
133
- });
134
- describe('isValidUri', () => {
135
- it('should return true for valid URIs', () => {
136
- expect(provider.isValidUri('beads://./bd-123')).toBe(true);
137
- expect(provider.isValidUri('bd://bd-456')).toBe(true);
138
- expect(provider.isValidUri('bd-xyz')).toBe(true);
139
- });
140
- it('should return false for invalid URIs', () => {
141
- expect(provider.isValidUri('native://s-abc1')).toBe(false);
142
- expect(provider.isValidUri('invalid')).toBe(false);
143
- });
144
- });
145
- describe('get', () => {
146
- const mockIssue = {
147
- id: 'bd-123',
148
- title: 'Test Issue',
149
- description: 'Test description',
150
- status: 'open',
151
- priority: 2,
152
- };
153
- it('should get an issue by ID', async () => {
154
- // bd show returns an array
155
- mockExecResponse(JSON.stringify([mockIssue]));
156
- const result = await provider.get('bd-123');
157
- expect(mockExec).toHaveBeenCalled();
158
- const callArgs = mockExec.mock.calls[0][0];
159
- expect(callArgs).toContain('bd show bd-123 --json');
160
- expect(result).toMatchObject({
161
- id: 'bd-123',
162
- type: 'issue',
163
- title: 'Test Issue',
164
- content: 'Test description',
165
- status: 'open',
166
- priority: 2,
167
- });
168
- });
169
- it('should get an issue by full URI', async () => {
170
- // bd show returns an array
171
- mockExecResponse(JSON.stringify([mockIssue]));
172
- const result = await provider.get('beads://./bd-123');
173
- expect(result).not.toBeNull();
174
- const callArgs = mockExec.mock.calls[0][0];
175
- expect(callArgs).toContain('bd show bd-123 --json');
176
- });
177
- it('should return null for non-existent issue', async () => {
178
- const error = new Error('Issue not found');
179
- mockExecError(error);
180
- const result = await provider.get('bd-notfound');
181
- expect(result).toBeNull();
182
- });
183
- it('should include rawData', async () => {
184
- // bd show returns an array
185
- mockExecResponse(JSON.stringify([mockIssue]));
186
- const result = await provider.get('bd-123');
187
- expect(result?.rawData).toEqual(mockIssue);
188
- });
189
- });
190
- describe('list', () => {
191
- const mockIssues = [
192
- { id: 'bd-1', title: 'Issue 1', status: 'open' },
193
- { id: 'bd-2', title: 'Issue 2', status: 'done' },
194
- ];
195
- it('should list all issues', async () => {
196
- mockExecResponse(JSON.stringify(mockIssues));
197
- const result = await provider.list();
198
- expect(mockExec).toHaveBeenCalled();
199
- const callArgs = mockExec.mock.calls[0][0];
200
- expect(callArgs).toContain('bd list --json');
201
- expect(result).toHaveLength(2);
202
- expect(result[0].id).toBe('bd-1');
203
- expect(result[1].id).toBe('bd-2');
204
- });
205
- it('should list issues with status filter', async () => {
206
- mockExecResponse(JSON.stringify([mockIssues[0]]));
207
- await provider.list({ status: 'open' });
208
- const callArgs = mockExec.mock.calls[0][0];
209
- expect(callArgs).toContain('--status open');
210
- });
211
- it('should list issues with limit', async () => {
212
- mockExecResponse(JSON.stringify([mockIssues[0]]));
213
- await provider.list({ limit: 10 });
214
- const callArgs = mockExec.mock.calls[0][0];
215
- expect(callArgs).toContain('--limit 10');
216
- });
217
- });
218
- describe('create', () => {
219
- const mockCreatedIssue = {
220
- id: 'bd-new',
221
- title: 'New Issue',
222
- description: 'New description',
223
- status: 'open',
224
- };
225
- it('should create an issue', async () => {
226
- mockExecResponse(JSON.stringify(mockCreatedIssue));
227
- const result = await provider.create({
228
- type: 'issue',
229
- title: 'New Issue',
230
- content: 'New description',
231
- });
232
- expect(mockExec).toHaveBeenCalled();
233
- const callArgs = mockExec.mock.calls[0][0];
234
- expect(callArgs).toContain('bd create');
235
- expect(callArgs).toContain('New Issue');
236
- expect(callArgs).toContain('--description');
237
- expect(result.id).toBe('bd-new');
238
- expect(result.title).toBe('New Issue');
239
- });
240
- it('should create an issue with status', async () => {
241
- mockExecResponse(JSON.stringify(mockCreatedIssue));
242
- await provider.create({
243
- type: 'issue',
244
- title: 'New Issue',
245
- status: 'in_progress',
246
- });
247
- const callArgs = mockExec.mock.calls[0][0];
248
- expect(callArgs).toContain('--status in_progress');
249
- });
250
- it('should create an issue with priority', async () => {
251
- mockExecResponse(JSON.stringify(mockCreatedIssue));
252
- await provider.create({
253
- type: 'issue',
254
- title: 'New Issue',
255
- priority: 1,
256
- });
257
- const callArgs = mockExec.mock.calls[0][0];
258
- expect(callArgs).toContain('--priority 1');
259
- });
260
- });
261
- describe('update', () => {
262
- const mockUpdatedIssue = {
263
- id: 'bd-123',
264
- title: 'Updated Title',
265
- status: 'done',
266
- };
267
- it('should update an issue', async () => {
268
- // bd update returns an array
269
- mockExecResponse(JSON.stringify([mockUpdatedIssue]));
270
- const result = await provider.update('bd-123', { title: 'Updated Title' });
271
- expect(mockExec).toHaveBeenCalled();
272
- const callArgs = mockExec.mock.calls[0][0];
273
- expect(callArgs).toContain('bd update bd-123');
274
- expect(callArgs).toContain('--title');
275
- expect(result.title).toBe('Updated Title');
276
- });
277
- it('should update status', async () => {
278
- // bd update returns an array
279
- mockExecResponse(JSON.stringify([mockUpdatedIssue]));
280
- await provider.update('bd-123', { status: 'done' });
281
- const callArgs = mockExec.mock.calls[0][0];
282
- expect(callArgs).toContain('--status done');
283
- });
284
- it('should update by full URI', async () => {
285
- // bd update returns an array
286
- mockExecResponse(JSON.stringify([mockUpdatedIssue]));
287
- await provider.update('beads://./bd-123', { title: 'Updated' });
288
- const callArgs = mockExec.mock.calls[0][0];
289
- expect(callArgs).toContain('bd update bd-123');
290
- });
291
- });
292
- describe('delete', () => {
293
- it('should delete an issue', async () => {
294
- mockExecResponse('');
295
- await provider.delete('bd-123');
296
- expect(mockExec).toHaveBeenCalled();
297
- const callArgs = mockExec.mock.calls[0][0];
298
- expect(callArgs).toContain('bd delete bd-123');
299
- expect(callArgs).toContain('--force');
300
- });
301
- it('should delete by full URI', async () => {
302
- mockExecResponse('');
303
- await provider.delete('beads://./bd-123');
304
- const callArgs = mockExec.mock.calls[0][0];
305
- expect(callArgs).toContain('bd delete bd-123');
306
- });
307
- });
308
- describe('search', () => {
309
- const mockSearchResults = [
310
- { id: 'bd-1', title: 'Search result 1' },
311
- { id: 'bd-2', title: 'Search result 2' },
312
- ];
313
- it('should search issues', async () => {
314
- mockExecResponse(JSON.stringify(mockSearchResults));
315
- const result = await provider.search('test query');
316
- expect(mockExec).toHaveBeenCalled();
317
- const callArgs = mockExec.mock.calls[0][0];
318
- expect(callArgs).toContain('bd search');
319
- expect(callArgs).toContain('test query');
320
- expect(callArgs).toContain('--json');
321
- expect(result).toHaveLength(2);
322
- });
323
- it('should search with limit', async () => {
324
- mockExecResponse(JSON.stringify([mockSearchResults[0]]));
325
- await provider.search('query', { limit: 5 });
326
- const callArgs = mockExec.mock.calls[0][0];
327
- expect(callArgs).toContain('--limit 5');
328
- });
329
- });
330
- describe('error handling', () => {
331
- it('should throw ProviderError for missing executable', async () => {
332
- const error = new Error('spawn ENOENT');
333
- error.code = 'ENOENT';
334
- mockExecError(error);
335
- await expect(provider.get('bd-123')).rejects.toThrow(ProviderError);
336
- await expect(provider.get('bd-123')).rejects.toMatchObject({
337
- code: 'PROVIDER_ERROR',
338
- });
339
- });
340
- it('should throw ProviderError for timeout', async () => {
341
- const error = new Error('Command timeout');
342
- error.killed = true;
343
- mockExecError(error);
344
- await expect(provider.get('bd-123')).rejects.toThrow(ProviderError);
345
- await expect(provider.get('bd-123')).rejects.toMatchObject({
346
- code: 'TIMEOUT',
347
- });
348
- });
349
- it('should throw ProviderError for invalid JSON', async () => {
350
- mockExecResponse('not valid json');
351
- await expect(provider.get('bd-123')).rejects.toThrow(ProviderError);
352
- await expect(provider.get('bd-123')).rejects.toMatchObject({
353
- code: 'PROVIDER_ERROR',
354
- });
355
- });
356
- });
357
- describe('priority mapping', () => {
358
- it('should map numeric priorities', async () => {
359
- // bd show returns an array
360
- mockExecResponse(JSON.stringify([{ id: 'bd-1', title: 'Test', priority: 0 }]));
361
- const result = await provider.get('bd-1');
362
- expect(result?.priority).toBe(0);
363
- });
364
- it('should map string priorities', async () => {
365
- // bd show returns an array
366
- mockExecResponse(JSON.stringify([{ id: 'bd-1', title: 'Test', priority: 'high' }]));
367
- const result = await provider.get('bd-1');
368
- expect(result?.priority).toBe(1);
369
- mockExecResponse(JSON.stringify([{ id: 'bd-2', title: 'Test', priority: 'critical' }]));
370
- const result2 = await provider.get('bd-2');
371
- expect(result2?.priority).toBe(0);
372
- mockExecResponse(JSON.stringify([{ id: 'bd-3', title: 'Test', priority: 'low' }]));
373
- const result3 = await provider.get('bd-3');
374
- expect(result3?.priority).toBe(3);
375
- });
376
- it('should handle missing priority', async () => {
377
- // bd show returns an array
378
- mockExecResponse(JSON.stringify([{ id: 'bd-1', title: 'Test' }]));
379
- const result = await provider.get('bd-1');
380
- expect(result?.priority).toBeUndefined();
381
- });
382
- });
383
- describe('configuration', () => {
384
- it('should use custom executable', async () => {
385
- const customProvider = createBeadsProvider({ executable: '/custom/bd' });
386
- // bd show returns an array
387
- mockExecResponse(JSON.stringify([{ id: 'bd-1', title: 'Test' }]));
388
- await customProvider.get('bd-1');
389
- const callArgs = mockExec.mock.calls[0][0];
390
- expect(callArgs).toContain('/custom/bd');
391
- });
392
- });
393
- describe('RelationshipQueryable', () => {
394
- describe('isRelationshipQueryable', () => {
395
- it('should return true for BeadsProvider', () => {
396
- expect(isRelationshipQueryable(provider)).toBe(true);
397
- });
398
- });
399
- describe('supportedEdgeTypes', () => {
400
- it('should return supported edge types', () => {
401
- const edgeTypes = provider.supportedEdgeTypes();
402
- expect(edgeTypes).toHaveLength(2);
403
- expect(edgeTypes).toContainEqual({
404
- type: 'blocks',
405
- canQuery: true,
406
- canCreate: true,
407
- canDelete: true,
408
- });
409
- expect(edgeTypes).toContainEqual({
410
- type: 'parent-child',
411
- canQuery: true,
412
- canCreate: true,
413
- canDelete: true,
414
- });
415
- });
416
- });
417
- describe('queryEdges', () => {
418
- it('should return empty array for issue with no relationships', async () => {
419
- mockExecResponse(JSON.stringify([{ id: 'bd-123', title: 'Test Issue' }]));
420
- const edges = await provider.queryEdges('bd-123');
421
- expect(edges).toEqual([]);
422
- });
423
- it('should parse blocks relationships', async () => {
424
- mockExecResponse(JSON.stringify([
425
- {
426
- id: 'bd-123',
427
- title: 'Test Issue',
428
- blocks: ['bd-456', 'bd-789'],
429
- },
430
- ]));
431
- const edges = await provider.queryEdges('bd-123');
432
- expect(edges).toHaveLength(2);
433
- expect(edges).toContainEqual({
434
- from: 'bd-123',
435
- to: 'bd-456',
436
- type: 'blocks',
437
- });
438
- expect(edges).toContainEqual({
439
- from: 'bd-123',
440
- to: 'bd-789',
441
- type: 'blocks',
442
- });
443
- });
444
- it('should parse blockedBy relationships', async () => {
445
- mockExecResponse(JSON.stringify([
446
- {
447
- id: 'bd-123',
448
- title: 'Test Issue',
449
- blockedBy: ['bd-001', 'bd-002'],
450
- },
451
- ]));
452
- const edges = await provider.queryEdges('bd-123');
453
- expect(edges).toHaveLength(2);
454
- expect(edges).toContainEqual({
455
- from: 'bd-001',
456
- to: 'bd-123',
457
- type: 'blocks',
458
- });
459
- expect(edges).toContainEqual({
460
- from: 'bd-002',
461
- to: 'bd-123',
462
- type: 'blocks',
463
- });
464
- });
465
- it('should parse parent relationship', async () => {
466
- mockExecResponse(JSON.stringify([
467
- {
468
- id: 'bd-child',
469
- title: 'Child Issue',
470
- parent: 'bd-parent',
471
- },
472
- ]));
473
- const edges = await provider.queryEdges('bd-child');
474
- expect(edges).toHaveLength(1);
475
- expect(edges[0]).toEqual({
476
- from: 'bd-parent',
477
- to: 'bd-child',
478
- type: 'parent-child',
479
- });
480
- });
481
- it('should parse children relationships', async () => {
482
- mockExecResponse(JSON.stringify([
483
- {
484
- id: 'bd-parent',
485
- title: 'Parent Issue',
486
- children: ['bd-child1', 'bd-child2'],
487
- },
488
- ]));
489
- const edges = await provider.queryEdges('bd-parent');
490
- expect(edges).toHaveLength(2);
491
- expect(edges).toContainEqual({
492
- from: 'bd-parent',
493
- to: 'bd-child1',
494
- type: 'parent-child',
495
- });
496
- expect(edges).toContainEqual({
497
- from: 'bd-parent',
498
- to: 'bd-child2',
499
- type: 'parent-child',
500
- });
501
- });
502
- it('should combine all relationship types', async () => {
503
- mockExecResponse(JSON.stringify([
504
- {
505
- id: 'bd-123',
506
- title: 'Test Issue',
507
- blocks: ['bd-456'],
508
- blockedBy: ['bd-789'],
509
- parent: 'bd-parent',
510
- children: ['bd-child'],
511
- },
512
- ]));
513
- const edges = await provider.queryEdges('bd-123');
514
- expect(edges).toHaveLength(4);
515
- });
516
- it('should filter by edge type', async () => {
517
- mockExecResponse(JSON.stringify([
518
- {
519
- id: 'bd-123',
520
- title: 'Test Issue',
521
- blocks: ['bd-456'],
522
- parent: 'bd-parent',
523
- },
524
- ]));
525
- const edges = await provider.queryEdges('bd-123', { edgeType: 'blocks' });
526
- expect(edges).toHaveLength(1);
527
- expect(edges[0].type).toBe('blocks');
528
- });
529
- it('should filter by direction (out)', async () => {
530
- mockExecResponse(JSON.stringify([
531
- {
532
- id: 'bd-123',
533
- title: 'Test Issue',
534
- blocks: ['bd-456'], // outgoing
535
- blockedBy: ['bd-789'], // incoming
536
- },
537
- ]));
538
- const edges = await provider.queryEdges('bd-123', { direction: 'out' });
539
- expect(edges).toHaveLength(1);
540
- expect(edges[0].from).toBe('bd-123');
541
- expect(edges[0].to).toBe('bd-456');
542
- });
543
- it('should filter by direction (in)', async () => {
544
- mockExecResponse(JSON.stringify([
545
- {
546
- id: 'bd-123',
547
- title: 'Test Issue',
548
- blocks: ['bd-456'], // outgoing
549
- blockedBy: ['bd-789'], // incoming
550
- },
551
- ]));
552
- const edges = await provider.queryEdges('bd-123', { direction: 'in' });
553
- expect(edges).toHaveLength(1);
554
- expect(edges[0].from).toBe('bd-789');
555
- expect(edges[0].to).toBe('bd-123');
556
- });
557
- it('should apply limit', async () => {
558
- mockExecResponse(JSON.stringify([
559
- {
560
- id: 'bd-123',
561
- title: 'Test Issue',
562
- blocks: ['bd-1', 'bd-2', 'bd-3', 'bd-4', 'bd-5'],
563
- },
564
- ]));
565
- const edges = await provider.queryEdges('bd-123', { limit: 2 });
566
- expect(edges).toHaveLength(2);
567
- });
568
- it('should query by full URI', async () => {
569
- mockExecResponse(JSON.stringify([
570
- {
571
- id: 'bd-123',
572
- title: 'Test Issue',
573
- blocks: ['bd-456'],
574
- },
575
- ]));
576
- const edges = await provider.queryEdges('beads://./bd-123');
577
- expect(mockExec).toHaveBeenCalled();
578
- const callArgs = mockExec.mock.calls[0][0];
579
- expect(callArgs).toContain('bd show bd-123 --json');
580
- expect(edges).toHaveLength(1);
581
- });
582
- it('should return empty array for non-existent issue', async () => {
583
- const error = new Error('Issue not found');
584
- mockExecError(error);
585
- const edges = await provider.queryEdges('bd-notfound');
586
- expect(edges).toEqual([]);
587
- });
588
- });
589
- });
590
- });
591
- //# sourceMappingURL=beads.test.js.map