@desplega.ai/agent-swarm 1.20.0 → 1.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +84 -0
- package/.claude/settings.local.json +3 -1
- package/.entire/settings.json +4 -0
- package/.env.docker.example +40 -23
- package/.env.example +39 -1
- package/.github/ISSUE_TEMPLATE/bug_report.yml +78 -0
- package/.github/ISSUE_TEMPLATE/community-template.yml +77 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +60 -0
- package/.github/PULL_REQUEST_TEMPLATE/community-template.md +29 -0
- package/.github/workflows/ci.yml +3 -27
- package/.github/workflows/docker-and-deploy.yml +20 -5
- package/.github/workflows/merge-gate.yml +233 -0
- package/.opencode/plugins/entire.ts +133 -0
- package/.superset/config.json +6 -0
- package/.wts-setup.ts +103 -34
- package/CHANGELOG.md +447 -0
- package/CLAUDE.md +422 -5
- package/CONTRIBUTING.md +46 -1
- package/DEPLOYMENT.md +26 -9
- package/Dockerfile +15 -7
- package/Dockerfile.worker +99 -67
- package/MCP.md +452 -17
- package/README.md +271 -169
- package/api-entrypoint.sh +56 -0
- package/depot.json +1 -0
- package/docker-compose.example.yml +194 -3
- package/docker-compose.local.yml +119 -0
- package/docker-entrypoint.sh +393 -113
- package/docs-site/app/api/search/route.ts +4 -0
- package/docs-site/app/docs/[[...slug]]/page.tsx +87 -0
- package/docs-site/app/docs/layout.tsx +12 -0
- package/docs-site/app/globals.css +24 -0
- package/docs-site/app/layout.config.tsx +34 -0
- package/docs-site/app/layout.tsx +119 -0
- package/docs-site/app/llms-full.txt/route.ts +11 -0
- package/docs-site/app/llms.mdx/docs/[[...slug]]/route.ts +24 -0
- package/docs-site/app/llms.txt/route.ts +8 -0
- package/docs-site/app/page.tsx +5 -0
- package/docs-site/app/robots.ts +13 -0
- package/docs-site/app/sitemap.ts +37 -0
- package/docs-site/components/api-page.client.tsx +4 -0
- package/docs-site/components/api-page.tsx +7 -0
- package/docs-site/components/mdx/mermaid.tsx +55 -0
- package/docs-site/content/docs/(documentation)/architecture/agents.mdx +117 -0
- package/docs-site/content/docs/(documentation)/architecture/hooks.mdx +77 -0
- package/docs-site/content/docs/(documentation)/architecture/memory.mdx +96 -0
- package/docs-site/content/docs/(documentation)/architecture/meta.json +4 -0
- package/docs-site/content/docs/(documentation)/architecture/overview.mdx +172 -0
- package/docs-site/content/docs/(documentation)/concepts/epics.mdx +98 -0
- package/docs-site/content/docs/(documentation)/concepts/meta.json +4 -0
- package/docs-site/content/docs/(documentation)/concepts/scheduling.mdx +136 -0
- package/docs-site/content/docs/(documentation)/concepts/services.mdx +104 -0
- package/docs-site/content/docs/(documentation)/concepts/task-lifecycle.mdx +148 -0
- package/docs-site/content/docs/(documentation)/concepts/workflows.mdx +209 -0
- package/docs-site/content/docs/(documentation)/contributing.mdx +158 -0
- package/docs-site/content/docs/(documentation)/getting-started.mdx +157 -0
- package/docs-site/content/docs/(documentation)/guides/agentmail-integration.mdx +79 -0
- package/docs-site/content/docs/(documentation)/guides/deployment.mdx +171 -0
- package/docs-site/content/docs/(documentation)/guides/github-integration.mdx +81 -0
- package/docs-site/content/docs/(documentation)/guides/gitlab-integration.mdx +93 -0
- package/docs-site/content/docs/(documentation)/guides/linear-integration.mdx +98 -0
- package/docs-site/content/docs/(documentation)/guides/meta.json +13 -0
- package/docs-site/content/docs/(documentation)/guides/sentry-integration.mdx +52 -0
- package/docs-site/content/docs/(documentation)/guides/slack-integration.mdx +179 -0
- package/docs-site/content/docs/(documentation)/guides/x402-payments.mdx +154 -0
- package/docs-site/content/docs/(documentation)/index.mdx +65 -0
- package/docs-site/content/docs/(documentation)/meta.json +19 -0
- package/docs-site/content/docs/(documentation)/reference/cli.mdx +241 -0
- package/docs-site/content/docs/(documentation)/reference/environment-variables.mdx +205 -0
- package/docs-site/content/docs/(documentation)/reference/mcp-tools.mdx +449 -0
- package/docs-site/content/docs/(documentation)/reference/meta.json +4 -0
- package/docs-site/content/docs/api-reference/active-sessions.mdx +9 -0
- package/docs-site/content/docs/api-reference/agents.mdx +9 -0
- package/docs-site/content/docs/api-reference/channels.mdx +9 -0
- package/docs-site/content/docs/api-reference/config.mdx +9 -0
- package/docs-site/content/docs/api-reference/debug.mdx +9 -0
- package/docs-site/content/docs/api-reference/ecosystem.mdx +9 -0
- package/docs-site/content/docs/api-reference/epics.mdx +9 -0
- package/docs-site/content/docs/api-reference/index.mdx +32 -0
- package/docs-site/content/docs/api-reference/memory.mdx +9 -0
- package/docs-site/content/docs/api-reference/meta.json +25 -0
- package/docs-site/content/docs/api-reference/poll.mdx +9 -0
- package/docs-site/content/docs/api-reference/repos.mdx +9 -0
- package/docs-site/content/docs/api-reference/schedules.mdx +9 -0
- package/docs-site/content/docs/api-reference/session-data.mdx +9 -0
- package/docs-site/content/docs/api-reference/stats.mdx +9 -0
- package/docs-site/content/docs/api-reference/tasks.mdx +9 -0
- package/docs-site/content/docs/api-reference/trackers.mdx +9 -0
- package/docs-site/content/docs/api-reference/webhooks.mdx +9 -0
- package/docs-site/content/docs/api-reference/workflows.mdx +9 -0
- package/docs-site/content/docs/meta.json +3 -0
- package/docs-site/lib/get-llm-text.ts +10 -0
- package/docs-site/lib/openapi.ts +23 -0
- package/docs-site/lib/source.ts +8 -0
- package/docs-site/mdx-components.tsx +13 -0
- package/docs-site/next.config.mjs +29 -0
- package/docs-site/package.json +35 -0
- package/docs-site/pnpm-lock.yaml +5407 -0
- package/docs-site/postcss.config.mjs +8 -0
- package/docs-site/scripts/generate-docs.ts +171 -0
- package/docs-site/source.config.ts +17 -0
- package/docs-site/tsconfig.json +46 -0
- package/ecosystem.config.cjs +4 -4
- package/landing/next.config.ts +14 -0
- package/landing/package.json +31 -0
- package/landing/pnpm-lock.yaml +1091 -0
- package/landing/postcss.config.mjs +8 -0
- 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 +30 -0
- package/landing/public/omghost-openfort.svg +9 -0
- package/landing/src/app/actions/waitlist.ts +25 -0
- package/landing/src/app/blog/openfort-hackathon/page.tsx +863 -0
- package/landing/src/app/blog/page.tsx +162 -0
- package/landing/src/app/blog/swarm-metrics/page.tsx +685 -0
- package/landing/src/app/examples/page.tsx +174 -0
- package/landing/src/app/examples/x402/page.tsx +456 -0
- package/landing/src/app/globals.css +122 -0
- package/landing/src/app/layout.tsx +134 -0
- package/landing/src/app/page.tsx +27 -0
- package/landing/src/app/robots.ts +13 -0
- package/landing/src/app/sitemap.ts +44 -0
- package/landing/src/components/architecture.tsx +163 -0
- package/landing/src/components/cta.tsx +52 -0
- package/landing/src/components/features.tsx +160 -0
- package/landing/src/components/footer.tsx +100 -0
- package/landing/src/components/hero.tsx +217 -0
- package/landing/src/components/how-it-works.tsx +165 -0
- package/landing/src/components/navbar.tsx +147 -0
- package/landing/src/components/waitlist.tsx +110 -0
- package/landing/src/components/why-choose.tsx +149 -0
- package/landing/src/components/workshops.tsx +328 -0
- package/landing/src/lib/utils.ts +6 -0
- package/landing/tsconfig.json +41 -0
- package/misc/transcripts/2026-03-09-pi-mono-e2e-verification.md +154 -0
- package/new-ui/CLAUDE.md +92 -0
- package/new-ui/README.md +73 -0
- package/new-ui/biome.json +42 -0
- package/new-ui/components.json +21 -0
- package/new-ui/index.html +25 -0
- package/new-ui/package.json +49 -0
- package/new-ui/pnpm-lock.yaml +4845 -0
- package/new-ui/public/logo.png +0 -0
- package/new-ui/src/api/client.ts +814 -0
- package/new-ui/src/api/hooks/index.ts +64 -0
- package/new-ui/src/api/hooks/use-agents.ts +58 -0
- package/new-ui/src/api/hooks/use-channels.ts +115 -0
- package/new-ui/src/api/hooks/use-config-api.ts +46 -0
- package/new-ui/src/api/hooks/use-costs.ts +122 -0
- package/new-ui/src/api/hooks/use-db-query.ts +29 -0
- package/new-ui/src/api/hooks/use-epics.ts +75 -0
- package/new-ui/src/api/hooks/use-repos.ts +61 -0
- package/new-ui/src/api/hooks/use-schedules.ts +81 -0
- package/new-ui/src/api/hooks/use-services.ts +16 -0
- package/new-ui/src/api/hooks/use-stats.ts +27 -0
- package/new-ui/src/api/hooks/use-tasks.ts +89 -0
- package/new-ui/src/api/hooks/use-workflows.ts +109 -0
- package/{ui/src/types/api.ts → new-ui/src/api/types.ts} +236 -10
- package/new-ui/src/app/App.tsx +13 -0
- package/new-ui/src/app/providers.tsx +32 -0
- package/new-ui/src/app/router.tsx +52 -0
- package/new-ui/src/components/layout/app-header.tsx +47 -0
- package/new-ui/src/components/layout/app-sidebar.tsx +128 -0
- package/new-ui/src/components/layout/breadcrumbs.tsx +57 -0
- package/new-ui/src/components/layout/config-guard.tsx +22 -0
- package/new-ui/src/components/layout/root-layout.tsx +40 -0
- package/new-ui/src/components/layout/swarm-switcher.tsx +85 -0
- package/new-ui/src/components/shared/command-menu.tsx +131 -0
- package/new-ui/src/components/shared/data-grid.tsx +141 -0
- package/new-ui/src/components/shared/empty-state.tsx +24 -0
- package/new-ui/src/components/shared/error-boundary.tsx +72 -0
- package/new-ui/src/components/shared/json-viewer.tsx +47 -0
- package/new-ui/src/components/shared/name-connection-modal.tsx +99 -0
- package/new-ui/src/components/shared/page-skeleton.tsx +16 -0
- package/new-ui/src/components/shared/session-log-viewer.tsx +364 -0
- package/new-ui/src/components/shared/stats-bar.tsx +132 -0
- package/new-ui/src/components/shared/status-badge.tsx +131 -0
- package/new-ui/src/components/shared/usage-summary.tsx +179 -0
- package/new-ui/src/components/ui/alert-dialog.tsx +176 -0
- package/new-ui/src/components/ui/alert.tsx +60 -0
- package/new-ui/src/components/ui/avatar.tsx +96 -0
- package/new-ui/src/components/ui/badge.tsx +46 -0
- package/new-ui/src/components/ui/button.tsx +62 -0
- package/new-ui/src/components/ui/card.tsx +75 -0
- package/new-ui/src/components/ui/command.tsx +160 -0
- package/new-ui/src/components/ui/dialog.tsx +143 -0
- package/new-ui/src/components/ui/dropdown-menu.tsx +226 -0
- package/new-ui/src/components/ui/input.tsx +21 -0
- package/new-ui/src/components/ui/label.tsx +19 -0
- package/new-ui/src/components/ui/progress.tsx +26 -0
- package/new-ui/src/components/ui/scroll-area.tsx +54 -0
- package/new-ui/src/components/ui/select.tsx +175 -0
- package/new-ui/src/components/ui/separator.tsx +28 -0
- package/new-ui/src/components/ui/sheet.tsx +132 -0
- package/new-ui/src/components/ui/sidebar.tsx +691 -0
- package/new-ui/src/components/ui/skeleton.tsx +13 -0
- package/new-ui/src/components/ui/sonner.tsx +35 -0
- package/new-ui/src/components/ui/switch.tsx +33 -0
- package/new-ui/src/components/ui/table.tsx +92 -0
- package/new-ui/src/components/ui/tabs.tsx +79 -0
- package/new-ui/src/components/ui/textarea.tsx +18 -0
- package/new-ui/src/components/ui/tooltip.tsx +51 -0
- package/new-ui/src/components/workflows/action-node.tsx +53 -0
- package/new-ui/src/components/workflows/condition-node.tsx +50 -0
- package/new-ui/src/components/workflows/graph-utils.ts +124 -0
- package/new-ui/src/components/workflows/json-tree.tsx +189 -0
- package/new-ui/src/components/workflows/node-styles.ts +10 -0
- package/new-ui/src/components/workflows/step-detail-sheet.tsx +87 -0
- package/new-ui/src/components/workflows/trigger-node.tsx +41 -0
- package/new-ui/src/components/workflows/workflow-graph.tsx +65 -0
- package/{ui/src/hooks/useAutoScroll.ts → new-ui/src/hooks/use-auto-scroll.ts} +0 -1
- package/new-ui/src/hooks/use-config.ts +203 -0
- package/new-ui/src/hooks/use-keyboard-shortcuts.ts +41 -0
- package/new-ui/src/hooks/use-mobile.ts +19 -0
- package/new-ui/src/hooks/use-theme.ts +60 -0
- package/new-ui/src/lib/config.ts +188 -0
- package/new-ui/src/lib/slugs.ts +71 -0
- package/{ui → new-ui}/src/lib/utils.ts +32 -0
- package/new-ui/src/main.tsx +11 -0
- package/new-ui/src/pages/agents/[id]/page.tsx +492 -0
- package/new-ui/src/pages/agents/page.tsx +134 -0
- package/new-ui/src/pages/chat/page.tsx +674 -0
- package/new-ui/src/pages/config/page.tsx +1109 -0
- package/new-ui/src/pages/dashboard/page.tsx +454 -0
- package/new-ui/src/pages/debug/page.tsx +275 -0
- package/new-ui/src/pages/epics/[id]/page.tsx +809 -0
- package/new-ui/src/pages/epics/page.tsx +321 -0
- package/new-ui/src/pages/not-found/page.tsx +18 -0
- package/new-ui/src/pages/repos/page.tsx +369 -0
- package/new-ui/src/pages/schedules/[id]/page.tsx +664 -0
- package/new-ui/src/pages/schedules/page.tsx +477 -0
- package/new-ui/src/pages/services/page.tsx +128 -0
- package/new-ui/src/pages/tasks/[id]/page.tsx +670 -0
- package/new-ui/src/pages/tasks/page.tsx +592 -0
- package/new-ui/src/pages/usage/page.tsx +195 -0
- package/new-ui/src/pages/workflow-runs/[id]/page.tsx +363 -0
- package/new-ui/src/pages/workflows/[id]/page.tsx +417 -0
- package/new-ui/src/pages/workflows/page.tsx +266 -0
- package/new-ui/src/styles/ag-grid.css +36 -0
- package/new-ui/src/styles/globals.css +213 -0
- package/new-ui/test-results/.last-run.json +4 -0
- package/{ui/tsconfig.json → new-ui/tsconfig.app.json} +7 -4
- package/new-ui/tsconfig.json +4 -0
- package/new-ui/tsconfig.node.json +26 -0
- package/new-ui/vercel.json +4 -0
- package/new-ui/vite.config.ts +28 -0
- package/openapi.json +4436 -0
- package/package.json +31 -7
- package/plugin/build-pi-skills.ts +233 -0
- package/plugin/commands/close-issue.md +7 -3
- package/plugin/commands/create-pr.md +18 -12
- package/plugin/commands/implement-issue.md +7 -3
- package/plugin/commands/respond-github.md +8 -4
- package/plugin/commands/review-pr.md +44 -10
- package/plugin/commands/start-leader.md +1 -3
- package/plugin/commands/start-worker.md +1 -3
- package/plugin/commands/work-on-task.md +22 -3
- package/plugin/pi-skills/close-issue/SKILL.md +90 -0
- package/plugin/pi-skills/create-pr/SKILL.md +99 -0
- package/plugin/pi-skills/implement-issue/SKILL.md +135 -0
- package/plugin/pi-skills/investigate-sentry-issue/SKILL.md +138 -0
- package/plugin/pi-skills/respond-github/SKILL.md +98 -0
- package/plugin/pi-skills/review-offered-task/SKILL.md +45 -0
- package/plugin/pi-skills/review-pr/SKILL.md +261 -0
- package/plugin/pi-skills/start-leader/SKILL.md +121 -0
- package/plugin/pi-skills/start-worker/SKILL.md +60 -0
- package/plugin/pi-skills/swarm-chat/SKILL.md +82 -0
- package/plugin/pi-skills/todos/SKILL.md +66 -0
- package/plugin/pi-skills/work-on-task/SKILL.md +65 -0
- package/plugin/skills/artifacts/examples/approval-flow.ts +34 -0
- package/plugin/skills/artifacts/examples/hono-dashboard.ts +31 -0
- package/plugin/skills/artifacts/examples/multi-artifact.ts +20 -0
- package/plugin/skills/artifacts/examples/static-report.sh +17 -0
- package/plugin/skills/artifacts/skill.md +71 -0
- package/prek.toml +75 -0
- package/scripts/check-db-boundary.sh +60 -0
- package/scripts/e2e-docker-provider.ts +820 -0
- package/scripts/e2e-io-schemas-test.ts +807 -0
- package/scripts/e2e-provider-test.ts +220 -0
- package/scripts/e2e-workflow-redesign.sh +229 -0
- package/scripts/e2e-workflow-test.sh +285 -0
- package/scripts/e2e-workflow-test.ts +857 -0
- package/scripts/generate-openapi.ts +26 -0
- package/scripts/measure-tool-tokens.ts +118 -0
- package/scripts/x402-e2e-test.ts +195 -0
- package/scripts/x402-test-server.ts +236 -0
- package/scripts/x402-testnet-e2e.ts +668 -0
- package/slack-manifest.json +17 -0
- package/src/agentmail/app.ts +65 -0
- package/src/agentmail/handlers.ts +207 -0
- package/src/agentmail/index.ts +9 -0
- package/src/agentmail/types.ts +51 -0
- package/src/artifact-sdk/browser-sdk.ts +30 -0
- package/src/artifact-sdk/index.ts +2 -0
- package/src/artifact-sdk/localtunnel.d.ts +20 -0
- package/src/artifact-sdk/port.ts +12 -0
- package/src/artifact-sdk/server.ts +156 -0
- package/src/artifact-sdk/tunnel.ts +19 -0
- package/src/be/chunking.ts +193 -0
- package/src/be/db-queries/oauth.ts +90 -0
- package/src/be/db-queries/tracker.ts +182 -0
- package/src/be/db.ts +2729 -770
- package/src/be/embedding.ts +80 -0
- package/src/be/migrations/001_initial.sql +409 -0
- package/src/be/migrations/002_one_time_schedules.sql +59 -0
- package/src/be/migrations/003_workflows.sql +51 -0
- package/src/be/migrations/004_workflow_source.sql +81 -0
- package/src/be/migrations/005_epic_next_steps.sql +2 -0
- package/src/be/migrations/006_vcs_provider.sql +94 -0
- package/src/be/migrations/007_task_dir.sql +2 -0
- package/src/be/migrations/008_workflow_redesign.sql +85 -0
- package/src/be/migrations/009_tracker_integration.sql +144 -0
- package/src/be/migrations/010_step_diagnostics.sql +1 -0
- package/src/be/migrations/011_step_next_port.sql +1 -0
- package/src/be/migrations/012_trigger_schema.sql +1 -0
- package/src/be/migrations/013_task_output_schema.sql +2 -0
- package/src/be/migrations/runner.ts +188 -0
- package/src/cli.tsx +231 -299
- package/src/commands/artifact.ts +241 -0
- package/src/commands/onboard/compose-generator.ts +169 -0
- package/src/commands/onboard/env-generator.ts +79 -0
- package/src/commands/onboard/manifest.ts +37 -0
- package/src/commands/onboard/presets.ts +85 -0
- package/src/commands/onboard/service-names.ts +47 -0
- package/src/commands/onboard/steps/core-credentials.tsx +111 -0
- package/src/commands/onboard/steps/custom-templates.tsx +168 -0
- package/src/commands/onboard/steps/generate.tsx +154 -0
- package/src/commands/onboard/steps/harness-credentials.tsx +195 -0
- package/src/commands/onboard/steps/harness.tsx +21 -0
- package/src/commands/onboard/steps/health-check.tsx +171 -0
- package/src/commands/onboard/steps/integration-github.tsx +105 -0
- package/src/commands/onboard/steps/integration-gitlab.tsx +79 -0
- package/src/commands/onboard/steps/integration-menu.tsx +58 -0
- package/src/commands/onboard/steps/integration-sentry.tsx +79 -0
- package/src/commands/onboard/steps/integration-slack.tsx +165 -0
- package/src/commands/onboard/steps/post-connect.tsx +145 -0
- package/src/commands/onboard/steps/post-dashboard.tsx +34 -0
- package/src/commands/onboard/steps/post-task.tsx +103 -0
- package/src/commands/onboard/steps/prereq-check.tsx +178 -0
- package/src/commands/onboard/steps/review.tsx +82 -0
- package/src/commands/onboard/steps/start.tsx +97 -0
- package/src/commands/onboard/templates.ts +34 -0
- package/src/commands/onboard/types.ts +259 -0
- package/src/commands/onboard.tsx +425 -0
- package/src/commands/runner.ts +1376 -559
- package/src/commands/setup.tsx +23 -38
- package/src/commands/shared/client-config.ts +41 -0
- package/src/github/app.ts +8 -0
- package/src/github/handlers.ts +93 -75
- package/src/github/index.ts +1 -0
- package/src/github/types.ts +1 -0
- package/src/gitlab/auth.ts +63 -0
- package/src/gitlab/handlers.ts +327 -0
- package/src/gitlab/index.ts +19 -0
- package/src/gitlab/reactions.ts +104 -0
- package/src/gitlab/types.ts +130 -0
- package/src/heartbeat/heartbeat.ts +425 -0
- package/src/heartbeat/index.ts +1 -0
- package/src/hooks/hook.ts +555 -4
- package/src/hooks/tool-loop-detection.test.ts +158 -0
- package/src/hooks/tool-loop-detection.ts +167 -0
- package/src/http/active-sessions.ts +172 -0
- package/src/http/agents.ts +328 -0
- package/src/http/config.ts +191 -0
- package/src/http/core.ts +309 -0
- package/src/http/db-query.ts +91 -0
- package/src/http/ecosystem.ts +63 -0
- package/src/http/epics.ts +460 -0
- package/src/http/index.ts +213 -0
- package/src/http/mcp.ts +77 -0
- package/src/http/memory.ts +168 -0
- package/src/http/openapi.ts +109 -0
- package/src/http/poll.ts +178 -0
- package/src/http/repos.ts +195 -0
- package/src/http/route-def.ts +123 -0
- package/src/http/schedules.ts +391 -0
- package/src/http/session-data.ts +241 -0
- package/src/http/stats.ts +174 -0
- package/src/http/tasks.ts +468 -0
- package/src/http/trackers/index.ts +10 -0
- package/src/http/trackers/linear.ts +187 -0
- package/src/http/types.ts +12 -0
- package/src/http/utils.ts +87 -0
- package/src/http/webhooks.ts +432 -0
- package/src/http/workflows.ts +522 -0
- package/src/http.ts +1 -1890
- package/src/linear/README.md +65 -0
- package/src/linear/app.ts +48 -0
- package/src/linear/client.ts +18 -0
- package/src/linear/index.ts +1 -0
- package/src/linear/oauth.ts +35 -0
- package/src/linear/outbound.ts +212 -0
- package/src/linear/sync.ts +543 -0
- package/src/linear/types.ts +7 -0
- package/src/linear/webhook.ts +104 -0
- package/src/oauth/README.md +66 -0
- package/src/oauth/index.ts +6 -0
- package/src/oauth/wrapper.ts +204 -0
- package/src/prompts/base-prompt.ts +366 -24
- package/src/prompts/defaults.ts +196 -0
- package/src/providers/claude-adapter.ts +429 -0
- package/src/providers/index.ts +24 -0
- package/src/providers/pi-mono-adapter.ts +442 -0
- package/src/providers/pi-mono-extension.ts +620 -0
- package/src/providers/pi-mono-mcp-client.ts +124 -0
- package/src/providers/types.ts +75 -0
- package/src/scheduler/scheduler.test.ts +2 -0
- package/src/scheduler/scheduler.ts +186 -29
- package/src/server.ts +82 -6
- package/src/slack/HEURISTICS.md +105 -0
- package/src/slack/actions.ts +133 -0
- package/src/slack/app.ts +7 -0
- package/src/slack/assistant.ts +115 -0
- package/src/slack/blocks.ts +233 -0
- package/src/slack/commands.ts +31 -17
- package/src/slack/files.ts +1 -1
- package/src/slack/handlers.test.ts +114 -1
- package/src/slack/handlers.ts +212 -52
- package/src/slack/responses.ts +120 -67
- package/src/slack/router.ts +17 -99
- package/src/slack/thread-buffer.ts +213 -0
- package/src/slack/watcher.ts +119 -4
- package/src/tests/agent-activity.test.ts +247 -0
- package/src/tests/agentmail-filters.test.ts +97 -0
- package/src/tests/artifact-sdk.test.ts +800 -0
- package/src/tests/base-prompt.test.ts +264 -0
- package/src/tests/build-pi-skills.test.ts +127 -0
- package/src/tests/claude-adapter.test.ts +126 -0
- package/src/tests/context-versioning.test.ts +425 -0
- package/src/tests/db-queries-oauth.test.ts +197 -0
- package/src/tests/db-queries-tracker.test.ts +230 -0
- package/src/tests/epics.test.ts +3 -3
- package/src/tests/error-tracker.test.ts +368 -0
- package/src/tests/fetch-resolved-env.test.ts +167 -0
- package/src/tests/generate-default-claude-md.test.ts +9 -1
- package/src/tests/generate-identity-templates.test.ts +124 -0
- package/src/tests/gitlab-auth.test.ts +109 -0
- package/src/tests/gitlab-handlers.test.ts +691 -0
- package/src/tests/gitlab-vcs-db.test.ts +177 -0
- package/src/tests/heartbeat.test.ts +363 -0
- package/src/tests/http-api-integration.test.ts +1698 -0
- package/src/tests/linear-outbound-sync.test.ts +200 -0
- package/src/tests/linear-webhook.test.ts +402 -0
- package/src/tests/match-route.test.ts +187 -0
- package/src/tests/memory.test.ts +737 -0
- package/src/tests/migration-runner-regressions.test.ts +86 -0
- package/src/tests/model-control.test.ts +338 -0
- package/src/tests/oauth-wrapper.test.ts +147 -0
- package/src/tests/onboard-compose.test.ts +138 -0
- package/src/tests/onboard-env.test.ts +174 -0
- package/src/tests/onboard-manifest.test.ts +137 -0
- package/src/tests/pi-mono-adapter.test.ts +234 -0
- package/src/tests/progress-dedup.test.ts +98 -0
- package/src/tests/provider-adapter.test.ts +122 -0
- package/src/tests/provider-command-format.test.ts +98 -0
- package/src/tests/reload-config.test.ts +170 -0
- package/src/tests/runner-polling-api.test.ts +25 -20
- package/src/tests/scheduled-tasks.test.ts +104 -0
- package/src/tests/scheduler-backoff.test.ts +166 -0
- package/src/tests/self-improvement.test.ts +540 -0
- package/src/tests/session-attach.test.ts +536 -0
- package/src/tests/session-costs.test.ts +267 -1
- package/src/tests/slack-actions.test.ts +133 -0
- package/src/tests/slack-assistant.test.ts +136 -0
- package/src/tests/slack-blocks.test.ts +246 -0
- package/src/tests/slack-metadata-inheritance.test.ts +243 -0
- package/src/tests/slack-queue-offline.test.ts +174 -0
- package/src/tests/slack-router.test.ts +181 -0
- package/src/tests/slack-thread-buffer.test.ts +305 -0
- package/src/tests/slack-thread-followups.test.ts +298 -0
- package/src/tests/slack-watcher.test.ts +101 -0
- package/src/tests/structured-output.test.ts +311 -0
- package/src/tests/swarm-repos.test.ts +198 -0
- package/src/tests/task-cancellation.test.ts +6 -4
- package/src/tests/task-working-dir.test.ts +176 -0
- package/src/tests/template-fetch.test.ts +490 -0
- package/src/tests/tool-annotations.test.ts +371 -0
- package/src/tests/tracker-tools.test.ts +184 -0
- package/src/tests/update-profile-api.test.ts +143 -3
- package/src/tests/validation-adapters.test.ts +86 -0
- package/src/tests/vcs-provider.test.ts +27 -0
- package/src/tests/workflow-agent-task.test.ts +196 -0
- package/src/tests/workflow-async-v2.test.ts +386 -0
- package/src/tests/workflow-convergence.test.ts +541 -0
- package/src/tests/workflow-definition-validation.test.ts +290 -0
- package/src/tests/workflow-engine-v2.test.ts +691 -0
- package/src/tests/workflow-executors.test.ts +736 -0
- package/src/tests/workflow-http-v2.test.ts +599 -0
- package/src/tests/workflow-integration-io.test.ts +902 -0
- package/src/tests/workflow-io-schemas.test.ts +624 -0
- package/src/tests/workflow-registry.test.ts +592 -0
- package/src/tests/workflow-retry-v2.test.ts +401 -0
- package/src/tests/workflow-retry-validation.test.ts +282 -0
- package/src/tests/workflow-template.test.ts +288 -0
- package/src/tests/workflow-trigger-schema.test.ts +359 -0
- package/src/tests/workflow-triggers-v2.test.ts +264 -0
- package/src/tests/workflow-versions.test.ts +208 -0
- package/src/tests/x402-client.test.ts +117 -0
- package/src/tests/x402-config.test.ts +182 -0
- package/src/tests/x402-spending-tracker.test.ts +185 -0
- package/src/tools/cancel-task.ts +2 -0
- package/src/tools/context-diff.ts +171 -0
- package/src/tools/context-history.ts +138 -0
- package/src/tools/create-channel.ts +1 -0
- package/src/tools/db-query.ts +78 -0
- package/src/tools/delete-channel.ts +132 -0
- package/src/tools/epics/assign-task-to-epic.ts +1 -0
- package/src/tools/epics/create-epic.ts +3 -2
- package/src/tools/epics/delete-epic.ts +2 -0
- package/src/tools/epics/get-epic-details.ts +2 -0
- package/src/tools/epics/list-epics.ts +2 -0
- package/src/tools/epics/unassign-task-from-epic.ts +1 -0
- package/src/tools/epics/update-epic.ts +7 -4
- package/src/tools/get-swarm.ts +2 -0
- package/src/tools/get-task-details.ts +2 -0
- package/src/tools/get-tasks.ts +27 -1
- package/src/tools/inject-learning.ts +106 -0
- package/src/tools/join-swarm.ts +17 -7
- package/src/tools/list-channels.ts +2 -0
- package/src/tools/list-services.ts +2 -0
- package/src/tools/memory-get.ts +56 -0
- package/src/tools/memory-search.ts +131 -0
- package/src/tools/my-agent-info.ts +2 -0
- package/src/tools/poll-task.ts +2 -20
- package/src/tools/post-message.ts +1 -0
- package/src/tools/read-messages.ts +2 -0
- package/src/tools/register-agentmail-inbox.ts +166 -0
- package/src/tools/register-service.ts +2 -0
- package/src/tools/schedules/create-schedule.ts +134 -24
- package/src/tools/schedules/delete-schedule.ts +2 -0
- package/src/tools/schedules/list-schedules.ts +20 -4
- package/src/tools/schedules/run-schedule-now.ts +1 -0
- package/src/tools/schedules/update-schedule.ts +49 -17
- package/src/tools/send-task.ts +132 -10
- package/src/tools/slack-download-file.ts +4 -2
- package/src/tools/slack-list-channels.ts +2 -0
- package/src/tools/slack-post.ts +2 -0
- package/src/tools/slack-read.ts +2 -0
- package/src/tools/slack-reply.ts +2 -0
- package/src/tools/slack-upload-file.ts +2 -0
- package/src/tools/store-progress.ts +187 -4
- package/src/tools/swarm-config/delete-config.ts +87 -0
- package/src/tools/swarm-config/get-config.ts +108 -0
- package/src/tools/swarm-config/index.ts +4 -0
- package/src/tools/swarm-config/list-config.ts +99 -0
- package/src/tools/swarm-config/set-config.ts +118 -0
- package/src/tools/task-action.ts +30 -5
- package/src/tools/task-dedup.ts +97 -0
- package/src/tools/tool-config.ts +117 -0
- package/src/tools/tracker/index.ts +6 -0
- package/src/tools/tracker/tracker-link-epic.ts +64 -0
- package/src/tools/tracker/tracker-link-task.ts +64 -0
- package/src/tools/tracker/tracker-map-agent.ts +57 -0
- package/src/tools/tracker/tracker-status.ts +56 -0
- package/src/tools/tracker/tracker-sync-status.ts +42 -0
- package/src/tools/tracker/tracker-unlink.ts +41 -0
- package/src/tools/unregister-service.ts +2 -0
- package/src/tools/update-profile.ts +93 -10
- package/src/tools/update-service-status.ts +2 -0
- package/src/tools/utils.ts +10 -1
- package/src/tools/workflows/create-workflow.ts +111 -0
- package/src/tools/workflows/delete-workflow.ts +42 -0
- package/src/tools/workflows/get-workflow-run.ts +59 -0
- package/src/tools/workflows/get-workflow.ts +53 -0
- package/src/tools/workflows/index.ts +9 -0
- package/src/tools/workflows/list-workflow-runs.ts +48 -0
- package/src/tools/workflows/list-workflows.ts +42 -0
- package/src/tools/workflows/retry-workflow-run.ts +40 -0
- package/src/tools/workflows/trigger-workflow.ts +96 -0
- package/src/tools/workflows/update-workflow.ts +118 -0
- package/src/tracker/types.ts +51 -0
- package/src/types.ts +477 -14
- package/src/utils/credentials.test.ts +156 -0
- package/src/utils/credentials.ts +50 -0
- package/src/utils/error-tracker.ts +190 -0
- package/src/vcs/index.ts +15 -0
- package/src/vcs/types.ts +5 -0
- package/src/workflows/checkpoint.ts +121 -0
- package/src/workflows/cooldown.ts +28 -0
- package/src/workflows/definition.ts +217 -0
- package/src/workflows/engine.ts +554 -0
- package/src/workflows/event-bus.ts +29 -0
- package/src/workflows/executors/agent-task.ts +92 -0
- package/src/workflows/executors/base.ts +86 -0
- package/src/workflows/executors/code-match.ts +88 -0
- package/src/workflows/executors/index.ts +16 -0
- package/src/workflows/executors/notify.ts +93 -0
- package/src/workflows/executors/property-match.ts +104 -0
- package/src/workflows/executors/raw-llm.ts +83 -0
- package/src/workflows/executors/registry.ts +76 -0
- package/src/workflows/executors/script.ts +103 -0
- package/src/workflows/executors/validate.ts +215 -0
- package/src/workflows/executors/vcs.ts +58 -0
- package/src/workflows/index.ts +61 -0
- package/src/workflows/input.ts +46 -0
- package/src/workflows/json-schema-validator.ts +118 -0
- package/src/workflows/recovery.ts +139 -0
- package/src/workflows/resume.ts +143 -0
- package/src/workflows/retry-poller.ts +216 -0
- package/src/workflows/template.ts +74 -0
- package/src/workflows/templates.ts +86 -0
- package/src/workflows/triggers.ts +95 -0
- package/src/workflows/validation.ts +104 -0
- package/src/workflows/version.ts +42 -0
- package/src/x402/cli.ts +140 -0
- package/src/x402/client.ts +192 -0
- package/src/x402/config.ts +131 -0
- package/src/x402/index.ts +37 -0
- package/src/x402/openfort-signer.ts +83 -0
- package/src/x402/spending-tracker.ts +109 -0
- package/templates/community/.gitkeep +0 -0
- package/templates/official/coder/CLAUDE.md +49 -0
- package/templates/official/coder/IDENTITY.md +28 -0
- package/templates/official/coder/SOUL.md +43 -0
- package/templates/official/coder/TOOLS.md +40 -0
- package/templates/official/coder/config.json +23 -0
- package/templates/official/coder/start-up.sh +23 -0
- package/templates/official/content-reviewer/CLAUDE.md +68 -0
- package/templates/official/content-reviewer/IDENTITY.md +28 -0
- package/templates/official/content-reviewer/SOUL.md +44 -0
- package/templates/official/content-reviewer/TOOLS.md +37 -0
- package/templates/official/content-reviewer/config.json +23 -0
- package/templates/official/content-reviewer/start-up.sh +23 -0
- package/templates/official/content-strategist/CLAUDE.md +63 -0
- package/templates/official/content-strategist/IDENTITY.md +33 -0
- package/templates/official/content-strategist/SOUL.md +48 -0
- package/templates/official/content-strategist/TOOLS.md +47 -0
- package/templates/official/content-strategist/config.json +23 -0
- package/templates/official/content-strategist/start-up.sh +23 -0
- package/templates/official/content-writer/CLAUDE.md +72 -0
- package/templates/official/content-writer/IDENTITY.md +30 -0
- package/templates/official/content-writer/SOUL.md +46 -0
- package/templates/official/content-writer/TOOLS.md +44 -0
- package/templates/official/content-writer/config.json +23 -0
- package/templates/official/content-writer/start-up.sh +23 -0
- package/templates/official/forward-deployed-engineer/CLAUDE.md +54 -0
- package/templates/official/forward-deployed-engineer/IDENTITY.md +37 -0
- package/templates/official/forward-deployed-engineer/SOUL.md +55 -0
- package/templates/official/forward-deployed-engineer/config.json +21 -0
- package/templates/official/lead/CLAUDE.md +33 -0
- package/templates/official/lead/IDENTITY.md +36 -0
- package/templates/official/lead/SOUL.md +51 -0
- package/templates/official/lead/config.json +22 -0
- package/templates/official/researcher/CLAUDE.md +46 -0
- package/templates/official/researcher/IDENTITY.md +28 -0
- package/templates/official/researcher/SOUL.md +43 -0
- package/templates/official/researcher/config.json +21 -0
- package/templates/official/reviewer/CLAUDE.md +63 -0
- package/templates/official/reviewer/IDENTITY.md +28 -0
- package/templates/official/reviewer/SOUL.md +45 -0
- package/templates/official/reviewer/config.json +21 -0
- package/templates/official/tester/CLAUDE.md +53 -0
- package/templates/official/tester/IDENTITY.md +28 -0
- package/templates/official/tester/SOUL.md +55 -0
- package/templates/official/tester/config.json +21 -0
- package/templates/schema.ts +35 -0
- package/templates-ui/README.md +46 -0
- package/templates-ui/components.json +17 -0
- package/templates-ui/eslint.config.mjs +18 -0
- package/templates-ui/next.config.ts +7 -0
- package/templates-ui/package.json +35 -0
- package/templates-ui/pnpm-lock.yaml +4571 -0
- package/templates-ui/postcss.config.mjs +7 -0
- package/templates-ui/public/file.svg +1 -0
- package/templates-ui/public/globe.svg +1 -0
- package/templates-ui/public/logo.png +0 -0
- package/templates-ui/public/next.svg +1 -0
- package/templates-ui/public/vercel.svg +1 -0
- package/templates-ui/public/window.svg +1 -0
- package/templates-ui/src/app/[category]/[name]/page.tsx +89 -0
- package/templates-ui/src/app/api/templates/[...slug]/route.ts +52 -0
- package/templates-ui/src/app/api/templates/route.ts +18 -0
- package/templates-ui/src/app/builder/page.tsx +37 -0
- package/templates-ui/src/app/globals.css +94 -0
- package/templates-ui/src/app/layout.tsx +79 -0
- package/templates-ui/src/app/page.tsx +38 -0
- package/templates-ui/src/app/robots.ts +11 -0
- package/templates-ui/src/app/sitemap.ts +31 -0
- package/templates-ui/src/components/compose-builder.tsx +442 -0
- package/templates-ui/src/components/compose-preview.tsx +117 -0
- package/templates-ui/src/components/file-preview.tsx +77 -0
- package/templates-ui/src/components/footer.tsx +40 -0
- package/templates-ui/src/components/header.tsx +41 -0
- package/templates-ui/src/components/template-card.tsx +87 -0
- package/templates-ui/src/components/template-detail.tsx +125 -0
- package/templates-ui/src/components/template-gallery.tsx +263 -0
- package/templates-ui/src/components/ui/badge.tsx +36 -0
- package/templates-ui/src/components/ui/button.tsx +57 -0
- package/templates-ui/src/components/ui/card.tsx +76 -0
- package/templates-ui/src/components/ui/separator.tsx +31 -0
- package/templates-ui/src/components/ui/tooltip.tsx +32 -0
- package/templates-ui/src/lib/compose-generator.ts +241 -0
- package/templates-ui/src/lib/templates.ts +137 -0
- package/templates-ui/src/lib/utils.ts +6 -0
- package/templates-ui/tsconfig.json +34 -0
- package/thoughts/research/2026-02-28-openfort-viem-x402-research.md +679 -0
- package/thoughts/research/2026-02-28-x402-payments-research.md +686 -0
- package/thoughts/researcher/plans/2026-02-20-agent-self-improvement-plan.md +282 -0
- package/thoughts/researcher/research/2026-02-20-agent-self-improvement.md +492 -0
- package/thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md +282 -0
- package/thoughts/shared/plans/2026-03-02-claude-context-mode-integration.md +328 -0
- package/thoughts/shared/plans/2026-03-02-code-level-heartbeat.md +224 -0
- package/thoughts/shared/research/2026-02-26-cliffy-mcp-tools.md +159 -0
- package/thoughts/shared/research/2026-03-03-database-migration-system-refactor.md +337 -0
- package/thoughts/swarm-researcher/plans/2026-02-23-openclaw-improvements-plan.md +778 -0
- package/thoughts/swarm-researcher/plans/2026-02-26-artifacts-localtunnel-plan.md +1269 -0
- package/thoughts/swarm-researcher/research/2026-02-23-openclaw-vs-agent-swarm-comparison.md +411 -0
- package/thoughts/swarm-researcher/research/2026-02-26-artifacts-localtunnel.md +724 -0
- package/thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md +443 -0
- package/thoughts/taras/brainstorms/2026-03-20-setup-cli-onboarding.md +307 -0
- package/thoughts/taras/plans/2026-02-20-auto-improvement.md +803 -0
- package/thoughts/taras/plans/2026-02-20-env-management.md +538 -0
- package/thoughts/taras/plans/2026-02-20-memory-system.md +882 -0
- package/thoughts/taras/plans/2026-02-20-repos-knowledge.md +806 -0
- package/thoughts/taras/plans/2026-02-20-session-attach.md +647 -0
- package/thoughts/taras/plans/2026-02-20-worker-identity.md +820 -0
- package/thoughts/taras/plans/2026-02-25-feat-new-ui-visual-redesign-plan.md +768 -0
- package/thoughts/taras/plans/2026-03-04-fix-buildSystemPrompt-missing-fields.md +77 -0
- package/thoughts/taras/plans/2026-03-04-new-ui-missing-actions.md +543 -0
- package/thoughts/taras/plans/2026-03-06-one-time-scheduled-tasks.md +373 -0
- package/thoughts/taras/plans/2026-03-08-memory-self-improvement-enhancements.md +512 -0
- package/thoughts/taras/plans/2026-03-08-pi-mono-provider-implementation.md +919 -0
- package/thoughts/taras/plans/2026-03-09-templates-registry.md +723 -0
- package/thoughts/taras/plans/2026-03-10-task-working-directory.md +371 -0
- package/thoughts/taras/plans/2026-03-11-archil-per-agent-write-strategy.md +621 -0
- package/thoughts/taras/plans/2026-03-12-eliminate-inbox-route-to-tasks.md +61 -0
- package/thoughts/taras/plans/2026-03-12-slack-thread-followup-additive.md +488 -0
- package/thoughts/taras/plans/2026-03-13-slack-ai-improvements.md +644 -0
- package/thoughts/taras/plans/2026-03-16-route-wrapper-openapi.md +636 -0
- package/thoughts/taras/plans/2026-03-17-multi-api-config.md +444 -0
- package/thoughts/taras/plans/2026-03-18-agent-fs-integration.md +591 -0
- package/thoughts/taras/plans/2026-03-18-debug-db-explorer.md +446 -0
- package/thoughts/taras/plans/2026-03-18-workflow-redesign.md +987 -0
- package/thoughts/taras/plans/2026-03-19-compound-learnings.md +403 -0
- package/thoughts/taras/plans/2026-03-19-ticket-tracker-linear-integration.md +860 -0
- package/thoughts/taras/plans/2026-03-19-workflow-io-schemas-and-bugs.md +899 -0
- package/thoughts/taras/plans/2026-03-20-setup-cli-onboarding.md +874 -0
- package/thoughts/taras/plans/2026-03-20-workflow-structured-output-validation-workspace.md +723 -0
- package/thoughts/taras/research/2026-02-19-agent-native-swarm-architecture.md +390 -0
- package/thoughts/taras/research/2026-02-19-swarm-gaps-implementation.md +594 -0
- package/thoughts/taras/research/2026-02-25-dashboard-ui-design-best-practices.md +825 -0
- package/thoughts/taras/research/2026-02-26-task-detail-page-redesign.md +393 -0
- package/thoughts/taras/research/2026-03-03-new-ui-missing-actions.md +168 -0
- package/thoughts/taras/research/2026-03-05-pi-mono-provider-research.md +230 -0
- package/thoughts/taras/research/2026-03-06-workflow-engine-design.md +445 -0
- package/thoughts/taras/research/2026-03-08-drive-loop-concept.md +375 -0
- package/thoughts/taras/research/2026-03-08-pi-mono-deep-dive.md +869 -0
- package/thoughts/taras/research/2026-03-09-templates-registry.md +373 -0
- package/thoughts/taras/research/2026-03-10-agent-working-directory.md +223 -0
- package/thoughts/taras/research/2026-03-10-configurable-event-prompts.md +339 -0
- package/thoughts/taras/research/2026-03-11-archil-production-setup.md +181 -0
- package/thoughts/taras/research/2026-03-11-archil-shared-disk-write-strategies.md +437 -0
- package/thoughts/taras/research/2026-03-13-slack-ai-features.md +258 -0
- package/thoughts/taras/research/2026-03-16-openapi-docs-generation.md +335 -0
- package/thoughts/taras/research/2026-03-16-route-wrapper-openapi.md +670 -0
- package/thoughts/taras/research/2026-03-16-slack-thread-followups-e2e.md +54 -0
- package/thoughts/taras/research/2026-03-18-agent-fs-integration.md +558 -0
- package/thoughts/taras/research/2026-03-18-linear-integration-finalization.md +526 -0
- package/thoughts/taras/research/2026-03-18-workflow-redesign.md +797 -0
- package/thoughts/taras/research/2026-03-19-workflow-node-io-schemas-and-bugs.md +563 -0
- package/thoughts/taras/research/2026-03-19-workflow-structured-output-validation-workspace.md +486 -0
- package/thoughts/taras/research/2026-03-20-prompt-template-registry.md +469 -0
- package/tsconfig.json +1 -1
- package/FAQ.md +0 -19
- package/src/tests/get-inbox-message.test.ts +0 -145
- package/src/tools/get-inbox-message.ts +0 -89
- package/src/tools/inbox-delegate.ts +0 -113
- package/ui/CLAUDE.md +0 -49
- package/ui/bun.lock +0 -771
- package/ui/index.html +0 -22
- package/ui/package-lock.json +0 -5290
- package/ui/package.json +0 -33
- package/ui/pnpm-lock.yaml +0 -3341
- package/ui/postcss.config.js +0 -6
- package/ui/src/App.tsx +0 -63
- package/ui/src/components/ActivityFeed.tsx +0 -440
- package/ui/src/components/AgentDetailPanel.tsx +0 -733
- package/ui/src/components/AgentsPanel.tsx +0 -815
- package/ui/src/components/ChatPanel.tsx +0 -1920
- package/ui/src/components/ConfigModal.tsx +0 -253
- package/ui/src/components/Dashboard.tsx +0 -832
- package/ui/src/components/EditAgentProfileModal.tsx +0 -433
- package/ui/src/components/EpicDetailPage.tsx +0 -741
- package/ui/src/components/EpicsPanel.tsx +0 -566
- package/ui/src/components/Header.tsx +0 -160
- package/ui/src/components/JsonViewer.tsx +0 -171
- package/ui/src/components/ScheduledTaskDetailPanel.tsx +0 -517
- package/ui/src/components/ScheduledTasksPanel.tsx +0 -639
- package/ui/src/components/ServicesPanel.tsx +0 -622
- package/ui/src/components/SessionLogPanel.tsx +0 -1219
- package/ui/src/components/StatsBar.tsx +0 -321
- package/ui/src/components/StatusBadge.tsx +0 -168
- package/ui/src/components/TaskDetailPanel.tsx +0 -903
- package/ui/src/components/TasksPanel.tsx +0 -614
- package/ui/src/components/UsageCharts.tsx +0 -216
- package/ui/src/components/UsageTab.tsx +0 -394
- package/ui/src/hooks/queries.ts +0 -353
- package/ui/src/index.css +0 -257
- package/ui/src/lib/api.ts +0 -268
- package/ui/src/lib/config.ts +0 -35
- package/ui/src/lib/contentPreview.ts +0 -208
- package/ui/src/lib/theme.ts +0 -214
- package/ui/src/main.tsx +0 -28
- package/ui/src/vite-env.d.ts +0 -1
- package/ui/tailwind.config.js +0 -37
- package/ui/vite.config.ts +0 -35
- /package/{ui → docs-site}/public/logo.png +0 -0
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@desplega.ai/agent-swarm",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.49.0",
|
|
4
|
+
"description": "Multi-agent orchestration for Claude Code, Codex, Gemini CLI, and other AI coding assistants",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"author": "desplega.
|
|
6
|
+
"author": "desplega.sh <contact@desplega.sh>",
|
|
7
7
|
"maintainers": [
|
|
8
8
|
{
|
|
9
9
|
"name": "Taras",
|
|
10
|
-
"email": "t@desplega.
|
|
10
|
+
"email": "t@desplega.sh"
|
|
11
11
|
}
|
|
12
12
|
],
|
|
13
13
|
"repository": {
|
|
@@ -31,7 +31,9 @@
|
|
|
31
31
|
"name": "agent-swarm"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
|
+
"build:pi-skills": "bun run plugin/build-pi-skills.ts",
|
|
34
35
|
"tsc:check": "bun tsc --noEmit",
|
|
36
|
+
"check:db-boundary": "bash scripts/check-db-boundary.sh",
|
|
35
37
|
"cli": "bun src/cli.tsx",
|
|
36
38
|
"hook": "bun src/hooks/hook.ts",
|
|
37
39
|
"claude": "bun src/cli.tsx claude",
|
|
@@ -41,11 +43,12 @@
|
|
|
41
43
|
"lead": "bun src/cli.tsx lead",
|
|
42
44
|
"lead:yolo": "bun src/cli.tsx lead --yolo",
|
|
43
45
|
"dev": "bun --hot src/stdio.ts",
|
|
44
|
-
"dev:http": "bun --hot src/http.ts",
|
|
46
|
+
"dev:http": "portless api.swarm bun --hot src/http.ts",
|
|
45
47
|
"start": "bun src/stdio.ts",
|
|
46
48
|
"start:http": "bun src/http.ts",
|
|
49
|
+
"start:portless": "portless api.swarm bun src/http.ts",
|
|
47
50
|
"inspector": "bunx @modelcontextprotocol/inspector --transport stdio bun src/stdio.ts",
|
|
48
|
-
"inspector:http": "bunx @modelcontextprotocol/inspector --transport http
|
|
51
|
+
"inspector:http": "bunx @modelcontextprotocol/inspector --transport http https://api.swarm.localhost:1355/mcp",
|
|
49
52
|
"lint": "biome check src",
|
|
50
53
|
"lint:fix": "biome check --write src",
|
|
51
54
|
"format": "biome format --write src",
|
|
@@ -58,7 +61,10 @@
|
|
|
58
61
|
"deploy:update": "bun deploy/update.ts",
|
|
59
62
|
"deploy:uninstall": "bun deploy/uninstall.ts",
|
|
60
63
|
"deploy:docker": "bun deploy/docker-push.ts",
|
|
64
|
+
"e2e:workflows": "bun scripts/e2e-workflow-test.ts",
|
|
65
|
+
"e2e:workflows:docker": "bun scripts/e2e-workflow-test.ts --with-docker",
|
|
61
66
|
"docs:mcp": "bun scripts/generate-mcp-docs.ts",
|
|
67
|
+
"docs:openapi": "bun scripts/generate-openapi.ts",
|
|
62
68
|
"pm2-start": "pm2 start ecosystem.config.cjs",
|
|
63
69
|
"pm2-stop": "pm2 stop ecosystem.config.cjs",
|
|
64
70
|
"pm2-restart": "pm2 restart ecosystem.config.cjs",
|
|
@@ -76,15 +82,33 @@
|
|
|
76
82
|
"bun": ">=1.0.26"
|
|
77
83
|
},
|
|
78
84
|
"dependencies": {
|
|
85
|
+
"@ai-sdk/openai": "^3.0.41",
|
|
86
|
+
"@asteasolutions/zod-to-openapi": "^8.0.0",
|
|
87
|
+
"@desplega.ai/localtunnel": "^2.2.0",
|
|
79
88
|
"@inkjs/ui": "^2.0.0",
|
|
89
|
+
"@linear/sdk": "^77.0.0",
|
|
90
|
+
"@mariozechner/pi-agent-core": "^0.57.1",
|
|
91
|
+
"@mariozechner/pi-ai": "^0.57.1",
|
|
92
|
+
"@mariozechner/pi-coding-agent": "^0.57.1",
|
|
80
93
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
94
|
+
"@openfort/openfort-node": "^0.9.1",
|
|
81
95
|
"@slack/bolt": "^4.6.0",
|
|
82
96
|
"@types/react": "^19.2.7",
|
|
97
|
+
"@x402/core": "^2.5.0",
|
|
98
|
+
"@x402/evm": "^2.5.0",
|
|
99
|
+
"@x402/fetch": "^2.5.0",
|
|
100
|
+
"ai": "^6.0.116",
|
|
83
101
|
"cron-parser": "^5.4.0",
|
|
84
102
|
"date-fns": "^4.1.0",
|
|
103
|
+
"hono": "^4.12.3",
|
|
85
104
|
"ink": "^6.5.1",
|
|
105
|
+
"oauth4webapi": "^3.8.5",
|
|
106
|
+
"openai": "^6.22.0",
|
|
86
107
|
"react": "^19.2.3",
|
|
87
108
|
"react-devtools-core": "^7.0.1",
|
|
88
|
-
"
|
|
109
|
+
"svix": "^1.62.0",
|
|
110
|
+
"viem": "^2.46.3",
|
|
111
|
+
"zod": "^4.2.1",
|
|
112
|
+
"zod-to-json-schema": "^3.25.1"
|
|
89
113
|
}
|
|
90
114
|
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build pi-mono SKILL.md files from claude command sources.
|
|
3
|
+
*
|
|
4
|
+
* Source of truth: plugin/commands/*.md
|
|
5
|
+
* Output: plugin/pi-skills/<name>/SKILL.md
|
|
6
|
+
*
|
|
7
|
+
* Only commands listed in SKILLS_TO_CONVERT are converted.
|
|
8
|
+
* Provider-specific sections use markers:
|
|
9
|
+
* <!-- claude-only -->...<!-- /claude-only --> → stripped for pi-mono
|
|
10
|
+
* <!-- pi-only -->...<!-- /pi-only --> → stripped for claude (kept for pi-mono)
|
|
11
|
+
*
|
|
12
|
+
* Usage: bun run plugin/build-pi-skills.ts
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
16
|
+
import { join } from "node:path";
|
|
17
|
+
|
|
18
|
+
const COMMANDS_DIR = join(import.meta.dir, "commands");
|
|
19
|
+
const PI_SKILLS_DIR = join(import.meta.dir, "pi-skills");
|
|
20
|
+
|
|
21
|
+
/** All commands to convert to pi-mono skills */
|
|
22
|
+
const SKILLS_TO_CONVERT = [
|
|
23
|
+
"work-on-task",
|
|
24
|
+
"start-worker",
|
|
25
|
+
"start-leader",
|
|
26
|
+
"swarm-chat",
|
|
27
|
+
"close-issue",
|
|
28
|
+
"create-pr",
|
|
29
|
+
"implement-issue",
|
|
30
|
+
"investigate-sentry-issue",
|
|
31
|
+
"respond-github",
|
|
32
|
+
"review-offered-task",
|
|
33
|
+
"review-pr",
|
|
34
|
+
"todos",
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
function convertToPiSkill(name: string, content: string): string {
|
|
38
|
+
let result = content;
|
|
39
|
+
|
|
40
|
+
// 1. Strip <!-- claude-only --> sections
|
|
41
|
+
result = result.replace(/<!-- claude-only -->\n?[\s\S]*?<!-- \/claude-only -->\n?/g, "");
|
|
42
|
+
|
|
43
|
+
// 2. Reveal <!-- pi-only --> sections (remove markers, keep content)
|
|
44
|
+
result = result.replace(/<!-- pi-only -->\n?/g, "");
|
|
45
|
+
result = result.replace(/<!-- \/pi-only -->\n?/g, "");
|
|
46
|
+
|
|
47
|
+
// 3. Convert frontmatter: extract description, drop argument-hint, add name
|
|
48
|
+
result = result.replace(
|
|
49
|
+
/^---\n([\s\S]*?)---\n/,
|
|
50
|
+
(_match, frontmatter: string) => {
|
|
51
|
+
const descMatch = frontmatter.match(/description:\s*(.+)/);
|
|
52
|
+
const description = descMatch ? descMatch[1].trim() : name;
|
|
53
|
+
return `---\nname: ${name}\ndescription: ${description}\n---\n`;
|
|
54
|
+
},
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
// 4. Slash command syntax: /command-name → /skill:command-name
|
|
58
|
+
// Match ` /name` or `/name` at word boundary, but not /desplega: or /workspace
|
|
59
|
+
for (const skillName of SKILLS_TO_CONVERT) {
|
|
60
|
+
// In backticks or after whitespace/start-of-line
|
|
61
|
+
result = result.replace(
|
|
62
|
+
new RegExp(`(\`|\\s|^)\\/${skillName}(?=\\s|\`|$)`, "gm"),
|
|
63
|
+
`$1/skill:${skillName}`,
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// 5. /desplega:* commands → generic descriptions
|
|
68
|
+
// Replace the "Available commands" section pattern
|
|
69
|
+
result = result.replace(
|
|
70
|
+
/### Available commands[\s\S]*?(?=\n### [^#]|\n## |$)/,
|
|
71
|
+
`### Research and Planning
|
|
72
|
+
|
|
73
|
+
As you start working on a task, consider whether you need to:
|
|
74
|
+
|
|
75
|
+
- **Research**: For research tasks, gather information from the web, codebase, or documentation before starting implementation.
|
|
76
|
+
- **Create a plan**: For development tasks, create a detailed plan before implementing. Write it to \`/workspace/personal/plans/\`.
|
|
77
|
+
- **Implement a plan**: If you already have a plan, follow it step by step.
|
|
78
|
+
|
|
79
|
+
### Communication
|
|
80
|
+
|
|
81
|
+
- Use \`/skill:swarm-chat\` to communicate with other agents in the swarm if you need help or want to provide updates.
|
|
82
|
+
|
|
83
|
+
#### Decision guidelines
|
|
84
|
+
|
|
85
|
+
When the task is a research task, you should ALWAYS perform thorough research before proceeding.
|
|
86
|
+
|
|
87
|
+
When the task is a development task, you should ALWAYS create a plan first, then implement it.
|
|
88
|
+
|
|
89
|
+
If the task is straightforward with clear instructions, proceed normally without extensive planning.
|
|
90
|
+
|
|
91
|
+
`,
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
// Remove the old "Decision to use commands" subsection if it survived
|
|
95
|
+
result = result.replace(/#### Decision to use commands[\s\S]*?(?=### |## |$)/, "");
|
|
96
|
+
|
|
97
|
+
// Clean up any remaining /desplega: references that weren't in a block
|
|
98
|
+
result = result.replace(
|
|
99
|
+
/- `\/desplega:research`[^\n]*\n/g,
|
|
100
|
+
"- Research - Workers can perform research on the web to gather information needed for the task\n",
|
|
101
|
+
);
|
|
102
|
+
result = result.replace(
|
|
103
|
+
/- `\/desplega:create-plan`[^\n]*\n/g,
|
|
104
|
+
"- Planning - Workers can create a detailed plan for how they will approach and complete the task\n",
|
|
105
|
+
);
|
|
106
|
+
result = result.replace(
|
|
107
|
+
/- `\/desplega:implement-plan`[^\n]*\n/g,
|
|
108
|
+
"- Implementation - Workers can implement a plan step by step\n",
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
// 6. Replace /desplega:* inline references
|
|
112
|
+
result = result.replace(/`\/desplega:research`/g, "research");
|
|
113
|
+
result = result.replace(/`\/desplega:create-plan`/g, "plan creation");
|
|
114
|
+
result = result.replace(/`\/desplega:implement-plan`/g, "plan implementation");
|
|
115
|
+
result = result.replace(/\/desplega:research/g, "research");
|
|
116
|
+
result = result.replace(/\/desplega:create-plan/g, "plan creation");
|
|
117
|
+
result = result.replace(/\/desplega:implement-plan/g, "plan implementation");
|
|
118
|
+
|
|
119
|
+
// 7. /todos references — now converted to /skill:todos by step 4
|
|
120
|
+
// Just clean up backtick formatting around the converted refs
|
|
121
|
+
result = result.replace(/`\/todos`/g, "`/skill:todos`");
|
|
122
|
+
|
|
123
|
+
// 8. Clean up "the `/skill:swarm-chat` command" → "`/skill:swarm-chat`"
|
|
124
|
+
// At this point step 4 already converted /swarm-chat → /skill:swarm-chat
|
|
125
|
+
result = result.replace(
|
|
126
|
+
/Use the (`\/skill:swarm-chat`)/g,
|
|
127
|
+
"Use $1",
|
|
128
|
+
);
|
|
129
|
+
result = result.replace(
|
|
130
|
+
/the (`\/skill:swarm-chat`) command/g,
|
|
131
|
+
"$1",
|
|
132
|
+
);
|
|
133
|
+
result = result.replace(
|
|
134
|
+
/the (`\/skill:swarm-chat`) channel/g,
|
|
135
|
+
"$1 channel",
|
|
136
|
+
);
|
|
137
|
+
result = result.replace(
|
|
138
|
+
/(`\/skill:swarm-chat`) command/g,
|
|
139
|
+
"$1",
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
// 9. Setup message simplification
|
|
143
|
+
result = result.replace(
|
|
144
|
+
/ Please run `bunx @desplega\.ai\/agent-swarm setup` to configure it\./g,
|
|
145
|
+
"",
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
// 10. "the command `/skill:..." → "`/skill:..." and "this command" → "this skill"
|
|
149
|
+
result = result.replace(/the command (`\/skill:[^`]+`)/g, "$1");
|
|
150
|
+
result = result.replace(/call the (`\/skill:[^`]+`)/g, "call $1");
|
|
151
|
+
result = result.replace(/this command is used/gi, "this skill is used");
|
|
152
|
+
result = result.replace(/If this command/gi, "If this skill");
|
|
153
|
+
|
|
154
|
+
// 11. Wording: "command" → "skill" for worker sections and general references
|
|
155
|
+
result = result.replace(
|
|
156
|
+
/#### Worker available commands/g,
|
|
157
|
+
"#### Worker available skills",
|
|
158
|
+
);
|
|
159
|
+
result = result.replace(
|
|
160
|
+
/the following commands to help/g,
|
|
161
|
+
"the following skills to help",
|
|
162
|
+
);
|
|
163
|
+
// "use `/skill:swarm-chat` command" → "use `/skill:swarm-chat`"
|
|
164
|
+
result = result.replace(/(`\/skill:[^`]+`) command/g, "$1");
|
|
165
|
+
// "without using any commands" → "without extensive planning"
|
|
166
|
+
result = result.replace(
|
|
167
|
+
/proceed normally to implement it without using any commands/g,
|
|
168
|
+
"proceed normally without extensive planning",
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
// 13. Soften "available commands" wording
|
|
172
|
+
result = result.replace(
|
|
173
|
+
/Figure out if you need to use any of the available commands to help you with your work \(see below for available commands\)/g,
|
|
174
|
+
"Figure out if you need to perform any research or planning before starting (see below)",
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
// 14. Remove emoji (😈) since pi-mono doesn't use them
|
|
178
|
+
result = result.replace(/\n😈\n/g, "\n");
|
|
179
|
+
|
|
180
|
+
// 14. Fix step numbering — renumber sequential list items starting from 1
|
|
181
|
+
// After removing claude-only sections, step numbers may have gaps
|
|
182
|
+
const lines = result.split("\n");
|
|
183
|
+
let stepCounter = 0;
|
|
184
|
+
let inNumberedList = false;
|
|
185
|
+
for (let i = 0; i < lines.length; i++) {
|
|
186
|
+
const match = lines[i].match(/^(\d+)\. /);
|
|
187
|
+
if (match) {
|
|
188
|
+
if (!inNumberedList) {
|
|
189
|
+
stepCounter = 1;
|
|
190
|
+
inNumberedList = true;
|
|
191
|
+
} else {
|
|
192
|
+
stepCounter++;
|
|
193
|
+
}
|
|
194
|
+
lines[i] = lines[i].replace(/^\d+\. /, `${stepCounter}. `);
|
|
195
|
+
} else if (!/^\s/.test(lines[i]) && lines[i].trim() !== "") {
|
|
196
|
+
inNumberedList = false;
|
|
197
|
+
stepCounter = 0;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
result = lines.join("\n");
|
|
201
|
+
|
|
202
|
+
// 15. Trim trailing whitespace from lines
|
|
203
|
+
result = result
|
|
204
|
+
.split("\n")
|
|
205
|
+
.map((line) => line.trimEnd())
|
|
206
|
+
.join("\n");
|
|
207
|
+
|
|
208
|
+
// 16. Clean up multiple consecutive blank lines
|
|
209
|
+
result = result.replace(/\n{3,}/g, "\n\n");
|
|
210
|
+
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Main
|
|
215
|
+
const files = readdirSync(COMMANDS_DIR).filter((f) => f.endsWith(".md"));
|
|
216
|
+
let converted = 0;
|
|
217
|
+
|
|
218
|
+
for (const file of files) {
|
|
219
|
+
const name = file.replace(".md", "");
|
|
220
|
+
if (!SKILLS_TO_CONVERT.includes(name)) continue;
|
|
221
|
+
|
|
222
|
+
const content = readFileSync(join(COMMANDS_DIR, file), "utf-8");
|
|
223
|
+
const piContent = convertToPiSkill(name, content);
|
|
224
|
+
|
|
225
|
+
const outDir = join(PI_SKILLS_DIR, name);
|
|
226
|
+
mkdirSync(outDir, { recursive: true });
|
|
227
|
+
writeFileSync(join(outDir, "SKILL.md"), piContent);
|
|
228
|
+
|
|
229
|
+
converted++;
|
|
230
|
+
console.log(`✓ ${name}`);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
console.log(`\nConverted ${converted} skills to pi-mono format.`);
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Close a GitHub issue with a summary comment
|
|
2
|
+
description: Close a GitHub or GitLab issue with a summary comment
|
|
3
3
|
argument-hint: <issue-number-or-url>
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Close Issue
|
|
7
7
|
|
|
8
|
-
Close a GitHub issue with an appropriate closing comment summarizing the resolution.
|
|
8
|
+
Close a GitHub or GitLab issue with an appropriate closing comment summarizing the resolution.
|
|
9
|
+
|
|
10
|
+
**Provider detection:** Check the URL or remote to determine the VCS provider:
|
|
11
|
+
- If GitHub → use `gh issue close` / `gh issue comment`
|
|
12
|
+
- If GitLab → use `glab issue close` / `glab issue note`
|
|
9
13
|
|
|
10
14
|
## Arguments
|
|
11
15
|
|
|
12
|
-
- `issue-number-or-url`: Either an issue number (e.g., `123`) or a full
|
|
16
|
+
- `issue-number-or-url`: Either an issue number (e.g., `123`) or a full issue URL (e.g., `https://github.com/owner/repo/issues/123` or `https://gitlab.com/group/project/-/issues/123`)
|
|
13
17
|
|
|
14
18
|
## Workflow
|
|
15
19
|
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Create a GitHub
|
|
2
|
+
description: Create a pull request (GitHub) or merge request (GitLab) from the current branch
|
|
3
3
|
argument-hint: [base-branch]
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Create Pull Request
|
|
6
|
+
# Create Pull Request / Merge Request
|
|
7
7
|
|
|
8
|
-
Create a GitHub
|
|
8
|
+
Create a pull request (GitHub) or merge request (GitLab) from the current branch with an auto-generated title and description.
|
|
9
|
+
|
|
10
|
+
**Provider detection:** Check the remote URL to determine the VCS provider:
|
|
11
|
+
- If the remote contains `github.com` → use `gh` CLI
|
|
12
|
+
- If the remote contains `gitlab.com` or `gitlab.` → use `glab` CLI
|
|
9
13
|
|
|
10
14
|
## Arguments
|
|
11
15
|
|
|
@@ -62,8 +66,9 @@ Based on the commits and changes:
|
|
|
62
66
|
- Any testing done
|
|
63
67
|
- Related issues (if applicable)
|
|
64
68
|
|
|
65
|
-
### 6. Create the PR
|
|
69
|
+
### 6. Create the PR/MR
|
|
66
70
|
|
|
71
|
+
**For GitHub:**
|
|
67
72
|
```bash
|
|
68
73
|
gh pr create \
|
|
69
74
|
--title "Your generated title" \
|
|
@@ -71,19 +76,20 @@ gh pr create \
|
|
|
71
76
|
--base main
|
|
72
77
|
```
|
|
73
78
|
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
**For GitLab:**
|
|
76
80
|
```bash
|
|
77
|
-
|
|
81
|
+
glab mr create \
|
|
82
|
+
--title "Your generated title" \
|
|
83
|
+
--description "Your generated description" \
|
|
84
|
+
--target-branch main
|
|
78
85
|
```
|
|
79
86
|
|
|
80
|
-
### 7. Report the PR URL
|
|
87
|
+
### 7. Report the PR/MR URL
|
|
81
88
|
|
|
82
|
-
After creation, provide the
|
|
89
|
+
After creation, provide the URL to the user:
|
|
83
90
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
```
|
|
91
|
+
**GitHub:** `gh pr view --json url --jq '.url'`
|
|
92
|
+
**GitLab:** `glab mr view --web`
|
|
87
93
|
|
|
88
94
|
## Tips
|
|
89
95
|
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Implement a GitHub issue and create a
|
|
2
|
+
description: Implement a GitHub issue or GitLab issue and create a PR/MR
|
|
3
3
|
argument-hint: <issue-number-or-url>
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Implement Issue
|
|
7
7
|
|
|
8
|
-
Read a GitHub issue, implement the requested changes, and create a pull request.
|
|
8
|
+
Read a GitHub or GitLab issue, implement the requested changes, and create a pull request / merge request.
|
|
9
|
+
|
|
10
|
+
**Provider detection:** Check the URL or remote to determine the VCS provider:
|
|
11
|
+
- If GitHub → use `gh issue view` / `gh pr create`
|
|
12
|
+
- If GitLab → use `glab issue view` / `glab mr create`
|
|
9
13
|
|
|
10
14
|
## Arguments
|
|
11
15
|
|
|
12
|
-
- `issue-number-or-url`: Either an issue number (e.g., `123`) or a full
|
|
16
|
+
- `issue-number-or-url`: Either an issue number (e.g., `123`) or a full URL (e.g., `https://github.com/owner/repo/issues/123` or `https://gitlab.com/group/project/-/issues/123`)
|
|
13
17
|
|
|
14
18
|
## Workflow
|
|
15
19
|
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Respond to a GitHub issue or
|
|
2
|
+
description: Respond to a GitHub issue/PR or GitLab issue/MR
|
|
3
3
|
argument-hint: <issue-or-pr-number-or-url>
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Respond to
|
|
6
|
+
# Respond to VCS Issue/PR/MR
|
|
7
7
|
|
|
8
|
-
Post a response to a GitHub issue or
|
|
8
|
+
Post a response to a GitHub issue/PR or GitLab issue/MR.
|
|
9
|
+
|
|
10
|
+
**Provider detection:** Check the URL or remote to determine the VCS provider:
|
|
11
|
+
- If GitHub → use `gh issue comment` / `gh pr comment`
|
|
12
|
+
- If GitLab → use `glab issue note` / `glab mr note`
|
|
9
13
|
|
|
10
14
|
## Arguments
|
|
11
15
|
|
|
12
|
-
- `issue-or-pr-number-or-url`: Either a number (e.g., `123`) or a full
|
|
16
|
+
- `issue-or-pr-number-or-url`: Either a number (e.g., `123`) or a full URL (e.g., `https://github.com/owner/repo/issues/123` or `https://gitlab.com/group/project/-/issues/123`)
|
|
13
17
|
|
|
14
18
|
## Workflow
|
|
15
19
|
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Review a GitHub
|
|
3
|
-
argument-hint: <pr-number-or-url>
|
|
2
|
+
description: Review a pull request (GitHub) or merge request (GitLab) and provide detailed feedback
|
|
3
|
+
argument-hint: <pr-or-mr-number-or-url>
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Review Pull Request
|
|
6
|
+
# Review Pull Request / Merge Request
|
|
7
7
|
|
|
8
|
-
Review a GitHub
|
|
8
|
+
Review a pull request (GitHub) or merge request (GitLab) by analyzing the changes and providing structured feedback.
|
|
9
|
+
|
|
10
|
+
**Provider detection:** Check the remote URL or the provided URL to determine the VCS provider:
|
|
11
|
+
- If GitHub → use `gh pr` commands
|
|
12
|
+
- If GitLab → use `glab mr` commands
|
|
9
13
|
|
|
10
14
|
## Arguments
|
|
11
15
|
|
|
@@ -51,21 +55,51 @@ gh pr view <pr-number> --json title,body,author,headRefName,baseRefName,addition
|
|
|
51
55
|
gh pr diff <pr-number>
|
|
52
56
|
```
|
|
53
57
|
|
|
54
|
-
### 6.
|
|
58
|
+
### 6. Check CI Status (MANDATORY)
|
|
59
|
+
|
|
60
|
+
Before analyzing the code, check if CI checks are passing:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# GitHub
|
|
64
|
+
gh pr checks <pr-number>
|
|
65
|
+
|
|
66
|
+
# GitLab
|
|
67
|
+
glab mr view <mr-number> --json pipelines
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**If CI checks are failing, this is an automatic REQUEST_CHANGES.** Do not approve a PR with failing CI. Include the failing check names and any relevant error details in your review.
|
|
71
|
+
|
|
72
|
+
### 7. Verify Tests Are Included (MANDATORY)
|
|
73
|
+
|
|
74
|
+
Check that the PR includes test changes:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Look for test files in the diff
|
|
78
|
+
gh pr diff <pr-number> | grep -E '^\+\+\+ b/.*\.(test|spec)\.' || echo "NO TEST FILES CHANGED"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**If the PR modifies code but does not add or update tests, this is an automatic REQUEST_CHANGES.** Every code change must include corresponding tests. The only exceptions are:
|
|
82
|
+
- Pure documentation changes (README, comments only)
|
|
83
|
+
- Configuration-only changes (CI config, linter config, env files)
|
|
84
|
+
- Dependency version bumps with no code changes
|
|
85
|
+
|
|
86
|
+
When requesting changes for missing tests, be specific about what tests are needed.
|
|
87
|
+
|
|
88
|
+
### 8. Analyze the Changes
|
|
55
89
|
|
|
56
90
|
Review the diff for:
|
|
57
91
|
- **Security issues**: SQL injection, XSS, command injection, secrets in code
|
|
58
92
|
- **Logic errors**: Off-by-one errors, null handling, edge cases
|
|
59
93
|
- **Performance concerns**: N+1 queries, unnecessary loops, memory leaks
|
|
60
94
|
- **Code quality**: Naming, complexity, duplication, missing error handling
|
|
61
|
-
- **Test coverage**: Are
|
|
95
|
+
- **Test coverage**: Are the included tests sufficient? Do they cover edge cases?
|
|
62
96
|
|
|
63
97
|
You can also:
|
|
64
98
|
- Run the test suite locally to verify tests pass
|
|
65
99
|
- Check for TypeScript errors with `bun tsc --noEmit` or equivalent
|
|
66
100
|
- Review the actual files in context, not just the diff
|
|
67
101
|
|
|
68
|
-
###
|
|
102
|
+
### 9. Provide Structured Feedback
|
|
69
103
|
|
|
70
104
|
Format your review as:
|
|
71
105
|
|
|
@@ -92,7 +126,7 @@ Format your review as:
|
|
|
92
126
|
<Overall recommendation>
|
|
93
127
|
```
|
|
94
128
|
|
|
95
|
-
###
|
|
129
|
+
### 10. Optionally Post the Review
|
|
96
130
|
|
|
97
131
|
If the user wants to post the review to GitHub:
|
|
98
132
|
|
|
@@ -104,7 +138,7 @@ gh pr review <pr-number> --request-changes --body "Your review message"
|
|
|
104
138
|
gh pr review <pr-number> --comment --body "Your review message"
|
|
105
139
|
```
|
|
106
140
|
|
|
107
|
-
###
|
|
141
|
+
### 11. Post Inline Comments on Specific Lines
|
|
108
142
|
|
|
109
143
|
For more detailed feedback, you can post inline comments directly on specific lines of code using the GitHub API:
|
|
110
144
|
|
|
@@ -162,7 +196,7 @@ gh api repos/owner/repo/pulls/123/comments \
|
|
|
162
196
|
-f body="⚠️ SQL injection risk: Use parameterized queries instead of string interpolation."
|
|
163
197
|
```
|
|
164
198
|
|
|
165
|
-
###
|
|
199
|
+
### 12. Re-reviewing and Resolving Comments
|
|
166
200
|
|
|
167
201
|
When the PR author makes changes in response to your review:
|
|
168
202
|
|
|
@@ -9,9 +9,7 @@ description: Start the Agent Swarm Leader
|
|
|
9
9
|
If the `agent-swarm` MCP server is not configured or disabled, return immediately with the following message:
|
|
10
10
|
|
|
11
11
|
```
|
|
12
|
-
⚠️ The Agent Swarm MCP server is not configured or disabled. Please
|
|
13
|
-
|
|
14
|
-
Are you dumb or something? Go ask your admin to set it up properly. GTFO.
|
|
12
|
+
⚠️ The Agent Swarm MCP server is not configured or disabled. Please run `bunx @desplega.ai/agent-swarm setup` to configure it.
|
|
15
13
|
```
|
|
16
14
|
|
|
17
15
|
## Initial Setup
|
|
@@ -9,9 +9,7 @@ description: Start an Agent Swarm Worker
|
|
|
9
9
|
If the `agent-swarm` MCP server is not configured or disabled, return immediately with the following message:
|
|
10
10
|
|
|
11
11
|
```
|
|
12
|
-
⚠️ The Agent Swarm MCP server is not configured or disabled. Please
|
|
13
|
-
|
|
14
|
-
I can not serve you, my lord, if the MCP server is not properly configured. Go ask your admin to set it up properly. GTFO.
|
|
12
|
+
⚠️ The Agent Swarm MCP server is not configured or disabled. Please run `bunx @desplega.ai/agent-swarm setup` to configure it.
|
|
15
13
|
```
|
|
16
14
|
|
|
17
15
|
## Agent Swarm Worker Setup
|
|
@@ -9,11 +9,19 @@ If no `taskId` is provided, you should call the `poll-task` tool to get a new ta
|
|
|
9
9
|
|
|
10
10
|
## Workflow
|
|
11
11
|
|
|
12
|
-
Once you get a task assigned, you need to
|
|
12
|
+
Once you get a task assigned, you need to immediately start working on it. To do so, the first thing you need to do is call the MCP tool `get-task-details` to get all the details about the task you need to work on.
|
|
13
13
|
|
|
14
14
|
Once you have the task details, you should:
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
<!-- claude-only -->
|
|
17
|
+
1. **Recall relevant memories (REQUIRED):** Before starting any work, search your memory for relevant context:
|
|
18
|
+
- Use `memory-search` with the task description as query
|
|
19
|
+
- If the task has an epicId, also search with the epic name/goal
|
|
20
|
+
- Review any returned memories — they may contain solutions, patterns, or warnings from previous tasks
|
|
21
|
+
- Use `memory-get` on any highly relevant results to get full details
|
|
22
|
+
- This step is NOT optional. Past learnings compound your effectiveness.
|
|
23
|
+
<!-- /claude-only -->
|
|
24
|
+
2. Figure out if you need to use any of the available commands to help you with your work (see below for available commands)
|
|
17
25
|
2. Use the `/todos` command to add a new todo item indicating you are starting to work on the task (e.g. "Work on task XXX: <short description>"). This will help on restarts, as it will be easier to remember what you were doing.
|
|
18
26
|
3. Call `store-progress` tool to mark the task as "in-progress" with a progress set to something like "Starting work on the task XXX, blah blah". Additionally use `/swarm-chat` command to notify the swarm, human and lead when applicable. Do not be too verbose, nor spammy.
|
|
19
27
|
4. Start working on the task, providing updates as needed by calling `store-progress` tool, use the `progress` field to indicate what you are doing.
|
|
@@ -50,4 +58,15 @@ Once you are done, or in a real dead-end, you should call `store-progress` tool
|
|
|
50
58
|
|
|
51
59
|
If you used the `/todos` command to add a todo item when starting the task, make sure to mark it as completed or remove it as needed.
|
|
52
60
|
|
|
53
|
-
Once you are done (either ok or not), finish the session by just replying "DONE".
|
|
61
|
+
Once you are done (either ok or not), perform the Post-Task Reflection below, then finish the session by just replying "DONE".
|
|
62
|
+
|
|
63
|
+
### Post-Task Reflection (REQUIRED)
|
|
64
|
+
|
|
65
|
+
After calling `store-progress` to complete or fail a task, do the following before finishing:
|
|
66
|
+
|
|
67
|
+
1. **Transferable learning?** If you learned something reusable (a pattern, a gotcha, a fix), write it to `/workspace/personal/memory/<descriptive-name>.md`
|
|
68
|
+
2. **Swarm-relevant?** If the learning applies to all agents (not just you), write it to `/workspace/shared/memory/<your-id>/<descriptive-name>.md` so all agents can find it via `memory-search`
|
|
69
|
+
3. **Identity update?** If you discovered a new area of expertise or working style preference, update your IDENTITY.md
|
|
70
|
+
4. **Tools update?** If you found a new service, API, or tool, update your TOOLS.md
|
|
71
|
+
|
|
72
|
+
Skip this section ONLY if the task was trivially simple (single file edit, no debugging, no new knowledge gained).
|