opentasks 0.1.2 → 0.2.0

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 (280) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +218 -49
  3. package/dist/cli.d.ts +20 -0
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +451 -15
  6. package/dist/cli.js.map +1 -1
  7. package/dist/client/client.d.ts +54 -0
  8. package/dist/client/client.d.ts.map +1 -1
  9. package/dist/client/client.js +148 -4
  10. package/dist/client/client.js.map +1 -1
  11. package/dist/client/index.d.ts +1 -1
  12. package/dist/client/index.d.ts.map +1 -1
  13. package/dist/client/index.js +1 -1
  14. package/dist/client/index.js.map +1 -1
  15. package/dist/core/discover.d.ts.map +1 -1
  16. package/dist/core/discover.js +7 -2
  17. package/dist/core/discover.js.map +1 -1
  18. package/dist/core/hash.d.ts.map +1 -1
  19. package/dist/core/hash.js +7 -0
  20. package/dist/core/hash.js.map +1 -1
  21. package/dist/core/id.d.ts +1 -1
  22. package/dist/core/id.d.ts.map +1 -1
  23. package/dist/core/id.js +2 -0
  24. package/dist/core/id.js.map +1 -1
  25. package/dist/core/worktree.js +4 -4
  26. package/dist/core/worktree.js.map +1 -1
  27. package/dist/daemon/events.d.ts +82 -0
  28. package/dist/daemon/events.d.ts.map +1 -0
  29. package/dist/daemon/events.js +71 -0
  30. package/dist/daemon/events.js.map +1 -0
  31. package/dist/daemon/flush.d.ts.map +1 -1
  32. package/dist/daemon/flush.js +12 -2
  33. package/dist/daemon/flush.js.map +1 -1
  34. package/dist/daemon/health-counters.d.ts +38 -0
  35. package/dist/daemon/health-counters.d.ts.map +1 -0
  36. package/dist/daemon/health-counters.js +42 -0
  37. package/dist/daemon/health-counters.js.map +1 -0
  38. package/dist/daemon/idempotency.d.ts +50 -0
  39. package/dist/daemon/idempotency.d.ts.map +1 -0
  40. package/dist/daemon/idempotency.js +104 -0
  41. package/dist/daemon/idempotency.js.map +1 -0
  42. package/dist/daemon/index.d.ts +2 -0
  43. package/dist/daemon/index.d.ts.map +1 -1
  44. package/dist/daemon/index.js +1 -0
  45. package/dist/daemon/index.js.map +1 -1
  46. package/dist/daemon/ipc.d.ts +32 -2
  47. package/dist/daemon/ipc.d.ts.map +1 -1
  48. package/dist/daemon/ipc.js +54 -3
  49. package/dist/daemon/ipc.js.map +1 -1
  50. package/dist/daemon/lifecycle.d.ts.map +1 -1
  51. package/dist/daemon/lifecycle.js +302 -8
  52. package/dist/daemon/lifecycle.js.map +1 -1
  53. package/dist/daemon/location-state.d.ts +60 -1
  54. package/dist/daemon/location-state.d.ts.map +1 -1
  55. package/dist/daemon/location-state.js +136 -31
  56. package/dist/daemon/location-state.js.map +1 -1
  57. package/dist/daemon/methods/context-files.d.ts.map +1 -1
  58. package/dist/daemon/methods/context-files.js +4 -3
  59. package/dist/daemon/methods/context-files.js.map +1 -1
  60. package/dist/daemon/methods/events.d.ts +22 -0
  61. package/dist/daemon/methods/events.d.ts.map +1 -0
  62. package/dist/daemon/methods/events.js +30 -0
  63. package/dist/daemon/methods/events.js.map +1 -0
  64. package/dist/daemon/methods/graph.d.ts +7 -0
  65. package/dist/daemon/methods/graph.d.ts.map +1 -1
  66. package/dist/daemon/methods/graph.js +24 -14
  67. package/dist/daemon/methods/graph.js.map +1 -1
  68. package/dist/daemon/methods/lifecycle.d.ts +16 -0
  69. package/dist/daemon/methods/lifecycle.d.ts.map +1 -1
  70. package/dist/daemon/methods/lifecycle.js +3 -1
  71. package/dist/daemon/methods/lifecycle.js.map +1 -1
  72. package/dist/daemon/methods/location.js.map +1 -1
  73. package/dist/daemon/methods/sync.d.ts +113 -0
  74. package/dist/daemon/methods/sync.d.ts.map +1 -0
  75. package/dist/daemon/methods/sync.js +158 -0
  76. package/dist/daemon/methods/sync.js.map +1 -0
  77. package/dist/daemon/methods/tools.d.ts.map +1 -1
  78. package/dist/daemon/methods/tools.js +42 -8
  79. package/dist/daemon/methods/tools.js.map +1 -1
  80. package/dist/daemon/methods/watch.d.ts +24 -0
  81. package/dist/daemon/methods/watch.d.ts.map +1 -1
  82. package/dist/daemon/methods/watch.js +178 -88
  83. package/dist/daemon/methods/watch.js.map +1 -1
  84. package/dist/daemon/sessionlog-watcher.d.ts.map +1 -1
  85. package/dist/daemon/sessionlog-watcher.js +4 -0
  86. package/dist/daemon/sessionlog-watcher.js.map +1 -1
  87. package/dist/graph/EdgeTypeRegistry.d.ts.map +1 -1
  88. package/dist/graph/EdgeTypeRegistry.js +32 -0
  89. package/dist/graph/EdgeTypeRegistry.js.map +1 -1
  90. package/dist/graph/FederatedGraph.d.ts.map +1 -1
  91. package/dist/graph/GraphologyAdapter.d.ts.map +1 -1
  92. package/dist/graph/GraphologyAdapter.js.map +1 -1
  93. package/dist/graph/HydratingFederatedGraph.d.ts.map +1 -1
  94. package/dist/graph/HydratingFederatedGraph.js +1 -1
  95. package/dist/graph/HydratingFederatedGraph.js.map +1 -1
  96. package/dist/graph/attempts.d.ts +50 -0
  97. package/dist/graph/attempts.d.ts.map +1 -0
  98. package/dist/graph/attempts.js +51 -0
  99. package/dist/graph/attempts.js.map +1 -0
  100. package/dist/graph/coordination.d.ts +4 -2
  101. package/dist/graph/coordination.d.ts.map +1 -1
  102. package/dist/graph/coordination.js +77 -85
  103. package/dist/graph/coordination.js.map +1 -1
  104. package/dist/graph/expansion.d.ts.map +1 -1
  105. package/dist/graph/expansion.js +1 -1
  106. package/dist/graph/expansion.js.map +1 -1
  107. package/dist/graph/git-graph-syncer.d.ts +24 -0
  108. package/dist/graph/git-graph-syncer.d.ts.map +1 -1
  109. package/dist/graph/git-graph-syncer.js +111 -26
  110. package/dist/graph/git-graph-syncer.js.map +1 -1
  111. package/dist/graph/provider-store.d.ts +12 -1
  112. package/dist/graph/provider-store.d.ts.map +1 -1
  113. package/dist/graph/provider-store.js +35 -8
  114. package/dist/graph/provider-store.js.map +1 -1
  115. package/dist/graph/query.d.ts.map +1 -1
  116. package/dist/graph/query.js +18 -2
  117. package/dist/graph/query.js.map +1 -1
  118. package/dist/graph/store.d.ts +18 -2
  119. package/dist/graph/store.d.ts.map +1 -1
  120. package/dist/graph/store.js +43 -0
  121. package/dist/graph/store.js.map +1 -1
  122. package/dist/graph/sync.js +1 -1
  123. package/dist/graph/sync.js.map +1 -1
  124. package/dist/graph/types.d.ts +9 -1
  125. package/dist/graph/types.d.ts.map +1 -1
  126. package/dist/graph/types.js.map +1 -1
  127. package/dist/graph/validation.d.ts.map +1 -1
  128. package/dist/graph/validation.js +20 -2
  129. package/dist/graph/validation.js.map +1 -1
  130. package/dist/index.d.ts +3 -1
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +5 -1
  133. package/dist/index.js.map +1 -1
  134. package/dist/materialization/archiver.d.ts.map +1 -1
  135. package/dist/materialization/archiver.js.map +1 -1
  136. package/dist/materialization/snapshot.d.ts.map +1 -1
  137. package/dist/materialization/snapshot.js +1 -1
  138. package/dist/materialization/snapshot.js.map +1 -1
  139. package/dist/materialization/types.d.ts +7 -5
  140. package/dist/materialization/types.d.ts.map +1 -1
  141. package/dist/materialization/types.js.map +1 -1
  142. package/dist/mcp/server.d.ts +2 -1
  143. package/dist/mcp/server.d.ts.map +1 -1
  144. package/dist/mcp/server.js +308 -11
  145. package/dist/mcp/server.js.map +1 -1
  146. package/dist/providers/beads.d.ts.map +1 -1
  147. package/dist/providers/beads.js +2 -0
  148. package/dist/providers/beads.js.map +1 -1
  149. package/dist/providers/claude-tasks.d.ts.map +1 -1
  150. package/dist/providers/claude-tasks.js.map +1 -1
  151. package/dist/providers/global.js +1 -1
  152. package/dist/providers/global.js.map +1 -1
  153. package/dist/providers/location.d.ts.map +1 -1
  154. package/dist/providers/location.js.map +1 -1
  155. package/dist/providers/map-client-factory.d.ts.map +1 -1
  156. package/dist/providers/map-client-factory.js +1 -1
  157. package/dist/providers/map-client-factory.js.map +1 -1
  158. package/dist/providers/map-connector.js +1 -1
  159. package/dist/providers/map-connector.js.map +1 -1
  160. package/dist/providers/map-event-bridge.d.ts.map +1 -1
  161. package/dist/providers/map-event-bridge.js +1 -0
  162. package/dist/providers/map-event-bridge.js.map +1 -1
  163. package/dist/providers/map.d.ts.map +1 -1
  164. package/dist/providers/map.js +5 -2
  165. package/dist/providers/map.js.map +1 -1
  166. package/dist/providers/native.d.ts.map +1 -1
  167. package/dist/providers/native.js +21 -8
  168. package/dist/providers/native.js.map +1 -1
  169. package/dist/providers/registry.js +1 -1
  170. package/dist/providers/registry.js.map +1 -1
  171. package/dist/providers/sudocode.d.ts.map +1 -1
  172. package/dist/providers/sudocode.js +5 -11
  173. package/dist/providers/sudocode.js.map +1 -1
  174. package/dist/providers/traits/Reconcilable.d.ts.map +1 -1
  175. package/dist/providers/traits/TaskManageable.d.ts +15 -1
  176. package/dist/providers/traits/TaskManageable.d.ts.map +1 -1
  177. package/dist/providers/traits/TaskManageable.js +26 -0
  178. package/dist/providers/traits/TaskManageable.js.map +1 -1
  179. package/dist/providers/traits/Watchable.d.ts +6 -0
  180. package/dist/providers/traits/Watchable.d.ts.map +1 -1
  181. package/dist/providers/traits/Watchable.js.map +1 -1
  182. package/dist/providers/types.d.ts +1 -1
  183. package/dist/providers/types.d.ts.map +1 -1
  184. package/dist/schema/edges.d.ts +5 -1
  185. package/dist/schema/edges.d.ts.map +1 -1
  186. package/dist/schema/index.d.ts +2 -2
  187. package/dist/schema/index.d.ts.map +1 -1
  188. package/dist/schema/index.js +1 -1
  189. package/dist/schema/index.js.map +1 -1
  190. package/dist/schema/nodes.d.ts +55 -2
  191. package/dist/schema/nodes.d.ts.map +1 -1
  192. package/dist/schema/storage.d.ts +2 -0
  193. package/dist/schema/storage.d.ts.map +1 -1
  194. package/dist/schema/validation.d.ts +6 -2
  195. package/dist/schema/validation.d.ts.map +1 -1
  196. package/dist/schema/validation.js +18 -1
  197. package/dist/schema/validation.js.map +1 -1
  198. package/dist/sessionlog/agent/registry.js.map +1 -1
  199. package/dist/sessionlog/agent/session-types.d.ts.map +1 -1
  200. package/dist/sessionlog/agent/types.d.ts.map +1 -1
  201. package/dist/sessionlog/commands/clean.js +1 -1
  202. package/dist/sessionlog/commands/clean.js.map +1 -1
  203. package/dist/sessionlog/commands/disable.d.ts.map +1 -1
  204. package/dist/sessionlog/commands/disable.js.map +1 -1
  205. package/dist/sessionlog/commands/doctor.js +1 -1
  206. package/dist/sessionlog/commands/doctor.js.map +1 -1
  207. package/dist/sessionlog/commands/enable.js +1 -1
  208. package/dist/sessionlog/commands/enable.js.map +1 -1
  209. package/dist/sessionlog/commands/resume.js +1 -1
  210. package/dist/sessionlog/commands/resume.js.map +1 -1
  211. package/dist/sessionlog/commands/rewind.d.ts.map +1 -1
  212. package/dist/sessionlog/commands/rewind.js +1 -1
  213. package/dist/sessionlog/commands/rewind.js.map +1 -1
  214. package/dist/sessionlog/commands/status.d.ts.map +1 -1
  215. package/dist/sessionlog/commands/status.js.map +1 -1
  216. package/dist/sessionlog/hooks/lifecycle.d.ts.map +1 -1
  217. package/dist/sessionlog/hooks/lifecycle.js +3 -3
  218. package/dist/sessionlog/hooks/lifecycle.js.map +1 -1
  219. package/dist/sessionlog/security/redaction.js +1 -1
  220. package/dist/sessionlog/security/redaction.js.map +1 -1
  221. package/dist/sessionlog/store/checkpoint-store.d.ts.map +1 -1
  222. package/dist/sessionlog/store/checkpoint-store.js +2 -2
  223. package/dist/sessionlog/store/checkpoint-store.js.map +1 -1
  224. package/dist/sessionlog/store/native-store.d.ts.map +1 -1
  225. package/dist/sessionlog/store/native-store.js.map +1 -1
  226. package/dist/sessionlog/store/session-store.d.ts.map +1 -1
  227. package/dist/sessionlog/store/session-store.js +1 -1
  228. package/dist/sessionlog/store/session-store.js.map +1 -1
  229. package/dist/sessionlog/strategy/attribution.js +2 -2
  230. package/dist/sessionlog/strategy/attribution.js.map +1 -1
  231. package/dist/sessionlog/strategy/common.d.ts +1 -1
  232. package/dist/sessionlog/strategy/common.d.ts.map +1 -1
  233. package/dist/sessionlog/strategy/common.js +3 -3
  234. package/dist/sessionlog/strategy/common.js.map +1 -1
  235. package/dist/sessionlog/strategy/content-overlap.d.ts.map +1 -1
  236. package/dist/sessionlog/strategy/content-overlap.js +1 -1
  237. package/dist/sessionlog/strategy/content-overlap.js.map +1 -1
  238. package/dist/sessionlog/strategy/manual-commit.d.ts.map +1 -1
  239. package/dist/sessionlog/strategy/manual-commit.js +6 -16
  240. package/dist/sessionlog/strategy/manual-commit.js.map +1 -1
  241. package/dist/sessionlog/utils/preview-rewind.d.ts.map +1 -1
  242. package/dist/sessionlog/utils/preview-rewind.js +1 -1
  243. package/dist/sessionlog/utils/preview-rewind.js.map +1 -1
  244. package/dist/sessionlog/utils/trailers.d.ts.map +1 -1
  245. package/dist/sessionlog/utils/trailers.js +0 -1
  246. package/dist/sessionlog/utils/trailers.js.map +1 -1
  247. package/dist/storage/interface.d.ts +64 -0
  248. package/dist/storage/interface.d.ts.map +1 -1
  249. package/dist/storage/interface.js.map +1 -1
  250. package/dist/storage/jsonl.js +2 -2
  251. package/dist/storage/jsonl.js.map +1 -1
  252. package/dist/storage/sqlite-schema.d.ts +8 -2
  253. package/dist/storage/sqlite-schema.d.ts.map +1 -1
  254. package/dist/storage/sqlite-schema.js +10 -1
  255. package/dist/storage/sqlite-schema.js.map +1 -1
  256. package/dist/storage/sqlite.d.ts +16 -1
  257. package/dist/storage/sqlite.d.ts.map +1 -1
  258. package/dist/storage/sqlite.js +134 -2
  259. package/dist/storage/sqlite.js.map +1 -1
  260. package/dist/tools/link.js +1 -1
  261. package/dist/tools/link.js.map +1 -1
  262. package/dist/tools/query.d.ts.map +1 -1
  263. package/dist/tools/query.js +8 -29
  264. package/dist/tools/query.js.map +1 -1
  265. package/dist/tools/task.d.ts.map +1 -1
  266. package/dist/tools/task.js +115 -5
  267. package/dist/tools/task.js.map +1 -1
  268. package/dist/tools/types.d.ts +84 -3
  269. package/dist/tools/types.d.ts.map +1 -1
  270. package/dist/tools/types.js.map +1 -1
  271. package/dist/version.d.ts +14 -0
  272. package/dist/version.d.ts.map +1 -0
  273. package/dist/version.js +44 -0
  274. package/dist/version.js.map +1 -0
  275. package/package.json +32 -7
  276. package/skills/opentasks/SKILL.md +226 -0
  277. package/skills/opentasks/dependency-management.md +119 -0
  278. package/skills/opentasks/feedback-and-review.md +100 -0
  279. package/skills/opentasks/linking-external-data.md +103 -0
  280. package/skills/opentasks/spec-to-implementation.md +171 -0
