@desplega.ai/agent-swarm 1.49.0 → 1.52.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 (547) hide show
  1. package/README.md +1 -1
  2. package/openapi.json +2070 -728
  3. package/package.json +10 -1
  4. package/src/agentmail/handlers.ts +65 -10
  5. package/src/agentmail/templates.ts +111 -0
  6. package/src/be/db.ts +1233 -7
  7. package/src/be/migrations/014_prompt_templates.sql +33 -0
  8. package/src/be/migrations/015_workflow_workspace.sql +3 -0
  9. package/src/be/migrations/016_active_session_runner_session.sql +4 -0
  10. package/src/be/migrations/017_channel_activity_cursors.sql +6 -0
  11. package/src/be/migrations/018_fix_seed_double_version.sql +30 -0
  12. package/src/be/migrations/019_skills.sql +65 -0
  13. package/src/be/migrations/020_approval_requests.sql +41 -0
  14. package/src/be/seed.ts +62 -0
  15. package/src/be/skill-parser.ts +70 -0
  16. package/src/be/skill-sync.ts +106 -0
  17. package/src/commands/runner.ts +320 -132
  18. package/src/commands/templates.ts +172 -0
  19. package/src/github/handlers.ts +292 -77
  20. package/src/github/mentions-aliases.test.ts +73 -0
  21. package/src/github/mentions.test.ts +3 -3
  22. package/src/github/mentions.ts +32 -6
  23. package/src/github/templates.ts +398 -0
  24. package/src/gitlab/handlers.ts +63 -22
  25. package/src/gitlab/templates.ts +140 -0
  26. package/src/heartbeat/heartbeat.ts +19 -10
  27. package/src/heartbeat/templates.ts +30 -0
  28. package/src/http/active-sessions.ts +27 -0
  29. package/src/http/approval-requests.ts +247 -0
  30. package/src/http/config.ts +3 -3
  31. package/src/http/index.ts +9 -2
  32. package/src/http/poll.ts +135 -14
  33. package/src/http/prompt-templates.ts +412 -0
  34. package/src/http/schedules.ts +35 -0
  35. package/src/http/skills.ts +479 -0
  36. package/src/http/workflows.ts +8 -0
  37. package/src/linear/sync.ts +28 -4
  38. package/src/linear/templates.ts +47 -0
  39. package/src/prompts/base-prompt.ts +41 -490
  40. package/src/prompts/registry.ts +57 -0
  41. package/src/prompts/resolver.ts +296 -0
  42. package/src/prompts/session-templates.ts +604 -0
  43. package/src/providers/claude-adapter.ts +15 -2
  44. package/src/providers/pi-mono-extension.ts +5 -1
  45. package/src/scheduler/scheduler.ts +125 -91
  46. package/src/server.ts +44 -0
  47. package/src/slack/assistant.ts +7 -4
  48. package/src/slack/channel-activity.ts +177 -0
  49. package/src/slack/handlers.ts +21 -6
  50. package/src/slack/templates.ts +55 -0
  51. package/src/tests/approval-requests.test.ts +735 -0
  52. package/src/tests/artifact-sdk.test.ts +12 -12
  53. package/src/tests/base-prompt.test.ts +49 -49
  54. package/src/tests/channel-activity.test.ts +363 -0
  55. package/src/tests/heartbeat.test.ts +1 -0
  56. package/src/tests/linear-webhook.test.ts +7 -3
  57. package/src/tests/pool-session-logs.test.ts +199 -0
  58. package/src/tests/prompt-template-github.test.ts +682 -0
  59. package/src/tests/prompt-template-remaining.test.ts +504 -0
  60. package/src/tests/prompt-template-resolver.test.ts +621 -0
  61. package/src/tests/prompt-template-session.test.ts +363 -0
  62. package/src/tests/prompt-templates-db.test.ts +616 -0
  63. package/src/tests/self-improvement.test.ts +8 -7
  64. package/src/tests/skill-parser.test.ts +178 -0
  65. package/src/tests/skill-sync.test.ts +171 -0
  66. package/src/tests/slack-metadata-inheritance.test.ts +1 -1
  67. package/src/tests/slack-thread-followups.test.ts +1 -1
  68. package/src/tests/structured-output.test.ts +0 -4
  69. package/src/tests/tool-annotations.test.ts +2 -1
  70. package/src/tests/update-profile-agentid.test.ts +248 -0
  71. package/src/tests/update-profile-auth.test.ts +195 -0
  72. package/src/tests/workflow-async-v2.test.ts +126 -4
  73. package/src/tests/workflow-definition-validation.test.ts +76 -0
  74. package/src/tests/workflow-executors.test.ts +4 -2
  75. package/src/tests/workflow-retry-v2.test.ts +1 -1
  76. package/src/tests/workflow-schedule-trigger.test.ts +104 -0
  77. package/src/tests/workflow-workspace.test.ts +272 -0
  78. package/src/tools/prompt-templates/delete.ts +86 -0
  79. package/src/tools/prompt-templates/get.ts +89 -0
  80. package/src/tools/prompt-templates/index.ts +5 -0
  81. package/src/tools/prompt-templates/list.ts +95 -0
  82. package/src/tools/prompt-templates/preview.ts +84 -0
  83. package/src/tools/prompt-templates/set.ts +117 -0
  84. package/src/tools/request-human-input.ts +106 -0
  85. package/src/tools/skills/index.ts +11 -0
  86. package/src/tools/skills/skill-create.ts +105 -0
  87. package/src/tools/skills/skill-delete.ts +67 -0
  88. package/src/tools/skills/skill-get.ts +75 -0
  89. package/src/tools/skills/skill-install-remote.ts +152 -0
  90. package/src/tools/skills/skill-install.ts +101 -0
  91. package/src/tools/skills/skill-list.ts +77 -0
  92. package/src/tools/skills/skill-publish.ts +123 -0
  93. package/src/tools/skills/skill-search.ts +43 -0
  94. package/src/tools/skills/skill-sync-remote.ts +128 -0
  95. package/src/tools/skills/skill-uninstall.ts +60 -0
  96. package/src/tools/skills/skill-update.ts +128 -0
  97. package/src/tools/store-progress.ts +22 -4
  98. package/src/tools/task-action.ts +20 -0
  99. package/src/tools/templates.ts +53 -0
  100. package/src/tools/tool-config.ts +23 -0
  101. package/src/tools/update-profile.ts +106 -34
  102. package/src/tools/workflows/create-workflow.ts +19 -1
  103. package/src/tools/workflows/update-workflow.ts +16 -1
  104. package/src/types.ts +109 -2
  105. package/src/workflows/definition.ts +30 -12
  106. package/src/workflows/engine.ts +40 -14
  107. package/src/workflows/executors/agent-task.ts +14 -3
  108. package/src/workflows/executors/human-in-the-loop.ts +160 -0
  109. package/src/workflows/executors/registry.ts +2 -0
  110. package/src/workflows/index.ts +1 -1
  111. package/src/workflows/recovery.ts +72 -0
  112. package/src/workflows/resume.ts +162 -12
  113. package/src/workflows/triggers.ts +31 -2
  114. package/src/workflows/version.ts +2 -0
  115. package/.claude/settings.json +0 -84
  116. package/.claude/settings.local.json +0 -117
  117. package/.dockerignore +0 -61
  118. package/.editorconfig +0 -15
  119. package/.entire/settings.json +0 -4
  120. package/.env.docker.example +0 -56
  121. package/.env.example +0 -78
  122. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -78
  123. package/.github/ISSUE_TEMPLATE/community-template.yml +0 -77
  124. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  125. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -60
  126. package/.github/PULL_REQUEST_TEMPLATE/community-template.md +0 -29
  127. package/.github/workflows/ci.yml +0 -52
  128. package/.github/workflows/docker-and-deploy.yml +0 -132
  129. package/.github/workflows/merge-gate.yml +0 -233
  130. package/.opencode/plugins/entire.ts +0 -133
  131. package/.superset/config.json +0 -6
  132. package/.wts-config.json +0 -4
  133. package/.wts-setup.ts +0 -171
  134. package/CHANGELOG.md +0 -447
  135. package/CLAUDE.md +0 -521
  136. package/CONTRIBUTING.md +0 -315
  137. package/DEPLOYMENT.md +0 -622
  138. package/Dockerfile +0 -65
  139. package/Dockerfile.worker +0 -189
  140. package/MCP.md +0 -841
  141. package/UI.md +0 -40
  142. package/api-entrypoint.sh +0 -56
  143. package/assets/agent-swarm-logo-orange.png +0 -0
  144. package/assets/agent-swarm-logo.png +0 -0
  145. package/assets/agent-swarm.mp4 +0 -0
  146. package/assets/agent-swarm.png +0 -0
  147. package/biome.json +0 -39
  148. package/deploy/DEPLOY.md +0 -60
  149. package/deploy/agent-swarm.service +0 -17
  150. package/deploy/docker-push.ts +0 -30
  151. package/deploy/install.ts +0 -85
  152. package/deploy/prod-db.ts +0 -42
  153. package/deploy/uninstall.ts +0 -12
  154. package/deploy/update.ts +0 -21
  155. package/depot.json +0 -1
  156. package/docker-compose.example.yml +0 -350
  157. package/docker-compose.local.yml +0 -119
  158. package/docker-entrypoint.sh +0 -632
  159. package/docs-site/app/api/search/route.ts +0 -4
  160. package/docs-site/app/docs/[[...slug]]/page.tsx +0 -87
  161. package/docs-site/app/docs/layout.tsx +0 -12
  162. package/docs-site/app/globals.css +0 -24
  163. package/docs-site/app/layout.config.tsx +0 -34
  164. package/docs-site/app/layout.tsx +0 -119
  165. package/docs-site/app/llms-full.txt/route.ts +0 -11
  166. package/docs-site/app/llms.mdx/docs/[[...slug]]/route.ts +0 -24
  167. package/docs-site/app/llms.txt/route.ts +0 -8
  168. package/docs-site/app/page.tsx +0 -5
  169. package/docs-site/app/robots.ts +0 -13
  170. package/docs-site/app/sitemap.ts +0 -37
  171. package/docs-site/components/api-page.client.tsx +0 -4
  172. package/docs-site/components/api-page.tsx +0 -7
  173. package/docs-site/components/mdx/mermaid.tsx +0 -55
  174. package/docs-site/content/docs/(documentation)/architecture/agents.mdx +0 -117
  175. package/docs-site/content/docs/(documentation)/architecture/hooks.mdx +0 -77
  176. package/docs-site/content/docs/(documentation)/architecture/memory.mdx +0 -96
  177. package/docs-site/content/docs/(documentation)/architecture/meta.json +0 -4
  178. package/docs-site/content/docs/(documentation)/architecture/overview.mdx +0 -172
  179. package/docs-site/content/docs/(documentation)/concepts/epics.mdx +0 -98
  180. package/docs-site/content/docs/(documentation)/concepts/meta.json +0 -4
  181. package/docs-site/content/docs/(documentation)/concepts/scheduling.mdx +0 -136
  182. package/docs-site/content/docs/(documentation)/concepts/services.mdx +0 -104
  183. package/docs-site/content/docs/(documentation)/concepts/task-lifecycle.mdx +0 -148
  184. package/docs-site/content/docs/(documentation)/concepts/workflows.mdx +0 -209
  185. package/docs-site/content/docs/(documentation)/contributing.mdx +0 -158
  186. package/docs-site/content/docs/(documentation)/getting-started.mdx +0 -157
  187. package/docs-site/content/docs/(documentation)/guides/agentmail-integration.mdx +0 -79
  188. package/docs-site/content/docs/(documentation)/guides/deployment.mdx +0 -171
  189. package/docs-site/content/docs/(documentation)/guides/github-integration.mdx +0 -81
  190. package/docs-site/content/docs/(documentation)/guides/gitlab-integration.mdx +0 -93
  191. package/docs-site/content/docs/(documentation)/guides/linear-integration.mdx +0 -98
  192. package/docs-site/content/docs/(documentation)/guides/meta.json +0 -13
  193. package/docs-site/content/docs/(documentation)/guides/sentry-integration.mdx +0 -52
  194. package/docs-site/content/docs/(documentation)/guides/slack-integration.mdx +0 -179
  195. package/docs-site/content/docs/(documentation)/guides/x402-payments.mdx +0 -154
  196. package/docs-site/content/docs/(documentation)/index.mdx +0 -65
  197. package/docs-site/content/docs/(documentation)/meta.json +0 -19
  198. package/docs-site/content/docs/(documentation)/reference/cli.mdx +0 -241
  199. package/docs-site/content/docs/(documentation)/reference/environment-variables.mdx +0 -205
  200. package/docs-site/content/docs/(documentation)/reference/mcp-tools.mdx +0 -449
  201. package/docs-site/content/docs/(documentation)/reference/meta.json +0 -4
  202. package/docs-site/content/docs/api-reference/active-sessions.mdx +0 -9
  203. package/docs-site/content/docs/api-reference/agents.mdx +0 -9
  204. package/docs-site/content/docs/api-reference/channels.mdx +0 -9
  205. package/docs-site/content/docs/api-reference/config.mdx +0 -9
  206. package/docs-site/content/docs/api-reference/debug.mdx +0 -9
  207. package/docs-site/content/docs/api-reference/ecosystem.mdx +0 -9
  208. package/docs-site/content/docs/api-reference/epics.mdx +0 -9
  209. package/docs-site/content/docs/api-reference/index.mdx +0 -32
  210. package/docs-site/content/docs/api-reference/memory.mdx +0 -9
  211. package/docs-site/content/docs/api-reference/meta.json +0 -25
  212. package/docs-site/content/docs/api-reference/poll.mdx +0 -9
  213. package/docs-site/content/docs/api-reference/repos.mdx +0 -9
  214. package/docs-site/content/docs/api-reference/schedules.mdx +0 -9
  215. package/docs-site/content/docs/api-reference/session-data.mdx +0 -9
  216. package/docs-site/content/docs/api-reference/stats.mdx +0 -9
  217. package/docs-site/content/docs/api-reference/tasks.mdx +0 -9
  218. package/docs-site/content/docs/api-reference/trackers.mdx +0 -9
  219. package/docs-site/content/docs/api-reference/webhooks.mdx +0 -9
  220. package/docs-site/content/docs/api-reference/workflows.mdx +0 -9
  221. package/docs-site/content/docs/meta.json +0 -3
  222. package/docs-site/lib/get-llm-text.ts +0 -10
  223. package/docs-site/lib/openapi.ts +0 -23
  224. package/docs-site/lib/source.ts +0 -8
  225. package/docs-site/mdx-components.tsx +0 -13
  226. package/docs-site/next.config.mjs +0 -29
  227. package/docs-site/package.json +0 -35
  228. package/docs-site/pnpm-lock.yaml +0 -5407
  229. package/docs-site/postcss.config.mjs +0 -8
  230. package/docs-site/public/logo.png +0 -0
  231. package/docs-site/scripts/generate-docs.ts +0 -171
  232. package/docs-site/source.config.ts +0 -17
  233. package/docs-site/tsconfig.json +0 -46
  234. package/ecosystem.config.cjs +0 -66
  235. package/landing/next.config.ts +0 -14
  236. package/landing/package.json +0 -31
  237. package/landing/pnpm-lock.yaml +0 -1091
  238. package/landing/postcss.config.mjs +0 -8
  239. package/landing/public/apple-touch-icon.png +0 -0
  240. package/landing/public/favicon.ico +0 -0
  241. package/landing/public/logo.png +0 -0
  242. package/landing/public/og-image.png +0 -0
  243. package/landing/public/omghost-desplega.svg +0 -30
  244. package/landing/public/omghost-openfort.svg +0 -9
  245. package/landing/src/app/actions/waitlist.ts +0 -25
  246. package/landing/src/app/blog/openfort-hackathon/page.tsx +0 -863
  247. package/landing/src/app/blog/page.tsx +0 -162
  248. package/landing/src/app/blog/swarm-metrics/page.tsx +0 -685
  249. package/landing/src/app/examples/page.tsx +0 -174
  250. package/landing/src/app/examples/x402/page.tsx +0 -456
  251. package/landing/src/app/globals.css +0 -122
  252. package/landing/src/app/layout.tsx +0 -134
  253. package/landing/src/app/page.tsx +0 -27
  254. package/landing/src/app/robots.ts +0 -13
  255. package/landing/src/app/sitemap.ts +0 -44
  256. package/landing/src/components/architecture.tsx +0 -163
  257. package/landing/src/components/cta.tsx +0 -52
  258. package/landing/src/components/features.tsx +0 -160
  259. package/landing/src/components/footer.tsx +0 -100
  260. package/landing/src/components/hero.tsx +0 -217
  261. package/landing/src/components/how-it-works.tsx +0 -165
  262. package/landing/src/components/navbar.tsx +0 -147
  263. package/landing/src/components/waitlist.tsx +0 -110
  264. package/landing/src/components/why-choose.tsx +0 -149
  265. package/landing/src/components/workshops.tsx +0 -328
  266. package/landing/src/lib/utils.ts +0 -6
  267. package/landing/tsconfig.json +0 -41
  268. package/misc/transcripts/2026-03-09-pi-mono-e2e-verification.md +0 -154
  269. package/new-ui/CLAUDE.md +0 -92
  270. package/new-ui/README.md +0 -73
  271. package/new-ui/biome.json +0 -42
  272. package/new-ui/components.json +0 -21
  273. package/new-ui/index.html +0 -25
  274. package/new-ui/package.json +0 -49
  275. package/new-ui/pnpm-lock.yaml +0 -4845
  276. package/new-ui/public/logo.png +0 -0
  277. package/new-ui/src/api/client.ts +0 -814
  278. package/new-ui/src/api/hooks/index.ts +0 -64
  279. package/new-ui/src/api/hooks/use-agents.ts +0 -58
  280. package/new-ui/src/api/hooks/use-channels.ts +0 -115
  281. package/new-ui/src/api/hooks/use-config-api.ts +0 -46
  282. package/new-ui/src/api/hooks/use-costs.ts +0 -122
  283. package/new-ui/src/api/hooks/use-db-query.ts +0 -29
  284. package/new-ui/src/api/hooks/use-epics.ts +0 -75
  285. package/new-ui/src/api/hooks/use-repos.ts +0 -61
  286. package/new-ui/src/api/hooks/use-schedules.ts +0 -81
  287. package/new-ui/src/api/hooks/use-services.ts +0 -16
  288. package/new-ui/src/api/hooks/use-stats.ts +0 -27
  289. package/new-ui/src/api/hooks/use-tasks.ts +0 -89
  290. package/new-ui/src/api/hooks/use-workflows.ts +0 -109
  291. package/new-ui/src/api/types.ts +0 -549
  292. package/new-ui/src/app/App.tsx +0 -13
  293. package/new-ui/src/app/providers.tsx +0 -32
  294. package/new-ui/src/app/router.tsx +0 -52
  295. package/new-ui/src/components/layout/app-header.tsx +0 -47
  296. package/new-ui/src/components/layout/app-sidebar.tsx +0 -128
  297. package/new-ui/src/components/layout/breadcrumbs.tsx +0 -57
  298. package/new-ui/src/components/layout/config-guard.tsx +0 -22
  299. package/new-ui/src/components/layout/root-layout.tsx +0 -40
  300. package/new-ui/src/components/layout/swarm-switcher.tsx +0 -85
  301. package/new-ui/src/components/shared/command-menu.tsx +0 -131
  302. package/new-ui/src/components/shared/data-grid.tsx +0 -141
  303. package/new-ui/src/components/shared/empty-state.tsx +0 -24
  304. package/new-ui/src/components/shared/error-boundary.tsx +0 -72
  305. package/new-ui/src/components/shared/json-viewer.tsx +0 -47
  306. package/new-ui/src/components/shared/name-connection-modal.tsx +0 -99
  307. package/new-ui/src/components/shared/page-skeleton.tsx +0 -16
  308. package/new-ui/src/components/shared/session-log-viewer.tsx +0 -364
  309. package/new-ui/src/components/shared/stats-bar.tsx +0 -132
  310. package/new-ui/src/components/shared/status-badge.tsx +0 -131
  311. package/new-ui/src/components/shared/usage-summary.tsx +0 -179
  312. package/new-ui/src/components/ui/alert-dialog.tsx +0 -176
  313. package/new-ui/src/components/ui/alert.tsx +0 -60
  314. package/new-ui/src/components/ui/avatar.tsx +0 -96
  315. package/new-ui/src/components/ui/badge.tsx +0 -46
  316. package/new-ui/src/components/ui/button.tsx +0 -62
  317. package/new-ui/src/components/ui/card.tsx +0 -75
  318. package/new-ui/src/components/ui/command.tsx +0 -160
  319. package/new-ui/src/components/ui/dialog.tsx +0 -143
  320. package/new-ui/src/components/ui/dropdown-menu.tsx +0 -226
  321. package/new-ui/src/components/ui/input.tsx +0 -21
  322. package/new-ui/src/components/ui/label.tsx +0 -19
  323. package/new-ui/src/components/ui/progress.tsx +0 -26
  324. package/new-ui/src/components/ui/scroll-area.tsx +0 -54
  325. package/new-ui/src/components/ui/select.tsx +0 -175
  326. package/new-ui/src/components/ui/separator.tsx +0 -28
  327. package/new-ui/src/components/ui/sheet.tsx +0 -132
  328. package/new-ui/src/components/ui/sidebar.tsx +0 -691
  329. package/new-ui/src/components/ui/skeleton.tsx +0 -13
  330. package/new-ui/src/components/ui/sonner.tsx +0 -35
  331. package/new-ui/src/components/ui/switch.tsx +0 -33
  332. package/new-ui/src/components/ui/table.tsx +0 -92
  333. package/new-ui/src/components/ui/tabs.tsx +0 -79
  334. package/new-ui/src/components/ui/textarea.tsx +0 -18
  335. package/new-ui/src/components/ui/tooltip.tsx +0 -51
  336. package/new-ui/src/components/workflows/action-node.tsx +0 -53
  337. package/new-ui/src/components/workflows/condition-node.tsx +0 -50
  338. package/new-ui/src/components/workflows/graph-utils.ts +0 -124
  339. package/new-ui/src/components/workflows/json-tree.tsx +0 -189
  340. package/new-ui/src/components/workflows/node-styles.ts +0 -10
  341. package/new-ui/src/components/workflows/step-detail-sheet.tsx +0 -87
  342. package/new-ui/src/components/workflows/trigger-node.tsx +0 -41
  343. package/new-ui/src/components/workflows/workflow-graph.tsx +0 -65
  344. package/new-ui/src/hooks/use-auto-scroll.ts +0 -82
  345. package/new-ui/src/hooks/use-config.ts +0 -203
  346. package/new-ui/src/hooks/use-keyboard-shortcuts.ts +0 -41
  347. package/new-ui/src/hooks/use-mobile.ts +0 -19
  348. package/new-ui/src/hooks/use-theme.ts +0 -60
  349. package/new-ui/src/lib/config.ts +0 -188
  350. package/new-ui/src/lib/slugs.ts +0 -71
  351. package/new-ui/src/lib/utils.ts +0 -120
  352. package/new-ui/src/main.tsx +0 -11
  353. package/new-ui/src/pages/agents/[id]/page.tsx +0 -492
  354. package/new-ui/src/pages/agents/page.tsx +0 -134
  355. package/new-ui/src/pages/chat/page.tsx +0 -674
  356. package/new-ui/src/pages/config/page.tsx +0 -1109
  357. package/new-ui/src/pages/dashboard/page.tsx +0 -454
  358. package/new-ui/src/pages/debug/page.tsx +0 -275
  359. package/new-ui/src/pages/epics/[id]/page.tsx +0 -809
  360. package/new-ui/src/pages/epics/page.tsx +0 -321
  361. package/new-ui/src/pages/not-found/page.tsx +0 -18
  362. package/new-ui/src/pages/repos/page.tsx +0 -369
  363. package/new-ui/src/pages/schedules/[id]/page.tsx +0 -664
  364. package/new-ui/src/pages/schedules/page.tsx +0 -477
  365. package/new-ui/src/pages/services/page.tsx +0 -128
  366. package/new-ui/src/pages/tasks/[id]/page.tsx +0 -670
  367. package/new-ui/src/pages/tasks/page.tsx +0 -592
  368. package/new-ui/src/pages/usage/page.tsx +0 -195
  369. package/new-ui/src/pages/workflow-runs/[id]/page.tsx +0 -363
  370. package/new-ui/src/pages/workflows/[id]/page.tsx +0 -417
  371. package/new-ui/src/pages/workflows/page.tsx +0 -266
  372. package/new-ui/src/styles/ag-grid.css +0 -36
  373. package/new-ui/src/styles/globals.css +0 -213
  374. package/new-ui/test-results/.last-run.json +0 -4
  375. package/new-ui/tsconfig.app.json +0 -34
  376. package/new-ui/tsconfig.json +0 -4
  377. package/new-ui/tsconfig.node.json +0 -26
  378. package/new-ui/vercel.json +0 -4
  379. package/new-ui/vite.config.ts +0 -28
  380. package/plugin/README.md +0 -1
  381. package/plugin/build-pi-skills.ts +0 -233
  382. package/plugin/hooks/hooks.json +0 -71
  383. package/prek.toml +0 -75
  384. package/pyproject.toml +0 -9
  385. package/scripts/check-db-boundary.sh +0 -60
  386. package/scripts/e2e-docker-provider.ts +0 -820
  387. package/scripts/e2e-io-schemas-test.ts +0 -807
  388. package/scripts/e2e-provider-test.ts +0 -220
  389. package/scripts/e2e-workflow-redesign.sh +0 -229
  390. package/scripts/e2e-workflow-test.sh +0 -285
  391. package/scripts/e2e-workflow-test.ts +0 -857
  392. package/scripts/generate-mcp-docs.ts +0 -415
  393. package/scripts/generate-openapi.ts +0 -26
  394. package/scripts/measure-tool-tokens.ts +0 -118
  395. package/scripts/x402-e2e-test.ts +0 -195
  396. package/scripts/x402-test-server.ts +0 -236
  397. package/scripts/x402-testnet-e2e.ts +0 -668
  398. package/slack-manifest.json +0 -88
  399. package/templates-ui/README.md +0 -46
  400. package/templates-ui/components.json +0 -17
  401. package/templates-ui/eslint.config.mjs +0 -18
  402. package/templates-ui/next.config.ts +0 -7
  403. package/templates-ui/package.json +0 -35
  404. package/templates-ui/pnpm-lock.yaml +0 -4571
  405. package/templates-ui/postcss.config.mjs +0 -7
  406. package/templates-ui/public/file.svg +0 -1
  407. package/templates-ui/public/globe.svg +0 -1
  408. package/templates-ui/public/logo.png +0 -0
  409. package/templates-ui/public/next.svg +0 -1
  410. package/templates-ui/public/vercel.svg +0 -1
  411. package/templates-ui/public/window.svg +0 -1
  412. package/templates-ui/src/app/[category]/[name]/page.tsx +0 -89
  413. package/templates-ui/src/app/api/templates/[...slug]/route.ts +0 -52
  414. package/templates-ui/src/app/api/templates/route.ts +0 -18
  415. package/templates-ui/src/app/builder/page.tsx +0 -37
  416. package/templates-ui/src/app/globals.css +0 -94
  417. package/templates-ui/src/app/layout.tsx +0 -79
  418. package/templates-ui/src/app/page.tsx +0 -38
  419. package/templates-ui/src/app/robots.ts +0 -11
  420. package/templates-ui/src/app/sitemap.ts +0 -31
  421. package/templates-ui/src/components/compose-builder.tsx +0 -442
  422. package/templates-ui/src/components/compose-preview.tsx +0 -117
  423. package/templates-ui/src/components/file-preview.tsx +0 -77
  424. package/templates-ui/src/components/footer.tsx +0 -40
  425. package/templates-ui/src/components/header.tsx +0 -41
  426. package/templates-ui/src/components/template-card.tsx +0 -87
  427. package/templates-ui/src/components/template-detail.tsx +0 -125
  428. package/templates-ui/src/components/template-gallery.tsx +0 -263
  429. package/templates-ui/src/components/ui/badge.tsx +0 -36
  430. package/templates-ui/src/components/ui/button.tsx +0 -57
  431. package/templates-ui/src/components/ui/card.tsx +0 -76
  432. package/templates-ui/src/components/ui/separator.tsx +0 -31
  433. package/templates-ui/src/components/ui/tooltip.tsx +0 -32
  434. package/templates-ui/src/lib/compose-generator.ts +0 -241
  435. package/templates-ui/src/lib/templates.ts +0 -137
  436. package/templates-ui/src/lib/utils.ts +0 -6
  437. package/templates-ui/tsconfig.json +0 -34
  438. package/thoughts/research/2026-02-28-openfort-viem-x402-research.md +0 -679
  439. package/thoughts/research/2026-02-28-x402-payments-research.md +0 -686
  440. package/thoughts/researcher/plans/2026-02-20-agent-self-improvement-plan.md +0 -282
  441. package/thoughts/researcher/research/2026-02-20-agent-self-improvement.md +0 -492
  442. package/thoughts/shared/plans/.gitkeep +0 -0
  443. package/thoughts/shared/plans/2025-12-18-slack-integration.md +0 -1195
  444. package/thoughts/shared/plans/2025-12-19-agent-log-streaming.md +0 -732
  445. package/thoughts/shared/plans/2025-12-19-role-based-swarm-plugin.md +0 -361
  446. package/thoughts/shared/plans/2025-12-20-mobile-responsive-ui.md +0 -501
  447. package/thoughts/shared/plans/2025-12-20-startup-team-swarm.md +0 -560
  448. package/thoughts/shared/plans/2025-12-23-runner-level-polling.md +0 -934
  449. package/thoughts/shared/plans/2025-12-23-runner-session-logs.md +0 -1000
  450. package/thoughts/shared/plans/2025-12-23-worker-lead-spawn-triggers.md +0 -568
  451. package/thoughts/shared/plans/2026-01-09-inverse-teleport.md +0 -1516
  452. package/thoughts/shared/plans/2026-01-12-agent-rename-pm2-control.md +0 -1133
  453. package/thoughts/shared/plans/2026-01-12-github-app-integration.md +0 -380
  454. package/thoughts/shared/plans/2026-01-12-lead-inbox-model.md +0 -876
  455. package/thoughts/shared/plans/2026-01-12-ralph-wiggum-integration.md +0 -463
  456. package/thoughts/shared/plans/2026-01-13-agent-concurrency.md +0 -691
  457. package/thoughts/shared/plans/2026-01-13-github-assignment-handling.md +0 -690
  458. package/thoughts/shared/plans/2026-01-13-prevent-duplicate-trigger-processing.md +0 -1071
  459. package/thoughts/shared/plans/2026-01-14-fix-slack-thread-context.md +0 -507
  460. package/thoughts/shared/plans/2026-01-15-scheduled-tasks-implementation.md +0 -565
  461. package/thoughts/shared/plans/2026-01-15-usage-cost-tracking-ui.md +0 -1479
  462. package/thoughts/shared/plans/2026-01-16-epics-feature-implementation.md +0 -1230
  463. package/thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md +0 -282
  464. package/thoughts/shared/plans/2026-03-02-claude-context-mode-integration.md +0 -328
  465. package/thoughts/shared/plans/2026-03-02-code-level-heartbeat.md +0 -224
  466. package/thoughts/shared/research/.gitkeep +0 -0
  467. package/thoughts/shared/research/2025-01-09-inverse-teleport-plan-review.md +0 -420
  468. package/thoughts/shared/research/2025-12-18-slack-integration.md +0 -442
  469. package/thoughts/shared/research/2025-12-19-agent-log-streaming.md +0 -339
  470. package/thoughts/shared/research/2025-12-19-agent-secrets-cli-research.md +0 -390
  471. package/thoughts/shared/research/2025-12-21-gemini-cli-integration.md +0 -376
  472. package/thoughts/shared/research/2025-12-22-runner-loop-architecture.md +0 -582
  473. package/thoughts/shared/research/2025-12-22-setup-experience-improvements.md +0 -264
  474. package/thoughts/shared/research/2026-01-13-lead-duplicate-trigger-processing.md +0 -223
  475. package/thoughts/shared/research/2026-01-14-lead-slack-thread-context.md +0 -277
  476. package/thoughts/shared/research/2026-01-15-ai-tracker-agent-swarm-integration.md +0 -376
  477. package/thoughts/shared/research/2026-01-15-auto-starting-processes-in-worker-containers.md +0 -787
  478. package/thoughts/shared/research/2026-01-15-scheduled-tasks.md +0 -390
  479. package/thoughts/shared/research/2026-01-16-epics-feature-research.md +0 -437
  480. package/thoughts/shared/research/2026-02-26-cliffy-mcp-tools.md +0 -159
  481. package/thoughts/shared/research/2026-03-03-database-migration-system-refactor.md +0 -337
  482. package/thoughts/swarm-researcher/plans/2026-02-23-openclaw-improvements-plan.md +0 -778
  483. package/thoughts/swarm-researcher/plans/2026-02-26-artifacts-localtunnel-plan.md +0 -1269
  484. package/thoughts/swarm-researcher/research/2026-02-23-openclaw-vs-agent-swarm-comparison.md +0 -411
  485. package/thoughts/swarm-researcher/research/2026-02-26-artifacts-localtunnel.md +0 -724
  486. package/thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md +0 -443
  487. package/thoughts/taras/brainstorms/2026-03-20-setup-cli-onboarding.md +0 -307
  488. package/thoughts/taras/plans/2026-01-22-agent-swarm-schemas.md +0 -98
  489. package/thoughts/taras/plans/2026-01-28-per-worker-claude-md.md +0 -617
  490. package/thoughts/taras/plans/2026-01-28-sentry-cli-integration.md +0 -214
  491. package/thoughts/taras/plans/2026-02-20-auto-improvement.md +0 -803
  492. package/thoughts/taras/plans/2026-02-20-env-management.md +0 -538
  493. package/thoughts/taras/plans/2026-02-20-memory-system.md +0 -882
  494. package/thoughts/taras/plans/2026-02-20-repos-knowledge.md +0 -806
  495. package/thoughts/taras/plans/2026-02-20-session-attach.md +0 -647
  496. package/thoughts/taras/plans/2026-02-20-worker-identity.md +0 -820
  497. package/thoughts/taras/plans/2026-02-25-feat-new-ui-visual-redesign-plan.md +0 -768
  498. package/thoughts/taras/plans/2026-03-04-fix-buildSystemPrompt-missing-fields.md +0 -77
  499. package/thoughts/taras/plans/2026-03-04-new-ui-missing-actions.md +0 -543
  500. package/thoughts/taras/plans/2026-03-06-one-time-scheduled-tasks.md +0 -373
  501. package/thoughts/taras/plans/2026-03-08-memory-self-improvement-enhancements.md +0 -512
  502. package/thoughts/taras/plans/2026-03-08-pi-mono-provider-implementation.md +0 -919
  503. package/thoughts/taras/plans/2026-03-09-templates-registry.md +0 -723
  504. package/thoughts/taras/plans/2026-03-10-task-working-directory.md +0 -371
  505. package/thoughts/taras/plans/2026-03-11-archil-per-agent-write-strategy.md +0 -621
  506. package/thoughts/taras/plans/2026-03-12-eliminate-inbox-route-to-tasks.md +0 -61
  507. package/thoughts/taras/plans/2026-03-12-slack-thread-followup-additive.md +0 -488
  508. package/thoughts/taras/plans/2026-03-13-slack-ai-improvements.md +0 -644
  509. package/thoughts/taras/plans/2026-03-16-route-wrapper-openapi.md +0 -636
  510. package/thoughts/taras/plans/2026-03-17-multi-api-config.md +0 -444
  511. package/thoughts/taras/plans/2026-03-18-agent-fs-integration.md +0 -591
  512. package/thoughts/taras/plans/2026-03-18-debug-db-explorer.md +0 -446
  513. package/thoughts/taras/plans/2026-03-18-workflow-redesign.md +0 -987
  514. package/thoughts/taras/plans/2026-03-19-compound-learnings.md +0 -403
  515. package/thoughts/taras/plans/2026-03-19-ticket-tracker-linear-integration.md +0 -860
  516. package/thoughts/taras/plans/2026-03-19-workflow-io-schemas-and-bugs.md +0 -899
  517. package/thoughts/taras/plans/2026-03-20-setup-cli-onboarding.md +0 -874
  518. package/thoughts/taras/plans/2026-03-20-workflow-structured-output-validation-workspace.md +0 -723
  519. package/thoughts/taras/research/2026-01-22-vercel-cli-integration.md +0 -287
  520. package/thoughts/taras/research/2026-01-27-excessive-polling-issue.md +0 -311
  521. package/thoughts/taras/research/2026-01-28-per-worker-claude-md.md +0 -383
  522. package/thoughts/taras/research/2026-01-28-sentry-cli-integration.md +0 -240
  523. package/thoughts/taras/research/2026-02-19-agent-native-swarm-architecture.md +0 -390
  524. package/thoughts/taras/research/2026-02-19-swarm-gaps-implementation.md +0 -594
  525. package/thoughts/taras/research/2026-02-25-dashboard-ui-design-best-practices.md +0 -825
  526. package/thoughts/taras/research/2026-02-26-task-detail-page-redesign.md +0 -393
  527. package/thoughts/taras/research/2026-03-03-new-ui-missing-actions.md +0 -168
  528. package/thoughts/taras/research/2026-03-05-pi-mono-provider-research.md +0 -230
  529. package/thoughts/taras/research/2026-03-06-workflow-engine-design.md +0 -445
  530. package/thoughts/taras/research/2026-03-08-drive-loop-concept.md +0 -375
  531. package/thoughts/taras/research/2026-03-08-pi-mono-deep-dive.md +0 -869
  532. package/thoughts/taras/research/2026-03-09-templates-registry.md +0 -373
  533. package/thoughts/taras/research/2026-03-10-agent-working-directory.md +0 -223
  534. package/thoughts/taras/research/2026-03-10-configurable-event-prompts.md +0 -339
  535. package/thoughts/taras/research/2026-03-11-archil-production-setup.md +0 -181
  536. package/thoughts/taras/research/2026-03-11-archil-shared-disk-write-strategies.md +0 -437
  537. package/thoughts/taras/research/2026-03-13-slack-ai-features.md +0 -258
  538. package/thoughts/taras/research/2026-03-16-openapi-docs-generation.md +0 -335
  539. package/thoughts/taras/research/2026-03-16-route-wrapper-openapi.md +0 -670
  540. package/thoughts/taras/research/2026-03-16-slack-thread-followups-e2e.md +0 -54
  541. package/thoughts/taras/research/2026-03-18-agent-fs-integration.md +0 -558
  542. package/thoughts/taras/research/2026-03-18-linear-integration-finalization.md +0 -526
  543. package/thoughts/taras/research/2026-03-18-workflow-redesign.md +0 -797
  544. package/thoughts/taras/research/2026-03-19-workflow-node-io-schemas-and-bugs.md +0 -563
  545. package/thoughts/taras/research/2026-03-19-workflow-structured-output-validation-workspace.md +0 -486
  546. package/thoughts/taras/research/2026-03-20-prompt-template-registry.md +0 -469
  547. package/tsconfig.json +0 -37
