@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.
- package/README.md +1 -1
- package/openapi.json +2070 -728
- package/package.json +10 -1
- package/src/agentmail/handlers.ts +65 -10
- package/src/agentmail/templates.ts +111 -0
- package/src/be/db.ts +1233 -7
- package/src/be/migrations/014_prompt_templates.sql +33 -0
- package/src/be/migrations/015_workflow_workspace.sql +3 -0
- package/src/be/migrations/016_active_session_runner_session.sql +4 -0
- package/src/be/migrations/017_channel_activity_cursors.sql +6 -0
- package/src/be/migrations/018_fix_seed_double_version.sql +30 -0
- package/src/be/migrations/019_skills.sql +65 -0
- package/src/be/migrations/020_approval_requests.sql +41 -0
- package/src/be/seed.ts +62 -0
- package/src/be/skill-parser.ts +70 -0
- package/src/be/skill-sync.ts +106 -0
- package/src/commands/runner.ts +320 -132
- package/src/commands/templates.ts +172 -0
- package/src/github/handlers.ts +292 -77
- package/src/github/mentions-aliases.test.ts +73 -0
- package/src/github/mentions.test.ts +3 -3
- package/src/github/mentions.ts +32 -6
- package/src/github/templates.ts +398 -0
- package/src/gitlab/handlers.ts +63 -22
- package/src/gitlab/templates.ts +140 -0
- package/src/heartbeat/heartbeat.ts +19 -10
- package/src/heartbeat/templates.ts +30 -0
- package/src/http/active-sessions.ts +27 -0
- package/src/http/approval-requests.ts +247 -0
- package/src/http/config.ts +3 -3
- package/src/http/index.ts +9 -2
- package/src/http/poll.ts +135 -14
- package/src/http/prompt-templates.ts +412 -0
- package/src/http/schedules.ts +35 -0
- package/src/http/skills.ts +479 -0
- package/src/http/workflows.ts +8 -0
- package/src/linear/sync.ts +28 -4
- package/src/linear/templates.ts +47 -0
- package/src/prompts/base-prompt.ts +41 -490
- package/src/prompts/registry.ts +57 -0
- package/src/prompts/resolver.ts +296 -0
- package/src/prompts/session-templates.ts +604 -0
- package/src/providers/claude-adapter.ts +15 -2
- package/src/providers/pi-mono-extension.ts +5 -1
- package/src/scheduler/scheduler.ts +125 -91
- package/src/server.ts +44 -0
- package/src/slack/assistant.ts +7 -4
- package/src/slack/channel-activity.ts +177 -0
- package/src/slack/handlers.ts +21 -6
- package/src/slack/templates.ts +55 -0
- package/src/tests/approval-requests.test.ts +735 -0
- package/src/tests/artifact-sdk.test.ts +12 -12
- package/src/tests/base-prompt.test.ts +49 -49
- package/src/tests/channel-activity.test.ts +363 -0
- package/src/tests/heartbeat.test.ts +1 -0
- package/src/tests/linear-webhook.test.ts +7 -3
- package/src/tests/pool-session-logs.test.ts +199 -0
- package/src/tests/prompt-template-github.test.ts +682 -0
- package/src/tests/prompt-template-remaining.test.ts +504 -0
- package/src/tests/prompt-template-resolver.test.ts +621 -0
- package/src/tests/prompt-template-session.test.ts +363 -0
- package/src/tests/prompt-templates-db.test.ts +616 -0
- package/src/tests/self-improvement.test.ts +8 -7
- package/src/tests/skill-parser.test.ts +178 -0
- package/src/tests/skill-sync.test.ts +171 -0
- package/src/tests/slack-metadata-inheritance.test.ts +1 -1
- package/src/tests/slack-thread-followups.test.ts +1 -1
- package/src/tests/structured-output.test.ts +0 -4
- package/src/tests/tool-annotations.test.ts +2 -1
- package/src/tests/update-profile-agentid.test.ts +248 -0
- package/src/tests/update-profile-auth.test.ts +195 -0
- package/src/tests/workflow-async-v2.test.ts +126 -4
- package/src/tests/workflow-definition-validation.test.ts +76 -0
- package/src/tests/workflow-executors.test.ts +4 -2
- package/src/tests/workflow-retry-v2.test.ts +1 -1
- package/src/tests/workflow-schedule-trigger.test.ts +104 -0
- package/src/tests/workflow-workspace.test.ts +272 -0
- package/src/tools/prompt-templates/delete.ts +86 -0
- package/src/tools/prompt-templates/get.ts +89 -0
- package/src/tools/prompt-templates/index.ts +5 -0
- package/src/tools/prompt-templates/list.ts +95 -0
- package/src/tools/prompt-templates/preview.ts +84 -0
- package/src/tools/prompt-templates/set.ts +117 -0
- package/src/tools/request-human-input.ts +106 -0
- package/src/tools/skills/index.ts +11 -0
- package/src/tools/skills/skill-create.ts +105 -0
- package/src/tools/skills/skill-delete.ts +67 -0
- package/src/tools/skills/skill-get.ts +75 -0
- package/src/tools/skills/skill-install-remote.ts +152 -0
- package/src/tools/skills/skill-install.ts +101 -0
- package/src/tools/skills/skill-list.ts +77 -0
- package/src/tools/skills/skill-publish.ts +123 -0
- package/src/tools/skills/skill-search.ts +43 -0
- package/src/tools/skills/skill-sync-remote.ts +128 -0
- package/src/tools/skills/skill-uninstall.ts +60 -0
- package/src/tools/skills/skill-update.ts +128 -0
- package/src/tools/store-progress.ts +22 -4
- package/src/tools/task-action.ts +20 -0
- package/src/tools/templates.ts +53 -0
- package/src/tools/tool-config.ts +23 -0
- package/src/tools/update-profile.ts +106 -34
- package/src/tools/workflows/create-workflow.ts +19 -1
- package/src/tools/workflows/update-workflow.ts +16 -1
- package/src/types.ts +109 -2
- package/src/workflows/definition.ts +30 -12
- package/src/workflows/engine.ts +40 -14
- package/src/workflows/executors/agent-task.ts +14 -3
- package/src/workflows/executors/human-in-the-loop.ts +160 -0
- package/src/workflows/executors/registry.ts +2 -0
- package/src/workflows/index.ts +1 -1
- package/src/workflows/recovery.ts +72 -0
- package/src/workflows/resume.ts +162 -12
- package/src/workflows/triggers.ts +31 -2
- package/src/workflows/version.ts +2 -0
- package/.claude/settings.json +0 -84
- package/.claude/settings.local.json +0 -117
- package/.dockerignore +0 -61
- package/.editorconfig +0 -15
- package/.entire/settings.json +0 -4
- package/.env.docker.example +0 -56
- package/.env.example +0 -78
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -78
- package/.github/ISSUE_TEMPLATE/community-template.yml +0 -77
- package/.github/ISSUE_TEMPLATE/config.yml +0 -8
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -60
- package/.github/PULL_REQUEST_TEMPLATE/community-template.md +0 -29
- package/.github/workflows/ci.yml +0 -52
- package/.github/workflows/docker-and-deploy.yml +0 -132
- package/.github/workflows/merge-gate.yml +0 -233
- package/.opencode/plugins/entire.ts +0 -133
- package/.superset/config.json +0 -6
- package/.wts-config.json +0 -4
- package/.wts-setup.ts +0 -171
- package/CHANGELOG.md +0 -447
- package/CLAUDE.md +0 -521
- package/CONTRIBUTING.md +0 -315
- package/DEPLOYMENT.md +0 -622
- package/Dockerfile +0 -65
- package/Dockerfile.worker +0 -189
- package/MCP.md +0 -841
- package/UI.md +0 -40
- package/api-entrypoint.sh +0 -56
- package/assets/agent-swarm-logo-orange.png +0 -0
- package/assets/agent-swarm-logo.png +0 -0
- package/assets/agent-swarm.mp4 +0 -0
- package/assets/agent-swarm.png +0 -0
- package/biome.json +0 -39
- package/deploy/DEPLOY.md +0 -60
- package/deploy/agent-swarm.service +0 -17
- package/deploy/docker-push.ts +0 -30
- package/deploy/install.ts +0 -85
- package/deploy/prod-db.ts +0 -42
- package/deploy/uninstall.ts +0 -12
- package/deploy/update.ts +0 -21
- package/depot.json +0 -1
- package/docker-compose.example.yml +0 -350
- package/docker-compose.local.yml +0 -119
- package/docker-entrypoint.sh +0 -632
- package/docs-site/app/api/search/route.ts +0 -4
- package/docs-site/app/docs/[[...slug]]/page.tsx +0 -87
- package/docs-site/app/docs/layout.tsx +0 -12
- package/docs-site/app/globals.css +0 -24
- package/docs-site/app/layout.config.tsx +0 -34
- package/docs-site/app/layout.tsx +0 -119
- package/docs-site/app/llms-full.txt/route.ts +0 -11
- package/docs-site/app/llms.mdx/docs/[[...slug]]/route.ts +0 -24
- package/docs-site/app/llms.txt/route.ts +0 -8
- package/docs-site/app/page.tsx +0 -5
- package/docs-site/app/robots.ts +0 -13
- package/docs-site/app/sitemap.ts +0 -37
- package/docs-site/components/api-page.client.tsx +0 -4
- package/docs-site/components/api-page.tsx +0 -7
- package/docs-site/components/mdx/mermaid.tsx +0 -55
- package/docs-site/content/docs/(documentation)/architecture/agents.mdx +0 -117
- package/docs-site/content/docs/(documentation)/architecture/hooks.mdx +0 -77
- package/docs-site/content/docs/(documentation)/architecture/memory.mdx +0 -96
- package/docs-site/content/docs/(documentation)/architecture/meta.json +0 -4
- package/docs-site/content/docs/(documentation)/architecture/overview.mdx +0 -172
- package/docs-site/content/docs/(documentation)/concepts/epics.mdx +0 -98
- package/docs-site/content/docs/(documentation)/concepts/meta.json +0 -4
- package/docs-site/content/docs/(documentation)/concepts/scheduling.mdx +0 -136
- package/docs-site/content/docs/(documentation)/concepts/services.mdx +0 -104
- package/docs-site/content/docs/(documentation)/concepts/task-lifecycle.mdx +0 -148
- package/docs-site/content/docs/(documentation)/concepts/workflows.mdx +0 -209
- package/docs-site/content/docs/(documentation)/contributing.mdx +0 -158
- package/docs-site/content/docs/(documentation)/getting-started.mdx +0 -157
- package/docs-site/content/docs/(documentation)/guides/agentmail-integration.mdx +0 -79
- package/docs-site/content/docs/(documentation)/guides/deployment.mdx +0 -171
- package/docs-site/content/docs/(documentation)/guides/github-integration.mdx +0 -81
- package/docs-site/content/docs/(documentation)/guides/gitlab-integration.mdx +0 -93
- package/docs-site/content/docs/(documentation)/guides/linear-integration.mdx +0 -98
- package/docs-site/content/docs/(documentation)/guides/meta.json +0 -13
- package/docs-site/content/docs/(documentation)/guides/sentry-integration.mdx +0 -52
- package/docs-site/content/docs/(documentation)/guides/slack-integration.mdx +0 -179
- package/docs-site/content/docs/(documentation)/guides/x402-payments.mdx +0 -154
- package/docs-site/content/docs/(documentation)/index.mdx +0 -65
- package/docs-site/content/docs/(documentation)/meta.json +0 -19
- package/docs-site/content/docs/(documentation)/reference/cli.mdx +0 -241
- package/docs-site/content/docs/(documentation)/reference/environment-variables.mdx +0 -205
- package/docs-site/content/docs/(documentation)/reference/mcp-tools.mdx +0 -449
- package/docs-site/content/docs/(documentation)/reference/meta.json +0 -4
- package/docs-site/content/docs/api-reference/active-sessions.mdx +0 -9
- package/docs-site/content/docs/api-reference/agents.mdx +0 -9
- package/docs-site/content/docs/api-reference/channels.mdx +0 -9
- package/docs-site/content/docs/api-reference/config.mdx +0 -9
- package/docs-site/content/docs/api-reference/debug.mdx +0 -9
- package/docs-site/content/docs/api-reference/ecosystem.mdx +0 -9
- package/docs-site/content/docs/api-reference/epics.mdx +0 -9
- package/docs-site/content/docs/api-reference/index.mdx +0 -32
- package/docs-site/content/docs/api-reference/memory.mdx +0 -9
- package/docs-site/content/docs/api-reference/meta.json +0 -25
- package/docs-site/content/docs/api-reference/poll.mdx +0 -9
- package/docs-site/content/docs/api-reference/repos.mdx +0 -9
- package/docs-site/content/docs/api-reference/schedules.mdx +0 -9
- package/docs-site/content/docs/api-reference/session-data.mdx +0 -9
- package/docs-site/content/docs/api-reference/stats.mdx +0 -9
- package/docs-site/content/docs/api-reference/tasks.mdx +0 -9
- package/docs-site/content/docs/api-reference/trackers.mdx +0 -9
- package/docs-site/content/docs/api-reference/webhooks.mdx +0 -9
- package/docs-site/content/docs/api-reference/workflows.mdx +0 -9
- package/docs-site/content/docs/meta.json +0 -3
- package/docs-site/lib/get-llm-text.ts +0 -10
- package/docs-site/lib/openapi.ts +0 -23
- package/docs-site/lib/source.ts +0 -8
- package/docs-site/mdx-components.tsx +0 -13
- package/docs-site/next.config.mjs +0 -29
- package/docs-site/package.json +0 -35
- package/docs-site/pnpm-lock.yaml +0 -5407
- package/docs-site/postcss.config.mjs +0 -8
- package/docs-site/public/logo.png +0 -0
- package/docs-site/scripts/generate-docs.ts +0 -171
- package/docs-site/source.config.ts +0 -17
- package/docs-site/tsconfig.json +0 -46
- package/ecosystem.config.cjs +0 -66
- package/landing/next.config.ts +0 -14
- package/landing/package.json +0 -31
- package/landing/pnpm-lock.yaml +0 -1091
- package/landing/postcss.config.mjs +0 -8
- package/landing/public/apple-touch-icon.png +0 -0
- package/landing/public/favicon.ico +0 -0
- package/landing/public/logo.png +0 -0
- package/landing/public/og-image.png +0 -0
- package/landing/public/omghost-desplega.svg +0 -30
- package/landing/public/omghost-openfort.svg +0 -9
- package/landing/src/app/actions/waitlist.ts +0 -25
- package/landing/src/app/blog/openfort-hackathon/page.tsx +0 -863
- package/landing/src/app/blog/page.tsx +0 -162
- package/landing/src/app/blog/swarm-metrics/page.tsx +0 -685
- package/landing/src/app/examples/page.tsx +0 -174
- package/landing/src/app/examples/x402/page.tsx +0 -456
- package/landing/src/app/globals.css +0 -122
- package/landing/src/app/layout.tsx +0 -134
- package/landing/src/app/page.tsx +0 -27
- package/landing/src/app/robots.ts +0 -13
- package/landing/src/app/sitemap.ts +0 -44
- package/landing/src/components/architecture.tsx +0 -163
- package/landing/src/components/cta.tsx +0 -52
- package/landing/src/components/features.tsx +0 -160
- package/landing/src/components/footer.tsx +0 -100
- package/landing/src/components/hero.tsx +0 -217
- package/landing/src/components/how-it-works.tsx +0 -165
- package/landing/src/components/navbar.tsx +0 -147
- package/landing/src/components/waitlist.tsx +0 -110
- package/landing/src/components/why-choose.tsx +0 -149
- package/landing/src/components/workshops.tsx +0 -328
- package/landing/src/lib/utils.ts +0 -6
- package/landing/tsconfig.json +0 -41
- package/misc/transcripts/2026-03-09-pi-mono-e2e-verification.md +0 -154
- package/new-ui/CLAUDE.md +0 -92
- package/new-ui/README.md +0 -73
- package/new-ui/biome.json +0 -42
- package/new-ui/components.json +0 -21
- package/new-ui/index.html +0 -25
- package/new-ui/package.json +0 -49
- package/new-ui/pnpm-lock.yaml +0 -4845
- package/new-ui/public/logo.png +0 -0
- package/new-ui/src/api/client.ts +0 -814
- package/new-ui/src/api/hooks/index.ts +0 -64
- package/new-ui/src/api/hooks/use-agents.ts +0 -58
- package/new-ui/src/api/hooks/use-channels.ts +0 -115
- package/new-ui/src/api/hooks/use-config-api.ts +0 -46
- package/new-ui/src/api/hooks/use-costs.ts +0 -122
- package/new-ui/src/api/hooks/use-db-query.ts +0 -29
- package/new-ui/src/api/hooks/use-epics.ts +0 -75
- package/new-ui/src/api/hooks/use-repos.ts +0 -61
- package/new-ui/src/api/hooks/use-schedules.ts +0 -81
- package/new-ui/src/api/hooks/use-services.ts +0 -16
- package/new-ui/src/api/hooks/use-stats.ts +0 -27
- package/new-ui/src/api/hooks/use-tasks.ts +0 -89
- package/new-ui/src/api/hooks/use-workflows.ts +0 -109
- package/new-ui/src/api/types.ts +0 -549
- package/new-ui/src/app/App.tsx +0 -13
- package/new-ui/src/app/providers.tsx +0 -32
- package/new-ui/src/app/router.tsx +0 -52
- package/new-ui/src/components/layout/app-header.tsx +0 -47
- package/new-ui/src/components/layout/app-sidebar.tsx +0 -128
- package/new-ui/src/components/layout/breadcrumbs.tsx +0 -57
- package/new-ui/src/components/layout/config-guard.tsx +0 -22
- package/new-ui/src/components/layout/root-layout.tsx +0 -40
- package/new-ui/src/components/layout/swarm-switcher.tsx +0 -85
- package/new-ui/src/components/shared/command-menu.tsx +0 -131
- package/new-ui/src/components/shared/data-grid.tsx +0 -141
- package/new-ui/src/components/shared/empty-state.tsx +0 -24
- package/new-ui/src/components/shared/error-boundary.tsx +0 -72
- package/new-ui/src/components/shared/json-viewer.tsx +0 -47
- package/new-ui/src/components/shared/name-connection-modal.tsx +0 -99
- package/new-ui/src/components/shared/page-skeleton.tsx +0 -16
- package/new-ui/src/components/shared/session-log-viewer.tsx +0 -364
- package/new-ui/src/components/shared/stats-bar.tsx +0 -132
- package/new-ui/src/components/shared/status-badge.tsx +0 -131
- package/new-ui/src/components/shared/usage-summary.tsx +0 -179
- package/new-ui/src/components/ui/alert-dialog.tsx +0 -176
- package/new-ui/src/components/ui/alert.tsx +0 -60
- package/new-ui/src/components/ui/avatar.tsx +0 -96
- package/new-ui/src/components/ui/badge.tsx +0 -46
- package/new-ui/src/components/ui/button.tsx +0 -62
- package/new-ui/src/components/ui/card.tsx +0 -75
- package/new-ui/src/components/ui/command.tsx +0 -160
- package/new-ui/src/components/ui/dialog.tsx +0 -143
- package/new-ui/src/components/ui/dropdown-menu.tsx +0 -226
- package/new-ui/src/components/ui/input.tsx +0 -21
- package/new-ui/src/components/ui/label.tsx +0 -19
- package/new-ui/src/components/ui/progress.tsx +0 -26
- package/new-ui/src/components/ui/scroll-area.tsx +0 -54
- package/new-ui/src/components/ui/select.tsx +0 -175
- package/new-ui/src/components/ui/separator.tsx +0 -28
- package/new-ui/src/components/ui/sheet.tsx +0 -132
- package/new-ui/src/components/ui/sidebar.tsx +0 -691
- package/new-ui/src/components/ui/skeleton.tsx +0 -13
- package/new-ui/src/components/ui/sonner.tsx +0 -35
- package/new-ui/src/components/ui/switch.tsx +0 -33
- package/new-ui/src/components/ui/table.tsx +0 -92
- package/new-ui/src/components/ui/tabs.tsx +0 -79
- package/new-ui/src/components/ui/textarea.tsx +0 -18
- package/new-ui/src/components/ui/tooltip.tsx +0 -51
- package/new-ui/src/components/workflows/action-node.tsx +0 -53
- package/new-ui/src/components/workflows/condition-node.tsx +0 -50
- package/new-ui/src/components/workflows/graph-utils.ts +0 -124
- package/new-ui/src/components/workflows/json-tree.tsx +0 -189
- package/new-ui/src/components/workflows/node-styles.ts +0 -10
- package/new-ui/src/components/workflows/step-detail-sheet.tsx +0 -87
- package/new-ui/src/components/workflows/trigger-node.tsx +0 -41
- package/new-ui/src/components/workflows/workflow-graph.tsx +0 -65
- package/new-ui/src/hooks/use-auto-scroll.ts +0 -82
- package/new-ui/src/hooks/use-config.ts +0 -203
- package/new-ui/src/hooks/use-keyboard-shortcuts.ts +0 -41
- package/new-ui/src/hooks/use-mobile.ts +0 -19
- package/new-ui/src/hooks/use-theme.ts +0 -60
- package/new-ui/src/lib/config.ts +0 -188
- package/new-ui/src/lib/slugs.ts +0 -71
- package/new-ui/src/lib/utils.ts +0 -120
- package/new-ui/src/main.tsx +0 -11
- package/new-ui/src/pages/agents/[id]/page.tsx +0 -492
- package/new-ui/src/pages/agents/page.tsx +0 -134
- package/new-ui/src/pages/chat/page.tsx +0 -674
- package/new-ui/src/pages/config/page.tsx +0 -1109
- package/new-ui/src/pages/dashboard/page.tsx +0 -454
- package/new-ui/src/pages/debug/page.tsx +0 -275
- package/new-ui/src/pages/epics/[id]/page.tsx +0 -809
- package/new-ui/src/pages/epics/page.tsx +0 -321
- package/new-ui/src/pages/not-found/page.tsx +0 -18
- package/new-ui/src/pages/repos/page.tsx +0 -369
- package/new-ui/src/pages/schedules/[id]/page.tsx +0 -664
- package/new-ui/src/pages/schedules/page.tsx +0 -477
- package/new-ui/src/pages/services/page.tsx +0 -128
- package/new-ui/src/pages/tasks/[id]/page.tsx +0 -670
- package/new-ui/src/pages/tasks/page.tsx +0 -592
- package/new-ui/src/pages/usage/page.tsx +0 -195
- package/new-ui/src/pages/workflow-runs/[id]/page.tsx +0 -363
- package/new-ui/src/pages/workflows/[id]/page.tsx +0 -417
- package/new-ui/src/pages/workflows/page.tsx +0 -266
- package/new-ui/src/styles/ag-grid.css +0 -36
- package/new-ui/src/styles/globals.css +0 -213
- package/new-ui/test-results/.last-run.json +0 -4
- package/new-ui/tsconfig.app.json +0 -34
- package/new-ui/tsconfig.json +0 -4
- package/new-ui/tsconfig.node.json +0 -26
- package/new-ui/vercel.json +0 -4
- package/new-ui/vite.config.ts +0 -28
- package/plugin/README.md +0 -1
- package/plugin/build-pi-skills.ts +0 -233
- package/plugin/hooks/hooks.json +0 -71
- package/prek.toml +0 -75
- package/pyproject.toml +0 -9
- package/scripts/check-db-boundary.sh +0 -60
- package/scripts/e2e-docker-provider.ts +0 -820
- package/scripts/e2e-io-schemas-test.ts +0 -807
- package/scripts/e2e-provider-test.ts +0 -220
- package/scripts/e2e-workflow-redesign.sh +0 -229
- package/scripts/e2e-workflow-test.sh +0 -285
- package/scripts/e2e-workflow-test.ts +0 -857
- package/scripts/generate-mcp-docs.ts +0 -415
- package/scripts/generate-openapi.ts +0 -26
- package/scripts/measure-tool-tokens.ts +0 -118
- package/scripts/x402-e2e-test.ts +0 -195
- package/scripts/x402-test-server.ts +0 -236
- package/scripts/x402-testnet-e2e.ts +0 -668
- package/slack-manifest.json +0 -88
- package/templates-ui/README.md +0 -46
- package/templates-ui/components.json +0 -17
- package/templates-ui/eslint.config.mjs +0 -18
- package/templates-ui/next.config.ts +0 -7
- package/templates-ui/package.json +0 -35
- package/templates-ui/pnpm-lock.yaml +0 -4571
- package/templates-ui/postcss.config.mjs +0 -7
- package/templates-ui/public/file.svg +0 -1
- package/templates-ui/public/globe.svg +0 -1
- package/templates-ui/public/logo.png +0 -0
- package/templates-ui/public/next.svg +0 -1
- package/templates-ui/public/vercel.svg +0 -1
- package/templates-ui/public/window.svg +0 -1
- package/templates-ui/src/app/[category]/[name]/page.tsx +0 -89
- package/templates-ui/src/app/api/templates/[...slug]/route.ts +0 -52
- package/templates-ui/src/app/api/templates/route.ts +0 -18
- package/templates-ui/src/app/builder/page.tsx +0 -37
- package/templates-ui/src/app/globals.css +0 -94
- package/templates-ui/src/app/layout.tsx +0 -79
- package/templates-ui/src/app/page.tsx +0 -38
- package/templates-ui/src/app/robots.ts +0 -11
- package/templates-ui/src/app/sitemap.ts +0 -31
- package/templates-ui/src/components/compose-builder.tsx +0 -442
- package/templates-ui/src/components/compose-preview.tsx +0 -117
- package/templates-ui/src/components/file-preview.tsx +0 -77
- package/templates-ui/src/components/footer.tsx +0 -40
- package/templates-ui/src/components/header.tsx +0 -41
- package/templates-ui/src/components/template-card.tsx +0 -87
- package/templates-ui/src/components/template-detail.tsx +0 -125
- package/templates-ui/src/components/template-gallery.tsx +0 -263
- package/templates-ui/src/components/ui/badge.tsx +0 -36
- package/templates-ui/src/components/ui/button.tsx +0 -57
- package/templates-ui/src/components/ui/card.tsx +0 -76
- package/templates-ui/src/components/ui/separator.tsx +0 -31
- package/templates-ui/src/components/ui/tooltip.tsx +0 -32
- package/templates-ui/src/lib/compose-generator.ts +0 -241
- package/templates-ui/src/lib/templates.ts +0 -137
- package/templates-ui/src/lib/utils.ts +0 -6
- package/templates-ui/tsconfig.json +0 -34
- package/thoughts/research/2026-02-28-openfort-viem-x402-research.md +0 -679
- package/thoughts/research/2026-02-28-x402-payments-research.md +0 -686
- package/thoughts/researcher/plans/2026-02-20-agent-self-improvement-plan.md +0 -282
- package/thoughts/researcher/research/2026-02-20-agent-self-improvement.md +0 -492
- package/thoughts/shared/plans/.gitkeep +0 -0
- package/thoughts/shared/plans/2025-12-18-slack-integration.md +0 -1195
- package/thoughts/shared/plans/2025-12-19-agent-log-streaming.md +0 -732
- package/thoughts/shared/plans/2025-12-19-role-based-swarm-plugin.md +0 -361
- package/thoughts/shared/plans/2025-12-20-mobile-responsive-ui.md +0 -501
- package/thoughts/shared/plans/2025-12-20-startup-team-swarm.md +0 -560
- package/thoughts/shared/plans/2025-12-23-runner-level-polling.md +0 -934
- package/thoughts/shared/plans/2025-12-23-runner-session-logs.md +0 -1000
- package/thoughts/shared/plans/2025-12-23-worker-lead-spawn-triggers.md +0 -568
- package/thoughts/shared/plans/2026-01-09-inverse-teleport.md +0 -1516
- package/thoughts/shared/plans/2026-01-12-agent-rename-pm2-control.md +0 -1133
- package/thoughts/shared/plans/2026-01-12-github-app-integration.md +0 -380
- package/thoughts/shared/plans/2026-01-12-lead-inbox-model.md +0 -876
- package/thoughts/shared/plans/2026-01-12-ralph-wiggum-integration.md +0 -463
- package/thoughts/shared/plans/2026-01-13-agent-concurrency.md +0 -691
- package/thoughts/shared/plans/2026-01-13-github-assignment-handling.md +0 -690
- package/thoughts/shared/plans/2026-01-13-prevent-duplicate-trigger-processing.md +0 -1071
- package/thoughts/shared/plans/2026-01-14-fix-slack-thread-context.md +0 -507
- package/thoughts/shared/plans/2026-01-15-scheduled-tasks-implementation.md +0 -565
- package/thoughts/shared/plans/2026-01-15-usage-cost-tracking-ui.md +0 -1479
- package/thoughts/shared/plans/2026-01-16-epics-feature-implementation.md +0 -1230
- package/thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md +0 -282
- package/thoughts/shared/plans/2026-03-02-claude-context-mode-integration.md +0 -328
- package/thoughts/shared/plans/2026-03-02-code-level-heartbeat.md +0 -224
- package/thoughts/shared/research/.gitkeep +0 -0
- package/thoughts/shared/research/2025-01-09-inverse-teleport-plan-review.md +0 -420
- package/thoughts/shared/research/2025-12-18-slack-integration.md +0 -442
- package/thoughts/shared/research/2025-12-19-agent-log-streaming.md +0 -339
- package/thoughts/shared/research/2025-12-19-agent-secrets-cli-research.md +0 -390
- package/thoughts/shared/research/2025-12-21-gemini-cli-integration.md +0 -376
- package/thoughts/shared/research/2025-12-22-runner-loop-architecture.md +0 -582
- package/thoughts/shared/research/2025-12-22-setup-experience-improvements.md +0 -264
- package/thoughts/shared/research/2026-01-13-lead-duplicate-trigger-processing.md +0 -223
- package/thoughts/shared/research/2026-01-14-lead-slack-thread-context.md +0 -277
- package/thoughts/shared/research/2026-01-15-ai-tracker-agent-swarm-integration.md +0 -376
- package/thoughts/shared/research/2026-01-15-auto-starting-processes-in-worker-containers.md +0 -787
- package/thoughts/shared/research/2026-01-15-scheduled-tasks.md +0 -390
- package/thoughts/shared/research/2026-01-16-epics-feature-research.md +0 -437
- package/thoughts/shared/research/2026-02-26-cliffy-mcp-tools.md +0 -159
- package/thoughts/shared/research/2026-03-03-database-migration-system-refactor.md +0 -337
- package/thoughts/swarm-researcher/plans/2026-02-23-openclaw-improvements-plan.md +0 -778
- package/thoughts/swarm-researcher/plans/2026-02-26-artifacts-localtunnel-plan.md +0 -1269
- package/thoughts/swarm-researcher/research/2026-02-23-openclaw-vs-agent-swarm-comparison.md +0 -411
- package/thoughts/swarm-researcher/research/2026-02-26-artifacts-localtunnel.md +0 -724
- package/thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md +0 -443
- package/thoughts/taras/brainstorms/2026-03-20-setup-cli-onboarding.md +0 -307
- package/thoughts/taras/plans/2026-01-22-agent-swarm-schemas.md +0 -98
- package/thoughts/taras/plans/2026-01-28-per-worker-claude-md.md +0 -617
- package/thoughts/taras/plans/2026-01-28-sentry-cli-integration.md +0 -214
- package/thoughts/taras/plans/2026-02-20-auto-improvement.md +0 -803
- package/thoughts/taras/plans/2026-02-20-env-management.md +0 -538
- package/thoughts/taras/plans/2026-02-20-memory-system.md +0 -882
- package/thoughts/taras/plans/2026-02-20-repos-knowledge.md +0 -806
- package/thoughts/taras/plans/2026-02-20-session-attach.md +0 -647
- package/thoughts/taras/plans/2026-02-20-worker-identity.md +0 -820
- package/thoughts/taras/plans/2026-02-25-feat-new-ui-visual-redesign-plan.md +0 -768
- package/thoughts/taras/plans/2026-03-04-fix-buildSystemPrompt-missing-fields.md +0 -77
- package/thoughts/taras/plans/2026-03-04-new-ui-missing-actions.md +0 -543
- package/thoughts/taras/plans/2026-03-06-one-time-scheduled-tasks.md +0 -373
- package/thoughts/taras/plans/2026-03-08-memory-self-improvement-enhancements.md +0 -512
- package/thoughts/taras/plans/2026-03-08-pi-mono-provider-implementation.md +0 -919
- package/thoughts/taras/plans/2026-03-09-templates-registry.md +0 -723
- package/thoughts/taras/plans/2026-03-10-task-working-directory.md +0 -371
- package/thoughts/taras/plans/2026-03-11-archil-per-agent-write-strategy.md +0 -621
- package/thoughts/taras/plans/2026-03-12-eliminate-inbox-route-to-tasks.md +0 -61
- package/thoughts/taras/plans/2026-03-12-slack-thread-followup-additive.md +0 -488
- package/thoughts/taras/plans/2026-03-13-slack-ai-improvements.md +0 -644
- package/thoughts/taras/plans/2026-03-16-route-wrapper-openapi.md +0 -636
- package/thoughts/taras/plans/2026-03-17-multi-api-config.md +0 -444
- package/thoughts/taras/plans/2026-03-18-agent-fs-integration.md +0 -591
- package/thoughts/taras/plans/2026-03-18-debug-db-explorer.md +0 -446
- package/thoughts/taras/plans/2026-03-18-workflow-redesign.md +0 -987
- package/thoughts/taras/plans/2026-03-19-compound-learnings.md +0 -403
- package/thoughts/taras/plans/2026-03-19-ticket-tracker-linear-integration.md +0 -860
- package/thoughts/taras/plans/2026-03-19-workflow-io-schemas-and-bugs.md +0 -899
- package/thoughts/taras/plans/2026-03-20-setup-cli-onboarding.md +0 -874
- package/thoughts/taras/plans/2026-03-20-workflow-structured-output-validation-workspace.md +0 -723
- package/thoughts/taras/research/2026-01-22-vercel-cli-integration.md +0 -287
- package/thoughts/taras/research/2026-01-27-excessive-polling-issue.md +0 -311
- package/thoughts/taras/research/2026-01-28-per-worker-claude-md.md +0 -383
- package/thoughts/taras/research/2026-01-28-sentry-cli-integration.md +0 -240
- package/thoughts/taras/research/2026-02-19-agent-native-swarm-architecture.md +0 -390
- package/thoughts/taras/research/2026-02-19-swarm-gaps-implementation.md +0 -594
- package/thoughts/taras/research/2026-02-25-dashboard-ui-design-best-practices.md +0 -825
- package/thoughts/taras/research/2026-02-26-task-detail-page-redesign.md +0 -393
- package/thoughts/taras/research/2026-03-03-new-ui-missing-actions.md +0 -168
- package/thoughts/taras/research/2026-03-05-pi-mono-provider-research.md +0 -230
- package/thoughts/taras/research/2026-03-06-workflow-engine-design.md +0 -445
- package/thoughts/taras/research/2026-03-08-drive-loop-concept.md +0 -375
- package/thoughts/taras/research/2026-03-08-pi-mono-deep-dive.md +0 -869
- package/thoughts/taras/research/2026-03-09-templates-registry.md +0 -373
- package/thoughts/taras/research/2026-03-10-agent-working-directory.md +0 -223
- package/thoughts/taras/research/2026-03-10-configurable-event-prompts.md +0 -339
- package/thoughts/taras/research/2026-03-11-archil-production-setup.md +0 -181
- package/thoughts/taras/research/2026-03-11-archil-shared-disk-write-strategies.md +0 -437
- package/thoughts/taras/research/2026-03-13-slack-ai-features.md +0 -258
- package/thoughts/taras/research/2026-03-16-openapi-docs-generation.md +0 -335
- package/thoughts/taras/research/2026-03-16-route-wrapper-openapi.md +0 -670
- package/thoughts/taras/research/2026-03-16-slack-thread-followups-e2e.md +0 -54
- package/thoughts/taras/research/2026-03-18-agent-fs-integration.md +0 -558
- package/thoughts/taras/research/2026-03-18-linear-integration-finalization.md +0 -526
- package/thoughts/taras/research/2026-03-18-workflow-redesign.md +0 -797
- package/thoughts/taras/research/2026-03-19-workflow-node-io-schemas-and-bugs.md +0 -563
- package/thoughts/taras/research/2026-03-19-workflow-structured-output-validation-workspace.md +0 -486
- package/thoughts/taras/research/2026-03-20-prompt-template-registry.md +0 -469
- 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`
|