@@ -5,6 +5,8 @@
5
5
  */
6
6
  import type { IPCServer } from '../ipc.js';
7
7
  import type { DaemonStatus } from '../types.js';
8
+ import type { DaemonHealthSnapshot } from '../health-counters.js';
9
+ import type { SyncerHealth } from '../../graph/git-graph-syncer.js';
8
10
  /**
9
11
  * Health check response
10
12
  */
@@ -17,6 +19,16 @@ export interface HealthResponse {
17
19
  rss: number;
18
20
  };
19
21
  version: string;
22
+ /**
23
+ * Counters for otherwise-silent watcher/reconcile failures + liveness
24
+ * timestamps (F10). Omitted if the daemon wasn't given a counters source.
25
+ */
26
+ counters?: DaemonHealthSnapshot;
27
+ /**
28
+ * Git sync health (last error/op/success + cumulative error count), or null
29
+ * when git sync is disabled. Omitted if no sync-health source was provided.
30
+ */
31
+ sync?: SyncerHealth | null;
20
32
  }
21
33
  /**
22
34
  * Status getter function
@@ -46,6 +58,10 @@ export interface LifecycleMethodsOptions {
46
58
  startedAt: Date;
47
59
  /** Optional health checker for multi-location awareness */
48
60
  checkHealth?: HealthChecker;
