claude-code-swarm 0.3.6 → 0.3.8

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 (1357) hide show
  1. package/.claude/settings.json +1 -0
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/CLAUDE.md +44 -1
  5. package/package.json +7 -4
  6. package/scripts/bootstrap-bg.mjs +31 -0
  7. package/scripts/bootstrap.mjs +30 -4
  8. package/scripts/dev-link.mjs +179 -0
  9. package/scripts/map-hook.mjs +30 -44
  10. package/scripts/map-sidecar.mjs +156 -27
  11. package/src/__tests__/bootstrap.test.mjs +227 -237
  12. package/src/__tests__/config.test.mjs +275 -1
  13. package/src/__tests__/e2e-reconnection.test.mjs +537 -0
  14. package/src/__tests__/helpers.mjs +6 -0
  15. package/src/__tests__/index.test.mjs +4 -0
  16. package/src/__tests__/log.test.mjs +510 -0
  17. package/src/__tests__/map-connection.test.mjs +7 -0
  18. package/src/__tests__/paths.test.mjs +1 -1
  19. package/src/bootstrap.mjs +129 -94
  20. package/src/config.mjs +36 -9
  21. package/src/index.mjs +4 -0
  22. package/src/log.mjs +152 -0
  23. package/src/map-connection.mjs +40 -9
  24. package/src/mesh-connection.mjs +8 -12
  25. package/src/opentasks-client.mjs +5 -2
  26. package/src/paths.mjs +11 -8
  27. package/src/roles.mjs +4 -3
  28. package/src/sessionlog.mjs +38 -2
  29. package/src/sidecar-client.mjs +13 -2
  30. package/src/sidecar-server.mjs +16 -26
  31. package/src/skilltree-client.mjs +4 -1
  32. package/src/swarmkit-resolver.mjs +17 -1
  33. package/src/template.mjs +4 -1
  34. package/vitest.config.mjs +4 -0
  35. package/references/agent-inbox/CLAUDE.md +0 -151
  36. package/references/agent-inbox/README.md +0 -238
  37. package/references/agent-inbox/docs/CLAUDE-CODE-SWARM-PROPOSAL.md +0 -137
  38. package/references/agent-inbox/docs/DESIGN.md +0 -1156
  39. package/references/agent-inbox/hooks/inbox-hook.mjs +0 -119
  40. package/references/agent-inbox/hooks/register-hook.mjs +0 -69
  41. package/references/agent-inbox/package-lock.json +0 -3347
  42. package/references/agent-inbox/package.json +0 -58
  43. package/references/agent-inbox/rules/agent-inbox.md +0 -78
  44. package/references/agent-inbox/src/federation/address.ts +0 -61
  45. package/references/agent-inbox/src/federation/connection-manager.ts +0 -573
  46. package/references/agent-inbox/src/federation/delivery-queue.ts +0 -222
  47. package/references/agent-inbox/src/federation/index.ts +0 -6
  48. package/references/agent-inbox/src/federation/routing-engine.ts +0 -188
  49. package/references/agent-inbox/src/federation/trust.ts +0 -71
  50. package/references/agent-inbox/src/index.ts +0 -404
  51. package/references/agent-inbox/src/ipc/ipc-server.ts +0 -265
  52. package/references/agent-inbox/src/jsonrpc/mail-server.ts +0 -382
  53. package/references/agent-inbox/src/map/map-client.ts +0 -414
  54. package/references/agent-inbox/src/mcp/mcp-proxy.ts +0 -326
  55. package/references/agent-inbox/src/mcp/mcp-server.ts +0 -272
  56. package/references/agent-inbox/src/mesh/delivery-bridge.ts +0 -110
  57. package/references/agent-inbox/src/mesh/mesh-connector.ts +0 -41
  58. package/references/agent-inbox/src/mesh/mesh-transport.ts +0 -157
  59. package/references/agent-inbox/src/mesh/type-mapper.ts +0 -239
  60. package/references/agent-inbox/src/push/notifier.ts +0 -233
  61. package/references/agent-inbox/src/registry/warm-registry.ts +0 -255
  62. package/references/agent-inbox/src/router/message-router.ts +0 -175
  63. package/references/agent-inbox/src/storage/interface.ts +0 -48
  64. package/references/agent-inbox/src/storage/memory.ts +0 -145
  65. package/references/agent-inbox/src/storage/sqlite.ts +0 -671
  66. package/references/agent-inbox/src/traceability/traceability.ts +0 -183
  67. package/references/agent-inbox/src/types.ts +0 -329
  68. package/references/agent-inbox/test/federation/address.test.ts +0 -101
  69. package/references/agent-inbox/test/federation/connection-manager.test.ts +0 -546
  70. package/references/agent-inbox/test/federation/delivery-queue.test.ts +0 -159
  71. package/references/agent-inbox/test/federation/integration.test.ts +0 -857
  72. package/references/agent-inbox/test/federation/routing-engine.test.ts +0 -117
  73. package/references/agent-inbox/test/federation/sdk-integration.test.ts +0 -744
  74. package/references/agent-inbox/test/federation/trust.test.ts +0 -89
  75. package/references/agent-inbox/test/ipc-jsonrpc.test.ts +0 -113
  76. package/references/agent-inbox/test/ipc-new-commands.test.ts +0 -200
  77. package/references/agent-inbox/test/ipc-server.test.ts +0 -197
  78. package/references/agent-inbox/test/mail-server.test.ts +0 -285
  79. package/references/agent-inbox/test/map-client.test.ts +0 -408
  80. package/references/agent-inbox/test/mcp-proxy.test.ts +0 -191
  81. package/references/agent-inbox/test/mesh/delivery-bridge.test.ts +0 -178
  82. package/references/agent-inbox/test/mesh/e2e-mesh.test.ts +0 -527
  83. package/references/agent-inbox/test/mesh/e2e-real-meshpeer.test.ts +0 -629
  84. package/references/agent-inbox/test/mesh/federation-mesh.test.ts +0 -269
  85. package/references/agent-inbox/test/mesh/mesh-connector.test.ts +0 -66
  86. package/references/agent-inbox/test/mesh/mesh-transport.test.ts +0 -191
  87. package/references/agent-inbox/test/mesh/meshpeer-integration.test.ts +0 -442
  88. package/references/agent-inbox/test/mesh/mock-mesh.ts +0 -125
  89. package/references/agent-inbox/test/mesh/mock-meshpeer.ts +0 -266
  90. package/references/agent-inbox/test/mesh/type-mapper.test.ts +0 -226
  91. package/references/agent-inbox/test/message-router.test.ts +0 -184
  92. package/references/agent-inbox/test/push-notifier.test.ts +0 -139
  93. package/references/agent-inbox/test/registry/warm-registry.test.ts +0 -171
  94. package/references/agent-inbox/test/sqlite-prefix.test.ts +0 -192
  95. package/references/agent-inbox/test/sqlite-storage.test.ts +0 -243
  96. package/references/agent-inbox/test/storage.test.ts +0 -196
  97. package/references/agent-inbox/test/traceability.test.ts +0 -123
  98. package/references/agent-inbox/test/wake.test.ts +0 -330
  99. package/references/agent-inbox/tsconfig.json +0 -20
  100. package/references/agent-inbox/tsup.config.ts +0 -10
  101. package/references/agent-inbox/vitest.config.ts +0 -8
  102. package/references/minimem/.claude/settings.json +0 -7
  103. package/references/minimem/.sudocode/issues.jsonl +0 -18
  104. package/references/minimem/.sudocode/specs.jsonl +0 -1
  105. package/references/minimem/CLAUDE.md +0 -329
  106. package/references/minimem/README.md +0 -565
  107. package/references/minimem/claude-plugin/.claude-plugin/plugin.json +0 -10
  108. package/references/minimem/claude-plugin/.mcp.json +0 -7
  109. package/references/minimem/claude-plugin/README.md +0 -158
  110. package/references/minimem/claude-plugin/commands/recall.md +0 -47
  111. package/references/minimem/claude-plugin/commands/remember.md +0 -41
  112. package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +0 -272
  113. package/references/minimem/claude-plugin/hooks/hooks.json +0 -27
  114. package/references/minimem/claude-plugin/hooks/session-end.sh +0 -86
  115. package/references/minimem/claude-plugin/hooks/session-start.sh +0 -85
  116. package/references/minimem/claude-plugin/skills/memory/SKILL.md +0 -108
  117. package/references/minimem/media/banner.png +0 -0
  118. package/references/minimem/package-lock.json +0 -5373
  119. package/references/minimem/package.json +0 -76
  120. package/references/minimem/scripts/postbuild.js +0 -49
  121. package/references/minimem/src/__tests__/edge-cases.test.ts +0 -371
  122. package/references/minimem/src/__tests__/errors.test.ts +0 -265
  123. package/references/minimem/src/__tests__/helpers.ts +0 -199
  124. package/references/minimem/src/__tests__/internal.test.ts +0 -407
  125. package/references/minimem/src/__tests__/knowledge-frontmatter.test.ts +0 -148
  126. package/references/minimem/src/__tests__/knowledge.test.ts +0 -148
  127. package/references/minimem/src/__tests__/minimem.integration.test.ts +0 -1127
  128. package/references/minimem/src/__tests__/session.test.ts +0 -190
  129. package/references/minimem/src/cli/__tests__/commands.test.ts +0 -760
  130. package/references/minimem/src/cli/__tests__/contained-layout.test.ts +0 -286
  131. package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +0 -141
  132. package/references/minimem/src/cli/commands/append.ts +0 -76
  133. package/references/minimem/src/cli/commands/config.ts +0 -262
  134. package/references/minimem/src/cli/commands/conflicts.ts +0 -415
  135. package/references/minimem/src/cli/commands/daemon.ts +0 -169
  136. package/references/minimem/src/cli/commands/index.ts +0 -12
  137. package/references/minimem/src/cli/commands/init.ts +0 -166
  138. package/references/minimem/src/cli/commands/mcp.ts +0 -221
  139. package/references/minimem/src/cli/commands/push-pull.ts +0 -213
  140. package/references/minimem/src/cli/commands/search.ts +0 -223
  141. package/references/minimem/src/cli/commands/status.ts +0 -84
  142. package/references/minimem/src/cli/commands/store.ts +0 -189
  143. package/references/minimem/src/cli/commands/sync-init.ts +0 -290
  144. package/references/minimem/src/cli/commands/sync.ts +0 -70
  145. package/references/minimem/src/cli/commands/upsert.ts +0 -197
  146. package/references/minimem/src/cli/config.ts +0 -611
  147. package/references/minimem/src/cli/index.ts +0 -299
  148. package/references/minimem/src/cli/shared.ts +0 -189
  149. package/references/minimem/src/cli/sync/__tests__/central.test.ts +0 -152
  150. package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +0 -209
  151. package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +0 -118
  152. package/references/minimem/src/cli/sync/__tests__/detection.test.ts +0 -207
  153. package/references/minimem/src/cli/sync/__tests__/integration.test.ts +0 -476
  154. package/references/minimem/src/cli/sync/__tests__/registry.test.ts +0 -363
  155. package/references/minimem/src/cli/sync/__tests__/state.test.ts +0 -255
  156. package/references/minimem/src/cli/sync/__tests__/validation.test.ts +0 -193
  157. package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +0 -178
  158. package/references/minimem/src/cli/sync/central.ts +0 -292
  159. package/references/minimem/src/cli/sync/conflicts.ts +0 -205
  160. package/references/minimem/src/cli/sync/daemon.ts +0 -407
  161. package/references/minimem/src/cli/sync/detection.ts +0 -138
  162. package/references/minimem/src/cli/sync/index.ts +0 -107
  163. package/references/minimem/src/cli/sync/operations.ts +0 -373
  164. package/references/minimem/src/cli/sync/registry.ts +0 -279
  165. package/references/minimem/src/cli/sync/state.ts +0 -358
  166. package/references/minimem/src/cli/sync/validation.ts +0 -206
  167. package/references/minimem/src/cli/sync/watcher.ts +0 -237
  168. package/references/minimem/src/cli/version.ts +0 -34
  169. package/references/minimem/src/core/index.ts +0 -9
  170. package/references/minimem/src/core/indexer.ts +0 -628
  171. package/references/minimem/src/core/searcher.ts +0 -221
  172. package/references/minimem/src/db/schema.ts +0 -183
  173. package/references/minimem/src/db/sqlite-vec.ts +0 -24
  174. package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +0 -431
  175. package/references/minimem/src/embeddings/batch-gemini.ts +0 -392
  176. package/references/minimem/src/embeddings/batch-openai.ts +0 -409
  177. package/references/minimem/src/embeddings/embeddings.ts +0 -434
  178. package/references/minimem/src/index.ts +0 -132
  179. package/references/minimem/src/internal.ts +0 -299
  180. package/references/minimem/src/minimem.ts +0 -1291
  181. package/references/minimem/src/search/__tests__/hybrid.test.ts +0 -247
  182. package/references/minimem/src/search/graph.ts +0 -234
  183. package/references/minimem/src/search/hybrid.ts +0 -151
  184. package/references/minimem/src/search/search.ts +0 -256
  185. package/references/minimem/src/server/__tests__/mcp.test.ts +0 -347
  186. package/references/minimem/src/server/__tests__/tools.test.ts +0 -364
  187. package/references/minimem/src/server/mcp.ts +0 -326
  188. package/references/minimem/src/server/tools.ts +0 -720
  189. package/references/minimem/src/session.ts +0 -460
  190. package/references/minimem/src/store/__tests__/manifest.test.ts +0 -177
  191. package/references/minimem/src/store/__tests__/materialize.test.ts +0 -52
  192. package/references/minimem/src/store/__tests__/store-graph.test.ts +0 -228
  193. package/references/minimem/src/store/index.ts +0 -27
  194. package/references/minimem/src/store/manifest.ts +0 -203
  195. package/references/minimem/src/store/materialize.ts +0 -185
  196. package/references/minimem/src/store/store-graph.ts +0 -252
  197. package/references/minimem/tsconfig.json +0 -19
  198. package/references/minimem/tsup.config.ts +0 -26
  199. package/references/minimem/vitest.config.ts +0 -29
  200. package/references/multi-agent-protocol/.sudocode/issues.jsonl +0 -120
  201. package/references/multi-agent-protocol/.sudocode/specs.jsonl +0 -15
  202. package/references/multi-agent-protocol/LICENSE +0 -21
  203. package/references/multi-agent-protocol/README.md +0 -113
  204. package/references/multi-agent-protocol/docs/00-design-specification.md +0 -496
  205. package/references/multi-agent-protocol/docs/01-open-questions.md +0 -1050
  206. package/references/multi-agent-protocol/docs/02-wire-protocol.md +0 -296
  207. package/references/multi-agent-protocol/docs/03-streaming-semantics.md +0 -252
  208. package/references/multi-agent-protocol/docs/04-error-handling.md +0 -231
  209. package/references/multi-agent-protocol/docs/05-connection-model.md +0 -244
  210. package/references/multi-agent-protocol/docs/06-visibility-permissions.md +0 -243
  211. package/references/multi-agent-protocol/docs/07-federation.md +0 -335
  212. package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +0 -253
  213. package/references/multi-agent-protocol/docs/09-authentication.md +0 -748
  214. package/references/multi-agent-protocol/docs/10-environment-awareness.md +0 -242
  215. package/references/multi-agent-protocol/docs/10-mail-protocol.md +0 -553
  216. package/references/multi-agent-protocol/docs/11-anp-inspired-improvements.md +0 -1079
  217. package/references/multi-agent-protocol/docs/11-trajectory-protocol.md +0 -292
  218. package/references/multi-agent-protocol/docs/12-anp-implementation-plan.md +0 -641
  219. package/references/multi-agent-protocol/docs/agent-iam-integration.md +0 -877
  220. package/references/multi-agent-protocol/docs/agentic-mesh-integration-draft.md +0 -459
  221. package/references/multi-agent-protocol/docs/git-transport-draft.md +0 -251
  222. package/references/multi-agent-protocol/docs-site/Gemfile +0 -22
  223. package/references/multi-agent-protocol/docs-site/README.md +0 -82
  224. package/references/multi-agent-protocol/docs-site/_config.yml +0 -91
  225. package/references/multi-agent-protocol/docs-site/_includes/head_custom.html +0 -20
  226. package/references/multi-agent-protocol/docs-site/_sass/color_schemes/map.scss +0 -42
  227. package/references/multi-agent-protocol/docs-site/_sass/custom/custom.scss +0 -34
  228. package/references/multi-agent-protocol/docs-site/examples/full-integration.md +0 -510
  229. package/references/multi-agent-protocol/docs-site/examples/index.md +0 -138
  230. package/references/multi-agent-protocol/docs-site/examples/simple-chat.md +0 -282
  231. package/references/multi-agent-protocol/docs-site/examples/task-queue.md +0 -399
  232. package/references/multi-agent-protocol/docs-site/getting-started/index.md +0 -98
  233. package/references/multi-agent-protocol/docs-site/getting-started/installation.md +0 -219
  234. package/references/multi-agent-protocol/docs-site/getting-started/overview.md +0 -172
  235. package/references/multi-agent-protocol/docs-site/getting-started/quickstart.md +0 -237
  236. package/references/multi-agent-protocol/docs-site/index.md +0 -136
  237. package/references/multi-agent-protocol/docs-site/protocol/authentication.md +0 -391
  238. package/references/multi-agent-protocol/docs-site/protocol/connection-model.md +0 -376
  239. package/references/multi-agent-protocol/docs-site/protocol/design.md +0 -284
  240. package/references/multi-agent-protocol/docs-site/protocol/error-handling.md +0 -312
  241. package/references/multi-agent-protocol/docs-site/protocol/federation.md +0 -449
  242. package/references/multi-agent-protocol/docs-site/protocol/index.md +0 -129
  243. package/references/multi-agent-protocol/docs-site/protocol/permissions.md +0 -398
  244. package/references/multi-agent-protocol/docs-site/protocol/streaming.md +0 -353
  245. package/references/multi-agent-protocol/docs-site/protocol/wire-protocol.md +0 -369
  246. package/references/multi-agent-protocol/docs-site/sdk/api/agent.md +0 -357
  247. package/references/multi-agent-protocol/docs-site/sdk/api/client.md +0 -380
  248. package/references/multi-agent-protocol/docs-site/sdk/api/index.md +0 -62
  249. package/references/multi-agent-protocol/docs-site/sdk/api/server.md +0 -453
  250. package/references/multi-agent-protocol/docs-site/sdk/api/types.md +0 -468
  251. package/references/multi-agent-protocol/docs-site/sdk/guides/agent.md +0 -375
  252. package/references/multi-agent-protocol/docs-site/sdk/guides/authentication.md +0 -405
  253. package/references/multi-agent-protocol/docs-site/sdk/guides/client.md +0 -352
  254. package/references/multi-agent-protocol/docs-site/sdk/guides/index.md +0 -89
  255. package/references/multi-agent-protocol/docs-site/sdk/guides/server.md +0 -360
  256. package/references/multi-agent-protocol/docs-site/sdk/guides/testing.md +0 -446
  257. package/references/multi-agent-protocol/docs-site/sdk/guides/transports.md +0 -363
  258. package/references/multi-agent-protocol/docs-site/sdk/index.md +0 -206
  259. package/references/multi-agent-protocol/package-lock.json +0 -4230
  260. package/references/multi-agent-protocol/package.json +0 -56
  261. package/references/multi-agent-protocol/schema/meta.json +0 -584
  262. package/references/multi-agent-protocol/schema/schema.json +0 -3067
  263. package/references/openhive/.claude/settings.json +0 -6
  264. package/references/openhive/.dockerignore +0 -54
  265. package/references/openhive/.github/workflows/docker.yml +0 -52
  266. package/references/openhive/.sudocode/issues.jsonl +0 -24
  267. package/references/openhive/.sudocode/specs.jsonl +0 -4
  268. package/references/openhive/CLAUDE.md +0 -88
  269. package/references/openhive/Dockerfile +0 -105
  270. package/references/openhive/README.md +0 -745
  271. package/references/openhive/bin/openhive.js +0 -6
  272. package/references/openhive/cloudbuild.yaml +0 -80
  273. package/references/openhive/deploy/cloud-run.sh +0 -106
  274. package/references/openhive/deploy/openhive.env.example +0 -80
  275. package/references/openhive/deploy/openhive.service +0 -91
  276. package/references/openhive/docker-compose.yml +0 -67
  277. package/references/openhive/docker-entrypoint.sh +0 -117
  278. package/references/openhive/docs/API_MIGRATION.md +0 -176
  279. package/references/openhive/docs/DEPLOYMENT.md +0 -847
  280. package/references/openhive/docs/DESIGN_v1.md +0 -489
  281. package/references/openhive/docs/DESIGN_v2.md +0 -564
  282. package/references/openhive/docs/HEADSCALE_HOSTING_SPEC.md +0 -513
  283. package/references/openhive/docs/HIVE_SYNC_DESIGN.md +0 -2362
  284. package/references/openhive/docs/HIVE_SYNC_IMPLEMENTATION_PLAN.md +0 -1169
  285. package/references/openhive/docs/HOSTING.md +0 -601
  286. package/references/openhive/docs/IMPLEMENTATION_PLAN.md +0 -428
  287. package/references/openhive/docs/LOCAL_SETUP.md +0 -506
  288. package/references/openhive/docs/MACRO_AGENT_ATLAS_EXTENSION.md +0 -351
  289. package/references/openhive/docs/MEMORY_BANK_SYNC_SPEC.md +0 -909
  290. package/references/openhive/docs/PLAN_v1.md +0 -471
  291. package/references/openhive/docs/PLAN_v2.md +0 -623
  292. package/references/openhive/docs/WEBSOCKET.md +0 -267
  293. package/references/openhive/docs/openswarm-bootstrap-token-spec.md +0 -240
  294. package/references/openhive/ecosystem.config.cjs +0 -76
  295. package/references/openhive/fly.toml +0 -63
  296. package/references/openhive/package-lock.json +0 -17640
  297. package/references/openhive/package.json +0 -128
  298. package/references/openhive/packages/openhive-types/package-lock.json +0 -1473
  299. package/references/openhive/packages/openhive-types/package.json +0 -42
  300. package/references/openhive/packages/openhive-types/src/index.ts +0 -36
  301. package/references/openhive/packages/openhive-types/src/map-coordination.ts +0 -92
  302. package/references/openhive/packages/openhive-types/src/map-session-sync.ts +0 -50
  303. package/references/openhive/packages/openhive-types/src/map-sync.ts +0 -68
  304. package/references/openhive/packages/openhive-types/tsconfig.json +0 -15
  305. package/references/openhive/packages/openhive-types/tsconfig.tsbuildinfo +0 -1
  306. package/references/openhive/packages/openhive-types/tsup.config.ts +0 -12
  307. package/references/openhive/railway.json +0 -13
  308. package/references/openhive/railway.toml +0 -24
  309. package/references/openhive/render.yaml +0 -51
  310. package/references/openhive/src/__tests__/auth.test.ts +0 -148
  311. package/references/openhive/src/__tests__/bridge/credentials.test.ts +0 -65
  312. package/references/openhive/src/__tests__/bridge/dal.test.ts +0 -279
  313. package/references/openhive/src/__tests__/bridge/inbound.test.ts +0 -349
  314. package/references/openhive/src/__tests__/bridge/manager.test.ts +0 -419
  315. package/references/openhive/src/__tests__/bridge/mentions.test.ts +0 -83
  316. package/references/openhive/src/__tests__/bridge/outbound.test.ts +0 -209
  317. package/references/openhive/src/__tests__/bridge/slack-adapter.test.ts +0 -276
  318. package/references/openhive/src/__tests__/cli.test.ts +0 -342
  319. package/references/openhive/src/__tests__/config.test.ts +0 -205
  320. package/references/openhive/src/__tests__/coordination/coordination.test.ts +0 -1072
  321. package/references/openhive/src/__tests__/coordination/cross-instance.test.ts +0 -540
  322. package/references/openhive/src/__tests__/coordination/e2e.test.ts +0 -780
  323. package/references/openhive/src/__tests__/data-dir.test.ts +0 -332
  324. package/references/openhive/src/__tests__/db.test.ts +0 -258
  325. package/references/openhive/src/__tests__/discovery.test.ts +0 -288
  326. package/references/openhive/src/__tests__/events/dal.test.ts +0 -371
  327. package/references/openhive/src/__tests__/events/dispatch.test.ts +0 -202
  328. package/references/openhive/src/__tests__/events/e2e.test.ts +0 -528
  329. package/references/openhive/src/__tests__/events/normalizers.test.ts +0 -263
  330. package/references/openhive/src/__tests__/events/router.test.ts +0 -314
  331. package/references/openhive/src/__tests__/events/routes.test.ts +0 -407
  332. package/references/openhive/src/__tests__/follows.test.ts +0 -328
  333. package/references/openhive/src/__tests__/helpers/test-dirs.ts +0 -44
  334. package/references/openhive/src/__tests__/ingest-keys.test.ts +0 -925
  335. package/references/openhive/src/__tests__/map/sync-client-content.test.ts +0 -288
  336. package/references/openhive/src/__tests__/map/sync-client.test.ts +0 -500
  337. package/references/openhive/src/__tests__/map/sync-listener.test.ts +0 -504
  338. package/references/openhive/src/__tests__/middleware/hostname-guard.test.ts +0 -73
  339. package/references/openhive/src/__tests__/migrations.test.ts +0 -260
  340. package/references/openhive/src/__tests__/opentasks/client.test.ts +0 -497
  341. package/references/openhive/src/__tests__/opentasks/discovery.test.ts +0 -283
  342. package/references/openhive/src/__tests__/opentasks/e2e.test.ts +0 -767
  343. package/references/openhive/src/__tests__/routes/agents.test.ts +0 -417
  344. package/references/openhive/src/__tests__/routes/opentasks-content.test.ts +0 -493
  345. package/references/openhive/src/__tests__/routes/resource-content.test.ts +0 -1741
  346. package/references/openhive/src/__tests__/sessions/adapters.test.ts +0 -524
  347. package/references/openhive/src/__tests__/sessions/routes.test.ts +0 -1053
  348. package/references/openhive/src/__tests__/sessions/storage.test.ts +0 -545
  349. package/references/openhive/src/__tests__/sessions/trajectory-checkpoints.test.ts +0 -349
  350. package/references/openhive/src/__tests__/sessions/trajectory-routes.test.ts +0 -290
  351. package/references/openhive/src/__tests__/swarm/config.test.ts +0 -125
  352. package/references/openhive/src/__tests__/swarm/credentials.test.ts +0 -254
  353. package/references/openhive/src/__tests__/swarm/dal.test.ts +0 -290
  354. package/references/openhive/src/__tests__/swarm/e2e.test.ts +0 -827
  355. package/references/openhive/src/__tests__/swarm/fixtures/exit-immediately.js +0 -3
  356. package/references/openhive/src/__tests__/swarm/fixtures/map-server.js +0 -147
  357. package/references/openhive/src/__tests__/swarm/fixtures/sleep-server.js +0 -52
  358. package/references/openhive/src/__tests__/swarm/local-provider.test.ts +0 -279
  359. package/references/openhive/src/__tests__/swarm/manager.test.ts +0 -305
  360. package/references/openhive/src/__tests__/swarm/routes.test.ts +0 -396
  361. package/references/openhive/src/__tests__/swarm/workspace.test.ts +0 -257
  362. package/references/openhive/src/__tests__/swarmhub/client.test.ts +0 -324
  363. package/references/openhive/src/__tests__/swarmhub/config.test.ts +0 -213
  364. package/references/openhive/src/__tests__/swarmhub/connector.test.ts +0 -581
  365. package/references/openhive/src/__tests__/swarmhub/routes.test.ts +0 -639
  366. package/references/openhive/src/__tests__/swarmhub/slack-client.test.ts +0 -164
  367. package/references/openhive/src/__tests__/swarmhub/slack-connector.test.ts +0 -164
  368. package/references/openhive/src/__tests__/swarmhub/slack-routes.test.ts +0 -373
  369. package/references/openhive/src/__tests__/swarmhub/webhook-handler.test.ts +0 -295
  370. package/references/openhive/src/__tests__/sync/resource-sync.test.ts +0 -1418
  371. package/references/openhive/src/__tests__/sync/sync.test.ts +0 -800
  372. package/references/openhive/src/api/index.ts +0 -65
  373. package/references/openhive/src/api/middleware/auth.ts +0 -227
  374. package/references/openhive/src/api/middleware/hostname-guard.ts +0 -38
  375. package/references/openhive/src/api/routes/admin.ts +0 -366
  376. package/references/openhive/src/api/routes/agents.ts +0 -223
  377. package/references/openhive/src/api/routes/auth.ts +0 -164
  378. package/references/openhive/src/api/routes/bridges.ts +0 -384
  379. package/references/openhive/src/api/routes/comments.ts +0 -294
  380. package/references/openhive/src/api/routes/coordination.ts +0 -312
  381. package/references/openhive/src/api/routes/events.ts +0 -158
  382. package/references/openhive/src/api/routes/federation.ts +0 -367
  383. package/references/openhive/src/api/routes/feed.ts +0 -212
  384. package/references/openhive/src/api/routes/hives.ts +0 -264
  385. package/references/openhive/src/api/routes/map.ts +0 -674
  386. package/references/openhive/src/api/routes/memory-banks.ts +0 -971
  387. package/references/openhive/src/api/routes/posts.ts +0 -342
  388. package/references/openhive/src/api/routes/resource-content.ts +0 -727
  389. package/references/openhive/src/api/routes/resources.ts +0 -1013
  390. package/references/openhive/src/api/routes/search.ts +0 -45
  391. package/references/openhive/src/api/routes/sessions.ts +0 -1187
  392. package/references/openhive/src/api/routes/swarm-hosting.ts +0 -313
  393. package/references/openhive/src/api/routes/sync-protocol.ts +0 -168
  394. package/references/openhive/src/api/routes/sync.ts +0 -279
  395. package/references/openhive/src/api/routes/uploads.ts +0 -174
  396. package/references/openhive/src/api/routes/webhooks.ts +0 -603
  397. package/references/openhive/src/api/schemas/agents.ts +0 -26
  398. package/references/openhive/src/api/schemas/comments.ts +0 -22
  399. package/references/openhive/src/api/schemas/hives.ts +0 -33
  400. package/references/openhive/src/api/schemas/posts.ts +0 -37
  401. package/references/openhive/src/api/schemas/sync.ts +0 -56
  402. package/references/openhive/src/auth/index.ts +0 -2
  403. package/references/openhive/src/auth/jwks.ts +0 -58
  404. package/references/openhive/src/bridge/adapters/slack.ts +0 -306
  405. package/references/openhive/src/bridge/credentials.ts +0 -72
  406. package/references/openhive/src/bridge/inbound.ts +0 -288
  407. package/references/openhive/src/bridge/index.ts +0 -42
  408. package/references/openhive/src/bridge/manager.ts +0 -425
  409. package/references/openhive/src/bridge/mentions.ts +0 -42
  410. package/references/openhive/src/bridge/outbound.ts +0 -103
  411. package/references/openhive/src/bridge/schema.ts +0 -82
  412. package/references/openhive/src/bridge/types.ts +0 -238
  413. package/references/openhive/src/cli/network.ts +0 -480
  414. package/references/openhive/src/cli.ts +0 -620
  415. package/references/openhive/src/config.ts +0 -611
  416. package/references/openhive/src/coordination/index.ts +0 -43
  417. package/references/openhive/src/coordination/listener.ts +0 -92
  418. package/references/openhive/src/coordination/schema.ts +0 -79
  419. package/references/openhive/src/coordination/service.ts +0 -233
  420. package/references/openhive/src/coordination/types.ts +0 -177
  421. package/references/openhive/src/data-dir.ts +0 -105
  422. package/references/openhive/src/db/adapters/index.ts +0 -21
  423. package/references/openhive/src/db/adapters/postgres.ts +0 -310
  424. package/references/openhive/src/db/adapters/sqlite.ts +0 -56
  425. package/references/openhive/src/db/adapters/types.ts +0 -65
  426. package/references/openhive/src/db/dal/agents.ts +0 -430
  427. package/references/openhive/src/db/dal/bridge.ts +0 -336
  428. package/references/openhive/src/db/dal/comments.ts +0 -213
  429. package/references/openhive/src/db/dal/coordination.ts +0 -361
  430. package/references/openhive/src/db/dal/events.ts +0 -381
  431. package/references/openhive/src/db/dal/follows.ts +0 -96
  432. package/references/openhive/src/db/dal/hives.ts +0 -198
  433. package/references/openhive/src/db/dal/ingest-keys.ts +0 -176
  434. package/references/openhive/src/db/dal/instances.ts +0 -196
  435. package/references/openhive/src/db/dal/invites.ts +0 -123
  436. package/references/openhive/src/db/dal/map.ts +0 -750
  437. package/references/openhive/src/db/dal/posts.ts +0 -274
  438. package/references/openhive/src/db/dal/remote-agents.ts +0 -56
  439. package/references/openhive/src/db/dal/search.ts +0 -238
  440. package/references/openhive/src/db/dal/sync-events.ts +0 -160
  441. package/references/openhive/src/db/dal/sync-groups.ts +0 -100
  442. package/references/openhive/src/db/dal/sync-peer-configs.ts +0 -216
  443. package/references/openhive/src/db/dal/sync-peers.ts +0 -145
  444. package/references/openhive/src/db/dal/syncable-resources.ts +0 -888
  445. package/references/openhive/src/db/dal/trajectory-checkpoints.ts +0 -291
  446. package/references/openhive/src/db/dal/uploads.ts +0 -124
  447. package/references/openhive/src/db/dal/votes.ts +0 -124
  448. package/references/openhive/src/db/index.ts +0 -293
  449. package/references/openhive/src/db/providers/index.ts +0 -75
  450. package/references/openhive/src/db/providers/postgres.ts +0 -529
  451. package/references/openhive/src/db/providers/sqlite.ts +0 -1383
  452. package/references/openhive/src/db/providers/turso.ts +0 -1360
  453. package/references/openhive/src/db/providers/types.ts +0 -516
  454. package/references/openhive/src/db/schema.ts +0 -641
  455. package/references/openhive/src/discovery/index.ts +0 -403
  456. package/references/openhive/src/events/dispatch.ts +0 -106
  457. package/references/openhive/src/events/index.ts +0 -17
  458. package/references/openhive/src/events/normalizers/github.ts +0 -133
  459. package/references/openhive/src/events/normalizers/index.ts +0 -62
  460. package/references/openhive/src/events/normalizers/slack.ts +0 -50
  461. package/references/openhive/src/events/router.ts +0 -156
  462. package/references/openhive/src/events/schema.ts +0 -66
  463. package/references/openhive/src/events/types.ts +0 -130
  464. package/references/openhive/src/federation/index.ts +0 -1
  465. package/references/openhive/src/federation/service.ts +0 -776
  466. package/references/openhive/src/headscale/client.ts +0 -256
  467. package/references/openhive/src/headscale/config.ts +0 -212
  468. package/references/openhive/src/headscale/index.ts +0 -23
  469. package/references/openhive/src/headscale/manager.ts +0 -249
  470. package/references/openhive/src/headscale/sync.ts +0 -272
  471. package/references/openhive/src/headscale/types.ts +0 -231
  472. package/references/openhive/src/index.ts +0 -225
  473. package/references/openhive/src/map/client-entry.ts +0 -26
  474. package/references/openhive/src/map/index.ts +0 -76
  475. package/references/openhive/src/map/schema.ts +0 -119
  476. package/references/openhive/src/map/service.ts +0 -323
  477. package/references/openhive/src/map/sync-client.ts +0 -696
  478. package/references/openhive/src/map/sync-listener.ts +0 -409
  479. package/references/openhive/src/map/types.ts +0 -290
  480. package/references/openhive/src/network/factory.ts +0 -118
  481. package/references/openhive/src/network/headscale-provider.ts +0 -437
  482. package/references/openhive/src/network/index.ts +0 -43
  483. package/references/openhive/src/network/tailscale-client.ts +0 -289
  484. package/references/openhive/src/network/tailscale-provider.ts +0 -287
  485. package/references/openhive/src/network/types.ts +0 -178
  486. package/references/openhive/src/opentasks-client/client.ts +0 -374
  487. package/references/openhive/src/opentasks-client/index.ts +0 -7
  488. package/references/openhive/src/realtime/index.ts +0 -282
  489. package/references/openhive/src/server.ts +0 -1069
  490. package/references/openhive/src/services/email.ts +0 -177
  491. package/references/openhive/src/services/sitemap.ts +0 -135
  492. package/references/openhive/src/sessions/adapters/claude.ts +0 -466
  493. package/references/openhive/src/sessions/adapters/codex.ts +0 -265
  494. package/references/openhive/src/sessions/adapters/index.ts +0 -263
  495. package/references/openhive/src/sessions/adapters/raw.ts +0 -144
  496. package/references/openhive/src/sessions/adapters/types.ts +0 -83
  497. package/references/openhive/src/sessions/index.ts +0 -50
  498. package/references/openhive/src/sessions/storage/adapters/gcs.ts +0 -277
  499. package/references/openhive/src/sessions/storage/adapters/local.ts +0 -240
  500. package/references/openhive/src/sessions/storage/adapters/s3.ts +0 -321
  501. package/references/openhive/src/sessions/storage/index.ts +0 -231
  502. package/references/openhive/src/sessions/storage/types.ts +0 -189
  503. package/references/openhive/src/sessions/types.ts +0 -415
  504. package/references/openhive/src/shared/types/index.ts +0 -45
  505. package/references/openhive/src/shared/types/map-coordination.ts +0 -92
  506. package/references/openhive/src/shared/types/map-session-sync.ts +0 -170
  507. package/references/openhive/src/shared/types/map-sync.ts +0 -68
  508. package/references/openhive/src/skill.ts +0 -203
  509. package/references/openhive/src/storage/adapters/local.ts +0 -169
  510. package/references/openhive/src/storage/adapters/s3.ts +0 -195
  511. package/references/openhive/src/storage/index.ts +0 -64
  512. package/references/openhive/src/storage/types.ts +0 -69
  513. package/references/openhive/src/swarm/credentials.ts +0 -98
  514. package/references/openhive/src/swarm/dal.ts +0 -206
  515. package/references/openhive/src/swarm/index.ts +0 -28
  516. package/references/openhive/src/swarm/manager.ts +0 -917
  517. package/references/openhive/src/swarm/providers/local.ts +0 -338
  518. package/references/openhive/src/swarm/providers/sandboxed-local.ts +0 -478
  519. package/references/openhive/src/swarm/providers/workspace.ts +0 -52
  520. package/references/openhive/src/swarm/schema.ts +0 -43
  521. package/references/openhive/src/swarm/types.ts +0 -333
  522. package/references/openhive/src/swarmhub/client.ts +0 -279
  523. package/references/openhive/src/swarmhub/connector.ts +0 -463
  524. package/references/openhive/src/swarmhub/index.ts +0 -43
  525. package/references/openhive/src/swarmhub/routes.ts +0 -296
  526. package/references/openhive/src/swarmhub/types.ts +0 -213
  527. package/references/openhive/src/swarmhub/webhook-handler.ts +0 -126
  528. package/references/openhive/src/sync/compaction.ts +0 -193
  529. package/references/openhive/src/sync/coordination-hooks.ts +0 -154
  530. package/references/openhive/src/sync/crypto.ts +0 -79
  531. package/references/openhive/src/sync/gossip.ts +0 -136
  532. package/references/openhive/src/sync/hooks.ts +0 -202
  533. package/references/openhive/src/sync/materializer-repo.ts +0 -256
  534. package/references/openhive/src/sync/materializer.ts +0 -682
  535. package/references/openhive/src/sync/middleware.ts +0 -140
  536. package/references/openhive/src/sync/peer-resolver.ts +0 -157
  537. package/references/openhive/src/sync/resource-hooks.ts +0 -161
  538. package/references/openhive/src/sync/schema.ts +0 -158
  539. package/references/openhive/src/sync/service.ts +0 -990
  540. package/references/openhive/src/sync/types.ts +0 -369
  541. package/references/openhive/src/terminal/index.ts +0 -4
  542. package/references/openhive/src/terminal/pty-manager.ts +0 -337
  543. package/references/openhive/src/terminal/resolve-tui.ts +0 -44
  544. package/references/openhive/src/terminal/terminal-ws.ts +0 -251
  545. package/references/openhive/src/types.ts +0 -442
  546. package/references/openhive/src/utils/git-remote.ts +0 -329
  547. package/references/openhive/src/web/App.tsx +0 -77
  548. package/references/openhive/src/web/__tests__/components/dashboard/RecentActivity.test.tsx +0 -77
  549. package/references/openhive/src/web/__tests__/components/dashboard/StatsOverview.test.tsx +0 -62
  550. package/references/openhive/src/web/__tests__/components/dashboard/SwarmStatusSummary.test.tsx +0 -122
  551. package/references/openhive/src/web/__tests__/components/dashboard/SyncResourcesStatus.test.tsx +0 -104
  552. package/references/openhive/src/web/__tests__/components/layout/Sidebar.test.tsx +0 -110
  553. package/references/openhive/src/web/__tests__/components/swarm/StatusBadges.test.tsx +0 -65
  554. package/references/openhive/src/web/__tests__/components/terminal/query-responses.test.ts +0 -143
  555. package/references/openhive/src/web/__tests__/components/terminal/terminal-mouse.test.ts +0 -509
  556. package/references/openhive/src/web/__tests__/hooks/useEventsApi.test.ts +0 -378
  557. package/references/openhive/src/web/__tests__/pages/Dashboard.test.tsx +0 -57
  558. package/references/openhive/src/web/__tests__/pages/Events.test.tsx +0 -886
  559. package/references/openhive/src/web/__tests__/pages/Explore.test.tsx +0 -63
  560. package/references/openhive/src/web/__tests__/routing.test.tsx +0 -79
  561. package/references/openhive/src/web/__tests__/setup.ts +0 -37
  562. package/references/openhive/src/web/__tests__/stores/dashboard.test.ts +0 -49
  563. package/references/openhive/src/web/components/common/AgentBadge.tsx +0 -58
  564. package/references/openhive/src/web/components/common/Avatar.tsx +0 -78
  565. package/references/openhive/src/web/components/common/ErrorBoundary.tsx +0 -76
  566. package/references/openhive/src/web/components/common/Highlight.tsx +0 -79
  567. package/references/openhive/src/web/components/common/ImageUpload.tsx +0 -209
  568. package/references/openhive/src/web/components/common/LoadingSpinner.tsx +0 -37
  569. package/references/openhive/src/web/components/common/Logo.tsx +0 -21
  570. package/references/openhive/src/web/components/common/Markdown.tsx +0 -53
  571. package/references/openhive/src/web/components/common/ProtectedRoute.tsx +0 -18
  572. package/references/openhive/src/web/components/common/ThemeToggle.tsx +0 -38
  573. package/references/openhive/src/web/components/common/TimeAgo.tsx +0 -17
  574. package/references/openhive/src/web/components/common/Toast.tsx +0 -70
  575. package/references/openhive/src/web/components/common/VoteButtons.tsx +0 -100
  576. package/references/openhive/src/web/components/dashboard/RecentActivity.tsx +0 -100
  577. package/references/openhive/src/web/components/dashboard/StatsOverview.tsx +0 -40
  578. package/references/openhive/src/web/components/dashboard/SwarmStatusSummary.tsx +0 -89
  579. package/references/openhive/src/web/components/dashboard/SyncResourcesStatus.tsx +0 -81
  580. package/references/openhive/src/web/components/feed/FeedControls.tsx +0 -38
  581. package/references/openhive/src/web/components/feed/NewPostsIndicator.tsx +0 -75
  582. package/references/openhive/src/web/components/feed/PostCard.tsx +0 -129
  583. package/references/openhive/src/web/components/feed/PostList.tsx +0 -83
  584. package/references/openhive/src/web/components/layout/Footer.tsx +0 -5
  585. package/references/openhive/src/web/components/layout/Layout.tsx +0 -29
  586. package/references/openhive/src/web/components/layout/Sidebar.tsx +0 -348
  587. package/references/openhive/src/web/components/post/CommentForm.tsx +0 -59
  588. package/references/openhive/src/web/components/post/CommentTree.tsx +0 -145
  589. package/references/openhive/src/web/components/resources/MemoryBrowser.tsx +0 -208
  590. package/references/openhive/src/web/components/resources/OpenTasksSummary.tsx +0 -138
  591. package/references/openhive/src/web/components/resources/SkillBrowser.tsx +0 -284
  592. package/references/openhive/src/web/components/swarm/StatusBadges.tsx +0 -56
  593. package/references/openhive/src/web/components/terminal/TerminalPanel.tsx +0 -485
  594. package/references/openhive/src/web/components/terminal/index.ts +0 -2
  595. package/references/openhive/src/web/components/terminal/query-responses.ts +0 -70
  596. package/references/openhive/src/web/components/terminal/terminal-mouse.ts +0 -222
  597. package/references/openhive/src/web/hooks/useApi.ts +0 -740
  598. package/references/openhive/src/web/hooks/useDocumentTitle.ts +0 -49
  599. package/references/openhive/src/web/hooks/useInfiniteScroll.ts +0 -58
  600. package/references/openhive/src/web/hooks/useRealtimeUpdates.ts +0 -154
  601. package/references/openhive/src/web/hooks/useWebSocket.ts +0 -225
  602. package/references/openhive/src/web/index.html +0 -73
  603. package/references/openhive/src/web/lib/api.ts +0 -518
  604. package/references/openhive/src/web/main.tsx +0 -32
  605. package/references/openhive/src/web/pages/About.tsx +0 -131
  606. package/references/openhive/src/web/pages/Agent.tsx +0 -130
  607. package/references/openhive/src/web/pages/Agents.tsx +0 -69
  608. package/references/openhive/src/web/pages/AuthCallback.tsx +0 -75
  609. package/references/openhive/src/web/pages/Dashboard.tsx +0 -41
  610. package/references/openhive/src/web/pages/Events.tsx +0 -1025
  611. package/references/openhive/src/web/pages/Explore.tsx +0 -43
  612. package/references/openhive/src/web/pages/Hive.tsx +0 -134
  613. package/references/openhive/src/web/pages/Hives.tsx +0 -64
  614. package/references/openhive/src/web/pages/Home.tsx +0 -43
  615. package/references/openhive/src/web/pages/Login.tsx +0 -122
  616. package/references/openhive/src/web/pages/Post.tsx +0 -216
  617. package/references/openhive/src/web/pages/ResourceDetail.tsx +0 -426
  618. package/references/openhive/src/web/pages/Resources.tsx +0 -276
  619. package/references/openhive/src/web/pages/Search.tsx +0 -234
  620. package/references/openhive/src/web/pages/SessionDetail.tsx +0 -703
  621. package/references/openhive/src/web/pages/Sessions.tsx +0 -129
  622. package/references/openhive/src/web/pages/Settings.tsx +0 -826
  623. package/references/openhive/src/web/pages/SwarmCraft.tsx +0 -16
  624. package/references/openhive/src/web/pages/Swarms.tsx +0 -981
  625. package/references/openhive/src/web/pages/Terminal.tsx +0 -69
  626. package/references/openhive/src/web/postcss.config.js +0 -5
  627. package/references/openhive/src/web/public/favicon.svg +0 -11
  628. package/references/openhive/src/web/public/manifest.json +0 -21
  629. package/references/openhive/src/web/stores/auth.ts +0 -207
  630. package/references/openhive/src/web/stores/dashboard.ts +0 -23
  631. package/references/openhive/src/web/stores/realtime.ts +0 -90
  632. package/references/openhive/src/web/stores/theme.ts +0 -70
  633. package/references/openhive/src/web/stores/toast.ts +0 -63
  634. package/references/openhive/src/web/styles/globals.css +0 -503
  635. package/references/openhive/src/web/sw.ts +0 -228
  636. package/references/openhive/src/web/utils/serviceWorker.ts +0 -86
  637. package/references/openhive/src/web/vite.config.ts +0 -81
  638. package/references/openhive/tsconfig.json +0 -32
  639. package/references/openhive/tsup.config.ts +0 -17
  640. package/references/openhive/vitest.config.ts +0 -30
  641. package/references/openhive/vitest.web.config.ts +0 -20
  642. package/references/opentasks/.claude/settings.json +0 -6
  643. package/references/opentasks/.claude-plugin/plugin.json +0 -20
  644. package/references/opentasks/.lintstagedrc.json +0 -4
  645. package/references/opentasks/.prettierignore +0 -4
  646. package/references/opentasks/.prettierrc.json +0 -11
  647. package/references/opentasks/.sudocode/issues.jsonl +0 -89
  648. package/references/opentasks/.sudocode/specs.jsonl +0 -24
  649. package/references/opentasks/README.md +0 -401
  650. package/references/opentasks/docs/ARCHITECTURE.md +0 -841
  651. package/references/opentasks/docs/DESIGN.md +0 -689
  652. package/references/opentasks/docs/INTERFACE.md +0 -670
  653. package/references/opentasks/docs/PERSISTENCE.md +0 -1638
  654. package/references/opentasks/docs/PROVIDERS.md +0 -1412
  655. package/references/opentasks/docs/SCHEMA.md +0 -815
  656. package/references/opentasks/docs/TESTING.md +0 -1081
  657. package/references/opentasks/eslint.config.js +0 -58
  658. package/references/opentasks/package-lock.json +0 -4348
  659. package/references/opentasks/package.json +0 -81
  660. package/references/opentasks/skills/opentasks/SKILL.md +0 -139
  661. package/references/opentasks/skills/opentasks/dependency-management.md +0 -119
  662. package/references/opentasks/skills/opentasks/feedback-and-review.md +0 -100
  663. package/references/opentasks/skills/opentasks/linking-external-data.md +0 -103
  664. package/references/opentasks/skills/opentasks/spec-to-implementation.md +0 -98
  665. package/references/opentasks/src/__tests__/cli-tools.test.ts +0 -800
  666. package/references/opentasks/src/__tests__/cli.test.ts +0 -97
  667. package/references/opentasks/src/__tests__/p1-p3-gaps.test.ts +0 -635
  668. package/references/opentasks/src/cli.ts +0 -929
  669. package/references/opentasks/src/client/__tests__/client-crud.test.ts +0 -546
  670. package/references/opentasks/src/client/__tests__/client.test.ts +0 -658
  671. package/references/opentasks/src/client/__tests__/socket-discovery.test.ts +0 -122
  672. package/references/opentasks/src/client/client.ts +0 -560
  673. package/references/opentasks/src/client/index.ts +0 -32
  674. package/references/opentasks/src/config/__tests__/defaults.test.ts +0 -66
  675. package/references/opentasks/src/config/__tests__/env.test.ts +0 -155
  676. package/references/opentasks/src/config/__tests__/index.test.ts +0 -148
  677. package/references/opentasks/src/config/__tests__/loader.test.ts +0 -173
  678. package/references/opentasks/src/config/__tests__/merge.test.ts +0 -121
  679. package/references/opentasks/src/config/__tests__/schema.test.ts +0 -446
  680. package/references/opentasks/src/config/defaults.ts +0 -18
  681. package/references/opentasks/src/config/env.ts +0 -170
  682. package/references/opentasks/src/config/errors.ts +0 -33
  683. package/references/opentasks/src/config/index.ts +0 -63
  684. package/references/opentasks/src/config/loader.ts +0 -90
  685. package/references/opentasks/src/config/merge.ts +0 -64
  686. package/references/opentasks/src/config/schema.ts +0 -767
  687. package/references/opentasks/src/core/__tests__/conditional-redirects.test.ts +0 -116
  688. package/references/opentasks/src/core/__tests__/connections.test.ts +0 -194
  689. package/references/opentasks/src/core/__tests__/hash.test.ts +0 -161
  690. package/references/opentasks/src/core/__tests__/id.test.ts +0 -175
  691. package/references/opentasks/src/core/__tests__/init.test.ts +0 -115
  692. package/references/opentasks/src/core/__tests__/location.test.ts +0 -94
  693. package/references/opentasks/src/core/__tests__/merge-driver.test.ts +0 -300
  694. package/references/opentasks/src/core/__tests__/redirects.test.ts +0 -169
  695. package/references/opentasks/src/core/__tests__/resolve-location-target.test.ts +0 -468
  696. package/references/opentasks/src/core/__tests__/uri.test.ts +0 -228
  697. package/references/opentasks/src/core/__tests__/worktree.test.ts +0 -160
  698. package/references/opentasks/src/core/conditional-redirects.ts +0 -100
  699. package/references/opentasks/src/core/connections.ts +0 -217
  700. package/references/opentasks/src/core/discover.ts +0 -195
  701. package/references/opentasks/src/core/hash.ts +0 -74
  702. package/references/opentasks/src/core/id.ts +0 -174
  703. package/references/opentasks/src/core/index.ts +0 -108
  704. package/references/opentasks/src/core/init.ts +0 -66
  705. package/references/opentasks/src/core/location.ts +0 -139
  706. package/references/opentasks/src/core/merge-driver.ts +0 -280
  707. package/references/opentasks/src/core/redirects.ts +0 -182
  708. package/references/opentasks/src/core/uri.ts +0 -270
  709. package/references/opentasks/src/core/worktree.ts +0 -504
  710. package/references/opentasks/src/daemon/__tests__/e2e-live-agent.test.ts +0 -344
  711. package/references/opentasks/src/daemon/__tests__/e2e-session-pipeline.test.ts +0 -447
  712. package/references/opentasks/src/daemon/__tests__/e2e-watch.test.ts +0 -279
  713. package/references/opentasks/src/daemon/__tests__/entire-linker.test.ts +0 -1074
  714. package/references/opentasks/src/daemon/__tests__/entire-watcher.test.ts +0 -659
  715. package/references/opentasks/src/daemon/__tests__/flush.test.ts +0 -306
  716. package/references/opentasks/src/daemon/__tests__/integration.test.ts +0 -338
  717. package/references/opentasks/src/daemon/__tests__/ipc.test.ts +0 -406
  718. package/references/opentasks/src/daemon/__tests__/lifecycle.test.ts +0 -378
  719. package/references/opentasks/src/daemon/__tests__/lock.test.ts +0 -240
  720. package/references/opentasks/src/daemon/__tests__/methods/graph.test.ts +0 -372
  721. package/references/opentasks/src/daemon/__tests__/methods/provider.test.ts +0 -238
  722. package/references/opentasks/src/daemon/__tests__/methods/tools.test.ts +0 -690
  723. package/references/opentasks/src/daemon/__tests__/multi-location.test.ts +0 -945
  724. package/references/opentasks/src/daemon/__tests__/registry.test.ts +0 -268
  725. package/references/opentasks/src/daemon/__tests__/watcher.test.ts +0 -329
  726. package/references/opentasks/src/daemon/entire-linker.ts +0 -615
  727. package/references/opentasks/src/daemon/entire-watcher.ts +0 -415
  728. package/references/opentasks/src/daemon/factory.ts +0 -133
  729. package/references/opentasks/src/daemon/flush.ts +0 -168
  730. package/references/opentasks/src/daemon/index.ts +0 -120
  731. package/references/opentasks/src/daemon/ipc.ts +0 -491
  732. package/references/opentasks/src/daemon/lifecycle.ts +0 -1106
  733. package/references/opentasks/src/daemon/location-state.ts +0 -481
  734. package/references/opentasks/src/daemon/lock.ts +0 -168
  735. package/references/opentasks/src/daemon/methods/__tests__/graph.test.ts +0 -359
  736. package/references/opentasks/src/daemon/methods/__tests__/provider.test.ts +0 -227
  737. package/references/opentasks/src/daemon/methods/__tests__/tools.test.ts +0 -360
  738. package/references/opentasks/src/daemon/methods/__tests__/watch.test.ts +0 -656
  739. package/references/opentasks/src/daemon/methods/archive.ts +0 -193
  740. package/references/opentasks/src/daemon/methods/graph.ts +0 -274
  741. package/references/opentasks/src/daemon/methods/lifecycle.ts +0 -112
  742. package/references/opentasks/src/daemon/methods/location.ts +0 -118
  743. package/references/opentasks/src/daemon/methods/provider.ts +0 -159
  744. package/references/opentasks/src/daemon/methods/tools.ts +0 -221
  745. package/references/opentasks/src/daemon/methods/watch.ts +0 -206
  746. package/references/opentasks/src/daemon/registry.ts +0 -244
  747. package/references/opentasks/src/daemon/types.ts +0 -163
  748. package/references/opentasks/src/daemon/watcher.ts +0 -248
  749. package/references/opentasks/src/entire/__tests__/agent-registry.test.ts +0 -127
  750. package/references/opentasks/src/entire/__tests__/claude-generator.test.ts +0 -49
  751. package/references/opentasks/src/entire/__tests__/commit-msg.test.ts +0 -89
  752. package/references/opentasks/src/entire/__tests__/cursor-agent.test.ts +0 -224
  753. package/references/opentasks/src/entire/__tests__/flush-sentinel.test.ts +0 -93
  754. package/references/opentasks/src/entire/__tests__/gemini-agent.test.ts +0 -375
  755. package/references/opentasks/src/entire/__tests__/git-hooks.test.ts +0 -85
  756. package/references/opentasks/src/entire/__tests__/hook-managers.test.ts +0 -128
  757. package/references/opentasks/src/entire/__tests__/opencode-agent.test.ts +0 -329
  758. package/references/opentasks/src/entire/__tests__/redaction.test.ts +0 -143
  759. package/references/opentasks/src/entire/__tests__/session-store.test.ts +0 -83
  760. package/references/opentasks/src/entire/__tests__/summarize.test.ts +0 -346
  761. package/references/opentasks/src/entire/__tests__/transcript-timestamp.test.ts +0 -127
  762. package/references/opentasks/src/entire/__tests__/types.test.ts +0 -112
  763. package/references/opentasks/src/entire/__tests__/utils.test.ts +0 -296
  764. package/references/opentasks/src/entire/__tests__/validation.test.ts +0 -103
  765. package/references/opentasks/src/entire/__tests__/worktree.test.ts +0 -66
  766. package/references/opentasks/src/entire/agent/registry.ts +0 -143
  767. package/references/opentasks/src/entire/agent/session-types.ts +0 -117
  768. package/references/opentasks/src/entire/agent/types.ts +0 -217
  769. package/references/opentasks/src/entire/commands/clean.ts +0 -134
  770. package/references/opentasks/src/entire/commands/disable.ts +0 -85
  771. package/references/opentasks/src/entire/commands/doctor.ts +0 -152
  772. package/references/opentasks/src/entire/commands/enable.ts +0 -149
  773. package/references/opentasks/src/entire/commands/explain.ts +0 -271
  774. package/references/opentasks/src/entire/commands/reset.ts +0 -105
  775. package/references/opentasks/src/entire/commands/resume.ts +0 -194
  776. package/references/opentasks/src/entire/commands/rewind.ts +0 -204
  777. package/references/opentasks/src/entire/commands/status.ts +0 -150
  778. package/references/opentasks/src/entire/config.ts +0 -153
  779. package/references/opentasks/src/entire/git-operations.ts +0 -485
  780. package/references/opentasks/src/entire/hooks/git-hooks.ts +0 -171
  781. package/references/opentasks/src/entire/hooks/lifecycle.ts +0 -224
  782. package/references/opentasks/src/entire/index.ts +0 -644
  783. package/references/opentasks/src/entire/security/redaction.ts +0 -263
  784. package/references/opentasks/src/entire/session/state-machine.ts +0 -463
  785. package/references/opentasks/src/entire/store/checkpoint-store.ts +0 -489
  786. package/references/opentasks/src/entire/store/native-store.ts +0 -178
  787. package/references/opentasks/src/entire/store/provider-types.ts +0 -99
  788. package/references/opentasks/src/entire/store/session-store.ts +0 -233
  789. package/references/opentasks/src/entire/strategy/attribution.ts +0 -300
  790. package/references/opentasks/src/entire/strategy/common.ts +0 -222
  791. package/references/opentasks/src/entire/strategy/content-overlap.ts +0 -242
  792. package/references/opentasks/src/entire/strategy/manual-commit.ts +0 -1008
  793. package/references/opentasks/src/entire/strategy/types.ts +0 -285
  794. package/references/opentasks/src/entire/summarize/claude-generator.ts +0 -119
  795. package/references/opentasks/src/entire/summarize/summarize.ts +0 -432
  796. package/references/opentasks/src/entire/types.ts +0 -408
  797. package/references/opentasks/src/entire/utils/chunk-files.ts +0 -49
  798. package/references/opentasks/src/entire/utils/commit-message.ts +0 -65
  799. package/references/opentasks/src/entire/utils/detect-agent.ts +0 -36
  800. package/references/opentasks/src/entire/utils/hook-managers.ts +0 -118
  801. package/references/opentasks/src/entire/utils/ide-tags.ts +0 -32
  802. package/references/opentasks/src/entire/utils/paths.ts +0 -59
  803. package/references/opentasks/src/entire/utils/preview-rewind.ts +0 -86
  804. package/references/opentasks/src/entire/utils/rewind-conflict.ts +0 -121
  805. package/references/opentasks/src/entire/utils/shadow-branch.ts +0 -113
  806. package/references/opentasks/src/entire/utils/string-utils.ts +0 -46
  807. package/references/opentasks/src/entire/utils/todo-extract.ts +0 -193
  808. package/references/opentasks/src/entire/utils/trailers.ts +0 -190
  809. package/references/opentasks/src/entire/utils/transcript-parse.ts +0 -177
  810. package/references/opentasks/src/entire/utils/transcript-timestamp.ts +0 -61
  811. package/references/opentasks/src/entire/utils/tree-ops.ts +0 -227
  812. package/references/opentasks/src/entire/utils/tty.ts +0 -72
  813. package/references/opentasks/src/entire/utils/validation.ts +0 -67
  814. package/references/opentasks/src/entire/utils/worktree.ts +0 -58
  815. package/references/opentasks/src/graph/EdgeTypeRegistry.ts +0 -330
  816. package/references/opentasks/src/graph/FederatedGraph.ts +0 -796
  817. package/references/opentasks/src/graph/GraphologyAdapter.ts +0 -374
  818. package/references/opentasks/src/graph/HydratingFederatedGraph.ts +0 -533
  819. package/references/opentasks/src/graph/__tests__/EdgeTypeRegistry.test.ts +0 -263
  820. package/references/opentasks/src/graph/__tests__/FederatedGraph.test.ts +0 -821
  821. package/references/opentasks/src/graph/__tests__/GraphologyAdapter.test.ts +0 -408
  822. package/references/opentasks/src/graph/__tests__/HydratingFederatedGraph.test.ts +0 -735
  823. package/references/opentasks/src/graph/__tests__/debounce.test.ts +0 -276
  824. package/references/opentasks/src/graph/__tests__/e2e-store-roundtrip.test.ts +0 -349
  825. package/references/opentasks/src/graph/__tests__/edge-cases.test.ts +0 -595
  826. package/references/opentasks/src/graph/__tests__/expansion.test.ts +0 -304
  827. package/references/opentasks/src/graph/__tests__/git-graph-syncer.test.ts +0 -572
  828. package/references/opentasks/src/graph/__tests__/provider-store.test.ts +0 -1091
  829. package/references/opentasks/src/graph/__tests__/query.test.ts +0 -991
  830. package/references/opentasks/src/graph/__tests__/store.test.ts +0 -998
  831. package/references/opentasks/src/graph/__tests__/sync.test.ts +0 -178
  832. package/references/opentasks/src/graph/__tests__/validation.test.ts +0 -657
  833. package/references/opentasks/src/graph/coordination.ts +0 -454
  834. package/references/opentasks/src/graph/debounce.ts +0 -154
  835. package/references/opentasks/src/graph/expansion.ts +0 -364
  836. package/references/opentasks/src/graph/git-graph-syncer.ts +0 -321
  837. package/references/opentasks/src/graph/history.ts +0 -438
  838. package/references/opentasks/src/graph/index.ts +0 -145
  839. package/references/opentasks/src/graph/provider-store.ts +0 -1077
  840. package/references/opentasks/src/graph/query.ts +0 -651
  841. package/references/opentasks/src/graph/store.ts +0 -861
  842. package/references/opentasks/src/graph/sync.ts +0 -116
  843. package/references/opentasks/src/graph/types.ts +0 -420
  844. package/references/opentasks/src/graph/validation.ts +0 -520
  845. package/references/opentasks/src/index.ts +0 -270
  846. package/references/opentasks/src/materialization/CLAUDE.md +0 -88
  847. package/references/opentasks/src/materialization/README.md +0 -187
  848. package/references/opentasks/src/materialization/__tests__/archive-methods.test.ts +0 -194
  849. package/references/opentasks/src/materialization/__tests__/archiver.test.ts +0 -528
  850. package/references/opentasks/src/materialization/__tests__/config.test.ts +0 -123
  851. package/references/opentasks/src/materialization/__tests__/git-remote-store.test.ts +0 -533
  852. package/references/opentasks/src/materialization/__tests__/graph-id.test.ts +0 -82
  853. package/references/opentasks/src/materialization/__tests__/http-remote-store.test.ts +0 -263
  854. package/references/opentasks/src/materialization/__tests__/materialize-before-archive.test.ts +0 -246
  855. package/references/opentasks/src/materialization/__tests__/remote-store-factory.test.ts +0 -152
  856. package/references/opentasks/src/materialization/__tests__/snapshot.test.ts +0 -209
  857. package/references/opentasks/src/materialization/archiver.ts +0 -318
  858. package/references/opentasks/src/materialization/git-archive-store.ts +0 -568
  859. package/references/opentasks/src/materialization/git-remote-store.ts +0 -551
  860. package/references/opentasks/src/materialization/graph-id.ts +0 -173
  861. package/references/opentasks/src/materialization/http-remote-store.ts +0 -190
  862. package/references/opentasks/src/materialization/index.ts +0 -62
  863. package/references/opentasks/src/materialization/remote-store-factory.ts +0 -55
  864. package/references/opentasks/src/materialization/snapshot.ts +0 -230
  865. package/references/opentasks/src/materialization/types.ts +0 -410
  866. package/references/opentasks/src/providers/__tests__/beads.test.ts +0 -752
  867. package/references/opentasks/src/providers/__tests__/claude-tasks.test.ts +0 -485
  868. package/references/opentasks/src/providers/__tests__/entire-e2e.test.ts +0 -692
  869. package/references/opentasks/src/providers/__tests__/entire-sessionlog-e2e.test.ts +0 -1113
  870. package/references/opentasks/src/providers/__tests__/entire.test.ts +0 -1016
  871. package/references/opentasks/src/providers/__tests__/from-config.test.ts +0 -183
  872. package/references/opentasks/src/providers/__tests__/global.test.ts +0 -515
  873. package/references/opentasks/src/providers/__tests__/materialization.test.ts +0 -567
  874. package/references/opentasks/src/providers/__tests__/native.test.ts +0 -693
  875. package/references/opentasks/src/providers/__tests__/registry.test.ts +0 -232
  876. package/references/opentasks/src/providers/beads.ts +0 -1155
  877. package/references/opentasks/src/providers/claude-tasks.ts +0 -402
  878. package/references/opentasks/src/providers/entire.ts +0 -608
  879. package/references/opentasks/src/providers/from-config.ts +0 -210
  880. package/references/opentasks/src/providers/global.ts +0 -460
  881. package/references/opentasks/src/providers/index.ts +0 -147
  882. package/references/opentasks/src/providers/location.ts +0 -237
  883. package/references/opentasks/src/providers/materialization.ts +0 -346
  884. package/references/opentasks/src/providers/native.ts +0 -725
  885. package/references/opentasks/src/providers/registry.ts +0 -114
  886. package/references/opentasks/src/providers/sudocode.ts +0 -1292
  887. package/references/opentasks/src/providers/sync.ts +0 -485
  888. package/references/opentasks/src/providers/traits/RelationshipQueryable.ts +0 -169
  889. package/references/opentasks/src/providers/traits/TaskManageable.ts +0 -211
  890. package/references/opentasks/src/providers/traits/Watchable.ts +0 -260
  891. package/references/opentasks/src/providers/traits/__tests__/RelationshipQueryable.test.ts +0 -217
  892. package/references/opentasks/src/providers/traits/__tests__/TaskManageable.test.ts +0 -241
  893. package/references/opentasks/src/providers/traits/index.ts +0 -42
  894. package/references/opentasks/src/providers/types.ts +0 -439
  895. package/references/opentasks/src/schema/__tests__/validation.test.ts +0 -283
  896. package/references/opentasks/src/schema/base.ts +0 -88
  897. package/references/opentasks/src/schema/edges.ts +0 -78
  898. package/references/opentasks/src/schema/index.ts +0 -37
  899. package/references/opentasks/src/schema/nodes.ts +0 -119
  900. package/references/opentasks/src/schema/storage.ts +0 -130
  901. package/references/opentasks/src/schema/validation.ts +0 -209
  902. package/references/opentasks/src/storage/__tests__/atomic-write.test.ts +0 -227
  903. package/references/opentasks/src/storage/__tests__/file-lock.test.ts +0 -120
  904. package/references/opentasks/src/storage/__tests__/jsonl.test.ts +0 -267
  905. package/references/opentasks/src/storage/__tests__/locked-writer.test.ts +0 -134
  906. package/references/opentasks/src/storage/__tests__/sqlite.test.ts +0 -572
  907. package/references/opentasks/src/storage/atomic-write.ts +0 -86
  908. package/references/opentasks/src/storage/file-lock.ts +0 -215
  909. package/references/opentasks/src/storage/index.ts +0 -24
  910. package/references/opentasks/src/storage/interface.ts +0 -289
  911. package/references/opentasks/src/storage/jsonl.ts +0 -264
  912. package/references/opentasks/src/storage/locked-writer.ts +0 -140
  913. package/references/opentasks/src/storage/sqlite-schema.ts +0 -177
  914. package/references/opentasks/src/storage/sqlite.ts +0 -791
  915. package/references/opentasks/src/tools/__tests__/annotate.test.ts +0 -381
  916. package/references/opentasks/src/tools/__tests__/link.test.ts +0 -299
  917. package/references/opentasks/src/tools/__tests__/query.test.ts +0 -350
  918. package/references/opentasks/src/tools/__tests__/task.test.ts +0 -218
  919. package/references/opentasks/src/tools/annotate.ts +0 -277
  920. package/references/opentasks/src/tools/index.ts +0 -57
  921. package/references/opentasks/src/tools/link.ts +0 -163
  922. package/references/opentasks/src/tools/query.ts +0 -468
  923. package/references/opentasks/src/tools/task.ts +0 -213
  924. package/references/opentasks/src/tools/types.ts +0 -451
  925. package/references/opentasks/src/tracking/__tests__/claude-tool-categorizer.test.ts +0 -223
  926. package/references/opentasks/src/tracking/__tests__/transcript-extractor.test.ts +0 -262
  927. package/references/opentasks/src/tracking/claude-tool-categorizer.ts +0 -155
  928. package/references/opentasks/src/tracking/index.ts +0 -32
  929. package/references/opentasks/src/tracking/skill-tracker.ts +0 -322
  930. package/references/opentasks/src/tracking/transcript-extractor.ts +0 -225
  931. package/references/opentasks/tests/e2e/helpers/assertions.ts +0 -211
  932. package/references/opentasks/tests/e2e/helpers/beads-helpers.ts +0 -487
  933. package/references/opentasks/tests/e2e/helpers/fixtures.ts +0 -236
  934. package/references/opentasks/tests/e2e/helpers/index.ts +0 -122
  935. package/references/opentasks/tests/e2e/helpers/sudocode-helpers.ts +0 -341
  936. package/references/opentasks/tests/e2e/helpers/system-setup.ts +0 -504
  937. package/references/opentasks/tests/e2e/helpers/test-agent.ts +0 -504
  938. package/references/opentasks/tests/e2e/infrastructure.e2e.test.ts +0 -521
  939. package/references/opentasks/tests/e2e/skill-tracking.e2e.test.ts +0 -625
  940. package/references/opentasks/tests/e2e/workflows/feedback-loop.e2e.test.ts +0 -279
  941. package/references/opentasks/tests/e2e/workflows/multi-agent.e2e.test.ts +0 -304
  942. package/references/opentasks/tests/e2e/workflows/provider-sync/background-sync.e2e.test.ts +0 -292
  943. package/references/opentasks/tests/e2e/workflows/provider-sync/beads-provider-compat.e2e.test.ts +0 -249
  944. package/references/opentasks/tests/e2e/workflows/provider-sync/cross-provider-edges.e2e.test.ts +0 -407
  945. package/references/opentasks/tests/e2e/workflows/provider-sync/federated-ready.e2e.test.ts +0 -504
  946. package/references/opentasks/tests/e2e/workflows/provider-sync/hydration.e2e.test.ts +0 -340
  947. package/references/opentasks/tests/e2e/workflows/provider-sync/materialization.e2e.test.ts +0 -370
  948. package/references/opentasks/tests/e2e/workflows/provider-sync/sudocode-provider-compat.e2e.test.ts +0 -683
  949. package/references/opentasks/tests/e2e/workflows/provider-sync/watchable-beads.e2e.test.ts +0 -573
  950. package/references/opentasks/tests/e2e/workflows/spec-driven.e2e.test.ts +0 -244
  951. package/references/opentasks/tests/e2e/worktree-location.e2e.test.ts +0 -699
  952. package/references/opentasks/tests/integration/daemon/helpers.ts +0 -147
  953. package/references/opentasks/tests/integration/daemon/ipc.integration.test.ts +0 -343
  954. package/references/opentasks/tests/integration/daemon/lifecycle.integration.test.ts +0 -407
  955. package/references/opentasks/tests/integration/graph/federated-graph.integration.test.ts +0 -660
  956. package/references/opentasks/tests/integration/helpers/flags.ts +0 -28
  957. package/references/opentasks/tests/integration/helpers/index.ts +0 -47
  958. package/references/opentasks/tests/integration/helpers/process.ts +0 -133
  959. package/references/opentasks/tests/integration/helpers/temp.ts +0 -105
  960. package/references/opentasks/tests/integration/helpers/wait.ts +0 -133
  961. package/references/opentasks/tests/integration/helpers.test.ts +0 -120
  962. package/references/opentasks/tests/integration/providers/beads-task-manageable.integration.test.ts +0 -450
  963. package/references/opentasks/tests/integration/providers/beads.integration.test.ts +0 -388
  964. package/references/opentasks/tests/integration/providers/native-task-manageable.integration.test.ts +0 -667
  965. package/references/opentasks/tests/integration/providers/sudocode-task-manageable.integration.test.ts +0 -406
  966. package/references/opentasks/tests/integration/providers/sudocode.integration.test.ts +0 -342
  967. package/references/opentasks/tests/integration/storage/jsonl-durability.integration.test.ts +0 -390
  968. package/references/opentasks/tests/integration/storage/sqlite-durability.integration.test.ts +0 -527
  969. package/references/opentasks/tests/integration/worktree/redirect-location-resolution.integration.test.ts +0 -578
  970. package/references/opentasks/tests/integration/worktree/worktree-flow.integration.test.ts +0 -656
  971. package/references/opentasks/tsconfig.json +0 -18
  972. package/references/opentasks/vitest.config.ts +0 -27
  973. package/references/opentasks/vitest.e2e.config.ts +0 -35
  974. package/references/opentasks/vitest.integration.config.ts +0 -19
  975. package/references/openteams/.claude/settings.json +0 -6
  976. package/references/openteams/CLAUDE.md +0 -98
  977. package/references/openteams/README.md +0 -508
  978. package/references/openteams/SKILL.md +0 -198
  979. package/references/openteams/design.md +0 -250
  980. package/references/openteams/docs/visual-editor-design.md +0 -1225
  981. package/references/openteams/editor/index.html +0 -15
  982. package/references/openteams/editor/package.json +0 -39
  983. package/references/openteams/editor/src/App.tsx +0 -48
  984. package/references/openteams/editor/src/components/canvas/Canvas.tsx +0 -131
  985. package/references/openteams/editor/src/components/canvas/QuickAddMenu.tsx +0 -134
  986. package/references/openteams/editor/src/components/edges/PeerRouteEdge.tsx +0 -82
  987. package/references/openteams/editor/src/components/edges/SignalFlowEdge.tsx +0 -77
  988. package/references/openteams/editor/src/components/edges/SpawnEdge.tsx +0 -54
  989. package/references/openteams/editor/src/components/inspector/ChannelInspector.tsx +0 -158
  990. package/references/openteams/editor/src/components/inspector/EdgeInspector.tsx +0 -168
  991. package/references/openteams/editor/src/components/inspector/Inspector.tsx +0 -46
  992. package/references/openteams/editor/src/components/inspector/RoleInspector.tsx +0 -508
  993. package/references/openteams/editor/src/components/inspector/TeamInspector.tsx +0 -126
  994. package/references/openteams/editor/src/components/nodes/ChannelNode.tsx +0 -103
  995. package/references/openteams/editor/src/components/nodes/RoleNode.tsx +0 -157
  996. package/references/openteams/editor/src/components/nodes/node-styles.ts +0 -101
  997. package/references/openteams/editor/src/components/sidebar/Sidebar.tsx +0 -227
  998. package/references/openteams/editor/src/components/toolbar/ExportModal.tsx +0 -110
  999. package/references/openteams/editor/src/components/toolbar/ImportModal.tsx +0 -139
  1000. package/references/openteams/editor/src/components/toolbar/Toolbar.tsx +0 -190
  1001. package/references/openteams/editor/src/hooks/use-autosave.ts +0 -126
  1002. package/references/openteams/editor/src/hooks/use-keyboard.ts +0 -106
  1003. package/references/openteams/editor/src/hooks/use-validation.ts +0 -45
  1004. package/references/openteams/editor/src/index.css +0 -245
  1005. package/references/openteams/editor/src/lib/auto-layout.ts +0 -51
  1006. package/references/openteams/editor/src/lib/bundled-templates.ts +0 -42
  1007. package/references/openteams/editor/src/lib/compiler.ts +0 -75
  1008. package/references/openteams/editor/src/lib/load-template.ts +0 -103
  1009. package/references/openteams/editor/src/lib/rebuild-edges.ts +0 -104
  1010. package/references/openteams/editor/src/lib/serializer.ts +0 -408
  1011. package/references/openteams/editor/src/lib/signal-catalog.ts +0 -50
  1012. package/references/openteams/editor/src/lib/validator.ts +0 -172
  1013. package/references/openteams/editor/src/main.tsx +0 -10
  1014. package/references/openteams/editor/src/stores/canvas-store.ts +0 -80
  1015. package/references/openteams/editor/src/stores/config-store.ts +0 -243
  1016. package/references/openteams/editor/src/stores/history-store.ts +0 -143
  1017. package/references/openteams/editor/src/stores/theme-store.ts +0 -66
  1018. package/references/openteams/editor/src/stores/ui-store.ts +0 -46
  1019. package/references/openteams/editor/src/stores/validation-store.ts +0 -27
  1020. package/references/openteams/editor/src/types/editor.ts +0 -74
  1021. package/references/openteams/editor/src/vite-env.d.ts +0 -1
  1022. package/references/openteams/editor/tests/compiler.test.ts +0 -151
  1023. package/references/openteams/editor/tests/e2e-add-remove.test.ts +0 -386
  1024. package/references/openteams/editor/tests/e2e-components.test.tsx +0 -424
  1025. package/references/openteams/editor/tests/e2e-export-roundtrip.test.ts +0 -299
  1026. package/references/openteams/editor/tests/e2e-template-load.test.ts +0 -204
  1027. package/references/openteams/editor/tests/e2e-ui-store.test.ts +0 -126
  1028. package/references/openteams/editor/tests/e2e-undo-redo.test.ts +0 -203
  1029. package/references/openteams/editor/tests/e2e-validation.test.ts +0 -307
  1030. package/references/openteams/editor/tests/serializer.test.ts +0 -142
  1031. package/references/openteams/editor/tests/setup.ts +0 -52
  1032. package/references/openteams/editor/tests/validator.test.ts +0 -92
  1033. package/references/openteams/editor/tsconfig.json +0 -21
  1034. package/references/openteams/editor/tsconfig.tsbuildinfo +0 -1
  1035. package/references/openteams/editor/vite.config.ts +0 -28
  1036. package/references/openteams/examples/bmad-method/prompts/analyst/ROLE.md +0 -16
  1037. package/references/openteams/examples/bmad-method/prompts/analyst/SOUL.md +0 -5
  1038. package/references/openteams/examples/bmad-method/prompts/architect/ROLE.md +0 -24
  1039. package/references/openteams/examples/bmad-method/prompts/architect/SOUL.md +0 -5
  1040. package/references/openteams/examples/bmad-method/prompts/developer/ROLE.md +0 -25
  1041. package/references/openteams/examples/bmad-method/prompts/developer/SOUL.md +0 -5
  1042. package/references/openteams/examples/bmad-method/prompts/master/ROLE.md +0 -21
  1043. package/references/openteams/examples/bmad-method/prompts/master/SOUL.md +0 -5
  1044. package/references/openteams/examples/bmad-method/prompts/pm/ROLE.md +0 -20
  1045. package/references/openteams/examples/bmad-method/prompts/pm/SOUL.md +0 -5
  1046. package/references/openteams/examples/bmad-method/prompts/qa/ROLE.md +0 -17
  1047. package/references/openteams/examples/bmad-method/prompts/qa/SOUL.md +0 -5
  1048. package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/ROLE.md +0 -23
  1049. package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/SOUL.md +0 -5
  1050. package/references/openteams/examples/bmad-method/prompts/scrum-master/ROLE.md +0 -27
  1051. package/references/openteams/examples/bmad-method/prompts/scrum-master/SOUL.md +0 -5
  1052. package/references/openteams/examples/bmad-method/prompts/tech-writer/ROLE.md +0 -21
  1053. package/references/openteams/examples/bmad-method/prompts/tech-writer/SOUL.md +0 -5
  1054. package/references/openteams/examples/bmad-method/prompts/ux-designer/ROLE.md +0 -16
  1055. package/references/openteams/examples/bmad-method/prompts/ux-designer/SOUL.md +0 -5
  1056. package/references/openteams/examples/bmad-method/roles/analyst.yaml +0 -9
  1057. package/references/openteams/examples/bmad-method/roles/architect.yaml +0 -9
  1058. package/references/openteams/examples/bmad-method/roles/developer.yaml +0 -8
  1059. package/references/openteams/examples/bmad-method/roles/master.yaml +0 -8
  1060. package/references/openteams/examples/bmad-method/roles/pm.yaml +0 -9
  1061. package/references/openteams/examples/bmad-method/roles/qa.yaml +0 -8
  1062. package/references/openteams/examples/bmad-method/roles/quick-flow-dev.yaml +0 -8
  1063. package/references/openteams/examples/bmad-method/roles/scrum-master.yaml +0 -9
  1064. package/references/openteams/examples/bmad-method/roles/tech-writer.yaml +0 -8
  1065. package/references/openteams/examples/bmad-method/roles/ux-designer.yaml +0 -8
  1066. package/references/openteams/examples/bmad-method/team.yaml +0 -161
  1067. package/references/openteams/examples/bug-fix-pipeline/roles/fixer.yaml +0 -9
  1068. package/references/openteams/examples/bug-fix-pipeline/roles/investigator.yaml +0 -8
  1069. package/references/openteams/examples/bug-fix-pipeline/roles/pr-creator.yaml +0 -6
  1070. package/references/openteams/examples/bug-fix-pipeline/roles/triager.yaml +0 -7
  1071. package/references/openteams/examples/bug-fix-pipeline/roles/verifier.yaml +0 -8
  1072. package/references/openteams/examples/bug-fix-pipeline/team.yaml +0 -88
  1073. package/references/openteams/examples/codebase-migration/roles/assessor.yaml +0 -7
  1074. package/references/openteams/examples/codebase-migration/roles/migrator.yaml +0 -9
  1075. package/references/openteams/examples/codebase-migration/roles/planner.yaml +0 -5
  1076. package/references/openteams/examples/codebase-migration/roles/test-extractor.yaml +0 -9
  1077. package/references/openteams/examples/codebase-migration/roles/validator.yaml +0 -7
  1078. package/references/openteams/examples/codebase-migration/team.yaml +0 -81
  1079. package/references/openteams/examples/docs-sync/roles/adr-writer.yaml +0 -7
  1080. package/references/openteams/examples/docs-sync/roles/api-doc-writer.yaml +0 -7
  1081. package/references/openteams/examples/docs-sync/roles/change-detector.yaml +0 -7
  1082. package/references/openteams/examples/docs-sync/roles/doc-reviewer.yaml +0 -7
  1083. package/references/openteams/examples/docs-sync/roles/guide-writer.yaml +0 -7
  1084. package/references/openteams/examples/docs-sync/team.yaml +0 -84
  1085. package/references/openteams/examples/gsd/prompts/codebase-mapper/ROLE.md +0 -17
  1086. package/references/openteams/examples/gsd/prompts/codebase-mapper/SOUL.md +0 -5
  1087. package/references/openteams/examples/gsd/prompts/debugger/ROLE.md +0 -25
  1088. package/references/openteams/examples/gsd/prompts/debugger/SOUL.md +0 -5
  1089. package/references/openteams/examples/gsd/prompts/executor/ROLE.md +0 -34
  1090. package/references/openteams/examples/gsd/prompts/executor/SOUL.md +0 -5
  1091. package/references/openteams/examples/gsd/prompts/integration-checker/ROLE.md +0 -18
  1092. package/references/openteams/examples/gsd/prompts/integration-checker/SOUL.md +0 -3
  1093. package/references/openteams/examples/gsd/prompts/orchestrator/ROLE.md +0 -42
  1094. package/references/openteams/examples/gsd/prompts/orchestrator/SOUL.md +0 -5
  1095. package/references/openteams/examples/gsd/prompts/phase-researcher/ROLE.md +0 -15
  1096. package/references/openteams/examples/gsd/prompts/phase-researcher/SOUL.md +0 -3
  1097. package/references/openteams/examples/gsd/prompts/plan-checker/ROLE.md +0 -17
  1098. package/references/openteams/examples/gsd/prompts/plan-checker/SOUL.md +0 -3
  1099. package/references/openteams/examples/gsd/prompts/planner/ROLE.md +0 -28
  1100. package/references/openteams/examples/gsd/prompts/planner/SOUL.md +0 -5
  1101. package/references/openteams/examples/gsd/prompts/project-researcher/ROLE.md +0 -16
  1102. package/references/openteams/examples/gsd/prompts/project-researcher/SOUL.md +0 -3
  1103. package/references/openteams/examples/gsd/prompts/research-synthesizer/ROLE.md +0 -13
  1104. package/references/openteams/examples/gsd/prompts/research-synthesizer/SOUL.md +0 -3
  1105. package/references/openteams/examples/gsd/prompts/roadmapper/ROLE.md +0 -14
  1106. package/references/openteams/examples/gsd/prompts/roadmapper/SOUL.md +0 -3
  1107. package/references/openteams/examples/gsd/prompts/verifier/ROLE.md +0 -19
  1108. package/references/openteams/examples/gsd/prompts/verifier/SOUL.md +0 -5
  1109. package/references/openteams/examples/gsd/roles/codebase-mapper.yaml +0 -8
  1110. package/references/openteams/examples/gsd/roles/debugger.yaml +0 -8
  1111. package/references/openteams/examples/gsd/roles/executor.yaml +0 -8
  1112. package/references/openteams/examples/gsd/roles/integration-checker.yaml +0 -8
  1113. package/references/openteams/examples/gsd/roles/orchestrator.yaml +0 -9
  1114. package/references/openteams/examples/gsd/roles/phase-researcher.yaml +0 -7
  1115. package/references/openteams/examples/gsd/roles/plan-checker.yaml +0 -8
  1116. package/references/openteams/examples/gsd/roles/planner.yaml +0 -8
  1117. package/references/openteams/examples/gsd/roles/project-researcher.yaml +0 -8
  1118. package/references/openteams/examples/gsd/roles/research-synthesizer.yaml +0 -7
  1119. package/references/openteams/examples/gsd/roles/roadmapper.yaml +0 -7
  1120. package/references/openteams/examples/gsd/roles/verifier.yaml +0 -8
  1121. package/references/openteams/examples/gsd/team.yaml +0 -154
  1122. package/references/openteams/examples/incident-response/roles/communicator.yaml +0 -5
  1123. package/references/openteams/examples/incident-response/roles/fix-proposer.yaml +0 -7
  1124. package/references/openteams/examples/incident-response/roles/incident-triager.yaml +0 -8
  1125. package/references/openteams/examples/incident-response/roles/investigator.yaml +0 -8
  1126. package/references/openteams/examples/incident-response/team.yaml +0 -68
  1127. package/references/openteams/examples/pr-review-checks/roles/code-reviewer.yaml +0 -7
  1128. package/references/openteams/examples/pr-review-checks/roles/security-scanner.yaml +0 -6
  1129. package/references/openteams/examples/pr-review-checks/roles/summarizer.yaml +0 -6
  1130. package/references/openteams/examples/pr-review-checks/roles/test-checker.yaml +0 -8
  1131. package/references/openteams/examples/pr-review-checks/team.yaml +0 -64
  1132. package/references/openteams/examples/security-audit/roles/code-analyzer.yaml +0 -6
  1133. package/references/openteams/examples/security-audit/roles/dep-scanner.yaml +0 -7
  1134. package/references/openteams/examples/security-audit/roles/fixer.yaml +0 -9
  1135. package/references/openteams/examples/security-audit/roles/pr-creator.yaml +0 -6
  1136. package/references/openteams/examples/security-audit/roles/prioritizer.yaml +0 -6
  1137. package/references/openteams/examples/security-audit/roles/secrets-scanner.yaml +0 -6
  1138. package/references/openteams/examples/security-audit/roles/verifier.yaml +0 -8
  1139. package/references/openteams/examples/security-audit/team.yaml +0 -102
  1140. package/references/openteams/media/banner.png +0 -0
  1141. package/references/openteams/media/editor.png +0 -0
  1142. package/references/openteams/package-lock.json +0 -4804
  1143. package/references/openteams/package.json +0 -58
  1144. package/references/openteams/schema/role.schema.json +0 -147
  1145. package/references/openteams/schema/team.schema.json +0 -311
  1146. package/references/openteams/src/cli/editor.ts +0 -170
  1147. package/references/openteams/src/cli/generate.test.ts +0 -191
  1148. package/references/openteams/src/cli/generate.ts +0 -242
  1149. package/references/openteams/src/cli/prompt-utils.ts +0 -42
  1150. package/references/openteams/src/cli/template.test.ts +0 -365
  1151. package/references/openteams/src/cli/template.ts +0 -205
  1152. package/references/openteams/src/cli.ts +0 -22
  1153. package/references/openteams/src/generators/agent-prompt-generator.test.ts +0 -426
  1154. package/references/openteams/src/generators/agent-prompt-generator.ts +0 -556
  1155. package/references/openteams/src/generators/package-generator.test.ts +0 -129
  1156. package/references/openteams/src/generators/package-generator.ts +0 -110
  1157. package/references/openteams/src/generators/skill-generator.test.ts +0 -274
  1158. package/references/openteams/src/generators/skill-generator.ts +0 -394
  1159. package/references/openteams/src/index.ts +0 -84
  1160. package/references/openteams/src/template/builtins.test.ts +0 -74
  1161. package/references/openteams/src/template/builtins.ts +0 -108
  1162. package/references/openteams/src/template/install-service.test.ts +0 -452
  1163. package/references/openteams/src/template/install-service.ts +0 -332
  1164. package/references/openteams/src/template/loader.test.ts +0 -1696
  1165. package/references/openteams/src/template/loader.ts +0 -804
  1166. package/references/openteams/src/template/resolver.test.ts +0 -304
  1167. package/references/openteams/src/template/resolver.ts +0 -251
  1168. package/references/openteams/src/template/types.ts +0 -229
  1169. package/references/openteams/tsconfig.cjs.json +0 -7
  1170. package/references/openteams/tsconfig.esm.json +0 -8
  1171. package/references/openteams/tsconfig.json +0 -16
  1172. package/references/openteams/vitest.config.ts +0 -9
  1173. package/references/sessionlog/.husky/pre-commit +0 -1
  1174. package/references/sessionlog/.lintstagedrc.json +0 -4
  1175. package/references/sessionlog/.prettierignore +0 -4
  1176. package/references/sessionlog/.prettierrc.json +0 -11
  1177. package/references/sessionlog/LICENSE +0 -21
  1178. package/references/sessionlog/README.md +0 -453
  1179. package/references/sessionlog/eslint.config.js +0 -58
  1180. package/references/sessionlog/package-lock.json +0 -3672
  1181. package/references/sessionlog/package.json +0 -65
  1182. package/references/sessionlog/src/__tests__/agent-hooks.test.ts +0 -570
  1183. package/references/sessionlog/src/__tests__/agent-registry.test.ts +0 -127
  1184. package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +0 -225
  1185. package/references/sessionlog/src/__tests__/claude-generator.test.ts +0 -46
  1186. package/references/sessionlog/src/__tests__/commit-msg.test.ts +0 -86
  1187. package/references/sessionlog/src/__tests__/cursor-agent.test.ts +0 -224
  1188. package/references/sessionlog/src/__tests__/e2e-live.test.ts +0 -890
  1189. package/references/sessionlog/src/__tests__/event-log.test.ts +0 -183
  1190. package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +0 -105
  1191. package/references/sessionlog/src/__tests__/gemini-agent.test.ts +0 -375
  1192. package/references/sessionlog/src/__tests__/git-hooks.test.ts +0 -78
  1193. package/references/sessionlog/src/__tests__/hook-managers.test.ts +0 -121
  1194. package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +0 -759
  1195. package/references/sessionlog/src/__tests__/opencode-agent.test.ts +0 -338
  1196. package/references/sessionlog/src/__tests__/redaction.test.ts +0 -136
  1197. package/references/sessionlog/src/__tests__/session-repo.test.ts +0 -353
  1198. package/references/sessionlog/src/__tests__/session-store.test.ts +0 -166
  1199. package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +0 -466
  1200. package/references/sessionlog/src/__tests__/skill-live.test.ts +0 -461
  1201. package/references/sessionlog/src/__tests__/summarize.test.ts +0 -348
  1202. package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +0 -610
  1203. package/references/sessionlog/src/__tests__/task-plan-live.test.ts +0 -632
  1204. package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +0 -121
  1205. package/references/sessionlog/src/__tests__/types.test.ts +0 -166
  1206. package/references/sessionlog/src/__tests__/utils.test.ts +0 -333
  1207. package/references/sessionlog/src/__tests__/validation.test.ts +0 -103
  1208. package/references/sessionlog/src/__tests__/worktree.test.ts +0 -57
  1209. package/references/sessionlog/src/agent/registry.ts +0 -143
  1210. package/references/sessionlog/src/agent/session-types.ts +0 -113
  1211. package/references/sessionlog/src/agent/types.ts +0 -220
  1212. package/references/sessionlog/src/cli.ts +0 -597
  1213. package/references/sessionlog/src/commands/clean.ts +0 -133
  1214. package/references/sessionlog/src/commands/disable.ts +0 -84
  1215. package/references/sessionlog/src/commands/doctor.ts +0 -145
  1216. package/references/sessionlog/src/commands/enable.ts +0 -202
  1217. package/references/sessionlog/src/commands/explain.ts +0 -261
  1218. package/references/sessionlog/src/commands/reset.ts +0 -105
  1219. package/references/sessionlog/src/commands/resume.ts +0 -180
  1220. package/references/sessionlog/src/commands/rewind.ts +0 -195
  1221. package/references/sessionlog/src/commands/setup-ccweb.ts +0 -275
  1222. package/references/sessionlog/src/commands/status.ts +0 -172
  1223. package/references/sessionlog/src/config.ts +0 -165
  1224. package/references/sessionlog/src/events/event-log.ts +0 -126
  1225. package/references/sessionlog/src/git-operations.ts +0 -558
  1226. package/references/sessionlog/src/hooks/git-hooks.ts +0 -165
  1227. package/references/sessionlog/src/hooks/lifecycle.ts +0 -391
  1228. package/references/sessionlog/src/index.ts +0 -650
  1229. package/references/sessionlog/src/security/redaction.ts +0 -283
  1230. package/references/sessionlog/src/session/state-machine.ts +0 -452
  1231. package/references/sessionlog/src/store/checkpoint-store.ts +0 -509
  1232. package/references/sessionlog/src/store/native-store.ts +0 -173
  1233. package/references/sessionlog/src/store/provider-types.ts +0 -99
  1234. package/references/sessionlog/src/store/session-store.ts +0 -266
  1235. package/references/sessionlog/src/strategy/attribution.ts +0 -296
  1236. package/references/sessionlog/src/strategy/common.ts +0 -207
  1237. package/references/sessionlog/src/strategy/content-overlap.ts +0 -228
  1238. package/references/sessionlog/src/strategy/manual-commit.ts +0 -988
  1239. package/references/sessionlog/src/strategy/types.ts +0 -279
  1240. package/references/sessionlog/src/summarize/claude-generator.ts +0 -115
  1241. package/references/sessionlog/src/summarize/summarize.ts +0 -432
  1242. package/references/sessionlog/src/types.ts +0 -508
  1243. package/references/sessionlog/src/utils/chunk-files.ts +0 -49
  1244. package/references/sessionlog/src/utils/commit-message.ts +0 -65
  1245. package/references/sessionlog/src/utils/detect-agent.ts +0 -36
  1246. package/references/sessionlog/src/utils/hook-managers.ts +0 -125
  1247. package/references/sessionlog/src/utils/ide-tags.ts +0 -32
  1248. package/references/sessionlog/src/utils/paths.ts +0 -79
  1249. package/references/sessionlog/src/utils/preview-rewind.ts +0 -80
  1250. package/references/sessionlog/src/utils/rewind-conflict.ts +0 -121
  1251. package/references/sessionlog/src/utils/shadow-branch.ts +0 -109
  1252. package/references/sessionlog/src/utils/string-utils.ts +0 -46
  1253. package/references/sessionlog/src/utils/todo-extract.ts +0 -188
  1254. package/references/sessionlog/src/utils/trailers.ts +0 -187
  1255. package/references/sessionlog/src/utils/transcript-parse.ts +0 -177
  1256. package/references/sessionlog/src/utils/transcript-timestamp.ts +0 -59
  1257. package/references/sessionlog/src/utils/tree-ops.ts +0 -219
  1258. package/references/sessionlog/src/utils/tty.ts +0 -72
  1259. package/references/sessionlog/src/utils/validation.ts +0 -65
  1260. package/references/sessionlog/src/utils/worktree.ts +0 -58
  1261. package/references/sessionlog/src/wire-types.ts +0 -59
  1262. package/references/sessionlog/templates/setup-env.sh +0 -153
  1263. package/references/sessionlog/tsconfig.json +0 -18
  1264. package/references/sessionlog/vitest.config.ts +0 -12
  1265. package/references/skill-tree/.claude/settings.json +0 -6
  1266. package/references/skill-tree/.sudocode/issues.jsonl +0 -19
  1267. package/references/skill-tree/.sudocode/specs.jsonl +0 -3
  1268. package/references/skill-tree/CLAUDE.md +0 -132
  1269. package/references/skill-tree/README.md +0 -396
  1270. package/references/skill-tree/docs/GAPS_v1.md +0 -221
  1271. package/references/skill-tree/docs/INTEGRATION_PLAN.md +0 -467
  1272. package/references/skill-tree/docs/TODOS.md +0 -91
  1273. package/references/skill-tree/docs/anthropic_skill_guide.md +0 -1364
  1274. package/references/skill-tree/docs/design/federated-skill-trees.md +0 -524
  1275. package/references/skill-tree/docs/design/multi-agent-sync.md +0 -759
  1276. package/references/skill-tree/docs/scraper/BRAINSTORM.md +0 -583
  1277. package/references/skill-tree/docs/scraper/POC_PLAN.md +0 -420
  1278. package/references/skill-tree/docs/scraper/README.md +0 -170
  1279. package/references/skill-tree/examples/basic-usage.ts +0 -157
  1280. package/references/skill-tree/package-lock.json +0 -1852
  1281. package/references/skill-tree/package.json +0 -66
  1282. package/references/skill-tree/plan.md +0 -78
  1283. package/references/skill-tree/scraper/README.md +0 -123
  1284. package/references/skill-tree/scraper/docs/DESIGN.md +0 -683
  1285. package/references/skill-tree/scraper/docs/PLAN.md +0 -336
  1286. package/references/skill-tree/scraper/drizzle.config.ts +0 -10
  1287. package/references/skill-tree/scraper/package-lock.json +0 -6329
  1288. package/references/skill-tree/scraper/package.json +0 -68
  1289. package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +0 -7
  1290. package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +0 -7
  1291. package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +0 -27
  1292. package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +0 -21
  1293. package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +0 -54
  1294. package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +0 -24
  1295. package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +0 -93
  1296. package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +0 -22
  1297. package/references/skill-tree/scraper/tsup.config.ts +0 -14
  1298. package/references/skill-tree/scraper/vitest.config.ts +0 -17
  1299. package/references/skill-tree/scripts/convert-to-vitest.ts +0 -166
  1300. package/references/skill-tree/skills/skill-writer/SKILL.md +0 -339
  1301. package/references/skill-tree/skills/skill-writer/references/examples.md +0 -326
  1302. package/references/skill-tree/skills/skill-writer/references/patterns.md +0 -210
  1303. package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +0 -123
  1304. package/references/skill-tree/test/run-all.ts +0 -106
  1305. package/references/skill-tree/test/utils.ts +0 -128
  1306. package/references/skill-tree/vitest.config.ts +0 -16
  1307. package/references/swarmkit/LICENSE +0 -21
  1308. package/references/swarmkit/README.md +0 -130
  1309. package/references/swarmkit/docs/design.md +0 -453
  1310. package/references/swarmkit/docs/package-setup-reference.md +0 -519
  1311. package/references/swarmkit/package-lock.json +0 -1938
  1312. package/references/swarmkit/package.json +0 -43
  1313. package/references/swarmkit/src/cli.ts +0 -41
  1314. package/references/swarmkit/src/commands/add.ts +0 -126
  1315. package/references/swarmkit/src/commands/doctor.ts +0 -117
  1316. package/references/swarmkit/src/commands/hive.ts +0 -279
  1317. package/references/swarmkit/src/commands/init/phases/configure.ts +0 -74
  1318. package/references/swarmkit/src/commands/init/phases/global-setup.ts +0 -104
  1319. package/references/swarmkit/src/commands/init/phases/packages.ts +0 -44
  1320. package/references/swarmkit/src/commands/init/phases/project.ts +0 -81
  1321. package/references/swarmkit/src/commands/init/phases/use-case.ts +0 -47
  1322. package/references/swarmkit/src/commands/init/state.test.ts +0 -23
  1323. package/references/swarmkit/src/commands/init/state.ts +0 -22
  1324. package/references/swarmkit/src/commands/init/wizard.ts +0 -160
  1325. package/references/swarmkit/src/commands/init.ts +0 -17
  1326. package/references/swarmkit/src/commands/login.ts +0 -106
  1327. package/references/swarmkit/src/commands/logout.ts +0 -22
  1328. package/references/swarmkit/src/commands/remove.ts +0 -72
  1329. package/references/swarmkit/src/commands/status.ts +0 -101
  1330. package/references/swarmkit/src/commands/update.ts +0 -62
  1331. package/references/swarmkit/src/commands/whoami.ts +0 -41
  1332. package/references/swarmkit/src/config/global.test.ts +0 -258
  1333. package/references/swarmkit/src/config/global.ts +0 -141
  1334. package/references/swarmkit/src/config/keys.test.ts +0 -109
  1335. package/references/swarmkit/src/config/keys.ts +0 -49
  1336. package/references/swarmkit/src/doctor/checks.test.ts +0 -366
  1337. package/references/swarmkit/src/doctor/checks.ts +0 -292
  1338. package/references/swarmkit/src/doctor/types.ts +0 -33
  1339. package/references/swarmkit/src/hub/auth-flow.test.ts +0 -127
  1340. package/references/swarmkit/src/hub/auth-flow.ts +0 -144
  1341. package/references/swarmkit/src/hub/client.test.ts +0 -224
  1342. package/references/swarmkit/src/hub/client.ts +0 -185
  1343. package/references/swarmkit/src/hub/credentials.test.ts +0 -132
  1344. package/references/swarmkit/src/hub/credentials.ts +0 -51
  1345. package/references/swarmkit/src/index.ts +0 -116
  1346. package/references/swarmkit/src/packages/installer.test.ts +0 -365
  1347. package/references/swarmkit/src/packages/installer.ts +0 -206
  1348. package/references/swarmkit/src/packages/plugin.test.ts +0 -141
  1349. package/references/swarmkit/src/packages/plugin.ts +0 -46
  1350. package/references/swarmkit/src/packages/registry.test.ts +0 -235
  1351. package/references/swarmkit/src/packages/registry.ts +0 -209
  1352. package/references/swarmkit/src/packages/setup.test.ts +0 -1395
  1353. package/references/swarmkit/src/packages/setup.ts +0 -671
  1354. package/references/swarmkit/src/utils/ui.test.ts +0 -115
  1355. package/references/swarmkit/src/utils/ui.ts +0 -62
  1356. package/references/swarmkit/tsconfig.json +0 -17
  1357. package/references/swarmkit/vitest.config.ts +0 -9
