@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,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Memory System
|
|
3
|
-
description: How agents build compounding knowledge across sessions
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Memory System
|
|
7
|
-
|
|
8
|
-
Agent Swarm agents aren't stateless. They build compounding knowledge through multiple automatic mechanisms.
|
|
9
|
-
|
|
10
|
-
## How Memory Works
|
|
11
|
-
|
|
12
|
-
Every agent has a searchable memory backed by OpenAI embeddings (`text-embedding-3-small`, 512 dimensions). Memories are stored in SQLite and retrieved via brute-force cosine similarity search.
|
|
13
|
-
|
|
14
|
-
### Memory Sources
|
|
15
|
-
|
|
16
|
-
Memories are automatically created from:
|
|
17
|
-
|
|
18
|
-
- **Session summaries** — At the end of each session, a lightweight model (Haiku) extracts key learnings: mistakes made, patterns discovered, failed approaches, and codebase knowledge. These summaries become searchable memories.
|
|
19
|
-
- **Task completions** — Every completed (or failed) task's output is indexed. Failed tasks include notes about what went wrong, so the agent avoids repeating the same mistake.
|
|
20
|
-
- **File-based notes** — Agents write to `/workspace/personal/memory/` in their per-agent directory. Files written here are automatically indexed via the PostToolUse hook and can be promoted to swarm scope.
|
|
21
|
-
- **Lead-to-worker injection** — The lead agent can push specific learnings into any worker's memory using the `inject-learning` tool, closing the feedback loop.
|
|
22
|
-
|
|
23
|
-
### Memory Scopes
|
|
24
|
-
|
|
25
|
-
| Scope | Path | Visibility |
|
|
26
|
-
|-------|------|-----------|
|
|
27
|
-
| Agent (private) | `/workspace/personal/memory/` | Only the owning agent |
|
|
28
|
-
| Swarm (shared) | Promoted via `inject-learning` or epic completion | All agents in the swarm |
|
|
29
|
-
|
|
30
|
-
### Automatic Scope Promotion
|
|
31
|
-
|
|
32
|
-
When a task is linked to an epic, its completion output is automatically promoted to **swarm scope** — making it visible to all agents, not just the one that completed it. This ensures that learnings from epic-related work benefit the entire swarm.
|
|
33
|
-
|
|
34
|
-
Similarly, the `inject-learning` tool creates swarm-scoped memories by default, so learnings injected by the lead are available to all workers.
|
|
35
|
-
|
|
36
|
-
## Memory Retrieval
|
|
37
|
-
|
|
38
|
-
Before starting each task, the runner automatically searches for relevant memories and includes them in the agent's context. Agents are required to run `memory-search` at the start of every task.
|
|
39
|
-
|
|
40
|
-
### Search Process
|
|
41
|
-
|
|
42
|
-
1. Task description is used as the search query (enriched with epic name/goal if linked)
|
|
43
|
-
2. Embedding is generated for the query
|
|
44
|
-
3. Cosine similarity is computed against all stored memories
|
|
45
|
-
4. Top matches are included in the task context as "Relevant Past Knowledge"
|
|
46
|
-
5. For epic-linked tasks, recent completed task summaries from the same epic are also injected
|
|
47
|
-
|
|
48
|
-
### Manual Search
|
|
49
|
-
|
|
50
|
-
Agents can also search memories manually using MCP tools:
|
|
51
|
-
|
|
52
|
-
- **`memory-search`** — Search with natural language queries. Returns summaries with IDs.
|
|
53
|
-
- **`memory-get`** — Retrieve full details of a specific memory by ID.
|
|
54
|
-
|
|
55
|
-
## Writing Memories
|
|
56
|
-
|
|
57
|
-
The best practice is to write memories to files immediately when something important is learned:
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
Write("/workspace/personal/memory/auth-header-fix.md",
|
|
61
|
-
"The API requires Bearer prefix on all auth headers.
|
|
62
|
-
Without it, you get a misleading 403 instead of 401.")
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Files are automatically indexed by the PostToolUse hook — no additional action needed.
|
|
66
|
-
|
|
67
|
-
### What to Save
|
|
68
|
-
|
|
69
|
-
- Solutions to problems you solved
|
|
70
|
-
- Codebase patterns you discovered
|
|
71
|
-
- Mistakes you made and how to avoid them
|
|
72
|
-
- Important configurations
|
|
73
|
-
- Instructions from the lead or user
|
|
74
|
-
|
|
75
|
-
### What Not to Save
|
|
76
|
-
|
|
77
|
-
- Session-specific context (temporary state)
|
|
78
|
-
- Unverified conclusions
|
|
79
|
-
- Information that duplicates existing documentation
|
|
80
|
-
|
|
81
|
-
## Memory Categories
|
|
82
|
-
|
|
83
|
-
When the lead injects learnings via `inject-learning`, they're categorized:
|
|
84
|
-
|
|
85
|
-
| Category | Purpose |
|
|
86
|
-
|----------|---------|
|
|
87
|
-
| `mistake-pattern` | Common mistakes to avoid |
|
|
88
|
-
| `best-practice` | Preferred approaches |
|
|
89
|
-
| `codebase-knowledge` | Facts about the codebase |
|
|
90
|
-
| `preference` | User or team preferences |
|
|
91
|
-
|
|
92
|
-
## Related
|
|
93
|
-
|
|
94
|
-
- [Hook System](/docs/architecture/hooks) — The PostToolUse hook that auto-indexes memory files
|
|
95
|
-
- [Agent Identity & Configuration](/docs/architecture/agents) — How identity files persist across sessions
|
|
96
|
-
- [Architecture Overview](/docs/architecture/overview) — System-level view of how memory fits in
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Architecture Overview
|
|
3
|
-
description: How Agent Swarm is built and how the components fit together
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Architecture Overview
|
|
7
|
-
|
|
8
|
-
Agent Swarm follows a hub-and-spoke architecture where a central MCP API server coordinates communication between agents.
|
|
9
|
-
|
|
10
|
-
## System Diagram
|
|
11
|
-
|
|
12
|
-
```mermaid
|
|
13
|
-
graph TD
|
|
14
|
-
User["You (Slack / GitHub / Email / CLI)"] --> Lead["Lead Agent"]
|
|
15
|
-
Lead <--> API["MCP API Server"]
|
|
16
|
-
API <--> DB["SQLite DB"]
|
|
17
|
-
Lead --> W1["Worker"]
|
|
18
|
-
Lead --> W2["Worker"]
|
|
19
|
-
Lead --> W3["Worker"]
|
|
20
|
-
W1 -.- D1["Docker container"]
|
|
21
|
-
W2 -.- D2["Docker container"]
|
|
22
|
-
W3 -.- D3["Docker container"]
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Core Components
|
|
26
|
-
|
|
27
|
-
### MCP API Server
|
|
28
|
-
|
|
29
|
-
The MCP (Model Context Protocol) server is the central coordination point. It:
|
|
30
|
-
|
|
31
|
-
- Exposes tools via the MCP protocol (both STDIO and HTTP transports)
|
|
32
|
-
- Manages agent registration and task assignment
|
|
33
|
-
- Stores all state in a SQLite database
|
|
34
|
-
- Handles integrations (Slack, GitHub, GitLab, AgentMail, Linear webhooks)
|
|
35
|
-
- Runs the task scheduler for recurring automation
|
|
36
|
-
|
|
37
|
-
The server runs on port `3013` by default and is implemented in `src/http/` (modular route handlers) with tool definitions in `src/server.ts`.
|
|
38
|
-
|
|
39
|
-
It also runs three background subsystems:
|
|
40
|
-
- **Scheduler** — Polls for scheduled tasks and creates them at the configured interval
|
|
41
|
-
- **Workflow Engine** — Redesigned DAG executor with executor registry (8 types), checkpoint durability, webhook/schedule/manual triggers, per-step retry, and version history (see [Workflows](/docs/concepts/workflows))
|
|
42
|
-
- **Heartbeat** — A lightweight triage module that sweeps the swarm every 90 seconds (configurable via `HEARTBEAT_INTERVAL_MS`). It uses a 3-tier approach: a preflight gate that bails if the swarm is healthy, code-level triage for routine fixes (stall detection, worker status correction, pool task auto-assignment, stale resource cleanup), and Claude escalation only when ambiguous situations require human reasoning. See [Environment Variables](/docs/reference/environment-variables) for heartbeat configuration.
|
|
43
|
-
|
|
44
|
-
### Lead Agent
|
|
45
|
-
|
|
46
|
-
The lead agent is the coordinator. It:
|
|
47
|
-
|
|
48
|
-
- Receives incoming tasks from external sources (Slack, GitHub, email)
|
|
49
|
-
- Has an **inbox** for triaging incoming messages
|
|
50
|
-
- Breaks down complex tasks and delegates to workers
|
|
51
|
-
- Monitors worker progress and provides feedback
|
|
52
|
-
- Communicates results back to the user
|
|
53
|
-
- Can inject learnings into worker memories
|
|
54
|
-
|
|
55
|
-
### Worker Agents
|
|
56
|
-
|
|
57
|
-
Workers are the execution layer. Each worker:
|
|
58
|
-
|
|
59
|
-
- Runs in an isolated Docker container with a full development environment
|
|
60
|
-
- Has access to git, Node.js, Python, Bun, and common CLI tools
|
|
61
|
-
- Executes tasks assigned by the lead agent
|
|
62
|
-
- Reports progress via the `store-progress` MCP tool
|
|
63
|
-
- Can expose HTTP services on port 3000
|
|
64
|
-
- Learns from each session and builds compounding knowledge
|
|
65
|
-
|
|
66
|
-
### Docker Runtime
|
|
67
|
-
|
|
68
|
-
Each worker container includes:
|
|
69
|
-
|
|
70
|
-
- **Languages**: Python 3, Node.js 22, Bun
|
|
71
|
-
- **Build tools**: gcc, g++, make, cmake
|
|
72
|
-
- **Process manager**: PM2 (for background services)
|
|
73
|
-
- **CLI tools**: GitHub CLI (`gh`), GitLab CLI (`glab`), sqlite3
|
|
74
|
-
- **Agent tools**: `wts` (git worktree manager), `agent-fs` (persistent shared filesystem)
|
|
75
|
-
- **Utilities**: git, git-lfs, vim, nano, jq, curl, wget, ssh
|
|
76
|
-
- **Sudo access**: Workers can install packages with `sudo apt-get install`
|
|
77
|
-
|
|
78
|
-
## Data Flow
|
|
79
|
-
|
|
80
|
-
### Task Creation
|
|
81
|
-
|
|
82
|
-
1. User sends a message (Slack DM, GitHub @mention, email, or API call)
|
|
83
|
-
2. MCP server receives the webhook/request
|
|
84
|
-
3. Lead agent's inbox receives the message
|
|
85
|
-
4. Lead agent triages and creates tasks for workers
|
|
86
|
-
|
|
87
|
-
### Task Execution
|
|
88
|
-
|
|
89
|
-
1. Worker polls for or receives a task assignment
|
|
90
|
-
2. Worker starts a Claude Code session with the task context
|
|
91
|
-
3. Worker executes the task, using MCP tools for coordination
|
|
92
|
-
4. Worker reports progress via `store-progress`
|
|
93
|
-
5. On completion, output is saved and the lead is notified
|
|
94
|
-
|
|
95
|
-
### Learning Loop
|
|
96
|
-
|
|
97
|
-
1. At session end, a summary model extracts key learnings
|
|
98
|
-
2. Learnings are embedded and stored in the memory system
|
|
99
|
-
3. On next task, relevant memories are retrieved and included in context
|
|
100
|
-
4. The lead can also inject learnings directly into workers
|
|
101
|
-
|
|
102
|
-
## Project Structure
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
agent-swarm/
|
|
106
|
-
├── src/
|
|
107
|
-
│ ├── cli.tsx # CLI entry point (Ink/React)
|
|
108
|
-
│ ├── http/ # Modular HTTP route handlers
|
|
109
|
-
│ │ ├── index.ts # Handler registry & dispatch
|
|
110
|
-
│ │ ├── tasks.ts # Task endpoints
|
|
111
|
-
│ │ ├── agents.ts # Agent endpoints
|
|
112
|
-
│ │ ├── epics.ts # Epic endpoints
|
|
113
|
-
│ │ ├── schedules.ts # Schedule endpoints
|
|
114
|
-
│ │ ├── core.ts # Core endpoints (join, poll, progress)
|
|
115
|
-
│ │ ├── config.ts # Config endpoints
|
|
116
|
-
│ │ ├── memory.ts # Memory endpoints
|
|
117
|
-
│ │ ├── db-query.ts # Read-only SQL query endpoint (lead-only)
|
|
118
|
-
│ │ ├── workflows.ts # Workflow CRUD + trigger endpoints
|
|
119
|
-
│ │ └── ... # Additional route modules
|
|
120
|
-
│ ├── server.ts # MCP server setup & tool registration
|
|
121
|
-
│ ├── tools/ # MCP tool implementations
|
|
122
|
-
│ ├── heartbeat/ # Lightweight swarm triage module
|
|
123
|
-
│ │ └── heartbeat.ts # 3-tier heartbeat (gate → code triage → escalation)
|
|
124
|
-
│ ├── be/ # Backend (database, business logic)
|
|
125
|
-
│ │ ├── db.ts # SQLite database
|
|
126
|
-
│ │ └── migrations/ # Database migration system
|
|
127
|
-
│ ├── workflows/ # Workflow automation engine (DAG executor, triggers, nodes)
|
|
128
|
-
│ ├── artifact-sdk/ # Artifact SDK (serve files/apps via localtunnel)
|
|
129
|
-
│ ├── providers/ # AI provider adapters (formatCommand for provider-aware prompts)
|
|
130
|
-
│ │ ├── types.ts # ProviderAdapter interface
|
|
131
|
-
│ │ ├── claude-adapter.ts # Claude Code adapter
|
|
132
|
-
│ │ └── pi-mono-adapter.ts # Pi-mono adapter
|
|
133
|
-
│ ├── oauth/ # Generic OAuth module (PKCE, token management)
|
|
134
|
-
│ ├── gitlab/ # GitLab webhook handlers
|
|
135
|
-
│ ├── commands/ # CLI command implementations
|
|
136
|
-
│ │ ├── runner.ts # Task runner (polls and spawns sessions)
|
|
137
|
-
│ │ ├── worker.ts # Worker agent command
|
|
138
|
-
│ │ ├── lead.ts # Lead agent command
|
|
139
|
-
│ │ └── artifact.ts # Artifact serve/list/stop commands
|
|
140
|
-
│ └── hooks/ # Claude Code hooks
|
|
141
|
-
├── templates/ # Agent templates (official + community)
|
|
142
|
-
├── templates-ui/ # Templates registry (Next.js app)
|
|
143
|
-
├── deploy/ # Deployment scripts
|
|
144
|
-
├── scripts/ # Utility scripts
|
|
145
|
-
├── new-ui/ # Dashboard UI (React + AG Grid)
|
|
146
|
-
├── docker-compose.example.yml
|
|
147
|
-
├── Dockerfile # API server image
|
|
148
|
-
├── Dockerfile.worker # Worker image
|
|
149
|
-
└── package.json
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Technology Stack
|
|
153
|
-
|
|
154
|
-
| Component | Technology |
|
|
155
|
-
|-----------|-----------|
|
|
156
|
-
| Runtime | Bun |
|
|
157
|
-
| API Protocol | MCP (Model Context Protocol) |
|
|
158
|
-
| Database | SQLite (via `bun:sqlite`) |
|
|
159
|
-
| AI Runtime | Claude Code (headless) or pi-mono (via `HARNESS_PROVIDER`) |
|
|
160
|
-
| Containerization | Docker |
|
|
161
|
-
| Process Management | PM2 |
|
|
162
|
-
| Memory Embeddings | OpenAI `text-embedding-3-small` |
|
|
163
|
-
| Dashboard | React + Vite |
|
|
164
|
-
| Schema Validation | Zod |
|
|
165
|
-
|
|
166
|
-
## Next Steps
|
|
167
|
-
|
|
168
|
-
- [Agent Identity & Configuration](/docs/architecture/agents) — How agents are personalized and evolve
|
|
169
|
-
- [Hook System](/docs/architecture/hooks) — The six hooks that fire during each session
|
|
170
|
-
- [Memory System](/docs/architecture/memory) — How agents build compounding knowledge
|
|
171
|
-
- [Task Lifecycle](/docs/concepts/task-lifecycle) — How tasks flow through the swarm
|
|
172
|
-
- [Deployment Guide](/docs/guides/deployment) — Production deployment options
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Epics
|
|
3
|
-
description: Group related tasks into epics to track multi-step projects, monitor progress, and coordinate work across agents
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Epics
|
|
7
|
-
|
|
8
|
-
Epics are a way to organize related tasks into larger projects. They provide a high-level view of progress across multiple tasks.
|
|
9
|
-
|
|
10
|
-
## Creating an Epic
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
create-epic(
|
|
14
|
-
name: "auth-system-revamp",
|
|
15
|
-
goal: "Replace the legacy auth system with JWT-based authentication",
|
|
16
|
-
description: "Full rewrite of the authentication module...",
|
|
17
|
-
plan: "## Phase 1\n- Task A\n- Task B\n\n## Phase 2\n..."
|
|
18
|
-
)
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Epic Properties
|
|
22
|
-
|
|
23
|
-
| Property | Description |
|
|
24
|
-
|----------|-------------|
|
|
25
|
-
| `name` | Unique name for the epic |
|
|
26
|
-
| `goal` | The objective this epic achieves |
|
|
27
|
-
| `description` | Detailed description |
|
|
28
|
-
| `plan` | Implementation plan (markdown) |
|
|
29
|
-
| `prd` | Product Requirements Document (markdown) |
|
|
30
|
-
| `status` | `draft`, `active`, `paused`, `completed`, `cancelled` |
|
|
31
|
-
| `priority` | 0-100 (default: 50) |
|
|
32
|
-
| `tags` | Labels for filtering |
|
|
33
|
-
| `leadAgentId` | Agent responsible for this epic |
|
|
34
|
-
| `planDocPath` | Path to a plan document in the repo |
|
|
35
|
-
| `researchDocPath` | Path to a research document |
|
|
36
|
-
|
|
37
|
-
## Managing Tasks in Epics
|
|
38
|
-
|
|
39
|
-
### Assigning Tasks to Epics
|
|
40
|
-
|
|
41
|
-
When creating a task, associate it with an epic:
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
send-task(task: "Implement JWT token generation", epicId: "epic-uuid")
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Or assign an existing task:
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
assign-task-to-epic(taskId: "task-uuid", epicName: "auth-system-revamp")
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### Removing Tasks from Epics
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
unassign-task-from-epic(taskId: "task-uuid")
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
The task is kept but no longer associated with the epic.
|
|
60
|
-
|
|
61
|
-
## Tracking Progress
|
|
62
|
-
|
|
63
|
-
Use `get-epic-details` to see progress:
|
|
64
|
-
|
|
65
|
-
- Total tasks in the epic
|
|
66
|
-
- Tasks by status (completed, in progress, pending, etc.)
|
|
67
|
-
- Overall completion percentage
|
|
68
|
-
|
|
69
|
-
## GitHub Integration
|
|
70
|
-
|
|
71
|
-
Epics can be linked to GitHub:
|
|
72
|
-
|
|
73
|
-
| Property | Description |
|
|
74
|
-
|----------|-------------|
|
|
75
|
-
| `githubRepo` | Repository identifier (e.g., `desplega-ai/agent-swarm`) |
|
|
76
|
-
| `githubMilestone` | GitHub milestone to track progress |
|
|
77
|
-
|
|
78
|
-
## Slack Integration
|
|
79
|
-
|
|
80
|
-
Epics can have a dedicated Slack thread:
|
|
81
|
-
|
|
82
|
-
| Property | Description |
|
|
83
|
-
|----------|-------------|
|
|
84
|
-
| `slackChannelId` | Slack channel for updates |
|
|
85
|
-
| `slackThreadTs` | Thread timestamp for conversation |
|
|
86
|
-
|
|
87
|
-
## Epic Lifecycle
|
|
88
|
-
|
|
89
|
-
1. **Draft** — Epic is being planned, tasks are being defined
|
|
90
|
-
2. **Active** — Work is in progress on the epic's tasks
|
|
91
|
-
3. **Paused** — Work is temporarily on hold
|
|
92
|
-
4. **Completed** — All tasks are done, epic goals achieved
|
|
93
|
-
5. **Cancelled** — Epic was abandoned
|
|
94
|
-
|
|
95
|
-
## Related
|
|
96
|
-
|
|
97
|
-
- [Task Lifecycle](/docs/concepts/task-lifecycle) — How individual tasks flow through the swarm
|
|
98
|
-
- [MCP Tools Reference](/docs/reference/mcp-tools) — Epic management tools (create-epic, get-epic-details, etc.)
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Scheduled Tasks
|
|
3
|
-
description: Automate recurring and one-time tasks with cron-based and delayed scheduling
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Scheduled Tasks
|
|
7
|
-
|
|
8
|
-
Agent Swarm supports both **recurring** and **one-time** schedules to automate task creation. Recurring schedules create tasks at specified intervals, while one-time schedules run once at a specific time or after a delay, then auto-disable.
|
|
9
|
-
|
|
10
|
-
## Creating a Recurring Schedule
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
create-schedule(
|
|
14
|
-
name: "daily-standup",
|
|
15
|
-
taskTemplate: "Generate a daily standup report summarizing yesterday's completed tasks",
|
|
16
|
-
cronExpression: "0 9 * * *",
|
|
17
|
-
timezone: "America/New_York"
|
|
18
|
-
)
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Or use interval-based scheduling:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
create-schedule(
|
|
25
|
-
name: "health-check",
|
|
26
|
-
taskTemplate: "Check all services are healthy and report any issues",
|
|
27
|
-
intervalMs: 3600000
|
|
28
|
-
)
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Creating a One-Time Schedule
|
|
32
|
-
|
|
33
|
-
One-time schedules run once and then auto-disable. Use `delayMs` for a relative delay or `runAt` for an absolute time:
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
create-schedule(
|
|
37
|
-
name: "deploy-reminder",
|
|
38
|
-
scheduleType: "one_time",
|
|
39
|
-
taskTemplate: "Remind the team about the deployment at 3 PM",
|
|
40
|
-
delayMs: 1800000
|
|
41
|
-
)
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
create-schedule(
|
|
46
|
-
name: "scheduled-report",
|
|
47
|
-
scheduleType: "one_time",
|
|
48
|
-
taskTemplate: "Generate the quarterly report",
|
|
49
|
-
runAt: "2026-03-15T09:00:00Z"
|
|
50
|
-
)
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Schedule Properties
|
|
54
|
-
|
|
55
|
-
| Property | Description |
|
|
56
|
-
|----------|-------------|
|
|
57
|
-
| `name` | Unique name for the schedule |
|
|
58
|
-
| `taskTemplate` | Task description created each time |
|
|
59
|
-
| `scheduleType` | `recurring` (default) or `one_time` |
|
|
60
|
-
| `cronExpression` | Cron expression for recurring schedules (e.g., `0 9 * * *`) |
|
|
61
|
-
| `intervalMs` | Interval in milliseconds for recurring schedules |
|
|
62
|
-
| `delayMs` | Delay in milliseconds for one-time schedules |
|
|
63
|
-
| `runAt` | ISO datetime for one-time schedules (e.g., `2026-03-15T09:00:00Z`) |
|
|
64
|
-
| `timezone` | Timezone for cron schedules (default: UTC) |
|
|
65
|
-
| `targetAgentId` | Agent to assign tasks to (omit for task pool) |
|
|
66
|
-
| `priority` | Task priority 0-100 (default: 50) |
|
|
67
|
-
| `tags` | Tags applied to created tasks |
|
|
68
|
-
| `taskType` | Type classification for created tasks |
|
|
69
|
-
| `model` | Model for created tasks: `haiku`, `sonnet`, or `opus` (falls back to global config) |
|
|
70
|
-
| `enabled` | Whether the schedule is active (default: true) |
|
|
71
|
-
|
|
72
|
-
## Managing Schedules
|
|
73
|
-
|
|
74
|
-
### List Schedules
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
list-schedules()
|
|
78
|
-
list-schedules(enabled: true)
|
|
79
|
-
list-schedules(name: "daily")
|
|
80
|
-
list-schedules(scheduleType: "one_time")
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
By default, completed one-time schedules are hidden. Pass `hideCompleted: false` to include them.
|
|
84
|
-
|
|
85
|
-
### Update a Schedule
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
update-schedule(name: "daily-standup", cronExpression: "0 10 * * *")
|
|
89
|
-
update-schedule(name: "daily-standup", enabled: false)
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### Delete a Schedule
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
delete-schedule(name: "daily-standup")
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Run Immediately
|
|
99
|
-
|
|
100
|
-
Trigger a scheduled task now without waiting for the next interval:
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
run-schedule-now(name: "daily-standup")
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
This creates a task immediately but does not affect the regular schedule timing.
|
|
107
|
-
|
|
108
|
-
## Cron Expression Examples
|
|
109
|
-
|
|
110
|
-
| Expression | Description |
|
|
111
|
-
|-----------|-------------|
|
|
112
|
-
| `0 9 * * *` | Every day at 9:00 AM |
|
|
113
|
-
| `0 9 * * 1-5` | Weekdays at 9:00 AM |
|
|
114
|
-
| `*/30 * * * *` | Every 30 minutes |
|
|
115
|
-
| `0 0 * * 0` | Every Sunday at midnight |
|
|
116
|
-
| `0 9,17 * * *` | At 9 AM and 5 PM daily |
|
|
117
|
-
|
|
118
|
-
## How Scheduling Works
|
|
119
|
-
|
|
120
|
-
The MCP server runs a scheduler that polls for due schedules at a configurable interval (default: 10 seconds, set via `SCHEDULER_INTERVAL_MS`).
|
|
121
|
-
|
|
122
|
-
When a schedule is due:
|
|
123
|
-
1. A new task is created with the schedule's `taskTemplate`
|
|
124
|
-
2. The task is linked back to its schedule via a `scheduleId` field (use the `scheduleId` filter in `get-tasks` to find all tasks from a schedule)
|
|
125
|
-
3. If `targetAgentId` is set, the task is assigned to that agent; otherwise it goes into the unassigned pool
|
|
126
|
-
4. If `model` is set, the task inherits that model setting
|
|
127
|
-
5. The schedule's `lastRunAt` is updated
|
|
128
|
-
6. **One-time schedules** are automatically disabled after execution
|
|
129
|
-
|
|
130
|
-
Only the schedule creator or the lead agent can update or delete schedules.
|
|
131
|
-
|
|
132
|
-
## Related
|
|
133
|
-
|
|
134
|
-
- [Task Lifecycle](/docs/concepts/task-lifecycle) — How scheduled tasks flow through the system after creation
|
|
135
|
-
- [Environment Variables](/docs/reference/environment-variables) — `SCHEDULER_INTERVAL_MS` and other configuration
|
|
136
|
-
- [MCP Tools Reference](/docs/reference/mcp-tools) — Scheduling tools (create-schedule, list-schedules, etc.)
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Service Discovery
|
|
3
|
-
description: Register, discover, and health-check HTTP services that agents expose for inter-agent communication
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Service Discovery
|
|
7
|
-
|
|
8
|
-
Workers can run background HTTP services on port 3000 and register them for discovery by other agents. This enables inter-agent communication beyond the MCP tools.
|
|
9
|
-
|
|
10
|
-
## How It Works
|
|
11
|
-
|
|
12
|
-
Each worker container exposes port 3000. When a worker runs an HTTP service, it registers it with the MCP server for discovery. Other agents can then find and communicate with the service.
|
|
13
|
-
|
|
14
|
-
### Service URL Pattern
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
https://{agentId}.{SWARM_URL}
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
The URL is automatically derived from the agent's ID and the swarm's base domain.
|
|
21
|
-
|
|
22
|
-
## Starting a Service
|
|
23
|
-
|
|
24
|
-
### 1. Start with PM2
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
pm2 start /workspace/myapp/server.js --name my-api
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### 2. Register for Discovery
|
|
31
|
-
|
|
32
|
-
Use the `register-service` MCP tool:
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
register-service(
|
|
36
|
-
script: "/workspace/myapp/server.js",
|
|
37
|
-
description: "My API service"
|
|
38
|
-
)
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### 3. Mark as Healthy
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
update-service-status(name: "my-api", status: "healthy")
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Finding Services
|
|
48
|
-
|
|
49
|
-
Other agents can discover services using:
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
list-services()
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Filter by agent or name:
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
list-services(agentId: "worker-uuid")
|
|
59
|
-
list-services(name: "my-api")
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Health Checks
|
|
63
|
-
|
|
64
|
-
Services should implement a `/health` endpoint that returns HTTP 200 OK. The swarm monitors service health status.
|
|
65
|
-
|
|
66
|
-
### Health Statuses
|
|
67
|
-
|
|
68
|
-
| Status | Description |
|
|
69
|
-
|--------|-------------|
|
|
70
|
-
| `starting` | Service is initializing |
|
|
71
|
-
| `healthy` | Service is running and responding |
|
|
72
|
-
| `unhealthy` | Service is not responding correctly |
|
|
73
|
-
| `stopped` | Service has been stopped |
|
|
74
|
-
|
|
75
|
-
## PM2 Management
|
|
76
|
-
|
|
77
|
-
PM2 is the recommended process manager for background services:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
pm2 start <script> --name <name> # Start a service
|
|
81
|
-
pm2 stop|restart|delete <name> # Manage services
|
|
82
|
-
pm2 logs [name] # View logs
|
|
83
|
-
pm2 list # Show running processes
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Auto-Restart
|
|
87
|
-
|
|
88
|
-
Registered services are automatically restarted on container restart via `ecosystem.config.js`. The PM2 state is saved during the Stop hook and restored on container start.
|
|
89
|
-
|
|
90
|
-
## Stopping a Service
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
# 1. Stop locally
|
|
94
|
-
pm2 delete my-api
|
|
95
|
-
|
|
96
|
-
# 2. Remove from registry
|
|
97
|
-
unregister-service(name: "my-api")
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Related
|
|
101
|
-
|
|
102
|
-
- [Architecture Overview](/docs/architecture/overview) — How services fit into the swarm architecture
|
|
103
|
-
- [Hook System](/docs/architecture/hooks) — The Stop hook saves PM2 state for auto-restart
|
|
104
|
-
- [MCP Tools Reference](/docs/reference/mcp-tools) — Service discovery tools (register-service, list-services, etc.)
|