@@ -1,307 +0,0 @@
1
- ---
2
- topic: Setup CLI onboarding experience
3
- status: complete
4
- exploration_type: workflow-to-improve
5
- date: 2026-03-20
6
- ---
7
-
8
- # Setup CLI Onboarding Experience
9
-
10
- ## Context
11
-
12
- The current `agent-swarm setup` CLI command configures a **client-side** agent to connect to an existing swarm. It:
13
-
14
- 1. Creates `.claude/` dir and `settings.local.json`
15
- 2. Creates `.mcp.json` with server config
16
- 3. Asks for API token and Agent ID interactively (or `--yes` mode from env vars)
17
- 4. Adds hooks config (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PreCompact, Stop)
18
- 5. Updates `.gitignore`
19
- 6. Supports `--dry-run`, `--restore`, `-y/--yes`
20
-
21
- **What it does NOT do:** It doesn't set up the server-side infrastructure. There's no guided way for a new user to go from zero to a running swarm. The docker-compose files (`docker-compose.example.yml` and `docker-compose.local.yml`) exist but require manual `.env` file creation, UUID generation, and understanding of the architecture.
22
-
23
- **Goal:** Explore what a great onboarding experience looks like with two variants:
24
- 1. **Local** — docker compose on the user's machine
25
- 2. **Remote** — deploying to a server via SSH
26
-
27
- ## Exploration
28
-
29
- ### Q: What kind of exploration is this?
30
- Workflow to improve — evolve the existing `setup` command to handle both client config AND server provisioning.
31
-
32
- **Insights:** The user sees this as a natural extension of the existing `setup` command rather than a separate concept. This means the current `setup` flow (client-side config for connecting to a swarm) should remain, but the command should also be able to bootstrap the server infrastructure itself. Two entry points from the same command.
33
-
34
- ### Q: Who is the target user?
35
- Developer first-timer — someone who found the repo, wants to try agent-swarm, needs guidance on what API keys to get, what the architecture looks like, etc.
36
-
37
- **Insights:** This is a critical framing. First-timers don't know what `API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN`, `AGENT_ID`, or `MCP_BASE_URL` mean. The setup needs to explain *why* each piece is needed, not just ask for values. The current setup just says "Enter your API token:" with no context. We need to either generate things for them (UUIDs, API keys) or guide them to get what they need (OAuth tokens).
38
-
39
- ### Q: What's the desired end state for the Local variant?
40
- Configurable — ask how many workers they want and generate the compose file dynamically.
41
-
42
- **Insights:** This means the setup wizard needs to:
43
- 1. Ask "how many workers?" (with a sensible default like 1 lead + 1 worker)
44
- 2. Ask which templates each worker should use (from the templates registry)
45
- 3. Generate UUIDs for each agent automatically
46
- 4. Generate a `docker-compose.yml` and `.env` file
47
- 5. Optionally start the stack immediately
48
-
49
- The docker-compose.example.yml has hardcoded agent IDs and a fixed topology — the setup would need to be a compose file *generator*, not just a copier.
50
-
51
- ### Q: What credentials should the setup wizard handle?
52
- Full guided flow — walk through every credential with explanations and skip options. Reference: `../agent-swarm-internal` onboarding process.
53
-
54
- **Insights:** The user wants a thorough, hand-holding experience. Every credential should be explained: what it's for, where to get it, and whether it's required or optional. Auto-generate what we can (API_KEY, UUIDs), guide for what we can't (OAuth token, GitHub token). The internal onboarding process is a reference for how this should feel. (Researching that now.)
55
-
56
- ### Q: What's the mental model for the Remote (SSH) variant?
57
- Deploy to a server — user has a fresh VPS (Hetzner, DigitalOcean, etc.) and wants the CLI to SSH in, install Docker, deploy the stack, and configure everything.
58
-
59
- **Insights:** This is a significant scope expansion. The CLI would need to:
60
- 1. Accept SSH credentials (host, user, key/password)
61
- 2. SSH into the server and check prerequisites (Docker installed? Docker Compose? Disk space?)
62
- 3. Install Docker if missing
63
- 4. Transfer the generated docker-compose.yml and .env to the server
64
- 5. Run `docker compose up -d`
65
- 6. Verify the stack is healthy (hit `/health` endpoint)
66
- 7. Configure the user's local client to point at the remote server
67
-
68
- This is closer to what tools like Kamal (formerly MRSK) or CapRover do. It's ambitious but very compelling for the first-timer persona.
69
-
70
- ### Q: Should the remote deploy handle DNS/domain + HTTPS?
71
- IP first, domain optional — deploy works with just an IP. Optionally ask "do you have a domain?" and if yes, set up Caddy + auto-HTTPS.
72
-
73
- **Insights:** This is the right pragmatic middle ground. The compose file would include a Caddy service by default (it's lightweight), but it only activates HTTPS when a domain is provided. Without a domain, the API runs on plain HTTP on the IP. This keeps the "just try it" path fast while allowing production-grade setup for users who are ready.
74
-
75
- ### Q: What UX format for the expanded wizard?
76
- Ink TUI wizard — multi-step wizard with select menus, progress bars, colored output, explanations between steps. Keep everything in the terminal.
77
-
78
- **Insights:** This aligns with the current tech stack (Ink + React). The wizard needs to be designed as a state machine with clear steps. Key UX patterns to borrow:
79
- - `gh auth login` style: explanatory text before each prompt
80
- - `create-next-app` style: select menus for choices (not free text where possible)
81
- - Progress indicators for long operations (Docker pull, SSH commands)
82
- - Clear "you need to do this externally" steps with "press Enter when done" gates
83
-
84
- ### Q: What's the "wow moment" after setup completes?
85
- Custom answer: The first task should be a prompt from the TUI (skippable), and the dashboard open should be optional — it should open `app.agent-swarm.dev` with query params for auto-config (not the local new-ui).
86
-
87
- **Insights:** This is a great UX decision:
88
- 1. **Hosted dashboard** (`app.agent-swarm.dev?api_url=...&api_key=...`) — no need to self-host the UI. The hosted app auto-configures via query params. This removes a whole service from the local/remote stack.
89
- 2. **TUI task prompt** — after the stack is healthy, the wizard shows "Try sending your first task:" with a text input. User types something like "Say hello to the swarm" and sees it get picked up. Skippable for people who just want to finish setup.
90
- 3. **Both are optional** — the setup can complete without either. Clean exit with "your swarm is running at X, dashboard at Y".
91
-
92
- This means the compose file doesn't need the `new-ui` service at all — the hosted dashboard handles it. Simplifies the stack significantly.
93
-
94
- ### Q: Should the wizard also handle client-side config (connecting local Claude Code)?
95
- Wizard offers it — at the end of infra setup, ask "Want to connect this project to the swarm now?" If yes, run the client config inline; if no, show the command to do it later.
96
-
97
- **Insights:** This is the best of both worlds. The existing `setup` command logic gets reused as a sub-step within the wizard. The wizard orchestrates: infra → health check → (optional) client config → (optional) first task → (optional) dashboard. Each post-deploy step is skippable. The current `setup` command remains available standalone for people who already have a swarm running.
98
-
99
- ### Q: What about updates/upgrades after initial setup?
100
- Idempotent re-run — running setup again detects existing infra and offers to modify it (add workers, update images). No separate upgrade command needed.
101
-
102
- **Insights:** This is elegant but adds complexity. The setup needs to:
103
- 1. Detect if a `docker-compose.yml` / `.env` already exists locally (or on the remote server)
104
- 2. Parse the existing config to understand current state (how many workers, which templates, what version)
105
- 3. Show "your swarm is currently: API + 1 lead + 2 workers" and ask what to change
106
- 4. Diff the new compose against the old, show what changes, and apply
107
-
108
- This is doable because the compose file is generated (not hand-edited), so we control the format. We could store metadata in a `.agent-swarm-setup.json` manifest alongside the compose file to make detection easier.
109
-
110
- ### Q: How should the template system be presented?
111
- Presets first — "What kind of swarm?" → "Development team" (lead + 2 coders), "Content team" (lead + writer + reviewer + strategist), "Custom". Presets map to templates under the hood.
112
-
113
- **Insights:** This is excellent for first-timers. They don't need to understand the template system to get started. The presets encode best-practice team compositions. Possible presets:
114
- - **Development team**: 1 lead + 2 coders (the default "get stuff done" config)
115
- - **Content team**: 1 lead + content-writer + content-reviewer + content-strategist
116
- - **Research team**: 1 lead + researcher + reviewer
117
- - **Solo**: 1 worker only (simplest possible, no lead)
118
- - **Custom**: pick templates individually
119
-
120
- Presets could be defined in the templates registry itself (a new concept: "compositions" or "presets"), making them extensible without CLI updates.
121
-
122
- ### Q: What's the MVP slice for a first ship?
123
- Local compose generator — wizard asks questions, generates docker-compose.yml + .env, runs `docker compose up`. Remote comes later.
124
-
125
- **Insights:** This scopes the first iteration cleanly:
126
- - **In scope**: TUI wizard, credential collection with explanations, preset selection, compose + .env generation, `docker compose up`, basic health check
127
- - **Out of scope (v2)**: Remote/SSH deploy, client-side config integration, first-task prompt, idempotent re-run, dashboard auto-open
128
- - The compose generator is the hardest new capability. Once that works, layering remote deploy on top (transfer files via SSH, run compose remotely) is incremental.
129
-
130
- ### Q: Where should generated files live?
131
- Current directory by default, with fallback to `~/.agent-swarm/`. A `.agent-swarm/config.json` acts as a "pointer" that stores where things are and references file paths (env files, compose location, etc.). Subsequent runs use this config to find the existing setup.
132
-
133
- **Insights:** This is a smart design:
134
- - **First run in a fresh dir**: generates `docker-compose.yml`, `.env`, and `.agent-swarm/config.json` in cwd
135
- - **Subsequent runs**: checks `.agent-swarm/config.json` first (in cwd, then `~/.agent-swarm/`) to find existing setup
136
- - **The config.json manifest** stores: compose file path, env file path, swarm URL, API key reference, agent topology, version info, deploy type (local/remote)
137
- - This enables the idempotent re-run behavior: config.json tells us what exists, we offer to modify it
138
- - For the remote variant later, config.json stores SSH host + paths on the remote server
139
-
140
- This is similar to how Terraform uses `.terraform/` or how Pulumi uses `Pulumi.yaml` — a state file that tracks what was deployed.
141
-
142
- ### Q: Is the proposed step flow right for v1?
143
- Approved with additions:
144
- 1. **DAG format** instead of linear steps (some steps can run in parallel or have branches)
145
- 2. **Harness selector**: Claude vs Pi, each with sub-paths:
146
- - Claude → OAuth (can run `claude setup-token` for the user) or API key
147
- - Pi → OpenRouter or other providers
148
- 3. **Integrations section**: Slack, GitHub, GitLab, Linear — each with provider-specific instructions (e.g. Slack: generate manifest, copy to clipboard, checkpoint to verify)
149
- 4. **"Create first task"** as a final step (skippable TUI prompt)
150
-
151
- **Insights:** The harness selector is crucial — it determines which credentials are needed downstream. The Claude OAuth flow can be automated via `claude setup-token`, which is a much better UX than "go to this URL, copy the token, paste it here". The integrations section with clipboard operations and checkpoints is a pattern borrowed from tools like Clerk's setup wizard — very effective for first-timers. The DAG structure means we can parallelize independent setup steps (e.g. Docker pull while waiting for user to set up Slack).
152
-
153
- ## Synthesis
154
-
155
- ### Setup Wizard DAG (v1 — Local Compose Generator)
156
-
157
- ```
158
- ┌─────────────────────┐
159
- │ 1. Welcome/Detect │
160
- │ ───────────────── │
161
- │ Check .agent-swarm/ │
162
- │ config.json exists? │
163
- └──────────┬──────────┘
164
-
165
- ┌──────────▼──────────┐
166
- │ 2. Deploy Type │
167
- │ ───────────────── │
168
- │ [Local] / [Remote] │
169
- │ (remote: "soon") │
170
- └──────────┬──────────┘
171
-
172
- ┌──────────▼──────────┐
173
- │ 3. Swarm Preset │
174
- │ ───────────────── │
175
- │ • Dev team │
176
- │ • Content team │
177
- │ • Research team │
178
- │ • Solo │
179
- │ • Custom │
180
- └──────────┬──────────┘
181
-
182
- ┌──────────▼──────────┐
183
- │ 4. Harness Select │
184
- │ ───────────────── │
185
- │ [Claude] or [Pi] │
186
- └────┬───────────┬────┘
187
- │ │
188
- ┌──────────▼──┐ ┌────▼───────────┐
189
- │ 4a. Claude │ │ 4b. Pi-mono │
190
- │ ────────── │ │ ─────────── │
191
- │ OAuth (run │ │ OpenRouter key │
192
- │ claude │ │ or Anthropic │
193
- │ setup-token)│ │ API key │
194
- │ OR API key │ │ │
195
- └──────┬──────┘ └───────┬────────┘
196
- │ │
197
- └────────┬────────┘
198
-
199
- ┌──────────▼──────────┐
200
- │ 5. Core Credentials │
201
- │ ─────────────────── │
202
- │ API_KEY (auto-gen) │
203
- │ Agent IDs (auto-gen)│
204
- └──────────┬──────────┘
205
-
206
- ┌───────────────────┼───────────────────┐
207
- │ │ │
208
- ┌─────────▼────────┐ ┌───────▼────────┐ ┌────────▼───────┐
209
- │ 6a. GitHub │ │ 6b. Slack │ │ 6c. GitLab/ │
210
- │ (optional) │ │ (optional) │ │ Linear (opt) │
211
- │ ────────── │ │ ────────── │ │ ──────────── │
212
- │ GITHUB_TOKEN │ │ Create app │ │ Provider- │
213
- │ GITHUB_EMAIL │ │ manifest → │ │ specific │
214
- │ GITHUB_NAME │ │ clipboard │ │ instructions │
215
- │ │ │ BOT_TOKEN │ │ │
216
- │ │ │ APP_TOKEN │ │ │
217
- └────────┬─────────┘ └───────┬────────┘ └────────┬───────┘
218
- │ │ │
219
- └───────────────────┼────────────────────┘
220
-
221
- ┌──────────▼──────────┐
222
- │ 7. Generate Files │
223
- │ ─────────────────── │
224
- │ • docker-compose.yml│
225
- │ • .env │
226
- │ • .agent-swarm/ │
227
- │ config.json │
228
- └──────────┬──────────┘
229
-
230
- ┌──────────▼──────────┐
231
- │ 8. Start Stack │
232
- │ ─────────────────── │
233
- │ docker compose up │
234
- │ Health check │
235
- │ Agent registration │
236
- └──────────┬──────────┘
237
-
238
- ┌──────────────────┼──────────────────┐
239
- │ │ │
240
- ┌─────────▼────────┐ ┌──────▼───────┐ ┌────────▼───────┐
241
- │ 9a. Connect │ │ 9b. Open │ │ 9c. First Task │
242
- │ Client (opt) │ │ Dashboard │ │ (optional) │
243
- │ ────────── │ │ (optional) │ │ ────────── │
244
- │ Configure local │ │ ────────── │ │ TUI prompt: │
245
- │ .mcp.json + │ │ Open browser │ │ "Send your │
246
- │ settings.local │ │ to app. │ │ first task" │
247
- │ │ │ agent-swarm │ │ (skippable) │
248
- │ │ │ .dev?params │ │ │
249
- └──────────────────┘ └──────────────┘ └────────────────┘
250
- ```
251
-
252
- ### Key Decisions
253
-
254
- - **Evolve `setup` command** — not a new command. The existing client-config flow becomes a sub-step.
255
- - **First-timer focused** — explain every credential, auto-generate what's possible.
256
- - **Presets over templates** — users pick a team composition, not individual templates.
257
- - **Harness selector** — Claude (OAuth via `claude setup-token` or API key) vs Pi (OpenRouter/Anthropic key). Determines which credentials flow activates.
258
- - **Integration checkpoints** — Slack/GitHub/GitLab/Linear each have provider-specific guided setup with clipboard operations.
259
- - **Hosted dashboard** — `app.agent-swarm.dev` with query params, not self-hosted new-ui.
260
- - **Idempotent re-runs** — `.agent-swarm/config.json` manifest tracks state for modifications.
261
- - **MVP = Local only** — remote (SSH) deploy is v2, shown but grayed out.
262
-
263
- ### Open Questions (Resolved)
264
-
265
- 1. **`claude setup-token`** → Run as a bash command (`claude setup-token`), skippable. Immediate fallback: paste the token directly.
266
- 2. **Presets source** → Fetch from the templates registry API (not hardcoded). Needs a new "compositions" or "presets" endpoint.
267
- 3. **Idempotent re-run safety** → Still open. Need to figure out which operations are safe (adding workers is easy, removing needs in-flight task handling).
268
- 4. **Slack manifest** → Already in repo at `slack-manifest.json`. Offer two options: copy manifest to clipboard, or open the raw GitHub URL from main branch.
269
- 5. **config.json secrets** → Just references, no secrets in config.json. The `.env` file lives in `.agent-swarm/` dir alongside config.json. (Mirrors the pattern from `.env.example` which has comments explaining each var.)
270
- 6. **Docker Compose version** → Docker Compose v2 (current: v2.40.3). Check with `docker compose version` during setup; guide installation if missing.
271
-
272
- ### Constraints Identified
273
-
274
- - **Docker required** — local variant needs Docker + Docker Compose v2 installed. Setup should check and guide installation if missing.
275
- - **OAuth token expiry** — Claude OAuth tokens have a TTL. The setup can't just store them forever. Need a refresh mechanism or warn the user.
276
- - **Platform images** — `linux/amd64` only currently. ARM users (Apple Silicon) will need Rosetta or we need multi-arch images.
277
- - **Port conflicts** — setup should check if ports 3013, 3020-3028 are available before starting.
278
- - **Ink TUI limitations** — complex multi-step wizards in Ink can get unwieldy. May need a state machine library or careful component composition.
279
-
280
- ### Core Requirements
281
-
282
- - **R1**: TUI wizard with DAG-structured steps (detect → type → preset → harness → credentials → integrations → generate → start → post-deploy)
283
- - **R2**: Compose file generator that produces `docker-compose.yml` from preset + credentials + integrations
284
- - **R3**: `.env` file generator with all collected values
285
- - **R4**: `.agent-swarm/config.json` manifest for idempotent re-runs and state tracking
286
- - **R5**: Harness selector (Claude vs Pi) with provider-specific credential flows
287
- - **R6**: Integration setup guides with clipboard operations and verification checkpoints
288
- - **R7**: Health check + agent registration verification after `docker compose up`
289
- - **R8**: Post-deploy options: connect client, open dashboard, send first task (all skippable)
290
- - **R9**: `--dry-run` support (show what would be generated without writing)
291
- - **R10**: `--yes` mode for CI/scripted usage (all values from env vars)
292
-
293
- ### External Research
294
-
295
- **OpenClaw `onboard` command** (150K+ stars):
296
- - Interactive wizard with QuickStart vs Advanced modes — validates wizard pattern at scale
297
- - Does NOT generate docker-compose (ships pre-built) — we're going further by generating compose dynamically
298
- - No SSH deploy — manual tunnel or Tailscale. Our remote variant would be differentiated.
299
- - Has `--non-interactive` mode for CI — we should match this (`--yes` flag)
300
-
301
- **agent-swarm-internal cloud onboarding** (4-step web wizard):
302
- - Step order maps 1:1: Harness → Integrations → Swarm Config → Deploy
303
- - Template picker with model selector and pricing estimates — port to TUI
304
- - OAuth + manual credential entry per integration — same pattern needed
305
- - Persistent progress tracking (Convex) — our `.agent-swarm/config.json` is the CLI equivalent
306
- - Provider-specific credential forms already designed — reuse the logic/validation
307
-
@@ -1,98 +0,0 @@
1
- # Agent Swarm Tool Output Schema Alignment Implementation Plan
2
-
3
- ## Overview
4
- Align the MCP tool `outputSchema` definitions with the actual `structuredContent` payloads so OpenCode no longer fails with "additional properties" errors when calling tools like `agent-swarm_get-swarm`.
5
-
6
- ## Current State Analysis
7
- Many tools return `structuredContent` that includes `yourAgentId`, but their `outputSchema` only lists other keys (e.g., `agents`, `success`, `message`). The validator rejects those responses, causing the `McpError -32602` observed when calling `agent-swarm_get-swarm`. `my-agent-info` additionally returns `yourAgentInfo` while its schema only defines `agentId`.
8
-
9
- ## Desired End State
10
- Every tool that embeds `yourAgentId` (and similar metadata) in `structuredContent` declares that key in its `outputSchema`, and `my-agent-info`’s schema matches the keys it actually returns. MCP requests succeed without schema validation issues.
11
-
12
- ### Key Discoveries:
13
- - `src/tools/get-swarm.ts:16` defines `outputSchema` as `{ agents }`, yet `structuredContent` includes `yourAgentId` (and that key is also present in many other tools).
14
- - `src/tools/my-agent-info.ts:13` expects `agentId`, but returns `yourAgentId` and `yourAgentInfo`, so both the schema and the response need to align.
15
-
16
- ## Quick Verification Reference
17
-
18
- Common commands to verify the implementation:
19
- - Type check: `bun run tsc:check`
20
- - Lint and formatting: `bun run lint:fix`
21
-
22
- Key files to review:
23
- - `src/tools/get-swarm.ts` and other swarm/task tools
24
- - `src/tools/my-agent-info.ts` and agent/profile utilities
25
- - `src/tools/schedules/**/*.ts`
26
-
27
- ## What We're NOT Doing
28
- - Changing the actual `structuredContent` values beyond schema alignment.
29
- - Refactoring tool registration utilities or response helpers.
30
- - Adding new functionality beyond schema alignment.
31
-
32
- ## Implementation Approach
33
- For each tool that currently returns `yourAgentId` (and `yourAgentInfo` in `my-agent-info`), update `outputSchema` to include those keys with the appropriate types. Keep existing fields (e.g., `agents`, `success`, `message`) untouched to avoid breaking clients.
34
-
35
- ---
36
-
37
- ## Phase 1: Align Tool Schemas with Structured Responses
38
-
39
- ### Overview
40
- Add `yourAgentId` (and `yourAgentInfo` where applicable) to the output schemas of swarm, task, messaging, channel, service, and schedule tools so their structured responses validate cleanly.
41
-
42
- ### Changes Required:
43
-
44
- #### 1. Swarm/task/messaging tools
45
- Update `outputSchema` in each of these files to include `yourAgentId`:
46
- - `src/tools/get-swarm.ts`
47
- - `src/tools/get-tasks.ts`
48
- - `src/tools/get-task-details.ts`
49
- - `src/tools/poll-task.ts`
50
- - `src/tools/store-progress.ts`
51
- - `src/tools/send-task.ts`
52
- - `src/tools/task-action.ts`
53
- - `src/tools/cancel-task.ts`
54
- - `src/tools/read-messages.ts`
55
- - `src/tools/get-inbox-message.ts`
56
-
57
- #### 2. Agent registration/profile tools
58
- - `src/tools/my-agent-info.ts`: extend the schema with `yourAgentId` and `yourAgentInfo` while keeping the existing `success`/`message` fields.
59
- - `src/tools/join-swarm.ts`
60
- - `src/tools/update-profile.ts`
61
-
62
- #### 3. Channel and messaging utilities
63
- - `src/tools/list-channels.ts`
64
- - `src/tools/create-channel.ts`
65
- - `src/tools/post-message.ts`
66
-
67
- #### 4. Service registry tools
68
- - `src/tools/register-service.ts`
69
- - `src/tools/unregister-service.ts`
70
- - `src/tools/list-services.ts`
71
- - `src/tools/update-service-status.ts`
72
-
73
- #### 5. Scheduler tools
74
- - `src/tools/schedules/create-schedule.ts`
75
- - `src/tools/schedules/update-schedule.ts`
76
- - `src/tools/schedules/delete-schedule.ts`
77
- - `src/tools/schedules/run-schedule-now.ts`
78
- - `src/tools/schedules/list-schedules.ts`
79
-
80
- ### Success Criteria:
81
-
82
- #### Automated Verification:
83
- - [ ] Type check: `bun run tsc:check`
84
- - [ ] Lint & format: `bun run lint:fix`
85
-
86
- #### Manual Verification:
87
- - [ ] Run `agent-swarm_get-swarm` via OpenCode and confirm there is no schema error.
88
- - [ ] Run `agent-swarm_my-agent-info` via OpenCode and confirm the response validates.
89
-
90
- **Implementation Note**: After these schema adjustments, pause for manual confirmation. No commits requested per your preference.
91
-
92
- ---
93
-
94
- ## Testing Strategy
95
- Leverage `bun run tsc:check` and `bun run lint:fix` for automated coverage, and manually invoke the impacted tools through OpenCode to confirm the structured responses pass validation.
96
-
97
- ## References
98
- - Planning template: `~/.claude/plugins/cache/desplega-ai-toolbox/desplega/1.4.0/skills/planning/template.md`