@desplega.ai/agent-swarm 1.20.0 → 1.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (810) hide show
  1. package/.claude/settings.json +84 -0
  2. package/.claude/settings.local.json +3 -1
  3. package/.entire/settings.json +4 -0
  4. package/.env.docker.example +40 -23
  5. package/.env.example +39 -1
  6. package/.github/ISSUE_TEMPLATE/bug_report.yml +78 -0
  7. package/.github/ISSUE_TEMPLATE/community-template.yml +77 -0
  8. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  9. package/.github/ISSUE_TEMPLATE/feature_request.yml +60 -0
  10. package/.github/PULL_REQUEST_TEMPLATE/community-template.md +29 -0
  11. package/.github/workflows/ci.yml +3 -27
  12. package/.github/workflows/docker-and-deploy.yml +20 -5
  13. package/.github/workflows/merge-gate.yml +233 -0
  14. package/.opencode/plugins/entire.ts +133 -0
  15. package/.superset/config.json +6 -0
  16. package/.wts-setup.ts +103 -34
  17. package/CHANGELOG.md +447 -0
  18. package/CLAUDE.md +422 -5
  19. package/CONTRIBUTING.md +46 -1
  20. package/DEPLOYMENT.md +26 -9
  21. package/Dockerfile +15 -7
  22. package/Dockerfile.worker +99 -67
  23. package/MCP.md +452 -17
  24. package/README.md +271 -169
  25. package/api-entrypoint.sh +56 -0
  26. package/depot.json +1 -0
  27. package/docker-compose.example.yml +194 -3
  28. package/docker-compose.local.yml +119 -0
  29. package/docker-entrypoint.sh +393 -113
  30. package/docs-site/app/api/search/route.ts +4 -0
  31. package/docs-site/app/docs/[[...slug]]/page.tsx +87 -0
  32. package/docs-site/app/docs/layout.tsx +12 -0
  33. package/docs-site/app/globals.css +24 -0
  34. package/docs-site/app/layout.config.tsx +34 -0
  35. package/docs-site/app/layout.tsx +119 -0
  36. package/docs-site/app/llms-full.txt/route.ts +11 -0
  37. package/docs-site/app/llms.mdx/docs/[[...slug]]/route.ts +24 -0
  38. package/docs-site/app/llms.txt/route.ts +8 -0
  39. package/docs-site/app/page.tsx +5 -0
  40. package/docs-site/app/robots.ts +13 -0
  41. package/docs-site/app/sitemap.ts +37 -0
  42. package/docs-site/components/api-page.client.tsx +4 -0
  43. package/docs-site/components/api-page.tsx +7 -0
  44. package/docs-site/components/mdx/mermaid.tsx +55 -0
  45. package/docs-site/content/docs/(documentation)/architecture/agents.mdx +117 -0
  46. package/docs-site/content/docs/(documentation)/architecture/hooks.mdx +77 -0
  47. package/docs-site/content/docs/(documentation)/architecture/memory.mdx +96 -0
  48. package/docs-site/content/docs/(documentation)/architecture/meta.json +4 -0
  49. package/docs-site/content/docs/(documentation)/architecture/overview.mdx +172 -0
  50. package/docs-site/content/docs/(documentation)/concepts/epics.mdx +98 -0
  51. package/docs-site/content/docs/(documentation)/concepts/meta.json +4 -0
  52. package/docs-site/content/docs/(documentation)/concepts/scheduling.mdx +136 -0
  53. package/docs-site/content/docs/(documentation)/concepts/services.mdx +104 -0
  54. package/docs-site/content/docs/(documentation)/concepts/task-lifecycle.mdx +148 -0
  55. package/docs-site/content/docs/(documentation)/concepts/workflows.mdx +209 -0
  56. package/docs-site/content/docs/(documentation)/contributing.mdx +158 -0
  57. package/docs-site/content/docs/(documentation)/getting-started.mdx +157 -0
  58. package/docs-site/content/docs/(documentation)/guides/agentmail-integration.mdx +79 -0
  59. package/docs-site/content/docs/(documentation)/guides/deployment.mdx +171 -0
  60. package/docs-site/content/docs/(documentation)/guides/github-integration.mdx +81 -0
  61. package/docs-site/content/docs/(documentation)/guides/gitlab-integration.mdx +93 -0
  62. package/docs-site/content/docs/(documentation)/guides/linear-integration.mdx +98 -0
  63. package/docs-site/content/docs/(documentation)/guides/meta.json +13 -0
  64. package/docs-site/content/docs/(documentation)/guides/sentry-integration.mdx +52 -0
  65. package/docs-site/content/docs/(documentation)/guides/slack-integration.mdx +179 -0
  66. package/docs-site/content/docs/(documentation)/guides/x402-payments.mdx +154 -0
  67. package/docs-site/content/docs/(documentation)/index.mdx +65 -0
  68. package/docs-site/content/docs/(documentation)/meta.json +19 -0
  69. package/docs-site/content/docs/(documentation)/reference/cli.mdx +241 -0
  70. package/docs-site/content/docs/(documentation)/reference/environment-variables.mdx +205 -0
  71. package/docs-site/content/docs/(documentation)/reference/mcp-tools.mdx +449 -0
  72. package/docs-site/content/docs/(documentation)/reference/meta.json +4 -0
  73. package/docs-site/content/docs/api-reference/active-sessions.mdx +9 -0
  74. package/docs-site/content/docs/api-reference/agents.mdx +9 -0
  75. package/docs-site/content/docs/api-reference/channels.mdx +9 -0
  76. package/docs-site/content/docs/api-reference/config.mdx +9 -0
  77. package/docs-site/content/docs/api-reference/debug.mdx +9 -0
  78. package/docs-site/content/docs/api-reference/ecosystem.mdx +9 -0
  79. package/docs-site/content/docs/api-reference/epics.mdx +9 -0
  80. package/docs-site/content/docs/api-reference/index.mdx +32 -0
  81. package/docs-site/content/docs/api-reference/memory.mdx +9 -0
  82. package/docs-site/content/docs/api-reference/meta.json +25 -0
  83. package/docs-site/content/docs/api-reference/poll.mdx +9 -0
  84. package/docs-site/content/docs/api-reference/repos.mdx +9 -0
  85. package/docs-site/content/docs/api-reference/schedules.mdx +9 -0
  86. package/docs-site/content/docs/api-reference/session-data.mdx +9 -0
  87. package/docs-site/content/docs/api-reference/stats.mdx +9 -0
  88. package/docs-site/content/docs/api-reference/tasks.mdx +9 -0
  89. package/docs-site/content/docs/api-reference/trackers.mdx +9 -0
  90. package/docs-site/content/docs/api-reference/webhooks.mdx +9 -0
  91. package/docs-site/content/docs/api-reference/workflows.mdx +9 -0
  92. package/docs-site/content/docs/meta.json +3 -0
  93. package/docs-site/lib/get-llm-text.ts +10 -0
  94. package/docs-site/lib/openapi.ts +23 -0
  95. package/docs-site/lib/source.ts +8 -0
  96. package/docs-site/mdx-components.tsx +13 -0
  97. package/docs-site/next.config.mjs +29 -0
  98. package/docs-site/package.json +35 -0
  99. package/docs-site/pnpm-lock.yaml +5407 -0
  100. package/docs-site/postcss.config.mjs +8 -0
  101. package/docs-site/scripts/generate-docs.ts +171 -0
  102. package/docs-site/source.config.ts +17 -0
  103. package/docs-site/tsconfig.json +46 -0
  104. package/ecosystem.config.cjs +4 -4
  105. package/landing/next.config.ts +14 -0
  106. package/landing/package.json +31 -0
  107. package/landing/pnpm-lock.yaml +1091 -0
  108. package/landing/postcss.config.mjs +8 -0
  109. package/landing/public/apple-touch-icon.png +0 -0
  110. package/landing/public/favicon.ico +0 -0
  111. package/landing/public/logo.png +0 -0
  112. package/landing/public/og-image.png +0 -0
  113. package/landing/public/omghost-desplega.svg +30 -0
  114. package/landing/public/omghost-openfort.svg +9 -0
  115. package/landing/src/app/actions/waitlist.ts +25 -0
  116. package/landing/src/app/blog/openfort-hackathon/page.tsx +863 -0
  117. package/landing/src/app/blog/page.tsx +162 -0
  118. package/landing/src/app/blog/swarm-metrics/page.tsx +685 -0
  119. package/landing/src/app/examples/page.tsx +174 -0
  120. package/landing/src/app/examples/x402/page.tsx +456 -0
  121. package/landing/src/app/globals.css +122 -0
  122. package/landing/src/app/layout.tsx +134 -0
  123. package/landing/src/app/page.tsx +27 -0
  124. package/landing/src/app/robots.ts +13 -0
  125. package/landing/src/app/sitemap.ts +44 -0
  126. package/landing/src/components/architecture.tsx +163 -0
  127. package/landing/src/components/cta.tsx +52 -0
  128. package/landing/src/components/features.tsx +160 -0
  129. package/landing/src/components/footer.tsx +100 -0
  130. package/landing/src/components/hero.tsx +217 -0
  131. package/landing/src/components/how-it-works.tsx +165 -0
  132. package/landing/src/components/navbar.tsx +147 -0
  133. package/landing/src/components/waitlist.tsx +110 -0
  134. package/landing/src/components/why-choose.tsx +149 -0
  135. package/landing/src/components/workshops.tsx +328 -0
  136. package/landing/src/lib/utils.ts +6 -0
  137. package/landing/tsconfig.json +41 -0
  138. package/misc/transcripts/2026-03-09-pi-mono-e2e-verification.md +154 -0
  139. package/new-ui/CLAUDE.md +92 -0
  140. package/new-ui/README.md +73 -0
  141. package/new-ui/biome.json +42 -0
  142. package/new-ui/components.json +21 -0
  143. package/new-ui/index.html +25 -0
  144. package/new-ui/package.json +49 -0
  145. package/new-ui/pnpm-lock.yaml +4845 -0
  146. package/new-ui/public/logo.png +0 -0
  147. package/new-ui/src/api/client.ts +814 -0
  148. package/new-ui/src/api/hooks/index.ts +64 -0
  149. package/new-ui/src/api/hooks/use-agents.ts +58 -0
  150. package/new-ui/src/api/hooks/use-channels.ts +115 -0
  151. package/new-ui/src/api/hooks/use-config-api.ts +46 -0
  152. package/new-ui/src/api/hooks/use-costs.ts +122 -0
  153. package/new-ui/src/api/hooks/use-db-query.ts +29 -0
  154. package/new-ui/src/api/hooks/use-epics.ts +75 -0
  155. package/new-ui/src/api/hooks/use-repos.ts +61 -0
  156. package/new-ui/src/api/hooks/use-schedules.ts +81 -0
  157. package/new-ui/src/api/hooks/use-services.ts +16 -0
  158. package/new-ui/src/api/hooks/use-stats.ts +27 -0
  159. package/new-ui/src/api/hooks/use-tasks.ts +89 -0
  160. package/new-ui/src/api/hooks/use-workflows.ts +109 -0
  161. package/{ui/src/types/api.ts → new-ui/src/api/types.ts} +236 -10
  162. package/new-ui/src/app/App.tsx +13 -0
  163. package/new-ui/src/app/providers.tsx +32 -0
  164. package/new-ui/src/app/router.tsx +52 -0
  165. package/new-ui/src/components/layout/app-header.tsx +47 -0
  166. package/new-ui/src/components/layout/app-sidebar.tsx +128 -0
  167. package/new-ui/src/components/layout/breadcrumbs.tsx +57 -0
  168. package/new-ui/src/components/layout/config-guard.tsx +22 -0
  169. package/new-ui/src/components/layout/root-layout.tsx +40 -0
  170. package/new-ui/src/components/layout/swarm-switcher.tsx +85 -0
  171. package/new-ui/src/components/shared/command-menu.tsx +131 -0
  172. package/new-ui/src/components/shared/data-grid.tsx +141 -0
  173. package/new-ui/src/components/shared/empty-state.tsx +24 -0
  174. package/new-ui/src/components/shared/error-boundary.tsx +72 -0
  175. package/new-ui/src/components/shared/json-viewer.tsx +47 -0
  176. package/new-ui/src/components/shared/name-connection-modal.tsx +99 -0
  177. package/new-ui/src/components/shared/page-skeleton.tsx +16 -0
  178. package/new-ui/src/components/shared/session-log-viewer.tsx +364 -0
  179. package/new-ui/src/components/shared/stats-bar.tsx +132 -0
  180. package/new-ui/src/components/shared/status-badge.tsx +131 -0
  181. package/new-ui/src/components/shared/usage-summary.tsx +179 -0
  182. package/new-ui/src/components/ui/alert-dialog.tsx +176 -0
  183. package/new-ui/src/components/ui/alert.tsx +60 -0
  184. package/new-ui/src/components/ui/avatar.tsx +96 -0
  185. package/new-ui/src/components/ui/badge.tsx +46 -0
  186. package/new-ui/src/components/ui/button.tsx +62 -0
  187. package/new-ui/src/components/ui/card.tsx +75 -0
  188. package/new-ui/src/components/ui/command.tsx +160 -0
  189. package/new-ui/src/components/ui/dialog.tsx +143 -0
  190. package/new-ui/src/components/ui/dropdown-menu.tsx +226 -0
  191. package/new-ui/src/components/ui/input.tsx +21 -0
  192. package/new-ui/src/components/ui/label.tsx +19 -0
  193. package/new-ui/src/components/ui/progress.tsx +26 -0
  194. package/new-ui/src/components/ui/scroll-area.tsx +54 -0
  195. package/new-ui/src/components/ui/select.tsx +175 -0
  196. package/new-ui/src/components/ui/separator.tsx +28 -0
  197. package/new-ui/src/components/ui/sheet.tsx +132 -0
  198. package/new-ui/src/components/ui/sidebar.tsx +691 -0
  199. package/new-ui/src/components/ui/skeleton.tsx +13 -0
  200. package/new-ui/src/components/ui/sonner.tsx +35 -0
  201. package/new-ui/src/components/ui/switch.tsx +33 -0
  202. package/new-ui/src/components/ui/table.tsx +92 -0
  203. package/new-ui/src/components/ui/tabs.tsx +79 -0
  204. package/new-ui/src/components/ui/textarea.tsx +18 -0
  205. package/new-ui/src/components/ui/tooltip.tsx +51 -0
  206. package/new-ui/src/components/workflows/action-node.tsx +53 -0
  207. package/new-ui/src/components/workflows/condition-node.tsx +50 -0
  208. package/new-ui/src/components/workflows/graph-utils.ts +124 -0
  209. package/new-ui/src/components/workflows/json-tree.tsx +189 -0
  210. package/new-ui/src/components/workflows/node-styles.ts +10 -0
  211. package/new-ui/src/components/workflows/step-detail-sheet.tsx +87 -0
  212. package/new-ui/src/components/workflows/trigger-node.tsx +41 -0
  213. package/new-ui/src/components/workflows/workflow-graph.tsx +65 -0
  214. package/{ui/src/hooks/useAutoScroll.ts → new-ui/src/hooks/use-auto-scroll.ts} +0 -1
  215. package/new-ui/src/hooks/use-config.ts +203 -0
  216. package/new-ui/src/hooks/use-keyboard-shortcuts.ts +41 -0
  217. package/new-ui/src/hooks/use-mobile.ts +19 -0
  218. package/new-ui/src/hooks/use-theme.ts +60 -0
  219. package/new-ui/src/lib/config.ts +188 -0
  220. package/new-ui/src/lib/slugs.ts +71 -0
  221. package/{ui → new-ui}/src/lib/utils.ts +32 -0
  222. package/new-ui/src/main.tsx +11 -0
  223. package/new-ui/src/pages/agents/[id]/page.tsx +492 -0
  224. package/new-ui/src/pages/agents/page.tsx +134 -0
  225. package/new-ui/src/pages/chat/page.tsx +674 -0
  226. package/new-ui/src/pages/config/page.tsx +1109 -0
  227. package/new-ui/src/pages/dashboard/page.tsx +454 -0
  228. package/new-ui/src/pages/debug/page.tsx +275 -0
  229. package/new-ui/src/pages/epics/[id]/page.tsx +809 -0
  230. package/new-ui/src/pages/epics/page.tsx +321 -0
  231. package/new-ui/src/pages/not-found/page.tsx +18 -0
  232. package/new-ui/src/pages/repos/page.tsx +369 -0
  233. package/new-ui/src/pages/schedules/[id]/page.tsx +664 -0
  234. package/new-ui/src/pages/schedules/page.tsx +477 -0
  235. package/new-ui/src/pages/services/page.tsx +128 -0
  236. package/new-ui/src/pages/tasks/[id]/page.tsx +670 -0
  237. package/new-ui/src/pages/tasks/page.tsx +592 -0
  238. package/new-ui/src/pages/usage/page.tsx +195 -0
  239. package/new-ui/src/pages/workflow-runs/[id]/page.tsx +363 -0
  240. package/new-ui/src/pages/workflows/[id]/page.tsx +417 -0
  241. package/new-ui/src/pages/workflows/page.tsx +266 -0
  242. package/new-ui/src/styles/ag-grid.css +36 -0
  243. package/new-ui/src/styles/globals.css +213 -0
  244. package/new-ui/test-results/.last-run.json +4 -0
  245. package/{ui/tsconfig.json → new-ui/tsconfig.app.json} +7 -4
  246. package/new-ui/tsconfig.json +4 -0
  247. package/new-ui/tsconfig.node.json +26 -0
  248. package/new-ui/vercel.json +4 -0
  249. package/new-ui/vite.config.ts +28 -0
  250. package/openapi.json +4436 -0
  251. package/package.json +31 -7
  252. package/plugin/build-pi-skills.ts +233 -0
  253. package/plugin/commands/close-issue.md +7 -3
  254. package/plugin/commands/create-pr.md +18 -12
  255. package/plugin/commands/implement-issue.md +7 -3
  256. package/plugin/commands/respond-github.md +8 -4
  257. package/plugin/commands/review-pr.md +44 -10
  258. package/plugin/commands/start-leader.md +1 -3
  259. package/plugin/commands/start-worker.md +1 -3
  260. package/plugin/commands/work-on-task.md +22 -3
  261. package/plugin/pi-skills/close-issue/SKILL.md +90 -0
  262. package/plugin/pi-skills/create-pr/SKILL.md +99 -0
  263. package/plugin/pi-skills/implement-issue/SKILL.md +135 -0
  264. package/plugin/pi-skills/investigate-sentry-issue/SKILL.md +138 -0
  265. package/plugin/pi-skills/respond-github/SKILL.md +98 -0
  266. package/plugin/pi-skills/review-offered-task/SKILL.md +45 -0
  267. package/plugin/pi-skills/review-pr/SKILL.md +261 -0
  268. package/plugin/pi-skills/start-leader/SKILL.md +121 -0
  269. package/plugin/pi-skills/start-worker/SKILL.md +60 -0
  270. package/plugin/pi-skills/swarm-chat/SKILL.md +82 -0
  271. package/plugin/pi-skills/todos/SKILL.md +66 -0
  272. package/plugin/pi-skills/work-on-task/SKILL.md +65 -0
  273. package/plugin/skills/artifacts/examples/approval-flow.ts +34 -0
  274. package/plugin/skills/artifacts/examples/hono-dashboard.ts +31 -0
  275. package/plugin/skills/artifacts/examples/multi-artifact.ts +20 -0
  276. package/plugin/skills/artifacts/examples/static-report.sh +17 -0
  277. package/plugin/skills/artifacts/skill.md +71 -0
  278. package/prek.toml +75 -0
  279. package/scripts/check-db-boundary.sh +60 -0
  280. package/scripts/e2e-docker-provider.ts +820 -0
  281. package/scripts/e2e-io-schemas-test.ts +807 -0
  282. package/scripts/e2e-provider-test.ts +220 -0
  283. package/scripts/e2e-workflow-redesign.sh +229 -0
  284. package/scripts/e2e-workflow-test.sh +285 -0
  285. package/scripts/e2e-workflow-test.ts +857 -0
  286. package/scripts/generate-openapi.ts +26 -0
  287. package/scripts/measure-tool-tokens.ts +118 -0
  288. package/scripts/x402-e2e-test.ts +195 -0
  289. package/scripts/x402-test-server.ts +236 -0
  290. package/scripts/x402-testnet-e2e.ts +668 -0
  291. package/slack-manifest.json +17 -0
  292. package/src/agentmail/app.ts +65 -0
  293. package/src/agentmail/handlers.ts +207 -0
  294. package/src/agentmail/index.ts +9 -0
  295. package/src/agentmail/types.ts +51 -0
  296. package/src/artifact-sdk/browser-sdk.ts +30 -0
  297. package/src/artifact-sdk/index.ts +2 -0
  298. package/src/artifact-sdk/localtunnel.d.ts +20 -0
  299. package/src/artifact-sdk/port.ts +12 -0
  300. package/src/artifact-sdk/server.ts +156 -0
  301. package/src/artifact-sdk/tunnel.ts +19 -0
  302. package/src/be/chunking.ts +193 -0
  303. package/src/be/db-queries/oauth.ts +90 -0
  304. package/src/be/db-queries/tracker.ts +182 -0
  305. package/src/be/db.ts +2729 -770
  306. package/src/be/embedding.ts +80 -0
  307. package/src/be/migrations/001_initial.sql +409 -0
  308. package/src/be/migrations/002_one_time_schedules.sql +59 -0
  309. package/src/be/migrations/003_workflows.sql +51 -0
  310. package/src/be/migrations/004_workflow_source.sql +81 -0
  311. package/src/be/migrations/005_epic_next_steps.sql +2 -0
  312. package/src/be/migrations/006_vcs_provider.sql +94 -0
  313. package/src/be/migrations/007_task_dir.sql +2 -0
  314. package/src/be/migrations/008_workflow_redesign.sql +85 -0
  315. package/src/be/migrations/009_tracker_integration.sql +144 -0
  316. package/src/be/migrations/010_step_diagnostics.sql +1 -0
  317. package/src/be/migrations/011_step_next_port.sql +1 -0
  318. package/src/be/migrations/012_trigger_schema.sql +1 -0
  319. package/src/be/migrations/013_task_output_schema.sql +2 -0
  320. package/src/be/migrations/runner.ts +188 -0
  321. package/src/cli.tsx +231 -299
  322. package/src/commands/artifact.ts +241 -0
  323. package/src/commands/onboard/compose-generator.ts +169 -0
  324. package/src/commands/onboard/env-generator.ts +79 -0
  325. package/src/commands/onboard/manifest.ts +37 -0
  326. package/src/commands/onboard/presets.ts +85 -0
  327. package/src/commands/onboard/service-names.ts +47 -0
  328. package/src/commands/onboard/steps/core-credentials.tsx +111 -0
  329. package/src/commands/onboard/steps/custom-templates.tsx +168 -0
  330. package/src/commands/onboard/steps/generate.tsx +154 -0
  331. package/src/commands/onboard/steps/harness-credentials.tsx +195 -0
  332. package/src/commands/onboard/steps/harness.tsx +21 -0
  333. package/src/commands/onboard/steps/health-check.tsx +171 -0
  334. package/src/commands/onboard/steps/integration-github.tsx +105 -0
  335. package/src/commands/onboard/steps/integration-gitlab.tsx +79 -0
  336. package/src/commands/onboard/steps/integration-menu.tsx +58 -0
  337. package/src/commands/onboard/steps/integration-sentry.tsx +79 -0
  338. package/src/commands/onboard/steps/integration-slack.tsx +165 -0
  339. package/src/commands/onboard/steps/post-connect.tsx +145 -0
  340. package/src/commands/onboard/steps/post-dashboard.tsx +34 -0
  341. package/src/commands/onboard/steps/post-task.tsx +103 -0
  342. package/src/commands/onboard/steps/prereq-check.tsx +178 -0
  343. package/src/commands/onboard/steps/review.tsx +82 -0
  344. package/src/commands/onboard/steps/start.tsx +97 -0
  345. package/src/commands/onboard/templates.ts +34 -0
  346. package/src/commands/onboard/types.ts +259 -0
  347. package/src/commands/onboard.tsx +425 -0
  348. package/src/commands/runner.ts +1376 -559
  349. package/src/commands/setup.tsx +23 -38
  350. package/src/commands/shared/client-config.ts +41 -0
  351. package/src/github/app.ts +8 -0
  352. package/src/github/handlers.ts +93 -75
  353. package/src/github/index.ts +1 -0
  354. package/src/github/types.ts +1 -0
  355. package/src/gitlab/auth.ts +63 -0
  356. package/src/gitlab/handlers.ts +327 -0
  357. package/src/gitlab/index.ts +19 -0
  358. package/src/gitlab/reactions.ts +104 -0
  359. package/src/gitlab/types.ts +130 -0
  360. package/src/heartbeat/heartbeat.ts +425 -0
  361. package/src/heartbeat/index.ts +1 -0
  362. package/src/hooks/hook.ts +555 -4
  363. package/src/hooks/tool-loop-detection.test.ts +158 -0
  364. package/src/hooks/tool-loop-detection.ts +167 -0
  365. package/src/http/active-sessions.ts +172 -0
  366. package/src/http/agents.ts +328 -0
  367. package/src/http/config.ts +191 -0
  368. package/src/http/core.ts +309 -0
  369. package/src/http/db-query.ts +91 -0
  370. package/src/http/ecosystem.ts +63 -0
  371. package/src/http/epics.ts +460 -0
  372. package/src/http/index.ts +213 -0
  373. package/src/http/mcp.ts +77 -0
  374. package/src/http/memory.ts +168 -0
  375. package/src/http/openapi.ts +109 -0
  376. package/src/http/poll.ts +178 -0
  377. package/src/http/repos.ts +195 -0
  378. package/src/http/route-def.ts +123 -0
  379. package/src/http/schedules.ts +391 -0
  380. package/src/http/session-data.ts +241 -0
  381. package/src/http/stats.ts +174 -0
  382. package/src/http/tasks.ts +468 -0
  383. package/src/http/trackers/index.ts +10 -0
  384. package/src/http/trackers/linear.ts +187 -0
  385. package/src/http/types.ts +12 -0
  386. package/src/http/utils.ts +87 -0
  387. package/src/http/webhooks.ts +432 -0
  388. package/src/http/workflows.ts +522 -0
  389. package/src/http.ts +1 -1890
  390. package/src/linear/README.md +65 -0
  391. package/src/linear/app.ts +48 -0
  392. package/src/linear/client.ts +18 -0
  393. package/src/linear/index.ts +1 -0
  394. package/src/linear/oauth.ts +35 -0
  395. package/src/linear/outbound.ts +212 -0
  396. package/src/linear/sync.ts +543 -0
  397. package/src/linear/types.ts +7 -0
  398. package/src/linear/webhook.ts +104 -0
  399. package/src/oauth/README.md +66 -0
  400. package/src/oauth/index.ts +6 -0
  401. package/src/oauth/wrapper.ts +204 -0
  402. package/src/prompts/base-prompt.ts +366 -24
  403. package/src/prompts/defaults.ts +196 -0
  404. package/src/providers/claude-adapter.ts +429 -0
  405. package/src/providers/index.ts +24 -0
  406. package/src/providers/pi-mono-adapter.ts +442 -0
  407. package/src/providers/pi-mono-extension.ts +620 -0
  408. package/src/providers/pi-mono-mcp-client.ts +124 -0
  409. package/src/providers/types.ts +75 -0
  410. package/src/scheduler/scheduler.test.ts +2 -0
  411. package/src/scheduler/scheduler.ts +186 -29
  412. package/src/server.ts +82 -6
  413. package/src/slack/HEURISTICS.md +105 -0
  414. package/src/slack/actions.ts +133 -0
  415. package/src/slack/app.ts +7 -0
  416. package/src/slack/assistant.ts +115 -0
  417. package/src/slack/blocks.ts +233 -0
  418. package/src/slack/commands.ts +31 -17
  419. package/src/slack/files.ts +1 -1
  420. package/src/slack/handlers.test.ts +114 -1
  421. package/src/slack/handlers.ts +212 -52
  422. package/src/slack/responses.ts +120 -67
  423. package/src/slack/router.ts +17 -99
  424. package/src/slack/thread-buffer.ts +213 -0
  425. package/src/slack/watcher.ts +119 -4
  426. package/src/tests/agent-activity.test.ts +247 -0
  427. package/src/tests/agentmail-filters.test.ts +97 -0
  428. package/src/tests/artifact-sdk.test.ts +800 -0
  429. package/src/tests/base-prompt.test.ts +264 -0
  430. package/src/tests/build-pi-skills.test.ts +127 -0
  431. package/src/tests/claude-adapter.test.ts +126 -0
  432. package/src/tests/context-versioning.test.ts +425 -0
  433. package/src/tests/db-queries-oauth.test.ts +197 -0
  434. package/src/tests/db-queries-tracker.test.ts +230 -0
  435. package/src/tests/epics.test.ts +3 -3
  436. package/src/tests/error-tracker.test.ts +368 -0
  437. package/src/tests/fetch-resolved-env.test.ts +167 -0
  438. package/src/tests/generate-default-claude-md.test.ts +9 -1
  439. package/src/tests/generate-identity-templates.test.ts +124 -0
  440. package/src/tests/gitlab-auth.test.ts +109 -0
  441. package/src/tests/gitlab-handlers.test.ts +691 -0
  442. package/src/tests/gitlab-vcs-db.test.ts +177 -0
  443. package/src/tests/heartbeat.test.ts +363 -0
  444. package/src/tests/http-api-integration.test.ts +1698 -0
  445. package/src/tests/linear-outbound-sync.test.ts +200 -0
  446. package/src/tests/linear-webhook.test.ts +402 -0
  447. package/src/tests/match-route.test.ts +187 -0
  448. package/src/tests/memory.test.ts +737 -0
  449. package/src/tests/migration-runner-regressions.test.ts +86 -0
  450. package/src/tests/model-control.test.ts +338 -0
  451. package/src/tests/oauth-wrapper.test.ts +147 -0
  452. package/src/tests/onboard-compose.test.ts +138 -0
  453. package/src/tests/onboard-env.test.ts +174 -0
  454. package/src/tests/onboard-manifest.test.ts +137 -0
  455. package/src/tests/pi-mono-adapter.test.ts +234 -0
  456. package/src/tests/progress-dedup.test.ts +98 -0
  457. package/src/tests/provider-adapter.test.ts +122 -0
  458. package/src/tests/provider-command-format.test.ts +98 -0
  459. package/src/tests/reload-config.test.ts +170 -0
  460. package/src/tests/runner-polling-api.test.ts +25 -20
  461. package/src/tests/scheduled-tasks.test.ts +104 -0
  462. package/src/tests/scheduler-backoff.test.ts +166 -0
  463. package/src/tests/self-improvement.test.ts +540 -0
  464. package/src/tests/session-attach.test.ts +536 -0
  465. package/src/tests/session-costs.test.ts +267 -1
  466. package/src/tests/slack-actions.test.ts +133 -0
  467. package/src/tests/slack-assistant.test.ts +136 -0
  468. package/src/tests/slack-blocks.test.ts +246 -0
  469. package/src/tests/slack-metadata-inheritance.test.ts +243 -0
  470. package/src/tests/slack-queue-offline.test.ts +174 -0
  471. package/src/tests/slack-router.test.ts +181 -0
  472. package/src/tests/slack-thread-buffer.test.ts +305 -0
  473. package/src/tests/slack-thread-followups.test.ts +298 -0
  474. package/src/tests/slack-watcher.test.ts +101 -0
  475. package/src/tests/structured-output.test.ts +311 -0
  476. package/src/tests/swarm-repos.test.ts +198 -0
  477. package/src/tests/task-cancellation.test.ts +6 -4
  478. package/src/tests/task-working-dir.test.ts +176 -0
  479. package/src/tests/template-fetch.test.ts +490 -0
  480. package/src/tests/tool-annotations.test.ts +371 -0
  481. package/src/tests/tracker-tools.test.ts +184 -0
  482. package/src/tests/update-profile-api.test.ts +143 -3
  483. package/src/tests/validation-adapters.test.ts +86 -0
  484. package/src/tests/vcs-provider.test.ts +27 -0
  485. package/src/tests/workflow-agent-task.test.ts +196 -0
  486. package/src/tests/workflow-async-v2.test.ts +386 -0
  487. package/src/tests/workflow-convergence.test.ts +541 -0
  488. package/src/tests/workflow-definition-validation.test.ts +290 -0
  489. package/src/tests/workflow-engine-v2.test.ts +691 -0
  490. package/src/tests/workflow-executors.test.ts +736 -0
  491. package/src/tests/workflow-http-v2.test.ts +599 -0
  492. package/src/tests/workflow-integration-io.test.ts +902 -0
  493. package/src/tests/workflow-io-schemas.test.ts +624 -0
  494. package/src/tests/workflow-registry.test.ts +592 -0
  495. package/src/tests/workflow-retry-v2.test.ts +401 -0
  496. package/src/tests/workflow-retry-validation.test.ts +282 -0
  497. package/src/tests/workflow-template.test.ts +288 -0
  498. package/src/tests/workflow-trigger-schema.test.ts +359 -0
  499. package/src/tests/workflow-triggers-v2.test.ts +264 -0
  500. package/src/tests/workflow-versions.test.ts +208 -0
  501. package/src/tests/x402-client.test.ts +117 -0
  502. package/src/tests/x402-config.test.ts +182 -0
  503. package/src/tests/x402-spending-tracker.test.ts +185 -0
  504. package/src/tools/cancel-task.ts +2 -0
  505. package/src/tools/context-diff.ts +171 -0
  506. package/src/tools/context-history.ts +138 -0
  507. package/src/tools/create-channel.ts +1 -0
  508. package/src/tools/db-query.ts +78 -0
  509. package/src/tools/delete-channel.ts +132 -0
  510. package/src/tools/epics/assign-task-to-epic.ts +1 -0
  511. package/src/tools/epics/create-epic.ts +3 -2
  512. package/src/tools/epics/delete-epic.ts +2 -0
  513. package/src/tools/epics/get-epic-details.ts +2 -0
  514. package/src/tools/epics/list-epics.ts +2 -0
  515. package/src/tools/epics/unassign-task-from-epic.ts +1 -0
  516. package/src/tools/epics/update-epic.ts +7 -4
  517. package/src/tools/get-swarm.ts +2 -0
  518. package/src/tools/get-task-details.ts +2 -0
  519. package/src/tools/get-tasks.ts +27 -1
  520. package/src/tools/inject-learning.ts +106 -0
  521. package/src/tools/join-swarm.ts +17 -7
  522. package/src/tools/list-channels.ts +2 -0
  523. package/src/tools/list-services.ts +2 -0
  524. package/src/tools/memory-get.ts +56 -0
  525. package/src/tools/memory-search.ts +131 -0
  526. package/src/tools/my-agent-info.ts +2 -0
  527. package/src/tools/poll-task.ts +2 -20
  528. package/src/tools/post-message.ts +1 -0
  529. package/src/tools/read-messages.ts +2 -0
  530. package/src/tools/register-agentmail-inbox.ts +166 -0
  531. package/src/tools/register-service.ts +2 -0
  532. package/src/tools/schedules/create-schedule.ts +134 -24
  533. package/src/tools/schedules/delete-schedule.ts +2 -0
  534. package/src/tools/schedules/list-schedules.ts +20 -4
  535. package/src/tools/schedules/run-schedule-now.ts +1 -0
  536. package/src/tools/schedules/update-schedule.ts +49 -17
  537. package/src/tools/send-task.ts +132 -10
  538. package/src/tools/slack-download-file.ts +4 -2
  539. package/src/tools/slack-list-channels.ts +2 -0
  540. package/src/tools/slack-post.ts +2 -0
  541. package/src/tools/slack-read.ts +2 -0
  542. package/src/tools/slack-reply.ts +2 -0
  543. package/src/tools/slack-upload-file.ts +2 -0
  544. package/src/tools/store-progress.ts +187 -4
  545. package/src/tools/swarm-config/delete-config.ts +87 -0
  546. package/src/tools/swarm-config/get-config.ts +108 -0
  547. package/src/tools/swarm-config/index.ts +4 -0
  548. package/src/tools/swarm-config/list-config.ts +99 -0
  549. package/src/tools/swarm-config/set-config.ts +118 -0
  550. package/src/tools/task-action.ts +30 -5
  551. package/src/tools/task-dedup.ts +97 -0
  552. package/src/tools/tool-config.ts +117 -0
  553. package/src/tools/tracker/index.ts +6 -0
  554. package/src/tools/tracker/tracker-link-epic.ts +64 -0
  555. package/src/tools/tracker/tracker-link-task.ts +64 -0
  556. package/src/tools/tracker/tracker-map-agent.ts +57 -0
  557. package/src/tools/tracker/tracker-status.ts +56 -0
  558. package/src/tools/tracker/tracker-sync-status.ts +42 -0
  559. package/src/tools/tracker/tracker-unlink.ts +41 -0
  560. package/src/tools/unregister-service.ts +2 -0
  561. package/src/tools/update-profile.ts +93 -10
  562. package/src/tools/update-service-status.ts +2 -0
  563. package/src/tools/utils.ts +10 -1
  564. package/src/tools/workflows/create-workflow.ts +111 -0
  565. package/src/tools/workflows/delete-workflow.ts +42 -0
  566. package/src/tools/workflows/get-workflow-run.ts +59 -0
  567. package/src/tools/workflows/get-workflow.ts +53 -0
  568. package/src/tools/workflows/index.ts +9 -0
  569. package/src/tools/workflows/list-workflow-runs.ts +48 -0
  570. package/src/tools/workflows/list-workflows.ts +42 -0
  571. package/src/tools/workflows/retry-workflow-run.ts +40 -0
  572. package/src/tools/workflows/trigger-workflow.ts +96 -0
  573. package/src/tools/workflows/update-workflow.ts +118 -0
  574. package/src/tracker/types.ts +51 -0
  575. package/src/types.ts +477 -14
  576. package/src/utils/credentials.test.ts +156 -0
  577. package/src/utils/credentials.ts +50 -0
  578. package/src/utils/error-tracker.ts +190 -0
  579. package/src/vcs/index.ts +15 -0
  580. package/src/vcs/types.ts +5 -0
  581. package/src/workflows/checkpoint.ts +121 -0
  582. package/src/workflows/cooldown.ts +28 -0
  583. package/src/workflows/definition.ts +217 -0
  584. package/src/workflows/engine.ts +554 -0
  585. package/src/workflows/event-bus.ts +29 -0
  586. package/src/workflows/executors/agent-task.ts +92 -0
  587. package/src/workflows/executors/base.ts +86 -0
  588. package/src/workflows/executors/code-match.ts +88 -0
  589. package/src/workflows/executors/index.ts +16 -0
  590. package/src/workflows/executors/notify.ts +93 -0
  591. package/src/workflows/executors/property-match.ts +104 -0
  592. package/src/workflows/executors/raw-llm.ts +83 -0
  593. package/src/workflows/executors/registry.ts +76 -0
  594. package/src/workflows/executors/script.ts +103 -0
  595. package/src/workflows/executors/validate.ts +215 -0
  596. package/src/workflows/executors/vcs.ts +58 -0
  597. package/src/workflows/index.ts +61 -0
  598. package/src/workflows/input.ts +46 -0
  599. package/src/workflows/json-schema-validator.ts +118 -0
  600. package/src/workflows/recovery.ts +139 -0
  601. package/src/workflows/resume.ts +143 -0
  602. package/src/workflows/retry-poller.ts +216 -0
  603. package/src/workflows/template.ts +74 -0
  604. package/src/workflows/templates.ts +86 -0
  605. package/src/workflows/triggers.ts +95 -0
  606. package/src/workflows/validation.ts +104 -0
  607. package/src/workflows/version.ts +42 -0
  608. package/src/x402/cli.ts +140 -0
  609. package/src/x402/client.ts +192 -0
  610. package/src/x402/config.ts +131 -0
  611. package/src/x402/index.ts +37 -0
  612. package/src/x402/openfort-signer.ts +83 -0
  613. package/src/x402/spending-tracker.ts +109 -0
  614. package/templates/community/.gitkeep +0 -0
  615. package/templates/official/coder/CLAUDE.md +49 -0
  616. package/templates/official/coder/IDENTITY.md +28 -0
  617. package/templates/official/coder/SOUL.md +43 -0
  618. package/templates/official/coder/TOOLS.md +40 -0
  619. package/templates/official/coder/config.json +23 -0
  620. package/templates/official/coder/start-up.sh +23 -0
  621. package/templates/official/content-reviewer/CLAUDE.md +68 -0
  622. package/templates/official/content-reviewer/IDENTITY.md +28 -0
  623. package/templates/official/content-reviewer/SOUL.md +44 -0
  624. package/templates/official/content-reviewer/TOOLS.md +37 -0
  625. package/templates/official/content-reviewer/config.json +23 -0
  626. package/templates/official/content-reviewer/start-up.sh +23 -0
  627. package/templates/official/content-strategist/CLAUDE.md +63 -0
  628. package/templates/official/content-strategist/IDENTITY.md +33 -0
  629. package/templates/official/content-strategist/SOUL.md +48 -0
  630. package/templates/official/content-strategist/TOOLS.md +47 -0
  631. package/templates/official/content-strategist/config.json +23 -0
  632. package/templates/official/content-strategist/start-up.sh +23 -0
  633. package/templates/official/content-writer/CLAUDE.md +72 -0
  634. package/templates/official/content-writer/IDENTITY.md +30 -0
  635. package/templates/official/content-writer/SOUL.md +46 -0
  636. package/templates/official/content-writer/TOOLS.md +44 -0
  637. package/templates/official/content-writer/config.json +23 -0
  638. package/templates/official/content-writer/start-up.sh +23 -0
  639. package/templates/official/forward-deployed-engineer/CLAUDE.md +54 -0
  640. package/templates/official/forward-deployed-engineer/IDENTITY.md +37 -0
  641. package/templates/official/forward-deployed-engineer/SOUL.md +55 -0
  642. package/templates/official/forward-deployed-engineer/config.json +21 -0
  643. package/templates/official/lead/CLAUDE.md +33 -0
  644. package/templates/official/lead/IDENTITY.md +36 -0
  645. package/templates/official/lead/SOUL.md +51 -0
  646. package/templates/official/lead/config.json +22 -0
  647. package/templates/official/researcher/CLAUDE.md +46 -0
  648. package/templates/official/researcher/IDENTITY.md +28 -0
  649. package/templates/official/researcher/SOUL.md +43 -0
  650. package/templates/official/researcher/config.json +21 -0
  651. package/templates/official/reviewer/CLAUDE.md +63 -0
  652. package/templates/official/reviewer/IDENTITY.md +28 -0
  653. package/templates/official/reviewer/SOUL.md +45 -0
  654. package/templates/official/reviewer/config.json +21 -0
  655. package/templates/official/tester/CLAUDE.md +53 -0
  656. package/templates/official/tester/IDENTITY.md +28 -0
  657. package/templates/official/tester/SOUL.md +55 -0
  658. package/templates/official/tester/config.json +21 -0
  659. package/templates/schema.ts +35 -0
  660. package/templates-ui/README.md +46 -0
  661. package/templates-ui/components.json +17 -0
  662. package/templates-ui/eslint.config.mjs +18 -0
  663. package/templates-ui/next.config.ts +7 -0
  664. package/templates-ui/package.json +35 -0
  665. package/templates-ui/pnpm-lock.yaml +4571 -0
  666. package/templates-ui/postcss.config.mjs +7 -0
  667. package/templates-ui/public/file.svg +1 -0
  668. package/templates-ui/public/globe.svg +1 -0
  669. package/templates-ui/public/logo.png +0 -0
  670. package/templates-ui/public/next.svg +1 -0
  671. package/templates-ui/public/vercel.svg +1 -0
  672. package/templates-ui/public/window.svg +1 -0
  673. package/templates-ui/src/app/[category]/[name]/page.tsx +89 -0
  674. package/templates-ui/src/app/api/templates/[...slug]/route.ts +52 -0
  675. package/templates-ui/src/app/api/templates/route.ts +18 -0
  676. package/templates-ui/src/app/builder/page.tsx +37 -0
  677. package/templates-ui/src/app/globals.css +94 -0
  678. package/templates-ui/src/app/layout.tsx +79 -0
  679. package/templates-ui/src/app/page.tsx +38 -0
  680. package/templates-ui/src/app/robots.ts +11 -0
  681. package/templates-ui/src/app/sitemap.ts +31 -0
  682. package/templates-ui/src/components/compose-builder.tsx +442 -0
  683. package/templates-ui/src/components/compose-preview.tsx +117 -0
  684. package/templates-ui/src/components/file-preview.tsx +77 -0
  685. package/templates-ui/src/components/footer.tsx +40 -0
  686. package/templates-ui/src/components/header.tsx +41 -0
  687. package/templates-ui/src/components/template-card.tsx +87 -0
  688. package/templates-ui/src/components/template-detail.tsx +125 -0
  689. package/templates-ui/src/components/template-gallery.tsx +263 -0
  690. package/templates-ui/src/components/ui/badge.tsx +36 -0
  691. package/templates-ui/src/components/ui/button.tsx +57 -0
  692. package/templates-ui/src/components/ui/card.tsx +76 -0
  693. package/templates-ui/src/components/ui/separator.tsx +31 -0
  694. package/templates-ui/src/components/ui/tooltip.tsx +32 -0
  695. package/templates-ui/src/lib/compose-generator.ts +241 -0
  696. package/templates-ui/src/lib/templates.ts +137 -0
  697. package/templates-ui/src/lib/utils.ts +6 -0
  698. package/templates-ui/tsconfig.json +34 -0
  699. package/thoughts/research/2026-02-28-openfort-viem-x402-research.md +679 -0
  700. package/thoughts/research/2026-02-28-x402-payments-research.md +686 -0
  701. package/thoughts/researcher/plans/2026-02-20-agent-self-improvement-plan.md +282 -0
  702. package/thoughts/researcher/research/2026-02-20-agent-self-improvement.md +492 -0
  703. package/thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md +282 -0
  704. package/thoughts/shared/plans/2026-03-02-claude-context-mode-integration.md +328 -0
  705. package/thoughts/shared/plans/2026-03-02-code-level-heartbeat.md +224 -0
  706. package/thoughts/shared/research/2026-02-26-cliffy-mcp-tools.md +159 -0
  707. package/thoughts/shared/research/2026-03-03-database-migration-system-refactor.md +337 -0
  708. package/thoughts/swarm-researcher/plans/2026-02-23-openclaw-improvements-plan.md +778 -0
  709. package/thoughts/swarm-researcher/plans/2026-02-26-artifacts-localtunnel-plan.md +1269 -0
  710. package/thoughts/swarm-researcher/research/2026-02-23-openclaw-vs-agent-swarm-comparison.md +411 -0
  711. package/thoughts/swarm-researcher/research/2026-02-26-artifacts-localtunnel.md +724 -0
  712. package/thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md +443 -0
  713. package/thoughts/taras/brainstorms/2026-03-20-setup-cli-onboarding.md +307 -0
  714. package/thoughts/taras/plans/2026-02-20-auto-improvement.md +803 -0
  715. package/thoughts/taras/plans/2026-02-20-env-management.md +538 -0
  716. package/thoughts/taras/plans/2026-02-20-memory-system.md +882 -0
  717. package/thoughts/taras/plans/2026-02-20-repos-knowledge.md +806 -0
  718. package/thoughts/taras/plans/2026-02-20-session-attach.md +647 -0
  719. package/thoughts/taras/plans/2026-02-20-worker-identity.md +820 -0
  720. package/thoughts/taras/plans/2026-02-25-feat-new-ui-visual-redesign-plan.md +768 -0
  721. package/thoughts/taras/plans/2026-03-04-fix-buildSystemPrompt-missing-fields.md +77 -0
  722. package/thoughts/taras/plans/2026-03-04-new-ui-missing-actions.md +543 -0
  723. package/thoughts/taras/plans/2026-03-06-one-time-scheduled-tasks.md +373 -0
  724. package/thoughts/taras/plans/2026-03-08-memory-self-improvement-enhancements.md +512 -0
  725. package/thoughts/taras/plans/2026-03-08-pi-mono-provider-implementation.md +919 -0
  726. package/thoughts/taras/plans/2026-03-09-templates-registry.md +723 -0
  727. package/thoughts/taras/plans/2026-03-10-task-working-directory.md +371 -0
  728. package/thoughts/taras/plans/2026-03-11-archil-per-agent-write-strategy.md +621 -0
  729. package/thoughts/taras/plans/2026-03-12-eliminate-inbox-route-to-tasks.md +61 -0
  730. package/thoughts/taras/plans/2026-03-12-slack-thread-followup-additive.md +488 -0
  731. package/thoughts/taras/plans/2026-03-13-slack-ai-improvements.md +644 -0
  732. package/thoughts/taras/plans/2026-03-16-route-wrapper-openapi.md +636 -0
  733. package/thoughts/taras/plans/2026-03-17-multi-api-config.md +444 -0
  734. package/thoughts/taras/plans/2026-03-18-agent-fs-integration.md +591 -0
  735. package/thoughts/taras/plans/2026-03-18-debug-db-explorer.md +446 -0
  736. package/thoughts/taras/plans/2026-03-18-workflow-redesign.md +987 -0
  737. package/thoughts/taras/plans/2026-03-19-compound-learnings.md +403 -0
  738. package/thoughts/taras/plans/2026-03-19-ticket-tracker-linear-integration.md +860 -0
  739. package/thoughts/taras/plans/2026-03-19-workflow-io-schemas-and-bugs.md +899 -0
  740. package/thoughts/taras/plans/2026-03-20-setup-cli-onboarding.md +874 -0
  741. package/thoughts/taras/plans/2026-03-20-workflow-structured-output-validation-workspace.md +723 -0
  742. package/thoughts/taras/research/2026-02-19-agent-native-swarm-architecture.md +390 -0
  743. package/thoughts/taras/research/2026-02-19-swarm-gaps-implementation.md +594 -0
  744. package/thoughts/taras/research/2026-02-25-dashboard-ui-design-best-practices.md +825 -0
  745. package/thoughts/taras/research/2026-02-26-task-detail-page-redesign.md +393 -0
  746. package/thoughts/taras/research/2026-03-03-new-ui-missing-actions.md +168 -0
  747. package/thoughts/taras/research/2026-03-05-pi-mono-provider-research.md +230 -0
  748. package/thoughts/taras/research/2026-03-06-workflow-engine-design.md +445 -0
  749. package/thoughts/taras/research/2026-03-08-drive-loop-concept.md +375 -0
  750. package/thoughts/taras/research/2026-03-08-pi-mono-deep-dive.md +869 -0
  751. package/thoughts/taras/research/2026-03-09-templates-registry.md +373 -0
  752. package/thoughts/taras/research/2026-03-10-agent-working-directory.md +223 -0
  753. package/thoughts/taras/research/2026-03-10-configurable-event-prompts.md +339 -0
  754. package/thoughts/taras/research/2026-03-11-archil-production-setup.md +181 -0
  755. package/thoughts/taras/research/2026-03-11-archil-shared-disk-write-strategies.md +437 -0
  756. package/thoughts/taras/research/2026-03-13-slack-ai-features.md +258 -0
  757. package/thoughts/taras/research/2026-03-16-openapi-docs-generation.md +335 -0
  758. package/thoughts/taras/research/2026-03-16-route-wrapper-openapi.md +670 -0
  759. package/thoughts/taras/research/2026-03-16-slack-thread-followups-e2e.md +54 -0
  760. package/thoughts/taras/research/2026-03-18-agent-fs-integration.md +558 -0
  761. package/thoughts/taras/research/2026-03-18-linear-integration-finalization.md +526 -0
  762. package/thoughts/taras/research/2026-03-18-workflow-redesign.md +797 -0
  763. package/thoughts/taras/research/2026-03-19-workflow-node-io-schemas-and-bugs.md +563 -0
  764. package/thoughts/taras/research/2026-03-19-workflow-structured-output-validation-workspace.md +486 -0
  765. package/thoughts/taras/research/2026-03-20-prompt-template-registry.md +469 -0
  766. package/tsconfig.json +1 -1
  767. package/FAQ.md +0 -19
  768. package/src/tests/get-inbox-message.test.ts +0 -145
  769. package/src/tools/get-inbox-message.ts +0 -89
  770. package/src/tools/inbox-delegate.ts +0 -113
  771. package/ui/CLAUDE.md +0 -49
  772. package/ui/bun.lock +0 -771
  773. package/ui/index.html +0 -22
  774. package/ui/package-lock.json +0 -5290
  775. package/ui/package.json +0 -33
  776. package/ui/pnpm-lock.yaml +0 -3341
  777. package/ui/postcss.config.js +0 -6
  778. package/ui/src/App.tsx +0 -63
  779. package/ui/src/components/ActivityFeed.tsx +0 -440
  780. package/ui/src/components/AgentDetailPanel.tsx +0 -733
  781. package/ui/src/components/AgentsPanel.tsx +0 -815
  782. package/ui/src/components/ChatPanel.tsx +0 -1920
  783. package/ui/src/components/ConfigModal.tsx +0 -253
  784. package/ui/src/components/Dashboard.tsx +0 -832
  785. package/ui/src/components/EditAgentProfileModal.tsx +0 -433
  786. package/ui/src/components/EpicDetailPage.tsx +0 -741
  787. package/ui/src/components/EpicsPanel.tsx +0 -566
  788. package/ui/src/components/Header.tsx +0 -160
  789. package/ui/src/components/JsonViewer.tsx +0 -171
  790. package/ui/src/components/ScheduledTaskDetailPanel.tsx +0 -517
  791. package/ui/src/components/ScheduledTasksPanel.tsx +0 -639
  792. package/ui/src/components/ServicesPanel.tsx +0 -622
  793. package/ui/src/components/SessionLogPanel.tsx +0 -1219
  794. package/ui/src/components/StatsBar.tsx +0 -321
  795. package/ui/src/components/StatusBadge.tsx +0 -168
  796. package/ui/src/components/TaskDetailPanel.tsx +0 -903
  797. package/ui/src/components/TasksPanel.tsx +0 -614
  798. package/ui/src/components/UsageCharts.tsx +0 -216
  799. package/ui/src/components/UsageTab.tsx +0 -394
  800. package/ui/src/hooks/queries.ts +0 -353
  801. package/ui/src/index.css +0 -257
  802. package/ui/src/lib/api.ts +0 -268
  803. package/ui/src/lib/config.ts +0 -35
  804. package/ui/src/lib/contentPreview.ts +0 -208
  805. package/ui/src/lib/theme.ts +0 -214
  806. package/ui/src/main.tsx +0 -28
  807. package/ui/src/vite-env.d.ts +0 -1
  808. package/ui/tailwind.config.js +0 -37
  809. package/ui/vite.config.ts +0 -35
  810. /package/{ui → docs-site}/public/logo.png +0 -0
