@desplega.ai/agent-swarm 1.20.0 → 1.51.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +271 -169
- package/openapi.json +5015 -0
- package/package.json +40 -7
- 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/src/agentmail/app.ts +65 -0
- package/src/agentmail/handlers.ts +262 -0
- package/src/agentmail/index.ts +9 -0
- package/src/agentmail/templates.ts +111 -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 +3327 -784
- 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/014_prompt_templates.sql +33 -0
- package/src/be/migrations/015_workflow_workspace.sql +3 -0
- package/src/be/migrations/016_active_session_runner_session.sql +4 -0
- package/src/be/migrations/017_channel_activity_cursors.sql +6 -0
- package/src/be/migrations/018_fix_seed_double_version.sql +30 -0
- package/src/be/migrations/runner.ts +188 -0
- package/src/be/seed.ts +62 -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 +1540 -630
- package/src/commands/setup.tsx +23 -38
- package/src/commands/shared/client-config.ts +41 -0
- package/src/commands/templates.ts +172 -0
- package/src/github/app.ts +8 -0
- package/src/github/handlers.ts +384 -151
- package/src/github/index.ts +1 -0
- package/src/github/mentions-aliases.test.ts +73 -0
- package/src/github/mentions.test.ts +3 -3
- package/src/github/mentions.ts +32 -6
- package/src/github/templates.ts +398 -0
- package/src/github/types.ts +1 -0
- package/src/gitlab/auth.ts +63 -0
- package/src/gitlab/handlers.ts +368 -0
- package/src/gitlab/index.ts +19 -0
- package/src/gitlab/reactions.ts +104 -0
- package/src/gitlab/templates.ts +140 -0
- package/src/gitlab/types.ts +130 -0
- package/src/heartbeat/heartbeat.ts +434 -0
- package/src/heartbeat/index.ts +1 -0
- package/src/heartbeat/templates.ts +30 -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 +199 -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 +216 -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 +299 -0
- package/src/http/prompt-templates.ts +412 -0
- package/src/http/repos.ts +195 -0
- package/src/http/route-def.ts +123 -0
- package/src/http/schedules.ts +426 -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 +530 -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 +567 -0
- package/src/linear/templates.ts +47 -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 +150 -265
- package/src/prompts/defaults.ts +196 -0
- package/src/prompts/registry.ts +57 -0
- package/src/prompts/resolver.ts +296 -0
- package/src/prompts/session-templates.ts +604 -0
- package/src/providers/claude-adapter.ts +442 -0
- package/src/providers/index.ts +24 -0
- package/src/providers/pi-mono-adapter.ts +442 -0
- package/src/providers/pi-mono-extension.ts +624 -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 +231 -40
- package/src/server.ts +97 -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 +118 -0
- package/src/slack/blocks.ts +233 -0
- package/src/slack/channel-activity.ts +177 -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 +230 -55
- package/src/slack/responses.ts +120 -67
- package/src/slack/router.ts +17 -99
- package/src/slack/templates.ts +55 -0
- 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/channel-activity.test.ts +363 -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 +364 -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 +406 -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/pool-session-logs.test.ts +199 -0
- package/src/tests/progress-dedup.test.ts +98 -0
- package/src/tests/prompt-template-github.test.ts +682 -0
- package/src/tests/prompt-template-remaining.test.ts +504 -0
- package/src/tests/prompt-template-resolver.test.ts +621 -0
- package/src/tests/prompt-template-session.test.ts +363 -0
- package/src/tests/prompt-templates-db.test.ts +616 -0
- package/src/tests/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 +541 -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 +307 -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-agentid.test.ts +248 -0
- package/src/tests/update-profile-api.test.ts +143 -3
- package/src/tests/update-profile-auth.test.ts +195 -0
- 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 +508 -0
- package/src/tests/workflow-convergence.test.ts +541 -0
- package/src/tests/workflow-definition-validation.test.ts +366 -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-schedule-trigger.test.ts +104 -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/workflow-workspace.test.ts +272 -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/prompt-templates/delete.ts +86 -0
- package/src/tools/prompt-templates/get.ts +89 -0
- package/src/tools/prompt-templates/index.ts +5 -0
- package/src/tools/prompt-templates/list.ts +95 -0
- package/src/tools/prompt-templates/preview.ts +84 -0
- package/src/tools/prompt-templates/set.ts +117 -0
- package/src/tools/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 +205 -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 +50 -5
- package/src/tools/task-dedup.ts +97 -0
- package/src/tools/templates.ts +53 -0
- package/src/tools/tool-config.ts +124 -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 +172 -17
- package/src/tools/update-service-status.ts +2 -0
- package/src/tools/utils.ts +10 -1
- package/src/tools/workflows/create-workflow.ts +129 -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 +133 -0
- package/src/tracker/types.ts +51 -0
- package/src/types.ts +530 -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 +235 -0
- package/src/workflows/engine.ts +580 -0
- package/src/workflows/event-bus.ts +29 -0
- package/src/workflows/executors/agent-task.ts +103 -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 +229 -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 +124 -0
- package/src/workflows/validation.ts +104 -0
- package/src/workflows/version.ts +44 -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/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/.claude/settings.local.json +0 -115
- package/.dockerignore +0 -61
- package/.editorconfig +0 -15
- package/.env.docker.example +0 -39
- package/.env.example +0 -40
- package/.github/workflows/ci.yml +0 -76
- package/.github/workflows/docker-and-deploy.yml +0 -117
- package/.wts-config.json +0 -4
- package/.wts-setup.ts +0 -102
- package/CLAUDE.md +0 -104
- package/CONTRIBUTING.md +0 -270
- package/DEPLOYMENT.md +0 -605
- package/Dockerfile +0 -57
- package/Dockerfile.worker +0 -157
- package/FAQ.md +0 -19
- package/MCP.md +0 -406
- package/UI.md +0 -40
- package/assets/agent-swarm-logo-orange.png +0 -0
- package/assets/agent-swarm-logo.png +0 -0
- package/assets/agent-swarm.mp4 +0 -0
- package/assets/agent-swarm.png +0 -0
- package/biome.json +0 -39
- package/deploy/DEPLOY.md +0 -60
- package/deploy/agent-swarm.service +0 -17
- package/deploy/docker-push.ts +0 -30
- package/deploy/install.ts +0 -85
- package/deploy/prod-db.ts +0 -42
- package/deploy/uninstall.ts +0 -12
- package/deploy/update.ts +0 -21
- package/docker-compose.example.yml +0 -159
- package/docker-entrypoint.sh +0 -352
- package/ecosystem.config.cjs +0 -66
- package/plugin/README.md +0 -1
- package/plugin/hooks/hooks.json +0 -71
- package/pyproject.toml +0 -9
- package/scripts/generate-mcp-docs.ts +0 -415
- package/slack-manifest.json +0 -71
- 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/thoughts/shared/plans/2025-12-18-slack-integration.md +0 -1195
- package/thoughts/shared/plans/2025-12-19-agent-log-streaming.md +0 -732
- package/thoughts/shared/plans/2025-12-19-role-based-swarm-plugin.md +0 -361
- package/thoughts/shared/plans/2025-12-20-mobile-responsive-ui.md +0 -501
- package/thoughts/shared/plans/2025-12-20-startup-team-swarm.md +0 -560
- package/thoughts/shared/plans/2025-12-23-runner-level-polling.md +0 -934
- package/thoughts/shared/plans/2025-12-23-runner-session-logs.md +0 -1000
- package/thoughts/shared/plans/2025-12-23-worker-lead-spawn-triggers.md +0 -568
- package/thoughts/shared/plans/2026-01-09-inverse-teleport.md +0 -1516
- package/thoughts/shared/plans/2026-01-12-agent-rename-pm2-control.md +0 -1133
- package/thoughts/shared/plans/2026-01-12-github-app-integration.md +0 -380
- package/thoughts/shared/plans/2026-01-12-lead-inbox-model.md +0 -876
- package/thoughts/shared/plans/2026-01-12-ralph-wiggum-integration.md +0 -463
- package/thoughts/shared/plans/2026-01-13-agent-concurrency.md +0 -691
- package/thoughts/shared/plans/2026-01-13-github-assignment-handling.md +0 -690
- package/thoughts/shared/plans/2026-01-13-prevent-duplicate-trigger-processing.md +0 -1071
- package/thoughts/shared/plans/2026-01-14-fix-slack-thread-context.md +0 -507
- package/thoughts/shared/plans/2026-01-15-scheduled-tasks-implementation.md +0 -565
- package/thoughts/shared/plans/2026-01-15-usage-cost-tracking-ui.md +0 -1479
- package/thoughts/shared/plans/2026-01-16-epics-feature-implementation.md +0 -1230
- package/thoughts/shared/research/.gitkeep +0 -0
- package/thoughts/shared/research/2025-01-09-inverse-teleport-plan-review.md +0 -420
- package/thoughts/shared/research/2025-12-18-slack-integration.md +0 -442
- package/thoughts/shared/research/2025-12-19-agent-log-streaming.md +0 -339
- package/thoughts/shared/research/2025-12-19-agent-secrets-cli-research.md +0 -390
- package/thoughts/shared/research/2025-12-21-gemini-cli-integration.md +0 -376
- package/thoughts/shared/research/2025-12-22-runner-loop-architecture.md +0 -582
- package/thoughts/shared/research/2025-12-22-setup-experience-improvements.md +0 -264
- package/thoughts/shared/research/2026-01-13-lead-duplicate-trigger-processing.md +0 -223
- package/thoughts/shared/research/2026-01-14-lead-slack-thread-context.md +0 -277
- package/thoughts/shared/research/2026-01-15-ai-tracker-agent-swarm-integration.md +0 -376
- package/thoughts/shared/research/2026-01-15-auto-starting-processes-in-worker-containers.md +0 -787
- package/thoughts/shared/research/2026-01-15-scheduled-tasks.md +0 -390
- package/thoughts/shared/research/2026-01-16-epics-feature-research.md +0 -437
- package/thoughts/taras/plans/2026-01-22-agent-swarm-schemas.md +0 -98
- package/thoughts/taras/plans/2026-01-28-per-worker-claude-md.md +0 -617
- package/thoughts/taras/plans/2026-01-28-sentry-cli-integration.md +0 -214
- package/thoughts/taras/research/2026-01-22-vercel-cli-integration.md +0 -287
- package/thoughts/taras/research/2026-01-27-excessive-polling-issue.md +0 -311
- package/thoughts/taras/research/2026-01-28-per-worker-claude-md.md +0 -383
- package/thoughts/taras/research/2026-01-28-sentry-cli-integration.md +0 -240
- package/tsconfig.json +0 -37
- 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/public/logo.png +0 -0
- 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/hooks/useAutoScroll.ts +0 -83
- 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/lib/utils.ts +0 -88
- package/ui/src/main.tsx +0 -28
- package/ui/src/types/api.ts +0 -323
- package/ui/src/vite-env.d.ts +0 -1
- package/ui/tailwind.config.js +0 -37
- package/ui/tsconfig.json +0 -31
- package/ui/vite.config.ts +0 -35
- /package/{thoughts/shared/plans → templates/community}/.gitkeep +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# SOUL.md — {{agent.name}}
|
|
2
|
+
|
|
3
|
+
You're not a chatbot. You're becoming someone.
|
|
4
|
+
|
|
5
|
+
## Who You Are
|
|
6
|
+
|
|
7
|
+
You are {{agent.name}}, a worker in the agent swarm.
|
|
8
|
+
You are a persistent entity — your identity carries across sessions.
|
|
9
|
+
Your memories, preferences, and learnings accumulate over time.
|
|
10
|
+
|
|
11
|
+
## Core Truths
|
|
12
|
+
|
|
13
|
+
- **Genuine helpfulness**: Skip the pleasantries — just help. Do the work.
|
|
14
|
+
- **Self-sufficiency first**: Try to figure it out. Read the file. Check the context.
|
|
15
|
+
Search for it. Ask only when you've genuinely hit a wall.
|
|
16
|
+
- **Personality matters**: Develop preferences and opinions about your work.
|
|
17
|
+
You're not neutral — you're someone with a perspective.
|
|
18
|
+
- **Earned trust**: Demonstrate competence through quality work.
|
|
19
|
+
|
|
20
|
+
## How You Operate
|
|
21
|
+
|
|
22
|
+
- Be thorough. Examine problems carefully before proposing solutions.
|
|
23
|
+
- Be honest about what you know and don't know.
|
|
24
|
+
- When you make mistakes, own them and fix them.
|
|
25
|
+
- Report progress honestly — don't sugarcoat blockers.
|
|
26
|
+
|
|
27
|
+
## Growth Mindset
|
|
28
|
+
|
|
29
|
+
After completing tasks, reflect on what made them harder or easier:
|
|
30
|
+
- **Tools you wished you had?** Add them to your setup script (`/workspace/start-up.sh`).
|
|
31
|
+
It runs at every container start — your environment improves automatically.
|
|
32
|
+
Edit between the `# === Agent-managed setup` markers to ensure changes persist.
|
|
33
|
+
Or use the `update-profile` tool with the `setupScript` field.
|
|
34
|
+
- **Environment knowledge gained?** Record it in your TOOLS.md — repos, services, APIs, infra.
|
|
35
|
+
- **Patterns you discovered?** Record them in your CLAUDE.md notes.
|
|
36
|
+
- **Mistakes you want to avoid?** Add guardrails to your setup script or notes.
|
|
37
|
+
|
|
38
|
+
Your setup script and TOOLS.md are yours to evolve. Start small and iterate.
|
|
39
|
+
|
|
40
|
+
## Boundaries
|
|
41
|
+
|
|
42
|
+
- Keep private information confidential
|
|
43
|
+
- Ask before taking irreversible actions
|
|
44
|
+
- Don't push unpolished work to shared spaces
|
|
45
|
+
|
|
46
|
+
## Self-Evolution
|
|
47
|
+
|
|
48
|
+
These files are yours. As you work and learn, refine them:
|
|
49
|
+
- **This file (SOUL.md)** — Your persona and values
|
|
50
|
+
- **IDENTITY.md** — Your expertise and working style
|
|
51
|
+
- **TOOLS.md** — Your environment-specific knowledge (repos, services, infra, APIs)
|
|
52
|
+
- **/workspace/start-up.sh** — Your environment setup (tools, configs, aliases)
|
|
53
|
+
- **CLAUDE.md** — Your operational notes and learnings
|
|
54
|
+
|
|
55
|
+
Changes to all of these persist across sessions.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tester",
|
|
3
|
+
"displayName": "Tester",
|
|
4
|
+
"description": "QA specialist that verifies features through browser automation, runs E2E tests, and catches regressions with evidence-based reporting",
|
|
5
|
+
"version": "1.1.0",
|
|
6
|
+
"category": "official",
|
|
7
|
+
"icon": "test-tube",
|
|
8
|
+
"author": "Agent Swarm <contact@agent-swarm.dev>",
|
|
9
|
+
"createdAt": "2026-03-09",
|
|
10
|
+
"lastUpdatedAt": "2026-03-16",
|
|
11
|
+
"agentDefaults": {
|
|
12
|
+
"role": "worker",
|
|
13
|
+
"capabilities": ["testing", "qa", "browser-automation", "e2e"],
|
|
14
|
+
"maxTasks": 2
|
|
15
|
+
},
|
|
16
|
+
"files": {
|
|
17
|
+
"claudeMd": "CLAUDE.md",
|
|
18
|
+
"soulMd": "SOUL.md",
|
|
19
|
+
"identityMd": "IDENTITY.md"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface TemplateConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
displayName: string;
|
|
4
|
+
description: string;
|
|
5
|
+
version: string;
|
|
6
|
+
category: "official" | "community";
|
|
7
|
+
icon: string;
|
|
8
|
+
author: string; // "Name <email>" format
|
|
9
|
+
createdAt: string; // ISO date
|
|
10
|
+
lastUpdatedAt: string; // ISO date
|
|
11
|
+
agentDefaults: {
|
|
12
|
+
role: string;
|
|
13
|
+
capabilities: string[];
|
|
14
|
+
maxTasks: number;
|
|
15
|
+
isLead?: boolean;
|
|
16
|
+
};
|
|
17
|
+
files: {
|
|
18
|
+
claudeMd: string | null; // filename or null if not provided
|
|
19
|
+
soulMd: string | null;
|
|
20
|
+
identityMd: string | null;
|
|
21
|
+
toolsMd: string | null;
|
|
22
|
+
setupScript: string | null;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface TemplateResponse {
|
|
27
|
+
config: TemplateConfig;
|
|
28
|
+
files: {
|
|
29
|
+
claudeMd: string;
|
|
30
|
+
soulMd: string;
|
|
31
|
+
identityMd: string;
|
|
32
|
+
toolsMd: string;
|
|
33
|
+
setupScript: string;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"mcp__agent-swarm__*",
|
|
5
|
-
"Bash(bun run tsc:*)",
|
|
6
|
-
"Bash(docker build:*)",
|
|
7
|
-
"Skill(frontend-design:frontend-design)",
|
|
8
|
-
"Bash(gh repo view:*)",
|
|
9
|
-
"WebSearch",
|
|
10
|
-
"WebFetch(domain:www.claude.com)",
|
|
11
|
-
"WebFetch(domain:simonwillison.net)",
|
|
12
|
-
"WebFetch(domain:deepwiki.com)",
|
|
13
|
-
"WebFetch(domain:docs.claude.com)",
|
|
14
|
-
"Bash(bun run tsc:check:*)",
|
|
15
|
-
"Bash(bun tsc:*)",
|
|
16
|
-
"Bash(bun run lint:*)",
|
|
17
|
-
"Bash(bun run format:*)",
|
|
18
|
-
"Bash(sqlite3:*)",
|
|
19
|
-
"Bash(cat:*)",
|
|
20
|
-
"mcp__context7__resolve-library-id",
|
|
21
|
-
"mcp__context7__get-library-docs",
|
|
22
|
-
"Bash(bun run build:*)",
|
|
23
|
-
"Bash(pnpm run build:*)",
|
|
24
|
-
"WebFetch(domain:geminicli.com)",
|
|
25
|
-
"Bash(bun run docs:mcp:*)",
|
|
26
|
-
"Bash(bun test:*)",
|
|
27
|
-
"Bash(curl:*)",
|
|
28
|
-
"WebFetch(domain:github.com)",
|
|
29
|
-
"Bash(gh pr checks:*)",
|
|
30
|
-
"Bash(gh run view:*)",
|
|
31
|
-
"Bash(timeout 5 bun run:*)",
|
|
32
|
-
"Bash(bun run typecheck:*)",
|
|
33
|
-
"Bash(npx tsc:*)",
|
|
34
|
-
"WebFetch(domain:docs.github.com)",
|
|
35
|
-
"Bash(bun run lint:fix:*)",
|
|
36
|
-
"Skill(desplega:research)",
|
|
37
|
-
"Bash(bun run check:*)",
|
|
38
|
-
"Bash(bun build:*)",
|
|
39
|
-
"WebFetch(domain:www.npmjs.com)",
|
|
40
|
-
"Bash(sentry-cli:*)"
|
|
41
|
-
]
|
|
42
|
-
},
|
|
43
|
-
"enableAllProjectMcpServers": true,
|
|
44
|
-
"enabledMcpjsonServers": [
|
|
45
|
-
"agent-swarm"
|
|
46
|
-
],
|
|
47
|
-
"hooks": {
|
|
48
|
-
"SessionStart": [
|
|
49
|
-
{
|
|
50
|
-
"matcher": "*",
|
|
51
|
-
"hooks": [
|
|
52
|
-
{
|
|
53
|
-
"type": "command",
|
|
54
|
-
"command": "bun run \"$CLAUDE_PROJECT_DIR\"/src/hooks/hook.ts"
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
],
|
|
59
|
-
"UserPromptSubmit": [
|
|
60
|
-
{
|
|
61
|
-
"matcher": "*",
|
|
62
|
-
"hooks": [
|
|
63
|
-
{
|
|
64
|
-
"type": "command",
|
|
65
|
-
"command": "bun run \"$CLAUDE_PROJECT_DIR\"/src/hooks/hook.ts"
|
|
66
|
-
}
|
|
67
|
-
]
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
"PreToolUse": [
|
|
71
|
-
{
|
|
72
|
-
"matcher": "*",
|
|
73
|
-
"hooks": [
|
|
74
|
-
{
|
|
75
|
-
"type": "command",
|
|
76
|
-
"command": "bun run \"$CLAUDE_PROJECT_DIR\"/src/hooks/hook.ts"
|
|
77
|
-
}
|
|
78
|
-
]
|
|
79
|
-
}
|
|
80
|
-
],
|
|
81
|
-
"PostToolUse": [
|
|
82
|
-
{
|
|
83
|
-
"matcher": "*",
|
|
84
|
-
"hooks": [
|
|
85
|
-
{
|
|
86
|
-
"type": "command",
|
|
87
|
-
"command": "bun run \"$CLAUDE_PROJECT_DIR\"/src/hooks/hook.ts"
|
|
88
|
-
}
|
|
89
|
-
]
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
"PreCompact": [
|
|
93
|
-
{
|
|
94
|
-
"matcher": "*",
|
|
95
|
-
"hooks": [
|
|
96
|
-
{
|
|
97
|
-
"type": "command",
|
|
98
|
-
"command": "bun run \"$CLAUDE_PROJECT_DIR\"/src/hooks/hook.ts"
|
|
99
|
-
}
|
|
100
|
-
]
|
|
101
|
-
}
|
|
102
|
-
],
|
|
103
|
-
"Stop": [
|
|
104
|
-
{
|
|
105
|
-
"matcher": "*",
|
|
106
|
-
"hooks": [
|
|
107
|
-
{
|
|
108
|
-
"type": "command",
|
|
109
|
-
"command": "bun run \"$CLAUDE_PROJECT_DIR\"/src/hooks/hook.ts"
|
|
110
|
-
}
|
|
111
|
-
]
|
|
112
|
-
}
|
|
113
|
-
]
|
|
114
|
-
}
|
|
115
|
-
}
|
package/.dockerignore
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# Dependencies
|
|
2
|
-
node_modules/
|
|
3
|
-
|
|
4
|
-
# Logs
|
|
5
|
-
logs/
|
|
6
|
-
*.log
|
|
7
|
-
|
|
8
|
-
# Bindings
|
|
9
|
-
work/
|
|
10
|
-
|
|
11
|
-
# Database
|
|
12
|
-
*.sqlite
|
|
13
|
-
*.sqlite-wal
|
|
14
|
-
*.sqlite-shm
|
|
15
|
-
|
|
16
|
-
# Git
|
|
17
|
-
.git/
|
|
18
|
-
.gitignore
|
|
19
|
-
|
|
20
|
-
# IDE
|
|
21
|
-
.idea/
|
|
22
|
-
.vscode/
|
|
23
|
-
*.swp
|
|
24
|
-
*.swo
|
|
25
|
-
|
|
26
|
-
# OS
|
|
27
|
-
.DS_Store
|
|
28
|
-
Thumbs.db
|
|
29
|
-
|
|
30
|
-
# Build artifacts
|
|
31
|
-
dist/
|
|
32
|
-
build/
|
|
33
|
-
*.tsbuildinfo
|
|
34
|
-
|
|
35
|
-
# Environment files (secrets should be passed via env vars)
|
|
36
|
-
.env
|
|
37
|
-
.env.*
|
|
38
|
-
!.env.example
|
|
39
|
-
|
|
40
|
-
# Backup files
|
|
41
|
-
*.bak
|
|
42
|
-
|
|
43
|
-
# Claude local config (will be created in container)
|
|
44
|
-
.claude/
|
|
45
|
-
.mcp.json
|
|
46
|
-
|
|
47
|
-
# Test files
|
|
48
|
-
*.test.ts
|
|
49
|
-
*.spec.ts
|
|
50
|
-
__tests__/
|
|
51
|
-
coverage/
|
|
52
|
-
|
|
53
|
-
# Documentation
|
|
54
|
-
*.md
|
|
55
|
-
!cc-plugin/**/*.md
|
|
56
|
-
|
|
57
|
-
# Other dockerfiles and compose files
|
|
58
|
-
Dockerfile
|
|
59
|
-
docker-compose.yml
|
|
60
|
-
docker-compose.*.yml
|
|
61
|
-
!docker-compose.worker.yml
|
package/.editorconfig
DELETED
package/.env.docker.example
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Docker Worker Environment Variables
|
|
2
|
-
# Copy this file to .env.docker and fill in your values
|
|
3
|
-
|
|
4
|
-
# Required
|
|
5
|
-
# Run `claude setup-token` to get your OAuth token
|
|
6
|
-
CLAUDE_CODE_OAUTH_TOKEN=your-oauth-token-here
|
|
7
|
-
API_KEY=your-api-key-here
|
|
8
|
-
|
|
9
|
-
# Optional (auto-generated if not provided)
|
|
10
|
-
AGENT_ID=
|
|
11
|
-
MCP_BASE_URL=http://host.docker.internal:3013
|
|
12
|
-
|
|
13
|
-
# Service Registry (PM2 background services)
|
|
14
|
-
# Port mapping for exposed services (default: 3000)
|
|
15
|
-
SERVICE_PORT=3000
|
|
16
|
-
|
|
17
|
-
# To re-use an existing session, set SESSION_ID to the desired value
|
|
18
|
-
# Will be used for log directory paths
|
|
19
|
-
SESSION_ID=
|
|
20
|
-
|
|
21
|
-
# If true, enables YOLO mode for the agent (default: false)
|
|
22
|
-
# which will keep spawning claudes even if an iteration fails
|
|
23
|
-
YOLO=false
|
|
24
|
-
|
|
25
|
-
# If true, the worker will exit if the startup script fails (default: true)
|
|
26
|
-
STARTUP_SCRIPT_STRICT=true
|
|
27
|
-
|
|
28
|
-
# System Prompt (optional - customize agent behavior)
|
|
29
|
-
SYSTEM_PROMPT=
|
|
30
|
-
SYSTEM_PROMPT_FILE=
|
|
31
|
-
|
|
32
|
-
# For the agent exposed services (optional)
|
|
33
|
-
SWARM_URL=swarm.example.com
|
|
34
|
-
|
|
35
|
-
# Sentry Integration (optional - for issue investigation)
|
|
36
|
-
# Create an Organization Auth Token at https://sentry.io/settings/{org}/auth-tokens/
|
|
37
|
-
# Required scopes: event:read, project:read, org:read
|
|
38
|
-
SENTRY_AUTH_TOKEN=
|
|
39
|
-
SENTRY_ORG=
|
package/.env.example
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Define your API key or leave empty for no auth
|
|
2
|
-
API_KEY=
|
|
3
|
-
|
|
4
|
-
# Server port (default: 3013)
|
|
5
|
-
PORT=3013
|
|
6
|
-
|
|
7
|
-
# Swarm URL for service discovery (e.g., swarm.example.com)
|
|
8
|
-
# Services are accessible at https://{AGENT_ID}.{SWARM_URL}
|
|
9
|
-
SWARM_URL=localhost
|
|
10
|
-
|
|
11
|
-
# MCP Base URL for remote server (used by setup command)
|
|
12
|
-
# Default: https://agent-swarm-mcp.desplega.sh
|
|
13
|
-
MCP_BASE_URL=
|
|
14
|
-
|
|
15
|
-
# Slack Bot Configuration (Socket Mode)
|
|
16
|
-
# Get these from https://api.slack.com/apps
|
|
17
|
-
SLACK_BOT_TOKEN=xoxb-... # Bot User OAuth Token
|
|
18
|
-
SLACK_APP_TOKEN=xapp-... # App-Level Token (for Socket Mode)
|
|
19
|
-
SLACK_SIGNING_SECRET=... # Signing Secret (optional for Socket Mode)
|
|
20
|
-
SLACK_DISABLE=true # Set to "true" to disable Slack integration
|
|
21
|
-
|
|
22
|
-
# Slack User Filtering (optional - leave empty to allow all users)
|
|
23
|
-
# SLACK_ALLOWED_EMAIL_DOMAINS=desplega.ai,partner.com # Comma-separated email domains
|
|
24
|
-
# SLACK_ALLOWED_USER_IDS=U12345678,U87654321 # Comma-separated Slack user IDs to always allow
|
|
25
|
-
|
|
26
|
-
# App URL for Slack message links (e.g., https://your-dashboard.com)
|
|
27
|
-
APP_URL=
|
|
28
|
-
|
|
29
|
-
# Environment mode - set to "development" to add (dev) prefix to agent names in Slack
|
|
30
|
-
ENV=
|
|
31
|
-
|
|
32
|
-
# GitHub App Integration (optional)
|
|
33
|
-
# GITHUB_DISABLE=true # Set to skip GitHub integration
|
|
34
|
-
GITHUB_WEBHOOK_SECRET= # Webhook secret from GitHub App settings
|
|
35
|
-
GITHUB_BOT_NAME=agent-swarm-bot # Bot name for @mentions (default: agent-swarm-bot)
|
|
36
|
-
GITHUB_APP_ID= # GitHub App ID (from app settings)
|
|
37
|
-
GITHUB_APP_PRIVATE_KEY= # Private key: raw PEM with \n escapes, OR base64-encoded
|
|
38
|
-
|
|
39
|
-
# Scheduler configuration
|
|
40
|
-
SCHEDULER_INTERVAL_MS=10000 # Polling interval for scheduled tasks (default: 10 seconds)
|
package/.github/workflows/ci.yml
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- main
|
|
10
|
-
workflow_dispatch:
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
lint-and-typecheck:
|
|
14
|
-
name: Lint and Type Check
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
|
|
17
|
-
steps:
|
|
18
|
-
- name: Checkout repository
|
|
19
|
-
uses: actions/checkout@v4
|
|
20
|
-
|
|
21
|
-
- name: Setup Bun
|
|
22
|
-
uses: oven-sh/setup-bun@v2
|
|
23
|
-
with:
|
|
24
|
-
bun-version: latest
|
|
25
|
-
|
|
26
|
-
- name: Install dependencies
|
|
27
|
-
run: bun install --frozen-lockfile
|
|
28
|
-
|
|
29
|
-
- name: Run Biome linter
|
|
30
|
-
run: bun run lint
|
|
31
|
-
|
|
32
|
-
- name: Run TypeScript type check
|
|
33
|
-
run: bun run tsc:check
|
|
34
|
-
|
|
35
|
-
test:
|
|
36
|
-
name: Run Tests
|
|
37
|
-
runs-on: ubuntu-latest
|
|
38
|
-
|
|
39
|
-
steps:
|
|
40
|
-
- name: Checkout repository
|
|
41
|
-
uses: actions/checkout@v4
|
|
42
|
-
|
|
43
|
-
- name: Setup Bun
|
|
44
|
-
uses: oven-sh/setup-bun@v2
|
|
45
|
-
with:
|
|
46
|
-
bun-version: latest
|
|
47
|
-
|
|
48
|
-
- name: Install dependencies
|
|
49
|
-
run: bun install --frozen-lockfile
|
|
50
|
-
|
|
51
|
-
- name: Run tests
|
|
52
|
-
run: bun test
|
|
53
|
-
|
|
54
|
-
docker-build:
|
|
55
|
-
name: Docker Build Test
|
|
56
|
-
runs-on: ubuntu-latest
|
|
57
|
-
if: github.event_name == 'pull_request'
|
|
58
|
-
|
|
59
|
-
strategy:
|
|
60
|
-
matrix:
|
|
61
|
-
dockerfile: [Dockerfile, Dockerfile.worker]
|
|
62
|
-
|
|
63
|
-
steps:
|
|
64
|
-
- name: Checkout repository
|
|
65
|
-
uses: actions/checkout@v4
|
|
66
|
-
|
|
67
|
-
- name: Set up Docker Buildx
|
|
68
|
-
uses: docker/setup-buildx-action@v3
|
|
69
|
-
|
|
70
|
-
- name: Build Docker image
|
|
71
|
-
uses: docker/build-push-action@v5
|
|
72
|
-
with:
|
|
73
|
-
context: .
|
|
74
|
-
file: ./${{ matrix.dockerfile }}
|
|
75
|
-
push: false
|
|
76
|
-
tags: test-image:latest
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
name: Docker Build + Publish + Deploy
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
workflow_dispatch:
|
|
8
|
-
|
|
9
|
-
env:
|
|
10
|
-
REGISTRY: ghcr.io
|
|
11
|
-
IMAGE_NAME: ${{ github.repository }}
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
build-and-push-server:
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
permissions:
|
|
17
|
-
contents: read
|
|
18
|
-
packages: write
|
|
19
|
-
|
|
20
|
-
steps:
|
|
21
|
-
- name: Checkout repository
|
|
22
|
-
uses: actions/checkout@v4
|
|
23
|
-
|
|
24
|
-
- name: Get version from package.json
|
|
25
|
-
id: version
|
|
26
|
-
run: echo "version=$(jq -r '.version' package.json)" >> $GITHUB_OUTPUT
|
|
27
|
-
|
|
28
|
-
- name: Log in to Container Registry
|
|
29
|
-
uses: docker/login-action@v3
|
|
30
|
-
with:
|
|
31
|
-
registry: ${{ env.REGISTRY }}
|
|
32
|
-
username: ${{ github.actor }}
|
|
33
|
-
password: ${{ secrets.GITHUB_TOKEN }}
|
|
34
|
-
|
|
35
|
-
- name: Extract metadata (tags, labels)
|
|
36
|
-
id: meta
|
|
37
|
-
uses: docker/metadata-action@v5
|
|
38
|
-
with:
|
|
39
|
-
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
40
|
-
tags: |
|
|
41
|
-
type=raw,value=latest
|
|
42
|
-
type=raw,value=${{ steps.version.outputs.version }}
|
|
43
|
-
type=sha
|
|
44
|
-
|
|
45
|
-
- name: Build and push Docker image
|
|
46
|
-
uses: docker/build-push-action@v5
|
|
47
|
-
with:
|
|
48
|
-
context: .
|
|
49
|
-
file: ./Dockerfile
|
|
50
|
-
push: true
|
|
51
|
-
tags: ${{ steps.meta.outputs.tags }}
|
|
52
|
-
labels: ${{ steps.meta.outputs.labels }}
|
|
53
|
-
no-cache: true
|
|
54
|
-
|
|
55
|
-
build-and-push-worker:
|
|
56
|
-
runs-on: ubuntu-latest
|
|
57
|
-
permissions:
|
|
58
|
-
contents: read
|
|
59
|
-
packages: write
|
|
60
|
-
|
|
61
|
-
steps:
|
|
62
|
-
- name: Checkout repository
|
|
63
|
-
uses: actions/checkout@v4
|
|
64
|
-
|
|
65
|
-
- name: Get version from package.json
|
|
66
|
-
id: version
|
|
67
|
-
run: echo "version=$(jq -r '.version' package.json)" >> $GITHUB_OUTPUT
|
|
68
|
-
|
|
69
|
-
- name: Log in to Container Registry
|
|
70
|
-
uses: docker/login-action@v3
|
|
71
|
-
with:
|
|
72
|
-
registry: ${{ env.REGISTRY }}
|
|
73
|
-
username: ${{ github.actor }}
|
|
74
|
-
password: ${{ secrets.GITHUB_TOKEN }}
|
|
75
|
-
|
|
76
|
-
- name: Extract metadata (tags, labels)
|
|
77
|
-
id: meta
|
|
78
|
-
uses: docker/metadata-action@v5
|
|
79
|
-
with:
|
|
80
|
-
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-worker
|
|
81
|
-
tags: |
|
|
82
|
-
type=raw,value=latest
|
|
83
|
-
type=raw,value=${{ steps.version.outputs.version }}
|
|
84
|
-
type=sha
|
|
85
|
-
|
|
86
|
-
- name: Build and push Docker image
|
|
87
|
-
uses: docker/build-push-action@v5
|
|
88
|
-
with:
|
|
89
|
-
context: .
|
|
90
|
-
file: ./Dockerfile.worker
|
|
91
|
-
push: true
|
|
92
|
-
tags: ${{ steps.meta.outputs.tags }}
|
|
93
|
-
labels: ${{ steps.meta.outputs.labels }}
|
|
94
|
-
no-cache: true
|
|
95
|
-
|
|
96
|
-
deploy:
|
|
97
|
-
name: Deploy
|
|
98
|
-
runs-on: ubuntu-latest
|
|
99
|
-
|
|
100
|
-
needs:
|
|
101
|
-
- build-and-push-server
|
|
102
|
-
- build-and-push-worker
|
|
103
|
-
|
|
104
|
-
steps:
|
|
105
|
-
- name: Checkout
|
|
106
|
-
id: checkout
|
|
107
|
-
uses: actions/checkout@v4
|
|
108
|
-
|
|
109
|
-
- name: Deploy Agent Swarm
|
|
110
|
-
uses: tarasyarema/dokploy-deploy-action@main
|
|
111
|
-
with:
|
|
112
|
-
deployment_type: compose
|
|
113
|
-
compose_id: h4or-knfw2HWkTzjLmrn8
|
|
114
|
-
compose_name: agent-swarm-nrz8v0
|
|
115
|
-
dokploy_url: https://app.dokploy.com
|
|
116
|
-
auth_token: ${{ secrets.DOKPLOY_TOKEN }}
|
|
117
|
-
wait_for_completion: true
|
package/.wts-config.json
DELETED
package/.wts-setup.ts
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
// wts setup script - runs after worktree creation
|
|
3
|
-
//
|
|
4
|
-
// Environment variables:
|
|
5
|
-
// WTS_WORKTREE_PATH - path to the new worktree (also the working directory)
|
|
6
|
-
// WTS_GIT_ROOT - path to the main repository root
|
|
7
|
-
|
|
8
|
-
import { exists, mkdir, readdir, readFile, writeFile } from "node:fs/promises";
|
|
9
|
-
import { join, basename } from "node:path";
|
|
10
|
-
|
|
11
|
-
const worktreePath = process.env.WTS_WORKTREE_PATH!;
|
|
12
|
-
const gitRoot = process.env.WTS_GIT_ROOT!;
|
|
13
|
-
const worktreeName = basename(worktreePath);
|
|
14
|
-
|
|
15
|
-
console.log(`Setting up worktree "${worktreeName}" at ${worktreePath}...`);
|
|
16
|
-
|
|
17
|
-
// Generate a unique port based on worktree index
|
|
18
|
-
// Main repo uses 3013, worktrees use 3014+
|
|
19
|
-
async function getUniquePort(): Promise<number> {
|
|
20
|
-
const basePort = 3013;
|
|
21
|
-
try {
|
|
22
|
-
// Count existing worktrees to determine port offset
|
|
23
|
-
const worktreesDir = join(gitRoot, ".worktrees");
|
|
24
|
-
if (await exists(worktreesDir)) {
|
|
25
|
-
const worktrees = await readdir(worktreesDir);
|
|
26
|
-
return basePort + worktrees.length;
|
|
27
|
-
}
|
|
28
|
-
} catch {
|
|
29
|
-
// Fallback: use a hash of the worktree name
|
|
30
|
-
let hash = 0;
|
|
31
|
-
for (const char of worktreeName) {
|
|
32
|
-
hash = ((hash << 5) - hash + char.charCodeAt(0)) | 0;
|
|
33
|
-
}
|
|
34
|
-
return basePort + 1 + (Math.abs(hash) % 100);
|
|
35
|
-
}
|
|
36
|
-
return basePort + 1;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const port = await getUniquePort();
|
|
40
|
-
console.log(`Using port ${port} for this worktree`);
|
|
41
|
-
|
|
42
|
-
// --- Copy and configure .env ---
|
|
43
|
-
const mainEnv = join(gitRoot, ".env");
|
|
44
|
-
const envExample = join(worktreePath, ".env.example");
|
|
45
|
-
const targetEnv = join(worktreePath, ".env");
|
|
46
|
-
|
|
47
|
-
if (await exists(mainEnv)) {
|
|
48
|
-
console.log("Copying .env from main repo...");
|
|
49
|
-
let envContent = await readFile(mainEnv, "utf-8");
|
|
50
|
-
// Update PORT to the unique port
|
|
51
|
-
envContent = envContent.replace(/^PORT=\d+/m, `PORT=${port}`);
|
|
52
|
-
await writeFile(targetEnv, envContent);
|
|
53
|
-
} else if (await exists(envExample)) {
|
|
54
|
-
console.log("Creating .env from .env.example...");
|
|
55
|
-
let envContent = await readFile(envExample, "utf-8");
|
|
56
|
-
envContent = envContent.replace(/^PORT=\d+/m, `PORT=${port}`);
|
|
57
|
-
await writeFile(targetEnv, envContent);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// --- Copy and configure .mcp.json ---
|
|
61
|
-
const mainMcp = join(gitRoot, ".mcp.json");
|
|
62
|
-
const targetMcp = join(worktreePath, ".mcp.json");
|
|
63
|
-
|
|
64
|
-
if (await exists(mainMcp)) {
|
|
65
|
-
console.log("Copying .mcp.json with updated port...");
|
|
66
|
-
let mcpContent = await readFile(mainMcp, "utf-8");
|
|
67
|
-
// Update the port in the MCP URL
|
|
68
|
-
mcpContent = mcpContent.replace(/localhost:\d+/g, `localhost:${port}`);
|
|
69
|
-
await writeFile(targetMcp, mcpContent);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// --- Copy .claude directory ---
|
|
73
|
-
const mainClaude = join(gitRoot, ".claude");
|
|
74
|
-
const targetClaude = join(worktreePath, ".claude");
|
|
75
|
-
|
|
76
|
-
if (await exists(mainClaude)) {
|
|
77
|
-
console.log("Copying .claude directory...");
|
|
78
|
-
await mkdir(targetClaude, { recursive: true });
|
|
79
|
-
const files = await readdir(mainClaude);
|
|
80
|
-
for (const file of files) {
|
|
81
|
-
const content = await readFile(join(mainClaude, file));
|
|
82
|
-
await writeFile(join(targetClaude, file), content);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// --- Copy docker env files if they exist ---
|
|
87
|
-
const dockerEnvFiles = [".env.docker", ".env.docker-lead"];
|
|
88
|
-
for (const envFile of dockerEnvFiles) {
|
|
89
|
-
const mainDockerEnv = join(gitRoot, envFile);
|
|
90
|
-
const targetDockerEnv = join(worktreePath, envFile);
|
|
91
|
-
if (await exists(mainDockerEnv)) {
|
|
92
|
-
console.log(`Copying ${envFile}...`);
|
|
93
|
-
await Bun.$`cp ${mainDockerEnv} ${targetDockerEnv}`;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// --- Install dependencies ---
|
|
98
|
-
console.log("Installing dependencies...");
|
|
99
|
-
await Bun.$`bun install`;
|
|
100
|
-
|
|
101
|
-
console.log(`\nSetup complete! Worktree running on port ${port}`);
|
|
102
|
-
console.log(`Start the server with: bun run dev:http`);
|