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,301 +0,0 @@
1
- /**
2
- * Tests for Daemon Lifecycle
3
- */
4
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
5
- import * as fs from 'node:fs/promises';
6
- import * as path from 'node:path';
7
- import * as os from 'node:os';
8
- import { createDaemon, checkExistingDaemon, } from '../lifecycle.js';
9
- import { createLockManager } from '../lock.js';
10
- import { createRegistryManager } from '../registry.js';
11
- import { DaemonError } from '../types.js';
12
- function createMockStore() {
13
- return {
14
- initialize: vi.fn().mockResolvedValue(undefined),
15
- close: vi.fn().mockResolvedValue(undefined),
16
- flush: vi.fn().mockResolvedValue(undefined),
17
- createNode: vi.fn(),
18
- getNode: vi.fn(),
19
- updateNode: vi.fn(),
20
- deleteNode: vi.fn(),
21
- restoreNode: vi.fn(),
22
- createEdge: vi.fn(),
23
- getEdge: vi.fn(),
24
- deleteEdge: vi.fn(),
25
- addTags: vi.fn(),
26
- removeTags: vi.fn(),
27
- setTags: vi.fn(),
28
- query: {
29
- nodes: vi.fn().mockResolvedValue([]),
30
- edges: vi.fn().mockResolvedValue([]),
31
- edgesFrom: vi.fn().mockResolvedValue([]),
32
- edgesTo: vi.fn().mockResolvedValue([]),
33
- edgesFor: vi.fn().mockResolvedValue([]),
34
- blockers: vi.fn().mockResolvedValue([]),
35
- blocking: vi.fn().mockResolvedValue([]),
36
- isBlocking: vi.fn().mockResolvedValue(false),
37
- implementers: vi.fn().mockResolvedValue([]),
38
- specs: vi.fn().mockResolvedValue([]),
39
- children: vi.fn().mockResolvedValue([]),
40
- parent: vi.fn().mockResolvedValue(null),
41
- ancestors: vi.fn().mockResolvedValue([]),
42
- descendants: vi.fn().mockResolvedValue([]),
43
- ready: vi.fn().mockResolvedValue([]),
44
- feedback: vi.fn().mockResolvedValue([]),
45
- unresolvedFeedback: vi.fn().mockResolvedValue([]),
46
- },
47
- transaction: vi.fn(),
48
- };
49
- }
50
- describe('Daemon Lifecycle', () => {
51
- let tempDir;
52
- let locationPath;
53
- let registryPath;
54
- let daemon;
55
- const createTestConfig = (overrides = {}) => ({
56
- locationPath,
57
- version: '1.0.0',
58
- store: createMockStore(),
59
- registryPath,
60
- shutdownTimeoutMs: 2000,
61
- ...overrides,
62
- });
63
- beforeEach(async () => {
64
- // Create temp directories
65
- tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'opentasks-lifecycle-test-'));
66
- locationPath = path.join(tempDir, '.opentasks');
67
- registryPath = path.join(tempDir, 'registry', 'registry.json');
68
- await fs.mkdir(locationPath, { recursive: true });
69
- daemon = null;
70
- });
71
- afterEach(async () => {
72
- // Stop daemon if running
73
- if (daemon) {
74
- try {
75
- await daemon.stop();
76
- }
77
- catch {
78
- // Ignore stop errors in cleanup
79
- }
80
- daemon = null;
81
- }
82
- // Clean up temp directory
83
- try {
84
- await fs.rm(tempDir, { recursive: true, force: true });
85
- }
86
- catch {
87
- // Ignore cleanup errors
88
- }
89
- });
90
- describe('checkExistingDaemon', () => {
91
- it('should return running: false when no daemon exists', async () => {
92
- const result = await checkExistingDaemon(locationPath);
93
- expect(result.running).toBe(false);
94
- expect(result.socketPath).toBeUndefined();
95
- expect(result.pid).toBeUndefined();
96
- });
97
- it('should return running: true when daemon lock is held', async () => {
98
- // Start a daemon
99
- daemon = createDaemon(createTestConfig());
100
- await daemon.start();
101
- const result = await checkExistingDaemon(locationPath);
102
- expect(result.running).toBe(true);
103
- expect(result.socketPath).toBe(daemon.socketPath);
104
- expect(result.pid).toBe(process.pid);
105
- });
106
- it('should return running: false for stale lock', async () => {
107
- // Create a stale lock file manually
108
- const lockManager = createLockManager(locationPath);
109
- const lockPath = lockManager.lockPath;
110
- const staleLock = {
111
- pid: 999999999, // Non-existent PID
112
- parentPid: 1,
113
- version: '0.0.1',
114
- startedAt: new Date().toISOString(),
115
- socketPath: '/tmp/stale.sock',
116
- databasePath: '/tmp/stale.db',
117
- };
118
- await fs.writeFile(lockPath, JSON.stringify(staleLock), 'utf8');
119
- const result = await checkExistingDaemon(locationPath);
120
- expect(result.running).toBe(false);
121
- });
122
- });
123
- describe('createDaemon', () => {
124
- it('should create daemon with correct paths', () => {
125
- daemon = createDaemon(createTestConfig());
126
- expect(daemon.socketPath).toBe(path.join(locationPath, 'daemon.sock'));
127
- expect(daemon.locationPath).toBe(locationPath);
128
- });
129
- it('should start in stopped state', () => {
130
- daemon = createDaemon(createTestConfig());
131
- const status = daemon.getStatus();
132
- expect(status.state).toBe('stopped');
133
- });
134
- });
135
- describe('start', () => {
136
- it('should start daemon and acquire lock', async () => {
137
- daemon = createDaemon(createTestConfig());
138
- await daemon.start();
139
- const status = daemon.getStatus();
140
- expect(status.state).toBe('running');
141
- expect(status.pid).toBe(process.pid);
142
- });
143
- it('should register in global registry', async () => {
144
- daemon = createDaemon(createTestConfig());
145
- const registryManager = createRegistryManager(registryPath);
146
- await daemon.start();
147
- const entry = await registryManager.find(locationPath);
148
- expect(entry).not.toBeNull();
149
- expect(entry.pid).toBe(process.pid);
150
- expect(entry.socketPath).toBe(daemon.socketPath);
151
- });
152
- it('should set startedAt timestamp', async () => {
153
- daemon = createDaemon(createTestConfig());
154
- const beforeStart = new Date().toISOString();
155
- await daemon.start();
156
- const status = daemon.getStatus();
157
- expect(status.startedAt).toBeTruthy();
158
- expect(status.startedAt >= beforeStart).toBe(true);
159
- });
160
- it('should throw when daemon already running', async () => {
161
- daemon = createDaemon(createTestConfig());
162
- await daemon.start();
163
- await expect(daemon.start()).rejects.toThrow(DaemonError);
164
- await expect(daemon.start()).rejects.toMatchObject({
165
- code: 'DAEMON_ALREADY_RUNNING',
166
- });
167
- });
168
- it('should throw when another daemon holds lock', async () => {
169
- // Start first daemon
170
- daemon = createDaemon(createTestConfig());
171
- await daemon.start();
172
- // Try to start second daemon for same location
173
- const daemon2 = createDaemon(createTestConfig());
174
- await expect(daemon2.start()).rejects.toThrow(DaemonError);
175
- await expect(daemon2.start()).rejects.toMatchObject({
176
- code: 'DAEMON_ALREADY_RUNNING',
177
- });
178
- });
179
- it('should clean up stale socket file and create fresh socket', async () => {
180
- // Create stale socket file with text content
181
- const socketPath = path.join(locationPath, 'daemon.sock');
182
- await fs.writeFile(socketPath, 'stale', 'utf8');
183
- daemon = createDaemon(createTestConfig());
184
- await daemon.start();
185
- // IPC server should have replaced the stale file with a real socket
186
- const stat = await fs.stat(socketPath);
187
- expect(stat.isSocket()).toBe(true);
188
- });
189
- });
190
- describe('stop', () => {
191
- it('should stop running daemon', async () => {
192
- daemon = createDaemon(createTestConfig());
193
- await daemon.start();
194
- await daemon.stop();
195
- const status = daemon.getStatus();
196
- expect(status.state).toBe('stopped');
197
- });
198
- it('should release lock on stop', async () => {
199
- daemon = createDaemon(createTestConfig());
200
- await daemon.start();
201
- await daemon.stop();
202
- const lockManager = createLockManager(locationPath);
203
- const isHeld = await lockManager.isHeld();
204
- expect(isHeld).toBe(false);
205
- });
206
- it('should unregister from global registry on stop', async () => {
207
- daemon = createDaemon(createTestConfig());
208
- const registryManager = createRegistryManager(registryPath);
209
- await daemon.start();
210
- await daemon.stop();
211
- const entry = await registryManager.find(locationPath);
212
- expect(entry).toBeNull();
213
- });
214
- it('should be idempotent (multiple stops ok)', async () => {
215
- daemon = createDaemon(createTestConfig());
216
- await daemon.start();
217
- await daemon.stop();
218
- await daemon.stop();
219
- await daemon.stop();
220
- const status = daemon.getStatus();
221
- expect(status.state).toBe('stopped');
222
- });
223
- it('should not fail when already stopped', async () => {
224
- daemon = createDaemon(createTestConfig());
225
- // Never started, so already stopped
226
- await expect(daemon.stop()).resolves.not.toThrow();
227
- });
228
- it('should clear startedAt on stop', async () => {
229
- daemon = createDaemon(createTestConfig());
230
- await daemon.start();
231
- await daemon.stop();
232
- const status = daemon.getStatus();
233
- expect(status.startedAt).toBeNull();
234
- });
235
- });
236
- describe('getStatus', () => {
237
- it('should return correct status when stopped', () => {
238
- daemon = createDaemon(createTestConfig());
239
- const status = daemon.getStatus();
240
- expect(status.state).toBe('stopped');
241
- expect(status.pid).toBe(process.pid);
242
- expect(status.socketPath).toBe(path.join(locationPath, 'daemon.sock'));
243
- expect(status.startedAt).toBeNull();
244
- expect(status.pendingFlush).toBe(false);
245
- expect(status.connectionCount).toBe(0);
246
- });
247
- it('should return correct status when running', async () => {
248
- daemon = createDaemon(createTestConfig());
249
- await daemon.start();
250
- const status = daemon.getStatus();
251
- expect(status.state).toBe('running');
252
- expect(status.startedAt).toBeTruthy();
253
- });
254
- });
255
- describe('restart scenario', () => {
256
- it('should allow restart after stop', async () => {
257
- daemon = createDaemon(createTestConfig());
258
- await daemon.start();
259
- expect(daemon.getStatus().state).toBe('running');
260
- await daemon.stop();
261
- expect(daemon.getStatus().state).toBe('stopped');
262
- await daemon.start();
263
- expect(daemon.getStatus().state).toBe('running');
264
- });
265
- });
266
- describe('error handling', () => {
267
- it('should clean up on start failure', async () => {
268
- // Start first daemon to hold lock
269
- daemon = createDaemon(createTestConfig());
270
- await daemon.start();
271
- // Second daemon should fail but not leave partial state
272
- const daemon2 = createDaemon(createTestConfig());
273
- await expect(daemon2.start()).rejects.toThrow();
274
- // daemon2 should be in stopped state
275
- expect(daemon2.getStatus().state).toBe('stopped');
276
- });
277
- });
278
- describe('OpenTasksConfig integration', () => {
279
- it('should use custom socket path from config', () => {
280
- daemon = createDaemon(createTestConfig({
281
- openTasksConfig: {
282
- daemon: { socketPath: 'custom.sock' },
283
- },
284
- }));
285
- expect(daemon.socketPath).toBe(path.join(locationPath, 'custom.sock'));
286
- });
287
- it('should use default socket path when config not provided', () => {
288
- daemon = createDaemon(createTestConfig());
289
- expect(daemon.socketPath).toBe(path.join(locationPath, 'daemon.sock'));
290
- });
291
- it('should use default socket path when daemon config is partial', () => {
292
- daemon = createDaemon(createTestConfig({
293
- openTasksConfig: {
294
- storage: { jsonlPath: 'custom.jsonl' },
295
- },
296
- }));
297
- expect(daemon.socketPath).toBe(path.join(locationPath, 'daemon.sock'));
298
- });
299
- });
300
- });
301
- //# sourceMappingURL=lifecycle.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.test.js","sourceRoot":"","sources":["../../../src/daemon/__tests__/lifecycle.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for Lock Manager
3
- */
4
- export {};
5
- //# sourceMappingURL=lock.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock.test.d.ts","sourceRoot":"","sources":["../../../src/daemon/__tests__/lock.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,192 +0,0 @@
1
- /**
2
- * Tests for Lock Manager
3
- */
4
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
- import * as fs from 'node:fs/promises';
6
- import * as path from 'node:path';
7
- import * as os from 'node:os';
8
- import { createLockManager } from '../lock.js';
9
- import { DaemonError } from '../types.js';
10
- describe('LockManager', () => {
11
- let tempDir;
12
- let locationPath;
13
- let lockManager;
14
- const testMetadata = {
15
- version: '1.0.0',
16
- socketPath: '/tmp/test.sock',
17
- databasePath: '/tmp/test.db',
18
- };
19
- beforeEach(async () => {
20
- // Create temp directory for each test
21
- tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'opentasks-lock-test-'));
22
- locationPath = path.join(tempDir, '.opentasks');
23
- await fs.mkdir(locationPath, { recursive: true });
24
- lockManager = createLockManager(locationPath);
25
- });
26
- afterEach(async () => {
27
- // Release lock if held
28
- try {
29
- await lockManager.release();
30
- }
31
- catch {
32
- // Ignore if not held
33
- }
34
- // Clean up temp directory
35
- try {
36
- await fs.rm(tempDir, { recursive: true, force: true });
37
- }
38
- catch {
39
- // Ignore cleanup errors
40
- }
41
- });
42
- describe('acquire', () => {
43
- it('should acquire lock when none exists', async () => {
44
- await lockManager.acquire(testMetadata);
45
- const lock = await lockManager.read();
46
- expect(lock).not.toBeNull();
47
- expect(lock.pid).toBe(process.pid);
48
- expect(lock.version).toBe(testMetadata.version);
49
- expect(lock.socketPath).toBe(testMetadata.socketPath);
50
- });
51
- it('should write all metadata to lock file', async () => {
52
- await lockManager.acquire(testMetadata);
53
- const lock = await lockManager.read();
54
- expect(lock).not.toBeNull();
55
- expect(lock.pid).toBe(process.pid);
56
- expect(lock.parentPid).toBe(process.ppid);
57
- expect(lock.version).toBe(testMetadata.version);
58
- expect(lock.socketPath).toBe(testMetadata.socketPath);
59
- expect(lock.databasePath).toBe(testMetadata.databasePath);
60
- expect(lock.startedAt).toBeTruthy();
61
- // Verify startedAt is valid ISO date
62
- expect(() => new Date(lock.startedAt)).not.toThrow();
63
- });
64
- it('should throw when acquiring lock twice from same process', async () => {
65
- await lockManager.acquire(testMetadata);
66
- await expect(lockManager.acquire(testMetadata)).rejects.toThrow(DaemonError);
67
- await expect(lockManager.acquire(testMetadata)).rejects.toMatchObject({
68
- code: 'LOCK_HELD',
69
- });
70
- });
71
- it('should create location directory if missing', async () => {
72
- const newLocation = path.join(tempDir, 'new-location', '.opentasks');
73
- const newManager = createLockManager(newLocation);
74
- await newManager.acquire(testMetadata);
75
- const exists = await fs.access(newLocation).then(() => true).catch(() => false);
76
- expect(exists).toBe(true);
77
- await newManager.release();
78
- });
79
- it('should steal stale lock from dead process', async () => {
80
- // Write a fake lock file with non-existent PID
81
- const staleLock = {
82
- pid: 999999999, // Very unlikely to be a real PID
83
- parentPid: 1,
84
- version: '0.0.1',
85
- startedAt: new Date().toISOString(),
86
- socketPath: '/tmp/old.sock',
87
- databasePath: '/tmp/old.db',
88
- };
89
- const lockPath = path.join(locationPath, 'daemon.lock');
90
- await fs.writeFile(lockPath, JSON.stringify(staleLock), 'utf8');
91
- // Should be able to acquire despite stale lock
92
- await lockManager.acquire(testMetadata);
93
- const lock = await lockManager.read();
94
- expect(lock.pid).toBe(process.pid);
95
- });
96
- });
97
- describe('release', () => {
98
- it('should release held lock', async () => {
99
- await lockManager.acquire(testMetadata);
100
- await lockManager.release();
101
- const lock = await lockManager.read();
102
- expect(lock).toBeNull();
103
- });
104
- it('should remove lock file on release', async () => {
105
- await lockManager.acquire(testMetadata);
106
- const lockPath = lockManager.lockPath;
107
- await lockManager.release();
108
- const exists = await fs.access(lockPath).then(() => true).catch(() => false);
109
- expect(exists).toBe(false);
110
- });
111
- it('should throw when releasing unheld lock', async () => {
112
- await expect(lockManager.release()).rejects.toThrow(DaemonError);
113
- await expect(lockManager.release()).rejects.toMatchObject({
114
- code: 'LOCK_NOT_HELD',
115
- });
116
- });
117
- it('should allow re-acquiring after release', async () => {
118
- await lockManager.acquire(testMetadata);
119
- await lockManager.release();
120
- // Should be able to acquire again
121
- await lockManager.acquire(testMetadata);
122
- const lock = await lockManager.read();
123
- expect(lock.pid).toBe(process.pid);
124
- });
125
- });
126
- describe('isHeld', () => {
127
- it('should return false when no lock exists', async () => {
128
- const held = await lockManager.isHeld();
129
- expect(held).toBe(false);
130
- });
131
- it('should return true when lock held by live process', async () => {
132
- await lockManager.acquire(testMetadata);
133
- const held = await lockManager.isHeld();
134
- expect(held).toBe(true);
135
- });
136
- it('should return false when lock held by dead process', async () => {
137
- // Write a fake lock file with non-existent PID
138
- const staleLock = {
139
- pid: 999999999,
140
- parentPid: 1,
141
- version: '0.0.1',
142
- startedAt: new Date().toISOString(),
143
- socketPath: '/tmp/old.sock',
144
- databasePath: '/tmp/old.db',
145
- };
146
- const lockPath = path.join(locationPath, 'daemon.lock');
147
- await fs.writeFile(lockPath, JSON.stringify(staleLock), 'utf8');
148
- const held = await lockManager.isHeld();
149
- expect(held).toBe(false);
150
- });
151
- it('should return false after release', async () => {
152
- await lockManager.acquire(testMetadata);
153
- await lockManager.release();
154
- const held = await lockManager.isHeld();
155
- expect(held).toBe(false);
156
- });
157
- });
158
- describe('read', () => {
159
- it('should return null when no lock file exists', async () => {
160
- const lock = await lockManager.read();
161
- expect(lock).toBeNull();
162
- });
163
- it('should return lock contents when file exists', async () => {
164
- await lockManager.acquire(testMetadata);
165
- const lock = await lockManager.read();
166
- expect(lock).not.toBeNull();
167
- expect(lock.pid).toBe(process.pid);
168
- });
169
- it('should return null for invalid JSON', async () => {
170
- const lockPath = path.join(locationPath, 'daemon.lock');
171
- await fs.writeFile(lockPath, 'not valid json', 'utf8');
172
- const lock = await lockManager.read();
173
- expect(lock).toBeNull();
174
- });
175
- });
176
- describe('lockPath', () => {
177
- it('should return correct lock file path', () => {
178
- expect(lockManager.lockPath).toBe(path.join(locationPath, 'daemon.lock'));
179
- });
180
- });
181
- describe('concurrent access', () => {
182
- it('should prevent concurrent acquisition from different managers', async () => {
183
- const manager1 = createLockManager(locationPath);
184
- const manager2 = createLockManager(locationPath);
185
- await manager1.acquire(testMetadata);
186
- // Second manager should fail since first holds lock with our PID
187
- await expect(manager2.acquire(testMetadata)).rejects.toThrow(DaemonError);
188
- await manager1.release();
189
- });
190
- });
191
- });
192
- //# sourceMappingURL=lock.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock.test.js","sourceRoot":"","sources":["../../../src/daemon/__tests__/lock.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for Graph Method Handlers
3
- */
4
- export {};
5
- //# sourceMappingURL=graph.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.test.d.ts","sourceRoot":"","sources":["../../../../src/daemon/__tests__/methods/graph.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}