61
+ /** Optional source of watcher/reconcile failure counters (F10) */
62
+ getHealthCounters?: () => DaemonHealthSnapshot;
63
+ /** Optional source of git sync health (null when sync is disabled) (F10) */
64
+ getSyncHealth?: () => SyncerHealth | null;
49
65
  }
50
66
  /**
51
67
  * Register lifecycle method handlers on an IPC server
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/daemon/methods/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yCAAyC;IACzC,MAAM,EAAE,SAAS,CAAC;IAElB,4CAA4C;IAC5C,SAAS,EAAE,YAAY,CAAC;IAExB,mCAAmC;IACnC,QAAQ,EAAE,eAAe,CAAC;IAE1B,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAEhB,oCAAoC;IACpC,SAAS,EAAE,IAAI,CAAC;IAEhB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAuC/E"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/daemon/methods/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAMpE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAEhC;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yCAAyC;IACzC,MAAM,EAAE,SAAS,CAAC;IAElB,4CAA4C;IAC5C,SAAS,EAAE,YAAY,CAAC;IAExB,mCAAmC;IACnC,QAAQ,EAAE,eAAe,CAAC;IAE1B,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAEhB,oCAAoC;IACpC,SAAS,EAAE,IAAI,CAAC;IAEhB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,aAAa,CAAC;IAE5B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,oBAAoB,CAAC;IAE/C,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;CAC3C;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CA0C/E"}
@@ -10,7 +10,7 @@
10
10
  * Register lifecycle method handlers on an IPC server
11
11
  */
