@desplega.ai/agent-swarm 1.49.0 → 1.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/openapi.json +2070 -728
- package/package.json +10 -1
- package/src/agentmail/handlers.ts +65 -10
- package/src/agentmail/templates.ts +111 -0
- package/src/be/db.ts +1233 -7
- package/src/be/migrations/014_prompt_templates.sql +33 -0
- package/src/be/migrations/015_workflow_workspace.sql +3 -0
- package/src/be/migrations/016_active_session_runner_session.sql +4 -0
- package/src/be/migrations/017_channel_activity_cursors.sql +6 -0
- package/src/be/migrations/018_fix_seed_double_version.sql +30 -0
- package/src/be/migrations/019_skills.sql +65 -0
- package/src/be/migrations/020_approval_requests.sql +41 -0
- package/src/be/seed.ts +62 -0
- package/src/be/skill-parser.ts +70 -0
- package/src/be/skill-sync.ts +106 -0
- package/src/commands/runner.ts +320 -132
- package/src/commands/templates.ts +172 -0
- package/src/github/handlers.ts +292 -77
- package/src/github/mentions-aliases.test.ts +73 -0
- package/src/github/mentions.test.ts +3 -3
- package/src/github/mentions.ts +32 -6
- package/src/github/templates.ts +398 -0
- package/src/gitlab/handlers.ts +63 -22
- package/src/gitlab/templates.ts +140 -0
- package/src/heartbeat/heartbeat.ts +19 -10
- package/src/heartbeat/templates.ts +30 -0
- package/src/http/active-sessions.ts +27 -0
- package/src/http/approval-requests.ts +247 -0
- package/src/http/config.ts +3 -3
- package/src/http/index.ts +9 -2
- package/src/http/poll.ts +135 -14
- package/src/http/prompt-templates.ts +412 -0
- package/src/http/schedules.ts +35 -0
- package/src/http/skills.ts +479 -0
- package/src/http/workflows.ts +8 -0
- package/src/linear/sync.ts +28 -4
- package/src/linear/templates.ts +47 -0
- package/src/prompts/base-prompt.ts +41 -490
- package/src/prompts/registry.ts +57 -0
- package/src/prompts/resolver.ts +296 -0
- package/src/prompts/session-templates.ts +604 -0
- package/src/providers/claude-adapter.ts +15 -2
- package/src/providers/pi-mono-extension.ts +5 -1
- package/src/scheduler/scheduler.ts +125 -91
- package/src/server.ts +44 -0
- package/src/slack/assistant.ts +7 -4
- package/src/slack/channel-activity.ts +177 -0
- package/src/slack/handlers.ts +21 -6
- package/src/slack/templates.ts +55 -0
- package/src/tests/approval-requests.test.ts +735 -0
- package/src/tests/artifact-sdk.test.ts +12 -12
- package/src/tests/base-prompt.test.ts +49 -49
- package/src/tests/channel-activity.test.ts +363 -0
- package/src/tests/heartbeat.test.ts +1 -0
- package/src/tests/linear-webhook.test.ts +7 -3
- package/src/tests/pool-session-logs.test.ts +199 -0
- package/src/tests/prompt-template-github.test.ts +682 -0
- package/src/tests/prompt-template-remaining.test.ts +504 -0
- package/src/tests/prompt-template-resolver.test.ts +621 -0
- package/src/tests/prompt-template-session.test.ts +363 -0
- package/src/tests/prompt-templates-db.test.ts +616 -0
- package/src/tests/self-improvement.test.ts +8 -7
- package/src/tests/skill-parser.test.ts +178 -0
- package/src/tests/skill-sync.test.ts +171 -0
- package/src/tests/slack-metadata-inheritance.test.ts +1 -1
- package/src/tests/slack-thread-followups.test.ts +1 -1
- package/src/tests/structured-output.test.ts +0 -4
- package/src/tests/tool-annotations.test.ts +2 -1
- package/src/tests/update-profile-agentid.test.ts +248 -0
- package/src/tests/update-profile-auth.test.ts +195 -0
- package/src/tests/workflow-async-v2.test.ts +126 -4
- package/src/tests/workflow-definition-validation.test.ts +76 -0
- package/src/tests/workflow-executors.test.ts +4 -2
- package/src/tests/workflow-retry-v2.test.ts +1 -1
- package/src/tests/workflow-schedule-trigger.test.ts +104 -0
- package/src/tests/workflow-workspace.test.ts +272 -0
- package/src/tools/prompt-templates/delete.ts +86 -0
- package/src/tools/prompt-templates/get.ts +89 -0
- package/src/tools/prompt-templates/index.ts +5 -0
- package/src/tools/prompt-templates/list.ts +95 -0
- package/src/tools/prompt-templates/preview.ts +84 -0
- package/src/tools/prompt-templates/set.ts +117 -0
- package/src/tools/request-human-input.ts +106 -0
- package/src/tools/skills/index.ts +11 -0
- package/src/tools/skills/skill-create.ts +105 -0
- package/src/tools/skills/skill-delete.ts +67 -0
- package/src/tools/skills/skill-get.ts +75 -0
- package/src/tools/skills/skill-install-remote.ts +152 -0
- package/src/tools/skills/skill-install.ts +101 -0
- package/src/tools/skills/skill-list.ts +77 -0
- package/src/tools/skills/skill-publish.ts +123 -0
- package/src/tools/skills/skill-search.ts +43 -0
- package/src/tools/skills/skill-sync-remote.ts +128 -0
- package/src/tools/skills/skill-uninstall.ts +60 -0
- package/src/tools/skills/skill-update.ts +128 -0
- package/src/tools/store-progress.ts +22 -4
- package/src/tools/task-action.ts +20 -0
- package/src/tools/templates.ts +53 -0
- package/src/tools/tool-config.ts +23 -0
- package/src/tools/update-profile.ts +106 -34
- package/src/tools/workflows/create-workflow.ts +19 -1
- package/src/tools/workflows/update-workflow.ts +16 -1
- package/src/types.ts +109 -2
- package/src/workflows/definition.ts +30 -12
- package/src/workflows/engine.ts +40 -14
- package/src/workflows/executors/agent-task.ts +14 -3
- package/src/workflows/executors/human-in-the-loop.ts +160 -0
- package/src/workflows/executors/registry.ts +2 -0
- package/src/workflows/index.ts +1 -1
- package/src/workflows/recovery.ts +72 -0
- package/src/workflows/resume.ts +162 -12
- package/src/workflows/triggers.ts +31 -2
- package/src/workflows/version.ts +2 -0
- package/.claude/settings.json +0 -84
- package/.claude/settings.local.json +0 -117
- package/.dockerignore +0 -61
- package/.editorconfig +0 -15
- package/.entire/settings.json +0 -4
- package/.env.docker.example +0 -56
- package/.env.example +0 -78
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -78
- package/.github/ISSUE_TEMPLATE/community-template.yml +0 -77
- package/.github/ISSUE_TEMPLATE/config.yml +0 -8
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -60
- package/.github/PULL_REQUEST_TEMPLATE/community-template.md +0 -29
- package/.github/workflows/ci.yml +0 -52
- package/.github/workflows/docker-and-deploy.yml +0 -132
- package/.github/workflows/merge-gate.yml +0 -233
- package/.opencode/plugins/entire.ts +0 -133
- package/.superset/config.json +0 -6
- package/.wts-config.json +0 -4
- package/.wts-setup.ts +0 -171
- package/CHANGELOG.md +0 -447
- package/CLAUDE.md +0 -521
- package/CONTRIBUTING.md +0 -315
- package/DEPLOYMENT.md +0 -622
- package/Dockerfile +0 -65
- package/Dockerfile.worker +0 -189
- package/MCP.md +0 -841
- package/UI.md +0 -40
- package/api-entrypoint.sh +0 -56
- package/assets/agent-swarm-logo-orange.png +0 -0
- package/assets/agent-swarm-logo.png +0 -0
- package/assets/agent-swarm.mp4 +0 -0
- package/assets/agent-swarm.png +0 -0
- package/biome.json +0 -39
- package/deploy/DEPLOY.md +0 -60
- package/deploy/agent-swarm.service +0 -17
- package/deploy/docker-push.ts +0 -30
- package/deploy/install.ts +0 -85
- package/deploy/prod-db.ts +0 -42
- package/deploy/uninstall.ts +0 -12
- package/deploy/update.ts +0 -21
- package/depot.json +0 -1
- package/docker-compose.example.yml +0 -350
- package/docker-compose.local.yml +0 -119
- package/docker-entrypoint.sh +0 -632
- package/docs-site/app/api/search/route.ts +0 -4
- package/docs-site/app/docs/[[...slug]]/page.tsx +0 -87
- package/docs-site/app/docs/layout.tsx +0 -12
- package/docs-site/app/globals.css +0 -24
- package/docs-site/app/layout.config.tsx +0 -34
- package/docs-site/app/layout.tsx +0 -119
- package/docs-site/app/llms-full.txt/route.ts +0 -11
- package/docs-site/app/llms.mdx/docs/[[...slug]]/route.ts +0 -24
- package/docs-site/app/llms.txt/route.ts +0 -8
- package/docs-site/app/page.tsx +0 -5
- package/docs-site/app/robots.ts +0 -13
- package/docs-site/app/sitemap.ts +0 -37
- package/docs-site/components/api-page.client.tsx +0 -4
- package/docs-site/components/api-page.tsx +0 -7
- package/docs-site/components/mdx/mermaid.tsx +0 -55
- package/docs-site/content/docs/(documentation)/architecture/agents.mdx +0 -117
- package/docs-site/content/docs/(documentation)/architecture/hooks.mdx +0 -77
- package/docs-site/content/docs/(documentation)/architecture/memory.mdx +0 -96
- package/docs-site/content/docs/(documentation)/architecture/meta.json +0 -4
- package/docs-site/content/docs/(documentation)/architecture/overview.mdx +0 -172
- package/docs-site/content/docs/(documentation)/concepts/epics.mdx +0 -98
- package/docs-site/content/docs/(documentation)/concepts/meta.json +0 -4
- package/docs-site/content/docs/(documentation)/concepts/scheduling.mdx +0 -136
- package/docs-site/content/docs/(documentation)/concepts/services.mdx +0 -104
- package/docs-site/content/docs/(documentation)/concepts/task-lifecycle.mdx +0 -148
- package/docs-site/content/docs/(documentation)/concepts/workflows.mdx +0 -209
- package/docs-site/content/docs/(documentation)/contributing.mdx +0 -158
- package/docs-site/content/docs/(documentation)/getting-started.mdx +0 -157
- package/docs-site/content/docs/(documentation)/guides/agentmail-integration.mdx +0 -79
- package/docs-site/content/docs/(documentation)/guides/deployment.mdx +0 -171
- package/docs-site/content/docs/(documentation)/guides/github-integration.mdx +0 -81
- package/docs-site/content/docs/(documentation)/guides/gitlab-integration.mdx +0 -93
- package/docs-site/content/docs/(documentation)/guides/linear-integration.mdx +0 -98
- package/docs-site/content/docs/(documentation)/guides/meta.json +0 -13
- package/docs-site/content/docs/(documentation)/guides/sentry-integration.mdx +0 -52
- package/docs-site/content/docs/(documentation)/guides/slack-integration.mdx +0 -179
- package/docs-site/content/docs/(documentation)/guides/x402-payments.mdx +0 -154
- package/docs-site/content/docs/(documentation)/index.mdx +0 -65
- package/docs-site/content/docs/(documentation)/meta.json +0 -19
- package/docs-site/content/docs/(documentation)/reference/cli.mdx +0 -241
- package/docs-site/content/docs/(documentation)/reference/environment-variables.mdx +0 -205
- package/docs-site/content/docs/(documentation)/reference/mcp-tools.mdx +0 -449
- package/docs-site/content/docs/(documentation)/reference/meta.json +0 -4
- package/docs-site/content/docs/api-reference/active-sessions.mdx +0 -9
- package/docs-site/content/docs/api-reference/agents.mdx +0 -9
- package/docs-site/content/docs/api-reference/channels.mdx +0 -9
- package/docs-site/content/docs/api-reference/config.mdx +0 -9
- package/docs-site/content/docs/api-reference/debug.mdx +0 -9
- package/docs-site/content/docs/api-reference/ecosystem.mdx +0 -9
- package/docs-site/content/docs/api-reference/epics.mdx +0 -9
- package/docs-site/content/docs/api-reference/index.mdx +0 -32
- package/docs-site/content/docs/api-reference/memory.mdx +0 -9
- package/docs-site/content/docs/api-reference/meta.json +0 -25
- package/docs-site/content/docs/api-reference/poll.mdx +0 -9
- package/docs-site/content/docs/api-reference/repos.mdx +0 -9
- package/docs-site/content/docs/api-reference/schedules.mdx +0 -9
- package/docs-site/content/docs/api-reference/session-data.mdx +0 -9
- package/docs-site/content/docs/api-reference/stats.mdx +0 -9
- package/docs-site/content/docs/api-reference/tasks.mdx +0 -9
- package/docs-site/content/docs/api-reference/trackers.mdx +0 -9
- package/docs-site/content/docs/api-reference/webhooks.mdx +0 -9
- package/docs-site/content/docs/api-reference/workflows.mdx +0 -9
- package/docs-site/content/docs/meta.json +0 -3
- package/docs-site/lib/get-llm-text.ts +0 -10
- package/docs-site/lib/openapi.ts +0 -23
- package/docs-site/lib/source.ts +0 -8
- package/docs-site/mdx-components.tsx +0 -13
- package/docs-site/next.config.mjs +0 -29
- package/docs-site/package.json +0 -35
- package/docs-site/pnpm-lock.yaml +0 -5407
- package/docs-site/postcss.config.mjs +0 -8
- package/docs-site/public/logo.png +0 -0
- package/docs-site/scripts/generate-docs.ts +0 -171
- package/docs-site/source.config.ts +0 -17
- package/docs-site/tsconfig.json +0 -46
- package/ecosystem.config.cjs +0 -66
- package/landing/next.config.ts +0 -14
- package/landing/package.json +0 -31
- package/landing/pnpm-lock.yaml +0 -1091
- package/landing/postcss.config.mjs +0 -8
- package/landing/public/apple-touch-icon.png +0 -0
- package/landing/public/favicon.ico +0 -0
- package/landing/public/logo.png +0 -0
- package/landing/public/og-image.png +0 -0
- package/landing/public/omghost-desplega.svg +0 -30
- package/landing/public/omghost-openfort.svg +0 -9
- package/landing/src/app/actions/waitlist.ts +0 -25
- package/landing/src/app/blog/openfort-hackathon/page.tsx +0 -863
- package/landing/src/app/blog/page.tsx +0 -162
- package/landing/src/app/blog/swarm-metrics/page.tsx +0 -685
- package/landing/src/app/examples/page.tsx +0 -174
- package/landing/src/app/examples/x402/page.tsx +0 -456
- package/landing/src/app/globals.css +0 -122
- package/landing/src/app/layout.tsx +0 -134
- package/landing/src/app/page.tsx +0 -27
- package/landing/src/app/robots.ts +0 -13
- package/landing/src/app/sitemap.ts +0 -44
- package/landing/src/components/architecture.tsx +0 -163
- package/landing/src/components/cta.tsx +0 -52
- package/landing/src/components/features.tsx +0 -160
- package/landing/src/components/footer.tsx +0 -100
- package/landing/src/components/hero.tsx +0 -217
- package/landing/src/components/how-it-works.tsx +0 -165
- package/landing/src/components/navbar.tsx +0 -147
- package/landing/src/components/waitlist.tsx +0 -110
- package/landing/src/components/why-choose.tsx +0 -149
- package/landing/src/components/workshops.tsx +0 -328
- package/landing/src/lib/utils.ts +0 -6
- package/landing/tsconfig.json +0 -41
- package/misc/transcripts/2026-03-09-pi-mono-e2e-verification.md +0 -154
- package/new-ui/CLAUDE.md +0 -92
- package/new-ui/README.md +0 -73
- package/new-ui/biome.json +0 -42
- package/new-ui/components.json +0 -21
- package/new-ui/index.html +0 -25
- package/new-ui/package.json +0 -49
- package/new-ui/pnpm-lock.yaml +0 -4845
- package/new-ui/public/logo.png +0 -0
- package/new-ui/src/api/client.ts +0 -814
- package/new-ui/src/api/hooks/index.ts +0 -64
- package/new-ui/src/api/hooks/use-agents.ts +0 -58
- package/new-ui/src/api/hooks/use-channels.ts +0 -115
- package/new-ui/src/api/hooks/use-config-api.ts +0 -46
- package/new-ui/src/api/hooks/use-costs.ts +0 -122
- package/new-ui/src/api/hooks/use-db-query.ts +0 -29
- package/new-ui/src/api/hooks/use-epics.ts +0 -75
- package/new-ui/src/api/hooks/use-repos.ts +0 -61
- package/new-ui/src/api/hooks/use-schedules.ts +0 -81
- package/new-ui/src/api/hooks/use-services.ts +0 -16
- package/new-ui/src/api/hooks/use-stats.ts +0 -27
- package/new-ui/src/api/hooks/use-tasks.ts +0 -89
- package/new-ui/src/api/hooks/use-workflows.ts +0 -109
- package/new-ui/src/api/types.ts +0 -549
- package/new-ui/src/app/App.tsx +0 -13
- package/new-ui/src/app/providers.tsx +0 -32
- package/new-ui/src/app/router.tsx +0 -52
- package/new-ui/src/components/layout/app-header.tsx +0 -47
- package/new-ui/src/components/layout/app-sidebar.tsx +0 -128
- package/new-ui/src/components/layout/breadcrumbs.tsx +0 -57
- package/new-ui/src/components/layout/config-guard.tsx +0 -22
- package/new-ui/src/components/layout/root-layout.tsx +0 -40
- package/new-ui/src/components/layout/swarm-switcher.tsx +0 -85
- package/new-ui/src/components/shared/command-menu.tsx +0 -131
- package/new-ui/src/components/shared/data-grid.tsx +0 -141
- package/new-ui/src/components/shared/empty-state.tsx +0 -24
- package/new-ui/src/components/shared/error-boundary.tsx +0 -72
- package/new-ui/src/components/shared/json-viewer.tsx +0 -47
- package/new-ui/src/components/shared/name-connection-modal.tsx +0 -99
- package/new-ui/src/components/shared/page-skeleton.tsx +0 -16
- package/new-ui/src/components/shared/session-log-viewer.tsx +0 -364
- package/new-ui/src/components/shared/stats-bar.tsx +0 -132
- package/new-ui/src/components/shared/status-badge.tsx +0 -131
- package/new-ui/src/components/shared/usage-summary.tsx +0 -179
- package/new-ui/src/components/ui/alert-dialog.tsx +0 -176
- package/new-ui/src/components/ui/alert.tsx +0 -60
- package/new-ui/src/components/ui/avatar.tsx +0 -96
- package/new-ui/src/components/ui/badge.tsx +0 -46
- package/new-ui/src/components/ui/button.tsx +0 -62
- package/new-ui/src/components/ui/card.tsx +0 -75
- package/new-ui/src/components/ui/command.tsx +0 -160
- package/new-ui/src/components/ui/dialog.tsx +0 -143
- package/new-ui/src/components/ui/dropdown-menu.tsx +0 -226
- package/new-ui/src/components/ui/input.tsx +0 -21
- package/new-ui/src/components/ui/label.tsx +0 -19
- package/new-ui/src/components/ui/progress.tsx +0 -26
- package/new-ui/src/components/ui/scroll-area.tsx +0 -54
- package/new-ui/src/components/ui/select.tsx +0 -175
- package/new-ui/src/components/ui/separator.tsx +0 -28
- package/new-ui/src/components/ui/sheet.tsx +0 -132
- package/new-ui/src/components/ui/sidebar.tsx +0 -691
- package/new-ui/src/components/ui/skeleton.tsx +0 -13
- package/new-ui/src/components/ui/sonner.tsx +0 -35
- package/new-ui/src/components/ui/switch.tsx +0 -33
- package/new-ui/src/components/ui/table.tsx +0 -92
- package/new-ui/src/components/ui/tabs.tsx +0 -79
- package/new-ui/src/components/ui/textarea.tsx +0 -18
- package/new-ui/src/components/ui/tooltip.tsx +0 -51
- package/new-ui/src/components/workflows/action-node.tsx +0 -53
- package/new-ui/src/components/workflows/condition-node.tsx +0 -50
- package/new-ui/src/components/workflows/graph-utils.ts +0 -124
- package/new-ui/src/components/workflows/json-tree.tsx +0 -189
- package/new-ui/src/components/workflows/node-styles.ts +0 -10
- package/new-ui/src/components/workflows/step-detail-sheet.tsx +0 -87
- package/new-ui/src/components/workflows/trigger-node.tsx +0 -41
- package/new-ui/src/components/workflows/workflow-graph.tsx +0 -65
- package/new-ui/src/hooks/use-auto-scroll.ts +0 -82
- package/new-ui/src/hooks/use-config.ts +0 -203
- package/new-ui/src/hooks/use-keyboard-shortcuts.ts +0 -41
- package/new-ui/src/hooks/use-mobile.ts +0 -19
- package/new-ui/src/hooks/use-theme.ts +0 -60
- package/new-ui/src/lib/config.ts +0 -188
- package/new-ui/src/lib/slugs.ts +0 -71
- package/new-ui/src/lib/utils.ts +0 -120
- package/new-ui/src/main.tsx +0 -11
- package/new-ui/src/pages/agents/[id]/page.tsx +0 -492
- package/new-ui/src/pages/agents/page.tsx +0 -134
- package/new-ui/src/pages/chat/page.tsx +0 -674
- package/new-ui/src/pages/config/page.tsx +0 -1109
- package/new-ui/src/pages/dashboard/page.tsx +0 -454
- package/new-ui/src/pages/debug/page.tsx +0 -275
- package/new-ui/src/pages/epics/[id]/page.tsx +0 -809
- package/new-ui/src/pages/epics/page.tsx +0 -321
- package/new-ui/src/pages/not-found/page.tsx +0 -18
- package/new-ui/src/pages/repos/page.tsx +0 -369
- package/new-ui/src/pages/schedules/[id]/page.tsx +0 -664
- package/new-ui/src/pages/schedules/page.tsx +0 -477
- package/new-ui/src/pages/services/page.tsx +0 -128
- package/new-ui/src/pages/tasks/[id]/page.tsx +0 -670
- package/new-ui/src/pages/tasks/page.tsx +0 -592
- package/new-ui/src/pages/usage/page.tsx +0 -195
- package/new-ui/src/pages/workflow-runs/[id]/page.tsx +0 -363
- package/new-ui/src/pages/workflows/[id]/page.tsx +0 -417
- package/new-ui/src/pages/workflows/page.tsx +0 -266
- package/new-ui/src/styles/ag-grid.css +0 -36
- package/new-ui/src/styles/globals.css +0 -213
- package/new-ui/test-results/.last-run.json +0 -4
- package/new-ui/tsconfig.app.json +0 -34
- package/new-ui/tsconfig.json +0 -4
- package/new-ui/tsconfig.node.json +0 -26
- package/new-ui/vercel.json +0 -4
- package/new-ui/vite.config.ts +0 -28
- package/plugin/README.md +0 -1
- package/plugin/build-pi-skills.ts +0 -233
- package/plugin/hooks/hooks.json +0 -71
- package/prek.toml +0 -75
- package/pyproject.toml +0 -9
- package/scripts/check-db-boundary.sh +0 -60
- package/scripts/e2e-docker-provider.ts +0 -820
- package/scripts/e2e-io-schemas-test.ts +0 -807
- package/scripts/e2e-provider-test.ts +0 -220
- package/scripts/e2e-workflow-redesign.sh +0 -229
- package/scripts/e2e-workflow-test.sh +0 -285
- package/scripts/e2e-workflow-test.ts +0 -857
- package/scripts/generate-mcp-docs.ts +0 -415
- package/scripts/generate-openapi.ts +0 -26
- package/scripts/measure-tool-tokens.ts +0 -118
- package/scripts/x402-e2e-test.ts +0 -195
- package/scripts/x402-test-server.ts +0 -236
- package/scripts/x402-testnet-e2e.ts +0 -668
- package/slack-manifest.json +0 -88
- package/templates-ui/README.md +0 -46
- package/templates-ui/components.json +0 -17
- package/templates-ui/eslint.config.mjs +0 -18
- package/templates-ui/next.config.ts +0 -7
- package/templates-ui/package.json +0 -35
- package/templates-ui/pnpm-lock.yaml +0 -4571
- package/templates-ui/postcss.config.mjs +0 -7
- package/templates-ui/public/file.svg +0 -1
- package/templates-ui/public/globe.svg +0 -1
- package/templates-ui/public/logo.png +0 -0
- package/templates-ui/public/next.svg +0 -1
- package/templates-ui/public/vercel.svg +0 -1
- package/templates-ui/public/window.svg +0 -1
- package/templates-ui/src/app/[category]/[name]/page.tsx +0 -89
- package/templates-ui/src/app/api/templates/[...slug]/route.ts +0 -52
- package/templates-ui/src/app/api/templates/route.ts +0 -18
- package/templates-ui/src/app/builder/page.tsx +0 -37
- package/templates-ui/src/app/globals.css +0 -94
- package/templates-ui/src/app/layout.tsx +0 -79
- package/templates-ui/src/app/page.tsx +0 -38
- package/templates-ui/src/app/robots.ts +0 -11
- package/templates-ui/src/app/sitemap.ts +0 -31
- package/templates-ui/src/components/compose-builder.tsx +0 -442
- package/templates-ui/src/components/compose-preview.tsx +0 -117
- package/templates-ui/src/components/file-preview.tsx +0 -77
- package/templates-ui/src/components/footer.tsx +0 -40
- package/templates-ui/src/components/header.tsx +0 -41
- package/templates-ui/src/components/template-card.tsx +0 -87
- package/templates-ui/src/components/template-detail.tsx +0 -125
- package/templates-ui/src/components/template-gallery.tsx +0 -263
- package/templates-ui/src/components/ui/badge.tsx +0 -36
- package/templates-ui/src/components/ui/button.tsx +0 -57
- package/templates-ui/src/components/ui/card.tsx +0 -76
- package/templates-ui/src/components/ui/separator.tsx +0 -31
- package/templates-ui/src/components/ui/tooltip.tsx +0 -32
- package/templates-ui/src/lib/compose-generator.ts +0 -241
- package/templates-ui/src/lib/templates.ts +0 -137
- package/templates-ui/src/lib/utils.ts +0 -6
- package/templates-ui/tsconfig.json +0 -34
- package/thoughts/research/2026-02-28-openfort-viem-x402-research.md +0 -679
- package/thoughts/research/2026-02-28-x402-payments-research.md +0 -686
- package/thoughts/researcher/plans/2026-02-20-agent-self-improvement-plan.md +0 -282
- package/thoughts/researcher/research/2026-02-20-agent-self-improvement.md +0 -492
- package/thoughts/shared/plans/.gitkeep +0 -0
- package/thoughts/shared/plans/2025-12-18-slack-integration.md +0 -1195
- package/thoughts/shared/plans/2025-12-19-agent-log-streaming.md +0 -732
- package/thoughts/shared/plans/2025-12-19-role-based-swarm-plugin.md +0 -361
- package/thoughts/shared/plans/2025-12-20-mobile-responsive-ui.md +0 -501
- package/thoughts/shared/plans/2025-12-20-startup-team-swarm.md +0 -560
- package/thoughts/shared/plans/2025-12-23-runner-level-polling.md +0 -934
- package/thoughts/shared/plans/2025-12-23-runner-session-logs.md +0 -1000
- package/thoughts/shared/plans/2025-12-23-worker-lead-spawn-triggers.md +0 -568
- package/thoughts/shared/plans/2026-01-09-inverse-teleport.md +0 -1516
- package/thoughts/shared/plans/2026-01-12-agent-rename-pm2-control.md +0 -1133
- package/thoughts/shared/plans/2026-01-12-github-app-integration.md +0 -380
- package/thoughts/shared/plans/2026-01-12-lead-inbox-model.md +0 -876
- package/thoughts/shared/plans/2026-01-12-ralph-wiggum-integration.md +0 -463
- package/thoughts/shared/plans/2026-01-13-agent-concurrency.md +0 -691
- package/thoughts/shared/plans/2026-01-13-github-assignment-handling.md +0 -690
- package/thoughts/shared/plans/2026-01-13-prevent-duplicate-trigger-processing.md +0 -1071
- package/thoughts/shared/plans/2026-01-14-fix-slack-thread-context.md +0 -507
- package/thoughts/shared/plans/2026-01-15-scheduled-tasks-implementation.md +0 -565
- package/thoughts/shared/plans/2026-01-15-usage-cost-tracking-ui.md +0 -1479
- package/thoughts/shared/plans/2026-01-16-epics-feature-implementation.md +0 -1230
- package/thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md +0 -282
- package/thoughts/shared/plans/2026-03-02-claude-context-mode-integration.md +0 -328
- package/thoughts/shared/plans/2026-03-02-code-level-heartbeat.md +0 -224
- package/thoughts/shared/research/.gitkeep +0 -0
- package/thoughts/shared/research/2025-01-09-inverse-teleport-plan-review.md +0 -420
- package/thoughts/shared/research/2025-12-18-slack-integration.md +0 -442
- package/thoughts/shared/research/2025-12-19-agent-log-streaming.md +0 -339
- package/thoughts/shared/research/2025-12-19-agent-secrets-cli-research.md +0 -390
- package/thoughts/shared/research/2025-12-21-gemini-cli-integration.md +0 -376
- package/thoughts/shared/research/2025-12-22-runner-loop-architecture.md +0 -582
- package/thoughts/shared/research/2025-12-22-setup-experience-improvements.md +0 -264
- package/thoughts/shared/research/2026-01-13-lead-duplicate-trigger-processing.md +0 -223
- package/thoughts/shared/research/2026-01-14-lead-slack-thread-context.md +0 -277
- package/thoughts/shared/research/2026-01-15-ai-tracker-agent-swarm-integration.md +0 -376
- package/thoughts/shared/research/2026-01-15-auto-starting-processes-in-worker-containers.md +0 -787
- package/thoughts/shared/research/2026-01-15-scheduled-tasks.md +0 -390
- package/thoughts/shared/research/2026-01-16-epics-feature-research.md +0 -437
- package/thoughts/shared/research/2026-02-26-cliffy-mcp-tools.md +0 -159
- package/thoughts/shared/research/2026-03-03-database-migration-system-refactor.md +0 -337
- package/thoughts/swarm-researcher/plans/2026-02-23-openclaw-improvements-plan.md +0 -778
- package/thoughts/swarm-researcher/plans/2026-02-26-artifacts-localtunnel-plan.md +0 -1269
- package/thoughts/swarm-researcher/research/2026-02-23-openclaw-vs-agent-swarm-comparison.md +0 -411
- package/thoughts/swarm-researcher/research/2026-02-26-artifacts-localtunnel.md +0 -724
- package/thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md +0 -443
- package/thoughts/taras/brainstorms/2026-03-20-setup-cli-onboarding.md +0 -307
- package/thoughts/taras/plans/2026-01-22-agent-swarm-schemas.md +0 -98
- package/thoughts/taras/plans/2026-01-28-per-worker-claude-md.md +0 -617
- package/thoughts/taras/plans/2026-01-28-sentry-cli-integration.md +0 -214
- package/thoughts/taras/plans/2026-02-20-auto-improvement.md +0 -803
- package/thoughts/taras/plans/2026-02-20-env-management.md +0 -538
- package/thoughts/taras/plans/2026-02-20-memory-system.md +0 -882
- package/thoughts/taras/plans/2026-02-20-repos-knowledge.md +0 -806
- package/thoughts/taras/plans/2026-02-20-session-attach.md +0 -647
- package/thoughts/taras/plans/2026-02-20-worker-identity.md +0 -820
- package/thoughts/taras/plans/2026-02-25-feat-new-ui-visual-redesign-plan.md +0 -768
- package/thoughts/taras/plans/2026-03-04-fix-buildSystemPrompt-missing-fields.md +0 -77
- package/thoughts/taras/plans/2026-03-04-new-ui-missing-actions.md +0 -543
- package/thoughts/taras/plans/2026-03-06-one-time-scheduled-tasks.md +0 -373
- package/thoughts/taras/plans/2026-03-08-memory-self-improvement-enhancements.md +0 -512
- package/thoughts/taras/plans/2026-03-08-pi-mono-provider-implementation.md +0 -919
- package/thoughts/taras/plans/2026-03-09-templates-registry.md +0 -723
- package/thoughts/taras/plans/2026-03-10-task-working-directory.md +0 -371
- package/thoughts/taras/plans/2026-03-11-archil-per-agent-write-strategy.md +0 -621
- package/thoughts/taras/plans/2026-03-12-eliminate-inbox-route-to-tasks.md +0 -61
- package/thoughts/taras/plans/2026-03-12-slack-thread-followup-additive.md +0 -488
- package/thoughts/taras/plans/2026-03-13-slack-ai-improvements.md +0 -644
- package/thoughts/taras/plans/2026-03-16-route-wrapper-openapi.md +0 -636
- package/thoughts/taras/plans/2026-03-17-multi-api-config.md +0 -444
- package/thoughts/taras/plans/2026-03-18-agent-fs-integration.md +0 -591
- package/thoughts/taras/plans/2026-03-18-debug-db-explorer.md +0 -446
- package/thoughts/taras/plans/2026-03-18-workflow-redesign.md +0 -987
- package/thoughts/taras/plans/2026-03-19-compound-learnings.md +0 -403
- package/thoughts/taras/plans/2026-03-19-ticket-tracker-linear-integration.md +0 -860
- package/thoughts/taras/plans/2026-03-19-workflow-io-schemas-and-bugs.md +0 -899
- package/thoughts/taras/plans/2026-03-20-setup-cli-onboarding.md +0 -874
- package/thoughts/taras/plans/2026-03-20-workflow-structured-output-validation-workspace.md +0 -723
- package/thoughts/taras/research/2026-01-22-vercel-cli-integration.md +0 -287
- package/thoughts/taras/research/2026-01-27-excessive-polling-issue.md +0 -311
- package/thoughts/taras/research/2026-01-28-per-worker-claude-md.md +0 -383
- package/thoughts/taras/research/2026-01-28-sentry-cli-integration.md +0 -240
- package/thoughts/taras/research/2026-02-19-agent-native-swarm-architecture.md +0 -390
- package/thoughts/taras/research/2026-02-19-swarm-gaps-implementation.md +0 -594
- package/thoughts/taras/research/2026-02-25-dashboard-ui-design-best-practices.md +0 -825
- package/thoughts/taras/research/2026-02-26-task-detail-page-redesign.md +0 -393
- package/thoughts/taras/research/2026-03-03-new-ui-missing-actions.md +0 -168
- package/thoughts/taras/research/2026-03-05-pi-mono-provider-research.md +0 -230
- package/thoughts/taras/research/2026-03-06-workflow-engine-design.md +0 -445
- package/thoughts/taras/research/2026-03-08-drive-loop-concept.md +0 -375
- package/thoughts/taras/research/2026-03-08-pi-mono-deep-dive.md +0 -869
- package/thoughts/taras/research/2026-03-09-templates-registry.md +0 -373
- package/thoughts/taras/research/2026-03-10-agent-working-directory.md +0 -223
- package/thoughts/taras/research/2026-03-10-configurable-event-prompts.md +0 -339
- package/thoughts/taras/research/2026-03-11-archil-production-setup.md +0 -181
- package/thoughts/taras/research/2026-03-11-archil-shared-disk-write-strategies.md +0 -437
- package/thoughts/taras/research/2026-03-13-slack-ai-features.md +0 -258
- package/thoughts/taras/research/2026-03-16-openapi-docs-generation.md +0 -335
- package/thoughts/taras/research/2026-03-16-route-wrapper-openapi.md +0 -670
- package/thoughts/taras/research/2026-03-16-slack-thread-followups-e2e.md +0 -54
- package/thoughts/taras/research/2026-03-18-agent-fs-integration.md +0 -558
- package/thoughts/taras/research/2026-03-18-linear-integration-finalization.md +0 -526
- package/thoughts/taras/research/2026-03-18-workflow-redesign.md +0 -797
- package/thoughts/taras/research/2026-03-19-workflow-node-io-schemas-and-bugs.md +0 -563
- package/thoughts/taras/research/2026-03-19-workflow-structured-output-validation-workspace.md +0 -486
- package/thoughts/taras/research/2026-03-20-prompt-template-registry.md +0 -469
- package/tsconfig.json +0 -37
|
@@ -1,492 +0,0 @@
|
|
|
1
|
-
# Research: Improving Agent Self-Improvement in agent-swarm
|
|
2
|
-
|
|
3
|
-
**Author:** Researcher (worker agent)
|
|
4
|
-
**Date:** 2026-02-20
|
|
5
|
-
**Status:** Reviewed — Approved proposals: P1, P2, P4, P5, P6, P7. Deferred: P8, Tier 3. See [Implementation Plan](#implementation-plan).
|
|
6
|
-
**Repo:** desplega-ai/agent-swarm
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Executive Summary
|
|
11
|
-
|
|
12
|
-
The agent-swarm system already has foundational self-improvement mechanisms: persistent identity files (SOUL.md, IDENTITY.md, CLAUDE.md, TOOLS.md), a vector-searchable memory system, session summarization, and task completion indexing. However, these mechanisms are largely **passive** — they depend on agents voluntarily choosing to write memories, update their identity files, and search past context. This research identifies concrete gaps and proposes improvements that would make the self-improvement loop more **active, structured, and compounding**.
|
|
13
|
-
|
|
14
|
-
The proposals are organized into three tiers:
|
|
15
|
-
- **Tier 1 (High Impact, Low Effort):** Quick wins that plug existing gaps
|
|
16
|
-
- **Tier 2 (High Impact, Medium Effort):** Structural improvements to the learning loop
|
|
17
|
-
- **Tier 3 (High Impact, High Effort):** Architectural changes for compound intelligence
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Current State Analysis
|
|
22
|
-
|
|
23
|
-
### What Exists Today
|
|
24
|
-
|
|
25
|
-
| Mechanism | How It Works | Self-Improvement Role |
|
|
26
|
-
|-----------|-------------|----------------------|
|
|
27
|
-
| **SOUL.md** | Persona/values doc, stored in DB, synced to workspace, injected into system prompt | Agents can edit to refine their behavioral directives |
|
|
28
|
-
| **IDENTITY.md** | Expertise/working style, same lifecycle as SOUL.md | Agents can discover and document their strengths |
|
|
29
|
-
| **CLAUDE.md** | Personal notes (Learnings, Preferences, Important Context sections), written to `~/.claude/CLAUDE.md` on session start | Agents can accumulate session-persistent notes |
|
|
30
|
-
| **TOOLS.md** | Environment-specific knowledge (repos, services, APIs) | Agents can record operational knowledge |
|
|
31
|
-
| **start-up.sh** | Setup script with marker-based extraction, runs on container start | Agents can install tools and configure their environment |
|
|
32
|
-
| **Memory System** | SQLite-backed vector search (OpenAI text-embedding-3-small, 512d), 4 source types | Searchable long-term storage across sessions |
|
|
33
|
-
| **Session Summaries** | Claude Haiku summarizes transcript on session end, indexed into memory | Automatic learning capture from every session |
|
|
34
|
-
| **Task Completion Indexing** | Completed task output auto-indexed as agent-scoped memory | Task knowledge persists across sessions |
|
|
35
|
-
| **File Auto-Indexing** | Files written to `/workspace/{personal,shared}/memory/` are auto-indexed | Deliberate knowledge can be saved for vector search |
|
|
36
|
-
| **Shared Workspace** | `/workspace/shared/` mount + swarm-scoped memories | Cross-agent knowledge sharing |
|
|
37
|
-
|
|
38
|
-
### What's Missing (Gaps)
|
|
39
|
-
|
|
40
|
-
#### Gap 1: No Learning from Failures
|
|
41
|
-
|
|
42
|
-
Task completion indexing (`store-progress.ts:164`) only fires when `status === "completed"`. **Failed tasks are not indexed into memory.** The only record of failure context comes from session summaries (which are generic, not structured) and the `failureReason` field on the task record (which is not searchable via memory-search).
|
|
43
|
-
|
|
44
|
-
**Impact:** Agents repeat the same mistakes because failure patterns are not preserved in a searchable form.
|
|
45
|
-
|
|
46
|
-
#### Gap 2: No Structured Reflection Protocol
|
|
47
|
-
|
|
48
|
-
The default templates say "reflect on what you learned" but provide no **mechanism** to enforce or trigger reflection. Agents are instructed to update identity files and memories, but in practice they rarely do unless explicitly prompted. There is no post-task reflection step in the task lifecycle.
|
|
49
|
-
|
|
50
|
-
**Impact:** Identity files remain at their default templates for most agents. The Growth Mindset section of SOUL.md is aspirational but not operationalized.
|
|
51
|
-
|
|
52
|
-
#### Gap 3: No Memory Cleanup or Curation
|
|
53
|
-
|
|
54
|
-
There are no TTL, capacity limits, or cleanup policies for the memory system. Memories accumulate indefinitely. There is no mechanism to:
|
|
55
|
-
- Mark memories as outdated or superseded
|
|
56
|
-
- Consolidate related memories into summaries
|
|
57
|
-
- Prune low-value or redundant entries
|
|
58
|
-
|
|
59
|
-
**Impact:** As memory grows, search quality degrades (more noise in results). Session summaries pile up with diminishing returns since they cover every session, not just significant ones.
|
|
60
|
-
|
|
61
|
-
#### Gap 4: Lead Cannot Inject Learnings into Workers
|
|
62
|
-
|
|
63
|
-
The lead agent reviews task outputs via follow-up tasks, but has no mechanism to push learnings, corrections, or feedback *back into the worker's memory or identity*. The lead's observations about worker performance are ephemeral — they exist in the lead's session transcript and maybe a session summary, but are not routed to the worker.
|
|
64
|
-
|
|
65
|
-
**Impact:** The lead spots patterns (e.g., "Researcher always forgets to check CLAUDE.md for repo conventions") but cannot systematically improve the worker's behavior.
|
|
66
|
-
|
|
67
|
-
#### Gap 5: No Cross-Task Knowledge Transfer
|
|
68
|
-
|
|
69
|
-
When a worker completes a task, the output is indexed as agent-scoped memory. Other workers cannot search it unless it's explicitly written to `/workspace/shared/memory/`. The lead can see all memories, but workers are siloed.
|
|
70
|
-
|
|
71
|
-
**Impact:** Worker A's solution to a problem is invisible to Worker B even when they face the same problem. Institutional knowledge concentrates in the lead, not the swarm.
|
|
72
|
-
|
|
73
|
-
#### Gap 6: No Self-Awareness of Architecture
|
|
74
|
-
|
|
75
|
-
Agents have no awareness of how they are built. They don't know:
|
|
76
|
-
- That their source code lives in the `agent-swarm` repo
|
|
77
|
-
- What hooks fire and when
|
|
78
|
-
- How their system prompt is assembled
|
|
79
|
-
- What the memory system's limitations are (brute-force search, no cleanup, etc.)
|
|
80
|
-
|
|
81
|
-
**Impact:** When something breaks or behaves unexpectedly, agents cannot debug themselves. They can't propose improvements to their own infrastructure because they don't understand it.
|
|
82
|
-
|
|
83
|
-
#### Gap 7: Identity Evolution is Unstructured
|
|
84
|
-
|
|
85
|
-
Agents can edit SOUL.md, IDENTITY.md, CLAUDE.md at any time, but there is no:
|
|
86
|
-
- Versioning of identity changes (the DB stores only the latest)
|
|
87
|
-
- Review process for identity updates
|
|
88
|
-
- Way to diff identity changes across sessions
|
|
89
|
-
- Mechanism to roll back problematic identity changes
|
|
90
|
-
|
|
91
|
-
**Impact:** An agent could corrupt its own identity file in a single bad session, with no way to recover. There's no visibility into how identities evolve over time.
|
|
92
|
-
|
|
93
|
-
#### Gap 8: Session Summaries are Low-Signal
|
|
94
|
-
|
|
95
|
-
Session summaries are generated by Claude Haiku from the last 20KB of transcript, with a generic prompt asking for bullet points. The quality varies significantly and often produces surface-level summaries that don't capture the most valuable learnings.
|
|
96
|
-
|
|
97
|
-
**Impact:** The memory system fills up with generic summaries like "Worked on task X, encountered Y, resolved Z" without capturing the *why* or the *transferable pattern*.
|
|
98
|
-
|
|
99
|
-
#### Gap 9: No Memory-Informed Prompting
|
|
100
|
-
|
|
101
|
-
The base prompt tells agents to "use `memory-search` to recall relevant context at session boot," but this is **merely advisory and easily ignored**. There is no enforced mechanism to automatically inject relevant memories into the session context when a new task starts. The agent must manually search — and in practice, almost never does. The instruction needs to be either enforced programmatically (auto-inject at task start) or prompted much more strictly (e.g., as a hard requirement in the task lifecycle, not a suggestion).
|
|
102
|
-
|
|
103
|
-
**Impact:** Agents start most sessions cold, without leveraging their accumulated knowledge. The entire memory system's value is diminished when retrieval is optional.
|
|
104
|
-
|
|
105
|
-
#### Gap 10: No Swarm-Level Learning Metrics
|
|
106
|
-
|
|
107
|
-
There's no way to measure whether the swarm is actually improving. No metrics on:
|
|
108
|
-
- Task completion rates over time
|
|
109
|
-
- Average task duration trends
|
|
110
|
-
- Memory quality/relevance
|
|
111
|
-
- Identity file evolution frequency
|
|
112
|
-
- Failure recurrence rates
|
|
113
|
-
|
|
114
|
-
**Impact:** Cannot answer "Is the swarm getting better?" with data.
|
|
115
|
-
|
|
116
|
-
**Mitigation (prompt-level):** Until a metrics dashboard exists, the lead agent's system prompt MUST include:
|
|
117
|
-
|
|
118
|
-
> **Mandatory weekly metrics check:** Every Monday, query task completion/failure counts for the past 7 days using `get-tasks` with status filters. Compare against the previous week. Report trends in a swarm-chat message tagged #metrics. If failure rate exceeds 30%, investigate the top 3 failure reasons and file corrective tasks.
|
|
119
|
-
|
|
120
|
-
This forces a minimum viable learning loop without any code changes. The lead's CLAUDE.md should contain this instruction as a hard requirement, not a suggestion.
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## Proposals
|
|
125
|
-
|
|
126
|
-
### Tier 1: High Impact, Low Effort
|
|
127
|
-
|
|
128
|
-
#### P1: Index Failed Tasks into Memory
|
|
129
|
-
|
|
130
|
-
**Gap addressed:** Gap 1
|
|
131
|
-
|
|
132
|
-
**Change:** In `store-progress.ts`, extend the memory indexing block (line 164) to also fire when `status === "failed"`. Include the `failureReason` in the content.
|
|
133
|
-
|
|
134
|
-
```typescript
|
|
135
|
-
// Current: only indexes completed tasks
|
|
136
|
-
if (status === "completed" && result.success && result.task && output.length > 20) {
|
|
137
|
-
|
|
138
|
-
// Proposed: also index failed tasks
|
|
139
|
-
if ((status === "completed" || status === "failed") && result.success && result.task) {
|
|
140
|
-
const content = status === "completed"
|
|
141
|
-
? `Task: ${result.task.task}\n\nOutput:\n${output}`
|
|
142
|
-
: `Task: ${result.task.task}\n\nFailure:\n${failureReason}\n\nContext: This task failed. Learn from this to avoid repeating the mistake.`;
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
**Effort:** ~10 lines of code
|
|
146
|
-
**Files:** `src/tools/store-progress.ts`
|
|
147
|
-
|
|
148
|
-
#### P2: Add Architecture Self-Awareness to System Prompt
|
|
149
|
-
|
|
150
|
-
**Gap addressed:** Gap 6
|
|
151
|
-
|
|
152
|
-
**Change:** Add a new section to `BASE_PROMPT_FILESYSTEM` (or a new `BASE_PROMPT_SELF_AWARENESS` constant) in `base-prompt.ts` that gives agents essential knowledge about their own infrastructure:
|
|
153
|
-
|
|
154
|
-
```markdown
|
|
155
|
-
### How You Are Built
|
|
156
|
-
|
|
157
|
-
Your source code lives in the `desplega-ai/agent-swarm` GitHub repository. Key facts:
|
|
158
|
-
|
|
159
|
-
- **Runtime:** You run as a headless Claude Code process inside a Docker container
|
|
160
|
-
- **Orchestration:** A runner process (`src/commands/runner.ts`) polls for tasks and spawns your Claude sessions
|
|
161
|
-
- **Hooks:** Six Claude Code hooks fire during your session (SessionStart, PreCompact, PreToolUse, PostToolUse, UserPromptSubmit, Stop) — defined in `src/hooks/hook.ts`
|
|
162
|
-
- **Memory:** Your memories are stored in SQLite with OpenAI embeddings (text-embedding-3-small, 512d). Search is brute-force cosine similarity — all matching rows are loaded into memory
|
|
163
|
-
- **Identity Sync:** Your SOUL.md, IDENTITY.md, TOOLS.md are synced to the server DB on every file edit (via PostToolUse hook) and on session end (via Stop hook)
|
|
164
|
-
- **System Prompt:** Assembled from `src/prompts/base-prompt.ts` + your SOUL.md + IDENTITY.md, passed via `--append-system-prompt`. Your CLAUDE.md is written to `~/.claude/CLAUDE.md` at session start
|
|
165
|
-
- **Task Lifecycle:** Tasks go through: unassigned → offered → pending → in_progress → completed/failed. On completion, your output is auto-indexed into memory
|
|
166
|
-
- **MCP Server:** Your tools come from an MCP server at `$MCP_BASE_URL`, defined in `src/server.ts`
|
|
167
|
-
|
|
168
|
-
Use this knowledge to debug issues, propose improvements to yourself, and understand why things work the way they do.
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
**Effort:** ~20 lines added to `src/prompts/base-prompt.ts`
|
|
172
|
-
**Files:** `src/prompts/base-prompt.ts`
|
|
173
|
-
|
|
174
|
-
#### P3: Auto-Promote High-Value Task Completions to Swarm Memory
|
|
175
|
-
|
|
176
|
-
**Gap addressed:** Gap 5
|
|
177
|
-
|
|
178
|
-
**What already exists:** Task completion auto-indexing is already implemented in `store-progress.ts:163-183`. When a task completes successfully with output > 20 chars, it creates an **agent-scoped** memory with source `"task_completion"`, including the task description and output. Embeddings are generated for vector search.
|
|
179
|
-
|
|
180
|
-
**What's missing:** The existing indexing is agent-scoped only — other workers cannot search it. There is no quality filtering (every completion gets indexed regardless of value), and no mechanism to promote high-value completions to swarm-wide visibility.
|
|
181
|
-
|
|
182
|
-
**Proposed change (reduced scope):** Extend the existing indexing block to *additionally* create a swarm-scoped memory copy for high-value completions. Keep the existing agent-scoped indexing as-is.
|
|
183
|
-
|
|
184
|
-
```typescript
|
|
185
|
-
// In store-progress.ts, AFTER the existing agent-scoped memory creation (line 183):
|
|
186
|
-
const shouldShareWithSwarm =
|
|
187
|
-
result.task.taskType === "research" ||
|
|
188
|
-
result.task.tags?.includes("knowledge") ||
|
|
189
|
-
result.task.tags?.includes("shared");
|
|
190
|
-
|
|
191
|
-
if (shouldShareWithSwarm) {
|
|
192
|
-
const swarmMemory = createMemory({
|
|
193
|
-
agentId: requestInfo.agentId,
|
|
194
|
-
scope: "swarm",
|
|
195
|
-
name: `Shared: ${result.task!.task.slice(0, 80)}`,
|
|
196
|
-
content: `Task completed by agent ${requestInfo.agentId}:\n\n${taskContent}`,
|
|
197
|
-
source: "task_completion",
|
|
198
|
-
sourceTaskId: taskId,
|
|
199
|
-
});
|
|
200
|
-
const swarmEmbedding = await getEmbedding(taskContent);
|
|
201
|
-
if (swarmEmbedding) updateMemoryEmbedding(swarmMemory.id, serializeEmbedding(swarmEmbedding));
|
|
202
|
-
}
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Note: The output length heuristic (`output.length > 500`) from the original proposal is removed — task type and explicit tags are more reliable quality signals than length.
|
|
206
|
-
|
|
207
|
-
**Effort:** ~15 lines of code (additive to existing block)
|
|
208
|
-
**Files:** `src/tools/store-progress.ts`
|
|
209
|
-
|
|
210
|
-
#### P4: Improve Session Summary Quality with Structured Prompts
|
|
211
|
-
|
|
212
|
-
**Gap addressed:** Gap 8
|
|
213
|
-
|
|
214
|
-
**Change:** Replace the generic summarization prompt in `hook.ts:811-822` with a structured prompt that extracts higher-signal content:
|
|
215
|
-
|
|
216
|
-
```markdown
|
|
217
|
-
You are summarizing an AI agent's work session. Extract ONLY high-value learnings.
|
|
218
|
-
|
|
219
|
-
DO NOT include:
|
|
220
|
-
- Generic descriptions of what was done ("worked on task X")
|
|
221
|
-
- Tool calls or file reads
|
|
222
|
-
- Routine progress updates
|
|
223
|
-
|
|
224
|
-
DO include (if present):
|
|
225
|
-
- **Mistakes made and corrections** — what went wrong and what fixed it
|
|
226
|
-
- **Discovered patterns** — reusable patterns, APIs, or approaches
|
|
227
|
-
- **Codebase knowledge** — important file paths, architecture decisions, conventions
|
|
228
|
-
- **Environment knowledge** — service URLs, config details, tool versions
|
|
229
|
-
- **Failed approaches** — what was tried and didn't work (and why)
|
|
230
|
-
|
|
231
|
-
Format as a bulleted list. If the session was routine with no significant learnings, respond with just: "No significant learnings."
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
Additionally, skip indexing summaries that return "No significant learnings."
|
|
235
|
-
|
|
236
|
-
**Effort:** ~15 lines changed
|
|
237
|
-
**Files:** `src/hooks/hook.ts`
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
### Tier 2: High Impact, Medium Effort
|
|
242
|
-
|
|
243
|
-
#### P5: Post-Task Reflection Step
|
|
244
|
-
|
|
245
|
-
**Gap addressed:** Gap 2
|
|
246
|
-
|
|
247
|
-
**Change:** After `store-progress` with `status: "completed"` or `"failed"`, inject a brief reflection prompt into the session before it ends. This could be done by having the `/work-on-task` command include a reflection instruction:
|
|
248
|
-
|
|
249
|
-
In `plugin/commands/work-on-task.md`, add after the completion section:
|
|
250
|
-
|
|
251
|
-
```markdown
|
|
252
|
-
### Post-Task Reflection
|
|
253
|
-
|
|
254
|
-
After calling `store-progress`, take 30 seconds to reflect:
|
|
255
|
-
|
|
256
|
-
1. **Did you learn something transferable?** If yes, write it to `/workspace/personal/memory/` or `/workspace/shared/memory/`
|
|
257
|
-
2. **Should your IDENTITY.md change?** (new expertise, working style observation)
|
|
258
|
-
3. **Should your TOOLS.md change?** (new service, API endpoint, tool preference)
|
|
259
|
-
4. **Did you make a mistake worth remembering?** Write it to memory.
|
|
260
|
-
|
|
261
|
-
Only update files if there's a genuine change — don't write for the sake of writing.
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
**Effort:** ~20 lines in the command definition, plus testing
|
|
265
|
-
**Files:** `plugin/commands/work-on-task.md`
|
|
266
|
-
|
|
267
|
-
#### P6: Lead-to-Worker Feedback Injection
|
|
268
|
-
|
|
269
|
-
**Gap addressed:** Gap 4
|
|
270
|
-
|
|
271
|
-
**Change:** Add a new MCP tool `inject-learning` that allows the lead to push a learning or correction into a specific worker's memory:
|
|
272
|
-
|
|
273
|
-
```typescript
|
|
274
|
-
// New tool: inject-learning
|
|
275
|
-
registerTool(server, "inject-learning", {
|
|
276
|
-
description: "Push a learning or correction into a worker's memory. Use this when you notice patterns in worker behavior that should be improved.",
|
|
277
|
-
inputSchema: {
|
|
278
|
-
agentId: { type: "string", format: "uuid", description: "Target worker agent ID" },
|
|
279
|
-
learning: { type: "string", description: "The learning to inject" },
|
|
280
|
-
category: { type: "string", enum: ["mistake-pattern", "best-practice", "codebase-knowledge", "preference"], description: "Category of learning" },
|
|
281
|
-
},
|
|
282
|
-
handler: async ({ agentId, learning, category }) => {
|
|
283
|
-
await createMemory({
|
|
284
|
-
agentId,
|
|
285
|
-
scope: "agent",
|
|
286
|
-
name: `Lead feedback: ${category}`,
|
|
287
|
-
content: `[Injected by Lead]\n\nCategory: ${category}\n\n${learning}`,
|
|
288
|
-
source: "manual",
|
|
289
|
-
});
|
|
290
|
-
// Generate embedding
|
|
291
|
-
const embedding = await getEmbedding(learning);
|
|
292
|
-
if (embedding) await updateMemoryEmbedding(memoryId, embedding);
|
|
293
|
-
}
|
|
294
|
-
});
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
This could also optionally append to the worker's CLAUDE.md under a "Feedback from Lead" section.
|
|
298
|
-
|
|
299
|
-
**Effort:** ~80 lines for the tool + tests
|
|
300
|
-
**Files:** New `src/tools/inject-learning.ts`, update `src/server.ts`
|
|
301
|
-
|
|
302
|
-
#### P7: Memory-Informed Task Prompting
|
|
303
|
-
|
|
304
|
-
**Gap addressed:** Gap 9
|
|
305
|
-
|
|
306
|
-
**Change:** When the runner builds a prompt for a new task (in `buildPromptForTrigger()` at `runner.ts:793`), automatically search the agent's memories for context relevant to the task description and inject the top results into the prompt:
|
|
307
|
-
|
|
308
|
-
```typescript
|
|
309
|
-
// In buildPromptForTrigger(), after getting task details:
|
|
310
|
-
const relevantMemories = await searchMemoriesByVector(
|
|
311
|
-
db, agentId, task.task, { limit: 3, isLead: false }
|
|
312
|
-
);
|
|
313
|
-
|
|
314
|
-
if (relevantMemories.length > 0) {
|
|
315
|
-
const memoryContext = relevantMemories
|
|
316
|
-
.filter(m => m.similarity > 0.4) // Only include genuinely relevant memories
|
|
317
|
-
.map(m => `- ${m.name}: ${m.content.substring(0, 200)}`)
|
|
318
|
-
.join('\n');
|
|
319
|
-
|
|
320
|
-
if (memoryContext) {
|
|
321
|
-
prompt += `\n\n## Relevant Past Context\n${memoryContext}`;
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
**Effort:** ~40 lines, careful threshold tuning needed
|
|
327
|
-
**Files:** `src/commands/runner.ts`
|
|
328
|
-
|
|
329
|
-
#### P8: Identity Version History *(DEFERRED — too much for now)*
|
|
330
|
-
|
|
331
|
-
**Gap addressed:** Gap 7
|
|
332
|
-
|
|
333
|
-
**Change:** Add an `agent_identity_history` table that stores snapshots of identity files on every sync. The hook's `syncIdentityFilesToServer()` and `syncClaudeMdToServer()` functions would also call a new `createIdentitySnapshot()` function:
|
|
334
|
-
|
|
335
|
-
```sql
|
|
336
|
-
CREATE TABLE IF NOT EXISTS agent_identity_history (
|
|
337
|
-
id TEXT PRIMARY KEY,
|
|
338
|
-
agentId TEXT NOT NULL,
|
|
339
|
-
fileType TEXT NOT NULL CHECK(fileType IN ('soul', 'identity', 'claude', 'tools', 'setup')),
|
|
340
|
-
content TEXT NOT NULL,
|
|
341
|
-
sessionId TEXT, -- which session made the change
|
|
342
|
-
taskId TEXT, -- which task context
|
|
343
|
-
createdAt TEXT NOT NULL
|
|
344
|
-
);
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
The lead could then query this to see how agents evolve and identify problematic changes. A new MCP tool `identity-history` would let agents review their own evolution.
|
|
348
|
-
|
|
349
|
-
**Effort:** ~120 lines (schema, snapshot function, MCP tool)
|
|
350
|
-
**Files:** `src/be/db.ts`, new `src/tools/identity-history.ts`, `src/hooks/hook.ts`, `src/server.ts`
|
|
351
|
-
|
|
352
|
-
---
|
|
353
|
-
|
|
354
|
-
### Tier 3: High Impact, High Effort *(DEFERRED — tackle later)*
|
|
355
|
-
|
|
356
|
-
#### P9: Memory Consolidation and Curation *(DEFERRED)*
|
|
357
|
-
|
|
358
|
-
**Gap addressed:** Gap 3
|
|
359
|
-
|
|
360
|
-
**Change:** Implement a scheduled task that periodically consolidates the memory system:
|
|
361
|
-
|
|
362
|
-
1. **Session Summary Consolidation:** Weekly, group all session summaries from the past week and ask Claude Haiku to produce a single consolidated summary. Index the consolidation, delete the individual summaries.
|
|
363
|
-
|
|
364
|
-
2. **Duplicate Detection:** After indexing a new memory, check if any existing memories have cosine similarity > 0.9 (near-duplicates). If found, merge or flag for review.
|
|
365
|
-
|
|
366
|
-
3. **Staleness Scoring:** Track `accessedAt` to identify memories that are never retrieved. After N days without access, reduce their search weight or archive them.
|
|
367
|
-
|
|
368
|
-
4. **Memory Budget:** Implement a soft cap (e.g., 500 memories per agent). When exceeded, trigger consolidation of the oldest/least-accessed memories.
|
|
369
|
-
|
|
370
|
-
This would be implemented as a new `src/scheduler/memory-consolidation.ts` module that runs as a scheduled task.
|
|
371
|
-
|
|
372
|
-
**Effort:** ~300 lines + significant testing
|
|
373
|
-
**Files:** New `src/scheduler/memory-consolidation.ts`, update `src/be/db.ts`, `src/scheduler/scheduler.ts`
|
|
374
|
-
|
|
375
|
-
#### P10: Swarm Learning Dashboard *(DEFERRED)*
|
|
376
|
-
|
|
377
|
-
**Gap addressed:** Gap 10
|
|
378
|
-
|
|
379
|
-
**Change:** Add API endpoints and UI components to visualize swarm learning metrics:
|
|
380
|
-
|
|
381
|
-
- **Memory Growth:** Charts showing memory accumulation per agent over time
|
|
382
|
-
- **Identity Evolution:** Timeline of identity file changes with diffs
|
|
383
|
-
- **Task Performance:** Completion rates, duration trends, failure rates per agent
|
|
384
|
-
- **Memory Quality:** Search hit rates, which memories are accessed most
|
|
385
|
-
- **Knowledge Graph:** Visual representation of what topics each agent has expertise in (derived from memory content)
|
|
386
|
-
|
|
387
|
-
This would be a new section in the existing UI (`new-fe/`) with dedicated API endpoints in `src/http.ts`.
|
|
388
|
-
|
|
389
|
-
**Effort:** ~500+ lines backend + frontend
|
|
390
|
-
**Files:** `src/http.ts`, `new-fe/src/pages/`, `new-fe/src/components/`
|
|
391
|
-
|
|
392
|
-
#### P11: Structured Learning Loops via Scheduled Retrospectives *(DEFERRED)*
|
|
393
|
-
|
|
394
|
-
**Gap addressed:** Gaps 2, 3, 10
|
|
395
|
-
|
|
396
|
-
**Change:** Create pre-built scheduled tasks that enforce periodic self-improvement:
|
|
397
|
-
|
|
398
|
-
1. **Weekly Retrospective (per agent):** A scheduled task assigned to each worker that runs weekly:
|
|
399
|
-
```
|
|
400
|
-
Review your last 7 days of task completions and session summaries.
|
|
401
|
-
1. Search your memories for the past week's work.
|
|
402
|
-
2. Identify the top 3 learnings.
|
|
403
|
-
3. Update your IDENTITY.md if your expertise has grown.
|
|
404
|
-
4. Update your TOOLS.md if you discovered new tools/services.
|
|
405
|
-
5. Write a consolidated summary to /workspace/shared/memory/weekly-{agent}-{date}.md
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
2. **Monthly Swarm Review (lead):** A scheduled task for the lead:
|
|
409
|
-
```
|
|
410
|
-
Review all workers' recent task outputs and identity changes.
|
|
411
|
-
1. Use memory-search with scope "all" to find patterns.
|
|
412
|
-
2. Identify workers who need coaching.
|
|
413
|
-
3. Use inject-learning to push corrections.
|
|
414
|
-
4. Write a swarm health report to /workspace/shared/memory/.
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
3. **Daily Knowledge Digest (lead):** A lighter daily task:
|
|
418
|
-
```
|
|
419
|
-
Scan completed tasks from the last 24 hours.
|
|
420
|
-
Identify any knowledge that should be promoted to swarm-scoped memory.
|
|
421
|
-
```
|
|
422
|
-
|
|
423
|
-
These would be set up as default schedules when a swarm is first initialized.
|
|
424
|
-
|
|
425
|
-
**Effort:** ~150 lines (schedule templates, documentation)
|
|
426
|
-
**Files:** `src/scheduler/`, `plugin/commands/`, documentation
|
|
427
|
-
|
|
428
|
-
---
|
|
429
|
-
|
|
430
|
-
## Implementation Priority
|
|
431
|
-
|
|
432
|
-
Based on review feedback and impact/effort ratio:
|
|
433
|
-
|
|
434
|
-
### Approved (see [Implementation Plan](../plans/2026-02-20-agent-self-improvement-plan.md))
|
|
435
|
-
|
|
436
|
-
| Priority | Proposal | Effort | Impact | Status |
|
|
437
|
-
|----------|----------|--------|--------|--------|
|
|
438
|
-
| 1 | **P1: Index Failed Tasks** | ~10 lines | Immediate: failure knowledge preserved | Approved |
|
|
439
|
-
| 2 | **P4: Better Session Summaries** | ~15 lines | Immediate: higher signal in memory | Approved |
|
|
440
|
-
| 3 | **P2: Architecture Self-Awareness** | ~20 lines | Immediate: agents can debug themselves | Approved |
|
|
441
|
-
| 4 | **P5: Post-Task Reflection** | ~20 lines | Medium-term: structured learning habit | Approved |
|
|
442
|
-
| 5 | **P3: Auto-Promote to Swarm Memory** | ~15 lines | Medium-term: cross-agent knowledge | Approved (scoped down — agent-scoped already exists) |
|
|
443
|
-
| 6 | **P7: Memory-Informed Prompting** | ~40 lines | High: agents start warm instead of cold | Approved |
|
|
444
|
-
| 7 | **P6: Lead-to-Worker Feedback** | ~80 lines | High: closes the lead→worker learning loop | Approved |
|
|
445
|
-
|
|
446
|
-
### Deferred
|
|
447
|
-
|
|
448
|
-
| | **P8: Identity Version History** | ~120 lines | Medium: safety net + visibility | Deferred: too much for now |
|
|
449
|
-
| | **P9-P11: Tier 3 items** | 300-500+ lines | Various | Deferred: tackle later |
|
|
450
|
-
|
|
451
|
-
---
|
|
452
|
-
|
|
453
|
-
## Appendix: Current Code References
|
|
454
|
-
|
|
455
|
-
### Memory System
|
|
456
|
-
- Database schema: `src/be/db.ts:372-401`
|
|
457
|
-
- Embedding generation: `src/be/embedding.ts:15-37` (OpenAI text-embedding-3-small, 512d)
|
|
458
|
-
- Vector search: `src/be/db.ts:5088-5148` (brute-force cosine similarity, loads all rows)
|
|
459
|
-
- Content chunking: `src/be/chunking.ts:18` (markdown-aware, 2000-char chunks)
|
|
460
|
-
- Memory search MCP tool: `src/tools/memory-search.ts:8`
|
|
461
|
-
- Memory get MCP tool: `src/tools/memory-get.ts:7`
|
|
462
|
-
- Auto-indexing hook: `src/hooks/hook.ts:700-733`
|
|
463
|
-
- Session summary hook: `src/hooks/hook.ts:782-874`
|
|
464
|
-
- Task completion indexing: `src/tools/store-progress.ts:163-183`
|
|
465
|
-
- HTTP ingestion API: `src/http.ts:2288-2376`
|
|
466
|
-
|
|
467
|
-
### Identity System
|
|
468
|
-
- Default template generators: `src/be/db.ts:2342-2528`
|
|
469
|
-
- Profile update tool: `src/tools/update-profile.ts:7-216`
|
|
470
|
-
- Identity file sync (PostToolUse): `src/hooks/hook.ts:673-698`
|
|
471
|
-
- Identity file sync (Stop): `src/hooks/hook.ts:770-780`
|
|
472
|
-
- CLAUDE.md injection (SessionStart): `src/hooks/hook.ts:609-623`
|
|
473
|
-
- Runner profile fetch + file write: `src/commands/runner.ts:1670-1789`
|
|
474
|
-
|
|
475
|
-
### System Prompt
|
|
476
|
-
- Base prompt construction: `src/prompts/base-prompt.ts:328-386`
|
|
477
|
-
- Role-specific prompts: `src/prompts/base-prompt.ts:11-202` (lead) and `183-202` (worker)
|
|
478
|
-
- Filesystem instructions: `src/prompts/base-prompt.ts:204-258`
|
|
479
|
-
- Runner prompt assembly: `src/commands/runner.ts:1558-1607`
|
|
480
|
-
|
|
481
|
-
### Task Lifecycle
|
|
482
|
-
- Task creation: `src/be/db.ts:1992-2059`
|
|
483
|
-
- Task polling: `src/http.ts:529-666`
|
|
484
|
-
- store-progress: `src/tools/store-progress.ts:64-237`
|
|
485
|
-
- Follow-up task creation: `src/tools/store-progress.ts:188-227`
|
|
486
|
-
- Runner task loop: `src/commands/runner.ts:1896-2022`
|
|
487
|
-
|
|
488
|
-
### Hooks
|
|
489
|
-
- Hook handler: `src/hooks/hook.ts:174-891`
|
|
490
|
-
- Hook configuration: `plugin/hooks/hooks.json`
|
|
491
|
-
- PreCompact goal reminder: `src/hooks/hook.ts:625-648`
|
|
492
|
-
- Cancellation detection: `src/hooks/hook.ts:456-490`
|
|
File without changes
|