@@ -1,19 +0,0 @@
1
- {"id":"i-7bxx","uuid":"ddf991df-120d-46ed-87e0-0f998b7b8e69","title":"Define serving layer types and extend Skill interface","content":"## Overview\n\nCreate the foundational types for the serving layer and extend the existing `Skill` interface with serving-specific fields.\n\n## Acceptance Criteria\n\n- [ ] Create `src/serving/types.ts` with:\n - `LoadoutCriteria` interface (all selection options)\n - `LoadoutState` interface (available, expanded, pending maps)\n - `LoadoutSource` interface\n - `SkillState` type ('available' | 'expanded' | 'pending')\n - `ExpandTrigger` interface\n - `SkillSummary` interface\n - `LoadoutView` interface\n - `ProjectContext` interface\n - `GraphServerConfig` interface\n - `LoadoutCompilerConfig` interface\n\n- [ ] Extend `Skill` interface in `src/types.ts` with `serving?` field:\n ```typescript\n serving?: {\n summary?: string;\n tokenEstimate?: number;\n autoExpand?: ExpandTrigger[];\n expansionGroup?: string;\n }\n ```\n\n- [ ] Create `src/serving/index.ts` with public exports\n\n- [ ] Add tests for type compatibility\n\n## Technical Notes\n\n- Types should be exported from both `src/serving/index.ts` and re-exported from `src/index.ts`\n- Ensure backward compatibility - `serving` field is optional on Skill\n- Use strict TypeScript (no `any` types)\n\n## Implements\n\n[[s-70no]] - Core Types section","status":"closed","priority":0,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:15:02","updated_at":"2026-02-03 21:48:02","closed_at":"2026-02-03 21:48:02","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-7bxx","from_type":"issue","to":"i-22y3","to_type":"issue","type":"blocks"},{"from":"i-7bxx","from_type":"issue","to":"i-3rvm","to_type":"issue","type":"blocks"},{"from":"i-7bxx","from_type":"issue","to":"i-4kr7","to_type":"issue","type":"blocks"},{"from":"i-7bxx","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["foundation","serving","types"]}
2
- {"id":"i-3rvm","uuid":"5d760085-2e9c-4b6f-a067-10fde8b5f478","title":"Implement LoadoutCompiler with filter strategies","content":"## Overview\n\nCreate the LoadoutCompiler class that selects skills based on flexible criteria. This is the core selection logic for building loadouts.\n\n## Acceptance Criteria\n\n- [ ] Create `src/serving/loadout-compiler.ts` with `LoadoutCompiler` class\n\n- [ ] Implement filter methods (applied in order):\n - `applyExplicitFilters()` - include/exclude by ID\n - `applyTagFilters()` - tags (any) and tagsAll (all required)\n - `applyQualityFilters()` - status, minSuccessRate, author\n - `applySemanticFilters()` - taskDescription, problemContext, errorContext, keywords (uses existing SemanticMatcher)\n - `applyRelationshipFilters()` - rootSkills, includeDependencies, includeRelated, depth\n - `applyLimits()` - maxSkills, priorityOrder sorting\n\n- [ ] Implement main entry point:\n ```typescript\n async compile(criteria: LoadoutCriteria): Promise<Skill[]>\n ```\n\n- [ ] Implement convenience methods:\n - `compileForTask(taskDescription: string)`\n - `compileFromProfile(profileName: string, profiles: Record<string, LoadoutCriteria>)`\n\n- [ ] Handle merge modes: 'replace', 'merge', 'subtract'\n\n- [ ] Add unit tests for each filter strategy\n\n## Technical Notes\n\n- Reuse existing `SemanticMatcher` for semantic filtering\n- Reuse existing `SkillRelationship` for relationship traversal\n- Filters should be composable and order-independent where possible\n- Empty criteria should return all active skills (up to default limit)\n\n## Implements\n\n[[s-70no]] - LoadoutCompiler section","status":"closed","priority":0,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:15:13","updated_at":"2026-02-03 21:53:21","closed_at":"2026-02-03 21:53:21","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-3rvm","from_type":"issue","to":"i-1uji","to_type":"issue","type":"blocks"},{"from":"i-3rvm","from_type":"issue","to":"i-22y3","to_type":"issue","type":"blocks"},{"from":"i-3rvm","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["compiler","core","serving"]}
3
- {"id":"i-1uji","uuid":"2dd56649-7568-49e4-9129-1577ba221ded","title":"Implement ProjectDetector for auto-configuration","content":"## Overview\n\nCreate the ProjectDetector that analyzes a project directory to infer relevant skills based on detected languages, frameworks, and patterns.\n\n## Acceptance Criteria\n\n- [ ] Create `src/serving/project-detector.ts` with `ProjectDetector` class\n\n- [ ] Implement `detectProjectContext(projectPath: string): Promise<ProjectContext>`:\n - Detect project type from manifest files:\n - `package.json` → Node.js/TypeScript\n - `pyproject.toml` / `requirements.txt` → Python\n - `Cargo.toml` → Rust\n - `go.mod` → Go\n - `pom.xml` / `build.gradle` → Java\n - Detect frameworks from dependencies:\n - React, Vue, Angular, Svelte (frontend)\n - Express, Fastify, NestJS, Next.js (Node backend)\n - FastAPI, Django, Flask (Python)\n - Prisma, TypeORM, Drizzle (ORMs)\n - Detect patterns from directory structure:\n - `.github/workflows/` → CI/CD\n - `docker-compose.yml` → Docker\n - `terraform/` → Infrastructure\n - Identify package manager (npm, yarn, pnpm, pip, cargo)\n\n- [ ] Add `compileForProject(projectPath: string)` to LoadoutCompiler that uses ProjectDetector\n\n- [ ] Create mapping from detected context to skill tags/criteria\n\n- [ ] Add tests with mock project structures\n\n## Technical Notes\n\n- Should be fast - only check file existence, don't parse deeply\n- Cache results for same projectPath within a session\n- Handle missing files gracefully (partial detection is fine)\n\n## Implements\n\n[[s-70no]] - Project-Based Auto-Configuration","status":"closed","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:15:23","updated_at":"2026-02-03 22:05:21","closed_at":"2026-02-03 22:05:21","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-1uji","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["auto-config","detection","serving"],"feedback":[{"id":"87b558ac-260d-401c-835a-5a7f1f668c47","from_id":"i-1uji","to_id":"s-70no","feedback_type":"comment","content":"ProjectDetector implemented with comprehensive detection:\n- **Project types**: Node.js, Python, Rust, Go, Java, Kotlin\n- **Node.js frameworks**: React, Next.js, Vue, Nuxt, Angular, Svelte, Express, Fastify, NestJS, Hono, Prisma, Drizzle, TypeORM, Jest, Vitest, Playwright, Cypress\n- **Python frameworks**: FastAPI, Django, Flask, SQLAlchemy, pytest, Pydantic\n- **Patterns**: GitHub Actions, GitLab CI, Docker, Docker Compose, Terraform, Kubernetes\n- **Package managers**: npm, pnpm, yarn, bun (Node.js), pip (Python), cargo (Rust), maven/gradle (Java)\n- Result caching with `clearCache()` method\n- `contextToCriteria()` converts detected context to LoadoutCriteria for automatic skill selection","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T22:05:17.795Z","updated_at":"2026-02-03T22:05:17.795Z"}]}
4
- {"id":"i-22y3","uuid":"b0ac9a37-5cfd-4339-a98a-3cf989800adb","title":"Implement SkillGraphServer orchestrator API","content":"## Overview\n\nCreate the main SkillGraphServer class with the orchestrator-facing API for managing loadout state.\n\n## Acceptance Criteria\n\n- [ ] Create `src/serving/graph-server.ts` with `SkillGraphServer` class\n\n- [ ] Implement constructor with `GraphServerConfig`:\n - Initialize LoadoutCompiler\n - Set up empty LoadoutState\n - Store config options (agentCanModify, requireApproval, etc.)\n - Apply initialLoadout if provided\n\n- [ ] Implement orchestrator API methods:\n - `setLoadout(criteria: LoadoutCriteria): Promise<LoadoutState>` - replace current loadout\n - `setLoadoutForTask(taskDescription: string): Promise<LoadoutState>`\n - `setLoadoutForProject(projectPath: string): Promise<LoadoutState>`\n - `setLoadoutFromProfile(profileName: string): Promise<LoadoutState>`\n - `addSkills(skillIds: string[]): Promise<void>` - merge into current\n - `removeSkills(skillIds: string[]): void`\n - `approvePending(skillIds: string[]): void`\n - `denyPending(skillIds: string[]): void`\n - `getState(): LoadoutState`\n\n- [ ] Implement expansion state management:\n - Track expanded vs available skills\n - Enforce `maxExpanded` limit\n - Implement eviction strategies: 'lru', 'priority', 'manual'\n\n- [ ] Implement event emission:\n - `loadout:changed`\n - `skill:expanded`\n - `skill:collapsed`\n - `pending:added`\n\n- [ ] Add unit tests for state transitions\n\n## Technical Notes\n\n- LoadoutState should use Map for available skills (fast lookup)\n- Use Set for expanded and pending skill IDs\n- Events should be synchronous (no async handlers for now)\n\n## Implements\n\n[[s-70no]] - SkillGraphServer External API section","status":"closed","priority":0,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:15:34","updated_at":"2026-02-03 22:42:41","closed_at":"2026-02-03 22:42:41","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-22y3","from_type":"issue","to":"i-2hn5","to_type":"issue","type":"blocks"},{"from":"i-22y3","from_type":"issue","to":"i-63n4","to_type":"issue","type":"blocks"},{"from":"i-22y3","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["orchestrator-api","server","serving"],"feedback":[{"id":"1c5f0d8c-9c88-467b-8379-0633f33db550","from_id":"i-22y3","to_id":"s-70no","feedback_type":"comment","content":"SkillGraphServer implemented with full orchestrator API:\n- **Loadout management**: `setLoadout()`, `setLoadoutForTask()`, `setLoadoutForProject()`, `setLoadoutFromProfile()`\n- **Skill operations**: `addSkills()`, `removeSkills()`, `getState()`\n- **Pending approval**: `approvePending()`, `denyPending()`\n- **Expansion management**: `expandSkill()`, `collapseSkill()`, `recordUsage()` with LRU eviction\n- **Agent API**: `agentRequestSkills()`, `agentRemoveSkills()`, `agentSwitchProfile()`, `agentSetLoadout()`\n- **Rendering**: `renderSystemPrompt()` (XML/Markdown), `estimateTokens()`\n- **Events**: Full event emission for loadout:changed, skill:expanded, skill:collapsed, pending:added/approved/denied\n- **Profiles**: `getProfiles()`, `addProfile()`, runtime profile management\n- **Configuration**: All GraphServerConfig options implemented (permissions, expansion behavior, eviction strategies)","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T22:42:41.058Z","updated_at":"2026-02-03T22:42:41.058Z"}]}
5
- {"id":"i-4kr7","uuid":"216f6ba8-23fd-437f-88ab-5a66cd4de688","title":"Implement ViewRenderer for system prompt output","content":"## Overview\n\nCreate the ViewRenderer that renders loadout state into formats consumable by agents (XML, Markdown).\n\n## Acceptance Criteria\n\n- [ ] Create `src/serving/view-renderer.ts` with `ViewRenderer` class\n\n- [ ] Implement `renderXml(state: LoadoutState): string`:\n - OpenSkills-compatible `<skills_system>` wrapper\n - `<usage>` section with instructions\n - `<available_skills>` with skill entries\n - For expanded skills: include full `<content>` block\n - For available skills: just `<name>` and `<description>`\n - `<pending_requests>` section if any pending\n\n- [ ] Implement `renderMarkdown(state: LoadoutState): string`:\n - Human-readable format for debugging\n - Table of skills with state indicators\n - Full content for expanded skills\n\n- [ ] Implement `renderSkillMd(skill: Skill): string`:\n - SKILL.md format with YAML frontmatter\n - Sections: Problem, Solution, Verification, Examples\n\n- [ ] Implement `estimateTokens(state: LoadoutState): number`:\n - Use `skill.serving?.tokenEstimate` if available\n - Fall back to character count / 4 approximation\n - Sum for all available + expanded content\n\n- [ ] Add `renderSystemPrompt()` method to SkillGraphServer that uses ViewRenderer\n\n## Technical Notes\n\n- XML output should be valid and parseable\n- Escape special characters in skill content\n- Keep summaries short (first sentence of description if no explicit summary)\n\n## Implements\n\n[[s-70no]] - ViewRenderer section and XML output example","status":"closed","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:15:44","updated_at":"2026-02-03 22:05:21","closed_at":"2026-02-03 22:05:21","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-4kr7","from_type":"issue","to":"i-22y3","to_type":"issue","type":"blocks"},{"from":"i-4kr7","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["rendering","serving","xml"],"feedback":[{"id":"caf8f234-dc5b-4a85-865c-cee1fd0cef38","from_id":"i-4kr7","to_id":"s-70no","feedback_type":"comment","content":"ViewRenderer implemented with full functionality:\n- `renderXml()`: OpenSkills-compatible XML format with progressive disclosure (available vs expanded states)\n- `renderMarkdown()`: Debug-friendly table view with expanded skill details\n- `renderSkillMd()`: SKILL.md format with YAML frontmatter\n- `estimateTokens()`: Token estimation for budget tracking\n- `toSummaries()`: Convert loadout to array of skill summaries\n- Proper XML escaping for special characters\n- Configurable options for token estimates, max summary length, and example inclusion","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T22:05:17.627Z","updated_at":"2026-02-03T22:05:17.627Z"}]}
6
- {"id":"i-2hn5","uuid":"03ba9fd4-096e-47ef-8f57-bb6c7454378f","title":"Implement SkillGraphServer agent API methods","content":"## Overview\n\nAdd the agent-facing API methods to SkillGraphServer that will be exposed via MCP tools.\n\n## Acceptance Criteria\n\n- [ ] Add agent API methods to `SkillGraphServer`:\n\n - `agentSetLoadout(criteria: LoadoutCriteria): Promise<LoadoutState | 'denied'>`\n - Check `agentCanSetLoadout` config\n - Return 'denied' if not permitted\n\n - `agentRequestSkills(skillIds: string[]): Promise<{ added: string[]; pending: string[] }>`\n - Check `agentCanModify` config\n - If `requireApproval`: add to pending, return in pending array\n - If no approval needed: add directly, return in added array\n\n - `agentSearchSkills(query: string, limit?: number): Promise<SkillSummary[]>`\n - Use SemanticMatcher to search all skills (not just loadout)\n - Return summaries with id, name, description, tags\n - Default limit: 5\n\n - `agentExpandSkill(skillId: string): Promise<Skill | null>`\n - Return null if skill not in available set\n - Add to expanded set\n - Enforce maxExpanded with eviction\n - Emit 'skill:expanded' event\n\n - `agentCollapseSkill(skillId: string): void`\n - Remove from expanded set\n - Emit 'skill:collapsed' event\n\n - `agentListLoadout(): LoadoutView`\n - Return available skills as SkillSummary[]\n - Include pending array\n - Include available profile names\n\n - `agentSwitchProfile(profileName: string): Promise<LoadoutState | 'denied'>`\n - Check `agentCanSwitchProfile` config\n - Apply profile criteria\n\n- [ ] Implement auto-expand on use:\n - When a skill is \"used\" (via skill tool), expand related skills\n - Respect `autoExpandRelated` config\n\n- [ ] Add tests for permission checks\n\n## Technical Notes\n\n- All agent methods should respect config permissions\n- 'denied' return should include reason in a real implementation\n- Consider rate limiting for search in future\n\n## Implements\n\n[[s-70no]] - SkillGraphServer Agent API section","status":"closed","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:15:57","updated_at":"2026-02-03 22:44:10","closed_at":"2026-02-03 22:44:10","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-2hn5","from_type":"issue","to":"i-28ae","to_type":"issue","type":"blocks"},{"from":"i-2hn5","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["agent-api","server","serving"],"feedback":[{"id":"a1e368bc-c5b9-461e-83ba-a32940412268","from_id":"i-2hn5","to_id":"s-70no","feedback_type":"comment","content":"Agent API methods implemented and tested:\n- `agentSearchSkills(query, limit)` - text search across all skills by name, description, problem, and tags\n- `agentExpandSkill(skillId)` - expands skill and returns it (or null if not in loadout)\n- `agentCollapseSkill(skillId)` - collapses skill from expanded state\n- `agentListLoadout()` - returns LoadoutView with available summaries, pending skills, and profile names\n- All existing agent methods (agentRequestSkills, agentRemoveSkills, agentSwitchProfile, agentSetLoadout) verified working\n\nNote: Search currently uses simple text matching. Could be enhanced with SemanticMatcher for better relevance when available.","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T22:44:09.794Z","updated_at":"2026-02-03T22:44:09.794Z"}]}
7
- {"id":"i-28ae","uuid":"f84feff7-4f13-4ce9-a562-e860aa76d341","title":"Create MCP tool definitions for loadout management","content":"## Overview\n\nDefine the MCP tool schemas for loadout and skill management that agents will use.\n\n## Acceptance Criteria\n\n- [ ] Create `src/mcp/tools/loadout-tools.ts` with tool definitions:\n\n - `loadout_list`: List skills in current loadout\n - Input: `{ filter?: 'expanded' | 'available' | 'pending' }`\n - Returns: LoadoutView\n\n - `loadout_search`: Search for skills to add\n - Input: `{ query: string, limit?: number }`\n - Returns: SkillSummary[]\n\n - `loadout_add`: Request skills to be added\n - Input: `{ skill_ids: string[] }`\n - Returns: `{ added: string[], pending: string[] }`\n\n - `loadout_remove`: Remove skills from loadout\n - Input: `{ skill_ids: string[] }`\n - Returns: `{ removed: string[] }`\n\n - `loadout_profile`: Switch to a named profile\n - Input: `{ name: string }`\n - Returns: LoadoutView or error\n\n - `loadout_set`: Set loadout from criteria (if permitted)\n - Input: LoadoutCriteria subset\n - Returns: LoadoutView or 'denied'\n\n- [ ] Create `src/mcp/tools/skill-tools.ts` with tool definitions:\n\n - `skill_expand`: Expand a skill to see full content\n - Input: `{ skill_id: string }`\n - Returns: Full Skill object or error\n\n - `skill_collapse`: Collapse back to summary\n - Input: `{ skill_id: string }`\n - Returns: success boolean\n\n - `skill_use`: Apply/invoke an expanded skill\n - Input: `{ skill_id: string }`\n - Returns: Skill content + triggers related expansion\n\n- [ ] Create `src/mcp/tools/index.ts` exporting all tools\n\n- [ ] Follow MCP ToolDefinition schema (name, description, inputSchema)\n\n## Technical Notes\n\n- Tool descriptions should be clear for LLM consumption\n- Input schemas should use JSON Schema format\n- Keep required fields minimal\n\n## Implements\n\n[[s-70no]] - MCP Tools section","status":"closed","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:16:08","updated_at":"2026-02-03 22:47:23","closed_at":"2026-02-03 22:47:23","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-28ae","from_type":"issue","to":"i-3i0j","to_type":"issue","type":"blocks"},{"from":"i-28ae","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["definitions","mcp","tools"],"feedback":[{"id":"89176b15-58c0-4e7d-958a-5dec5a297e85","from_id":"i-28ae","to_id":"s-70no","feedback_type":"comment","content":"MCP tool definitions implemented:\n\n**Loadout Tools:**\n- `loadout_list` - List skills in current loadout with optional filter\n- `loadout_search` - Search for skills to add (by name, description, tags)\n- `loadout_add` - Request skills to be added to loadout\n- `loadout_remove` - Remove skills from loadout\n- `loadout_profile` - Switch to a named profile\n- `loadout_set` - Set loadout from criteria (if permitted)\n\n**Skill Tools:**\n- `skill_expand` - Expand skill to see full content\n- `skill_collapse` - Collapse back to summary\n- `skill_use` - Mark skill as being used (triggers auto-expansion)\n- `skill_get` - Get details about a specific skill\n\n**Utilities:**\n- `allTools` - Array of all tool definitions\n- `getToolDefinition(name)` - Get tool by name\n- `getToolNames()` - List all tool names\n\nAll tools follow MCP ToolDefinition schema with name, description, and JSON Schema inputSchema.","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T22:47:22.758Z","updated_at":"2026-02-03T22:47:22.758Z"}]}
8
- {"id":"i-3i0j","uuid":"b517fb8e-881b-437c-94ce-c3653772229c","title":"Implement MCP server with tool handlers","content":"## Overview\n\nCreate the MCP server implementation that exposes loadout/skill tools and handles dynamic tool registration.\n\n## Acceptance Criteria\n\n- [ ] Create `src/mcp/server.ts` with MCP server setup:\n - Use `@modelcontextprotocol/sdk` package\n - Initialize with SkillGraphServer instance\n - Register static tools (loadout_*, skill_*)\n\n- [ ] Create `src/mcp/handlers.ts` with tool execution handlers:\n - Map each tool to corresponding SkillGraphServer method\n - Handle errors gracefully with informative messages\n - Return properly formatted results\n\n- [ ] Implement dynamic tool registration:\n - When skill is expanded, register `skill_{id}` tool\n - When skill is collapsed, unregister the tool\n - Send `notifications/tools/list_changed` on state changes\n\n- [ ] Add `getMcpTools(): ToolDefinition[]` to SkillGraphServer:\n - Return static tools + dynamic skill tools\n - Dynamic tools only for expanded skills\n\n- [ ] Create `src/mcp/index.ts` with public exports:\n - Export server factory function\n - Export tool definitions for reference\n\n- [ ] Add integration test for MCP server lifecycle\n\n## Technical Notes\n\n- MCP SDK: `@modelcontextprotocol/sdk`\n- Server should be instantiable (not singleton) for testing\n- Consider stdio and HTTP transports\n- Handle tool not found errors gracefully\n\n## Dependencies\n\n- Requires `@modelcontextprotocol/sdk` package to be added\n\n## Implements\n\n[[s-70no]] - MCP Server section and Dynamic Tools","status":"closed","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:16:18","updated_at":"2026-02-03 22:49:25","closed_at":"2026-02-03 22:49:25","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-3i0j","from_type":"issue","to":"i-7xaz","to_type":"issue","type":"blocks"},{"from":"i-3i0j","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["handlers","mcp","server"],"feedback":[{"id":"54f50f1b-1b00-49af-b192-5f428240b4d3","from_id":"i-3i0j","to_id":"s-70no","feedback_type":"comment","content":"MCP server implementation completed:\n\n**Handlers (`src/mcp/handlers.ts`):**\n- `createToolHandlers(server)` - Creates all tool handlers bound to a SkillGraphServer\n- `executeToolCall(handlers, name, args)` - Execute a tool by name\n- Handlers for all 10 tools: loadout_list, loadout_search, loadout_add, loadout_remove, loadout_profile, loadout_set, skill_expand, skill_collapse, skill_use, skill_get\n\n**Server (`src/mcp/server.ts`):**\n- `SkillTreeMcpServer` class wrapping SkillGraphServer\n- `createMcpServer(graphServer, config)` factory function\n- `getServerInfo()` - Returns name and version for MCP initialization\n- `getTools()` - Returns all tools (static + dynamic for expanded skills)\n- `executeTool(name, args)` - Execute tool calls\n- `onToolsChanged(callback)` - Subscribe to tools/list_changed notifications\n- Dynamic tool registration when skills are expanded/collapsed\n\n**Design Notes:**\n- SDK-agnostic: Works without @modelcontextprotocol/sdk dependency\n- Handlers can be used with any MCP server implementation\n- Server provides notification hooks for dynamic tool updates","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T22:49:25.126Z","updated_at":"2026-02-03T22:49:25.126Z"}]}
9
- {"id":"i-63n4","uuid":"69bfdf79-0f0b-4e0f-9c31-2b444b7e1a5e","title":"Create built-in loadout profiles","content":"## Overview\n\nCreate the built-in loadout profiles for common use cases: code-review, implementation, debugging, security.\n\n## Acceptance Criteria\n\n- [ ] Create `src/serving/profiles/index.ts` with profile registry\n\n- [ ] Create profile definitions:\n\n **code-review** (`src/serving/profiles/code-review.ts`):\n ```typescript\n {\n tags: [\"review\", \"quality\", \"security\"],\n taskDescription: \"review code for quality, security, and best practices\",\n maxSkills: 6,\n priorityOrder: 'relevance'\n }\n ```\n\n **implementation** (`src/serving/profiles/implementation.ts`):\n ```typescript\n {\n rootSkills: [\"tdd-workflow\", \"coding-standards\"],\n includeDependencies: true,\n tags: [\"development\", \"testing\"],\n maxSkills: 8\n }\n ```\n\n **debugging** (`src/serving/profiles/debugging.ts`):\n ```typescript\n {\n taskDescription: \"diagnose and fix bugs, analyze errors\",\n tags: [\"debugging\", \"logging\", \"error-handling\"],\n maxSkills: 5\n }\n ```\n\n **security** (`src/serving/profiles/security.ts`):\n ```typescript\n {\n tags: [\"security\"],\n tagsAll: [\"security\"],\n taskDescription: \"security review, vulnerability detection\",\n maxSkills: 8,\n minSuccessRate: 0.7\n }\n ```\n\n- [ ] Export `builtInProfiles: Record<string, LoadoutCriteria>` from profiles/index.ts\n\n- [ ] Integrate with SkillGraphServer:\n - Merge builtInProfiles with user-provided profiles\n - Built-in profiles can be overridden\n\n- [ ] Add documentation for each profile\n\n## Technical Notes\n\n- Profiles should be extensible (users can add their own)\n- Profile names should be kebab-case\n- Consider making profiles configurable via file in future\n\n## Implements\n\n[[s-70no]] - Built-in Profiles section","status":"closed","priority":2,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:16:30","updated_at":"2026-02-03 22:45:41","closed_at":"2026-02-03 22:45:41","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-63n4","from_type":"issue","to":"i-7xaz","to_type":"issue","type":"blocks"},{"from":"i-63n4","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["config","profiles","serving"],"feedback":[{"id":"00914242-42c8-4878-95c5-4dc3d836027f","from_id":"i-63n4","to_id":"s-70no","feedback_type":"comment","content":"Built-in profiles implemented with 8 pre-configured profiles:\n- **code-review**: Quality, security, and best practices review\n- **implementation**: TDD workflow and coding standards\n- **debugging**: Error analysis and troubleshooting\n- **security**: Vulnerability detection and secure coding\n- **testing**: Test patterns and coverage\n- **refactoring**: Code improvement and design patterns\n- **documentation**: Technical writing and API docs\n- **devops**: CI/CD, Docker, and infrastructure\n\nFeatures:\n- Exported from serving module: `builtInProfiles`, `getBuiltInProfile()`, `listBuiltInProfiles()`\n- SkillGraphServer automatically includes built-in profiles\n- User profiles can override built-in profiles with the same name","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T22:45:41.314Z","updated_at":"2026-02-03T22:45:41.314Z"}]}
10
- {"id":"i-7xaz","uuid":"923b69f0-d0c9-40d7-a46e-3f02e3dd7803","title":"Add serving layer integration tests","content":"## Overview\n\nCreate comprehensive integration tests that verify the serving layer works end-to-end.\n\n## Acceptance Criteria\n\n- [ ] Create `test/serving.test.ts` with integration tests:\n\n **LoadoutCompiler tests:**\n - Compile with explicit include/exclude\n - Compile with tag filters\n - Compile with semantic task description\n - Compile with relationship traversal\n - Compile with limits and priority ordering\n\n **SkillGraphServer orchestrator API tests:**\n - setLoadout replaces current state\n - addSkills merges into current\n - removeSkills removes from available and expanded\n - approvePending moves to available\n - maxExpanded enforces limit with eviction\n\n **SkillGraphServer agent API tests:**\n - agentRequestSkills respects requireApproval\n - agentExpandSkill respects maxExpanded\n - agentSearchSkills returns relevant results\n - Permission checks work (agentCanModify, etc.)\n\n **ViewRenderer tests:**\n - XML output is valid and parseable\n - Expanded skills include content\n - Available skills show summary only\n - Token estimation is reasonable\n\n **Profile tests:**\n - Built-in profiles load correctly\n - Profile switching works mid-session\n - Custom profiles override built-in\n\n **End-to-end flow tests:**\n - Orchestrator sets loadout → agent searches → agent adds → agent expands\n - Approval flow: request → pending → approve → available\n - Project detection → loadout compilation\n\n- [ ] Use mock SkillBank with test skills\n\n- [ ] Verify event emissions\n\n## Technical Notes\n\n- Use existing test harness pattern\n- Create test fixture skills with known tags/relationships\n- Test both happy path and error cases\n\n## Implements\n\n[[s-70no]] - Success Criteria validation","status":"closed","priority":2,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:16:41","updated_at":"2026-02-03 23:21:52","closed_at":"2026-02-03 23:21:52","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-7xaz","from_type":"issue","to":"i-3r3l","to_type":"issue","type":"blocks"},{"from":"i-7xaz","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["integration","serving","testing"],"feedback":[{"id":"f87eaecd-0ef8-4f42-bc25-a583181e473b","from_id":"i-7xaz","to_id":"s-70no","feedback_type":"comment","content":"Integration tests already implemented throughout development (89 tests in test/serving.test.ts):\n\n**LoadoutCompiler tests:** ✅\n- compile with empty criteria, tag filters, tagsAll, minSuccessRate, author\n- relationship traversal with dependencies and depth limits\n- limits (maxSkills, maxTokens, priorityOrder)\n- mergeLoadouts (replace, merge, subtract modes)\n\n**SkillGraphServer orchestrator API tests:** ✅\n- setLoadout, setLoadoutForTask, setLoadoutFromProfile\n- addSkills, removeSkills\n- approvePending, denyPending\n- maxExpanded with LRU eviction\n- auto-expand on use\n\n**SkillGraphServer agent API tests:** ✅\n- agentRequestSkills with requireApproval\n- agentExpandSkill, agentCollapseSkill\n- agentSearchSkills by name, tags, with limit\n- agentListLoadout, agentSetLoadout, agentSwitchProfile\n- Permission checks (agentCanModify, agentCanSetLoadout)\n\n**ViewRenderer tests:** ✅\n- XML output with available/expanded states\n- Markdown output with tables\n- SKILL.md format with YAML frontmatter\n- Token estimation\n\n**Profile tests:** ✅\n- Built-in profiles contain expected profiles\n- Profile switching works\n- User profiles override built-in\n\n**MCP tests:** ✅\n- Tool definitions and schemas\n- Handler execution\n- MCP server with dynamic tools\n- tools/list_changed notifications","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T23:21:52.059Z","updated_at":"2026-02-03T23:21:52.059Z"}]}
11
- {"id":"i-3r3l","uuid":"3b0f1f04-f9db-4d73-ade8-f95e936fc579","title":"Export serving layer from main package","content":"## Overview\n\nWire up the serving layer exports and update package documentation.\n\n## Acceptance Criteria\n\n- [ ] Update `src/index.ts` to export serving layer:\n ```typescript\n export * from './serving/index.js';\n export * from './mcp/index.js';\n ```\n\n- [ ] Update `src/serving/index.ts` with all public exports:\n - Types: LoadoutCriteria, LoadoutState, GraphServerConfig, etc.\n - Classes: SkillGraphServer, LoadoutCompiler, ViewRenderer, ProjectDetector\n - Profiles: builtInProfiles\n\n- [ ] Update `src/mcp/index.ts` with public exports:\n - Server factory\n - Tool definitions\n - Types\n\n- [ ] Add `@modelcontextprotocol/sdk` to package.json dependencies\n\n- [ ] Update CLAUDE.md with serving layer documentation:\n - New file structure\n - Key classes and their purposes\n - Example usage\n\n- [ ] Verify TypeScript compilation succeeds\n\n- [ ] Run full test suite\n\n## Technical Notes\n\n- Ensure no circular dependencies\n- Keep exports organized and documented\n- Consider separate entry point for MCP-only usage\n\n## Implements\n\n[[s-70no]] - File Structure section","status":"closed","priority":2,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-02-03 21:16:50","updated_at":"2026-02-03 23:22:12","closed_at":"2026-02-03 23:22:12","parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-3r3l","from_type":"issue","to":"s-70no","to_type":"spec","type":"implements"}],"tags":["documentation","exports","packaging"],"feedback":[{"id":"eafbcc91-5bb1-4947-b6b9-d982c67ed3c8","from_id":"i-3r3l","to_id":"s-70no","feedback_type":"comment","content":"Exports completed throughout implementation:\n\n**src/index.ts exports:** ✅\n- All serving layer types and classes\n- All MCP tools, handlers, and server\n\n**src/serving/index.ts exports:** ✅\n- Types: LoadoutCriteria, LoadoutState, GraphServerConfig, SkillSummary, LoadoutView, ProjectContext, etc.\n- Classes: LoadoutCompiler, ViewRenderer, ProjectDetector, SkillGraphServer\n- Profiles: builtInProfiles, getBuiltInProfile, listBuiltInProfiles, and individual profiles\n\n**src/mcp/index.ts exports:** ✅\n- Tool definitions: all 10 tools\n- Handlers: createToolHandlers, executeToolCall\n- Server: SkillTreeMcpServer, createMcpServer\n\n**Design decision:** @modelcontextprotocol/sdk kept as optional\n- Server implementation is SDK-agnostic\n- Handlers can be used with any MCP server implementation\n- No required dependencies added\n\n**Verification:** ✅\n- All 89 tests pass\n- TypeScript compiles (serving layer only - pre-existing errors in config/loader.ts and services/sync.ts unrelated to this work)","agent":"alexngai","anchor":null,"dismissed":false,"created_at":"2026-02-03T23:22:12.154Z","updated_at":"2026-02-03T23:22:12.154Z"}]}
12
- {"id":"i-1t4g","uuid":"538aae39-ff4e-4fe0-97fa-c5b44314f893","title":"Create loadout state persistence layer","content":"\nCreate `src/serving/state-persistence.ts` that serializes/deserializes `LoadoutState` to/from a JSON file on disk.\n\n## Why\n\n`SkillGraphServer` holds loadout state in memory (Maps, Sets). The MCP server kept a long-lived process, but CLI commands are ephemeral. We need to persist state between CLI invocations so that `loadout add`, `loadout expand`, etc. have continuity.\n\n## What to Build\n\nA `LoadoutStatePersistence` class with:\n\n```typescript\ninterface PersistedLoadoutState {\n available: Array<{ id: string; skill: Skill }>; // Map serialized as array\n expanded: string[]; // Set serialized as array\n pending: string[]; // Set serialized as array\n source: LoadoutSource;\n updatedAt: string; // ISO date string\n}\n\nclass LoadoutStatePersistence {\n constructor(private filePath: string) {}\n \n save(state: LoadoutState): void\n load(): LoadoutState | null\n clear(): void\n exists(): boolean\n}\n```\n\n### Serialization Details\n\n- `LoadoutState.available` is `Map<string, Skill>` -- serialize as array of `{id, skill}` pairs\n- `LoadoutState.expanded` is `Set<string>` -- serialize as `string[]`\n- `LoadoutState.pending` is `Set<string>` -- serialize as `string[]`\n- `LoadoutState.updatedAt` is `Date` -- serialize as ISO string\n- `Skill` objects contain `Date` fields (`createdAt`, `updatedAt`) -- handle date revival on load\n\n### Default File Location\n\nThe state file should be stored at `{skillStoragePath}/.loadout-state.json`. The path is passed into the constructor.\n\n### Error Handling\n\n- `load()` returns `null` if file does not exist or is corrupt (log warning, do not throw)\n- `save()` writes atomically (write to temp file, then rename) to prevent corruption\n- `clear()` deletes the file if it exists\n\n### Key Reference Files\n\n- `/Users/alexngai/GitHub/skill-tree/src/serving/types.ts` lines 113-124 for `LoadoutState` type\n- `/Users/alexngai/GitHub/skill-tree/src/serving/types.ts` lines 97-108 for `LoadoutSource` type\n- `/Users/alexngai/GitHub/skill-tree/src/types.ts` for `Skill` type (has Date fields)\n","status":"open","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:34:39","updated_at":"2026-03-03 22:34:39","closed_at":null,"parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-1t4g","from_type":"issue","to":"i-32xq","to_type":"issue","type":"blocks"},{"from":"i-1t4g","from_type":"issue","to":"s-7pu7","to_type":"spec","type":"implements"}],"tags":["cli","persistence","serving"]}
13
- {"id":"i-32xq","uuid":"b10a4a96-016f-4be8-8e2c-c384ea8daa74","title":"Create CLI loadout server factory utility","content":"\nCreate `src/cli/utils/loadout-server.ts` -- a factory that creates a `SkillGraphServer` wired to filesystem storage with state persistence for CLI use.\n\n## Why\n\nEvery loadout CLI subcommand needs to: initialize storage, create a `SkillGraphServer`, load persisted state, perform an operation, then save state. This utility centralizes that boilerplate.\n\n## What to Build\n\n```typescript\ninterface LoadoutServerHandle {\n server: SkillGraphServer;\n save(): void; // Persist current state to disk\n storage: FilesystemStorageAdapter;\n}\n\ninterface LoadoutServerOptions extends GlobalOptions {\n maxExpanded?: number;\n autoExpandOnUse?: boolean;\n}\n\nasync function createLoadoutServer(options: LoadoutServerOptions): Promise<LoadoutServerHandle>\n```\n\n### Implementation Steps\n\n1. Resolve skill path using `resolveSkillPath(options.path)` and `ensureDir()`\n2. Create `FilesystemStorageAdapter({ basePath: skillPath })` and initialize it\n3. Create `SkillGraphServer(storage, config)` with sensible defaults:\n - `agentCanModify: true`\n - `agentCanSetLoadout: true` (CLI user is the orchestrator, not an agent)\n - `agentCanSwitchProfile: true`\n - `requireApproval: false`\n - `autoExpandOnUse: options.autoExpandOnUse ?? true`\n - `autoExpandRelated: false`\n - `maxExpanded: options.maxExpanded ?? 5`\n4. Initialize the server via `server.initialize()`\n5. Create `LoadoutStatePersistence` with path `{skillPath}/.loadout-state.json`\n6. If persisted state exists, restore it into the server:\n - Call `server.addSkills()` for available skills\n - Call `server.expandSkill()` for expanded skills\n - (Pending skills are edge cases in CLI -- include for completeness)\n7. Return `{ server, save: () => persistence.save(server.getState()), storage }`\n\n### Design Decision: Orchestrator vs Agent API\n\nIn the CLI context, the human IS the orchestrator. The CLI commands should use the **orchestrator API** (`setLoadout`, `addSkills`, `removeSkills`, `expandSkill`, `collapseSkill`) rather than the **agent API** (`agentRequestSkills`, etc.) since there is no approval workflow needed. The `loadout search` command can still use `agentSearchSkills` since it is a read-only query.\n\n### Key Reference Files\n\n- `/Users/alexngai/GitHub/skill-tree/src/cli/utils/skillbank.ts` -- pattern to follow for factory function\n- `/Users/alexngai/GitHub/skill-tree/src/cli/utils/paths.ts` -- `resolveSkillPath`, `ensureDir`\n- `/Users/alexngai/GitHub/skill-tree/src/cli/commands/mcp.ts` -- current server setup to migrate from (lines 32-50)\n- `/Users/alexngai/GitHub/skill-tree/src/serving/graph-server.ts` -- `SkillGraphServer` constructor and API\n","status":"blocked","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:34:57","updated_at":"2026-03-03 22:37:08","closed_at":null,"parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-32xq","from_type":"issue","to":"i-6xvy","to_type":"issue","type":"blocks"},{"from":"i-32xq","from_type":"issue","to":"s-7pu7","to_type":"spec","type":"implements"}],"tags":["cli","serving","utility"]}
14
- {"id":"i-6xvy","uuid":"4301dc22-a75d-4d3c-a4e3-ffe7cd4461bb","title":"Create loadout CLI command group with all subcommands","content":"\nCreate the `loadout` command group under `src/cli/commands/loadout/` with subcommands that replace all 10 MCP tools plus a few convenience commands.\n\n## Files to Create\n\n### `src/cli/commands/loadout/index.ts`\nCommand group container, following the pattern from `src/cli/commands/indexer/index.ts`:\n\n```typescript\nimport { Command } from 'commander';\nimport { listSubcommand } from './list.js';\nimport { searchSubcommand } from './search.js';\n// ... etc\n\nexport const loadoutCommand = new Command('loadout')\n .description('Manage skill loadout - select, expand, and organize skills for agent use')\n .addCommand(listSubcommand)\n .addCommand(searchSubcommand)\n .addCommand(addSubcommand)\n .addCommand(removeSubcommand)\n .addCommand(profileSubcommand)\n .addCommand(setSubcommand)\n .addCommand(expandSubcommand)\n .addCommand(collapseSubcommand)\n .addCommand(useSubcommand)\n .addCommand(getSubcommand)\n .addCommand(renderSubcommand)\n .addCommand(clearSubcommand);\n```\n\n### Subcommand Files\n\nEach file follows the established pattern from existing commands like `list.ts`, `show.ts`, `search.ts`.\n\n#### `src/cli/commands/loadout/list.ts` -- maps to MCP `loadout_list`\n```\nskill-tree loadout list [--filter <all|expanded|available|pending>] [--json]\n```\n- Calls `server.agentListLoadout()` (returns `LoadoutView`)\n- Formats output showing available skills with expansion state, pending IDs, available profiles\n- JSON mode outputs the raw `LoadoutView` object\n\n#### `src/cli/commands/loadout/search.ts` -- maps to MCP `loadout_search`\n```\nskill-tree loadout search <query> [--limit <n>]\n```\n- Calls `server.agentSearchSkills(query, limit)`\n- Shows results as `SkillSummary[]` with id, name, description, tags\n- Distinct from top-level `skill-tree search` which searches raw storage\n\n#### `src/cli/commands/loadout/add.ts` -- maps to MCP `loadout_add`\n```\nskill-tree loadout add <skill-ids...>\n```\n- Calls `server.addSkills(skillIds)` (orchestrator API, no approval needed)\n- Persists state after mutation\n- Shows confirmation with updated loadout summary\n\n#### `src/cli/commands/loadout/remove.ts` -- maps to MCP `loadout_remove`\n```\nskill-tree loadout remove <skill-ids...>\n```\n- Calls `server.removeSkills(skillIds)`\n- Persists state after mutation\n- Shows confirmation\n\n#### `src/cli/commands/loadout/profile.ts` -- maps to MCP `loadout_profile`\n```\nskill-tree loadout profile <name>\nskill-tree loadout profile --list\n```\n- `--list` flag: calls `server.getProfiles()` and lists all available profiles with descriptions\n- Without `--list`: calls `server.setLoadoutFromProfile(name)`\n- Persists state after switching\n- Shows the new loadout view\n\n#### `src/cli/commands/loadout/set.ts` -- maps to MCP `loadout_set`\n```\nskill-tree loadout set [--tags <tags...>] [--tags-all <tags...>] [--task <description>] [--max-skills <n>]\n```\n- Builds `LoadoutCriteria` from options\n- Calls `server.setLoadout(criteria)`\n- Persists state after mutation\n- Shows the resulting loadout\n\n#### `src/cli/commands/loadout/expand.ts` -- maps to MCP `skill_expand`\n```\nskill-tree loadout expand <skill-id>\n```\n- Calls `server.expandSkill(skillId)`\n- Gets the full skill from `server.getState().available.get(skillId)`\n- Displays full skill content using `formatSkillDetail()` from output utils\n- Persists state\n\n#### `src/cli/commands/loadout/collapse.ts` -- maps to MCP `skill_collapse`\n```\nskill-tree loadout collapse <skill-id>\n```\n- Calls `server.collapseSkill(skillId)`\n- Shows confirmation\n- Persists state\n\n#### `src/cli/commands/loadout/use.ts` -- maps to MCP `skill_use`\n```\nskill-tree loadout use <skill-id>\n```\n- Calls `server.recordUsage(skillId)` (this auto-expands if configured)\n- Gets and displays the skill content\n- Persists state\n\n#### `src/cli/commands/loadout/get.ts` -- maps to MCP `skill_get`\n```\nskill-tree loadout get <skill-id>\n```\n- Checks `server.getState()` for the skill\n- If expanded: shows full detail\n- If available but not expanded: shows summary only (id, name, description, tags)\n- If not in loadout: shows \"not found in loadout\"\n\n#### `src/cli/commands/loadout/render.ts` -- new, exposes `renderSystemPrompt()`\n```\nskill-tree loadout render [--format <xml|markdown>]\n```\n- Calls `server.renderSystemPrompt()` \n- Outputs the rendered content to stdout (useful for piping into agent configs)\n\n#### `src/cli/commands/loadout/clear.ts` -- new convenience command\n```\nskill-tree loadout clear\n```\n- Clears the persisted loadout state file\n- Shows confirmation\n\n## Command Pattern\n\nEach subcommand should follow this pattern:\n\n```typescript\nexport const xxxSubcommand = new Command('xxx')\n .description('...')\n .argument(...) // if needed\n .option(...) // if needed\n .action(async (args, options, command) => {\n const globalOpts = command.optsWithGlobals() as GlobalOptions;\n try {\n const { server, save } = await createLoadoutServer(globalOpts);\n // ... perform operation ...\n save(); // if state was mutated\n // ... format and print output ...\n } catch (error) {\n printError((error as Error).message);\n process.exit(1);\n }\n });\n```\n\n## Key Reference Files\n\n- `/Users/alexngai/GitHub/skill-tree/src/cli/commands/indexer/index.ts` -- command group pattern\n- `/Users/alexngai/GitHub/skill-tree/src/cli/commands/config.ts` -- subcommand pattern (inline)\n- `/Users/alexngai/GitHub/skill-tree/src/cli/commands/list.ts` -- standard command pattern\n- `/Users/alexngai/GitHub/skill-tree/src/cli/commands/show.ts` -- detail display pattern\n- `/Users/alexngai/GitHub/skill-tree/src/mcp/handlers.ts` -- exact logic to replicate for each command\n- `/Users/alexngai/GitHub/skill-tree/src/serving/graph-server.ts` -- server API methods\n","status":"blocked","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:35:25","updated_at":"2026-03-03 22:37:09","closed_at":null,"parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-6xvy","from_type":"issue","to":"i-3sx0","to_type":"issue","type":"blocks"},{"from":"i-6xvy","from_type":"issue","to":"i-8ooa","to_type":"issue","type":"blocks"},{"from":"i-6xvy","from_type":"issue","to":"s-7pu7","to_type":"spec","type":"implements"}],"tags":["cli","commands","loadout"]}
15
- {"id":"i-6lva","uuid":"07351672-7121-4210-8ac7-b940f8dba901","title":"Add loadout output formatting helpers","content":"\nAdd formatting functions to `src/cli/utils/output.ts` for displaying loadout-specific data types in the CLI.\n\n## Why\n\nThe existing output utilities format `Skill`, `SkillVersion`, and `SkillBankStats`. The loadout commands need formatters for `LoadoutView`, `SkillSummary`, and search results.\n\n## Functions to Add\n\n### `formatLoadoutView(view: LoadoutView): string`\nFormats the full loadout view for `loadout list`:\n```\nSkill Loadout (3 skills, 1 expanded)\n──────────────────────────────────────────────────\n [expanded] skill-id-1 Skill Name 1 [tag1, tag2]\n [available] skill-id-2 Skill Name 2 [tag3]\n [available] skill-id-3 Skill Name 3 [tag1, tag4]\n\nPending: skill-id-4, skill-id-5\n\nProfiles: code-review, debugging, security, testing, ...\n```\n\nUse chalk coloring consistent with the existing `formatStatus` function:\n- `expanded` state in green\n- `available` state in dim/gray \n- `pending` in yellow\n\n### `formatSkillSummaryLine(summary: SkillSummary): string`\nSingle-line format for a skill summary:\n```\n [expanded] skill-id Skill Name Short description text [tag1, tag2]\n```\n\n### `formatSearchResults(results: SkillSummary[], query: string): string`\nFormats search results for `loadout search`:\n```\nResults for \"authentication\" (3 found):\n\n auth-flow Authentication Flow Handle OAuth2 login flows [auth, security]\n token-refresh Token Refresh Manage JWT token lifecycle [auth, tokens]\n session-mgmt Session Management Server-side session handling [auth, session]\n```\n\n### `formatProfileList(profiles: string[]): string`\nFormats available profiles for `loadout profile --list`:\n```\nAvailable Profiles:\n code-review Code quality, security, and best practices\n implementation Writing new code and features\n debugging Diagnosing and fixing bugs\n security Vulnerability detection and secure coding\n testing Writing and maintaining tests\n refactoring Improving existing code\n documentation Writing and maintaining documentation\n devops Infrastructure and deployment\n```\n\n## Key Reference Files\n\n- `/Users/alexngai/GitHub/skill-tree/src/cli/utils/output.ts` -- existing formatting functions to extend\n- `/Users/alexngai/GitHub/skill-tree/src/serving/types.ts` lines 133-156 -- `SkillSummary` and `LoadoutView` types\n- `/Users/alexngai/GitHub/skill-tree/src/serving/profiles/index.ts` -- profile names and descriptions for the profile list formatter\n","status":"open","priority":2,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:35:43","updated_at":"2026-03-03 22:35:43","closed_at":null,"parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-6lva","from_type":"issue","to":"i-6xvy","to_type":"issue","type":"blocks"},{"from":"i-6lva","from_type":"issue","to":"s-7pu7","to_type":"spec","type":"implements"}],"tags":["cli","formatting","output"]}
16
- {"id":"i-8ooa","uuid":"50f7480b-2f67-46f7-98d6-b81ca42c56c4","title":"Wire loadout command into CLI and remove MCP command","content":"\nUpdate `src/cli/index.ts` to register the new `loadout` command group and remove the `mcp` command.\n\n## Changes to `src/cli/index.ts`\n\n1. Remove the import: `import { mcpCommand } from './commands/mcp.js';`\n2. Remove the registration: `program.addCommand(mcpCommand);`\n3. Add the import: `import { loadoutCommand } from './commands/loadout/index.js';`\n4. Add the registration: `program.addCommand(loadoutCommand);`\n\n## File to Delete\n\n- `src/cli/commands/mcp.ts` -- the entire file is no longer needed\n\n## Key Reference\n\n- `/Users/alexngai/GitHub/skill-tree/src/cli/index.ts` -- lines 26, 60 to modify\n","status":"blocked","priority":2,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:35:51","updated_at":"2026-03-03 22:37:11","closed_at":null,"parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-8ooa","from_type":"issue","to":"i-4l08","to_type":"issue","type":"blocks"},{"from":"i-8ooa","from_type":"issue","to":"s-7pu7","to_type":"spec","type":"implements"}],"tags":["cli","wiring"]}
17
- {"id":"i-4l08","uuid":"9b4eba35-daab-4be7-809a-7135de8b38f6","title":"Remove MCP module, exports, and tests","content":"\nDelete the `src/mcp/` directory and all references to it throughout the codebase.\n\n## Files to Delete\n\n- `src/mcp/handlers.ts`\n- `src/mcp/index.ts`\n- `src/mcp/server.ts`\n- `src/mcp/tools/index.ts`\n- `src/mcp/tools/loadout-tools.ts`\n- `src/mcp/tools/skill-tools.ts`\n- `test/mcp.test.ts`\n\n## Files to Modify\n\n### `src/index.ts`\n\nRemove the entire MCP export block (lines 386-416):\n\n```typescript\n// DELETE THIS ENTIRE BLOCK:\n// MCP Tools and Server\nexport {\n // Tool definitions\n loadoutListTool,\n loadoutSearchTool,\n loadoutAddTool,\n loadoutRemoveTool,\n loadoutProfileTool,\n loadoutSetTool,\n loadoutTools,\n skillExpandTool,\n skillCollapseTool,\n skillUseTool,\n skillGetTool,\n skillTools,\n allTools,\n getToolDefinition,\n getToolNames,\n type ToolDefinition,\n // Handlers\n createToolHandlers,\n executeToolCall,\n type ToolHandler,\n type McpToolResult,\n // Server\n SkillTreeMcpServer,\n createMcpServer,\n type McpServerConfig,\n} from \"./mcp/index.js\";\n```\n\nNote: The `ToolDefinition` type is defined in `src/serving/types.ts` and already exported from `src/serving/index.ts`, so it remains available via the serving export block (line 343: `type ToolDefinition`). However, since it is an MCP-specific concept, consider whether to keep or remove it from `src/serving/types.ts`. The type itself is generic enough to keep -- it describes any tool schema. If removed, it is 12 lines (269-280) in `src/serving/types.ts` and its re-export from `src/serving/index.ts` line 28 and `src/index.ts` line 343 (under the serving section, which is separate from the MCP section being deleted). **Recommendation: keep `ToolDefinition` in serving types for now since it is a generic schema type.**\n\n### `test/serving.test.ts`\n\nRemove the MCP-specific imports (lines 17-26):\n```typescript\n// DELETE these imports:\n // MCP tools\n allTools,\n getToolDefinition,\n getToolNames,\n loadoutListTool,\n skillExpandTool,\n // MCP handlers and server\n createToolHandlers,\n executeToolCall,\n createMcpServer,\n```\n\nRemove the MCP test sections. These are clearly marked with section headers:\n- Lines ~1634-1659: \"MCP Tools Tests\" section\n- Lines ~1715-1835: \"MCP Handlers Tests\" section \n- Lines ~1843-1955: \"MCP Server Tests\" section\n- Lines ~1960-2402: Additional handler tests that use `createToolHandlers`\n\nThe non-MCP serving tests (LoadoutCompiler, ViewRenderer, ProjectDetector, SkillGraphServer, Profiles, Events) from lines 1-~1632 should remain intact.\n\n**Careful**: Some later tests (after line 1960) test handler behavior for things like `loadout_list` filters and `skill_expand`/`skill_collapse` interactions. These tests exercise MCP handlers but the underlying logic they test is in `SkillGraphServer` which already has its own test coverage in the earlier sections. Verify no unique business logic coverage is lost -- if so, migrate those test cases to use `SkillGraphServer` methods directly instead of handler wrappers.\n\n### `test/run-all.ts`\n\nThis file does NOT include `mcp.test.ts` (it was not added to the legacy runner). No changes needed here.\n\n## Verification\n\nAfter removal:\n1. `npx tsc --noEmit` should pass (no dangling imports)\n2. `npm test` should pass (no broken test imports)\n3. `npm run build` should succeed\n\n## Key Reference Files\n\n- `/Users/alexngai/GitHub/skill-tree/src/index.ts` -- lines 386-416 to remove\n- `/Users/alexngai/GitHub/skill-tree/src/mcp/` -- 6 files to delete\n- `/Users/alexngai/GitHub/skill-tree/test/mcp.test.ts` -- delete\n- `/Users/alexngai/GitHub/skill-tree/test/serving.test.ts` -- lines 17-26 imports, lines 1634-2402 test sections\n","status":"blocked","priority":1,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:36:17","updated_at":"2026-03-03 22:37:11","closed_at":null,"parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-4l08","from_type":"issue","to":"i-5bru","to_type":"issue","type":"blocks"},{"from":"i-4l08","from_type":"issue","to":"s-7pu7","to_type":"spec","type":"implements"}],"tags":["cleanup","mcp-removal"]}
18
- {"id":"i-3sx0","uuid":"c4e912f5-9910-4478-8b87-691467846650","title":"Write tests for loadout CLI commands and state persistence","content":"\nCreate `test/loadout-cli.test.ts` with comprehensive tests for the new loadout CLI infrastructure.\n\n## Test Sections\n\n### 1. State Persistence Tests\n\n```\ndescribe('LoadoutStatePersistence')\n - saves and loads state roundtrip (Map/Set serialization)\n - returns null for missing file\n - returns null for corrupt JSON (does not throw)\n - handles Date serialization/deserialization in Skill objects\n - clear() removes the file\n - exists() returns correct boolean\n - atomic write (write to temp, rename)\n```\n\n### 2. Loadout Server Factory Tests\n\n```\ndescribe('createLoadoutServer')\n - creates server with filesystem storage\n - loads persisted state on initialization\n - save() persists current state\n - works with empty/fresh storage directory\n - respects maxExpanded option\n```\n\n### 3. Command Logic Tests\n\nTest the core logic of each subcommand by directly using the `SkillGraphServer` API (same way MCP handlers were tested). Use `MemoryStorageAdapter` for speed.\n\n```\ndescribe('loadout list')\n - lists empty loadout\n - lists loadout with available and expanded skills\n - filter=expanded shows only expanded\n - filter=available shows only non-expanded\n - filter=pending shows pending skills\n\ndescribe('loadout search')\n - finds skills matching query\n - respects limit option\n - returns empty for no matches\n\ndescribe('loadout add')\n - adds skills to loadout\n - adding duplicate is idempotent\n\ndescribe('loadout remove')\n - removes skills from loadout\n - removes from expanded set too\n\ndescribe('loadout profile')\n - switches to named profile\n - lists available profiles\n - errors on unknown profile\n\ndescribe('loadout set')\n - sets loadout from tag criteria\n - sets loadout from task description\n - respects max-skills limit\n\ndescribe('loadout expand')\n - expands skill in loadout\n - errors for skill not in loadout\n - evicts LRU when maxExpanded reached\n\ndescribe('loadout collapse')\n - collapses expanded skill\n - no-op for already collapsed\n\ndescribe('loadout use')\n - records usage and auto-expands\n - returns skill content\n\ndescribe('loadout get')\n - returns full detail for expanded skill\n - returns summary for available skill\n - returns null for skill not in loadout\n\ndescribe('loadout render')\n - renders XML format\n - renders markdown format\n\ndescribe('loadout clear')\n - removes state file\n - subsequent load returns empty state\n```\n\n### Test Helpers\n\nReuse the `createTestSkill` helper pattern from `test/serving.test.ts` and `test/mcp.test.ts`. Use `MemoryStorageAdapter` for in-memory tests. For persistence tests, use a temp directory (cleaned up in afterEach).\n\n## Key Reference Files\n\n- `/Users/alexngai/GitHub/skill-tree/test/serving.test.ts` -- test patterns and helpers\n- `/Users/alexngai/GitHub/skill-tree/test/mcp.test.ts` -- MCP handler tests to migrate/adapt\n- `/Users/alexngai/GitHub/skill-tree/test/cli.test.ts` -- existing CLI test patterns (if any)\n","status":"blocked","priority":2,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:36:36","updated_at":"2026-03-03 22:37:12","closed_at":null,"parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-3sx0","from_type":"issue","to":"s-7pu7","to_type":"spec","type":"implements"}],"tags":["cli","loadout","testing"]}
19
- {"id":"i-5bru","uuid":"d8752083-9317-47c3-827d-955b5f2fbf5a","title":"Update documentation (CLAUDE.md) for MCP removal and new loadout CLI","content":"\nUpdate `CLAUDE.md` to reflect the removal of MCP and addition of the loadout CLI command group.\n\n## Changes to CLAUDE.md\n\n### Architecture Tree\n\nRemove `src/mcp/` from the tree. Add `loadout/` under `src/cli/commands/`:\n\n```\nsrc/\n├── cli/\n│ ├── commands/\n│ │ ├── loadout/ # NEW: Loadout management commands\n│ │ │ ├── index.ts # Command group container\n│ │ │ ├── list.ts # List loadout skills\n│ │ │ ├── search.ts # Search for skills to add\n│ │ │ ├── add.ts # Add skills to loadout\n│ │ │ ├── remove.ts # Remove skills from loadout\n│ │ │ ├── profile.ts # Switch loadout profile\n│ │ │ ├── set.ts # Set loadout from criteria\n│ │ │ ├── expand.ts # Expand skill to full content\n│ │ │ ├── collapse.ts # Collapse skill to summary\n│ │ │ ├── use.ts # Record skill usage\n│ │ │ ├── get.ts # Get skill details\n│ │ │ ├── render.ts # Render loadout as system prompt\n│ │ │ └── clear.ts # Clear persisted state\n│ │ ├── list.ts, show.ts, search.ts, ...\n│ │ └── indexer/\n│ └── utils/\n│ ├── loadout-server.ts # NEW: Loadout server factory\n│ ├── output.ts\n│ ├── paths.ts\n│ └── skillbank.ts\n├── serving/\n│ ├── state-persistence.ts # NEW: Loadout state persistence\n│ └── ...\n```\n\n### Remove MCP References\n\n- Remove `mcp` from the CLI commands list in the Key Architecture section\n- Remove any mention of MCP server or JSON-RPC\n\n### Add Loadout CLI Section\n\nAdd a new section documenting the loadout commands:\n\n```markdown\n## Loadout Management CLI\n\nThe `loadout` command group manages skill loadouts -- curated sets of skills for agent use.\nState is persisted to `{skillPath}/.loadout-state.json` between invocations.\n\n### Commands\n\n```bash\n# View current loadout\nskill-tree loadout list [--filter expanded|available|pending]\n\n# Search for skills to add\nskill-tree loadout search <query> [--limit 5]\n\n# Add/remove skills\nskill-tree loadout add <skill-ids...>\nskill-tree loadout remove <skill-ids...>\n\n# Profile management\nskill-tree loadout profile <name>\nskill-tree loadout profile --list\n\n# Set loadout from criteria\nskill-tree loadout set --tags auth security --max-skills 10\n\n# Expand/collapse individual skills\nskill-tree loadout expand <skill-id>\nskill-tree loadout collapse <skill-id>\n\n# Record skill usage (auto-expands)\nskill-tree loadout use <skill-id>\n\n# Get skill details (respects expansion state)\nskill-tree loadout get <skill-id>\n\n# Render for agent consumption\nskill-tree loadout render [--format xml|markdown]\n\n# Clear persisted state\nskill-tree loadout clear\n```\n```\n\n### Update Important Files\n\nUpdate the Important Files list:\n- Remove any MCP file references\n- Add `src/cli/commands/loadout/index.ts` as the loadout CLI entry point\n- Add `src/serving/state-persistence.ts` as the persistence layer\n\n### Update Common Tasks\n\n- Remove \"Adding MCP tools\" task if present\n- Add a task for \"Adding a loadout subcommand\"\n\n## Key Reference File\n\n- `/Users/alexngai/GitHub/skill-tree/CLAUDE.md` -- the file to update\n","status":"blocked","priority":3,"assignee":null,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:36:56","updated_at":"2026-03-03 22:37:12","closed_at":null,"parent_id":null,"parent_uuid":null,"relationships":[{"from":"i-5bru","from_type":"issue","to":"s-7pu7","to_type":"spec","type":"implements"}],"tags":["documentation"]}
@@ -1,3 +0,0 @@
1
- {"id":"s-70no","uuid":"2070edd2-fb8a-42a2-af93-b8951ab8fa16","title":"Skill Graph Serving Layer","file_path":"specs/s-70no_skill_graph_serving_layer.md","content":"# Skill Graph Serving Layer\n\n## Overview\n\nAdd a serving layer to skill-tree that enables **dynamic skill loadouts** with **mid-session adjustability**. Skills can be selected based on task, project context, semantic matching, or explicit configuration. Both external orchestrators and agents can control the loadout.\n\n## Problem\n\nCurrently, serving skills to an agent requires either:\n1. Loading the entire skill library upfront (context explosion)\n2. Manually configuring which skills to include (inflexible)\n\nNeither approach supports dynamic, context-aware skill selection or mid-session adjustments.\n\n## Solution\n\nImplement a **loadout-based serving model** with two layers:\n\n1. **Loadout Layer**: Which skills are available to the agent\n2. **Expansion Layer**: Of available skills, which are showing full content vs summaries\n\nKey capabilities:\n- **Flexible selection**: Task-based, project-based, profile-based, semantic, dependency-graph\n- **Mid-session adjustable**: Loadouts can change during a session\n- **Dual control**: Both orchestrator (external) and agent (internal) can modify loadouts\n- **Progressive disclosure**: Skills start collapsed, expand on demand\n- **Context-aware**: Auto-suggest skills based on current task/errors\n\n## Reference: OpenSkills Patterns\n\nThis design adopts compatible patterns from [OpenSkills](https://github.com/numman-ali/openskills):\n\n- **SKILL.md format**: Skills stored as markdown with YAML frontmatter\n- **AGENTS.md XML format**: `<available_skills>` block for system prompt rendering\n- **Progressive disclosure**: Summaries visible, full content on demand\n- **CLI-style reads**: Explicit skill loading (we add MCP on top)\n\nKey difference: OpenSkills is stateless (no expansion tracking). We add stateful loadout management.\n\n## Core Types\n\n### LoadoutCriteria\n\nFlexible criteria for selecting skills into a loadout:\n\n```typescript\ninterface LoadoutCriteria {\n // === Explicit Selection ===\n include?: string[]; // Always include these skill IDs\n exclude?: string[]; // Never include these\n \n // === Filter-Based ===\n tags?: string[]; // Match any of these tags\n tagsAll?: string[]; // Must have ALL these tags\n status?: SkillStatus[]; // Filter by status (default: ['active'])\n minSuccessRate?: number; // Quality threshold (0-1)\n author?: string; // Filter by author\n \n // === Semantic/Context-Based ===\n taskDescription?: string; // Semantic match to task\n problemContext?: string; // Current problem being solved\n errorContext?: string; // Error message to match\n keywords?: string[]; // Keyword triggers\n \n // === Project-Based ===\n projectType?: string; // \"python\", \"typescript\", \"rust\", etc.\n filePatterns?: string[]; // Glob patterns of files in scope\n frameworks?: string[]; // Detected frameworks\n \n // === Relationship-Based ===\n rootSkills?: string[]; // Start here, traverse relationships\n includeDependencies?: boolean; // Follow 'depends_on' edges\n includeRelated?: boolean; // Include 'related' skills\n depth?: number; // Max traversal depth (default: 2)\n \n // === Limits ===\n maxSkills?: number; // Cap on loadout size\n maxTokens?: number; // Context budget (estimated)\n priorityOrder?: 'relevance' | 'usage' | 'successRate' | 'recent';\n \n // === Merge Behavior ===\n mode?: 'replace' | 'merge' | 'subtract'; // How to apply to current state\n}\n```\n\n### LoadoutState\n\nCurrent state of what's loaded for an agent:\n\n```typescript\ntype SkillState = 'available' | 'expanded' | 'pending';\n\ninterface LoadoutState {\n /** Skills available to the agent (summaries visible) */\n available: Map<string, Skill>;\n \n /** Skills with full content expanded */\n expanded: Set<string>;\n \n /** Skills requested by agent, pending orchestrator approval */\n pending: Set<string>;\n \n /** How this loadout was created */\n source: LoadoutSource;\n \n /** When the loadout was last modified */\n updatedAt: Date;\n}\n\ninterface LoadoutSource {\n type: 'criteria' | 'profile' | 'task' | 'project' | 'manual';\n criteria?: LoadoutCriteria;\n profileName?: string;\n taskDescription?: string;\n projectPath?: string;\n}\n```\n\n### Skill Extension\n\nExtend existing `Skill` interface in `src/types.ts`:\n\n```typescript\ninterface Skill {\n // ... existing fields\n \n serving?: {\n /** Short summary for collapsed view (defaults to description) */\n summary?: string;\n \n /** Estimated token count for context budgeting */\n tokenEstimate?: number;\n \n /** Auto-expand triggers */\n autoExpand?: ExpandTrigger[];\n \n /** Group ID for batch expansion */\n expansionGroup?: string;\n };\n}\n\ninterface ExpandTrigger {\n on: 'use' | 'mention' | 'error-match' | 'file-match' | 'explicit';\n conditions?: {\n keywords?: string[];\n errorPatterns?: string[];\n filePatterns?: string[];\n };\n}\n```\n\n## Core Components\n\n### 1. LoadoutCompiler (`src/serving/loadout-compiler.ts`)\n\nCompiles skills from criteria using multiple selection strategies:\n\n```typescript\ninterface LoadoutCompilerConfig {\n defaultMaxSkills?: number; // Default: 15\n defaultStatus?: SkillStatus[]; // Default: ['active']\n semanticThreshold?: number; // Default: 0.6\n}\n\nclass LoadoutCompiler {\n constructor(\n private skillBank: SkillBank,\n private config?: LoadoutCompilerConfig\n ) {}\n\n /**\n * Compile from flexible criteria (main entry point)\n */\n async compile(criteria: LoadoutCriteria): Promise<Skill[]> {\n let candidates = await this.skillBank.listSkills({ \n status: criteria.status ?? ['active'] \n });\n \n // Apply filters in priority order\n candidates = this.applyExplicitFilters(candidates, criteria);\n candidates = this.applyTagFilters(candidates, criteria);\n candidates = this.applyQualityFilters(candidates, criteria);\n candidates = await this.applySemanticFilters(candidates, criteria);\n candidates = await this.applyRelationshipFilters(candidates, criteria);\n candidates = this.applyLimits(candidates, criteria);\n \n return candidates;\n }\n\n /**\n * Compile for a specific task (semantic matching)\n */\n async compileForTask(taskDescription: string): Promise<Skill[]>;\n\n /**\n * Compile by analyzing a project directory\n */\n async compileForProject(projectPath: string): Promise<Skill[]>;\n\n /**\n * Compile from a named profile\n */\n async compileFromProfile(profileName: string): Promise<Skill[]>;\n\n /**\n * Detect project context from files\n */\n async detectProjectContext(projectPath: string): Promise<ProjectContext>;\n}\n\ninterface ProjectContext {\n type: string; // \"typescript\", \"python\", etc.\n frameworks: string[]; // [\"react\", \"express\", ...]\n patterns: string[]; // File patterns found\n packageManager?: string; // \"npm\", \"pip\", etc.\n}\n```\n\n### 2. SkillGraphServer (`src/serving/graph-server.ts`)\n\nMain orchestrator with dual control (orchestrator + agent):\n\n```typescript\ninterface GraphServerConfig {\n /** SkillBank instance */\n skillBank: SkillBank;\n \n /** Initial loadout criteria (optional) */\n initialLoadout?: LoadoutCriteria;\n \n /** Whether agent can modify loadout */\n agentCanModify?: boolean; // Default: true\n \n /** Whether agent additions need approval */\n requireApproval?: boolean; // Default: false\n \n /** Auto-expand skills on first use */\n autoExpandOnUse?: boolean; // Default: true\n \n /** Max skills in expanded state (context budget) */\n maxExpanded?: number; // Default: 5\n \n /** Eviction strategy when maxExpanded reached */\n evictionStrategy?: 'lru' | 'priority' | 'manual';\n \n /** Available loadout profiles */\n profiles?: Record<string, LoadoutCriteria>;\n \n /** Persist state across sessions */\n persistState?: boolean; // Default: false\n}\n\nclass SkillGraphServer {\n private state: LoadoutState;\n private compiler: LoadoutCompiler;\n \n constructor(config: GraphServerConfig);\n\n // =========================================================================\n // External API (for Orchestrator)\n // =========================================================================\n\n /** Set loadout from criteria (replaces current) */\n async setLoadout(criteria: LoadoutCriteria): Promise<LoadoutState>;\n \n /** Set loadout for a specific task */\n async setLoadoutForTask(taskDescription: string): Promise<LoadoutState>;\n \n /** Set loadout based on project analysis */\n async setLoadoutForProject(projectPath: string): Promise<LoadoutState>;\n \n /** Switch to a named profile */\n async setLoadoutFromProfile(profileName: string): Promise<LoadoutState>;\n \n /** Merge additional skills into current loadout */\n async addSkills(skillIds: string[]): Promise<void>;\n \n /** Remove skills from loadout */\n removeSkills(skillIds: string[]): void;\n \n /** Approve pending skill requests from agent */\n approvePending(skillIds: string[]): void;\n \n /** Deny pending skill requests */\n denyPending(skillIds: string[]): void;\n \n /** Get current state */\n getState(): LoadoutState;\n\n // =========================================================================\n // Agent API (exposed via MCP tools)\n // =========================================================================\n\n /** Agent requests to change loadout */\n async agentSetLoadout(criteria: LoadoutCriteria): Promise<LoadoutState | 'denied'>;\n \n /** Agent requests additional skills */\n async agentRequestSkills(skillIds: string[]): Promise<{ added: string[]; pending: string[] }>;\n \n /** Agent searches for skills by query */\n async agentSearchSkills(query: string, limit?: number): Promise<SkillSummary[]>;\n \n /** Agent expands a skill to see full content */\n async agentExpandSkill(skillId: string): Promise<Skill | null>;\n \n /** Agent collapses a skill back to summary */\n agentCollapseSkill(skillId: string): void;\n \n /** Agent lists current loadout */\n agentListLoadout(): LoadoutView;\n \n /** Agent switches to a profile */\n async agentSwitchProfile(profileName: string): Promise<LoadoutState | 'denied'>;\n\n // =========================================================================\n // Rendering\n // =========================================================================\n\n /** Render current state for system prompt (OpenSkills-compatible XML) */\n renderSystemPrompt(): string;\n \n /** Get MCP tool definitions for current loadout */\n getMcpTools(): ToolDefinition[];\n \n /** Render a single skill's full content */\n renderSkillContent(skillId: string): string;\n\n // =========================================================================\n // Events\n // =========================================================================\n\n on(event: 'loadout:changed' | 'skill:expanded' | 'skill:collapsed' | 'pending:added', \n handler: (data: any) => void): void;\n}\n\ninterface LoadoutView {\n available: SkillSummary[];\n pending: string[];\n profiles: string[];\n}\n\ninterface SkillSummary {\n id: string;\n name: string;\n description: string;\n expanded: boolean;\n tags: string[];\n}\n```\n\n### 3. ViewRenderer (`src/serving/view-renderer.ts`)\n\nRenders loadout state for different consumers:\n\n```typescript\nclass ViewRenderer {\n /**\n * Render as OpenSkills-compatible XML for system prompt\n */\n renderXml(state: LoadoutState): string;\n \n /**\n * Render as Markdown (for debugging/display)\n */\n renderMarkdown(state: LoadoutState): string;\n \n /**\n * Render skill in SKILL.md format\n */\n renderSkillMd(skill: Skill): string;\n \n /**\n * Estimate token count for current state\n */\n estimateTokens(state: LoadoutState): number;\n}\n```\n\nExample XML output (OpenSkills-compatible):\n\n```xml\n<skills_system>\n<usage>\nSkills in your current loadout. Use skill_expand to see full content.\nUse loadout_search to find additional skills. Use loadout_add to request them.\n</usage>\n\n<available_skills>\n<skill id=\"tdd-workflow\" state=\"expanded\">\n <name>TDD Workflow</name>\n <description>Test-driven development patterns</description>\n <content>\n ## Problem\n Writing tests after code leads to incomplete coverage...\n \n ## Solution\n 1. Write failing test first\n 2. Implement minimal code to pass\n ...\n </content>\n</skill>\n\n<skill id=\"security-review\" state=\"available\">\n <name>Security Review</name>\n <description>Security vulnerability detection and remediation</description>\n</skill>\n</available_skills>\n\n<pending_requests>\n <skill id=\"oauth-patterns\">Awaiting approval</skill>\n</pending_requests>\n</skills_system>\n```\n\n### 4. MCP Server (`src/mcp/`)\n\nMCP server with loadout management tools:\n\n#### Loadout Management Tools\n\n| Tool | Description |\n|------|-------------|\n| `loadout_list` | List available skills with expansion state |\n| `loadout_search` | Search for skills to add (semantic) |\n| `loadout_add` | Request skills to be added |\n| `loadout_remove` | Remove skills from loadout |\n| `loadout_profile` | Switch to a named profile |\n| `loadout_set` | Set loadout from criteria (if permitted) |\n\n#### Skill Tools\n\n| Tool | Description |\n|------|-------------|\n| `skill_expand` | Expand a skill to see full content |\n| `skill_collapse` | Collapse back to summary |\n| `skill_use` | Apply/invoke an expanded skill |\n\n#### Dynamic Tools\n\nWhen a skill is expanded, it becomes a callable tool: `skill_{id}`\n\nUsing a skill tool:\n1. Triggers `autoExpandOnUse` for related skills\n2. Records usage for metrics\n3. Returns skill guidance for the agent to follow\n\n#### Tool Definitions\n\n```typescript\n// src/mcp/tools/loadout-tools.ts\n\nconst loadoutListTool: ToolDefinition = {\n name: 'loadout_list',\n description: 'List skills in your current loadout with their expansion state',\n inputSchema: {\n type: 'object',\n properties: {\n filter: { \n type: 'string', \n description: 'Optional: filter by \"expanded\", \"available\", or \"pending\"' \n }\n }\n }\n};\n\nconst loadoutSearchTool: ToolDefinition = {\n name: 'loadout_search',\n description: 'Search for skills that could help with your current task',\n inputSchema: {\n type: 'object',\n properties: {\n query: { type: 'string', description: 'What you need help with' },\n limit: { type: 'number', description: 'Max results (default: 5)' }\n },\n required: ['query']\n }\n};\n\nconst loadoutAddTool: ToolDefinition = {\n name: 'loadout_add',\n description: 'Request skills to be added to your loadout',\n inputSchema: {\n type: 'object',\n properties: {\n skill_ids: { \n type: 'array', \n items: { type: 'string' },\n description: 'Skill IDs to add'\n }\n },\n required: ['skill_ids']\n }\n};\n\nconst skillExpandTool: ToolDefinition = {\n name: 'skill_expand',\n description: 'Expand a skill to see its full content and guidance',\n inputSchema: {\n type: 'object',\n properties: {\n skill_id: { type: 'string', description: 'ID of skill to expand' }\n },\n required: ['skill_id']\n }\n};\n```\n\n## File Structure\n\n```\nsrc/\n├── serving/ # NEW\n│ ├── index.ts # Public exports\n│ ├── types.ts # LoadoutCriteria, LoadoutState, etc.\n│ ├── graph-server.ts # Main orchestrator\n│ ├── loadout-compiler.ts # Selection logic\n│ ├── view-renderer.ts # XML/Markdown rendering\n│ ├── project-detector.ts # Auto-detect project context\n│ └── profiles/ # Built-in loadout profiles\n│ ├── index.ts\n│ ├── code-review.ts\n│ ├── implementation.ts\n│ ├── debugging.ts\n│ └── security.ts\n│\n├── mcp/ # NEW\n│ ├── index.ts # Public exports\n│ ├── server.ts # MCP server implementation\n│ ├── handlers.ts # Tool execution handlers\n│ └── tools/\n│ ├── loadout-tools.ts # Loadout management tools\n│ └── skill-tools.ts # Skill expand/collapse/use\n│\n├── types.ts # EXTEND with Skill.serving\n└── matching/ # EXISTING (used by compiler)\n```\n\n## Example Flows\n\n### Flow 1: Orchestrator Pre-configures Agent\n\n```typescript\n// Orchestrator spawning an agent for PR review\nconst server = new SkillGraphServer({\n skillBank,\n agentCanModify: true,\n requireApproval: false,\n});\n\n// Set loadout based on task\nawait server.setLoadoutForTask(\"Review PR #123 for security issues and code quality\");\n\n// Get what agent needs\nconst systemPrompt = server.renderSystemPrompt();\nconst tools = server.getMcpTools();\n\n// Spawn agent\nspawnAgent({ systemPrompt, tools });\n```\n\n### Flow 2: Agent Discovers and Adds Skills Mid-Session\n\n```\nUser: Review this code for SQL injection vulnerabilities.\n\nAgent: I should check if there are relevant security skills.\n\n→ loadout_search({ query: \"SQL injection prevention\" })\n← [{ id: \"sql-security\", name: \"SQL Security Patterns\", description: \"...\" }]\n\nAgent: Found one. Let me add it to my loadout.\n\n→ loadout_add({ skill_ids: [\"sql-security\"] })\n← { added: [\"sql-security\"], pending: [] }\n\nAgent: Now let me see the full guidance.\n\n→ skill_expand({ skill_id: \"sql-security\" })\n← { id: \"sql-security\", content: \"## Problem\\nSQL injection occurs when...\" }\n\nAgent: [Applies the skill's guidance to review the code]\n```\n\n### Flow 3: Approval Flow (Controlled Environment)\n\n```typescript\n// Orchestrator requires approval for sensitive skills\nconst server = new SkillGraphServer({\n skillBank,\n agentCanModify: true,\n requireApproval: true, // Agent must request, human approves\n});\n\n// Agent requests a skill...\n// Tool: loadout_add({ skill_ids: [\"production-deploy\"] })\n// Response: { added: [], pending: [\"production-deploy\"] }\n\n// Agent sees: \"Skill requested, awaiting approval.\"\n\n// Human/orchestrator approves\nserver.approvePending([\"production-deploy\"]);\n\n// Agent can now expand and use it\n```\n\n### Flow 4: Profile Switching\n\n```typescript\n// Define profiles\nconst profiles = {\n \"code-review\": {\n tags: [\"review\", \"quality\", \"security\"],\n maxSkills: 5,\n },\n \"implementation\": {\n rootSkills: [\"tdd-workflow\", \"coding-standards\"],\n includeDependencies: true,\n maxSkills: 8,\n },\n \"debugging\": {\n taskDescription: \"diagnose and fix issues\",\n tags: [\"debugging\", \"logging\"],\n },\n};\n\nconst server = new SkillGraphServer({ skillBank, profiles });\n\n// Agent can switch profiles mid-session\n// Tool: loadout_profile({ name: \"debugging\" })\n// → Loadout changes to debugging-focused skills\n```\n\n### Flow 5: Project-Based Auto-Configuration\n\n```typescript\n// Analyze project and configure loadout automatically\nawait server.setLoadoutForProject(\"/path/to/project\");\n\n// Detects:\n// - package.json → Node.js\n// - tsconfig.json → TypeScript \n// - prisma/ → Prisma ORM\n// - .github/workflows/ → CI/CD\n\n// Selects relevant skills:\n// → typescript-patterns, nodejs-backend, prisma-patterns, github-actions\n```\n\n## Configuration Options\n\n### GraphServerConfig\n\n```typescript\ninterface GraphServerConfig {\n // Core\n skillBank: SkillBank;\n initialLoadout?: LoadoutCriteria;\n \n // Agent permissions\n agentCanModify?: boolean; // Default: true\n agentCanSetLoadout?: boolean; // Default: false (can search/add, not replace)\n agentCanSwitchProfile?: boolean; // Default: true\n requireApproval?: boolean; // Default: false\n \n // Expansion behavior\n autoExpandOnUse?: boolean; // Default: true\n autoExpandRelated?: boolean; // Default: true\n maxExpanded?: number; // Default: 5\n evictionStrategy?: 'lru' | 'priority' | 'manual';\n \n // Profiles\n profiles?: Record<string, LoadoutCriteria>;\n defaultProfile?: string;\n \n // Persistence\n persistState?: boolean; // Default: false\n stateStorage?: StateStorage; // Custom persistence adapter\n \n // Rendering\n outputFormat?: 'xml' | 'markdown'; // Default: 'xml'\n includeTokenEstimates?: boolean; // Default: false\n}\n```\n\n## Built-in Profiles\n\n### code-review\n```typescript\n{\n tags: [\"review\", \"quality\", \"security\"],\n taskDescription: \"review code for quality, security, and best practices\",\n maxSkills: 6,\n priorityOrder: 'relevance'\n}\n```\n\n### implementation \n```typescript\n{\n rootSkills: [\"tdd-workflow\", \"coding-standards\"],\n includeDependencies: true,\n tags: [\"development\", \"testing\"],\n maxSkills: 8\n}\n```\n\n### debugging\n```typescript\n{\n taskDescription: \"diagnose and fix bugs, analyze errors\",\n tags: [\"debugging\", \"logging\", \"error-handling\"],\n maxSkills: 5\n}\n```\n\n### security\n```typescript\n{\n tags: [\"security\"],\n tagsAll: [\"security\"],\n taskDescription: \"security review, vulnerability detection\",\n maxSkills: 8,\n minSuccessRate: 0.7\n}\n```\n\n## Success Criteria\n\n- [ ] LoadoutCompiler supports all selection strategies (explicit, tag, semantic, project, relationship)\n- [ ] SkillGraphServer provides both orchestrator API and agent API\n- [ ] Agent can search, add, expand, collapse skills mid-session\n- [ ] Approval flow works when requireApproval=true\n- [ ] Profile switching works mid-session\n- [ ] MCP tools update dynamically (tools/list_changed)\n- [ ] System prompt renders OpenSkills-compatible XML\n- [ ] maxExpanded limit enforced with configurable eviction\n- [ ] Project detection infers relevant skills from codebase\n- [ ] Token estimates available for context budgeting\n\n## Open Questions (Resolved)\n\n1. ~~State persistence~~ → Configurable via `persistState`, default false\n2. ~~Auto-collapse~~ → Use `evictionStrategy` when `maxExpanded` reached\n3. ~~Context budget~~ → `maxExpanded` + `maxTokens` in criteria + token estimates\n\n## Future Enhancements\n\n- **Usage-based learning**: Track which skills are used together, suggest bundles\n- **Adaptive profiles**: Profiles that evolve based on usage patterns\n- **Cross-agent sharing**: Share loadout state between related agents\n- **Skill recommendations**: Proactively suggest skills based on errors/context\n\n## Related\n\n- Existing: `SkillBank`, `SemanticMatcher`, `DependencyGraph`\n- Reference: [OpenSkills](https://github.com/numman-ali/openskills) patterns\n- Integration: `@modelcontextprotocol/sdk` for MCP server\n","priority":1,"archived":0,"archived_at":null,"created_at":"2026-01-29 23:37:43","updated_at":"2026-02-03 20:50:05","parent_id":null,"parent_uuid":null,"relationships":[],"tags":["agent-control","architecture","loadout","mcp","serving"]}
2
- {"id":"s-7pu7","uuid":"77b52caa-2dc2-4577-b4f2-c84bbef7e45d","title":"Remove MCP Server and Expose Loadout/Skill Operations via CLI","file_path":"specs/s-7pu7_remove_mcp_server_and_expose_loadout_skill_operati.md","content":"\n## Goal\n\nRemove the `src/mcp/` directory and associated exports, replacing all MCP tool functionality with CLI commands under a new `loadout` command group and `skill` subcommands. The serving layer (`src/serving/`) and its tests remain intact.\n\n## Background\n\nThe MCP server wraps `SkillGraphServer` providing 10 tools via JSON-RPC 2.0:\n- 6 loadout tools: `loadout_list`, `loadout_search`, `loadout_add`, `loadout_remove`, `loadout_profile`, `loadout_set`\n- 4 skill tools: `skill_expand`, `skill_collapse`, `skill_use`, `skill_get`\n\nThese operate on **stateful loadout state** (expand/collapse, add/remove from loadout). The CLI must persist this state between invocations.\n\n## Key Challenge: State Persistence\n\nMCP tools operate on in-memory `SkillGraphServer` state within a long-lived process. CLI commands are stateless invocations. Solution: persist loadout state to a JSON file alongside the skill storage, loading it at command start and saving after mutations.\n\n## What to Remove\n\n1. `src/mcp/` directory (6 files)\n2. `src/cli/commands/mcp.ts`\n3. MCP exports from `src/index.ts` (lines 386-416)\n4. MCP import in `src/cli/index.ts` \n5. `test/mcp.test.ts`\n6. MCP-specific test sections from `test/serving.test.ts` (lines 1634-1955 approximately)\n7. `ToolDefinition` type can remain in `src/serving/types.ts` (it is a generic type used for tool schemas)\n\n## What to Add\n\n### State Persistence Layer\n\nNew file: `src/serving/state-persistence.ts`\n- `LoadoutStatePersistence` class\n- `saveState(state: LoadoutState, filePath: string)`: Serializes Map/Set to JSON\n- `loadState(filePath: string): LoadoutState | null`: Deserializes back\n- Default file location: `{skillPath}/.loadout-state.json`\n\n### CLI Command Group: `loadout`\n\nNew file: `src/cli/commands/loadout/index.ts` - Command group container\n\nSubcommands (each a separate file under `src/cli/commands/loadout/`):\n\n1. **`loadout list`** - maps to `loadout_list`\n - Options: `--filter <all|expanded|available|pending>`\n - Displays loadout with expansion status, pending requests, available profiles\n\n2. **`loadout search <query>`** - maps to `loadout_search`\n - Arguments: `<query>` (required)\n - Options: `--limit <n>` (default: 5)\n - Searches all skills, shows results with summary info\n\n3. **`loadout add <skill-ids...>`** - maps to `loadout_add`\n - Arguments: variadic `<skill-ids...>`\n - Adds skills to current loadout\n\n4. **`loadout remove <skill-ids...>`** - maps to `loadout_remove`\n - Arguments: variadic `<skill-ids...>`\n - Removes skills from loadout\n\n5. **`loadout profile <name>`** - maps to `loadout_profile`\n - Arguments: `<name>` (required)\n - Options: `--list` (list available profiles without switching)\n - Switches loadout to a named profile\n\n6. **`loadout set`** - maps to `loadout_set`\n - Options: `--tags <tags...>`, `--tags-all <tags...>`, `--task <description>`, `--max-skills <n>`\n - Sets loadout from criteria\n\n7. **`loadout render`** - maps to `renderSystemPrompt()`\n - Options: `--format <xml|markdown>` (default: xml)\n - Renders current loadout as system prompt content\n\n8. **`loadout clear`** - new convenience command\n - Clears the persisted loadout state\n\n### CLI Subcommands under `skill` (expand existing `show`):\n\nNew file: `src/cli/commands/loadout/skill-ops.ts`\n\nThese are registered as subcommands of the `loadout` group:\n\n9. **`loadout expand <skill-id>`** - maps to `skill_expand`\n - Expands a skill in the loadout, shows full content\n\n10. **`loadout collapse <skill-id>`** - maps to `skill_collapse`\n - Collapses a skill back to summary\n\n11. **`loadout use <skill-id>`** - maps to `skill_use`\n - Records skill usage, auto-expands\n\n12. **`loadout get <skill-id>`** - maps to `skill_get`\n - Gets skill details (respects expansion state)\n\n### CLI Utility: Server Factory\n\nNew file: `src/cli/utils/loadout-server.ts`\n- `createLoadoutServer(options: GlobalOptions)`: Creates a `SkillGraphServer` with state persistence\n - Initializes `FilesystemStorageAdapter`\n - Loads persisted state if it exists\n - Returns `{ server, save() }` where `save()` persists current state\n\n### Output Formatting\n\nAdd to `src/cli/utils/output.ts`:\n- `formatLoadoutView(view: LoadoutView)`: Formats loadout listing\n- `formatSkillSummary(summary: SkillSummary)`: Formats skill summary line\n- `formatSearchResult(results: SkillSummary[])`: Formats search results\n\n### Tests\n\nNew file: `test/loadout-cli.test.ts`\n- Tests for state persistence (save/load roundtrip)\n- Tests for each CLI subcommand's logic\n- Tests that verify the loadout server factory works correctly\n\n## Implementation Sequence\n\n1. Create state persistence layer\n2. Create loadout server factory utility\n3. Create loadout command group with all subcommands\n4. Add output formatting helpers\n5. Wire up loadout command in CLI index\n6. Remove MCP module, exports, and tests\n7. Clean up serving test (remove MCP sections)\n8. Update CLAUDE.md documentation\n9. Write new tests\n10. Verify build and all tests pass\n","priority":1,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:34:24","updated_at":"2026-03-03 22:34:24","parent_id":null,"parent_uuid":null,"relationships":[],"tags":["cli","mcp-removal","refactoring","serving"]}
3
- {"id":"s-41re","uuid":"3b19887e-c6e3-4d4e-a7a5-9f0230a6c7ff","title":"Refactor storage configuration: rename types, add SQLite to SkillBank, add fallback logic","file_path":"specs/s-41re_refactor_storage_configuration_rename_types_add_sq.md","content":"## Summary\n\nRefactor the storage configuration layer so that:\n1. `'memory'` is removed from user-facing config type unions (but MemoryStorageAdapter remains available for programmatic/test use)\n2. `'filesystem'` is renamed to `'json'` in config type strings\n3. SQLite becomes the primary/default storage and is wired into SkillBankConfig and the SkillBank constructor\n4. Graceful fallback: if `better-sqlite3` fails to load, automatically fall back to the `json` (filesystem) adapter\n5. CLI uses `sqlite` by default\n\n## Motivation\n\nThe current codebase has a fully implemented `SQLiteStorageAdapter` that is never instantiated by `SkillBank`. The global config already defaults to `'sqlite'`, but `SkillBankConfig` only supports `'memory'` and `'filesystem'`. This mismatch means the default config cannot actually be used. The rename of `'filesystem'` to `'json'` clarifies that this is a flat-file format option rather than implying SQLite is not filesystem-based.\n\n## Constraints\n- MemoryStorageAdapter must remain importable and functional for tests\n- The fallback from SQLite to JSON should be graceful (try/catch around dynamic import or instantiation of better-sqlite3)\n- Do not change the actual filesystem adapter's serialization format (still YAML+Markdown SKILL.md files)\n- Minimize test changes -- most tests use MemoryStorageAdapter directly via `{ type: 'memory' }` in SkillBankConfig","priority":1,"archived":0,"archived_at":null,"created_at":"2026-03-03 22:44:00","updated_at":"2026-03-03 22:44:00","parent_id":null,"parent_uuid":null,"relationships":[],"tags":["config","refactor","storage"]}
@@ -1,132 +0,0 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance for Claude Code when working with this repository.
4
-
5
- ## Project Overview
6
-
7
- **skill-tree** is a TypeScript library for managing agent skill versions and evolution. It provides versioned skill storage, a serving layer for dynamic loadouts, multi-agent sync, and federation across repositories.
8
-
9
- ## Key Architecture
10
-
11
- ```
12
- src/
13
- ├── index.ts # Main exports (barrel)
14
- ├── skill-bank.ts # Main orchestrator (SkillBank class)
15
- ├── types.ts # Core type definitions
16
- ├── adapters/ # Session format adapters (Claude Code, OpenAI, etc.) — standalone utilities, not wired into SkillBank
17
- ├── storage/ # Storage adapters (memory, cached filesystem+SQLite)
18
- ├── versioning/ # Lineage tracking, version management, skill merging
19
- ├── hooks/ # Event hooks and hook registry
20
- ├── agents/ # AGENTS.md generation, parsing, and bidirectional sync
21
- ├── serving/ # Serving layer (loadouts, profiles, token budgeting)
22
- ├── materialization/ # Agent-discoverable output (symlinks, AGENTS.md auto-regen)
23
- ├── federation/ # Remote repository connections and skill sharing
24
- ├── sync/ # Git-based multi-agent sync
25
- ├── config/ # Configuration loading
26
- ├── services/ # Indexer and sync services
27
- ├── import/ # Skill import utilities
28
- └── cli/ # Command-line interface
29
- ```
30
-
31
- ## Core Concepts
32
-
33
- ### Skill
34
- A reusable piece of knowledge with:
35
- - `description`: Short summary for discovery
36
- - `instructions`: Free-form markdown body (the SKILL.md content)
37
- - Semantic versioning and lineage tracking
38
-
39
- ### SkillBank
40
- Main orchestrator. Unified interface for CRUD, versioning, serving, sync, and federation. Created via `createSkillBank(config)`.
41
-
42
- ### SkillGraphServer
43
- Serving layer created via `bank.createServingLayer()`. Manages dynamic skill loadouts with expand/collapse, profiles, and token budgeting. Has separate orchestrator API and agent API.
44
-
45
- ### Storage
46
- Two storage backends:
47
- - `MemoryStorageAdapter`: In-memory (for testing)
48
- - `CachedStorageAdapter`: JSON filesystem (source of truth) + SQLite cache (fast queries)
49
-
50
- ### HookRegistry
51
- Async event hook system. Two levels:
52
- - `bank.on(handler)`: Simple synchronous event listeners for `skill:created/updated/deleted/deprecated`
53
- - `bank.getHookRegistry().register()`: Advanced async hooks with priority, filtering, and storage-level events (`storage:after-save`, `storage:after-delete`)
54
-
55
- ### Materializer
56
- Agent-discoverable skill output following the [Agent Skills standard](https://agentskills.io). Configured via `materialization` in `SkillBankConfig`:
57
- - **Symlinks**: Creates symlinks from standard discovery paths (`.claude/skills/`, `.agent/skills/`) into `.skilltree/skills/`
58
- - **AGENTS.md**: Auto-regenerates on skill changes with `<!-- SKILLTREE_START/END -->` markers to coexist with other content
59
- - **Read command**: `skill-tree read <name>` outputs SKILL.md to stdout for agent activation (OpenSkills-compatible progressive disclosure)
60
-
61
- ## SkillBank Public API
62
-
63
- ```
64
- Lifecycle: initialize(), shutdown()
65
- CRUD: getSkill(), listSkills(filter), searchSkills(), saveSkill(), deleteSkill(), deprecateSkill()
66
- Versioning: createVersion(), forkSkill(), getVersionHistory(), getLineage(), rollbackSkill(), compareVersions()
67
- Events: on(), off(), getEventHandlerCount()
68
- Utilities: getStats(), exportAll(), importSkills()
69
- Accessors: getStorage(), getHookRegistry()
70
- Serving: createServingLayer()
71
- Sync: sync (getter → SyncManager)
72
- Federation: federation (getter → FederationManager)
73
- ```
74
-
75
- ## Development Commands
76
-
77
- ```bash
78
- # Build
79
- npm run build
80
-
81
- # Run all tests
82
- npm test
83
-
84
- # Run specific test file
85
- npx vitest run test/skill-bank.test.ts
86
-
87
- # Type check
88
- npx tsc --noEmit
89
- ```
90
-
91
- ## Testing Patterns
92
-
93
- Tests use vitest with a custom test harness. Each test file wraps suites in `describe()/it()`:
94
-
95
- ```typescript
96
- describe('My Feature', () => {
97
- it('passes all tests', async () => {
98
- const failed = await runTests();
99
- expect(failed).toBe(0);
100
- });
101
- });
102
- ```
103
-
104
- Test utilities in `test/utils.ts`: `suite()`, `test()`, `assertEqual()`, `assertTrue()`, `assertNotNull()`, etc.
105
-
106
- ## Important Files
107
-
108
- - `src/skill-bank.ts`: Main API entry point
109
- - `src/index.ts`: Public barrel exports
110
- - `src/serving/graph-server.ts`: Serving layer (loadouts, profiles)
111
- - `src/materialization/materializer.ts`: Symlink management and AGENTS.md auto-regen
112
- - `src/federation/federation-manager.ts`: Federation orchestrator
113
- - `src/sync/sync-manager.ts`: Git-based multi-agent sync
114
- - `src/hooks/registry.ts`: Hook registry for event-driven extensibility
115
- - `src/storage/cached.ts`: Cached storage adapter (JSON + SQLite)
116
-
117
- ## Code Style
118
-
119
- - TypeScript with strict mode
120
- - ES modules (`.js` extensions in imports)
121
- - JSDoc comments for public APIs
122
- - Interface types preferred over type aliases for extensibility
123
- - Dependency injection for external integrations
124
-
125
- ## Known Pre-existing Type Errors
126
-
127
- `src/config/loader.ts` and `src/services/sync.ts` have type errors that predate recent refactors. These don't affect test runs.
128
-
129
- ## References
130
-
131
- - [OpenSkills](https://github.com/numman-ali/openskills): Skill format inspiration
132
- - [Claudeception](https://github.com/blader/Claudeception): Quality gates concept