12
12
  export function registerLifecycleMethods(options) {
13
- const { server, getStatus, shutdown, version, startedAt, checkHealth } = options;
13
+ const { server, getStatus, shutdown, version, startedAt, checkHealth, getHealthCounters, getSyncHealth } = options;
14
14
  // ping - Simple health check
15
15
  server.handle('ping', async () => {
16
16
  return { pong: true };
@@ -28,6 +28,8 @@ export function registerLifecycleMethods(options) {
28
28
  rss: memory.rss,
29
29
  },
30
30
  version,
31
+ ...(getHealthCounters ? { counters: getHealthCounters() } : {}),
32
+ ...(getSyncHealth ? { sync: getSyncHealth() } : {}),
31
33
  };
32
34
  });
33
35
  // status - Daemon status and stats
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/daemon/methods/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6DH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAgC;IACvE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEjF,6BAA6B;IAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;QAC/B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAA6B,EAAE;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;QAEhD,OAAO;YACL,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;YAC/C,MAAM;YACN,MAAM,EAAE;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB;YACD,OAAO;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,mCAAmC;IACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAA2B,EAAE;QACxD,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QACnC,2CAA2C;QAC3C,YAAY,CAAC,GAAG,EAAE;YAChB,KAAK,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/daemon/methods/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiFH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAgC;IACvE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,GACtG,OAAO,CAAC;IAEV,6BAA6B;IAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;QAC/B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAA6B,EAAE;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;QAEhD,OAAO;YACL,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;YAC/C,MAAM;YACN,MAAM,EAAE;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB;YACD,OAAO;YACP,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,mCAAmC;IACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAA2B,EAAE;QACxD,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QACnC,2CAA2C;QAC3C,YAAY,CAAC,GAAG,EAAE;YAChB,KAAK,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"location.js","sourceRoot":"","sources":["../../../src/daemon/methods/location.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,mBAAmB,EAAwB,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAsB,MAAM,wBAAwB,CAAC;AA6BlG,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAA+B;IACrE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAE3D,6CAA6C;IAC7C,MAAM,CAAC,MAAM,CAAwC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC/E,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,MAAM,CAAC,MAAM,CAAuC,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,8BAA8B;QAC9B,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,aAAa;QACzC,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAkB,MAAM,mBAAmB,CACpD,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,IAAI,EACX,KAAK,CACN,CAAC;QAEF,oBAAoB;QACpB,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAE5B,kBAAkB;QAClB,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE5B,4CAA4C;QAC5C,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAkB;oBAC3B,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBAC3D,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,QAAQ;iBACf,CAAC;gBACF,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;YAC3E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,CAAC,MAAM,CAAyC,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5F,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,uBAAuB;QACvB,MAAM,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE3C,6CAA6C;QAC7C,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;YAC3E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"location.js","sourceRoot":"","sources":["../../../src/daemon/methods/location.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAsB,MAAM,wBAAwB,CAAC;AA6BlG,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAA+B;IACrE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAE3D,6CAA6C;IAC7C,MAAM,CAAC,MAAM,CAAwC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC/E,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,MAAM,CAAC,MAAM,CAAuC,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,8BAA8B;QAC9B,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,aAAa;QACzC,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAkB,MAAM,mBAAmB,CACpD,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,IAAI,EACX,KAAK,CACN,CAAC;QAEF,oBAAoB;QACpB,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAE5B,kBAAkB;QAClB,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE5B,4CAA4C;QAC5C,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAkB;oBAC3B,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBAC3D,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,QAAQ;iBACf,CAAC;gBACF,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;YAC3E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,CAAC,MAAM,CAAyC,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5F,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,uBAAuB;QACvB,MAAM,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE3C,6CAA6C;QAC7C,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;YAC3E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Git Sync Method Handlers
3
+ *
4
+ * JSON-RPC method handlers for manual git sync operations + status inspection.
5
+ * The daemon runs auto-sync in the background when `sync.git.autoCommit` or
6
+ * `sync.git.autoPush` are enabled in config; these methods expose the same
7
+ * operations for on-demand triggers (e.g., from an external signal like a
8
+ * MAP `context.updated` event telling us a peer pushed changes we should pull).
9
+ */
10
+ import type { IPCServer } from '../ipc.js';
11
+ import type { LocationResolver, LocationState } from '../location-state.js';
12
+ import type { GitGraphSyncer, SyncCycleResult, PullResult, SyncerHealth } from '../../graph/git-graph-syncer.js';
13
+ export interface SyncMethodsOptions {
14
+ /** IPC server to register handlers on */
15
+ server: IPCServer;
16
+ /** Resolver for the active syncer — returns null when no git sync is configured */
17
+ getSyncer(): GitGraphSyncer | null;
18
+ /** Static snapshot of the sync config + recent health (for sync.status) */
19
+ getSyncStatus(): {
20
+ enabled: boolean;
21
+ remote?: string;
22
+ autoCommit: boolean;
23
+ autoPush: boolean;
24
+ pullOnStartup: boolean;
25
+ autoSyncRunning: boolean;
26
+ /**
27
+ * Recent success/failure snapshot. Absent when git sync is disabled
28
+ * or the syncer hasn't been built yet; present otherwise.
29
+ */
30
+ health?: SyncerHealth;
31
+ };
32
+ /**
33
+ * Reload the syncer from the current on-disk config. Called from `sync.reload`
34
+ * when an external writer (e.g., OpenHive's PATCH /resources/:id/git-sync
35
+ * endpoint) has rewritten `.opentasks/config.json` and we need the running
36
+ * daemon to pick up the new settings without a restart.
37
+ *
38
+ * Returns the new status snapshot after the swap. When `config.json` can't
39
+ * be read or `sync.git.enabled` is false, the syncer is torn down and
40
+ * subsequent `sync.now` / `sync.pull` calls return `ran: false`.
41
+ */
42
+ reloadSyncer(): Promise<ReturnType<SyncMethodsOptions['getSyncStatus']>>;
43
+ /**
44
+ * The daemon flush manager. When present, `sync.now`/`sync.pull` drain and
45
+ * freeze the debounced SQLite→JSONL flush around the git op so a pending
46
+ * flush can't fire mid-pull and overwrite the freshly-pulled `graph.jsonl`
47
+ * (the F2 data-loss race). Optional — when absent, sync runs uncoordinated.
48
+ */
49
+ flushManager?: {
50
+ flush(): Promise<void>;
51
+ pause(): void;
52
+ resume(): void;
53
+ };
54
+ /**
55
+ * Re-sync SQLite from the (possibly merged) JSONL after a pull brought
56
+ * changes. Called only when a pull actually changed the file.
57
+ */
58
+ reloadStore?: () => Promise<void>;
59
+ }
60
+ export interface SyncNowResult {
61
+ /** Whether the syncer is available */
62
+ ran: boolean;
63
+ /** Present when ran=true */
64
+ result?: SyncCycleResult;
65
+ /** Present when ran=false */
66
+ reason?: string;
67
+ }
68
+ export interface SyncPullOnlyResult {
69
+ ran: boolean;
70
+ result?: PullResult;
71
+ reason?: string;
72
+ }
73
+ export interface SyncReloadResult {
74
+ /** Whether a reload was actually applied (config file read + syncer rebuilt). */
75
+ reloaded: boolean;
76
+ /** New post-reload status. Mirrors `sync.status`. */
77
+ status: ReturnType<SyncMethodsOptions['getSyncStatus']>;
78
+ /** Populated on failure (e.g., config.json missing or unreadable). */
79
+ error?: string;
80
+ }
81
+ /**
82
+ * Register sync.now / sync.pull / sync.status method handlers on an IPC server.
83
+ *
84
+ * sync.now — runs the full cycle (commitIfDirty → pull → push)
85
+ * sync.pull — pulls only; used when the hub signals "peer pushed, catch up"
86
+ * sync.status — inspection; returns the active config + autoSync state
87
+ */
88
+ export declare function registerSyncMethods(options: SyncMethodsOptions): void;
89
+ /** Sync status snapshot shape (shared with single-location `getSyncStatus`). */
90
+ export type SyncStatusSnapshot = ReturnType<SyncMethodsOptions['getSyncStatus']>;
91
+ export interface MultiLocationSyncMethodsOptions {
92
+ /** IPC server to register handlers on */
93
+ server: IPCServer;
94
+ /** Resolves a `location` param to its LocationState */
95
+ locationResolver: LocationResolver;
96
+ /**
97
+ * Rebuild a location's git syncer from its on-disk config (for `sync.reload`).
98
+ * Mutates `state.graphSyncer` / `state.gitSyncConfig` in place. Wired by the
99
+ * daemon to the location-state syncer builder.
100
+ */
101
+ reloadLocationSyncer(state: LocationState): Promise<void>;
102
+ }
103
+ /**
104
+ * Register location-aware sync.now / sync.pull / sync.status / sync.reload.
105
+ *
106
+ * Each handler takes an optional `location` param (the worktree hash). The git
107
+ * op runs through the SAME coordinated flush-freeze-reload as single-location,
108
+ * but resolved per location — so a debounced flush on one worktree can't clobber
109
+ * that worktree's freshly-pulled graph.jsonl (the F2 race), and pulls reload
110
+ * that location's SQLite.
111
+ */
112
+ export declare function registerMultiLocationSyncMethods(options: MultiLocationSyncMethodsOptions): void;
113
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/daemon/methods/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAkDjH,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,MAAM,EAAE,SAAS,CAAC;IAElB,mFAAmF;IACnF,SAAS,IAAI,cAAc,GAAG,IAAI,CAAC;IAEnC,2EAA2E;IAC3E,aAAa,IAAI;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;QACzB;;;WAGG;QACH,MAAM,CAAC,EAAE,YAAY,CAAC;KACvB,CAAC;IAEF;;;;;;;;;OASG;IACH,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAEzE;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,KAAK,IAAI,IAAI,CAAC;QAAC,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAEzE;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,GAAG,EAAE,OAAO,CAAC;IAEb,4BAA4B;IAC5B,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC;IAElB,qDAAqD;IACrD,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;IAExD,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAuDrE;AAMD,gFAAgF;AAChF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;AAEjF,MAAM,WAAW,+BAA+B;IAC9C,yCAAyC;IACzC,MAAM,EAAE,SAAS,CAAC;IAElB,uDAAuD;IACvD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,+BAA+B,GAAG,IAAI,CAsD/F"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Git Sync Method Handlers
3
+ *
4
+ * JSON-RPC method handlers for manual git sync operations + status inspection.
5
+ * The daemon runs auto-sync in the background when `sync.git.autoCommit` or
6
+ * `sync.git.autoPush` are enabled in config; these methods expose the same
7
+ * operations for on-demand triggers (e.g., from an external signal like a
8
+ * MAP `context.updated` event telling us a peer pushed changes we should pull).
9
+ */
10
+ /**
11
+ * Serialize a git sync/pull with the debounced SQLite→JSONL flush:
12
+ * drain pending flush (so local writes are in JSONL for the commit/merge)
13
+ * → freeze the flush (so it can't fire mid-pull and clobber the pulled file)
14
+ * → run the git op
15
+ * → reload SQLite from the merged JSONL (only when a pull changed it)
16
+ * → resume the flush.
17
+ * Without a flushManager this is a passthrough (legacy / uncoordinated behavior).
18
+ */
19
+ async function runCoordinated(flushManager, reloadStore, run, pulledChanges) {
20
+ if (flushManager) {
21
+ await flushManager.flush();
22
+ flushManager.pause();
23
+ }
24
+ try {
25
+ const result = await run();
26
+ if (reloadStore && pulledChanges(result)) {
27
+ try {
28
+ await reloadStore();
29
+ }
30
+ catch {
31
+ /* best-effort: a reload hiccup shouldn't fail the sync */
32
+ }
33
+ }
34
+ return result;
35
+ }
36
+ finally {
37
+ flushManager?.resume();
38
+ }
39
+ }
40
+ // ============================================================================
41
+ // Implementation
42
+ // ============================================================================
43
+ /**
44
+ * Register sync.now / sync.pull / sync.status method handlers on an IPC server.
45
+ *
46
+ * sync.now — runs the full cycle (commitIfDirty → pull → push)
47
+ * sync.pull — pulls only; used when the hub signals "peer pushed, catch up"
48
+ * sync.status — inspection; returns the active config + autoSync state
49
+ */
50
+ export function registerSyncMethods(options) {
51
+ const { server, getSyncer, getSyncStatus, reloadSyncer, flushManager, reloadStore } = options;
52
+ const coordinated = (run, pulledChanges) => runCoordinated(flushManager, reloadStore, run, pulledChanges);
53
+ server.handle('sync.now', async () => {
54
+ const syncer = getSyncer();
55
+ if (!syncer) {
56
+ return { ran: false, reason: 'git sync is not enabled for this daemon' };
57
+ }
58
+ const result = await coordinated(() => syncer.sync(), (r) => r.pull.pulled && r.pull.hasChanges);
59
+ return { ran: true, result };
60
+ });
61
+ server.handle('sync.pull', async () => {
62
+ const syncer = getSyncer();
63
+ if (!syncer) {
64
+ return { ran: false, reason: 'git sync is not enabled for this daemon' };
65
+ }
66
+ // Commit any (now-flushed) local changes before pulling so the merge
67
+ // driver merges local + remote instead of git refusing the pull over
68
+ // uncommitted changes — and so un-flushed local work isn't lost on reload.
69
+ // This still does not push, preserving sync.pull's "pull, don't push" intent.
70
+ const result = await coordinated(async () => {
71
+ await syncer.commitIfDirty();
72
+ return syncer.pull();
73
+ }, (r) => r.pulled && r.hasChanges);
74
+ return { ran: true, result };
75
+ });
76
+ server.handle('sync.status', async () => {
77
+ return getSyncStatus();
78
+ });
79
+ server.handle('sync.reload', async () => {
80
+ try {
81
+ const status = await reloadSyncer();
82
+ return { reloaded: true, status };
83
+ }
84
+ catch (err) {
85
+ return {
86
+ reloaded: false,
87
+ status: getSyncStatus(),
88
+ error: err.message,
89
+ };
90
+ }
91
+ });
92
+ }
93
+ /** Build a sync.status snapshot for one location from its state. */
94
+ function locationSyncStatus(state) {
95
+ const cfg = state.gitSyncConfig;
96
+ const syncer = state.graphSyncer;
97
+ return {
98
+ enabled: cfg?.enabled ?? false,
99
+ remote: cfg?.remote,
100
+ autoCommit: cfg?.autoCommit ?? false,
101
+ autoPush: cfg?.autoPush ?? false,
102
+ pullOnStartup: cfg?.pullOnStartup ?? false,
103
+ autoSyncRunning: syncer?.isAutoSyncRunning() ?? false,
104
+ health: syncer?.getHealth(),
105
+ };
106
+ }
107
+ /**
108
+ * Register location-aware sync.now / sync.pull / sync.status / sync.reload.
109
+ *
110
+ * Each handler takes an optional `location` param (the worktree hash). The git
111
+ * op runs through the SAME coordinated flush-freeze-reload as single-location,
112
+ * but resolved per location — so a debounced flush on one worktree can't clobber
113
+ * that worktree's freshly-pulled graph.jsonl (the F2 race), and pulls reload
114
+ * that location's SQLite.
115
+ */
116
+ export function registerMultiLocationSyncMethods(options) {
117
+ const { server, locationResolver, reloadLocationSyncer } = options;
118
+ server.handle('sync.now', async (params) => {
119
+ const state = locationResolver.resolve(params?.location);
120
+ const syncer = state.graphSyncer;
121
+ if (!syncer) {
122
+ return { ran: false, reason: 'git sync is not enabled for this location' };
123
+ }
124
+ const result = await runCoordinated(state.flushManager, () => state.store.reload(), () => syncer.sync(), (r) => r.pull.pulled && r.pull.hasChanges);
125
+ return { ran: true, result };
126
+ });
127
+ server.handle('sync.pull', async (params) => {
128
+ const state = locationResolver.resolve(params?.location);
129
+ const syncer = state.graphSyncer;
130
+ if (!syncer) {
131
+ return { ran: false, reason: 'git sync is not enabled for this location' };
132
+ }
133
+ const result = await runCoordinated(state.flushManager, () => state.store.reload(), async () => {
134
+ await syncer.commitIfDirty();
135
+ return syncer.pull();
136
+ }, (r) => r.pulled && r.hasChanges);
137
+ return { ran: true, result };
138
+ });
139
+ server.handle('sync.status', async (params) => {
140
+ const state = locationResolver.resolve(params?.location);
141
+ return locationSyncStatus(state);
142
+ });
143
+ server.handle('sync.reload', async (params) => {
144
+ const state = locationResolver.resolve(params?.location);
145
+ try {
146
+ await reloadLocationSyncer(state);
147
+ return { reloaded: true, status: locationSyncStatus(state) };
148
+ }
149
+ catch (err) {
150
+ return {
151
+ reloaded: false,
152
+ status: locationSyncStatus(state),
153
+ error: err.message,
154
+ };
155
+ }
156
+ });
157
+ }
158
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/daemon/methods/sync.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/daemon/methods/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAe7D,OAAO,KAAK,EAAE,oBAAoB,EAAqB,MAAM,iCAAiC,CAAC;AAM/F;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,MAAM,EAAE,SAAS,CAAC;IAElB,qDAAqD;IACrD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAmBD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAsJvE"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/daemon/methods/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAe7D,OAAO,KAAK,EAAE,oBAAoB,EAAqB,MAAM,iCAAiC,CAAC;AAM/F;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,MAAM,EAAE,SAAS,CAAC;IAElB,qDAAqD;IACrD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAmBD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAwLvE"}
@@ -18,7 +18,7 @@ import { task } from '../../tools/task.js';
18
18
  /**
19
19
  * Check if an ID is a local node ID (not a provider URI)
20
20
  */
