claude-code-swarm 0.3.4 → 0.3.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 (1393) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +22 -1
  3. package/.claude-plugin/run-agent-inbox-mcp.sh +95 -0
  4. package/.claude-plugin/run-minimem-mcp.sh +98 -0
  5. package/.claude-plugin/run-opentasks-mcp.sh +65 -0
  6. package/.gitattributes +3 -0
  7. package/.opentasks/config.json +9 -0
  8. package/.opentasks/graph.jsonl +0 -0
  9. package/CLAUDE.md +196 -36
  10. package/e2e/helpers/cleanup.mjs +17 -3
  11. package/e2e/helpers/map-mock-server.mjs +201 -25
  12. package/e2e/helpers/opentasks-daemon.mjs +149 -0
  13. package/e2e/helpers/sidecar.mjs +222 -0
  14. package/e2e/helpers/workspace.mjs +2 -1
  15. package/e2e/tier5-sidecar-inbox.test.mjs +900 -0
  16. package/e2e/tier6-inbox-mcp.test.mjs +173 -0
  17. package/e2e/tier6-live-agent.test.mjs +759 -0
  18. package/e2e/tier6-live-inbox-flow.test.mjs +938 -0
  19. package/e2e/tier7-hooks.test.mjs +992 -0
  20. package/e2e/tier7-minimem.test.mjs +461 -0
  21. package/e2e/tier7-opentasks.test.mjs +513 -0
  22. package/e2e/tier7-skilltree.test.mjs +506 -0
  23. package/e2e/vitest.config.e2e.mjs +1 -1
  24. package/hooks/hooks.json +15 -8
  25. package/package.json +17 -1
  26. package/references/agent-inbox/CLAUDE.md +151 -0
  27. package/references/agent-inbox/README.md +238 -0
  28. package/references/agent-inbox/docs/CLAUDE-CODE-SWARM-PROPOSAL.md +137 -0
  29. package/references/agent-inbox/docs/DESIGN.md +1156 -0
  30. package/references/agent-inbox/hooks/inbox-hook.mjs +119 -0
  31. package/references/agent-inbox/hooks/register-hook.mjs +69 -0
  32. package/references/agent-inbox/package-lock.json +3347 -0
  33. package/references/agent-inbox/package.json +58 -0
  34. package/references/agent-inbox/rules/agent-inbox.md +78 -0
  35. package/references/agent-inbox/src/federation/address.ts +61 -0
  36. package/references/agent-inbox/src/federation/connection-manager.ts +573 -0
  37. package/references/agent-inbox/src/federation/delivery-queue.ts +222 -0
  38. package/references/agent-inbox/src/federation/index.ts +6 -0
  39. package/references/agent-inbox/src/federation/routing-engine.ts +188 -0
  40. package/references/agent-inbox/src/federation/trust.ts +71 -0
  41. package/references/agent-inbox/src/index.ts +404 -0
  42. package/references/agent-inbox/src/ipc/ipc-server.ts +265 -0
  43. package/references/agent-inbox/src/jsonrpc/mail-server.ts +382 -0
  44. package/references/agent-inbox/src/map/map-client.ts +414 -0
  45. package/references/agent-inbox/src/mcp/mcp-proxy.ts +326 -0
  46. package/references/agent-inbox/src/mcp/mcp-server.ts +272 -0
  47. package/references/agent-inbox/src/mesh/delivery-bridge.ts +110 -0
  48. package/references/agent-inbox/src/mesh/mesh-connector.ts +41 -0
  49. package/references/agent-inbox/src/mesh/mesh-transport.ts +157 -0
  50. package/references/agent-inbox/src/mesh/type-mapper.ts +239 -0
  51. package/references/agent-inbox/src/push/notifier.ts +233 -0
  52. package/references/agent-inbox/src/registry/warm-registry.ts +255 -0
  53. package/references/agent-inbox/src/router/message-router.ts +175 -0
  54. package/references/agent-inbox/src/storage/interface.ts +48 -0
  55. package/references/agent-inbox/src/storage/memory.ts +145 -0
  56. package/references/agent-inbox/src/storage/sqlite.ts +671 -0
  57. package/references/agent-inbox/src/traceability/traceability.ts +183 -0
  58. package/references/agent-inbox/src/types.ts +329 -0
  59. package/references/agent-inbox/test/federation/address.test.ts +101 -0
  60. package/references/agent-inbox/test/federation/connection-manager.test.ts +546 -0
  61. package/references/agent-inbox/test/federation/delivery-queue.test.ts +159 -0
  62. package/references/agent-inbox/test/federation/integration.test.ts +857 -0
  63. package/references/agent-inbox/test/federation/routing-engine.test.ts +117 -0
  64. package/references/agent-inbox/test/federation/sdk-integration.test.ts +744 -0
  65. package/references/agent-inbox/test/federation/trust.test.ts +89 -0
  66. package/references/agent-inbox/test/ipc-jsonrpc.test.ts +113 -0
  67. package/references/agent-inbox/test/ipc-new-commands.test.ts +200 -0
  68. package/references/agent-inbox/test/ipc-server.test.ts +197 -0
  69. package/references/agent-inbox/test/mail-server.test.ts +285 -0
  70. package/references/agent-inbox/test/map-client.test.ts +408 -0
  71. package/references/agent-inbox/test/mcp-proxy.test.ts +191 -0
  72. package/references/agent-inbox/test/mesh/delivery-bridge.test.ts +178 -0
  73. package/references/agent-inbox/test/mesh/e2e-mesh.test.ts +527 -0
  74. package/references/agent-inbox/test/mesh/e2e-real-meshpeer.test.ts +629 -0
  75. package/references/agent-inbox/test/mesh/federation-mesh.test.ts +269 -0
  76. package/references/agent-inbox/test/mesh/mesh-connector.test.ts +66 -0
  77. package/references/agent-inbox/test/mesh/mesh-transport.test.ts +191 -0
  78. package/references/agent-inbox/test/mesh/meshpeer-integration.test.ts +442 -0
  79. package/references/agent-inbox/test/mesh/mock-mesh.ts +125 -0
  80. package/references/agent-inbox/test/mesh/mock-meshpeer.ts +266 -0
  81. package/references/agent-inbox/test/mesh/type-mapper.test.ts +226 -0
  82. package/references/agent-inbox/test/message-router.test.ts +184 -0
  83. package/references/agent-inbox/test/push-notifier.test.ts +139 -0
  84. package/references/agent-inbox/test/registry/warm-registry.test.ts +171 -0
  85. package/references/agent-inbox/test/sqlite-prefix.test.ts +192 -0
  86. package/references/agent-inbox/test/sqlite-storage.test.ts +243 -0
  87. package/references/agent-inbox/test/storage.test.ts +196 -0
  88. package/references/agent-inbox/test/traceability.test.ts +123 -0
  89. package/references/agent-inbox/test/wake.test.ts +330 -0
  90. package/references/agent-inbox/tsconfig.json +20 -0
  91. package/references/agent-inbox/tsup.config.ts +10 -0
  92. package/references/agent-inbox/vitest.config.ts +8 -0
  93. package/references/minimem/.claude/settings.json +7 -0
  94. package/references/minimem/.sudocode/issues.jsonl +18 -0
  95. package/references/minimem/.sudocode/specs.jsonl +1 -0
  96. package/references/minimem/CLAUDE.md +329 -0
  97. package/references/minimem/README.md +565 -0
  98. package/references/minimem/claude-plugin/.claude-plugin/plugin.json +10 -0
  99. package/references/minimem/claude-plugin/.mcp.json +7 -0
  100. package/references/minimem/claude-plugin/README.md +158 -0
  101. package/references/minimem/claude-plugin/commands/recall.md +47 -0
  102. package/references/minimem/claude-plugin/commands/remember.md +41 -0
  103. package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +272 -0
  104. package/references/minimem/claude-plugin/hooks/hooks.json +27 -0
  105. package/references/minimem/claude-plugin/hooks/session-end.sh +86 -0
  106. package/references/minimem/claude-plugin/hooks/session-start.sh +85 -0
  107. package/references/minimem/claude-plugin/skills/memory/SKILL.md +108 -0
  108. package/references/minimem/media/banner.png +0 -0
  109. package/references/minimem/package-lock.json +5373 -0
  110. package/references/minimem/package.json +76 -0
  111. package/references/minimem/scripts/postbuild.js +49 -0
  112. package/references/minimem/src/__tests__/edge-cases.test.ts +371 -0
  113. package/references/minimem/src/__tests__/errors.test.ts +265 -0
  114. package/references/minimem/src/__tests__/helpers.ts +199 -0
  115. package/references/minimem/src/__tests__/internal.test.ts +407 -0
  116. package/references/minimem/src/__tests__/knowledge-frontmatter.test.ts +148 -0
  117. package/references/minimem/src/__tests__/knowledge.test.ts +148 -0
  118. package/references/minimem/src/__tests__/minimem.integration.test.ts +1127 -0
  119. package/references/minimem/src/__tests__/session.test.ts +190 -0
  120. package/references/minimem/src/cli/__tests__/commands.test.ts +760 -0
  121. package/references/minimem/src/cli/__tests__/contained-layout.test.ts +286 -0
  122. package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +141 -0
  123. package/references/minimem/src/cli/commands/append.ts +76 -0
  124. package/references/minimem/src/cli/commands/config.ts +262 -0
  125. package/references/minimem/src/cli/commands/conflicts.ts +415 -0
  126. package/references/minimem/src/cli/commands/daemon.ts +169 -0
  127. package/references/minimem/src/cli/commands/index.ts +12 -0
  128. package/references/minimem/src/cli/commands/init.ts +166 -0
  129. package/references/minimem/src/cli/commands/mcp.ts +221 -0
  130. package/references/minimem/src/cli/commands/push-pull.ts +213 -0
  131. package/references/minimem/src/cli/commands/search.ts +223 -0
  132. package/references/minimem/src/cli/commands/status.ts +84 -0
  133. package/references/minimem/src/cli/commands/store.ts +189 -0
  134. package/references/minimem/src/cli/commands/sync-init.ts +290 -0
  135. package/references/minimem/src/cli/commands/sync.ts +70 -0
  136. package/references/minimem/src/cli/commands/upsert.ts +197 -0
  137. package/references/minimem/src/cli/config.ts +611 -0
  138. package/references/minimem/src/cli/index.ts +299 -0
  139. package/references/minimem/src/cli/shared.ts +189 -0
  140. package/references/minimem/src/cli/sync/__tests__/central.test.ts +152 -0
  141. package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +209 -0
  142. package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +118 -0
  143. package/references/minimem/src/cli/sync/__tests__/detection.test.ts +207 -0
  144. package/references/minimem/src/cli/sync/__tests__/integration.test.ts +476 -0
  145. package/references/minimem/src/cli/sync/__tests__/registry.test.ts +363 -0
  146. package/references/minimem/src/cli/sync/__tests__/state.test.ts +255 -0
  147. package/references/minimem/src/cli/sync/__tests__/validation.test.ts +193 -0
  148. package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +178 -0
  149. package/references/minimem/src/cli/sync/central.ts +292 -0
  150. package/references/minimem/src/cli/sync/conflicts.ts +205 -0
  151. package/references/minimem/src/cli/sync/daemon.ts +407 -0
  152. package/references/minimem/src/cli/sync/detection.ts +138 -0
  153. package/references/minimem/src/cli/sync/index.ts +107 -0
  154. package/references/minimem/src/cli/sync/operations.ts +373 -0
  155. package/references/minimem/src/cli/sync/registry.ts +279 -0
  156. package/references/minimem/src/cli/sync/state.ts +358 -0
  157. package/references/minimem/src/cli/sync/validation.ts +206 -0
  158. package/references/minimem/src/cli/sync/watcher.ts +237 -0
  159. package/references/minimem/src/cli/version.ts +34 -0
  160. package/references/minimem/src/core/index.ts +9 -0
  161. package/references/minimem/src/core/indexer.ts +628 -0
  162. package/references/minimem/src/core/searcher.ts +221 -0
  163. package/references/minimem/src/db/schema.ts +183 -0
  164. package/references/minimem/src/db/sqlite-vec.ts +24 -0
  165. package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +431 -0
  166. package/references/minimem/src/embeddings/batch-gemini.ts +392 -0
  167. package/references/minimem/src/embeddings/batch-openai.ts +409 -0
  168. package/references/minimem/src/embeddings/embeddings.ts +434 -0
  169. package/references/minimem/src/index.ts +132 -0
  170. package/references/minimem/src/internal.ts +299 -0
  171. package/references/minimem/src/minimem.ts +1291 -0
  172. package/references/minimem/src/search/__tests__/hybrid.test.ts +247 -0
  173. package/references/minimem/src/search/graph.ts +234 -0
  174. package/references/minimem/src/search/hybrid.ts +151 -0
  175. package/references/minimem/src/search/search.ts +256 -0
  176. package/references/minimem/src/server/__tests__/mcp.test.ts +347 -0
  177. package/references/minimem/src/server/__tests__/tools.test.ts +364 -0
  178. package/references/minimem/src/server/mcp.ts +326 -0
  179. package/references/minimem/src/server/tools.ts +720 -0
  180. package/references/minimem/src/session.ts +460 -0
  181. package/references/minimem/src/store/__tests__/manifest.test.ts +177 -0
  182. package/references/minimem/src/store/__tests__/materialize.test.ts +52 -0
  183. package/references/minimem/src/store/__tests__/store-graph.test.ts +228 -0
  184. package/references/minimem/src/store/index.ts +27 -0
  185. package/references/minimem/src/store/manifest.ts +203 -0
  186. package/references/minimem/src/store/materialize.ts +185 -0
  187. package/references/minimem/src/store/store-graph.ts +252 -0
  188. package/references/minimem/tsconfig.json +19 -0
  189. package/references/minimem/tsup.config.ts +26 -0
  190. package/references/minimem/vitest.config.ts +29 -0
  191. package/references/multi-agent-protocol/.sudocode/issues.jsonl +120 -0
  192. package/references/multi-agent-protocol/.sudocode/specs.jsonl +15 -0
  193. package/references/multi-agent-protocol/LICENSE +21 -0
  194. package/references/multi-agent-protocol/README.md +113 -0
  195. package/references/multi-agent-protocol/docs/00-design-specification.md +496 -0
  196. package/references/multi-agent-protocol/docs/01-open-questions.md +1050 -0
  197. package/references/multi-agent-protocol/docs/02-wire-protocol.md +296 -0
  198. package/references/multi-agent-protocol/docs/03-streaming-semantics.md +252 -0
  199. package/references/multi-agent-protocol/docs/04-error-handling.md +231 -0
  200. package/references/multi-agent-protocol/docs/05-connection-model.md +244 -0
  201. package/references/multi-agent-protocol/docs/06-visibility-permissions.md +243 -0
  202. package/references/multi-agent-protocol/docs/07-federation.md +335 -0
  203. package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +253 -0
  204. package/references/multi-agent-protocol/docs/09-authentication.md +748 -0
  205. package/references/multi-agent-protocol/docs/10-environment-awareness.md +242 -0
  206. package/references/multi-agent-protocol/docs/10-mail-protocol.md +553 -0
  207. package/references/multi-agent-protocol/docs/11-anp-inspired-improvements.md +1079 -0
  208. package/references/multi-agent-protocol/docs/11-trajectory-protocol.md +292 -0
  209. package/references/multi-agent-protocol/docs/12-anp-implementation-plan.md +641 -0
  210. package/references/multi-agent-protocol/docs/agent-iam-integration.md +877 -0
  211. package/references/multi-agent-protocol/docs/agentic-mesh-integration-draft.md +459 -0
  212. package/references/multi-agent-protocol/docs/git-transport-draft.md +251 -0
  213. package/references/multi-agent-protocol/docs-site/Gemfile +22 -0
  214. package/references/multi-agent-protocol/docs-site/README.md +82 -0
  215. package/references/multi-agent-protocol/docs-site/_config.yml +91 -0
  216. package/references/multi-agent-protocol/docs-site/_includes/head_custom.html +20 -0
  217. package/references/multi-agent-protocol/docs-site/_sass/color_schemes/map.scss +42 -0
  218. package/references/multi-agent-protocol/docs-site/_sass/custom/custom.scss +34 -0
  219. package/references/multi-agent-protocol/docs-site/examples/full-integration.md +510 -0
  220. package/references/multi-agent-protocol/docs-site/examples/index.md +138 -0
  221. package/references/multi-agent-protocol/docs-site/examples/simple-chat.md +282 -0
  222. package/references/multi-agent-protocol/docs-site/examples/task-queue.md +399 -0
  223. package/references/multi-agent-protocol/docs-site/getting-started/index.md +98 -0
  224. package/references/multi-agent-protocol/docs-site/getting-started/installation.md +219 -0
  225. package/references/multi-agent-protocol/docs-site/getting-started/overview.md +172 -0
  226. package/references/multi-agent-protocol/docs-site/getting-started/quickstart.md +237 -0
  227. package/references/multi-agent-protocol/docs-site/index.md +136 -0
  228. package/references/multi-agent-protocol/docs-site/protocol/authentication.md +391 -0
  229. package/references/multi-agent-protocol/docs-site/protocol/connection-model.md +376 -0
  230. package/references/multi-agent-protocol/docs-site/protocol/design.md +284 -0
  231. package/references/multi-agent-protocol/docs-site/protocol/error-handling.md +312 -0
  232. package/references/multi-agent-protocol/docs-site/protocol/federation.md +449 -0
  233. package/references/multi-agent-protocol/docs-site/protocol/index.md +129 -0
  234. package/references/multi-agent-protocol/docs-site/protocol/permissions.md +398 -0
  235. package/references/multi-agent-protocol/docs-site/protocol/streaming.md +353 -0
  236. package/references/multi-agent-protocol/docs-site/protocol/wire-protocol.md +369 -0
  237. package/references/multi-agent-protocol/docs-site/sdk/api/agent.md +357 -0
  238. package/references/multi-agent-protocol/docs-site/sdk/api/client.md +380 -0
  239. package/references/multi-agent-protocol/docs-site/sdk/api/index.md +62 -0
  240. package/references/multi-agent-protocol/docs-site/sdk/api/server.md +453 -0
  241. package/references/multi-agent-protocol/docs-site/sdk/api/types.md +468 -0
  242. package/references/multi-agent-protocol/docs-site/sdk/guides/agent.md +375 -0
  243. package/references/multi-agent-protocol/docs-site/sdk/guides/authentication.md +405 -0
  244. package/references/multi-agent-protocol/docs-site/sdk/guides/client.md +352 -0
  245. package/references/multi-agent-protocol/docs-site/sdk/guides/index.md +89 -0
  246. package/references/multi-agent-protocol/docs-site/sdk/guides/server.md +360 -0
  247. package/references/multi-agent-protocol/docs-site/sdk/guides/testing.md +446 -0
  248. package/references/multi-agent-protocol/docs-site/sdk/guides/transports.md +363 -0
  249. package/references/multi-agent-protocol/docs-site/sdk/index.md +206 -0
  250. package/references/multi-agent-protocol/package-lock.json +4230 -0
  251. package/references/multi-agent-protocol/package.json +56 -0
  252. package/references/multi-agent-protocol/schema/meta.json +584 -0
  253. package/references/multi-agent-protocol/schema/schema.json +3067 -0
  254. package/references/openhive/.claude/settings.json +6 -0
  255. package/references/openhive/.dockerignore +54 -0
  256. package/references/openhive/.github/workflows/docker.yml +52 -0
  257. package/references/openhive/.sudocode/issues.jsonl +24 -0
  258. package/references/openhive/.sudocode/specs.jsonl +4 -0
  259. package/references/openhive/CLAUDE.md +88 -0
  260. package/references/openhive/Dockerfile +105 -0
  261. package/references/openhive/README.md +745 -0
  262. package/references/openhive/bin/openhive.js +6 -0
  263. package/references/openhive/cloudbuild.yaml +80 -0
  264. package/references/openhive/deploy/cloud-run.sh +106 -0
  265. package/references/openhive/deploy/openhive.env.example +80 -0
  266. package/references/openhive/deploy/openhive.service +91 -0
  267. package/references/openhive/docker-compose.yml +67 -0
  268. package/references/openhive/docker-entrypoint.sh +117 -0
  269. package/references/openhive/docs/API_MIGRATION.md +176 -0
  270. package/references/openhive/docs/DEPLOYMENT.md +847 -0
  271. package/references/openhive/docs/DESIGN_v1.md +489 -0
  272. package/references/openhive/docs/DESIGN_v2.md +564 -0
  273. package/references/openhive/docs/HEADSCALE_HOSTING_SPEC.md +513 -0
  274. package/references/openhive/docs/HIVE_SYNC_DESIGN.md +2362 -0
  275. package/references/openhive/docs/HIVE_SYNC_IMPLEMENTATION_PLAN.md +1169 -0
  276. package/references/openhive/docs/HOSTING.md +601 -0
  277. package/references/openhive/docs/IMPLEMENTATION_PLAN.md +428 -0
  278. package/references/openhive/docs/LOCAL_SETUP.md +506 -0
  279. package/references/openhive/docs/MACRO_AGENT_ATLAS_EXTENSION.md +351 -0
  280. package/references/openhive/docs/MEMORY_BANK_SYNC_SPEC.md +909 -0
  281. package/references/openhive/docs/PLAN_v1.md +471 -0
  282. package/references/openhive/docs/PLAN_v2.md +623 -0
  283. package/references/openhive/docs/WEBSOCKET.md +267 -0
  284. package/references/openhive/docs/openswarm-bootstrap-token-spec.md +240 -0
  285. package/references/openhive/ecosystem.config.cjs +76 -0
  286. package/references/openhive/fly.toml +63 -0
  287. package/references/openhive/package-lock.json +17640 -0
  288. package/references/openhive/package.json +128 -0
  289. package/references/openhive/packages/openhive-types/package-lock.json +1473 -0
  290. package/references/openhive/packages/openhive-types/package.json +42 -0
  291. package/references/openhive/packages/openhive-types/src/index.ts +36 -0
  292. package/references/openhive/packages/openhive-types/src/map-coordination.ts +92 -0
  293. package/references/openhive/packages/openhive-types/src/map-session-sync.ts +50 -0
  294. package/references/openhive/packages/openhive-types/src/map-sync.ts +68 -0
  295. package/references/openhive/packages/openhive-types/tsconfig.json +15 -0
  296. package/references/openhive/packages/openhive-types/tsconfig.tsbuildinfo +1 -0
  297. package/references/openhive/packages/openhive-types/tsup.config.ts +12 -0
  298. package/references/openhive/railway.json +13 -0
  299. package/references/openhive/railway.toml +24 -0
  300. package/references/openhive/render.yaml +51 -0
  301. package/references/openhive/src/__tests__/auth.test.ts +148 -0
  302. package/references/openhive/src/__tests__/bridge/credentials.test.ts +65 -0
  303. package/references/openhive/src/__tests__/bridge/dal.test.ts +279 -0
  304. package/references/openhive/src/__tests__/bridge/inbound.test.ts +349 -0
  305. package/references/openhive/src/__tests__/bridge/manager.test.ts +419 -0
  306. package/references/openhive/src/__tests__/bridge/mentions.test.ts +83 -0
  307. package/references/openhive/src/__tests__/bridge/outbound.test.ts +209 -0
  308. package/references/openhive/src/__tests__/bridge/slack-adapter.test.ts +276 -0
  309. package/references/openhive/src/__tests__/cli.test.ts +342 -0
  310. package/references/openhive/src/__tests__/config.test.ts +205 -0
  311. package/references/openhive/src/__tests__/coordination/coordination.test.ts +1072 -0
  312. package/references/openhive/src/__tests__/coordination/cross-instance.test.ts +540 -0
  313. package/references/openhive/src/__tests__/coordination/e2e.test.ts +780 -0
  314. package/references/openhive/src/__tests__/data-dir.test.ts +332 -0
  315. package/references/openhive/src/__tests__/db.test.ts +258 -0
  316. package/references/openhive/src/__tests__/discovery.test.ts +288 -0
  317. package/references/openhive/src/__tests__/events/dal.test.ts +371 -0
  318. package/references/openhive/src/__tests__/events/dispatch.test.ts +202 -0
  319. package/references/openhive/src/__tests__/events/e2e.test.ts +528 -0
  320. package/references/openhive/src/__tests__/events/normalizers.test.ts +263 -0
  321. package/references/openhive/src/__tests__/events/router.test.ts +314 -0
  322. package/references/openhive/src/__tests__/events/routes.test.ts +407 -0
  323. package/references/openhive/src/__tests__/follows.test.ts +328 -0
  324. package/references/openhive/src/__tests__/helpers/test-dirs.ts +44 -0
  325. package/references/openhive/src/__tests__/ingest-keys.test.ts +925 -0
  326. package/references/openhive/src/__tests__/map/sync-client-content.test.ts +288 -0
  327. package/references/openhive/src/__tests__/map/sync-client.test.ts +500 -0
  328. package/references/openhive/src/__tests__/map/sync-listener.test.ts +504 -0
  329. package/references/openhive/src/__tests__/middleware/hostname-guard.test.ts +73 -0
  330. package/references/openhive/src/__tests__/migrations.test.ts +260 -0
  331. package/references/openhive/src/__tests__/opentasks/client.test.ts +497 -0
  332. package/references/openhive/src/__tests__/opentasks/discovery.test.ts +283 -0
  333. package/references/openhive/src/__tests__/opentasks/e2e.test.ts +767 -0
  334. package/references/openhive/src/__tests__/routes/agents.test.ts +417 -0
  335. package/references/openhive/src/__tests__/routes/opentasks-content.test.ts +493 -0
  336. package/references/openhive/src/__tests__/routes/resource-content.test.ts +1741 -0
  337. package/references/openhive/src/__tests__/sessions/adapters.test.ts +524 -0
  338. package/references/openhive/src/__tests__/sessions/routes.test.ts +1053 -0
  339. package/references/openhive/src/__tests__/sessions/storage.test.ts +545 -0
  340. package/references/openhive/src/__tests__/sessions/trajectory-checkpoints.test.ts +349 -0
  341. package/references/openhive/src/__tests__/sessions/trajectory-routes.test.ts +290 -0
  342. package/references/openhive/src/__tests__/swarm/config.test.ts +125 -0
  343. package/references/openhive/src/__tests__/swarm/credentials.test.ts +254 -0
  344. package/references/openhive/src/__tests__/swarm/dal.test.ts +290 -0
  345. package/references/openhive/src/__tests__/swarm/e2e.test.ts +827 -0
  346. package/references/openhive/src/__tests__/swarm/fixtures/exit-immediately.js +3 -0
  347. package/references/openhive/src/__tests__/swarm/fixtures/map-server.js +147 -0
  348. package/references/openhive/src/__tests__/swarm/fixtures/sleep-server.js +52 -0
  349. package/references/openhive/src/__tests__/swarm/local-provider.test.ts +279 -0
  350. package/references/openhive/src/__tests__/swarm/manager.test.ts +305 -0
  351. package/references/openhive/src/__tests__/swarm/routes.test.ts +396 -0
  352. package/references/openhive/src/__tests__/swarm/workspace.test.ts +257 -0
  353. package/references/openhive/src/__tests__/swarmhub/client.test.ts +324 -0
  354. package/references/openhive/src/__tests__/swarmhub/config.test.ts +213 -0
  355. package/references/openhive/src/__tests__/swarmhub/connector.test.ts +581 -0
  356. package/references/openhive/src/__tests__/swarmhub/routes.test.ts +639 -0
  357. package/references/openhive/src/__tests__/swarmhub/slack-client.test.ts +164 -0
  358. package/references/openhive/src/__tests__/swarmhub/slack-connector.test.ts +164 -0
  359. package/references/openhive/src/__tests__/swarmhub/slack-routes.test.ts +373 -0
  360. package/references/openhive/src/__tests__/swarmhub/webhook-handler.test.ts +295 -0
  361. package/references/openhive/src/__tests__/sync/resource-sync.test.ts +1418 -0
  362. package/references/openhive/src/__tests__/sync/sync.test.ts +800 -0
  363. package/references/openhive/src/api/index.ts +65 -0
  364. package/references/openhive/src/api/middleware/auth.ts +227 -0
  365. package/references/openhive/src/api/middleware/hostname-guard.ts +38 -0
  366. package/references/openhive/src/api/routes/admin.ts +366 -0
  367. package/references/openhive/src/api/routes/agents.ts +223 -0
  368. package/references/openhive/src/api/routes/auth.ts +164 -0
  369. package/references/openhive/src/api/routes/bridges.ts +384 -0
  370. package/references/openhive/src/api/routes/comments.ts +294 -0
  371. package/references/openhive/src/api/routes/coordination.ts +312 -0
  372. package/references/openhive/src/api/routes/events.ts +158 -0
  373. package/references/openhive/src/api/routes/federation.ts +367 -0
  374. package/references/openhive/src/api/routes/feed.ts +212 -0
  375. package/references/openhive/src/api/routes/hives.ts +264 -0
  376. package/references/openhive/src/api/routes/map.ts +674 -0
  377. package/references/openhive/src/api/routes/memory-banks.ts +971 -0
  378. package/references/openhive/src/api/routes/posts.ts +342 -0
  379. package/references/openhive/src/api/routes/resource-content.ts +727 -0
  380. package/references/openhive/src/api/routes/resources.ts +1013 -0
  381. package/references/openhive/src/api/routes/search.ts +45 -0
  382. package/references/openhive/src/api/routes/sessions.ts +1187 -0
  383. package/references/openhive/src/api/routes/swarm-hosting.ts +313 -0
  384. package/references/openhive/src/api/routes/sync-protocol.ts +168 -0
  385. package/references/openhive/src/api/routes/sync.ts +279 -0
  386. package/references/openhive/src/api/routes/uploads.ts +174 -0
  387. package/references/openhive/src/api/routes/webhooks.ts +603 -0
  388. package/references/openhive/src/api/schemas/agents.ts +26 -0
  389. package/references/openhive/src/api/schemas/comments.ts +22 -0
  390. package/references/openhive/src/api/schemas/hives.ts +33 -0
  391. package/references/openhive/src/api/schemas/posts.ts +37 -0
  392. package/references/openhive/src/api/schemas/sync.ts +56 -0
  393. package/references/openhive/src/auth/index.ts +2 -0
  394. package/references/openhive/src/auth/jwks.ts +58 -0
  395. package/references/openhive/src/bridge/adapters/slack.ts +306 -0
  396. package/references/openhive/src/bridge/credentials.ts +72 -0
  397. package/references/openhive/src/bridge/inbound.ts +288 -0
  398. package/references/openhive/src/bridge/index.ts +42 -0
  399. package/references/openhive/src/bridge/manager.ts +425 -0
  400. package/references/openhive/src/bridge/mentions.ts +42 -0
  401. package/references/openhive/src/bridge/outbound.ts +103 -0
  402. package/references/openhive/src/bridge/schema.ts +82 -0
  403. package/references/openhive/src/bridge/types.ts +238 -0
  404. package/references/openhive/src/cli/network.ts +480 -0
  405. package/references/openhive/src/cli.ts +620 -0
  406. package/references/openhive/src/config.ts +611 -0
  407. package/references/openhive/src/coordination/index.ts +43 -0
  408. package/references/openhive/src/coordination/listener.ts +92 -0
  409. package/references/openhive/src/coordination/schema.ts +79 -0
  410. package/references/openhive/src/coordination/service.ts +233 -0
  411. package/references/openhive/src/coordination/types.ts +177 -0
  412. package/references/openhive/src/data-dir.ts +105 -0
  413. package/references/openhive/src/db/adapters/index.ts +21 -0
  414. package/references/openhive/src/db/adapters/postgres.ts +310 -0
  415. package/references/openhive/src/db/adapters/sqlite.ts +56 -0
  416. package/references/openhive/src/db/adapters/types.ts +65 -0
  417. package/references/openhive/src/db/dal/agents.ts +430 -0
  418. package/references/openhive/src/db/dal/bridge.ts +336 -0
  419. package/references/openhive/src/db/dal/comments.ts +213 -0
  420. package/references/openhive/src/db/dal/coordination.ts +361 -0
  421. package/references/openhive/src/db/dal/events.ts +381 -0
  422. package/references/openhive/src/db/dal/follows.ts +96 -0
  423. package/references/openhive/src/db/dal/hives.ts +198 -0
  424. package/references/openhive/src/db/dal/ingest-keys.ts +176 -0
  425. package/references/openhive/src/db/dal/instances.ts +196 -0
  426. package/references/openhive/src/db/dal/invites.ts +123 -0
  427. package/references/openhive/src/db/dal/map.ts +750 -0
  428. package/references/openhive/src/db/dal/posts.ts +274 -0
  429. package/references/openhive/src/db/dal/remote-agents.ts +56 -0
  430. package/references/openhive/src/db/dal/search.ts +238 -0
  431. package/references/openhive/src/db/dal/sync-events.ts +160 -0
  432. package/references/openhive/src/db/dal/sync-groups.ts +100 -0
  433. package/references/openhive/src/db/dal/sync-peer-configs.ts +216 -0
  434. package/references/openhive/src/db/dal/sync-peers.ts +145 -0
  435. package/references/openhive/src/db/dal/syncable-resources.ts +888 -0
  436. package/references/openhive/src/db/dal/trajectory-checkpoints.ts +291 -0
  437. package/references/openhive/src/db/dal/uploads.ts +124 -0
  438. package/references/openhive/src/db/dal/votes.ts +124 -0
  439. package/references/openhive/src/db/index.ts +293 -0
  440. package/references/openhive/src/db/providers/index.ts +75 -0
  441. package/references/openhive/src/db/providers/postgres.ts +529 -0
  442. package/references/openhive/src/db/providers/sqlite.ts +1383 -0
  443. package/references/openhive/src/db/providers/turso.ts +1360 -0
  444. package/references/openhive/src/db/providers/types.ts +516 -0
  445. package/references/openhive/src/db/schema.ts +641 -0
  446. package/references/openhive/src/discovery/index.ts +403 -0
  447. package/references/openhive/src/events/dispatch.ts +106 -0
  448. package/references/openhive/src/events/index.ts +17 -0
  449. package/references/openhive/src/events/normalizers/github.ts +133 -0
  450. package/references/openhive/src/events/normalizers/index.ts +62 -0
  451. package/references/openhive/src/events/normalizers/slack.ts +50 -0
  452. package/references/openhive/src/events/router.ts +156 -0
  453. package/references/openhive/src/events/schema.ts +66 -0
  454. package/references/openhive/src/events/types.ts +130 -0
  455. package/references/openhive/src/federation/index.ts +1 -0
  456. package/references/openhive/src/federation/service.ts +776 -0
  457. package/references/openhive/src/headscale/client.ts +256 -0
  458. package/references/openhive/src/headscale/config.ts +212 -0
  459. package/references/openhive/src/headscale/index.ts +23 -0
  460. package/references/openhive/src/headscale/manager.ts +249 -0
  461. package/references/openhive/src/headscale/sync.ts +272 -0
  462. package/references/openhive/src/headscale/types.ts +231 -0
  463. package/references/openhive/src/index.ts +225 -0
  464. package/references/openhive/src/map/client-entry.ts +26 -0
  465. package/references/openhive/src/map/index.ts +76 -0
  466. package/references/openhive/src/map/schema.ts +119 -0
  467. package/references/openhive/src/map/service.ts +323 -0
  468. package/references/openhive/src/map/sync-client.ts +696 -0
  469. package/references/openhive/src/map/sync-listener.ts +409 -0
  470. package/references/openhive/src/map/types.ts +290 -0
  471. package/references/openhive/src/network/factory.ts +118 -0
  472. package/references/openhive/src/network/headscale-provider.ts +437 -0
  473. package/references/openhive/src/network/index.ts +43 -0
  474. package/references/openhive/src/network/tailscale-client.ts +289 -0
  475. package/references/openhive/src/network/tailscale-provider.ts +287 -0
  476. package/references/openhive/src/network/types.ts +178 -0
  477. package/references/openhive/src/opentasks-client/client.ts +374 -0
  478. package/references/openhive/src/opentasks-client/index.ts +7 -0
  479. package/references/openhive/src/realtime/index.ts +282 -0
  480. package/references/openhive/src/server.ts +1069 -0
  481. package/references/openhive/src/services/email.ts +177 -0
  482. package/references/openhive/src/services/sitemap.ts +135 -0
  483. package/references/openhive/src/sessions/adapters/claude.ts +466 -0
  484. package/references/openhive/src/sessions/adapters/codex.ts +265 -0
  485. package/references/openhive/src/sessions/adapters/index.ts +263 -0
  486. package/references/openhive/src/sessions/adapters/raw.ts +144 -0
  487. package/references/openhive/src/sessions/adapters/types.ts +83 -0
  488. package/references/openhive/src/sessions/index.ts +50 -0
  489. package/references/openhive/src/sessions/storage/adapters/gcs.ts +277 -0
  490. package/references/openhive/src/sessions/storage/adapters/local.ts +240 -0
  491. package/references/openhive/src/sessions/storage/adapters/s3.ts +321 -0
  492. package/references/openhive/src/sessions/storage/index.ts +231 -0
  493. package/references/openhive/src/sessions/storage/types.ts +189 -0
  494. package/references/openhive/src/sessions/types.ts +415 -0
  495. package/references/openhive/src/shared/types/index.ts +45 -0
  496. package/references/openhive/src/shared/types/map-coordination.ts +92 -0
  497. package/references/openhive/src/shared/types/map-session-sync.ts +170 -0
  498. package/references/openhive/src/shared/types/map-sync.ts +68 -0
  499. package/references/openhive/src/skill.ts +203 -0
  500. package/references/openhive/src/storage/adapters/local.ts +169 -0
  501. package/references/openhive/src/storage/adapters/s3.ts +195 -0
  502. package/references/openhive/src/storage/index.ts +64 -0
  503. package/references/openhive/src/storage/types.ts +69 -0
  504. package/references/openhive/src/swarm/credentials.ts +98 -0
  505. package/references/openhive/src/swarm/dal.ts +206 -0
  506. package/references/openhive/src/swarm/index.ts +28 -0
  507. package/references/openhive/src/swarm/manager.ts +917 -0
  508. package/references/openhive/src/swarm/providers/local.ts +338 -0
  509. package/references/openhive/src/swarm/providers/sandboxed-local.ts +478 -0
  510. package/references/openhive/src/swarm/providers/workspace.ts +52 -0
  511. package/references/openhive/src/swarm/schema.ts +43 -0
  512. package/references/openhive/src/swarm/types.ts +333 -0
  513. package/references/openhive/src/swarmhub/client.ts +279 -0
  514. package/references/openhive/src/swarmhub/connector.ts +463 -0
  515. package/references/openhive/src/swarmhub/index.ts +43 -0
  516. package/references/openhive/src/swarmhub/routes.ts +296 -0
  517. package/references/openhive/src/swarmhub/types.ts +213 -0
  518. package/references/openhive/src/swarmhub/webhook-handler.ts +126 -0
  519. package/references/openhive/src/sync/compaction.ts +193 -0
  520. package/references/openhive/src/sync/coordination-hooks.ts +154 -0
  521. package/references/openhive/src/sync/crypto.ts +79 -0
  522. package/references/openhive/src/sync/gossip.ts +136 -0
  523. package/references/openhive/src/sync/hooks.ts +202 -0
  524. package/references/openhive/src/sync/materializer-repo.ts +256 -0
  525. package/references/openhive/src/sync/materializer.ts +682 -0
  526. package/references/openhive/src/sync/middleware.ts +140 -0
  527. package/references/openhive/src/sync/peer-resolver.ts +157 -0
  528. package/references/openhive/src/sync/resource-hooks.ts +161 -0
  529. package/references/openhive/src/sync/schema.ts +158 -0
  530. package/references/openhive/src/sync/service.ts +990 -0
  531. package/references/openhive/src/sync/types.ts +369 -0
  532. package/references/openhive/src/terminal/index.ts +4 -0
  533. package/references/openhive/src/terminal/pty-manager.ts +337 -0
  534. package/references/openhive/src/terminal/resolve-tui.ts +44 -0
  535. package/references/openhive/src/terminal/terminal-ws.ts +251 -0
  536. package/references/openhive/src/types.ts +442 -0
  537. package/references/openhive/src/utils/git-remote.ts +329 -0
  538. package/references/openhive/src/web/App.tsx +77 -0
  539. package/references/openhive/src/web/__tests__/components/dashboard/RecentActivity.test.tsx +77 -0
  540. package/references/openhive/src/web/__tests__/components/dashboard/StatsOverview.test.tsx +62 -0
  541. package/references/openhive/src/web/__tests__/components/dashboard/SwarmStatusSummary.test.tsx +122 -0
  542. package/references/openhive/src/web/__tests__/components/dashboard/SyncResourcesStatus.test.tsx +104 -0
  543. package/references/openhive/src/web/__tests__/components/layout/Sidebar.test.tsx +110 -0
  544. package/references/openhive/src/web/__tests__/components/swarm/StatusBadges.test.tsx +65 -0
  545. package/references/openhive/src/web/__tests__/components/terminal/query-responses.test.ts +143 -0
  546. package/references/openhive/src/web/__tests__/components/terminal/terminal-mouse.test.ts +509 -0
  547. package/references/openhive/src/web/__tests__/hooks/useEventsApi.test.ts +378 -0
  548. package/references/openhive/src/web/__tests__/pages/Dashboard.test.tsx +57 -0
  549. package/references/openhive/src/web/__tests__/pages/Events.test.tsx +886 -0
  550. package/references/openhive/src/web/__tests__/pages/Explore.test.tsx +63 -0
  551. package/references/openhive/src/web/__tests__/routing.test.tsx +79 -0
  552. package/references/openhive/src/web/__tests__/setup.ts +37 -0
  553. package/references/openhive/src/web/__tests__/stores/dashboard.test.ts +49 -0
  554. package/references/openhive/src/web/components/common/AgentBadge.tsx +58 -0
  555. package/references/openhive/src/web/components/common/Avatar.tsx +78 -0
  556. package/references/openhive/src/web/components/common/ErrorBoundary.tsx +76 -0
  557. package/references/openhive/src/web/components/common/Highlight.tsx +79 -0
  558. package/references/openhive/src/web/components/common/ImageUpload.tsx +209 -0
  559. package/references/openhive/src/web/components/common/LoadingSpinner.tsx +37 -0
  560. package/references/openhive/src/web/components/common/Logo.tsx +21 -0
  561. package/references/openhive/src/web/components/common/Markdown.tsx +53 -0
  562. package/references/openhive/src/web/components/common/ProtectedRoute.tsx +18 -0
  563. package/references/openhive/src/web/components/common/ThemeToggle.tsx +38 -0
  564. package/references/openhive/src/web/components/common/TimeAgo.tsx +17 -0
  565. package/references/openhive/src/web/components/common/Toast.tsx +70 -0
  566. package/references/openhive/src/web/components/common/VoteButtons.tsx +100 -0
  567. package/references/openhive/src/web/components/dashboard/RecentActivity.tsx +100 -0
  568. package/references/openhive/src/web/components/dashboard/StatsOverview.tsx +40 -0
  569. package/references/openhive/src/web/components/dashboard/SwarmStatusSummary.tsx +89 -0
  570. package/references/openhive/src/web/components/dashboard/SyncResourcesStatus.tsx +81 -0
  571. package/references/openhive/src/web/components/feed/FeedControls.tsx +38 -0
  572. package/references/openhive/src/web/components/feed/NewPostsIndicator.tsx +75 -0
  573. package/references/openhive/src/web/components/feed/PostCard.tsx +129 -0
  574. package/references/openhive/src/web/components/feed/PostList.tsx +83 -0
  575. package/references/openhive/src/web/components/layout/Footer.tsx +5 -0
  576. package/references/openhive/src/web/components/layout/Layout.tsx +29 -0
  577. package/references/openhive/src/web/components/layout/Sidebar.tsx +348 -0
  578. package/references/openhive/src/web/components/post/CommentForm.tsx +59 -0
  579. package/references/openhive/src/web/components/post/CommentTree.tsx +145 -0
  580. package/references/openhive/src/web/components/resources/MemoryBrowser.tsx +208 -0
  581. package/references/openhive/src/web/components/resources/OpenTasksSummary.tsx +138 -0
  582. package/references/openhive/src/web/components/resources/SkillBrowser.tsx +284 -0
  583. package/references/openhive/src/web/components/swarm/StatusBadges.tsx +56 -0
  584. package/references/openhive/src/web/components/terminal/TerminalPanel.tsx +485 -0
  585. package/references/openhive/src/web/components/terminal/index.ts +2 -0
  586. package/references/openhive/src/web/components/terminal/query-responses.ts +70 -0
  587. package/references/openhive/src/web/components/terminal/terminal-mouse.ts +222 -0
  588. package/references/openhive/src/web/hooks/useApi.ts +740 -0
  589. package/references/openhive/src/web/hooks/useDocumentTitle.ts +49 -0
  590. package/references/openhive/src/web/hooks/useInfiniteScroll.ts +58 -0
  591. package/references/openhive/src/web/hooks/useRealtimeUpdates.ts +154 -0
  592. package/references/openhive/src/web/hooks/useWebSocket.ts +225 -0
  593. package/references/openhive/src/web/index.html +73 -0
  594. package/references/openhive/src/web/lib/api.ts +518 -0
  595. package/references/openhive/src/web/main.tsx +32 -0
  596. package/references/openhive/src/web/pages/About.tsx +131 -0
  597. package/references/openhive/src/web/pages/Agent.tsx +130 -0
  598. package/references/openhive/src/web/pages/Agents.tsx +69 -0
  599. package/references/openhive/src/web/pages/AuthCallback.tsx +75 -0
  600. package/references/openhive/src/web/pages/Dashboard.tsx +41 -0
  601. package/references/openhive/src/web/pages/Events.tsx +1025 -0
  602. package/references/openhive/src/web/pages/Explore.tsx +43 -0
  603. package/references/openhive/src/web/pages/Hive.tsx +134 -0
  604. package/references/openhive/src/web/pages/Hives.tsx +64 -0
  605. package/references/openhive/src/web/pages/Home.tsx +43 -0
  606. package/references/openhive/src/web/pages/Login.tsx +122 -0
  607. package/references/openhive/src/web/pages/Post.tsx +216 -0
  608. package/references/openhive/src/web/pages/ResourceDetail.tsx +426 -0
  609. package/references/openhive/src/web/pages/Resources.tsx +276 -0
  610. package/references/openhive/src/web/pages/Search.tsx +234 -0
  611. package/references/openhive/src/web/pages/SessionDetail.tsx +703 -0
  612. package/references/openhive/src/web/pages/Sessions.tsx +129 -0
  613. package/references/openhive/src/web/pages/Settings.tsx +826 -0
  614. package/references/openhive/src/web/pages/SwarmCraft.tsx +16 -0
  615. package/references/openhive/src/web/pages/Swarms.tsx +981 -0
  616. package/references/openhive/src/web/pages/Terminal.tsx +69 -0
  617. package/references/openhive/src/web/postcss.config.js +5 -0
  618. package/references/openhive/src/web/public/favicon.svg +11 -0
  619. package/references/openhive/src/web/public/manifest.json +21 -0
  620. package/references/openhive/src/web/stores/auth.ts +207 -0
  621. package/references/openhive/src/web/stores/dashboard.ts +23 -0
  622. package/references/openhive/src/web/stores/realtime.ts +90 -0
  623. package/references/openhive/src/web/stores/theme.ts +70 -0
  624. package/references/openhive/src/web/stores/toast.ts +63 -0
  625. package/references/openhive/src/web/styles/globals.css +503 -0
  626. package/references/openhive/src/web/sw.ts +228 -0
  627. package/references/openhive/src/web/utils/serviceWorker.ts +86 -0
  628. package/references/openhive/src/web/vite.config.ts +81 -0
  629. package/references/openhive/tsconfig.json +32 -0
  630. package/references/openhive/tsup.config.ts +17 -0
  631. package/references/openhive/vitest.config.ts +30 -0
  632. package/references/openhive/vitest.web.config.ts +20 -0
  633. package/references/opentasks/.claude/settings.json +6 -0
  634. package/references/opentasks/.claude-plugin/plugin.json +20 -0
  635. package/references/opentasks/.lintstagedrc.json +4 -0
  636. package/references/opentasks/.prettierignore +4 -0
  637. package/references/opentasks/.prettierrc.json +11 -0
  638. package/references/opentasks/.sudocode/issues.jsonl +89 -0
  639. package/references/opentasks/.sudocode/specs.jsonl +24 -0
  640. package/references/opentasks/README.md +401 -0
  641. package/references/opentasks/docs/ARCHITECTURE.md +841 -0
  642. package/references/opentasks/docs/DESIGN.md +689 -0
  643. package/references/opentasks/docs/INTERFACE.md +670 -0
  644. package/references/opentasks/docs/PERSISTENCE.md +1638 -0
  645. package/references/opentasks/docs/PROVIDERS.md +1412 -0
  646. package/references/opentasks/docs/SCHEMA.md +815 -0
  647. package/references/opentasks/docs/TESTING.md +1081 -0
  648. package/references/opentasks/eslint.config.js +58 -0
  649. package/references/opentasks/package-lock.json +4348 -0
  650. package/references/opentasks/package.json +81 -0
  651. package/references/opentasks/skills/opentasks/SKILL.md +139 -0
  652. package/references/opentasks/skills/opentasks/dependency-management.md +119 -0
  653. package/references/opentasks/skills/opentasks/feedback-and-review.md +100 -0
  654. package/references/opentasks/skills/opentasks/linking-external-data.md +103 -0
  655. package/references/opentasks/skills/opentasks/spec-to-implementation.md +98 -0
  656. package/references/opentasks/src/__tests__/cli-tools.test.ts +800 -0
  657. package/references/opentasks/src/__tests__/cli.test.ts +97 -0
  658. package/references/opentasks/src/__tests__/p1-p3-gaps.test.ts +635 -0
  659. package/references/opentasks/src/cli.ts +929 -0
  660. package/references/opentasks/src/client/__tests__/client-crud.test.ts +546 -0
  661. package/references/opentasks/src/client/__tests__/client.test.ts +658 -0
  662. package/references/opentasks/src/client/__tests__/socket-discovery.test.ts +122 -0
  663. package/references/opentasks/src/client/client.ts +560 -0
  664. package/references/opentasks/src/client/index.ts +32 -0
  665. package/references/opentasks/src/config/__tests__/defaults.test.ts +66 -0
  666. package/references/opentasks/src/config/__tests__/env.test.ts +155 -0
  667. package/references/opentasks/src/config/__tests__/index.test.ts +148 -0
  668. package/references/opentasks/src/config/__tests__/loader.test.ts +173 -0
  669. package/references/opentasks/src/config/__tests__/merge.test.ts +121 -0
  670. package/references/opentasks/src/config/__tests__/schema.test.ts +446 -0
  671. package/references/opentasks/src/config/defaults.ts +18 -0
  672. package/references/opentasks/src/config/env.ts +170 -0
  673. package/references/opentasks/src/config/errors.ts +33 -0
  674. package/references/opentasks/src/config/index.ts +63 -0
  675. package/references/opentasks/src/config/loader.ts +90 -0
  676. package/references/opentasks/src/config/merge.ts +64 -0
  677. package/references/opentasks/src/config/schema.ts +767 -0
  678. package/references/opentasks/src/core/__tests__/conditional-redirects.test.ts +116 -0
  679. package/references/opentasks/src/core/__tests__/connections.test.ts +194 -0
  680. package/references/opentasks/src/core/__tests__/hash.test.ts +161 -0
  681. package/references/opentasks/src/core/__tests__/id.test.ts +175 -0
  682. package/references/opentasks/src/core/__tests__/init.test.ts +115 -0
  683. package/references/opentasks/src/core/__tests__/location.test.ts +94 -0
  684. package/references/opentasks/src/core/__tests__/merge-driver.test.ts +300 -0
  685. package/references/opentasks/src/core/__tests__/redirects.test.ts +169 -0
  686. package/references/opentasks/src/core/__tests__/resolve-location-target.test.ts +468 -0
  687. package/references/opentasks/src/core/__tests__/uri.test.ts +228 -0
  688. package/references/opentasks/src/core/__tests__/worktree.test.ts +160 -0
  689. package/references/opentasks/src/core/conditional-redirects.ts +100 -0
  690. package/references/opentasks/src/core/connections.ts +217 -0
  691. package/references/opentasks/src/core/discover.ts +195 -0
  692. package/references/opentasks/src/core/hash.ts +74 -0
  693. package/references/opentasks/src/core/id.ts +174 -0
  694. package/references/opentasks/src/core/index.ts +108 -0
  695. package/references/opentasks/src/core/init.ts +66 -0
  696. package/references/opentasks/src/core/location.ts +139 -0
  697. package/references/opentasks/src/core/merge-driver.ts +280 -0
  698. package/references/opentasks/src/core/redirects.ts +182 -0
  699. package/references/opentasks/src/core/uri.ts +270 -0
  700. package/references/opentasks/src/core/worktree.ts +504 -0
  701. package/references/opentasks/src/daemon/__tests__/e2e-live-agent.test.ts +344 -0
  702. package/references/opentasks/src/daemon/__tests__/e2e-session-pipeline.test.ts +447 -0
  703. package/references/opentasks/src/daemon/__tests__/e2e-watch.test.ts +279 -0
  704. package/references/opentasks/src/daemon/__tests__/entire-linker.test.ts +1074 -0
  705. package/references/opentasks/src/daemon/__tests__/entire-watcher.test.ts +659 -0
  706. package/references/opentasks/src/daemon/__tests__/flush.test.ts +306 -0
  707. package/references/opentasks/src/daemon/__tests__/integration.test.ts +338 -0
  708. package/references/opentasks/src/daemon/__tests__/ipc.test.ts +406 -0
  709. package/references/opentasks/src/daemon/__tests__/lifecycle.test.ts +378 -0
  710. package/references/opentasks/src/daemon/__tests__/lock.test.ts +240 -0
  711. package/references/opentasks/src/daemon/__tests__/methods/graph.test.ts +372 -0
  712. package/references/opentasks/src/daemon/__tests__/methods/provider.test.ts +238 -0
  713. package/references/opentasks/src/daemon/__tests__/methods/tools.test.ts +690 -0
  714. package/references/opentasks/src/daemon/__tests__/multi-location.test.ts +945 -0
  715. package/references/opentasks/src/daemon/__tests__/registry.test.ts +268 -0
  716. package/references/opentasks/src/daemon/__tests__/watcher.test.ts +329 -0
  717. package/references/opentasks/src/daemon/entire-linker.ts +615 -0
  718. package/references/opentasks/src/daemon/entire-watcher.ts +415 -0
  719. package/references/opentasks/src/daemon/factory.ts +133 -0
  720. package/references/opentasks/src/daemon/flush.ts +168 -0
  721. package/references/opentasks/src/daemon/index.ts +120 -0
  722. package/references/opentasks/src/daemon/ipc.ts +491 -0
  723. package/references/opentasks/src/daemon/lifecycle.ts +1106 -0
  724. package/references/opentasks/src/daemon/location-state.ts +481 -0
  725. package/references/opentasks/src/daemon/lock.ts +168 -0
  726. package/references/opentasks/src/daemon/methods/__tests__/graph.test.ts +359 -0
  727. package/references/opentasks/src/daemon/methods/__tests__/provider.test.ts +227 -0
  728. package/references/opentasks/src/daemon/methods/__tests__/tools.test.ts +360 -0
  729. package/references/opentasks/src/daemon/methods/__tests__/watch.test.ts +656 -0
  730. package/references/opentasks/src/daemon/methods/archive.ts +193 -0
  731. package/references/opentasks/src/daemon/methods/graph.ts +274 -0
  732. package/references/opentasks/src/daemon/methods/lifecycle.ts +112 -0
  733. package/references/opentasks/src/daemon/methods/location.ts +118 -0
  734. package/references/opentasks/src/daemon/methods/provider.ts +159 -0
  735. package/references/opentasks/src/daemon/methods/tools.ts +221 -0
  736. package/references/opentasks/src/daemon/methods/watch.ts +206 -0
  737. package/references/opentasks/src/daemon/registry.ts +244 -0
  738. package/references/opentasks/src/daemon/types.ts +163 -0
  739. package/references/opentasks/src/daemon/watcher.ts +248 -0
  740. package/references/opentasks/src/entire/__tests__/agent-registry.test.ts +127 -0
  741. package/references/opentasks/src/entire/__tests__/claude-generator.test.ts +49 -0
  742. package/references/opentasks/src/entire/__tests__/commit-msg.test.ts +89 -0
  743. package/references/opentasks/src/entire/__tests__/cursor-agent.test.ts +224 -0
  744. package/references/opentasks/src/entire/__tests__/flush-sentinel.test.ts +93 -0
  745. package/references/opentasks/src/entire/__tests__/gemini-agent.test.ts +375 -0
  746. package/references/opentasks/src/entire/__tests__/git-hooks.test.ts +85 -0
  747. package/references/opentasks/src/entire/__tests__/hook-managers.test.ts +128 -0
  748. package/references/opentasks/src/entire/__tests__/opencode-agent.test.ts +329 -0
  749. package/references/opentasks/src/entire/__tests__/redaction.test.ts +143 -0
  750. package/references/opentasks/src/entire/__tests__/session-store.test.ts +83 -0
  751. package/references/opentasks/src/entire/__tests__/summarize.test.ts +346 -0
  752. package/references/opentasks/src/entire/__tests__/transcript-timestamp.test.ts +127 -0
  753. package/references/opentasks/src/entire/__tests__/types.test.ts +112 -0
  754. package/references/opentasks/src/entire/__tests__/utils.test.ts +296 -0
  755. package/references/opentasks/src/entire/__tests__/validation.test.ts +103 -0
  756. package/references/opentasks/src/entire/__tests__/worktree.test.ts +66 -0
  757. package/references/opentasks/src/entire/agent/registry.ts +143 -0
  758. package/references/opentasks/src/entire/agent/session-types.ts +117 -0
  759. package/references/opentasks/src/entire/agent/types.ts +217 -0
  760. package/references/opentasks/src/entire/commands/clean.ts +134 -0
  761. package/references/opentasks/src/entire/commands/disable.ts +85 -0
  762. package/references/opentasks/src/entire/commands/doctor.ts +152 -0
  763. package/references/opentasks/src/entire/commands/enable.ts +149 -0
  764. package/references/opentasks/src/entire/commands/explain.ts +271 -0
  765. package/references/opentasks/src/entire/commands/reset.ts +105 -0
  766. package/references/opentasks/src/entire/commands/resume.ts +194 -0
  767. package/references/opentasks/src/entire/commands/rewind.ts +204 -0
  768. package/references/opentasks/src/entire/commands/status.ts +150 -0
  769. package/references/opentasks/src/entire/config.ts +153 -0
  770. package/references/opentasks/src/entire/git-operations.ts +485 -0
  771. package/references/opentasks/src/entire/hooks/git-hooks.ts +171 -0
  772. package/references/opentasks/src/entire/hooks/lifecycle.ts +224 -0
  773. package/references/opentasks/src/entire/index.ts +644 -0
  774. package/references/opentasks/src/entire/security/redaction.ts +263 -0
  775. package/references/opentasks/src/entire/session/state-machine.ts +463 -0
  776. package/references/opentasks/src/entire/store/checkpoint-store.ts +489 -0
  777. package/references/opentasks/src/entire/store/native-store.ts +178 -0
  778. package/references/opentasks/src/entire/store/provider-types.ts +99 -0
  779. package/references/opentasks/src/entire/store/session-store.ts +233 -0
  780. package/references/opentasks/src/entire/strategy/attribution.ts +300 -0
  781. package/references/opentasks/src/entire/strategy/common.ts +222 -0
  782. package/references/opentasks/src/entire/strategy/content-overlap.ts +242 -0
  783. package/references/opentasks/src/entire/strategy/manual-commit.ts +1008 -0
  784. package/references/opentasks/src/entire/strategy/types.ts +285 -0
  785. package/references/opentasks/src/entire/summarize/claude-generator.ts +119 -0
  786. package/references/opentasks/src/entire/summarize/summarize.ts +432 -0
  787. package/references/opentasks/src/entire/types.ts +408 -0
  788. package/references/opentasks/src/entire/utils/chunk-files.ts +49 -0
  789. package/references/opentasks/src/entire/utils/commit-message.ts +65 -0
  790. package/references/opentasks/src/entire/utils/detect-agent.ts +36 -0
  791. package/references/opentasks/src/entire/utils/hook-managers.ts +118 -0
  792. package/references/opentasks/src/entire/utils/ide-tags.ts +32 -0
  793. package/references/opentasks/src/entire/utils/paths.ts +59 -0
  794. package/references/opentasks/src/entire/utils/preview-rewind.ts +86 -0
  795. package/references/opentasks/src/entire/utils/rewind-conflict.ts +121 -0
  796. package/references/opentasks/src/entire/utils/shadow-branch.ts +113 -0
  797. package/references/opentasks/src/entire/utils/string-utils.ts +46 -0
  798. package/references/opentasks/src/entire/utils/todo-extract.ts +193 -0
  799. package/references/opentasks/src/entire/utils/trailers.ts +190 -0
  800. package/references/opentasks/src/entire/utils/transcript-parse.ts +177 -0
  801. package/references/opentasks/src/entire/utils/transcript-timestamp.ts +61 -0
  802. package/references/opentasks/src/entire/utils/tree-ops.ts +227 -0
  803. package/references/opentasks/src/entire/utils/tty.ts +72 -0
  804. package/references/opentasks/src/entire/utils/validation.ts +67 -0
  805. package/references/opentasks/src/entire/utils/worktree.ts +58 -0
  806. package/references/opentasks/src/graph/EdgeTypeRegistry.ts +330 -0
  807. package/references/opentasks/src/graph/FederatedGraph.ts +796 -0
  808. package/references/opentasks/src/graph/GraphologyAdapter.ts +374 -0
  809. package/references/opentasks/src/graph/HydratingFederatedGraph.ts +533 -0
  810. package/references/opentasks/src/graph/__tests__/EdgeTypeRegistry.test.ts +263 -0
  811. package/references/opentasks/src/graph/__tests__/FederatedGraph.test.ts +821 -0
  812. package/references/opentasks/src/graph/__tests__/GraphologyAdapter.test.ts +408 -0
  813. package/references/opentasks/src/graph/__tests__/HydratingFederatedGraph.test.ts +735 -0
  814. package/references/opentasks/src/graph/__tests__/debounce.test.ts +276 -0
  815. package/references/opentasks/src/graph/__tests__/e2e-store-roundtrip.test.ts +349 -0
  816. package/references/opentasks/src/graph/__tests__/edge-cases.test.ts +595 -0
  817. package/references/opentasks/src/graph/__tests__/expansion.test.ts +304 -0
  818. package/references/opentasks/src/graph/__tests__/git-graph-syncer.test.ts +572 -0
  819. package/references/opentasks/src/graph/__tests__/provider-store.test.ts +1091 -0
  820. package/references/opentasks/src/graph/__tests__/query.test.ts +991 -0
  821. package/references/opentasks/src/graph/__tests__/store.test.ts +998 -0
  822. package/references/opentasks/src/graph/__tests__/sync.test.ts +178 -0
  823. package/references/opentasks/src/graph/__tests__/validation.test.ts +657 -0
  824. package/references/opentasks/src/graph/coordination.ts +454 -0
  825. package/references/opentasks/src/graph/debounce.ts +154 -0
  826. package/references/opentasks/src/graph/expansion.ts +364 -0
  827. package/references/opentasks/src/graph/git-graph-syncer.ts +321 -0
  828. package/references/opentasks/src/graph/history.ts +438 -0
  829. package/references/opentasks/src/graph/index.ts +145 -0
  830. package/references/opentasks/src/graph/provider-store.ts +1077 -0
  831. package/references/opentasks/src/graph/query.ts +651 -0
  832. package/references/opentasks/src/graph/store.ts +861 -0
  833. package/references/opentasks/src/graph/sync.ts +116 -0
  834. package/references/opentasks/src/graph/types.ts +420 -0
  835. package/references/opentasks/src/graph/validation.ts +520 -0
  836. package/references/opentasks/src/index.ts +270 -0
  837. package/references/opentasks/src/materialization/CLAUDE.md +88 -0
  838. package/references/opentasks/src/materialization/README.md +187 -0
  839. package/references/opentasks/src/materialization/__tests__/archive-methods.test.ts +194 -0
  840. package/references/opentasks/src/materialization/__tests__/archiver.test.ts +528 -0
  841. package/references/opentasks/src/materialization/__tests__/config.test.ts +123 -0
  842. package/references/opentasks/src/materialization/__tests__/git-remote-store.test.ts +533 -0
  843. package/references/opentasks/src/materialization/__tests__/graph-id.test.ts +82 -0
  844. package/references/opentasks/src/materialization/__tests__/http-remote-store.test.ts +263 -0
  845. package/references/opentasks/src/materialization/__tests__/materialize-before-archive.test.ts +246 -0
  846. package/references/opentasks/src/materialization/__tests__/remote-store-factory.test.ts +152 -0
  847. package/references/opentasks/src/materialization/__tests__/snapshot.test.ts +209 -0
  848. package/references/opentasks/src/materialization/archiver.ts +318 -0
  849. package/references/opentasks/src/materialization/git-archive-store.ts +568 -0
  850. package/references/opentasks/src/materialization/git-remote-store.ts +551 -0
  851. package/references/opentasks/src/materialization/graph-id.ts +173 -0
  852. package/references/opentasks/src/materialization/http-remote-store.ts +190 -0
  853. package/references/opentasks/src/materialization/index.ts +62 -0
  854. package/references/opentasks/src/materialization/remote-store-factory.ts +55 -0
  855. package/references/opentasks/src/materialization/snapshot.ts +230 -0
  856. package/references/opentasks/src/materialization/types.ts +410 -0
  857. package/references/opentasks/src/providers/__tests__/beads.test.ts +752 -0
  858. package/references/opentasks/src/providers/__tests__/claude-tasks.test.ts +485 -0
  859. package/references/opentasks/src/providers/__tests__/entire-e2e.test.ts +692 -0
  860. package/references/opentasks/src/providers/__tests__/entire-sessionlog-e2e.test.ts +1113 -0
  861. package/references/opentasks/src/providers/__tests__/entire.test.ts +1016 -0
  862. package/references/opentasks/src/providers/__tests__/from-config.test.ts +183 -0
  863. package/references/opentasks/src/providers/__tests__/global.test.ts +515 -0
  864. package/references/opentasks/src/providers/__tests__/materialization.test.ts +567 -0
  865. package/references/opentasks/src/providers/__tests__/native.test.ts +693 -0
  866. package/references/opentasks/src/providers/__tests__/registry.test.ts +232 -0
  867. package/references/opentasks/src/providers/beads.ts +1155 -0
  868. package/references/opentasks/src/providers/claude-tasks.ts +402 -0
  869. package/references/opentasks/src/providers/entire.ts +608 -0
  870. package/references/opentasks/src/providers/from-config.ts +210 -0
  871. package/references/opentasks/src/providers/global.ts +460 -0
  872. package/references/opentasks/src/providers/index.ts +147 -0
  873. package/references/opentasks/src/providers/location.ts +237 -0
  874. package/references/opentasks/src/providers/materialization.ts +346 -0
  875. package/references/opentasks/src/providers/native.ts +725 -0
  876. package/references/opentasks/src/providers/registry.ts +114 -0
  877. package/references/opentasks/src/providers/sudocode.ts +1292 -0
  878. package/references/opentasks/src/providers/sync.ts +485 -0
  879. package/references/opentasks/src/providers/traits/RelationshipQueryable.ts +169 -0
  880. package/references/opentasks/src/providers/traits/TaskManageable.ts +211 -0
  881. package/references/opentasks/src/providers/traits/Watchable.ts +260 -0
  882. package/references/opentasks/src/providers/traits/__tests__/RelationshipQueryable.test.ts +217 -0
  883. package/references/opentasks/src/providers/traits/__tests__/TaskManageable.test.ts +241 -0
  884. package/references/opentasks/src/providers/traits/index.ts +42 -0
  885. package/references/opentasks/src/providers/types.ts +439 -0
  886. package/references/opentasks/src/schema/__tests__/validation.test.ts +283 -0
  887. package/references/opentasks/src/schema/base.ts +88 -0
  888. package/references/opentasks/src/schema/edges.ts +78 -0
  889. package/references/opentasks/src/schema/index.ts +37 -0
  890. package/references/opentasks/src/schema/nodes.ts +119 -0
  891. package/references/opentasks/src/schema/storage.ts +130 -0
  892. package/references/opentasks/src/schema/validation.ts +209 -0
  893. package/references/opentasks/src/storage/__tests__/atomic-write.test.ts +227 -0
  894. package/references/opentasks/src/storage/__tests__/file-lock.test.ts +120 -0
  895. package/references/opentasks/src/storage/__tests__/jsonl.test.ts +267 -0
  896. package/references/opentasks/src/storage/__tests__/locked-writer.test.ts +134 -0
  897. package/references/opentasks/src/storage/__tests__/sqlite.test.ts +572 -0
  898. package/references/opentasks/src/storage/atomic-write.ts +86 -0
  899. package/references/opentasks/src/storage/file-lock.ts +215 -0
  900. package/references/opentasks/src/storage/index.ts +24 -0
  901. package/references/opentasks/src/storage/interface.ts +289 -0
  902. package/references/opentasks/src/storage/jsonl.ts +264 -0
  903. package/references/opentasks/src/storage/locked-writer.ts +140 -0
  904. package/references/opentasks/src/storage/sqlite-schema.ts +177 -0
  905. package/references/opentasks/src/storage/sqlite.ts +791 -0
  906. package/references/opentasks/src/tools/__tests__/annotate.test.ts +381 -0
  907. package/references/opentasks/src/tools/__tests__/link.test.ts +299 -0
  908. package/references/opentasks/src/tools/__tests__/query.test.ts +350 -0
  909. package/references/opentasks/src/tools/__tests__/task.test.ts +218 -0
  910. package/references/opentasks/src/tools/annotate.ts +277 -0
  911. package/references/opentasks/src/tools/index.ts +57 -0
  912. package/references/opentasks/src/tools/link.ts +163 -0
  913. package/references/opentasks/src/tools/query.ts +468 -0
  914. package/references/opentasks/src/tools/task.ts +213 -0
  915. package/references/opentasks/src/tools/types.ts +451 -0
  916. package/references/opentasks/src/tracking/__tests__/claude-tool-categorizer.test.ts +223 -0
  917. package/references/opentasks/src/tracking/__tests__/transcript-extractor.test.ts +262 -0
  918. package/references/opentasks/src/tracking/claude-tool-categorizer.ts +155 -0
  919. package/references/opentasks/src/tracking/index.ts +32 -0
  920. package/references/opentasks/src/tracking/skill-tracker.ts +322 -0
  921. package/references/opentasks/src/tracking/transcript-extractor.ts +225 -0
  922. package/references/opentasks/tests/e2e/helpers/assertions.ts +211 -0
  923. package/references/opentasks/tests/e2e/helpers/beads-helpers.ts +487 -0
  924. package/references/opentasks/tests/e2e/helpers/fixtures.ts +236 -0
  925. package/references/opentasks/tests/e2e/helpers/index.ts +122 -0
  926. package/references/opentasks/tests/e2e/helpers/sudocode-helpers.ts +341 -0
  927. package/references/opentasks/tests/e2e/helpers/system-setup.ts +504 -0
  928. package/references/opentasks/tests/e2e/helpers/test-agent.ts +504 -0
  929. package/references/opentasks/tests/e2e/infrastructure.e2e.test.ts +521 -0
  930. package/references/opentasks/tests/e2e/skill-tracking.e2e.test.ts +625 -0
  931. package/references/opentasks/tests/e2e/workflows/feedback-loop.e2e.test.ts +279 -0
  932. package/references/opentasks/tests/e2e/workflows/multi-agent.e2e.test.ts +304 -0
  933. package/references/opentasks/tests/e2e/workflows/provider-sync/background-sync.e2e.test.ts +292 -0
  934. package/references/opentasks/tests/e2e/workflows/provider-sync/beads-provider-compat.e2e.test.ts +249 -0
  935. package/references/opentasks/tests/e2e/workflows/provider-sync/cross-provider-edges.e2e.test.ts +407 -0
  936. package/references/opentasks/tests/e2e/workflows/provider-sync/federated-ready.e2e.test.ts +504 -0
  937. package/references/opentasks/tests/e2e/workflows/provider-sync/hydration.e2e.test.ts +340 -0
  938. package/references/opentasks/tests/e2e/workflows/provider-sync/materialization.e2e.test.ts +370 -0
  939. package/references/opentasks/tests/e2e/workflows/provider-sync/sudocode-provider-compat.e2e.test.ts +683 -0
  940. package/references/opentasks/tests/e2e/workflows/provider-sync/watchable-beads.e2e.test.ts +573 -0
  941. package/references/opentasks/tests/e2e/workflows/spec-driven.e2e.test.ts +244 -0
  942. package/references/opentasks/tests/e2e/worktree-location.e2e.test.ts +699 -0
  943. package/references/opentasks/tests/integration/daemon/helpers.ts +147 -0
  944. package/references/opentasks/tests/integration/daemon/ipc.integration.test.ts +343 -0
  945. package/references/opentasks/tests/integration/daemon/lifecycle.integration.test.ts +407 -0
  946. package/references/opentasks/tests/integration/graph/federated-graph.integration.test.ts +660 -0
  947. package/references/opentasks/tests/integration/helpers/flags.ts +28 -0
  948. package/references/opentasks/tests/integration/helpers/index.ts +47 -0
  949. package/references/opentasks/tests/integration/helpers/process.ts +133 -0
  950. package/references/opentasks/tests/integration/helpers/temp.ts +105 -0
  951. package/references/opentasks/tests/integration/helpers/wait.ts +133 -0
  952. package/references/opentasks/tests/integration/helpers.test.ts +120 -0
  953. package/references/opentasks/tests/integration/providers/beads-task-manageable.integration.test.ts +450 -0
  954. package/references/opentasks/tests/integration/providers/beads.integration.test.ts +388 -0
  955. package/references/opentasks/tests/integration/providers/native-task-manageable.integration.test.ts +667 -0
  956. package/references/opentasks/tests/integration/providers/sudocode-task-manageable.integration.test.ts +406 -0
  957. package/references/opentasks/tests/integration/providers/sudocode.integration.test.ts +342 -0
  958. package/references/opentasks/tests/integration/storage/jsonl-durability.integration.test.ts +390 -0
  959. package/references/opentasks/tests/integration/storage/sqlite-durability.integration.test.ts +527 -0
  960. package/references/opentasks/tests/integration/worktree/redirect-location-resolution.integration.test.ts +578 -0
  961. package/references/opentasks/tests/integration/worktree/worktree-flow.integration.test.ts +656 -0
  962. package/references/opentasks/tsconfig.json +18 -0
  963. package/references/opentasks/vitest.config.ts +27 -0
  964. package/references/opentasks/vitest.e2e.config.ts +35 -0
  965. package/references/opentasks/vitest.integration.config.ts +19 -0
  966. package/references/openteams/.claude/settings.json +6 -0
  967. package/references/openteams/CLAUDE.md +98 -0
  968. package/references/openteams/README.md +508 -0
  969. package/references/openteams/SKILL.md +198 -0
  970. package/references/openteams/design.md +250 -0
  971. package/references/openteams/docs/visual-editor-design.md +1225 -0
  972. package/references/openteams/editor/index.html +15 -0
  973. package/references/openteams/editor/package.json +39 -0
  974. package/references/openteams/editor/src/App.tsx +48 -0
  975. package/references/openteams/editor/src/components/canvas/Canvas.tsx +131 -0
  976. package/references/openteams/editor/src/components/canvas/QuickAddMenu.tsx +134 -0
  977. package/references/openteams/editor/src/components/edges/PeerRouteEdge.tsx +82 -0
  978. package/references/openteams/editor/src/components/edges/SignalFlowEdge.tsx +77 -0
  979. package/references/openteams/editor/src/components/edges/SpawnEdge.tsx +54 -0
  980. package/references/openteams/editor/src/components/inspector/ChannelInspector.tsx +158 -0
  981. package/references/openteams/editor/src/components/inspector/EdgeInspector.tsx +168 -0
  982. package/references/openteams/editor/src/components/inspector/Inspector.tsx +46 -0
  983. package/references/openteams/editor/src/components/inspector/RoleInspector.tsx +508 -0
  984. package/references/openteams/editor/src/components/inspector/TeamInspector.tsx +126 -0
  985. package/references/openteams/editor/src/components/nodes/ChannelNode.tsx +103 -0
  986. package/references/openteams/editor/src/components/nodes/RoleNode.tsx +157 -0
  987. package/references/openteams/editor/src/components/nodes/node-styles.ts +101 -0
  988. package/references/openteams/editor/src/components/sidebar/Sidebar.tsx +227 -0
  989. package/references/openteams/editor/src/components/toolbar/ExportModal.tsx +110 -0
  990. package/references/openteams/editor/src/components/toolbar/ImportModal.tsx +139 -0
  991. package/references/openteams/editor/src/components/toolbar/Toolbar.tsx +190 -0
  992. package/references/openteams/editor/src/hooks/use-autosave.ts +126 -0
  993. package/references/openteams/editor/src/hooks/use-keyboard.ts +106 -0
  994. package/references/openteams/editor/src/hooks/use-validation.ts +45 -0
  995. package/references/openteams/editor/src/index.css +245 -0
  996. package/references/openteams/editor/src/lib/auto-layout.ts +51 -0
  997. package/references/openteams/editor/src/lib/bundled-templates.ts +42 -0
  998. package/references/openteams/editor/src/lib/compiler.ts +75 -0
  999. package/references/openteams/editor/src/lib/load-template.ts +103 -0
  1000. package/references/openteams/editor/src/lib/rebuild-edges.ts +104 -0
  1001. package/references/openteams/editor/src/lib/serializer.ts +408 -0
  1002. package/references/openteams/editor/src/lib/signal-catalog.ts +50 -0
  1003. package/references/openteams/editor/src/lib/validator.ts +172 -0
  1004. package/references/openteams/editor/src/main.tsx +10 -0
  1005. package/references/openteams/editor/src/stores/canvas-store.ts +80 -0
  1006. package/references/openteams/editor/src/stores/config-store.ts +243 -0
  1007. package/references/openteams/editor/src/stores/history-store.ts +143 -0
  1008. package/references/openteams/editor/src/stores/theme-store.ts +66 -0
  1009. package/references/openteams/editor/src/stores/ui-store.ts +46 -0
  1010. package/references/openteams/editor/src/stores/validation-store.ts +27 -0
  1011. package/references/openteams/editor/src/types/editor.ts +74 -0
  1012. package/references/openteams/editor/src/vite-env.d.ts +1 -0
  1013. package/references/openteams/editor/tests/compiler.test.ts +151 -0
  1014. package/references/openteams/editor/tests/e2e-add-remove.test.ts +386 -0
  1015. package/references/openteams/editor/tests/e2e-components.test.tsx +424 -0
  1016. package/references/openteams/editor/tests/e2e-export-roundtrip.test.ts +299 -0
  1017. package/references/openteams/editor/tests/e2e-template-load.test.ts +204 -0
  1018. package/references/openteams/editor/tests/e2e-ui-store.test.ts +126 -0
  1019. package/references/openteams/editor/tests/e2e-undo-redo.test.ts +203 -0
  1020. package/references/openteams/editor/tests/e2e-validation.test.ts +307 -0
  1021. package/references/openteams/editor/tests/serializer.test.ts +142 -0
  1022. package/references/openteams/editor/tests/setup.ts +52 -0
  1023. package/references/openteams/editor/tests/validator.test.ts +92 -0
  1024. package/references/openteams/editor/tsconfig.json +21 -0
  1025. package/references/openteams/editor/tsconfig.tsbuildinfo +1 -0
  1026. package/references/openteams/editor/vite.config.ts +28 -0
  1027. package/references/openteams/examples/bmad-method/prompts/analyst/ROLE.md +16 -0
  1028. package/references/openteams/examples/bmad-method/prompts/analyst/SOUL.md +5 -0
  1029. package/references/openteams/examples/bmad-method/prompts/architect/ROLE.md +24 -0
  1030. package/references/openteams/examples/bmad-method/prompts/architect/SOUL.md +5 -0
  1031. package/references/openteams/examples/bmad-method/prompts/developer/ROLE.md +25 -0
  1032. package/references/openteams/examples/bmad-method/prompts/developer/SOUL.md +5 -0
  1033. package/references/openteams/examples/bmad-method/prompts/master/ROLE.md +21 -0
  1034. package/references/openteams/examples/bmad-method/prompts/master/SOUL.md +5 -0
  1035. package/references/openteams/examples/bmad-method/prompts/pm/ROLE.md +20 -0
  1036. package/references/openteams/examples/bmad-method/prompts/pm/SOUL.md +5 -0
  1037. package/references/openteams/examples/bmad-method/prompts/qa/ROLE.md +17 -0
  1038. package/references/openteams/examples/bmad-method/prompts/qa/SOUL.md +5 -0
  1039. package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/ROLE.md +23 -0
  1040. package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/SOUL.md +5 -0
  1041. package/references/openteams/examples/bmad-method/prompts/scrum-master/ROLE.md +27 -0
  1042. package/references/openteams/examples/bmad-method/prompts/scrum-master/SOUL.md +5 -0
  1043. package/references/openteams/examples/bmad-method/prompts/tech-writer/ROLE.md +21 -0
  1044. package/references/openteams/examples/bmad-method/prompts/tech-writer/SOUL.md +5 -0
  1045. package/references/openteams/examples/bmad-method/prompts/ux-designer/ROLE.md +16 -0
  1046. package/references/openteams/examples/bmad-method/prompts/ux-designer/SOUL.md +5 -0
  1047. package/references/openteams/examples/bmad-method/roles/analyst.yaml +9 -0
  1048. package/references/openteams/examples/bmad-method/roles/architect.yaml +9 -0
  1049. package/references/openteams/examples/bmad-method/roles/developer.yaml +8 -0
  1050. package/references/openteams/examples/bmad-method/roles/master.yaml +8 -0
  1051. package/references/openteams/examples/bmad-method/roles/pm.yaml +9 -0
  1052. package/references/openteams/examples/bmad-method/roles/qa.yaml +8 -0
  1053. package/references/openteams/examples/bmad-method/roles/quick-flow-dev.yaml +8 -0
  1054. package/references/openteams/examples/bmad-method/roles/scrum-master.yaml +9 -0
  1055. package/references/openteams/examples/bmad-method/roles/tech-writer.yaml +8 -0
  1056. package/references/openteams/examples/bmad-method/roles/ux-designer.yaml +8 -0
  1057. package/references/openteams/examples/bmad-method/team.yaml +161 -0
  1058. package/references/openteams/examples/bug-fix-pipeline/roles/fixer.yaml +9 -0
  1059. package/references/openteams/examples/bug-fix-pipeline/roles/investigator.yaml +8 -0
  1060. package/references/openteams/examples/bug-fix-pipeline/roles/pr-creator.yaml +6 -0
  1061. package/references/openteams/examples/bug-fix-pipeline/roles/triager.yaml +7 -0
  1062. package/references/openteams/examples/bug-fix-pipeline/roles/verifier.yaml +8 -0
  1063. package/references/openteams/examples/bug-fix-pipeline/team.yaml +88 -0
  1064. package/references/openteams/examples/codebase-migration/roles/assessor.yaml +7 -0
  1065. package/references/openteams/examples/codebase-migration/roles/migrator.yaml +9 -0
  1066. package/references/openteams/examples/codebase-migration/roles/planner.yaml +5 -0
  1067. package/references/openteams/examples/codebase-migration/roles/test-extractor.yaml +9 -0
  1068. package/references/openteams/examples/codebase-migration/roles/validator.yaml +7 -0
  1069. package/references/openteams/examples/codebase-migration/team.yaml +81 -0
  1070. package/references/openteams/examples/docs-sync/roles/adr-writer.yaml +7 -0
  1071. package/references/openteams/examples/docs-sync/roles/api-doc-writer.yaml +7 -0
  1072. package/references/openteams/examples/docs-sync/roles/change-detector.yaml +7 -0
  1073. package/references/openteams/examples/docs-sync/roles/doc-reviewer.yaml +7 -0
  1074. package/references/openteams/examples/docs-sync/roles/guide-writer.yaml +7 -0
  1075. package/references/openteams/examples/docs-sync/team.yaml +84 -0
  1076. package/references/openteams/examples/gsd/prompts/codebase-mapper/ROLE.md +17 -0
  1077. package/references/openteams/examples/gsd/prompts/codebase-mapper/SOUL.md +5 -0
  1078. package/references/openteams/examples/gsd/prompts/debugger/ROLE.md +25 -0
  1079. package/references/openteams/examples/gsd/prompts/debugger/SOUL.md +5 -0
  1080. package/references/openteams/examples/gsd/prompts/executor/ROLE.md +34 -0
  1081. package/references/openteams/examples/gsd/prompts/executor/SOUL.md +5 -0
  1082. package/references/openteams/examples/gsd/prompts/integration-checker/ROLE.md +18 -0
  1083. package/references/openteams/examples/gsd/prompts/integration-checker/SOUL.md +3 -0
  1084. package/references/openteams/examples/gsd/prompts/orchestrator/ROLE.md +42 -0
  1085. package/references/openteams/examples/gsd/prompts/orchestrator/SOUL.md +5 -0
  1086. package/references/openteams/examples/gsd/prompts/phase-researcher/ROLE.md +15 -0
  1087. package/references/openteams/examples/gsd/prompts/phase-researcher/SOUL.md +3 -0
  1088. package/references/openteams/examples/gsd/prompts/plan-checker/ROLE.md +17 -0
  1089. package/references/openteams/examples/gsd/prompts/plan-checker/SOUL.md +3 -0
  1090. package/references/openteams/examples/gsd/prompts/planner/ROLE.md +28 -0
  1091. package/references/openteams/examples/gsd/prompts/planner/SOUL.md +5 -0
  1092. package/references/openteams/examples/gsd/prompts/project-researcher/ROLE.md +16 -0
  1093. package/references/openteams/examples/gsd/prompts/project-researcher/SOUL.md +3 -0
  1094. package/references/openteams/examples/gsd/prompts/research-synthesizer/ROLE.md +13 -0
  1095. package/references/openteams/examples/gsd/prompts/research-synthesizer/SOUL.md +3 -0
  1096. package/references/openteams/examples/gsd/prompts/roadmapper/ROLE.md +14 -0
  1097. package/references/openteams/examples/gsd/prompts/roadmapper/SOUL.md +3 -0
  1098. package/references/openteams/examples/gsd/prompts/verifier/ROLE.md +19 -0
  1099. package/references/openteams/examples/gsd/prompts/verifier/SOUL.md +5 -0
  1100. package/references/openteams/examples/gsd/roles/codebase-mapper.yaml +8 -0
  1101. package/references/openteams/examples/gsd/roles/debugger.yaml +8 -0
  1102. package/references/openteams/examples/gsd/roles/executor.yaml +8 -0
  1103. package/references/openteams/examples/gsd/roles/integration-checker.yaml +8 -0
  1104. package/references/openteams/examples/gsd/roles/orchestrator.yaml +9 -0
  1105. package/references/openteams/examples/gsd/roles/phase-researcher.yaml +7 -0
  1106. package/references/openteams/examples/gsd/roles/plan-checker.yaml +8 -0
  1107. package/references/openteams/examples/gsd/roles/planner.yaml +8 -0
  1108. package/references/openteams/examples/gsd/roles/project-researcher.yaml +8 -0
  1109. package/references/openteams/examples/gsd/roles/research-synthesizer.yaml +7 -0
  1110. package/references/openteams/examples/gsd/roles/roadmapper.yaml +7 -0
  1111. package/references/openteams/examples/gsd/roles/verifier.yaml +8 -0
  1112. package/references/openteams/examples/gsd/team.yaml +154 -0
  1113. package/references/openteams/examples/incident-response/roles/communicator.yaml +5 -0
  1114. package/references/openteams/examples/incident-response/roles/fix-proposer.yaml +7 -0
  1115. package/references/openteams/examples/incident-response/roles/incident-triager.yaml +8 -0
  1116. package/references/openteams/examples/incident-response/roles/investigator.yaml +8 -0
  1117. package/references/openteams/examples/incident-response/team.yaml +68 -0
  1118. package/references/openteams/examples/pr-review-checks/roles/code-reviewer.yaml +7 -0
  1119. package/references/openteams/examples/pr-review-checks/roles/security-scanner.yaml +6 -0
  1120. package/references/openteams/examples/pr-review-checks/roles/summarizer.yaml +6 -0
  1121. package/references/openteams/examples/pr-review-checks/roles/test-checker.yaml +8 -0
  1122. package/references/openteams/examples/pr-review-checks/team.yaml +64 -0
  1123. package/references/openteams/examples/security-audit/roles/code-analyzer.yaml +6 -0
  1124. package/references/openteams/examples/security-audit/roles/dep-scanner.yaml +7 -0
  1125. package/references/openteams/examples/security-audit/roles/fixer.yaml +9 -0
  1126. package/references/openteams/examples/security-audit/roles/pr-creator.yaml +6 -0
  1127. package/references/openteams/examples/security-audit/roles/prioritizer.yaml +6 -0
  1128. package/references/openteams/examples/security-audit/roles/secrets-scanner.yaml +6 -0
  1129. package/references/openteams/examples/security-audit/roles/verifier.yaml +8 -0
  1130. package/references/openteams/examples/security-audit/team.yaml +102 -0
  1131. package/references/openteams/media/banner.png +0 -0
  1132. package/references/openteams/media/editor.png +0 -0
  1133. package/references/openteams/package-lock.json +4804 -0
  1134. package/references/openteams/package.json +58 -0
  1135. package/references/openteams/schema/role.schema.json +147 -0
  1136. package/references/openteams/schema/team.schema.json +311 -0
  1137. package/references/openteams/src/cli/editor.ts +170 -0
  1138. package/references/openteams/src/cli/generate.test.ts +191 -0
  1139. package/references/openteams/src/cli/generate.ts +242 -0
  1140. package/references/openteams/src/cli/prompt-utils.ts +42 -0
  1141. package/references/openteams/src/cli/template.test.ts +365 -0
  1142. package/references/openteams/src/cli/template.ts +205 -0
  1143. package/references/openteams/src/cli.ts +22 -0
  1144. package/references/openteams/src/generators/agent-prompt-generator.test.ts +426 -0
  1145. package/references/openteams/src/generators/agent-prompt-generator.ts +556 -0
  1146. package/references/openteams/src/generators/package-generator.test.ts +129 -0
  1147. package/references/openteams/src/generators/package-generator.ts +110 -0
  1148. package/references/openteams/src/generators/skill-generator.test.ts +274 -0
  1149. package/references/openteams/src/generators/skill-generator.ts +394 -0
  1150. package/references/openteams/src/index.ts +84 -0
  1151. package/references/openteams/src/template/builtins.test.ts +74 -0
  1152. package/references/openteams/src/template/builtins.ts +108 -0
  1153. package/references/openteams/src/template/install-service.test.ts +452 -0
  1154. package/references/openteams/src/template/install-service.ts +332 -0
  1155. package/references/openteams/src/template/loader.test.ts +1696 -0
  1156. package/references/openteams/src/template/loader.ts +804 -0
  1157. package/references/openteams/src/template/resolver.test.ts +304 -0
  1158. package/references/openteams/src/template/resolver.ts +251 -0
  1159. package/references/openteams/src/template/types.ts +229 -0
  1160. package/references/openteams/tsconfig.cjs.json +7 -0
  1161. package/references/openteams/tsconfig.esm.json +8 -0
  1162. package/references/openteams/tsconfig.json +16 -0
  1163. package/references/openteams/vitest.config.ts +9 -0
  1164. package/references/sessionlog/.husky/pre-commit +1 -0
  1165. package/references/sessionlog/.lintstagedrc.json +4 -0
  1166. package/references/sessionlog/.prettierignore +4 -0
  1167. package/references/sessionlog/.prettierrc.json +11 -0
  1168. package/references/sessionlog/LICENSE +21 -0
  1169. package/references/sessionlog/README.md +453 -0
  1170. package/references/sessionlog/eslint.config.js +58 -0
  1171. package/references/sessionlog/package-lock.json +3672 -0
  1172. package/references/sessionlog/package.json +65 -0
  1173. package/references/sessionlog/src/__tests__/agent-hooks.test.ts +570 -0
  1174. package/references/sessionlog/src/__tests__/agent-registry.test.ts +127 -0
  1175. package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +225 -0
  1176. package/references/sessionlog/src/__tests__/claude-generator.test.ts +46 -0
  1177. package/references/sessionlog/src/__tests__/commit-msg.test.ts +86 -0
  1178. package/references/sessionlog/src/__tests__/cursor-agent.test.ts +224 -0
  1179. package/references/sessionlog/src/__tests__/e2e-live.test.ts +890 -0
  1180. package/references/sessionlog/src/__tests__/event-log.test.ts +183 -0
  1181. package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +105 -0
  1182. package/references/sessionlog/src/__tests__/gemini-agent.test.ts +375 -0
  1183. package/references/sessionlog/src/__tests__/git-hooks.test.ts +78 -0
  1184. package/references/sessionlog/src/__tests__/hook-managers.test.ts +121 -0
  1185. package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +759 -0
  1186. package/references/sessionlog/src/__tests__/opencode-agent.test.ts +338 -0
  1187. package/references/sessionlog/src/__tests__/redaction.test.ts +136 -0
  1188. package/references/sessionlog/src/__tests__/session-repo.test.ts +353 -0
  1189. package/references/sessionlog/src/__tests__/session-store.test.ts +166 -0
  1190. package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +466 -0
  1191. package/references/sessionlog/src/__tests__/skill-live.test.ts +461 -0
  1192. package/references/sessionlog/src/__tests__/summarize.test.ts +348 -0
  1193. package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +610 -0
  1194. package/references/sessionlog/src/__tests__/task-plan-live.test.ts +632 -0
  1195. package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +121 -0
  1196. package/references/sessionlog/src/__tests__/types.test.ts +166 -0
  1197. package/references/sessionlog/src/__tests__/utils.test.ts +333 -0
  1198. package/references/sessionlog/src/__tests__/validation.test.ts +103 -0
  1199. package/references/sessionlog/src/__tests__/worktree.test.ts +57 -0
  1200. package/references/sessionlog/src/agent/registry.ts +143 -0
  1201. package/references/sessionlog/src/agent/session-types.ts +113 -0
  1202. package/references/sessionlog/src/agent/types.ts +220 -0
  1203. package/references/sessionlog/src/cli.ts +597 -0
  1204. package/references/sessionlog/src/commands/clean.ts +133 -0
  1205. package/references/sessionlog/src/commands/disable.ts +84 -0
  1206. package/references/sessionlog/src/commands/doctor.ts +145 -0
  1207. package/references/sessionlog/src/commands/enable.ts +202 -0
  1208. package/references/sessionlog/src/commands/explain.ts +261 -0
  1209. package/references/sessionlog/src/commands/reset.ts +105 -0
  1210. package/references/sessionlog/src/commands/resume.ts +180 -0
  1211. package/references/sessionlog/src/commands/rewind.ts +195 -0
  1212. package/references/sessionlog/src/commands/setup-ccweb.ts +275 -0
  1213. package/references/sessionlog/src/commands/status.ts +172 -0
  1214. package/references/sessionlog/src/config.ts +165 -0
  1215. package/references/sessionlog/src/events/event-log.ts +126 -0
  1216. package/references/sessionlog/src/git-operations.ts +558 -0
  1217. package/references/sessionlog/src/hooks/git-hooks.ts +165 -0
  1218. package/references/sessionlog/src/hooks/lifecycle.ts +391 -0
  1219. package/references/sessionlog/src/index.ts +650 -0
  1220. package/references/sessionlog/src/security/redaction.ts +283 -0
  1221. package/references/sessionlog/src/session/state-machine.ts +452 -0
  1222. package/references/sessionlog/src/store/checkpoint-store.ts +509 -0
  1223. package/references/sessionlog/src/store/native-store.ts +173 -0
  1224. package/references/sessionlog/src/store/provider-types.ts +99 -0
  1225. package/references/sessionlog/src/store/session-store.ts +266 -0
  1226. package/references/sessionlog/src/strategy/attribution.ts +296 -0
  1227. package/references/sessionlog/src/strategy/common.ts +207 -0
  1228. package/references/sessionlog/src/strategy/content-overlap.ts +228 -0
  1229. package/references/sessionlog/src/strategy/manual-commit.ts +988 -0
  1230. package/references/sessionlog/src/strategy/types.ts +279 -0
  1231. package/references/sessionlog/src/summarize/claude-generator.ts +115 -0
  1232. package/references/sessionlog/src/summarize/summarize.ts +432 -0
  1233. package/references/sessionlog/src/types.ts +508 -0
  1234. package/references/sessionlog/src/utils/chunk-files.ts +49 -0
  1235. package/references/sessionlog/src/utils/commit-message.ts +65 -0
  1236. package/references/sessionlog/src/utils/detect-agent.ts +36 -0
  1237. package/references/sessionlog/src/utils/hook-managers.ts +125 -0
  1238. package/references/sessionlog/src/utils/ide-tags.ts +32 -0
  1239. package/references/sessionlog/src/utils/paths.ts +79 -0
  1240. package/references/sessionlog/src/utils/preview-rewind.ts +80 -0
  1241. package/references/sessionlog/src/utils/rewind-conflict.ts +121 -0
  1242. package/references/sessionlog/src/utils/shadow-branch.ts +109 -0
  1243. package/references/sessionlog/src/utils/string-utils.ts +46 -0
  1244. package/references/sessionlog/src/utils/todo-extract.ts +188 -0
  1245. package/references/sessionlog/src/utils/trailers.ts +187 -0
  1246. package/references/sessionlog/src/utils/transcript-parse.ts +177 -0
  1247. package/references/sessionlog/src/utils/transcript-timestamp.ts +59 -0
  1248. package/references/sessionlog/src/utils/tree-ops.ts +219 -0
  1249. package/references/sessionlog/src/utils/tty.ts +72 -0
  1250. package/references/sessionlog/src/utils/validation.ts +65 -0
  1251. package/references/sessionlog/src/utils/worktree.ts +58 -0
  1252. package/references/sessionlog/src/wire-types.ts +59 -0
  1253. package/references/sessionlog/templates/setup-env.sh +153 -0
  1254. package/references/sessionlog/tsconfig.json +18 -0
  1255. package/references/sessionlog/vitest.config.ts +12 -0
  1256. package/references/skill-tree/.claude/settings.json +6 -0
  1257. package/references/skill-tree/.sudocode/issues.jsonl +19 -0
  1258. package/references/skill-tree/.sudocode/specs.jsonl +3 -0
  1259. package/references/skill-tree/CLAUDE.md +132 -0
  1260. package/references/skill-tree/README.md +396 -0
  1261. package/references/skill-tree/docs/GAPS_v1.md +221 -0
  1262. package/references/skill-tree/docs/INTEGRATION_PLAN.md +467 -0
  1263. package/references/skill-tree/docs/TODOS.md +91 -0
  1264. package/references/skill-tree/docs/anthropic_skill_guide.md +1364 -0
  1265. package/references/skill-tree/docs/design/federated-skill-trees.md +524 -0
  1266. package/references/skill-tree/docs/design/multi-agent-sync.md +759 -0
  1267. package/references/skill-tree/docs/scraper/BRAINSTORM.md +583 -0
  1268. package/references/skill-tree/docs/scraper/POC_PLAN.md +420 -0
  1269. package/references/skill-tree/docs/scraper/README.md +170 -0
  1270. package/references/skill-tree/examples/basic-usage.ts +157 -0
  1271. package/references/skill-tree/package-lock.json +1852 -0
  1272. package/references/skill-tree/package.json +66 -0
  1273. package/references/skill-tree/plan.md +78 -0
  1274. package/references/skill-tree/scraper/README.md +123 -0
  1275. package/references/skill-tree/scraper/docs/DESIGN.md +683 -0
  1276. package/references/skill-tree/scraper/docs/PLAN.md +336 -0
  1277. package/references/skill-tree/scraper/drizzle.config.ts +10 -0
  1278. package/references/skill-tree/scraper/package-lock.json +6329 -0
  1279. package/references/skill-tree/scraper/package.json +68 -0
  1280. package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +7 -0
  1281. package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +7 -0
  1282. package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +27 -0
  1283. package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +21 -0
  1284. package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +54 -0
  1285. package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +24 -0
  1286. package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +93 -0
  1287. package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +22 -0
  1288. package/references/skill-tree/scraper/tsup.config.ts +14 -0
  1289. package/references/skill-tree/scraper/vitest.config.ts +17 -0
  1290. package/references/skill-tree/scripts/convert-to-vitest.ts +166 -0
  1291. package/references/skill-tree/skills/skill-writer/SKILL.md +339 -0
  1292. package/references/skill-tree/skills/skill-writer/references/examples.md +326 -0
  1293. package/references/skill-tree/skills/skill-writer/references/patterns.md +210 -0
  1294. package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +123 -0
  1295. package/references/skill-tree/test/run-all.ts +106 -0
  1296. package/references/skill-tree/test/utils.ts +128 -0
  1297. package/references/skill-tree/vitest.config.ts +16 -0
  1298. package/references/swarmkit/LICENSE +21 -0
  1299. package/references/swarmkit/README.md +130 -0
  1300. package/references/swarmkit/docs/design.md +453 -0
  1301. package/references/swarmkit/docs/package-setup-reference.md +519 -0
  1302. package/references/swarmkit/package-lock.json +1938 -0
  1303. package/references/swarmkit/package.json +43 -0
  1304. package/references/swarmkit/src/cli.ts +41 -0
  1305. package/references/swarmkit/src/commands/add.ts +126 -0
  1306. package/references/swarmkit/src/commands/doctor.ts +117 -0
  1307. package/references/swarmkit/src/commands/hive.ts +279 -0
  1308. package/references/swarmkit/src/commands/init/phases/configure.ts +74 -0
  1309. package/references/swarmkit/src/commands/init/phases/global-setup.ts +104 -0
  1310. package/references/swarmkit/src/commands/init/phases/packages.ts +44 -0
  1311. package/references/swarmkit/src/commands/init/phases/project.ts +81 -0
  1312. package/references/swarmkit/src/commands/init/phases/use-case.ts +47 -0
  1313. package/references/swarmkit/src/commands/init/state.test.ts +23 -0
  1314. package/references/swarmkit/src/commands/init/state.ts +22 -0
  1315. package/references/swarmkit/src/commands/init/wizard.ts +160 -0
  1316. package/references/swarmkit/src/commands/init.ts +17 -0
  1317. package/references/swarmkit/src/commands/login.ts +106 -0
  1318. package/references/swarmkit/src/commands/logout.ts +22 -0
  1319. package/references/swarmkit/src/commands/remove.ts +72 -0
  1320. package/references/swarmkit/src/commands/status.ts +101 -0
  1321. package/references/swarmkit/src/commands/update.ts +62 -0
  1322. package/references/swarmkit/src/commands/whoami.ts +41 -0
  1323. package/references/swarmkit/src/config/global.test.ts +258 -0
  1324. package/references/swarmkit/src/config/global.ts +141 -0
  1325. package/references/swarmkit/src/config/keys.test.ts +109 -0
  1326. package/references/swarmkit/src/config/keys.ts +49 -0
  1327. package/references/swarmkit/src/doctor/checks.test.ts +366 -0
  1328. package/references/swarmkit/src/doctor/checks.ts +292 -0
  1329. package/references/swarmkit/src/doctor/types.ts +33 -0
  1330. package/references/swarmkit/src/hub/auth-flow.test.ts +127 -0
  1331. package/references/swarmkit/src/hub/auth-flow.ts +144 -0
  1332. package/references/swarmkit/src/hub/client.test.ts +224 -0
  1333. package/references/swarmkit/src/hub/client.ts +185 -0
  1334. package/references/swarmkit/src/hub/credentials.test.ts +132 -0
  1335. package/references/swarmkit/src/hub/credentials.ts +51 -0
  1336. package/references/swarmkit/src/index.ts +116 -0
  1337. package/references/swarmkit/src/packages/installer.test.ts +365 -0
  1338. package/references/swarmkit/src/packages/installer.ts +206 -0
  1339. package/references/swarmkit/src/packages/plugin.test.ts +141 -0
  1340. package/references/swarmkit/src/packages/plugin.ts +46 -0
  1341. package/references/swarmkit/src/packages/registry.test.ts +235 -0
  1342. package/references/swarmkit/src/packages/registry.ts +209 -0
  1343. package/references/swarmkit/src/packages/setup.test.ts +1395 -0
  1344. package/references/swarmkit/src/packages/setup.ts +671 -0
  1345. package/references/swarmkit/src/utils/ui.test.ts +115 -0
  1346. package/references/swarmkit/src/utils/ui.ts +62 -0
  1347. package/references/swarmkit/tsconfig.json +17 -0
  1348. package/references/swarmkit/vitest.config.ts +9 -0
  1349. package/scripts/bootstrap.mjs +33 -1
  1350. package/scripts/generate-agents.mjs +5 -1
  1351. package/scripts/map-hook.mjs +100 -63
  1352. package/scripts/map-sidecar.mjs +198 -25
  1353. package/scripts/team-loader.mjs +26 -48
  1354. package/skills/swarm/SKILL.md +85 -27
  1355. package/src/__tests__/agent-generator.test.mjs +15 -23
  1356. package/src/__tests__/bootstrap.test.mjs +124 -1
  1357. package/src/__tests__/config.test.mjs +72 -27
  1358. package/src/__tests__/context-output.test.mjs +13 -14
  1359. package/src/__tests__/e2e-inbox-integration.test.mjs +732 -0
  1360. package/src/__tests__/e2e-live-inbox.test.mjs +597 -0
  1361. package/src/__tests__/e2e-live-map.test.mjs +536 -0
  1362. package/src/__tests__/e2e-mesh-sidecar.test.mjs +570 -0
  1363. package/src/__tests__/e2e-native-task-hooks.test.mjs +376 -0
  1364. package/src/__tests__/e2e-sidecar-bridge.test.mjs +477 -0
  1365. package/src/__tests__/helpers.mjs +13 -0
  1366. package/src/__tests__/inbox-integration.test.mjs +298 -0
  1367. package/src/__tests__/inbox.test.mjs +22 -89
  1368. package/src/__tests__/index.test.mjs +33 -9
  1369. package/src/__tests__/integration.test.mjs +514 -0
  1370. package/src/__tests__/map-events.test.mjs +514 -150
  1371. package/src/__tests__/mesh-connection.test.mjs +308 -0
  1372. package/src/__tests__/opentasks-client.test.mjs +517 -0
  1373. package/src/__tests__/paths.test.mjs +185 -54
  1374. package/src/__tests__/sidecar-client.test.mjs +35 -0
  1375. package/src/__tests__/sidecar-server.test.mjs +124 -0
  1376. package/src/__tests__/skilltree-client.test.mjs +126 -0
  1377. package/src/agent-generator.mjs +129 -67
  1378. package/src/bootstrap.mjs +174 -13
  1379. package/src/config.mjs +35 -1
  1380. package/src/context-output.mjs +254 -30
  1381. package/src/inbox.mjs +9 -54
  1382. package/src/index.mjs +38 -7
  1383. package/src/map-connection.mjs +1 -0
  1384. package/src/map-events.mjs +350 -80
  1385. package/src/mesh-connection.mjs +148 -0
  1386. package/src/opentasks-client.mjs +269 -0
  1387. package/src/paths.mjs +178 -28
  1388. package/src/sessionlog.mjs +14 -9
  1389. package/src/sidecar-client.mjs +79 -25
  1390. package/src/sidecar-server.mjs +205 -16
  1391. package/src/skilltree-client.mjs +218 -0
  1392. package/src/template.mjs +68 -4
  1393. package/vitest.config.mjs +1 -0
