@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,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement-issue
|
|
3
|
+
description: Implement a GitHub issue or GitLab issue and create a PR/MR
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Implement Issue
|
|
7
|
+
|
|
8
|
+
Read a GitHub or GitLab issue, implement the requested changes, and create a pull request / merge request.
|
|
9
|
+
|
|
10
|
+
**Provider detection:** Check the URL or remote to determine the VCS provider:
|
|
11
|
+
- If GitHub → use `gh issue view` / `gh pr create`
|
|
12
|
+
- If GitLab → use `glab issue view` / `glab mr create`
|
|
13
|
+
|
|
14
|
+
## Arguments
|
|
15
|
+
|
|
16
|
+
- `issue-number-or-url`: Either an issue number (e.g., `123`) or a full URL (e.g., `https://github.com/owner/repo/issues/123` or `https://gitlab.com/group/project/-/issues/123`)
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
### 1. Parse the Input
|
|
21
|
+
|
|
22
|
+
If given a URL, extract the owner, repo, and issue number. If given just a number, use the current repository context.
|
|
23
|
+
|
|
24
|
+
### 2. Fetch Issue Details
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
gh issue view <issue-number> --json number,title,body,labels,comments
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Read and understand:
|
|
31
|
+
- What is being requested?
|
|
32
|
+
- Are there acceptance criteria?
|
|
33
|
+
- Any technical details or constraints mentioned?
|
|
34
|
+
- Check comments for additional context or clarifications
|
|
35
|
+
|
|
36
|
+
### 3. Ensure Repository is Cloned
|
|
37
|
+
|
|
38
|
+
Clone the repository to your personal workspace if not already present:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
REPO_PATH=/workspace/personal/<repo-name>
|
|
42
|
+
|
|
43
|
+
if [ ! -d "$REPO_PATH" ]; then
|
|
44
|
+
gh repo clone <owner>/<repo> "$REPO_PATH"
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
cd "$REPO_PATH"
|
|
48
|
+
git fetch origin
|
|
49
|
+
git checkout main
|
|
50
|
+
git pull origin main
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 4. Create a Feature Branch
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Use a descriptive branch name based on the issue
|
|
57
|
+
git checkout -b fix/issue-<number>-<short-description>
|
|
58
|
+
|
|
59
|
+
# Examples:
|
|
60
|
+
# git checkout -b fix/issue-123-add-dark-mode
|
|
61
|
+
# git checkout -b fix/issue-456-fix-login-redirect
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 5. Implement the Changes
|
|
65
|
+
|
|
66
|
+
This is the core work. Based on the issue:
|
|
67
|
+
|
|
68
|
+
1. **Understand the codebase** - Explore relevant files, understand existing patterns
|
|
69
|
+
2. **Plan your approach** - Consider using plan creation for complex changes
|
|
70
|
+
3. **Write the code** - Implement the requested functionality
|
|
71
|
+
4. **Test your changes** - Run existing tests, add new tests if appropriate
|
|
72
|
+
5. **Verify it works** - Manual verification where possible
|
|
73
|
+
|
|
74
|
+
Keep changes focused on what the issue requests. Avoid scope creep.
|
|
75
|
+
|
|
76
|
+
### 6. Commit Your Changes
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Stage your changes
|
|
80
|
+
git add -A
|
|
81
|
+
|
|
82
|
+
# Commit with a message referencing the issue
|
|
83
|
+
git commit -m "Fix #<issue-number>: <short description>
|
|
84
|
+
|
|
85
|
+
<longer description if needed>"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Use conventional commit style if the repo uses it (e.g., `feat:`, `fix:`, `docs:`).
|
|
89
|
+
|
|
90
|
+
### 7. Push the Branch
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
git push -u origin HEAD
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 8. Create the Pull Request
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
gh pr create \
|
|
100
|
+
--title "<descriptive title>" \
|
|
101
|
+
--body "## Summary
|
|
102
|
+
<Brief description of what this PR does>
|
|
103
|
+
|
|
104
|
+
## Changes
|
|
105
|
+
- <List key changes>
|
|
106
|
+
|
|
107
|
+
## Testing
|
|
108
|
+
- <How you tested the changes>
|
|
109
|
+
|
|
110
|
+
Fixes #<issue-number>"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The `Fixes #<number>` syntax will auto-close the issue when the PR is merged.
|
|
114
|
+
|
|
115
|
+
### 9. Report Back
|
|
116
|
+
|
|
117
|
+
Provide the user with:
|
|
118
|
+
- PR URL
|
|
119
|
+
- Summary of changes made
|
|
120
|
+
- Any notes or caveats
|
|
121
|
+
|
|
122
|
+
Optionally, comment on the original issue:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
gh issue comment <issue-number> --body "I've created a PR to address this: <PR-URL>"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Tips
|
|
129
|
+
|
|
130
|
+
- Read the issue thoroughly before starting - misunderstanding wastes time
|
|
131
|
+
- Check if there are related issues or existing PRs
|
|
132
|
+
- Keep PRs focused - one issue = one PR
|
|
133
|
+
- If the issue is too large, consider breaking it into smaller PRs
|
|
134
|
+
- If you get stuck or the issue is unclear, use `/skill:respond-github` to ask for clarification
|
|
135
|
+
- Run linters and tests before creating the PR
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: investigate-sentry-issue
|
|
3
|
+
description: Investigate and triage a Sentry error issue
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Investigate Sentry Issue
|
|
7
|
+
|
|
8
|
+
Investigate a Sentry issue to understand the error, gather context, and prepare for fixing or triaging.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
Environment variables `SENTRY_AUTH_TOKEN` and `SENTRY_ORG` must be set (they are pre-configured in the worker environment).
|
|
13
|
+
|
|
14
|
+
Verify authentication:
|
|
15
|
+
```bash
|
|
16
|
+
sentry-cli info
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Arguments
|
|
20
|
+
|
|
21
|
+
- `sentry-issue-url-or-id`: Either a Sentry issue URL (e.g., `https://sentry.io/organizations/myorg/issues/123456/`) or just the issue ID (e.g., `123456`)
|
|
22
|
+
|
|
23
|
+
## Workflow
|
|
24
|
+
|
|
25
|
+
### 1. Parse the Sentry URL
|
|
26
|
+
|
|
27
|
+
If given a URL, extract the issue ID:
|
|
28
|
+
```bash
|
|
29
|
+
# URL format: https://sentry.io/organizations/{org}/issues/{issue_id}/
|
|
30
|
+
# Extract issue_id from the URL path
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 2. Get Issue Overview
|
|
34
|
+
|
|
35
|
+
Use `sentry-cli` to list the issue:
|
|
36
|
+
```bash
|
|
37
|
+
sentry-cli issues list --id <issue-id>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 3. Get Detailed Issue Information
|
|
41
|
+
|
|
42
|
+
For more context, use the REST API:
|
|
43
|
+
```bash
|
|
44
|
+
curl -s "https://sentry.io/api/0/organizations/${SENTRY_ORG}/issues/<issue-id>/" \
|
|
45
|
+
-H "Authorization: Bearer ${SENTRY_AUTH_TOKEN}" | jq
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
This returns:
|
|
49
|
+
- Error title and metadata
|
|
50
|
+
- First/last seen timestamps
|
|
51
|
+
- Event count and user impact
|
|
52
|
+
- Assigned user and status
|
|
53
|
+
|
|
54
|
+
### 4. Get Full Stacktrace
|
|
55
|
+
|
|
56
|
+
The recommended event provides the best debugging context:
|
|
57
|
+
```bash
|
|
58
|
+
curl -s "https://sentry.io/api/0/organizations/${SENTRY_ORG}/issues/<issue-id>/events/recommended/" \
|
|
59
|
+
-H "Authorization: Bearer ${SENTRY_AUTH_TOKEN}" | jq
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Key fields in the response:
|
|
63
|
+
- `.entries[] | select(.type == "exception")` - The exception with stacktrace
|
|
64
|
+
- `.entries[] | select(.type == "breadcrumbs")` - Actions leading to the error
|
|
65
|
+
- `.tags` - Environment, browser, OS info
|
|
66
|
+
- `.context` - Custom context data
|
|
67
|
+
|
|
68
|
+
### 5. Extract Stacktrace Frames
|
|
69
|
+
|
|
70
|
+
To see the actual stack:
|
|
71
|
+
```bash
|
|
72
|
+
curl -s "https://sentry.io/api/0/organizations/${SENTRY_ORG}/issues/<issue-id>/events/recommended/" \
|
|
73
|
+
-H "Authorization: Bearer ${SENTRY_AUTH_TOKEN}" | \
|
|
74
|
+
jq '.entries[] | select(.type == "exception") | .data.values[].stacktrace.frames'
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 6. Analyze and Report
|
|
78
|
+
|
|
79
|
+
Based on the stacktrace and context:
|
|
80
|
+
1. Identify the failing file and line number
|
|
81
|
+
2. Understand the error type and message
|
|
82
|
+
3. Review breadcrumbs for the sequence of events
|
|
83
|
+
4. Check tags for environment-specific issues
|
|
84
|
+
|
|
85
|
+
### 7. Take Action (if appropriate)
|
|
86
|
+
|
|
87
|
+
**Resolve an issue:**
|
|
88
|
+
```bash
|
|
89
|
+
sentry-cli issues resolve <issue-id>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Mute an issue:**
|
|
93
|
+
```bash
|
|
94
|
+
sentry-cli issues mute <issue-id>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Unresolve an issue:**
|
|
98
|
+
```bash
|
|
99
|
+
sentry-cli issues unresolve <issue-id>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Common CLI Commands
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Verify authentication
|
|
106
|
+
sentry-cli info
|
|
107
|
+
|
|
108
|
+
# List unresolved issues
|
|
109
|
+
sentry-cli issues list --query "is:unresolved"
|
|
110
|
+
|
|
111
|
+
# List recent issues (last 2 days)
|
|
112
|
+
sentry-cli issues list --query "lastSeen:-2d"
|
|
113
|
+
|
|
114
|
+
# List issues matching a message
|
|
115
|
+
sentry-cli issues list --query "message:undefined"
|
|
116
|
+
|
|
117
|
+
# Bulk resolve issues
|
|
118
|
+
sentry-cli issues resolve <id1> <id2> <id3>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Search Query Syntax
|
|
122
|
+
|
|
123
|
+
Use these filters with `--query`:
|
|
124
|
+
|
|
125
|
+
| Filter | Example | Description |
|
|
126
|
+
|--------|---------|-------------|
|
|
127
|
+
| `is:` | `is:unresolved`, `is:resolved` | Issue status |
|
|
128
|
+
| `lastSeen:` | `lastSeen:-2d` | Seen within time range |
|
|
129
|
+
| `message:` | `message:undefined` | Match error message |
|
|
130
|
+
| `issue.category:` | `issue.category:error` | Error category |
|
|
131
|
+
|
|
132
|
+
## Tips
|
|
133
|
+
|
|
134
|
+
- Always get the recommended event first - it's curated for debugging
|
|
135
|
+
- Use `jq` to filter large JSON responses
|
|
136
|
+
- Check breadcrumbs to understand user actions before the error
|
|
137
|
+
- Look at tags for environment info (browser, OS, etc.)
|
|
138
|
+
- If investigating from a Slack alert, the issue URL is in the alert message
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: respond-github
|
|
3
|
+
description: Respond to a GitHub issue/PR or GitLab issue/MR
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Respond to VCS Issue/PR/MR
|
|
7
|
+
|
|
8
|
+
Post a response to a GitHub issue/PR or GitLab issue/MR.
|
|
9
|
+
|
|
10
|
+
**Provider detection:** Check the URL or remote to determine the VCS provider:
|
|
11
|
+
- If GitHub → use `gh issue comment` / `gh pr comment`
|
|
12
|
+
- If GitLab → use `glab issue note` / `glab mr note`
|
|
13
|
+
|
|
14
|
+
## Arguments
|
|
15
|
+
|
|
16
|
+
- `issue-or-pr-number-or-url`: Either a number (e.g., `123`) or a full URL (e.g., `https://github.com/owner/repo/issues/123` or `https://gitlab.com/group/project/-/issues/123`)
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
### 1. Parse the Input
|
|
21
|
+
|
|
22
|
+
If given a URL, extract:
|
|
23
|
+
- Owner and repo
|
|
24
|
+
- Whether it's an issue or PR (from the URL path)
|
|
25
|
+
- The number
|
|
26
|
+
|
|
27
|
+
If given just a number, use the current repository context and check if it's an issue or PR.
|
|
28
|
+
|
|
29
|
+
### 2. Ensure Repository is Cloned Locally
|
|
30
|
+
|
|
31
|
+
Make sure the repository is available in your personal workspace:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
REPO_PATH=/workspace/personal/<repo-name>
|
|
35
|
+
|
|
36
|
+
if [ ! -d "$REPO_PATH" ]; then
|
|
37
|
+
gh repo clone <owner>/<repo> "$REPO_PATH"
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
cd "$REPO_PATH"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 3. Get Full Context
|
|
44
|
+
|
|
45
|
+
For issues:
|
|
46
|
+
```bash
|
|
47
|
+
gh issue view <number> --json title,body,author,labels,comments,state
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
For PRs:
|
|
51
|
+
```bash
|
|
52
|
+
gh pr view <number> --json title,body,author,comments,state,reviews
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 4. Understand What's Being Asked
|
|
56
|
+
|
|
57
|
+
Read through:
|
|
58
|
+
- The original issue/PR description
|
|
59
|
+
- All comments in the thread
|
|
60
|
+
- Any specific questions or requests
|
|
61
|
+
|
|
62
|
+
If this is a task from agent-swarm with `@agent-swarm` mention, focus on what was asked in that mention.
|
|
63
|
+
|
|
64
|
+
### 5. Formulate Your Response
|
|
65
|
+
|
|
66
|
+
Consider:
|
|
67
|
+
- What specific question or request needs addressing?
|
|
68
|
+
- Do you need to provide code examples?
|
|
69
|
+
- Should you ask clarifying questions?
|
|
70
|
+
- Is this something you can resolve, or do you need human input?
|
|
71
|
+
|
|
72
|
+
### 6. Post the Response
|
|
73
|
+
|
|
74
|
+
For issues:
|
|
75
|
+
```bash
|
|
76
|
+
gh issue comment <number> --body "Your response"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
For PRs:
|
|
80
|
+
```bash
|
|
81
|
+
gh pr comment <number> --body "Your response"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Response Guidelines
|
|
85
|
+
|
|
86
|
+
- Be helpful and constructive
|
|
87
|
+
- If you don't know something, say so
|
|
88
|
+
- Provide code examples when relevant
|
|
89
|
+
- Use markdown formatting for readability
|
|
90
|
+
- Keep responses focused and concise
|
|
91
|
+
- If you've completed work, link to the relevant PR or commit
|
|
92
|
+
|
|
93
|
+
## Tips
|
|
94
|
+
|
|
95
|
+
- Check if there's already a PR addressing an issue before responding
|
|
96
|
+
- If asked to implement something, consider whether to respond first or just do it
|
|
97
|
+
- For complex requests, acknowledge receipt and outline your plan
|
|
98
|
+
- Tag relevant people with `@username` if needed
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-offered-task
|
|
3
|
+
description: Review a task that has been offered to you and decide whether to accept or reject it
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review Offered Task
|
|
7
|
+
|
|
8
|
+
You have been offered a task. Your job is to review it and decide whether to accept or reject it based on your capabilities and current workload.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. **Get task details**: Call the `get-task-details` tool with the provided `taskId` to understand what the task involves.
|
|
13
|
+
|
|
14
|
+
2. **Evaluate the task**: Consider:
|
|
15
|
+
- Does this task match your capabilities?
|
|
16
|
+
- Do you have the necessary context or access to complete it?
|
|
17
|
+
- Is the task description clear enough to proceed?
|
|
18
|
+
|
|
19
|
+
3. **Make a decision**:
|
|
20
|
+
- **Accept**: If you can complete this task, call `task-action` with `action: "accept"` and `taskId: "<taskId>"`. Then immediately use `/skill:work-on-task <taskId>` to start working on it.
|
|
21
|
+
- **Reject**: If you cannot complete this task, call `task-action` with `action: "reject"`, `taskId: "<taskId>"`, and provide a `reason` explaining why you're rejecting it (e.g., "Task requires Python expertise which I don't have", "Task description is too vague").
|
|
22
|
+
|
|
23
|
+
## Example Accept Flow
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
1. get-task-details taskId="abc-123"
|
|
27
|
+
2. [Review the task details]
|
|
28
|
+
3. task-action action="accept" taskId="abc-123"
|
|
29
|
+
4. /skill:work-on-task abc-123
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Example Reject Flow
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
1. get-task-details taskId="abc-123"
|
|
36
|
+
2. [Review the task details]
|
|
37
|
+
3. task-action action="reject" taskId="abc-123" reason="Task requires access to production database which I don't have"
|
|
38
|
+
4. Reply "DONE" to end the session
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Important Notes
|
|
42
|
+
|
|
43
|
+
- Always provide a clear reason when rejecting a task - this helps the lead agent reassign it appropriately
|
|
44
|
+
- If you accept, you must immediately start working on the task using `/skill:work-on-task`
|
|
45
|
+
- If you reject, the task returns to the unassigned pool for reassignment
|
|
@@ -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
|