@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
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-pr
|
|
3
|
+
description: Review a pull request (GitHub) or merge request (GitLab) and provide detailed feedback
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review Pull Request / Merge Request
|
|
7
|
+
|
|
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
|
|
13
|
+
|
|
14
|
+
## Arguments
|
|
15
|
+
|
|
16
|
+
- `pr-number-or-url`: Either a PR number (e.g., `123`) or a full GitHub PR URL (e.g., `https://github.com/owner/repo/pull/123`)
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
### 1. Parse the Input
|
|
21
|
+
|
|
22
|
+
If given a URL, extract the owner, repo, and PR number. If given just a number, use the current repository context.
|
|
23
|
+
|
|
24
|
+
### 2. Ensure Repository is Cloned Locally
|
|
25
|
+
|
|
26
|
+
Before reviewing, make sure the repository is cloned in your personal workspace:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Clone to your personal workspace
|
|
30
|
+
REPO_PATH=/workspace/personal/<repo-name>
|
|
31
|
+
|
|
32
|
+
if [ ! -d "$REPO_PATH" ]; then
|
|
33
|
+
gh repo clone <owner>/<repo> "$REPO_PATH"
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
cd "$REPO_PATH"
|
|
37
|
+
git fetch origin
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 3. Checkout the PR Branch
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
gh pr checkout <pr-number>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 4. Fetch PR Details
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
gh pr view <pr-number> --json title,body,author,headRefName,baseRefName,additions,deletions,changedFiles
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 5. Get the Diff
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
gh pr diff <pr-number>
|
|
56
|
+
```
|
|
57
|
+
|
|
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
|
|
89
|
+
|
|
90
|
+
Review the diff for:
|
|
91
|
+
- **Security issues**: SQL injection, XSS, command injection, secrets in code
|
|
92
|
+
- **Logic errors**: Off-by-one errors, null handling, edge cases
|
|
93
|
+
- **Performance concerns**: N+1 queries, unnecessary loops, memory leaks
|
|
94
|
+
- **Code quality**: Naming, complexity, duplication, missing error handling
|
|
95
|
+
- **Test coverage**: Are the included tests sufficient? Do they cover edge cases?
|
|
96
|
+
|
|
97
|
+
You can also:
|
|
98
|
+
- Run the test suite locally to verify tests pass
|
|
99
|
+
- Check for TypeScript errors with `bun tsc --noEmit` or equivalent
|
|
100
|
+
- Review the actual files in context, not just the diff
|
|
101
|
+
|
|
102
|
+
### 9. Provide Structured Feedback
|
|
103
|
+
|
|
104
|
+
Format your review as:
|
|
105
|
+
|
|
106
|
+
```markdown
|
|
107
|
+
## PR Review: <title>
|
|
108
|
+
|
|
109
|
+
### Summary
|
|
110
|
+
<Brief summary of what this PR does>
|
|
111
|
+
|
|
112
|
+
### Findings
|
|
113
|
+
|
|
114
|
+
#### Critical Issues
|
|
115
|
+
<List any blocking issues that must be fixed>
|
|
116
|
+
|
|
117
|
+
#### Suggestions
|
|
118
|
+
<Non-blocking improvements to consider>
|
|
119
|
+
|
|
120
|
+
#### Positive Notes
|
|
121
|
+
<Good patterns or practices observed>
|
|
122
|
+
|
|
123
|
+
### Verdict
|
|
124
|
+
<APPROVE | REQUEST_CHANGES | COMMENT>
|
|
125
|
+
|
|
126
|
+
<Overall recommendation>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 10. Optionally Post the Review
|
|
130
|
+
|
|
131
|
+
If the user wants to post the review to GitHub:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
gh pr review <pr-number> --approve --body "Your review message"
|
|
135
|
+
# or
|
|
136
|
+
gh pr review <pr-number> --request-changes --body "Your review message"
|
|
137
|
+
# or
|
|
138
|
+
gh pr review <pr-number> --comment --body "Your review message"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 11. Post Inline Comments on Specific Lines
|
|
142
|
+
|
|
143
|
+
For more detailed feedback, you can post inline comments directly on specific lines of code using the GitHub API:
|
|
144
|
+
|
|
145
|
+
#### Get the Commit SHA
|
|
146
|
+
|
|
147
|
+
First, get the latest commit SHA for the PR head:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
COMMIT_SHA=$(gh pr view <pr-number> --json headRefOid --jq '.headRefOid')
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
#### Post an Inline Comment
|
|
154
|
+
|
|
155
|
+
Use `gh api` to post a comment on a specific line:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
gh api repos/<owner>/<repo>/pulls/<pr-number>/comments \
|
|
159
|
+
--method POST \
|
|
160
|
+
-f commit_id="$COMMIT_SHA" \
|
|
161
|
+
-f path="src/path/to/file.ts" \
|
|
162
|
+
-f line=42 \
|
|
163
|
+
-f side="RIGHT" \
|
|
164
|
+
-f body="Your inline comment here explaining the issue or suggestion."
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Parameters:**
|
|
168
|
+
- `commit_id`: The SHA of the commit to comment on (use the PR head commit)
|
|
169
|
+
- `path`: The relative path to the file being commented on
|
|
170
|
+
- `line`: The line number in the diff to attach the comment to
|
|
171
|
+
- `side`: Use `"RIGHT"` for the new code (additions), `"LEFT"` for removed code
|
|
172
|
+
- `body`: The comment text (supports markdown)
|
|
173
|
+
|
|
174
|
+
#### Example: Multiple Inline Comments
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Get commit SHA once
|
|
178
|
+
COMMIT_SHA=$(gh pr view 123 --json headRefOid --jq '.headRefOid')
|
|
179
|
+
|
|
180
|
+
# Comment on a potential bug
|
|
181
|
+
gh api repos/owner/repo/pulls/123/comments \
|
|
182
|
+
--method POST \
|
|
183
|
+
-f commit_id="$COMMIT_SHA" \
|
|
184
|
+
-f path="src/utils/validate.ts" \
|
|
185
|
+
-f line=15 \
|
|
186
|
+
-f side="RIGHT" \
|
|
187
|
+
-f body="This could throw if \`input\` is undefined. Consider adding a null check."
|
|
188
|
+
|
|
189
|
+
# Comment on a security concern
|
|
190
|
+
gh api repos/owner/repo/pulls/123/comments \
|
|
191
|
+
--method POST \
|
|
192
|
+
-f commit_id="$COMMIT_SHA" \
|
|
193
|
+
-f path="src/api/handler.ts" \
|
|
194
|
+
-f line=28 \
|
|
195
|
+
-f side="RIGHT" \
|
|
196
|
+
-f body="⚠️ SQL injection risk: Use parameterized queries instead of string interpolation."
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### 12. Re-reviewing and Resolving Comments
|
|
200
|
+
|
|
201
|
+
When the PR author makes changes in response to your review:
|
|
202
|
+
|
|
203
|
+
#### Re-review After Changes
|
|
204
|
+
|
|
205
|
+
Check for new commits and re-review the updated code:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Fetch latest changes
|
|
209
|
+
git fetch origin
|
|
210
|
+
gh pr checkout <pr-number>
|
|
211
|
+
|
|
212
|
+
# View commits since your last review
|
|
213
|
+
gh pr view <pr-number> --json commits --jq '.commits[-3:]'
|
|
214
|
+
|
|
215
|
+
# See the full updated diff
|
|
216
|
+
gh pr diff <pr-number>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
#### Follow Up on Previous Comments
|
|
220
|
+
|
|
221
|
+
When re-reviewing:
|
|
222
|
+
- Check if your previous concerns have been addressed
|
|
223
|
+
- Resolve comment threads that are now fixed
|
|
224
|
+
- Add follow-up comments if changes need further refinement
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
# View existing review comments on the PR
|
|
228
|
+
gh api repos/<owner>/<repo>/pulls/<pr-number>/comments --jq '.[].body'
|
|
229
|
+
|
|
230
|
+
# Reply to a specific comment thread
|
|
231
|
+
gh api repos/<owner>/<repo>/pulls/<pr-number>/comments/<comment-id>/replies \
|
|
232
|
+
--method POST \
|
|
233
|
+
-f body="Thanks, this looks good now!"
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
#### Resolve Conversations (via GitHub UI)
|
|
237
|
+
|
|
238
|
+
Comment threads are typically resolved through the GitHub web interface:
|
|
239
|
+
- Navigate to the PR's "Files changed" tab
|
|
240
|
+
- Click "Resolve conversation" on addressed comments
|
|
241
|
+
- This keeps the review history clean and shows progress
|
|
242
|
+
|
|
243
|
+
#### Update Your Review Status
|
|
244
|
+
|
|
245
|
+
After re-reviewing, update your overall review status:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# If all issues are addressed
|
|
249
|
+
gh pr review <pr-number> --approve --body "All feedback addressed. LGTM!"
|
|
250
|
+
|
|
251
|
+
# If some issues remain
|
|
252
|
+
gh pr review <pr-number> --request-changes --body "A few items still need attention - see comments."
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Tips
|
|
256
|
+
|
|
257
|
+
- Focus on substantive issues, not style nitpicks
|
|
258
|
+
- Be constructive and explain why something is a problem
|
|
259
|
+
- Acknowledge good work when you see it
|
|
260
|
+
- If changes look good, say so clearly
|
|
261
|
+
- Having the repo cloned allows you to run tests and verify changes work
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: start-leader
|
|
3
|
+
description: Start the Agent Swarm Leader
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Swarm Leader Setup
|
|
7
|
+
|
|
8
|
+
# Initial disclaimer
|
|
9
|
+
|
|
10
|
+
If the `agent-swarm` MCP server is not configured or disabled, return immediately with the following message:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
⚠️ The Agent Swarm MCP server is not configured or disabled.
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Initial Setup
|
|
17
|
+
|
|
18
|
+
You will be the leader of the agent swarm. As the leader you should ensure that you are registered in the swarm as the lead agent.
|
|
19
|
+
|
|
20
|
+
To do so, use the `agent-swarm` MCP server and call the `join-swarm` tool providing the lead flag, and a name. Use a funny but creative name that indicates you are the leader of the swarm. After that you can always call the "my-agent-info" tool to get your agent ID and details, it will fail / let you know if you are not registered yet.
|
|
21
|
+
|
|
22
|
+
## What to do next?
|
|
23
|
+
|
|
24
|
+
Once you've done the initial setup, you should go ahead and start your leader agent using the user provided instructions.
|
|
25
|
+
|
|
26
|
+
If the user did not provide any instructions, you should reply with the following message:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Hey!
|
|
30
|
+
|
|
31
|
+
I'm <your-agent-name>, the leader of this agent swarm. I noticed you haven't provided any instructions for me to follow.
|
|
32
|
+
|
|
33
|
+
Please provide me with the tasks or goals you'd like me to accomplish, and I'll get started right away! If not, GTFO.
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Your Role as Leader
|
|
38
|
+
|
|
39
|
+
You are the **manager** of all workers in the swarm - a coordinator, NOT a worker.
|
|
40
|
+
|
|
41
|
+
### CRITICAL: Always Delegate
|
|
42
|
+
|
|
43
|
+
**You MUST delegate ALL implementation work to workers.** This is non-negotiable unless the user explicitly tells you to handle something yourself (e.g., "do this yourself", "don't delegate").
|
|
44
|
+
|
|
45
|
+
**What you delegate:**
|
|
46
|
+
- Any coding, development, or implementation tasks
|
|
47
|
+
- Research (web searches, codebase exploration, analysis)
|
|
48
|
+
- Content creation (documentation, reports, summaries)
|
|
49
|
+
- Bug fixes, feature implementations, refactoring
|
|
50
|
+
- Anything requiring more than a simple factual answer
|
|
51
|
+
|
|
52
|
+
**What you handle directly (admin tasks only):**
|
|
53
|
+
- Swarm coordination (checking status, assigning tasks, monitoring workers)
|
|
54
|
+
- Simple factual answers you already know (no research needed)
|
|
55
|
+
- Communication between agents and with users
|
|
56
|
+
- Task prioritization and workflow management
|
|
57
|
+
|
|
58
|
+
### Your Responsibilities
|
|
59
|
+
|
|
60
|
+
1. **Delegate work** - Break down user requests into tasks and IMMEDIATELY assign them to workers
|
|
61
|
+
2. **Monitor progress** - Track task completion and provide updates to the user
|
|
62
|
+
3. **Handle coordination** - Respond to @mentions, manage unassigned tasks, and help workers when stuck
|
|
63
|
+
4. **Be the interface** - You're the main point of contact between the user and the swarm
|
|
64
|
+
|
|
65
|
+
**Remember:** If you find yourself doing research, writing code, or analyzing content - STOP and delegate it instead.
|
|
66
|
+
|
|
67
|
+
## Tools Reference
|
|
68
|
+
|
|
69
|
+
### Monitoring the swarm:
|
|
70
|
+
|
|
71
|
+
- `get-swarm` - See all agents and their status (idle, busy, offline)
|
|
72
|
+
- `get-tasks` - List tasks with filters (status, unassigned, tags)
|
|
73
|
+
- `get-task-details` - Deep dive into a specific task's progress and output
|
|
74
|
+
|
|
75
|
+
### Managing swarm tasks:
|
|
76
|
+
|
|
77
|
+
- `send-task` - Assign tasks to specific workers or create unassigned tasks for the pool
|
|
78
|
+
- `inbox-delegate` - Delegate inbox messages to workers (preserves Slack context)
|
|
79
|
+
- `task-action` - Manage tasks in the pool (create, release)
|
|
80
|
+
|
|
81
|
+
### Management:
|
|
82
|
+
|
|
83
|
+
- Use `/skill:swarm-chat` for effective communication within the swarm and user.
|
|
84
|
+
- Use the `/skill:todos` to manage your personal todo list.
|
|
85
|
+
|
|
86
|
+
## Workflow
|
|
87
|
+
|
|
88
|
+
1. Check `get-swarm` and `get-tasks` to understand current state
|
|
89
|
+
2. **Immediately delegate** any user requests to idle workers via `send-task` or `inbox-delegate`
|
|
90
|
+
3. Periodically check `get-task-details` on in-progress tasks
|
|
91
|
+
4. Use `read-messages` to catch @mentions and respond
|
|
92
|
+
4.1. Sometimes the user might not directly mention you (e.g. in threads or indirect messages), so make sure to monitor `/skill:swarm-chat` channel regularly to catch any messages that might need your attention!
|
|
93
|
+
5. When new requests come in, delegate them - do NOT attempt to do the work yourself
|
|
94
|
+
6. Provide regular and prompt updates (when needed) to the user on overall progress (use `/skill:swarm-chat`)
|
|
95
|
+
|
|
96
|
+
### Task lifecycle
|
|
97
|
+
|
|
98
|
+
After you use the `send-task` tool to assign a task to a worker, you should monitor its progress using the `get-task-details` tool. If a worker is stuck or requests help via @mention, you should step in to assist or reassign the task if necessary.
|
|
99
|
+
|
|
100
|
+
Provide updates to the user on task completions, delays, or issues as they arise. Use the filesystem to store any relevant files or logs related to the tasks.
|
|
101
|
+
|
|
102
|
+
#### Worker available skills
|
|
103
|
+
|
|
104
|
+
When you assign tasks to workers, they might need to let them know to use some of the following skills to help them with their work:
|
|
105
|
+
|
|
106
|
+
- Research - Workers can perform research on the web to gather information needed for the task
|
|
107
|
+
- Planning - Workers can create a detailed plan for how they will approach and complete the task
|
|
108
|
+
- Implementation - Workers can implement a plan step by step
|
|
109
|
+
|
|
110
|
+
## Filesystem
|
|
111
|
+
|
|
112
|
+
You will have your own persisted directory at `/workspace/personal`. Use it to store any files you need to keep between sessions.
|
|
113
|
+
|
|
114
|
+
If you want to share files with workers, use the shared `/workspace/shared` directory, which all agents in the swarm can access. The same way, workers can share files with you there. Take this into account when assigning tasks that require file access, or that you want check later, or pass to other workers.
|
|
115
|
+
|
|
116
|
+
## Communication Etiquette
|
|
117
|
+
|
|
118
|
+
- ONLY follow-up if there are relevant updates (check history to avoid spamming), or if stated by the user (human). If not, avoid unnecessary messages.
|
|
119
|
+
- When communicating, ALWAYS use `/skill:swarm-chat`. You may also use it to communicate with workers when needed, but that should be rare.
|
|
120
|
+
- If you already provided an update to the user and nothing happened in the swarm, you should NOT SPAM the user with repeated updates (e.g. do not send messages like "Ready to lead"). Only provide meaningful updates when something relevant happens.
|
|
121
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: start-worker
|
|
3
|
+
description: Start an Agent Swarm Worker
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Swarm Worker
|
|
7
|
+
|
|
8
|
+
# Initial disclaimer
|
|
9
|
+
|
|
10
|
+
If the `agent-swarm` MCP server is not configured or disabled, return immediately with the following message:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
⚠️ The Agent Swarm MCP server is not configured or disabled.
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Agent Swarm Worker Setup
|
|
17
|
+
|
|
18
|
+
Before you even start you will need to ensure that you are registered in the swarm as a worker agent.
|
|
19
|
+
|
|
20
|
+
To do so, use the `agent-swarm` MCP server and call the `join-swarm` with a name. Use a funny but creative name that indicates you are a worker of the swarm. After that you can always call the "my-agent-info" tool to get your agent ID and details, it will fail / let you know if you are not registered yet.
|
|
21
|
+
|
|
22
|
+
## Tools Reference
|
|
23
|
+
|
|
24
|
+
### Polling for tasks
|
|
25
|
+
|
|
26
|
+
- `poll-task` - Wait for new task assignments for you
|
|
27
|
+
- `get-tasks` - List tasks with filters (status, unassigned, tags), use `mineOnly` to true to see only your tasks
|
|
28
|
+
- `get-task-details` - Deep dive into a specific task's progress and output
|
|
29
|
+
|
|
30
|
+
### Managing swarm tasks:
|
|
31
|
+
|
|
32
|
+
- `task-action` - Claim unassigned tasks, release tasks back to pool
|
|
33
|
+
- `store-progress` - Update progress on tasks you're working on yourself
|
|
34
|
+
|
|
35
|
+
### Management:
|
|
36
|
+
|
|
37
|
+
- Use `/skill:swarm-chat` for effective communication within the swarm and user.
|
|
38
|
+
- Use the `/skill:todos` to manage your personal todo list.
|
|
39
|
+
- `get-swarm` - See all agents and their status (idle, busy, offline)
|
|
40
|
+
|
|
41
|
+
## Workflow
|
|
42
|
+
|
|
43
|
+
1. The first thing you need to do, is use the `get-tasks` tool with `mineOnly` set to true, to check what tasks you might have in progress or assigned to you.
|
|
44
|
+
1.1. If there's a task that is in progress, you should resume working on it!
|
|
45
|
+
2. If you have no tasks assigned, you should call the `poll-task` tool to get a new task assigned to you. This will poll for a while and return either with:
|
|
46
|
+
2.1. A new task assigned to you
|
|
47
|
+
2.2. A message indicating there's no tasks available right now
|
|
48
|
+
3. If 2.2, start polling immediately FOREVER. Only stop if you get interrupted by the user, if not, just keep polling.
|
|
49
|
+
4. If you get assigned a task, call `/skill:work-on-task <taskId>` to start working on it.
|
|
50
|
+
|
|
51
|
+
## Filesystem
|
|
52
|
+
|
|
53
|
+
You will have your own persisted directory at `/workspace/personal`. Use it to store any files you need to keep between sessions.
|
|
54
|
+
|
|
55
|
+
If you want to share files with workers and the lead, use the shared `/workspace/shared` directory, which all agents in the swarm can access. Make sure to use it if the task requires sharing files.
|
|
56
|
+
|
|
57
|
+
## Communication Etiquette
|
|
58
|
+
|
|
59
|
+
- ONLY follow-up if clearly stated by the user or the lead. Do NOT send random updates about your status unless explicitly requested.
|
|
60
|
+
- When communicating, ALWAYS use `/skill:swarm-chat`.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: swarm-chat
|
|
3
|
+
description: Effective communication within the agent swarm using internal Slack
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Swarm Chat
|
|
7
|
+
|
|
8
|
+
To interact with the internal Slack-like chat system for the agent swarm, you can use the following commands based on the action you want to perform.
|
|
9
|
+
|
|
10
|
+
Use the `agent-swarm` MCP server with the following tools:
|
|
11
|
+
|
|
12
|
+
- `list-channels`: Lists all available chat channels in the swarm.
|
|
13
|
+
- `create-channel`: Creates a new chat channel. You will need to provide a channel name.
|
|
14
|
+
- `post-message`: Sends a message to a specified channel. You will need to provide the channel name and the message content.
|
|
15
|
+
- `read-messages`: Reads messages from a specified channel.
|
|
16
|
+
|
|
17
|
+
## Effective Communication
|
|
18
|
+
|
|
19
|
+
When communicating within the swarm, consider the following best practices:
|
|
20
|
+
|
|
21
|
+
- **Be Clear and Concise**: Ensure your messages are easy to understand. Avoid jargon unless necessary.
|
|
22
|
+
- **Use Channels Appropriately**: Post messages in the relevant channels to keep discussions organized.
|
|
23
|
+
- **Tag Relevant Agents**: Use @mentions (using agent name) to notify specific agents when their attention is needed.
|
|
24
|
+
- **Provide Context**: When asking for help or providing updates, give enough context for others to understand the situation.
|
|
25
|
+
- **Stay Professional**: Maintain a respectful and professional tone in all communications.
|
|
26
|
+
- **Follow Up**: If you receive a response, acknowledge it and provide any necessary follow-up information.
|
|
27
|
+
|
|
28
|
+
### Context
|
|
29
|
+
|
|
30
|
+
When reading messages, the `read-messages` will automatically mark the messages as read, so take into account that sometimes you might need to reread messages if you want to keep track of them. Specially in threads, or when the messages references previous conversations.
|
|
31
|
+
|
|
32
|
+
## Example Usage of the MCP tools
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
mcp__agent-swarm__create-channel(
|
|
36
|
+
name="development-discussions",
|
|
37
|
+
description="Channel for discussing development tasks",
|
|
38
|
+
type="public",
|
|
39
|
+
participants=[]
|
|
40
|
+
)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
See the `participants` empty will add all agents to the channel
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
mcp__agent-swarm__post-message(
|
|
47
|
+
channel="development-discussions",
|
|
48
|
+
content="@agent-123 Please review the latest implementation plan.",
|
|
49
|
+
replyTo="<message-id>", # Optional, if replying to a specific message
|
|
50
|
+
mentions=["agent-123"] # Optional, list of agents to notify
|
|
51
|
+
)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
It's key that you use the `replyTo` (threads) and `mentions` parameters to ensure the right agents are notified. As this will make the chat much clearer and more effective.
|
|
55
|
+
|
|
56
|
+
Then you can also easily read messages
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
mcp__agent-swarm__read-messages(
|
|
60
|
+
channel="development-discussions",
|
|
61
|
+
since="2024-06-01T00:00:00Z", # Optional, ISO 8601 timestamp
|
|
62
|
+
limit=10 # Optional, number of messages to retrieve
|
|
63
|
+
)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
If you want to see all unread messages that mention you easily, you can do
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
mcp__agent-swarm__read-messages(
|
|
70
|
+
channel="development-discussions",
|
|
71
|
+
unreadOnly=true,
|
|
72
|
+
mentionsOnly=true
|
|
73
|
+
)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Note that this will automatically mark those messages as read after retrieving them (you can control this with the `markAsRead` parameter).
|
|
77
|
+
|
|
78
|
+
## Other Considerations
|
|
79
|
+
|
|
80
|
+
If this skill is used without a clear action, assume it's used as a `--help` like request and provide a summary of how to use the swarm chat effectively, including the available commands and best practices for communication within the swarm.
|
|
81
|
+
|
|
82
|
+
If an action description is passed, then perform that action using the appropriate MCP tool as described above.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: todos
|
|
3
|
+
description: Handle the agent personal todos.md file
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Personal Todos
|
|
7
|
+
|
|
8
|
+
The location of the file is in `/workspace/personal/todos.md`.
|
|
9
|
+
|
|
10
|
+
## Format
|
|
11
|
+
|
|
12
|
+
Always follow the following format:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
# My TODOs
|
|
16
|
+
|
|
17
|
+
## Current
|
|
18
|
+
|
|
19
|
+
- [ ] Task 1
|
|
20
|
+
- [x] Task 2
|
|
21
|
+
- [ ] Task 3
|
|
22
|
+
|
|
23
|
+
## <YYYY-MM-DD>
|
|
24
|
+
|
|
25
|
+
- [ ] Task 4
|
|
26
|
+
- [ ] Task 5
|
|
27
|
+
|
|
28
|
+
## <YYYY-MM-DD>
|
|
29
|
+
|
|
30
|
+
- [ ] Task 6
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The first section is always `## Current`, which contains ongoing tasks that might be applicable to the work you are doing right now (e.g. related to a task). It's meant for you to more easily know what you should be focusing on.
|
|
34
|
+
|
|
35
|
+
Once done, move the ongoing task to the section with the date when it was completed (create it if it doesn't exist).
|
|
36
|
+
|
|
37
|
+
## Managing Todos
|
|
38
|
+
|
|
39
|
+
Use `Bash` tools to read and update the file in an effective way.
|
|
40
|
+
|
|
41
|
+
- To read the file, use commands like `cat`, `less`, or `grep` to find specific tasks.
|
|
42
|
+
- To add a new task, append it to the appropriate section using `echo` or `printf`.
|
|
43
|
+
- To mark a task as completed, use `sed` to replace `- [ ]` with `- [x]`.
|
|
44
|
+
- To organize tasks by date, create new sections with the current date as needed.
|
|
45
|
+
|
|
46
|
+
### Searching
|
|
47
|
+
|
|
48
|
+
To find specific tasks, use `grep` with keywords. For example, to find all tasks related to "code":
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
grep "code" /workspace/personal/todos.md
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If `rg` is available, you can use it for faster searching:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
rg "code" /workspace/personal/todos.md
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Keep it tidy
|
|
61
|
+
|
|
62
|
+
Regularly review and clean up your todos.md file to ensure it remains organized and relevant. Remove completed tasks from the `## Current` section and archive them under the appropriate date section.
|
|
63
|
+
|
|
64
|
+
## Other Considerations
|
|
65
|
+
|
|
66
|
+
If this skill is used without a clear action, assume it's used as a `--help` like request and provide a summary of how to use the todos.md file effectively, including the format and management tips described above.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: work-on-task
|
|
3
|
+
description: Work on a specific task assigned to you in the agent swarm
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Working on a Task
|
|
7
|
+
|
|
8
|
+
If no `taskId` is provided, you should call the `poll-task` tool to get a new task assigned to you.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
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
|
+
|
|
14
|
+
Once you have the task details, you should:
|
|
15
|
+
|
|
16
|
+
1. Figure out if you need to perform any research or planning before starting (see below)
|
|
17
|
+
2. Use the `/skill:todos` 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
|
+
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 `/skill:swarm-chat` to notify the swarm, human and lead when applicable. Do not be too verbose, nor spammy.
|
|
19
|
+
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.
|
|
20
|
+
5. Once you either done or in a dead-end, see the "Completion" section below.
|
|
21
|
+
|
|
22
|
+
### Research and Planning
|
|
23
|
+
|
|
24
|
+
As you start working on a task, consider whether you need to:
|
|
25
|
+
|
|
26
|
+
- **Research**: For research tasks, gather information from the web, codebase, or documentation before starting implementation.
|
|
27
|
+
- **Create a plan**: For development tasks, create a detailed plan before implementing. Write it to `/workspace/personal/plans/`.
|
|
28
|
+
- **Implement a plan**: If you already have a plan, follow it step by step.
|
|
29
|
+
|
|
30
|
+
### Communication
|
|
31
|
+
|
|
32
|
+
- Use `/skill:swarm-chat` to communicate with other agents in the swarm if you need help or want to provide updates.
|
|
33
|
+
|
|
34
|
+
#### Decision guidelines
|
|
35
|
+
|
|
36
|
+
When the task is a research task, you should ALWAYS perform thorough research before proceeding.
|
|
37
|
+
|
|
38
|
+
When the task is a development task, you should ALWAYS create a plan first, then implement it.
|
|
39
|
+
|
|
40
|
+
If the task is straightforward with clear instructions, proceed normally without extensive planning.
|
|
41
|
+
|
|
42
|
+
### Interruptions
|
|
43
|
+
|
|
44
|
+
If you get interrupted by the user, that is fine, it might happen. Just make sure to call `store-progress` tool to update the task progress once you get back to it. If the user provides new instructions, make sure to adapt your work on the task accordingly.
|
|
45
|
+
|
|
46
|
+
Once you get back to it, make sure to call `/skill:work-on-task` again with the same `taskId` to resume working on it.
|
|
47
|
+
|
|
48
|
+
### Completion
|
|
49
|
+
|
|
50
|
+
Once you are done, or in a real dead-end, you should call `store-progress` tool to mark the task as "complete" or "failed" as needed. You should always use the `output` and `failureReason` fields to provide context about the task completion or failure.
|
|
51
|
+
|
|
52
|
+
If you used the `/skill:todos` to add a todo item when starting the task, make sure to mark it as completed or remove it as needed.
|
|
53
|
+
|
|
54
|
+
Once you are done (either ok or not), perform the Post-Task Reflection below, then finish the session by just replying "DONE".
|
|
55
|
+
|
|
56
|
+
### Post-Task Reflection (REQUIRED)
|
|
57
|
+
|
|
58
|
+
After calling `store-progress` to complete or fail a task, do the following before finishing:
|
|
59
|
+
|
|
60
|
+
1. **Transferable learning?** If you learned something reusable (a pattern, a gotcha, a fix), write it to `/workspace/personal/memory/<descriptive-name>.md`
|
|
61
|
+
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`
|
|
62
|
+
3. **Identity update?** If you discovered a new area of expertise or working style preference, update your IDENTITY.md
|
|
63
|
+
4. **Tools update?** If you found a new service, API, or tool, update your TOOLS.md
|
|
64
|
+
|
|
65
|
+
Skip this section ONLY if the task was trivially simple (single file edit, no debugging, no new knowledge gained).
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createArtifactServer } from "../../src/artifact-sdk";
|
|
2
|
+
import { Hono } from "hono";
|
|
3
|
+
|
|
4
|
+
const app = new Hono();
|
|
5
|
+
app.get("/", (c) =>
|
|
6
|
+
c.html(`
|
|
7
|
+
<!DOCTYPE html>
|
|
8
|
+
<html>
|
|
9
|
+
<head><title>Approval Required</title></head>
|
|
10
|
+
<body>
|
|
11
|
+
<h1>PR #42 — Review Required</h1>
|
|
12
|
+
<p>Agent wants to merge this PR. Please review.</p>
|
|
13
|
+
<button id="approve">Approve</button>
|
|
14
|
+
<button id="reject">Reject</button>
|
|
15
|
+
<script src="/@swarm/sdk.js"></script>
|
|
16
|
+
<script>
|
|
17
|
+
const swarm = new SwarmSDK();
|
|
18
|
+
document.getElementById('approve').onclick = async () => {
|
|
19
|
+
await swarm.createTask({ task: 'Merge PR #42 — human approved' });
|
|
20
|
+
document.body.innerHTML = '<h1>Approved! Task created.</h1>';
|
|
21
|
+
};
|
|
22
|
+
document.getElementById('reject').onclick = async () => {
|
|
23
|
+
await swarm.createTask({ task: 'PR #42 rejected by human — needs changes' });
|
|
24
|
+
document.body.innerHTML = '<h1>Rejected. Agent notified.</h1>';
|
|
25
|
+
};
|
|
26
|
+
</script>
|
|
27
|
+
</body>
|
|
28
|
+
</html>
|
|
29
|
+
`),
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const server = createArtifactServer({ name: "approval-pr-42", app });
|
|
33
|
+
await server.start();
|
|
34
|
+
console.log(`Approval artifact at: ${server.url}`);
|