21
- const LOCAL_ID_PATTERN = /^[ctfex]-[a-z0-9]+$/;
21
+ const LOCAL_ID_PATTERN = /^[ctfexa]-[a-z0-9]+$/;
22
22
  function isLocalId(id) {
23
23
  return LOCAL_ID_PATTERN.test(id);
24
24
  }
@@ -99,15 +99,49 @@ export function registerToolsMethods(options) {
99
99
  return { success: false, error: 'Provider store not available' };
100
100
  }
101
101
  const result = await task(state.providerStore, taskParams);
102
- // Mark nodes dirty and schedule flush for mutations
102
+ // Persist mutations with two durability tiers. Coordination-critical
103
+ // writes — claims/leases and terminal transitions — flush to JSONL
104
+ // *before* the RPC returns so a crash can't lose a claim or a terminal
105
+ // outcome. Ordinary edits (assign, non-terminal transitions) keep the
106
+ // debounced flush.
103
107
  if (result.success && result.data) {
104
- if (result.data.type === 'transition' && isLocalId(result.data.node.id)) {
105
- state.flushManager.markDirty(result.data.node.id);
106
- state.flushManager.schedule();
108
+ const d = result.data;
109
+ let dirtyId;
110
+ let durable = false;
111
+ if (d.type === 'transition' && isLocalId(d.node.id)) {
112
+ dirtyId = d.node.id;
113
+ durable =
114
+ d.action === 'complete' ||
115
+ d.action === 'close' ||
116
+ d.action === 'fail' ||
117
+ d.action === 'abandon';
107
118
  }
108
- if (result.data.type === 'assign' && isLocalId(result.data.node.id)) {
109
- state.flushManager.markDirty(result.data.node.id);
110
- state.flushManager.schedule();
119
+ else if (d.type === 'assign' && isLocalId(d.node.id)) {
120
+ dirtyId = d.node.id;
121
+ }
122
+ else if (
123
+ // Coordination mutations carry a nodeId when they touched a task.
124
+ // claimNext with nothing to claim has no nodeId and is skipped.
125
+ (d.type === 'claim' ||
126
+ d.type === 'renew' ||
127
+ d.type === 'claimNext' ||
128
+ d.type === 'release') &&
129
+ d.nodeId &&
130
+ isLocalId(d.nodeId)) {
131
+ dirtyId = d.nodeId;
132
+ durable = true; // claims/leases are coordination-critical
133
+ }
134
+ if (dirtyId) {
135
+ state.flushManager.markDirty(dirtyId);
136
+ if (durable) {
137
+ // Durable tier: persist before returning. flush() is a no-op while
138
+ // a git sync has the flush paused — the node stays dirty and is
139
+ // flushed when sync resumes.
140
+ await state.flushManager.flush();
141
+ }
142
+ else {
143
+ state.flushManager.schedule();
144
+ }
111
145
  }
112
146
  }
113
147
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/daemon/methods/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/daemon/methods/tools.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,35 @@
10
10
  */
11
11
  import type { IPCServer } from '../ipc.js';
12
12
  import type { LocationResolver } from '../location-state.js';
13
+ import type { EventManager } from '../events.js';
13
14
  export interface WatchMethodsOptions {
14
15
  /** IPC server to register handlers on */
15
16
  server: IPCServer;
16
17
  /** Location resolver for routing to correct store */
17
18
  locationResolver: LocationResolver;
19
+ /**
20
+ * Optional event manager. When present, each broadcast `watch.event` is
21
+ * stamped with a monotonic `seq` + per-process `epoch` and buffered for
22
+ * replay (P3 M2), so a reconnecting subscriber can backfill via `events.since`.
23
+ * Without it, events broadcast unstamped (the M1 fire-and-forget behavior).
24
+ */
25
+ eventManager?: EventManager;
26
+ /**
27
+ * Optional callback invoked when a diff cycle throws and is swallowed, so the
28
+ * daemon can surface otherwise-silent watcher failures via `health` (F10).
29
+ */
30
+ onWatcherError?: () => void;
31
+ }
32
+ /**
33
+ * Subscription filter (coarse). Omitted → the subscriber receives all events.
34
+ * `types` matches the provider node type carried on the event (tasks are emitted
35
+ * as `'issue'`, contexts as `'spec'`); `statuses` matches `node.status`;
36
+ * `locations` matches the originating worktree's location hash (multi-location).
37
+ */
38
+ export interface WatchFilter {
39
+ types?: string[];
40
+ statuses?: string[];
41
+ locations?: string[];
18
42
  }
19
43
  /**
20
44
  * Register watch subscription method handlers on an IPC server
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/daemon/methods/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,MAAM,EAAE,SAAS,CAAC;IAElB,qDAAqD;IACrD,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAuED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAwJvE"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/daemon/methods/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,sBAAsB,CAAC;AAG5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,MAAM,EAAE,SAAS,CAAC;IAElB,qDAAqD;IACrD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAgID;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAuMvE"}