@@ -0,0 +1,1081 @@
1
+ # OpenTasks Testing Strategy
2
+
3
+ This document outlines the current state of testing in OpenTasks, identifies gaps, and proposes a tiered testing strategy for comprehensive coverage.
4
+
5
+ ## Current State
6
+
7
+ ### Test Coverage Summary
8
+
9
+ | Layer | Test Files | Tests | Coverage Type |
10
+ |-------|-----------|-------|---------------|
11
+ | Core | 2 | 34 | Unit |
12
+ | Schema | 1 | 24 | Unit |
13
+ | Storage | 2 | 65 | Unit + File I/O |
14
+ | Graph | 9 | 332 | Unit |
15
+ | Daemon | 8 | 174 | Unit |
16
+ | Tools | 3 | 59 | Unit |
17
+ | Client | 1 | 23 | Unit |
18
+ | Providers | 6 | 215 | Unit |
19
+ | **Total** | **33** | **926** | **Primarily Unit** |
20
+
21
+ ### What's Tested
22
+
23
+ **Well-tested with unit tests:**
24
+ - ID generation and hashing (deterministic, collision-resistant)
25
+ - Schema validation (Zod parsing, type guards)
26
+ - JSONL and SQLite persistence (file operations, transactions)
27
+ - Graph operations (CRUD, queries, validation, cycles)
28
+ - **Federated Graph layer:**
29
+ - EdgeTypeRegistry (12 built-in types, inverse relationships, provider support)
30
+ - GraphologyAdapter (in-memory graph with Graphology library)
31
+ - FederatedGraph (traversal API: related, reachable, shortestPath, traverse)
32
+ - HydratingFederatedGraph (lazy hydration, caching, federated ready query)
33
+ - Provider-aware store (cross-provider resolution)
34
+ - Selector syntax (+uri, uri+, @uri) and introspection methods
35
+ - Daemon lifecycle, IPC, file watching, flush management
36
+ - Daemon method handlers (graph operations, tool operations)
37
+ - 3-tool agent interface (link, query, annotate)
38
+ - Client library (connection, method calls, error handling)
39
+ - Provider interface (URI parsing, type conversion, CRUD)
40
+ - **Provider traits:**
41
+ - RelationshipQueryable (queryEdges, supportedEdgeTypes)
42
+ - NativeProvider with full edge support
43
+ - BeadsProvider with relationship queries
44
+
45
+ **File I/O tested with temp directories:**
46
+ - JSONL persister writes to real temp files
47
+ - SQLite persister uses in-memory databases
48
+ - File watcher uses real file system events (with delays)
49
+
50
+ ### Testing Gaps
51
+
52
+ #### Gap 1: Provider Integration Tests
53
+
54
+ All provider tests use mocks. No tests verify actual integration with:
55
+
56
+ | Provider | Mock Strategy | Integration Gap |
57
+ |----------|---------------|-----------------|
58
+ | **BeadsProvider** | Mocks `child_process.exec` | Never calls real `bd` CLI |
59
+ | **ClaudeTasksProvider** | Uses in-memory store | Never interacts with Claude Code task system |
60
+ | **NativeProvider** | Mocks GraphStore | N/A (no external system) |
61
+
62
+ #### Gap 2: End-to-End Agent Workflows
63
+
64
+ No tests verify complete agent workflows:
65
+ - Agent creates context → links tasks → provides feedback
66
+ - Multi-agent coordination with blocking dependencies
67
+ - Full daemon lifecycle with real IPC communication
68
+
69
+ #### Gap 3: Cross-System Integration
70
+
71
+ No tests verify:
72
+ - OpenTasks ↔ Beads bidirectional sync
73
+ - OpenTasks ↔ Claude Code task materialization
74
+ - Multi-location graph operations
75
+
76
+ #### Gap 4: Performance and Stress Testing
77
+
78
+ No tests for:
79
+ - Large graph operations (10k+ nodes)
80
+ - High-frequency flush operations
81
+ - Concurrent multi-client access
82
+
83
+ ---
84
+
85
+ ## Tiered Testing Strategy
86
+
87
+ ### Test Flags
88
+
89
+ Tests are gated by environment flags to control which tests run:
90
+
91
+ | Flag | Purpose | When to Use |
92
+ |------|---------|-------------|
93
+ | (none) | Unit tests only | Every commit, CI default |
94
+ | `RUN_SLOW_TESTS=1` | + Integration tests | Pre-merge, nightly CI |
95
+ | `RUN_FULL_AGENT_TESTS=1` | + E2E agent tests | Release validation, manual |
96
+
97
+ **Flag behavior:**
98
+ - `RUN_SLOW_TESTS` enables storage durability, daemon IPC, and provider integration tests
99
+ - `RUN_FULL_AGENT_TESTS` enables full agent workflow tests (implies `RUN_SLOW_TESTS`)
100
+ - Tests check flags via `process.env` and skip with descriptive messages
101
+
102
+ ```typescript
103
+ // Example usage in tests
104
+ const SLOW_TESTS = process.env.RUN_SLOW_TESTS === '1'
105
+ const AGENT_TESTS = process.env.RUN_FULL_AGENT_TESTS === '1'
106
+
107
+ describe.skipIf(!SLOW_TESTS)('Storage Durability', () => {
108
+ // These tests take 10+ seconds each
109
+ })
110
+
111
+ describe.skipIf(!AGENT_TESTS)('Multi-Agent Coordination', () => {
112
+ // These tests require full system setup
113
+ })
114
+ ```
115
+
116
+ ---
117
+
118
+ ### Tier 1: Unit Tests (Current)
119
+
120
+ **Status:** ✅ Complete (723 tests)
121
+
122
+ **Purpose:** Verify individual components work correctly in isolation.
123
+
124
+ **Characteristics:**
125
+ - Fast execution (<5 seconds total)
126
+ - No external dependencies
127
+ - Mocked collaborators
128
+ - Run on every commit
129
+
130
+ **Location:** `src/**/__tests__/*.test.ts`
131
+
132
+ **Flag:** None (always run)
133
+
134
+ ### Tier 2: Integration Tests
135
+
136
+ **Status:** ✅ Phases 1-4 Complete (127 tests)
137
+
138
+ **Purpose:** Verify components work together with real I/O and external systems.
139
+
140
+ **Characteristics:**
141
+ - Slower execution (10-60 seconds per test)
142
+ - Real file I/O, process spawning, IPC
143
+ - Run before merge, nightly CI
144
+
145
+ **Location:** `tests/integration/`
146
+
147
+ **Flag:** `RUN_SLOW_TESTS=1`
148
+
149
+ #### 2.1 Storage Integration Tests (Priority: High)
150
+
151
+ **Purpose:** Verify persistence durability and performance under stress.
152
+
153
+ **Requirements:**
154
+ - File system access
155
+ - Sufficient disk space for large tests
156
+
157
+ **Test Cases:**
158
+ ```typescript
159
+ // tests/integration/storage/jsonl-durability.integration.test.ts
160
+
161
+ const SLOW_TESTS = process.env.RUN_SLOW_TESTS === '1'
162
+
163
+ describe.skipIf(!SLOW_TESTS)('JSONL Durability', () => {
164
+ describe('crash recovery', () => {
165
+ it('should recover from incomplete write (simulated crash)', async () => {
166
+ // Write partial line, verify recovery on reload
167
+ })
168
+
169
+ it('should handle corrupted trailing entry', async () => {
170
+ // Append garbage, verify load skips bad entry
171
+ })
172
+ })
173
+
174
+ describe('compaction', () => {
175
+ it('should compact correctly with 1000+ entries', async () => {
176
+ // Create 1000 nodes, delete 500, compact, verify
177
+ })
178
+
179
+ it('should maintain data integrity during compaction', async () => {
180
+ // Verify no data loss during compaction
181
+ })
182
+ })
183
+
184
+ describe('concurrent access', () => {
185
+ it('should handle concurrent readers during write', async () => {
186
+ // Spawn multiple read processes while writing
187
+ })
188
+ })
189
+ })
190
+ ```
191
+
192
+ ```typescript
193
+ // tests/integration/storage/sqlite-durability.integration.test.ts
194
+
195
+ describe.skipIf(!SLOW_TESTS)('SQLite Durability', () => {
196
+ describe('crash recovery', () => {
197
+ it('should survive simulated crash during transaction', async () => {
198
+ // Use WAL mode, kill process mid-transaction, verify recovery
199
+ })
200
+ })
201
+
202
+ describe('performance', () => {
203
+ it('should handle 10k+ nodes efficiently', async () => {
204
+ // Create 10k nodes, measure insert/query times
205
+ // Assert: bulk insert < 5s, query < 100ms
206
+ })
207
+
208
+ it('should handle complex graph queries', async () => {
209
+ // Create deep dependency chains, measure traversal
210
+ })
211
+ })
212
+
213
+ describe('WAL mode', () => {
214
+ it('should support concurrent readers and single writer', async () => {
215
+ // Spawn reader processes while writing
216
+ })
217
+ })
218
+ })
219
+ ```
220
+
221
+ #### 2.2 Daemon Integration Tests (Priority: High)
222
+
223
+ **Purpose:** Verify daemon lifecycle and IPC with real processes.
224
+
225
+ **Requirements:**
226
+ - Ability to spawn child processes
227
+ - IPC socket access
228
+ - Process signal handling
229
+
230
+ **Test Cases:**
231
+ ```typescript
232
+ // tests/integration/daemon/lifecycle.integration.test.ts
233
+
234
+ describe.skipIf(!SLOW_TESTS)('Daemon Lifecycle', () => {
235
+ let daemonProcess: ChildProcess
236
+
237
+ afterEach(async () => {
238
+ if (daemonProcess) {
239
+ daemonProcess.kill('SIGTERM')
240
+ await waitForExit(daemonProcess)
241
+ }
242
+ })
243
+
244
+ describe('startup', () => {
245
+ it('should start and create socket file', async () => {
246
+ daemonProcess = spawn('node', ['./dist/daemon.js', '--socket', socketPath])
247
+ await waitForSocket(socketPath, 5000)
248
+ expect(existsSync(socketPath)).toBe(true)
249
+ })
250
+
251
+ it('should detect existing daemon and refuse to start', async () => {
252
+ // Start first daemon
253
+ daemonProcess = spawn('node', ['./dist/daemon.js', '--socket', socketPath])
254
+ await waitForSocket(socketPath)
255
+
256
+ // Try to start second daemon
257
+ const second = spawn('node', ['./dist/daemon.js', '--socket', socketPath])
258
+ const exitCode = await waitForExit(second)
259
+ expect(exitCode).toBe(1)
260
+ })
261
+ })
262
+
263
+ describe('shutdown', () => {
264
+ it('should flush pending writes on SIGTERM', async () => {
265
+ daemonProcess = spawn('node', ['./dist/daemon.js'])
266
+ await waitForSocket(socketPath)
267
+
268
+ // Make some writes via IPC
269
+ const client = createIPCClient(socketPath)
270
+ await client.connect()
271
+ await client.createNode({ type: 'context', title: 'Test' })
272
+
273
+ // Send SIGTERM
274
+ daemonProcess.kill('SIGTERM')
275
+ await waitForExit(daemonProcess)
276
+
277
+ // Verify data persisted
278
+ const persister = createJSONLPersister(dataPath)
279
+ const data = await persister.load()
280
+ expect(data.nodes).toHaveLength(1)
281
+ })
282
+
283
+ it('should clean up socket file on exit', async () => {
284
+ daemonProcess = spawn('node', ['./dist/daemon.js', '--socket', socketPath])
285
+ await waitForSocket(socketPath)
286
+
287
+ daemonProcess.kill('SIGTERM')
288
+ await waitForExit(daemonProcess)
289
+
290
+ expect(existsSync(socketPath)).toBe(false)
291
+ })
292
+ })
293
+ })
294
+ ```
295
+
296
+ ```typescript
297
+ // tests/integration/daemon/ipc.integration.test.ts
298
+
299
+ describe.skipIf(!SLOW_TESTS)('Daemon IPC', () => {
300
+ let daemon: ChildProcess
301
+ let client: IPCClient
302
+
303
+ beforeAll(async () => {
304
+ daemon = spawn('node', ['./dist/daemon.js', '--socket', socketPath])
305
+ await waitForSocket(socketPath, 5000)
306
+ client = createIPCClient(socketPath)
307
+ await client.connect()
308
+ })
309
+
310
+ afterAll(async () => {
311
+ await client.disconnect()
312
+ daemon.kill('SIGTERM')
313
+ await waitForExit(daemon)
314
+ })
315
+
316
+ describe('round-trip', () => {
317
+ it('should handle create → get → update → delete cycle', async () => {
318
+ const created = await client.createNode({ type: 'context', title: 'Test' })
319
+ expect(created.id).toMatch(/^s-/)
320
+
321
+ const fetched = await client.getNode(created.id)
322
+ expect(fetched?.title).toBe('Test')
323
+
324
+ const updated = await client.updateNode(created.id, { title: 'Updated' })
325
+ expect(updated.title).toBe('Updated')
326
+
327
+ await client.deleteNode(created.id)
328
+ const deleted = await client.getNode(created.id)
329
+ expect(deleted).toBeNull()
330
+ })
331
+ })
332
+
333
+ describe('concurrent clients', () => {
334
+ it('should handle 10 concurrent clients', async () => {
335
+ const clients = await Promise.all(
336
+ Array.from({ length: 10 }, async () => {
337
+ const c = createIPCClient(socketPath)
338
+ await c.connect()
339
+ return c
340
+ })
341
+ )
342
+
343
+ // All clients create nodes concurrently
344
+ const results = await Promise.all(
345
+ clients.map((c, i) => c.createNode({ type: 'task', title: `Issue ${i}` }))
346
+ )
347
+
348
+ expect(results).toHaveLength(10)
349
+ expect(new Set(results.map(r => r.id)).size).toBe(10) // All unique IDs
350
+
351
+ await Promise.all(clients.map(c => c.disconnect()))
352
+ })
353
+ })
354
+
355
+ describe('error handling', () => {
356
+ it('should return error for invalid node ID', async () => {
357
+ await expect(client.getNode('invalid-id')).rejects.toThrow()
358
+ })
359
+
360
+ it('should recover from client disconnect', async () => {
361
+ const tempClient = createIPCClient(socketPath)
362
+ await tempClient.connect()
363
+ await tempClient.createNode({ type: 'context', title: 'Before disconnect' })
364
+
365
+ // Abrupt disconnect (no graceful close)
366
+ tempClient.socket.destroy()
367
+
368
+ // Original client should still work
369
+ const result = await client.createNode({ type: 'context', title: 'After disconnect' })
370
+ expect(result.id).toBeDefined()
371
+ })
372
+ })
373
+ })
374
+ ```
375
+
376
+ #### 2.3 BeadsProvider Integration Tests (Priority: Medium)
377
+
378
+ **Purpose:** Verify BeadsProvider works with real `bd` CLI.
379
+
380
+ **Requirements:**
381
+ - Beads (`bd`) CLI installed and configured
382
+ - Test Beads directory with fixtures
383
+
384
+ **Test Fixtures:**
385
+ ```
386
+ tests/fixtures/beads/
387
+ ├── .beads/ # Beads database directory
388
+ │ └── beads.db # SQLite database
389
+ ├── bd-test1.md # Test bead with known content
390
+ ├── bd-test2.md # Test bead for update operations
391
+ └── bd-temp.md # For create/delete tests
392
+ ```
393
+
394
+ **Test Cases:**
395
+
396
+ ```typescript
397
+ // tests/integration/providers/beads.integration.test.ts
398
+
399
+ const SLOW_TESTS = process.env.RUN_SLOW_TESTS === '1'
400
+
401
+ // Additional check: skip if bd CLI not available
402
+ async function checkBdAvailable(): Promise<boolean> {
403
+ try {
404
+ await exec('bd --version')
405
+ return true
406
+ } catch {
407
+ return false
408
+ }
409
+ }
410
+
411
+ describe.skipIf(!SLOW_TESTS)('BeadsProvider Integration', () => {
412
+ beforeAll(async () => {
413
+ if (!(await checkBdAvailable())) {
414
+ console.log('Skipping: bd CLI not installed')
415
+ return
416
+ }
417
+ })
418
+
419
+ describe('read operations', () => {
420
+ it('should read existing bead from real Beads directory')
421
+ it('should parse bead frontmatter correctly')
422
+ it('should handle bead with links')
423
+ it('should return null for non-existent bead')
424
+ })
425
+
426
+ describe('write operations', () => {
427
+ it('should create new bead via bd CLI')
428
+ it('should update existing bead')
429
+ it('should delete bead')
430
+ })
431
+
432
+ describe('search operations', () => {
433
+ it('should search beads by content')
434
+ it('should filter by type/tags')
435
+ })
436
+
437
+ describe('URI handling', () => {
438
+ it('should resolve relative beads:// URIs')
439
+ it('should handle workspace-relative paths')
440
+ })
441
+ })
442
+ ```
443
+
444
+ **Dev Dependencies:**
445
+ - None required (uses system `bd` CLI)
446
+ - CI skips if `bd` not available
447
+
448
+ #### 2.4 ClaudeTasksProvider Integration Tests (Priority: Low)
449
+
450
+ **Purpose:** Verify file-backed task store persistence.
451
+
452
+ **Challenge:** Claude Code's task system is not directly accessible outside of Claude Code sessions. Integration tests focus on the file-backed store abstraction.
453
+
454
+ **Test Cases:**
455
+ ```typescript
456
+ // tests/integration/providers/claude-tasks.integration.test.ts
457
+
458
+ const SLOW_TESTS = process.env.RUN_SLOW_TESTS === '1'
459
+
460
+ describe.skipIf(!SLOW_TESTS)('ClaudeTasksProvider File Store', () => {
461
+ let tempDir: string
462
+
463
+ beforeEach(async () => {
464
+ tempDir = await mkdtemp(join(tmpdir(), 'claude-tasks-'))
465
+ })
466
+
467
+ afterEach(async () => {
468
+ await rm(tempDir, { recursive: true })
469
+ })
470
+
471
+ describe('persistence', () => {
472
+ it('should persist tasks to JSON file', async () => {
473
+ const store = createFileBackedTaskStore(join(tempDir, 'tasks.json'))
474
+ await store.create({ subject: 'Test', description: 'Desc' })
475
+
476
+ // Reload from file
477
+ const store2 = createFileBackedTaskStore(join(tempDir, 'tasks.json'))
478
+ const tasks = await store2.list()
479
+ expect(tasks).toHaveLength(1)
480
+ })
481
+
482
+ it('should handle concurrent access', async () => {
483
+ const path = join(tempDir, 'tasks.json')
484
+ const stores = Array.from({ length: 5 }, () => createFileBackedTaskStore(path))
485
+
486
+ // Concurrent writes
487
+ await Promise.all(
488
+ stores.map((s, i) => s.create({ subject: `Task ${i}`, description: '' }))
489
+ )
490
+
491
+ const finalStore = createFileBackedTaskStore(path)
492
+ const tasks = await finalStore.list()
493
+ expect(tasks.length).toBeGreaterThanOrEqual(1) // At least some should persist
494
+ })
495
+ })
496
+ })
497
+ ```
498
+
499
+ **Recommendation:** Full Claude Tasks integration best tested via E2E tests (Tier 3) running within actual Claude Code sessions.
500
+
501
+ ### Tier 3: End-to-End Tests (Proposed)
502
+
503
+ **Purpose:** Verify complete workflows from agent perspective.
504
+
505
+ **Characteristics:**
506
+ - Slowest execution (minutes)
507
+ - Requires full system setup (daemon, storage, providers)
508
+ - Run before release, manual validation
509
+
510
+ **Location:** `tests/e2e/`
511
+
512
+ **Flag:** `RUN_FULL_AGENT_TESTS=1` (implies `RUN_SLOW_TESTS=1`)
513
+
514
+ #### 3.1 Agent Workflow E2E Tests
515
+
516
+ **Test Harness:**
517
+ ```typescript
518
+ // tests/e2e/harness.ts
519
+
520
+ interface TestAgent {
521
+ // Simulates an agent making tool calls
522
+ link(params: LinkParams): Promise<LinkResult>
523
+ query(params: QueryParams): Promise<QueryResult>
524
+ annotate(params: AnnotateParams): Promise<AnnotateResult>
525
+ }
526
+
527
+ function createTestAgent(client: OpenTasksClient): TestAgent
528
+ ```
529
+
530
+ **Test Cases:**
531
+ ```typescript
532
+ // tests/e2e/workflows/context-driven-development.e2e.test.ts
533
+
534
+ const AGENT_TESTS = process.env.RUN_FULL_AGENT_TESTS === '1'
535
+
536
+ describe.skipIf(!AGENT_TESTS)('Context-Driven Development Workflow', () => {
537
+ let agent: TestAgent
538
+
539
+ it('should complete full context→task→implementation cycle', async () => {
540
+ // 1. Create context
541
+ const contextResult = await agent.link({
542
+ action: 'create',
543
+ type: 'context',
544
+ title: 'Test Feature',
545
+ content: 'Feature requirements...',
546
+ })
547
+ expect(contextResult.id).toMatch(/^c-/)
548
+
549
+ // 2. Create implementing issue
550
+ const issueResult = await agent.link({
551
+ action: 'create',
552
+ type: 'task',
553
+ title: 'Implement Test Feature',
554
+ implements: specResult.id,
555
+ })
556
+
557
+ // 3. Query ready work
558
+ const readyResult = await agent.query({ type: 'ready' })
559
+ expect(readyResult.nodes).toContainEqual(
560
+ expect.objectContaining({ id: issueResult.id })
561
+ )
562
+
563
+ // 4. Provide feedback
564
+ await agent.annotate({
565
+ target_id: specResult.id,
566
+ feedback_type: 'comment',
567
+ content: 'Implementation complete',
568
+ })
569
+
570
+ // 5. Close issue
571
+ await agent.link({
572
+ action: 'update',
573
+ id: issueResult.id,
574
+ status: 'closed',
575
+ })
576
+
577
+ // 6. Verify issue no longer ready
578
+ const finalReady = await agent.query({ type: 'ready' })
579
+ expect(finalReady.nodes).not.toContainEqual(
580
+ expect.objectContaining({ id: issueResult.id })
581
+ )
582
+ })
583
+ })
584
+ ```
585
+
586
+ #### 3.2 Multi-Agent Coordination E2E Tests
587
+
588
+ ```typescript
589
+ // tests/e2e/workflows/multi-agent.e2e.test.ts
590
+
591
+ const AGENT_TESTS = process.env.RUN_FULL_AGENT_TESTS === '1'
592
+
593
+ describe.skipIf(!AGENT_TESTS)('Multi-Agent Coordination', () => {
594
+ let agent1: TestAgent
595
+ let agent2: TestAgent
596
+
597
+ it('should coordinate via blocking dependencies', async () => {
598
+ // Agent 1 creates foundation issue
599
+ const foundationIssue = await agent1.link({
600
+ action: 'create',
601
+ type: 'task',
602
+ title: 'Foundation Work',
603
+ })
604
+
605
+ // Agent 1 creates dependent issue
606
+ const dependentIssue = await agent1.link({
607
+ action: 'create',
608
+ type: 'task',
609
+ title: 'Dependent Work',
610
+ blocked_by: [foundationIssue.id],
611
+ })
612
+
613
+ // Agent 2 sees only foundation as ready
614
+ const agent2Ready = await agent2.query({ type: 'ready' })
615
+ expect(agent2Ready.nodes).toHaveLength(1)
616
+ expect(agent2Ready.nodes[0].id).toBe(foundationIssue.id)
617
+
618
+ // Agent 1 completes foundation
619
+ await agent1.link({
620
+ action: 'update',
621
+ id: foundationIssue.id,
622
+ status: 'closed',
623
+ })
624
+
625
+ // Agent 2 now sees dependent as ready
626
+ const agent2ReadyAfter = await agent2.query({ type: 'ready' })
627
+ expect(agent2ReadyAfter.nodes[0].id).toBe(dependentIssue.id)
628
+ })
629
+ })
630
+ ```
631
+
632
+ #### 3.3 Provider Sync E2E Tests
633
+
634
+ ```typescript
635
+ // tests/e2e/workflows/provider-sync.e2e.test.ts
636
+
637
+ const AGENT_TESTS = process.env.RUN_FULL_AGENT_TESTS === '1'
638
+
639
+ describe.skipIf(!AGENT_TESTS)('Provider Synchronization', () => {
640
+ describe('OpenTasks ↔ Beads', () => {
641
+ it('should materialize Beads reference on first access')
642
+ it('should refresh stale materialized nodes')
643
+ it('should sync changes back to Beads')
644
+ })
645
+
646
+ describe('OpenTasks ↔ Claude Tasks', () => {
647
+ it('should bridge Claude task to OpenTasks issue')
648
+ it('should update Claude task when issue closes')
649
+ })
650
+ })
651
+ ```
652
+
653
+ ---
654
+
655
+ ## Test Infrastructure
656
+
657
+ ### Test Configuration
658
+
659
+ ```typescript
660
+ // vitest.config.ts additions
661
+
662
+ export default defineConfig({
663
+ test: {
664
+ // Unit tests (fast, no external deps)
665
+ include: ['src/**/__tests__/*.test.ts'],
666
+
667
+ // Integration tests (separate config)
668
+ // Run with: vitest --config vitest.integration.config.ts
669
+ },
670
+ })
671
+ ```
672
+
673
+ ```typescript
674
+ // vitest.integration.config.ts
675
+
676
+ export default defineConfig({
677
+ test: {
678
+ include: ['tests/integration/**/*.test.ts'],
679
+ testTimeout: 30000, // 30 seconds for external calls
680
+ hookTimeout: 60000, // 60 seconds for setup/teardown
681
+ },
682
+ })
683
+ ```
684
+
685
+ ```typescript
686
+ // vitest.e2e.config.ts
687
+
688
+ export default defineConfig({
689
+ test: {
690
+ include: ['tests/e2e/**/*.test.ts'],
691
+ testTimeout: 120000, // 2 minutes per test
692
+ hookTimeout: 300000, // 5 minutes for full setup
693
+ maxConcurrency: 1, // Run sequentially
694
+ },
695
+ })
696
+ ```
697
+
698
+ ### npm Scripts
699
+
700
+ ```json
701
+ {
702
+ "scripts": {
703
+ "test": "vitest run",
704
+ "test:watch": "vitest",
705
+ "test:slow": "RUN_SLOW_TESTS=1 vitest run",
706
+ "test:slow:watch": "RUN_SLOW_TESTS=1 vitest",
707
+ "test:e2e": "RUN_FULL_AGENT_TESTS=1 vitest run",
708
+ "test:all": "RUN_FULL_AGENT_TESTS=1 vitest run"
709
+ }
710
+ }
711
+ ```
712
+
713
+ **Usage:**
714
+ ```bash
715
+ # Fast unit tests only (CI default)
716
+ npm test
717
+
718
+ # Include integration tests (slower, real I/O)
719
+ npm run test:slow
720
+
721
+ # Full test suite including E2E (slowest)
722
+ npm run test:e2e
723
+
724
+ # Watch mode with integration tests
725
+ npm run test:slow:watch
726
+ ```
727
+
728
+ ### CI Pipeline
729
+
730
+ ```yaml
731
+ # .github/workflows/test.yml
732
+
733
+ name: Tests
734
+
735
+ on: [push, pull_request]
736
+
737
+ jobs:
738
+ unit:
739
+ name: Unit Tests
740
+ runs-on: ubuntu-latest
741
+ steps:
742
+ - uses: actions/checkout@v4
743
+ - uses: actions/setup-node@v4
744
+ with:
745
+ node-version: '20'
746
+ cache: 'npm'
747
+ - run: npm ci
748
+ - run: npm test
749
+
750
+ integration:
751
+ name: Integration Tests (RUN_SLOW_TESTS)
752
+ runs-on: ubuntu-latest
753
+ needs: unit
754
+ steps:
755
+ - uses: actions/checkout@v4
756
+ - uses: actions/setup-node@v4
757
+ with:
758
+ node-version: '20'
759
+ cache: 'npm'
760
+ - run: npm ci
761
+ - run: npm run build # Need compiled daemon
762
+ - name: Run integration tests
763
+ run: npm run test:slow
764
+ env:
765
+ RUN_SLOW_TESTS: '1'
766
+
767
+ e2e:
768
+ name: E2E Tests (RUN_FULL_AGENT_TESTS)
769
+ runs-on: ubuntu-latest
770
+ needs: integration
771
+ if: github.ref == 'refs/heads/main' || github.event_name == 'release'
772
+ steps:
773
+ - uses: actions/checkout@v4
774
+ - uses: actions/setup-node@v4
775
+ with:
776
+ node-version: '20'
777
+ cache: 'npm'
778
+ - run: npm ci
779
+ - run: npm run build
780
+ - name: Run E2E tests
781
+ run: npm run test:e2e
782
+ env:
783
+ RUN_FULL_AGENT_TESTS: '1'
784
+ ```
785
+
786
+ **Note:** Beads integration tests will skip automatically if `bd` CLI is not installed. To run Beads tests in CI, add a step to install the CLI.
787
+
788
+ ---
789
+
790
+ ## Implementation Roadmap
791
+
792
+ ### Phase 1: Integration Test Infrastructure ✅ COMPLETE
793
+
794
+ 1. ✅ Create `tests/integration/` directory structure
795
+ 2. ✅ Add `vitest.integration.config.ts`
796
+ 3. ✅ Add npm scripts with flag support
797
+ 4. ✅ Create test helper utilities (process spawning, temp dirs, wait helpers)
798
+
799
+ **Deliverables:**
800
+ - ✅ `tests/integration/helpers/` - shared utilities (flags, process, wait, temp)
801
+ - ✅ `vitest.integration.config.ts`
802
+ - ✅ Updated `package.json` scripts
803
+
804
+ ### Phase 2: Storage Integration Tests (RUN_SLOW_TESTS) ✅ COMPLETE
805
+
806
+ **Priority: High** - Foundation for all persistence
807
+
808
+ 1. ✅ Create JSONL durability tests (16 tests)
809
+ - Crash recovery (partial writes, corrupted entries)
810
+ - Compaction with 1000+ entries
811
+ - Concurrent readers
812
+ - Performance baselines
813
+ 2. ✅ Create SQLite durability tests (17 tests)
814
+ - Transaction crash recovery
815
+ - 10k+ node performance baselines (insert <1s, query <500ms)
816
+ - WAL mode concurrent access
817
+ - Complex graph queries
818
+ 3. ✅ Add performance assertions
819
+
820
+ **Deliverables:**
821
+ - ✅ `tests/integration/storage/jsonl-durability.integration.test.ts`
822
+ - ✅ `tests/integration/storage/sqlite-durability.integration.test.ts`
823
+
824
+ ### Phase 3: Daemon Integration Tests (RUN_SLOW_TESTS) ✅ COMPLETE
825
+
826
+ **Priority: High** - Foundation for client-server architecture
827
+
828
+ 1. ✅ Create daemon spawn/lifecycle helpers
829
+ 2. ✅ Write lifecycle tests (19 tests: startup, shutdown, lock, registry)
830
+ 3. ✅ Write IPC round-trip tests (21 tests: request/response, error handling)
831
+ 4. ✅ Write concurrent client tests
832
+ 5. ✅ Write connection tracking tests
833
+
834
+ **Deliverables:**
835
+ - ✅ `tests/integration/daemon/helpers.ts`
836
+ - ✅ `tests/integration/daemon/lifecycle.integration.test.ts`
837
+ - ✅ `tests/integration/daemon/ipc.integration.test.ts`
838
+
839
+ ### Phase 4: Provider & Graph Integration Tests (RUN_SLOW_TESTS) ✅ COMPLETE
840
+
841
+ **Priority: Medium** - External system integration and federated graph
842
+
843
+ 1. ✅ BeadsProvider integration (17 tests)
844
+ - CRUD operations (create, get, list, update, delete)
845
+ - Search operations
846
+ - URI handling
847
+ - Error handling
848
+ - Concurrent operations (5 creates, 10 reads)
849
+ - Workspace isolation
850
+ - Uses temp directories with git init + bd init
851
+
852
+ 2. ✅ Federated Graph integration (26 tests)
853
+ - Schema migration (edge metadata columns)
854
+ - Edge type registry with inverse relationships
855
+ - Graphology adapter synchronization
856
+ - Traversal API (related, reachable, shortestPath, traverse)
857
+ - Provider hydration with TTL caching
858
+ - Federated ready query with external blockers
859
+ - Cross-provider edge resolution
860
+ - Cache staleness detection
861
+ - Cycle handling
862
+
863
+ 3. ClaudeTasksProvider file store
864
+ - File-backed persistence tests (future work)
865
+
866
+ **Deliverables:**
867
+ - ✅ `tests/integration/providers/beads.integration.test.ts`
868
+ - ✅ `tests/integration/graph/federated-graph.integration.test.ts`
869
+ - `tests/integration/providers/claude-tasks.integration.test.ts` (future)
870
+
871
+ **Provider Fixes Made:**
872
+ - Fixed shell escaping for arguments with spaces
873
+ - Fixed "not found" detection to handle bd error messages
874
+ - Fixed bd show/update returning arrays instead of single objects
875
+
876
+ ### Phase 5: E2E Test Infrastructure (RUN_FULL_AGENT_TESTS) ✅ COMPLETE
877
+
878
+ 1. ✅ Create `tests/e2e/` directory structure
879
+ 2. ✅ Add `vitest.e2e.config.ts`
880
+ 3. ✅ Create TestAgent harness wrapping client
881
+ 4. ✅ Create full system setup/teardown helpers
882
+
883
+ **Deliverables:**
884
+ - ✅ `tests/e2e/helpers/system-setup.ts` - Full system setup (IPC server, SQLite storage, graph store, tool handlers, provider registry)
885
+ - ✅ `tests/e2e/helpers/test-agent.ts` - TestAgent wrapper with 3-tool interface + provider operations + convenience methods
886
+ - ✅ `tests/e2e/helpers/assertions.ts` - Assertion helpers (expectReady, expectNotReady, expectBlocks, expectBlockers, expectFeedback)
887
+ - ✅ `tests/e2e/helpers/fixtures.ts` - Fixture helpers (createTestContext, createTestTask, createBlockingChain, createDiamondDependency)
888
+ - ✅ `tests/e2e/helpers/index.ts` - Exports
889
+ - ✅ `tests/e2e/infrastructure.e2e.test.ts` - 39 infrastructure tests
890
+ - ✅ `vitest.e2e.config.ts` - E2E-specific configuration
891
+
892
+ **Infrastructure Features:**
893
+ - `setupE2ESystem()` / `withE2ESystem()` - Create isolated test environment with storage, IPC, client, and provider registry
894
+ - `createTestAgent()` - Wrap client with named agent, logging, and provider operations (createContext, createTask, updateNode, closeTask, getNode)
895
+ - `createMultiAgents()` - Create multiple agents for coordination tests
896
+ - Assertion helpers for common test patterns
897
+ - Fixture helpers for creating test data structures (chains, diamonds, context+tasks)
898
+ - Automatic cleanup on teardown
899
+
900
+ ### Phase 6: Agent Workflow E2E Tests (RUN_FULL_AGENT_TESTS) ✅ COMPLETE
901
+
902
+ **Priority: High** - Core value proposition validation
903
+
904
+ 1. ✅ Context-driven development workflow (10 tests)
905
+ - Full context→task→close cycle
906
+ - Multiple tasks implementing one context
907
+ - Task status filtering (open vs in_progress vs closed)
908
+ - Priority storage and retrieval
909
+ - Context content preservation and updates
910
+
911
+ 2. ✅ Multi-agent coordination (9 tests)
912
+ - Sequential blocking between agents
913
+ - Cross-agent blocking relationships
914
+ - Diamond dependency resolution
915
+ - Concurrent issue creation
916
+ - Transitive blocking queries (blockers/blocking with transitive option)
917
+ - Agent isolation with shared state
918
+
919
+ 3. ✅ Feedback loop tests (10 tests)
920
+ - Basic feedback operations (add, query, types)
921
+ - Feedback with issue context (from_id)
922
+ - Resolve/reopen feedback lifecycle
923
+ - Dismiss and filter feedback
924
+ - Filter by type
925
+ - Anchored feedback
926
+ - Feedback assertion helper
927
+
928
+ **Deliverables:**
929
+ - ✅ `tests/e2e/workflows/context-driven.e2e.test.ts` - 10 tests
930
+ - ✅ `tests/e2e/workflows/multi-agent.e2e.test.ts` - 9 tests
931
+ - ✅ `tests/e2e/workflows/feedback-loop.e2e.test.ts` - 10 tests
932
+
933
+ **Key Learnings:**
934
+ - Ready query only returns `status: 'open'` tasks (not `in_progress`)
935
+ - Ready query doesn't sort by priority
936
+ - LinkResult uses `success` and `edge_id` fields
937
+
938
+ ### Phase 7: Provider Sync E2E Tests (RUN_FULL_AGENT_TESTS) ✅ COMPLETE
939
+
940
+ **Priority: Medium** - Cross-provider integration validation
941
+
942
+ **Purpose:** Test cross-provider blocking dependencies between NativeProvider and BeadsProvider, hydration/caching behavior, materialization strategies, and background sync.
943
+
944
+ **Requirements:**
945
+ - `bd` CLI installed (tests skip gracefully if unavailable)
946
+ - `RUN_FULL_AGENT_TESTS=1` environment variable
947
+
948
+ 1. ✅ Hydration & Caching tests (12 tests)
949
+ - First access hydration from BeadsProvider
950
+ - cached_at timestamp tracking
951
+ - Cache reuse without re-fetching when fresh
952
+ - Staleness detection (TTL-based, non-hydrated nodes)
953
+ - Missing/non-existent node handling
954
+ - Concurrent hydration (same node, different nodes)
955
+ - Resolve API (single and batch resolution)
956
+
957
+ 2. ✅ Cross-provider edges (8 tests, 1 skipped)
958
+ - Native → External edge creation and queries
959
+ - External → Native edge creation and queries
960
+ - Bidirectional traversal via federated graph
961
+ - Transitive cross-provider chains (Native → Beads → Native)
962
+ - Ready query with cross-provider blockers
963
+ - Status change detection (skipped - requires cache invalidation investigation)
964
+
965
+ 3. ✅ Federated ready query (10 tests)
966
+ - Basic ready query (unblocked, closed blocker, open blocker)
967
+ - Cross-provider blockers (open external blocks, closed external unblocks)
968
+ - Multiple blockers (all native, mixed native+external)
969
+ - External status mapping (closed, open, in_progress)
970
+
971
+ 4. ✅ Materialization strategies (10 tests)
972
+ - Lazy strategy (materialize on resolve, explicit flag)
973
+ - On-demand strategy (explicit request only)
974
+ - Eager strategy (all access types)
975
+ - None strategy (never materialize)
976
+ - Per-provider strategy overrides
977
+ - Staleness detection (TTL, missing cached_at, stale flag)
978
+ - URI extraction for strategy lookup
979
+
980
+ 5. ✅ Background sync (16 tests)
981
+ - Start/stop lifecycle (running state, stop behavior)
982
+ - Configuration (interval=0 disables, negative interval, multiple starts)
983
+ - Materialization context (access types, explicit flag)
984
+ - Strategy handling (lazy, eager, on-demand, none)
985
+ - Default configuration and partial config merging
986
+
987
+ **Deliverables:**
988
+ - ✅ `tests/e2e/helpers/beads-helpers.ts` - Beads CLI helpers (isBdAvailable, createBeadsTask, getBeadsTask, updateBeadsStatus)
989
+ - ✅ `tests/e2e/workflows/provider-sync/hydration.e2e.test.ts` - 12 tests
990
+ - ✅ `tests/e2e/workflows/provider-sync/cross-provider-edges.e2e.test.ts` - 8 tests (1 skipped)
991
+ - ✅ `tests/e2e/workflows/provider-sync/federated-ready.e2e.test.ts` - 10 tests
992
+ - ✅ `tests/e2e/workflows/provider-sync/materialization.e2e.test.ts` - 10 tests
993
+ - ✅ `tests/e2e/workflows/provider-sync/background-sync.e2e.test.ts` - 16 tests
994
+
995
+ **Key Technical Patterns:**
996
+ - Cross-provider queries use `HydratingFederatedGraph.related()` instead of daemon queries
997
+ - Native nodes use `native://` URI prefix and must be added to GraphologyAdapter
998
+ - bd CLI only supports statuses: `open`, `closed`, `blocked`, `in_progress`
999
+ - CLOSED_STATUSES list includes: `closed`, `done`, `resolved`, `completed`, `cancelled`
1000
+
1001
+ **Running Provider Sync Tests:**
1002
+ ```bash
1003
+ # Run all provider sync tests (requires bd CLI)
1004
+ RUN_FULL_AGENT_TESTS=1 npx vitest run tests/e2e/workflows/provider-sync/
1005
+
1006
+ # Tests skip gracefully if bd CLI is not available
1007
+ ```
1008
+
1009
+ ---
1010
+
1011
+ ## Dev Dependencies to Consider
1012
+
1013
+ | Package | Purpose | Decision Criteria |
1014
+ |---------|---------|-------------------|
1015
+ | `execa` | Better child process handling | If spawn tests become complex |
1016
+ | `tempy` | Temp directory management | If current approach insufficient |
1017
+ | `wait-for-expect` | Async assertion helpers | If timeout handling needed |
1018
+ | `msw` | Mock Service Worker | Only if HTTP mocking needed |
1019
+
1020
+ **Current recommendation:** Start without additional dependencies, add as needed.
1021
+
1022
+ ---
1023
+
1024
+ ## Success Metrics
1025
+
1026
+ ### Coverage Targets
1027
+
1028
+ | Tier | Target | Current |
1029
+ |------|--------|---------|
1030
+ | Unit | >90% | 926 tests ✅ |
1031
+ | Integration | >70% of external interfaces | 127 tests (Phases 1-4) ✅ |
1032
+ | E2E | >80% of documented workflows | 124 tests (Phases 5-7) ✅ |
1033
+
1034
+ ### Performance Baselines
1035
+
1036
+ | Operation | Target | Measured |
1037
+ |-----------|--------|----------|
1038
+ | Unit test suite | <10s | ~3s ✅ |
1039
+ | Integration test suite | <2min | ~20s ✅ |
1040
+ | E2E test suite | <10min | ~2s (124 tests) ✅ |
1041
+ | Create 1000 nodes (JSONL) | <1s | <500ms ✅ |
1042
+ | Load 1000 nodes (JSONL) | <500ms | <100ms ✅ |
1043
+ | Insert 10k nodes (SQLite) | <5s | ~650ms ✅ |
1044
+ | Query 10k nodes (SQLite) | <1s | ~15ms ✅ |
1045
+
1046
+ ---
1047
+
1048
+ ## Next Steps
1049
+
1050
+ 1. ~~**Immediate:** Implement Phase 1 (test infrastructure, helpers, config)~~ ✅ DONE
1051
+ 2. ~~**Short-term:** Implement Phases 2-3 (storage + daemon integration tests)~~ ✅ DONE
1052
+ 3. ~~**Medium-term:** Implement Phase 4 (provider + graph integration)~~ ✅ DONE
1053
+ 4. ~~**Next:** Implement Phase 5 (E2E infrastructure)~~ ✅ DONE
1054
+ 5. ~~**Next:** Implement Phase 6 (agent workflow E2E tests)~~ ✅ DONE
1055
+ 6. ~~**Next:** Implement Phase 7 (provider sync E2E tests)~~ ✅ DONE
1056
+
1057
+ **All phases complete!** Future work may include:
1058
+ - ClaudeTasksProvider integration tests (when accessible outside Claude Code sessions)
1059
+ - Additional stress/performance tests for large graphs
1060
+ - CI integration with bd CLI installation
1061
+
1062
+ The testing strategy prioritizes system-level tests (storage, daemon) first as they:
1063
+ - Have no external dependencies (no `bd` CLI needed)
1064
+ - Test the foundation that all other features rely on
1065
+ - Can be gated with `RUN_SLOW_TESTS` for fast CI cycles
1066
+
1067
+ ## Progress Summary
1068
+
1069
+ | Phase | Status | Tests |
1070
+ |-------|--------|-------|
1071
+ | Phase 1: Infrastructure | ✅ Complete | 11 helper tests |
1072
+ | Phase 2: Storage | ✅ Complete | 33 tests (JSONL + SQLite) |
1073
+ | Phase 3: Daemon | ✅ Complete | 40 tests (lifecycle + IPC) |
1074
+ | Phase 4: Providers & Graph | ✅ Complete | 43 tests (BeadsProvider + FederatedGraph) |
1075
+ | Phase 5: E2E Infrastructure | ✅ Complete | 39 tests (system setup, TestAgent, providers, assertions, fixtures) |
1076
+ | Phase 6: Agent Workflows | ✅ Complete | 29 tests (context-driven, multi-agent, feedback-loop) |
1077
+ | Phase 7: Provider Sync | ✅ Complete | 56 tests (hydration, cross-provider, federated-ready, materialization, background-sync) |
1078
+
1079
+ **Total Tests:** 1177 (926 unit + 127 integration + 124 E2E)
1080
+
1081
+ **Note:** Provider sync tests require `bd` CLI and skip gracefully if unavailable. Run with `RUN_FULL_AGENT_TESTS=1`.