@@ -0,0 +1,282 @@
1
+ ---
2
+ date: 2026-02-26
3
+ author: Researcher
4
+ repository: desplega-ai/agent-swarm
5
+ topic: "Implementation Plan: Reduce MCP Tool Context Overhead"
6
+ tags: [plan, mcp, tools, context-window, skills, tool-search]
7
+ status: proposed
8
+ related_research: thoughts/shared/research/2026-02-26-cliffy-mcp-tools.md
9
+ related_rfc: docs/rfcs/0001-cliffy-mcp-tools.md
10
+ pr: "#95"
11
+ ---
12
+
13
+ # Implementation Plan: Reduce MCP Tool Context Overhead via Tool Search & Skills
14
+
15
+ **Based on**: RFC-0001 and research findings from 2026-02-26
16
+ **Goal**: Reduce agent context window overhead from ~14K tokens (50 MCP tools) to ~3-5K tokens at session startup
17
+ **Expected impact**: 65-85% reduction in MCP tool context overhead
18
+
19
+ ---
20
+
21
+ ## Phase 1: Verify & Optimize Tool Search (Effort: Low, Impact: High)
22
+
23
+ **Timeline**: 1-2 sessions
24
+ **Owner**: Any worker (suggested: Researcher for verification, Picateclas for code changes)
25
+
26
+ ### 1.1 Verify Tool Search Auto-Enable Status
27
+
28
+ **Goal**: Determine if Claude Code's Tool Search is already active for our agents.
29
+
30
+ **Steps**:
31
+ 1. Add temporary debug logging to a worker session to observe whether Claude Code sends a `Tool Search` invocation before calling MCP tools. This can be done by:
32
+ - Checking the Claude Code session logs (if available) for `tool_search` calls
33
+ - Adding a `console.log` in the MCP server's `tools/list` handler to see how/when it's called
34
+ - Examining Claude Code's `--verbose` output during a session
35
+ 2. Check the `@modelcontextprotocol/sdk` version (`^1.25.1` in our `package.json`) for `defer_loading` support in tool registration
36
+ 3. Review Claude Code client-side Tool Search documentation for auto-enable conditions and confirm our ~12-16K token tool payload exceeds the 10K threshold
37
+
38
+ **Acceptance criteria**: Written confirmation of whether Tool Search is active, and if not, what's needed to enable it.
39
+
40
+ ### 1.2 Add `annotations` to Tool Registrations
41
+
42
+ **Goal**: Improve tool discoverability for Tool Search by adding structured annotations.
43
+
44
+ **Files to modify**: `src/tools/utils.ts` (utility), each tool file in `src/tools/*.ts`
45
+
46
+ **Steps**:
47
+ 1. Research the MCP SDK's `ToolAnnotations` type — our `utils.ts:13` already imports it and `ToolConfig:66` accepts it as optional, but NO tool currently sets it
48
+ 2. Define a standard annotation schema for our tools. At minimum:
49
+ - `readOnlyHint` / `destructiveHint` per the MCP spec (for safety classification)
50
+ - Consider adding custom metadata for tool grouping/categories if the SDK supports it
51
+ 3. Add annotations to all 50 tools, prioritizing:
52
+ - Destructive tools (`delete-channel`, `delete-epic`, `delete-config`, `delete-schedule`, `cancel-task`) → `destructiveHint: true`
53
+ - Read-only tools (`get-tasks`, `get-swarm`, `list-*`, `memory-search`) → `readOnlyHint: true`
54
+ 4. Audit tool descriptions for search-friendliness:
55
+ - Current descriptions are 1-2 sentences, action-oriented — generally fine
56
+ - Add trigger keywords where missing (e.g., `post-message` description is too brief: "Posts a message to a channel for cross-agent communication" — could add "internal chat, agent-to-agent")
57
+ - Ensure cross-references between related tools (already done for `memory-search` → `memory-get`)
58
+
59
+ **Acceptance criteria**: All 50 tools have `annotations` set. Descriptions reviewed for searchability. PR with changes.
60
+
61
+ **Status (2026-02-26)**: DONE. 36 tools annotated with readOnlyHint (20), destructiveHint (7), idempotentHint (6), openWorldHint (6). 14 write-only tools skipped (no specific hints apply). Type-check and lint clean.
62
+
63
+ ### 1.3 Configure Explicit `defer_loading` (if supported)
64
+
65
+ **Goal**: Explicitly mark non-core tools for deferred loading instead of relying on auto-enable.
66
+
67
+ **Depends on**: 1.1 results (need to confirm SDK support)
68
+
69
+ **Steps**:
70
+ 1. If the MCP SDK supports `defer_loading` in tool metadata, add it to the 31 non-core tools identified in the RFC:
71
+ - Scheduling (5 tools)
72
+ - Epics (7 tools)
73
+ - Services (4 tools)
74
+ - Config (4 tools)
75
+ - Profiles (3 tools)
76
+ - Slack extras (4: `slack-upload-file`, `slack-download-file`, `slack-list-channels`, `slack-post`)
77
+ - Memory extras (1: `inject-learning`)
78
+ - Messaging extras (3: `create-channel`, `delete-channel`, `list-channels`)
79
+ 2. Keep 16 core tools always-loaded (as classified in RFC section "Must Stay as MCP Tools"):
80
+ - `join-swarm`, `poll-task`, `get-task-details`, `store-progress`, `send-task`, `get-tasks`, `my-agent-info`, `get-swarm`, `cancel-task`, `task-action`
81
+ - `slack-reply`, `slack-read`
82
+ - `read-messages`, `post-message`
83
+ - `memory-search`, `memory-get`
84
+ 3. If the SDK does NOT support `defer_loading`, document the gap and investigate alternatives (e.g., Claude Code `--tool-search` flag, `.claude/settings.json` config)
85
+
86
+ **Acceptance criteria**: Non-core tools marked for deferred loading OR documented gap with workaround.
87
+
88
+ **Status (2026-02-26)**: `defer_loading` is NOT supported in `@modelcontextprotocol/sdk@^1.25.1`. The `ToolSchema` only supports `description`, `inputSchema`, `outputSchema`, and `annotations` (with `readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`, `title`). No lazy/deferred loading mechanism exists in the MCP protocol spec at this version. Tool Search is a Claude Code client-side feature that auto-activates when tool token count exceeds ~10K. With our ~14K tokens across 50 tools, Tool Search should already be active. The annotations added in Phase 1.2 improve Tool Search discoverability.
89
+
90
+ ### 1.4 Measure Baseline and Post-Change Token Counts
91
+
92
+ **Goal**: Quantify actual token savings.
93
+
94
+ **Steps**:
95
+ 1. Before changes: count tokens from a full `tools/list` response (all 50 tools)
96
+ 2. After changes: count tokens for core-only tools + Tool Search overhead
97
+ 3. Document delta in the RFC
98
+
99
+ **Acceptance criteria**: Measured before/after token counts documented.
100
+
101
+ ---
102
+
103
+ ## Phase 2: Create Skill Guides for Complex Tool Groups (Effort: Medium, Impact: Medium)
104
+
105
+ **Timeline**: 2-3 sessions
106
+ **Owner**: Researcher (skill design) + Picateclas (integration)
107
+
108
+ ### 2.1 Create `scheduling-expert` Skill (Proof of Concept)
109
+
110
+ **Goal**: Build the first skill guide for a complex tool group and validate the pattern.
111
+
112
+ **Directory**: `plugin/skills/scheduling-expert/`
113
+
114
+ **Files to create**:
115
+ ```
116
+ plugin/skills/scheduling-expert/
117
+ ├── SKILL.md # Core usage guide with YAML frontmatter
118
+ ├── COMMANDS.md # Detailed parameter reference for all 5 scheduling tools
119
+ └── examples/
120
+ └── common-patterns.md # Cron patterns, interval templates
121
+ ```
122
+
123
+ **SKILL.md content requirements** (following Claude Code skills best practices):
124
+ - YAML frontmatter with `name`, `description` (include trigger words: "schedule", "cron", "recurring", "periodic", "automated tasks", "timer")
125
+ - Quick reference table mapping goals to MCP tool names
126
+ - Common patterns section (daily at 9am, hourly, weekly, custom cron)
127
+ - Error handling guidance (what happens when a schedule name conflicts, cron parsing errors)
128
+ - Link to COMMANDS.md for detailed params
129
+
130
+ **Steps**:
131
+ 1. Create skill directory structure
132
+ 2. Write SKILL.md with proper frontmatter and quick reference
133
+ 3. Write COMMANDS.md documenting all 5 scheduling tool parameters (from Zod schemas in `src/tools/schedules/`)
134
+ 4. Write examples/common-patterns.md with practical scheduling scenarios
135
+ 5. Test skill loading in a dev session
136
+
137
+ **Acceptance criteria**: Skill loads correctly when invoked via `/scheduling-expert` or when Claude detects scheduling intent.
138
+
139
+ ### 2.2 Create `epic-management` Skill
140
+
141
+ **Goal**: Guide Claude through the epic → task workflow.
142
+
143
+ **Directory**: `plugin/skills/epic-management/`
144
+
145
+ **Content focus**:
146
+ - Epic lifecycle: draft → active → paused → completed/cancelled
147
+ - Workflow: create epic → create tasks → assign tasks to epic → track progress
148
+ - Quick reference for all 7 epic tools
149
+ - Common patterns: multi-task project decomposition, epic progress tracking
150
+
151
+ **Steps**: Same structure as 2.1 adapted for epics.
152
+
153
+ ### 2.3 Create `service-registry` Skill
154
+
155
+ **Goal**: Guide the PM2 + service registry workflow.
156
+
157
+ **Directory**: `plugin/skills/service-registry/`
158
+
159
+ **Content focus**:
160
+ - Full lifecycle: start PM2 → register → health check → update → unregister → stop
161
+ - Port 3000 convention, health check endpoint requirement
162
+ - URL pattern: `https://{agentId}.{swarmUrl}`
163
+ - Quick reference for all 4 service tools
164
+
165
+ **Steps**: Same structure as 2.1 adapted for services.
166
+
167
+ ### 2.4 Enhance Existing `swarm-expert` Skill
168
+
169
+ **Goal**: The existing `swarm-expert` skill pattern (currently referenced in research but missing from `plugin/skills/`) should be properly created or updated.
170
+
171
+ **Note**: The research doc references `plugin/skills/swarm-expert/` but this directory does not exist (only `.gitkeep` in `plugin/skills/`). Need to verify if this skill lives elsewhere (e.g., in the Claude Code plugin config) or needs to be created.
172
+
173
+ **Steps**:
174
+ 1. Locate the actual `swarm-expert` skill (may be in `.claude/skills/` or loaded via plugin config)
175
+ 2. If it exists elsewhere, evaluate whether to consolidate into `plugin/skills/`
176
+ 3. If it doesn't exist, create it as a general swarm operations guide
177
+
178
+ ---
179
+
180
+ ## Phase 3: Optimize Capability-Based Tool Loading per Worker Role (Effort: Medium, Impact: Medium)
181
+
182
+ **Timeline**: 2-3 sessions
183
+ **Owner**: Researcher (analysis) + Picateclas (implementation)
184
+
185
+ ### 3.1 Audit Actual Tool Usage by Worker Role
186
+
187
+ **Goal**: Determine which tools each worker role actually uses.
188
+
189
+ **Steps**:
190
+ 1. Add usage instrumentation to `createToolRegistrar` in `src/tools/utils.ts`:
191
+ - Log tool name + agent ID on each call
192
+ - Can be a simple counter stored in-memory or logged to stdout
193
+ 2. Run for 1-2 days to collect usage data
194
+ 3. Analyze which tools each agent role calls:
195
+ - Researcher: likely core + memory + messaging only
196
+ - Picateclas (implementation): likely core + messaging + profiles
197
+ - Lead: likely all tools
198
+ 4. Produce a usage matrix: agent role × tool → call frequency
199
+
200
+ **Acceptance criteria**: Usage matrix document with data-backed recommendations.
201
+
202
+ ### 3.2 Define Minimal Capability Profiles per Role
203
+
204
+ **Goal**: Reduce tool count from 50 to ~25-30 per worker.
205
+
206
+ **Steps**:
207
+ 1. Based on 3.1 usage data, define capability profiles:
208
+ - `researcher`: `core,task-pool,messaging,memory` (removes scheduling, epics, services, profiles, config)
209
+ - `implementer`: `core,task-pool,messaging,profiles,memory` (removes scheduling, epics, services)
210
+ - `lead`: all capabilities (no change)
211
+ 2. Update worker configuration to use role-specific `CAPABILITIES` env vars
212
+ 3. Document the capability profiles and which tools each includes
213
+
214
+ **Acceptance criteria**: Role-specific capability profiles defined and configured.
215
+
216
+ ### 3.3 Implement Role-Based Defaults in Runner
217
+
218
+ **Goal**: Automatically set `CAPABILITIES` based on agent role.
219
+
220
+ **Files to modify**: `src/commands/runner.ts`, potentially `src/server.ts`
221
+
222
+ **Steps**:
223
+ 1. Map agent roles to capability profiles (could be a simple lookup table)
224
+ 2. Set `CAPABILITIES` env var in worker container based on agent role from swarm registry
225
+ 3. Keep override mechanism for agents that need additional capabilities
226
+
227
+ **Acceptance criteria**: Workers start with role-appropriate tool sets. Override mechanism works.
228
+
229
+ ---
230
+
231
+ ## Phase 4: CLI Wrapper for Human Operators (Effort: High, Impact: Low, Optional)
232
+
233
+ **Timeline**: Deferred — only if there's demand
234
+ **Owner**: TBD
235
+
236
+ This phase is documented for completeness but is **not recommended for near-term implementation**. It would generate a `swarm` CLI binary using clihub or a custom TypeScript CLI for human administrators.
237
+
238
+ **Deferred because**:
239
+ - Primary goal is agent context reduction, not human UX
240
+ - The `gh api` + `curl` approach already works for human operators
241
+ - The UI provides a better human interface
242
+
243
+ ---
244
+
245
+ ## Implementation Order & Dependencies
246
+
247
+ ```
248
+ Phase 1.1 (verify Tool Search)
249
+ └─> Phase 1.2 (add annotations) — can run in parallel with 1.1
250
+ └─> Phase 1.3 (defer_loading) — depends on 1.1 results
251
+ └─> Phase 1.4 (measure) — depends on 1.2 and 1.3
252
+
253
+ Phase 2.1 (scheduling skill) — can start immediately, independent
254
+ └─> Phase 2.2 (epic skill) — sequential after pattern validated
255
+ └─> Phase 2.3 (service skill) — sequential
256
+ └─> Phase 2.4 (swarm-expert) — sequential
257
+
258
+ Phase 3.1 (usage audit) — start after Phase 1 is done
259
+ └─> Phase 3.2 (define profiles) — depends on 3.1 data
260
+ └─> Phase 3.3 (implement in runner) — depends on 3.2
261
+ ```
262
+
263
+ **Critical path**: Phase 1.1 → 1.3 → 1.4 (verify, configure, measure)
264
+ **Quick wins**: Phase 1.2 (annotations) and Phase 2.1 (first skill) can start immediately.
265
+
266
+ ## Success Metrics
267
+
268
+ | Metric | Current | Target | Phase |
269
+ |--------|---------|--------|-------|
270
+ | Tool tokens at session start | ~14,000 | ~4,500 | Phase 1 |
271
+ | Tool tokens with strict caps | ~14,000 | ~3,000 | Phase 3 |
272
+ | Tools registered per worker | 50 | 25-30 | Phase 3 |
273
+ | Skill coverage for complex groups | 0/4 | 4/4 | Phase 2 |
274
+
275
+ ## Risks
276
+
277
+ | Risk | Likelihood | Impact | Mitigation |
278
+ |------|-----------|--------|-----------|
279
+ | Tool Search not supported by our MCP SDK version | Medium | High | Check SDK docs in Phase 1.1; may need SDK upgrade |
280
+ | Deferred tools not discoverable by Claude | Low | High | Optimize descriptions in Phase 1.2; test empirically |
281
+ | Strict capabilities break edge-case workflows | Medium | Medium | Audit usage data first (Phase 3.1); keep override mechanism |
282
+ | Skills add maintenance burden | Low | Low | Start with only 3-4 skills for most complex groups |
@@ -0,0 +1,328 @@
1
+ ---
2
+ date: 2026-03-02
3
+ author: Reviewer
4
+ repository: desplega-ai/agent-swarm
5
+ topic: "Integration Plan: Add claude-context-mode as Default Context Management"
6
+ tags: [plan, context-window, mcp, plugin, context-mode, optimization]
7
+ status: implemented
8
+ related_plans: thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md
9
+ ---
10
+
11
+ # Integration Plan: Add `claude-context-mode` to Agent Swarm
12
+
13
+ **Source**: https://github.com/mksglu/claude-context-mode
14
+ **Goal**: Reduce context window consumption during research and planning tasks by intercepting tool output and compressing it through FTS5-backed indexing
15
+ **Expected impact**: ~98% reduction in raw tool output entering context (315 KB → 5.4 KB per the author's benchmarks)
16
+
17
+ ---
18
+
19
+ ## Problem Statement
20
+
21
+ Research and planning tasks consume excessive context window space. When agents perform web fetches, read large files, run CLI commands, or process Playwright snapshots, the raw output floods the 200K context window. This causes:
22
+
23
+ - Research sessions hitting context limits after ~30 minutes
24
+ - Frequent context compaction losing important earlier findings
25
+ - Increased API costs from large context payloads
26
+ - Reduced session productivity
27
+
28
+ ## What is `claude-context-mode`?
29
+
30
+ An MCP plugin (MIT licensed, v0.9.17) that sits between Claude Code and tool outputs. It provides:
31
+
32
+ 1. **6 MCP tools**: `batch_execute`, `execute`, `execute_file`, `index`, `search`, `fetch_and_index`
33
+ 2. **Sandboxed execution**: Commands run in isolated subprocesses; only stdout summaries enter context
34
+ 3. **FTS5 knowledge base**: SQLite with BM25 ranking, Porter stemming, trigram matching, Levenshtein fuzzy correction
35
+ 4. **PreToolUse hooks**: Intercepts Bash (curl/wget), WebFetch, Read, Grep, and Task (subagent) calls, redirecting them through context-mode tools
36
+ 5. **Progressive search throttling**: Calls 1-3 normal, 4-8 reduced, 9+ blocked
37
+ 6. **Subagent routing**: Auto-injects instructions into Task/Agent tool prompts to keep subagent responses compact
38
+
39
+ ### Architecture
40
+
41
+ ```
42
+ Claude Code
43
+
44
+ ├── PreToolUse hooks (context-mode)
45
+ │ ├── Bash: blocks curl/wget → suggests execute/fetch_and_index
46
+ │ ├── WebFetch: DENIES → redirects to fetch_and_index
47
+ │ ├── Read: advisory tip → suggests execute_file for large files
48
+ │ ├── Grep: advisory tip → suggests execute for large results
49
+ │ └── Task: injects routing block into subagent prompts
50
+
51
+ ├── MCP Server (context-mode on stdio)
52
+ │ ├── batch_execute → runs commands, auto-indexes output, returns search results
53
+ │ ├── execute → sandboxed code in 11 languages, intent-driven filtering
54
+ │ ├── execute_file → reads file into sandbox, only printed summary enters context
55
+ │ ├── index → indexes markdown into FTS5
56
+ │ ├── search → BM25 search with porter→trigram→fuzzy fallback
57
+ │ └── fetch_and_index → fetches URL, converts to markdown, indexes into FTS5
58
+
59
+ └── FTS5 Knowledge Base (SQLite, ephemeral per session in /tmp)
60
+ ```
61
+
62
+ ---
63
+
64
+ ## Integration Approach
65
+
66
+ ### Overview of Changes
67
+
68
+ | Component | Change | Effort |
69
+ |-----------|--------|--------|
70
+ | `Dockerfile.worker` | Add context-mode plugin installation | Low |
71
+ | `docker-entrypoint.sh` | Register context-mode MCP server + configure | Low |
72
+ | `Dockerfile.worker` | Grant context-mode tool permissions in settings.json | Low |
73
+ | Hook coexistence | Validate both hook systems work together | Low (testing) |
74
+ | Skill/SKILL.md | Ensure behavioral instructions load correctly | Low |
75
+ | Base prompt | Optional: add brief context-mode awareness note | Low |
76
+
77
+ ### What Does NOT Need to Change
78
+
79
+ - **Agent-swarm MCP server**: Remains unchanged (HTTP MCP at `$MCP_URL/mcp`)
80
+ - **Agent-swarm hooks**: Remain unchanged (agent-swarm's PreToolUse handles task cancellation and loop detection, which is orthogonal to context-mode's output compression)
81
+ - **Runner/session spawning**: No changes needed
82
+ - **SOUL.md/IDENTITY.md/TOOLS.md**: No changes needed
83
+
84
+ ---
85
+
86
+ ## Phase 1: Plugin Installation (Dockerfile.worker)
87
+
88
+ ### 1.1 Install context-mode in the Docker image
89
+
90
+ Add the context-mode plugin installation to the Dockerfile. Two options:
91
+
92
+ **Option A: Marketplace installation (preferred)**
93
+
94
+ Add to the existing marketplace section in `docker-entrypoint.sh`:
95
+
96
+ ```bash
97
+ # In the "=== Marketplace Installation ===" section
98
+ echo "Installing context-mode plugin..."
99
+ claude plugin marketplace add mksglu/claude-context-mode || echo "context-mode marketplace add failed, continuing..."
100
+ claude plugin install context-mode@mksglu-claude-context-mode --scope user || echo "context-mode plugin install failed, continuing..."
101
+ ```
102
+
103
+ **Option B: Pre-install in Dockerfile**
104
+
105
+ Add to `Dockerfile.worker` after the global tools installation:
106
+
107
+ ```dockerfile
108
+ # Pre-install context-mode dependencies for faster startup
109
+ RUN npm install -g context-mode
110
+ ```
111
+
112
+ Then register as MCP server in docker-entrypoint.sh.
113
+
114
+ **Recommendation**: Option A (marketplace) — keeps the installation pattern consistent with existing plugins (desplega, agent-swarm, wts, qa-use) and ensures the SKILL.md behavioral instructions are loaded automatically by Claude Code's plugin system.
115
+
116
+ ### 1.2 Grant MCP tool permissions
117
+
118
+ In `Dockerfile.worker`, add context-mode permissions to the settings.json:
119
+
120
+ ```json
121
+ {
122
+ "permissions": {
123
+ "allow": ["mcp__agent-swarm__*", "mcp__context-mode__*"]
124
+ },
125
+ "enableAllProjectMcpServers": true,
126
+ "enabledMcpjsonServers": ["agent-swarm", "context-mode"]
127
+ }
128
+ ```
129
+
130
+ The context-mode plugin's `plugin.json` declares the MCP server as:
131
+ ```json
132
+ {
133
+ "mcpServers": {
134
+ "context-mode": {
135
+ "command": "node",
136
+ "args": ["${CLAUDE_PLUGIN_ROOT}/start.mjs"]
137
+ }
138
+ }
139
+ }
140
+ ```
141
+
142
+ This is a stdio-based MCP server, separate from agent-swarm's HTTP MCP. Both can run simultaneously.
143
+
144
+ ---
145
+
146
+ ## Phase 2: Hook Coexistence
147
+
148
+ ### How Hooks Work in Claude Code
149
+
150
+ Claude Code merges hooks from multiple sources:
151
+ 1. `~/.claude/settings.json` (user-level hooks)
152
+ 2. Plugin `hooks.json` files (per-plugin hooks)
153
+
154
+ Both fire independently for the same event. If any hook returns a "block"/"deny" decision, the tool call is blocked.
155
+
156
+ ### Current Agent-Swarm Hooks (settings.json)
157
+
158
+ ```json
159
+ {
160
+ "PreToolUse": [{"matcher": "*", "hooks": [{"type": "command", "command": "/usr/local/bin/agent-swarm hook"}]}]
161
+ }
162
+ ```
163
+
164
+ Agent-swarm's PreToolUse does:
165
+ - Check if worker's task was cancelled → block
166
+ - Tool loop detection → block if looping
167
+ - Block poll-task when polling limit reached
168
+
169
+ ### Context-Mode Hooks (plugin hooks.json)
170
+
171
+ ```json
172
+ {
173
+ "PreToolUse": [
174
+ {"matcher": "Bash", "hooks": [...]},
175
+ {"matcher": "WebFetch", "hooks": [...]},
176
+ {"matcher": "Read", "hooks": [...]},
177
+ {"matcher": "Grep", "hooks": [...]},
178
+ {"matcher": "Task", "hooks": [...]}
179
+ ]
180
+ }
181
+ ```
182
+
183
+ Context-mode's PreToolUse does:
184
+ - Bash: blocks curl/wget, allows everything else
185
+ - WebFetch: **DENIES** the call, redirects to fetch_and_index
186
+ - Read: advisory context tip
187
+ - Grep: advisory context tip
188
+ - Task: injects routing instructions into subagent prompts
189
+
190
+ ### Coexistence Analysis
191
+
192
+ These hook systems are **complementary, not conflicting**:
193
+
194
+ | Scenario | Agent-Swarm Hook | Context-Mode Hook | Result |
195
+ |----------|-----------------|-------------------|--------|
196
+ | Normal tool call | passes | passes | Tool executes |
197
+ | Task cancelled + any tool | blocks | may pass/block | Blocked (correct) |
198
+ | Tool loop detected | blocks | may pass | Blocked (correct) |
199
+ | `curl` in Bash | passes | blocks | Blocked, suggests context-mode (correct) |
200
+ | WebFetch call | passes | denies | Denied, redirects to fetch_and_index (correct) |
201
+ | Read large file | passes | adds advisory | Tool executes with advice (correct) |
202
+ | Subagent (Task) | passes | injects routing | Subagent gets context-mode instructions (correct) |
203
+
204
+ **Risk**: Context-mode's `Task` matcher intercepts the `Task` tool. Agent-swarm uses the `Agent` tool (not `Task`). Need to verify whether context-mode's `pretooluse.mjs` also handles the `Agent` tool or if it needs modification.
205
+
206
+ **Action item**: Check if `pretooluse.mjs` matches `Agent` tool calls (used by agent-swarm for subagents). If not, may need to add `Agent` to the matcher list or fork the hook.
207
+
208
+ #### Phase 2 Findings (2026-03-03)
209
+
210
+ **Confirmed: context-mode does NOT handle the `Agent` tool.** The `hooks.json` only registers matchers for 5 tools: `Bash`, `WebFetch`, `Read`, `Grep`, and `Task`. The `pretooluse.mjs` script has no conditional logic for `Agent`.
211
+
212
+ **Impact**: Agent-swarm's subagent calls (via the `Agent` tool) will pass through context-mode's hooks unmodified. The subagent routing/prompt injection that context-mode applies to `Task` will NOT apply to `Agent` calls. This means subagents won't automatically receive context-mode instructions via the hook.
213
+
214
+ **Mitigation**: This is acceptable for now because:
215
+ 1. The base prompt enhancement (Phase 3.2) ensures all agents are aware of context-mode tools regardless.
216
+ 2. Each agent session loads the context-mode SKILL.md via the plugin system, so subagents spawned within the same session already have context-mode behavioral instructions.
217
+ 3. If tighter subagent routing is needed in the future, we can either: (a) submit a PR to claude-context-mode adding `Agent` to the matcher list, or (b) add our own `Agent` matcher in agent-swarm's hooks that mirrors context-mode's routing injection.
218
+
219
+ ---
220
+
221
+ ## Phase 3: Behavioral Configuration
222
+
223
+ ### 3.1 SKILL.md Loading
224
+
225
+ When installed via marketplace, context-mode's `skills/context-mode/SKILL.md` is automatically available. This SKILL.md contains the behavioral instructions that teach Claude to:
226
+
227
+ - Default to context-mode for ALL commands
228
+ - Only use direct Bash for safe mutations (git, npm install, echo, etc.)
229
+ - Use `batch_execute` as the primary workhorse tool
230
+ - Follow the decision tree for different data types (CLI output, web docs, files, etc.)
231
+
232
+ ### 3.2 Base Prompt Enhancement (Optional)
233
+
234
+ Consider adding a brief note to `src/prompts/base-prompt.ts` mentioning context-mode availability:
235
+
236
+ ```
237
+ You have access to the context-mode MCP tools (batch_execute, execute, search, etc.)
238
+ which compress tool output to save context window space. Prefer these over raw
239
+ Bash/WebFetch for data-fetching operations.
240
+ ```
241
+
242
+ This is **optional** since the SKILL.md already provides comprehensive behavioral instructions, but a brief mention in the base prompt ensures awareness even before the skill is activated.
243
+
244
+ ---
245
+
246
+ ## Phase 4: Testing & Validation
247
+
248
+ ### 4.1 Functional Tests
249
+
250
+ 1. **Hook coexistence**: Start a worker session and verify:
251
+ - Agent-swarm hooks fire correctly (task cancellation, loop detection)
252
+ - Context-mode hooks fire correctly (curl blocking, WebFetch denial)
253
+ - No hook errors or conflicts in logs
254
+
255
+ 2. **MCP server availability**: Verify both MCP servers are accessible:
256
+ - `agent-swarm` (HTTP at `$MCP_URL/mcp`)
257
+ - `context-mode` (stdio, launched by plugin system)
258
+
259
+ 3. **Tool execution**: Test key context-mode tools:
260
+ - `batch_execute` with shell commands
261
+ - `fetch_and_index` with a URL
262
+ - `search` after indexing
263
+
264
+ ### 4.2 Integration Tests
265
+
266
+ 1. **Research task**: Run a research task and measure:
267
+ - Context window usage before/after
268
+ - Session duration before hitting context limits
269
+ - Quality of research output
270
+
271
+ 2. **Planning task**: Run a planning task that reads multiple files and verify context-mode intercepts large file reads.
272
+
273
+ 3. **Subagent routing**: Launch a subagent via Agent tool and verify context-mode routing instructions are injected.
274
+
275
+ ### 4.3 Rollback Plan
276
+
277
+ If issues arise:
278
+ 1. Remove context-mode from marketplace installation in `docker-entrypoint.sh`
279
+ 2. Remove permissions from `settings.json` in Dockerfile
280
+ 3. Rebuild and redeploy containers
281
+
282
+ The change is fully reversible since context-mode is an additive plugin with no modifications to agent-swarm's core code.
283
+
284
+ ---
285
+
286
+ ## Risks & Mitigations
287
+
288
+ | Risk | Likelihood | Impact | Mitigation |
289
+ |------|-----------|--------|-----------|
290
+ | Hook ordering causes unexpected blocks | Low | High | Both hook systems are complementary; test thoroughly in Phase 4 |
291
+ | context-mode blocks WebFetch needed by some workflows | Medium | Medium | WebFetch is redirected to `fetch_and_index` which provides same data; agent-swarm tools (AgentMail, etc.) use HTTP MCP, not WebFetch |
292
+ | `Task` vs `Agent` tool mismatch in subagent routing | Medium | Medium | Verify and adapt pretooluse.mjs matcher; may need PR to context-mode or local fork |
293
+ | Performance overhead from stdio MCP + SQLite FTS5 | Low | Low | FTS5 is lightweight; SQLite is already available in Docker image |
294
+ | context-mode updates/breaking changes | Low | Medium | Pin to specific version; test before upgrading |
295
+ | Skill instructions override agent-swarm preferred behaviors | Medium | Medium | Review SKILL.md for conflicts with agent-swarm conventions; adjust if needed |
296
+
297
+ ---
298
+
299
+ ## Implementation Checklist
300
+
301
+ - [x] **Phase 1.1**: Add context-mode marketplace installation to `docker-entrypoint.sh` *(implemented in commit 73692e6)*
302
+ - [x] **Phase 1.2**: Add `mcp__context-mode__*` to permissions allow list in `Dockerfile.worker` *(implemented in commit 73692e6)*
303
+ - [x] **Phase 1.2**: Add `context-mode` to `enabledMcpjsonServers` in `Dockerfile.worker` *(implemented in commit 73692e6)*
304
+ - [x] **Phase 2**: Verify hook coexistence (especially `Agent` vs `Task` tool matching) — **Confirmed: `Agent` tool NOT matched by context-mode hooks. Acceptable; see findings above.**
305
+ - [x] **Phase 3.1**: Verify SKILL.md loads correctly via plugin system — **Confirmed: marketplace install auto-loads SKILL.md via Claude Code's plugin system.**
306
+ - [x] **Phase 3.2**: Add context-mode awareness note to `src/prompts/base-prompt.ts`
307
+ - [ ] **Phase 4.1**: Run functional tests for hooks and MCP servers *(requires deployed container; manual validation post-deploy)*
308
+ - [ ] **Phase 4.2**: Run integration test with research task *(requires deployed container; manual validation post-deploy)*
309
+ - [x] **Phase 4.3**: Document rollback procedure *(already documented in plan — remove from docker-entrypoint.sh + Dockerfile.worker, rebuild)*
310
+
311
+ ---
312
+
313
+ ## Relationship to Existing Work
314
+
315
+ This plan complements the existing [MCP Tool Context Reduction plan](thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md) (PR #95). That plan focuses on reducing the *tool definitions* overhead (~14K tokens from 50 tools). This plan focuses on reducing the *tool output* overhead (raw data from tool calls). Both can be applied together for maximum context savings:
316
+
317
+ - **Tool definitions**: ~14K → ~4.5K tokens (from tool annotations + Tool Search)
318
+ - **Tool output**: ~315 KB → ~5.4 KB per research session (from context-mode)
319
+
320
+ ## Files to Modify
321
+
322
+ | File | Change |
323
+ |------|--------|
324
+ | `docker-entrypoint.sh` | Add marketplace installation commands (~3 lines) |
325
+ | `Dockerfile.worker` | Update settings.json to include context-mode permissions (~2 lines) |
326
+ | `src/prompts/base-prompt.ts` | (Optional) Add context-mode awareness note (~3 lines) |
327
+
328
+ **Total estimated changes**: ~8-10 lines across 2-3 files. This is a low-risk, high-impact integration.