mcp-swarm 1.1.6 → 1.2.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/CHANGELOG.md +130 -0
- package/CHANGELOG.ru.md +130 -0
- package/README.md +51 -5
- package/README.ru.md +51 -5
- package/TELEGRAM.md +26 -0
- package/dist/bridge.js +7 -7
- package/dist/bridge.js.map +1 -1
- package/dist/companion.js +16 -18
- package/dist/companion.js.map +1 -1
- package/dist/doctor.js +113 -6
- package/dist/doctor.js.map +1 -1
- package/dist/integrations/telegram.js +1 -1
- package/dist/integrations/telegram.js.map +1 -1
- package/dist/serverSmart.js +1 -0
- package/dist/serverSmart.js.map +1 -1
- package/dist/smartTools/analytics.js +1 -0
- package/dist/smartTools/analytics.js.map +1 -1
- package/dist/smartTools/collaboration.js +1 -0
- package/dist/smartTools/collaboration.js.map +1 -1
- package/dist/smartTools/core.js +1 -0
- package/dist/smartTools/core.js.map +1 -1
- package/dist/smartTools/files.js +38 -37
- package/dist/smartTools/files.js.map +1 -1
- package/dist/smartTools/git.js +1 -0
- package/dist/smartTools/git.js.map +1 -1
- package/dist/smartTools/index.js +30 -8
- package/dist/smartTools/index.js.map +1 -1
- package/dist/smartTools/infra.js +1 -0
- package/dist/smartTools/infra.js.map +1 -1
- package/dist/smartTools/intelligence.js +1 -0
- package/dist/smartTools/intelligence.js.map +1 -1
- package/dist/smartTools/security.js +33 -0
- package/dist/smartTools/security.js.map +1 -1
- package/dist/smartTools/tasks.js +62 -63
- package/dist/smartTools/tasks.js.map +1 -1
- package/dist/smartTools/v120.js +422 -0
- package/dist/smartTools/v120.js.map +1 -0
- package/dist/utils/errorUtils.js +45 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/dist/workflows/agentBooster.js.map +1 -1
- package/dist/workflows/agentProfiles.js +126 -0
- package/dist/workflows/agentProfiles.js.map +1 -0
- package/dist/workflows/aiDefence.js.map +1 -1
- package/dist/workflows/analyticsStore.js +228 -0
- package/dist/workflows/analyticsStore.js.map +1 -0
- package/dist/workflows/autoIndex.js +225 -0
- package/dist/workflows/autoIndex.js.map +1 -0
- package/dist/workflows/batching.js +2 -1
- package/dist/workflows/batching.js.map +1 -1
- package/dist/workflows/brainstorming.js.map +1 -1
- package/dist/workflows/briefings.js +1 -1
- package/dist/workflows/briefings.js.map +1 -1
- package/dist/workflows/consensus.js +1 -1
- package/dist/workflows/consensus.js.map +1 -1
- package/dist/workflows/dependencySync.js +5 -4
- package/dist/workflows/dependencySync.js.map +1 -1
- package/dist/workflows/embeddings.js +293 -0
- package/dist/workflows/embeddings.js.map +1 -0
- package/dist/workflows/externalSync.js +6 -5
- package/dist/workflows/externalSync.js.map +1 -1
- package/dist/workflows/ghostMode.js +2 -1
- package/dist/workflows/ghostMode.js.map +1 -1
- package/dist/workflows/git.js +4 -2
- package/dist/workflows/git.js.map +1 -1
- package/dist/workflows/githubApi.js +213 -0
- package/dist/workflows/githubApi.js.map +1 -0
- package/dist/workflows/githubPr.js +2 -1
- package/dist/workflows/githubPr.js.map +1 -1
- package/dist/workflows/immuneSystem.js +3 -1
- package/dist/workflows/immuneSystem.js.map +1 -1
- package/dist/workflows/moeRouter.js.map +1 -1
- package/dist/workflows/pluginLoader.js +222 -0
- package/dist/workflows/pluginLoader.js.map +1 -0
- package/dist/workflows/qualityGate.js +4 -3
- package/dist/workflows/qualityGate.js.map +1 -1
- package/dist/workflows/scheduledTasks.js +281 -0
- package/dist/workflows/scheduledTasks.js.map +1 -0
- package/dist/workflows/setupWizard.js +246 -0
- package/dist/workflows/setupWizard.js.map +1 -0
- package/dist/workflows/sona.js.map +1 -1
- package/dist/workflows/vault.js +502 -0
- package/dist/workflows/vault.js.map +1 -0
- package/dist/workflows/vectorBackend.js +681 -0
- package/dist/workflows/vectorBackend.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,136 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
+
## [1.2.0] - 2026-02-10
|
|
13
|
+
|
|
14
|
+
### What's New
|
|
15
|
+
|
|
16
|
+
#### 🔐 Swarm Vault
|
|
17
|
+
- **Encrypted secret storage** — AES-256-GCM encryption with PBKDF2 key derivation
|
|
18
|
+
- **Session management** — Keys decrypted in memory during process, cleared on exit
|
|
19
|
+
- **Cloud backup** — Export/import vault to Telegram, GitHub Gist, Google Drive, S3, or local file
|
|
20
|
+
- **New Smart Tool** — `swarm_vault` with actions: init, unlock, get, set, delete, list, export, import, lock, status
|
|
21
|
+
|
|
22
|
+
#### 🧙 Setup Wizard
|
|
23
|
+
- **Interactive first-time setup** — Triggered on `swarm_agent init` if no config exists
|
|
24
|
+
- **Multi-lingual** — Auto-detects system locale (Russian/English)
|
|
25
|
+
- **Standard mode** — Skip all, v1.1.x compatible out of the box
|
|
26
|
+
- **Configured mode** — Choose Vault, Vector DB, Embeddings, GitHub, Profiles, Plugins
|
|
27
|
+
- **New Smart Tool** — `swarm_setup` with actions: wizard_prompt, wizard_run, config_get, config_exists
|
|
28
|
+
|
|
29
|
+
#### 🧠 Embedding Cascade
|
|
30
|
+
- **Provider cascade** — Ollama (free/local) → OpenAI (paid) → simpleEmbed v2 (offline)
|
|
31
|
+
- **simpleEmbed v2** — Enhanced with bi-grams, char n-grams, TF-IDF weighting, positional encoding
|
|
32
|
+
- **Semantic caching** — 5000-entry LRU cache, eliminates redundant API calls
|
|
33
|
+
- **Rate limiting** — Per-provider request throttling
|
|
34
|
+
- **Cost tracking** — Session-level token and USD tracking for OpenAI
|
|
35
|
+
- **New Smart Tool** — `swarm_embeddings` with actions: embed, health, costs, reset_costs, backend_health, backend_migrate, backend_health_all
|
|
36
|
+
|
|
37
|
+
#### 🗄️ Vector Backends
|
|
38
|
+
- **6 adapters** — Local HNSW, ChromaDB, Supabase pgvector, Qdrant Cloud, Pinecone, Turso
|
|
39
|
+
- **Backend migration** — Migrate all documents between any two backends
|
|
40
|
+
- **Health-check & fallback** — Auto-fallback to local if external backend is unavailable
|
|
41
|
+
- **TTL / data retention** — Automatic cleanup of old vectors by configurable TTL
|
|
42
|
+
|
|
43
|
+
#### 🧲 Auto-Index & Smart Memory
|
|
44
|
+
- **Auto-indexing** — Completed tasks, file changes, and code reviews are indexed automatically
|
|
45
|
+
- **Smart context injection** — Searches memory before task assignment for relevant past solutions
|
|
46
|
+
- **Self-correction loop** — Finds past error fixes and applies them to new similar errors
|
|
47
|
+
- **Conflict resolution memory** — Remembers merge conflict resolution patterns for automated resolution
|
|
48
|
+
- **New Smart Tool** — `swarm_memory` with 8 actions
|
|
49
|
+
|
|
50
|
+
#### 📊 Analytics
|
|
51
|
+
- **Local persistent storage** — Task history and agent metrics in JSON (`.swarm/analytics.json`)
|
|
52
|
+
- **Agent performance** — Tasks completed, avg duration, specializations per agent
|
|
53
|
+
- **New Smart Tool** — `swarm_analytics` with actions: log_task, log_event, get_tasks, get_events, get_metrics, summary, cleanup
|
|
54
|
+
|
|
55
|
+
#### 👤 Agent Profiles
|
|
56
|
+
- **6 specialist profiles** — frontend, backend, security, devops, fullstack, custom
|
|
57
|
+
- **Context-aware instructions** — Each profile provides priorities and skill lists
|
|
58
|
+
- **New Smart Tool** — `swarm_profiles` with actions: get, list, default, instructions
|
|
59
|
+
|
|
60
|
+
#### ⏰ Scheduled Tasks
|
|
61
|
+
- **Cron-like scheduler** — Define recurring tasks with standard cron syntax
|
|
62
|
+
- **Due-check system** — Tasks checked on agent heartbeat
|
|
63
|
+
- **New Smart Tool** — `swarm_scheduler` with actions: add, list, check_due, remove
|
|
64
|
+
|
|
65
|
+
#### 🔌 Plugin System
|
|
66
|
+
- **User extensions** — Load custom plugins from `~/.swarm/plugins/`
|
|
67
|
+
- **Plugin types** — embedding, vectorBackend, hook, command
|
|
68
|
+
- **Dynamic import** — Auto-discovers and loads `.js`/`.mjs` plugins
|
|
69
|
+
- **New Smart Tool** — `swarm_plugins` with actions: discover, load, load_all, init_dir
|
|
70
|
+
|
|
71
|
+
#### 🔄 GitHub Sync
|
|
72
|
+
- **Auth auto-detection** — gh CLI → git credential → GITHUB_TOKEN env → Vault
|
|
73
|
+
- **Two-way sync** — GitHub Issues ↔ Swarm Tasks with label filtering
|
|
74
|
+
- **Issue CRUD** — Create, close, and comment on issues directly from agent
|
|
75
|
+
- **New Smart Tool** — `swarm_github` with actions: auth_status, list_issues, create_issue, close_issue, sync_from_github
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
- **Smart Tools: 27 → 35** — Eight new tools added for v1.2.0 features
|
|
79
|
+
- **Tool index** — New `v120.ts` module houses all v1.2.0 tool definitions
|
|
80
|
+
- **Full type safety in v120.ts** — All `any` types replaced with `z.infer` schemas and explicit type assertions
|
|
81
|
+
|
|
82
|
+
### Improved (Round 2)
|
|
83
|
+
|
|
84
|
+
#### 🔐 Vault Password Rotation
|
|
85
|
+
- **`swarm_vault rotate`** — Re-encrypts vault with new password, preserves all keys
|
|
86
|
+
- **Fresh salt** — New PBKDF2 salt generated on each rotation for maximum security
|
|
87
|
+
|
|
88
|
+
#### ⏰ Scheduled Tasks Persistence
|
|
89
|
+
- **`lastRun` persistence** — Task execution timestamps saved to `config.json`, survive restarts
|
|
90
|
+
- **`check_missed` action** — Detects tasks that were due while Companion was offline
|
|
91
|
+
- **Trailing space fix** — Generated task IDs no longer contain trailing spaces
|
|
92
|
+
|
|
93
|
+
#### 🔌 Plugin Lifecycle
|
|
94
|
+
- **`onUnload` hook** — Plugins can now clean up resources (timers, connections) on unload
|
|
95
|
+
- **Cross-platform imports** — Fixed path normalization using `pathToFileURL` for safe dynamic imports
|
|
96
|
+
|
|
97
|
+
#### 🗄️ Vector Backend Switch
|
|
98
|
+
- **`backend_switch` action** — Change active backend via `swarm_embeddings`
|
|
99
|
+
- **Migration suggestion** — Warns if old backend has data and suggests migration to prevent data loss
|
|
100
|
+
|
|
101
|
+
### Improved (Round 3 — Type Safety & Code Quality)
|
|
102
|
+
|
|
103
|
+
#### 🛡️ Full Type Safety
|
|
104
|
+
- **`err: any` → `err: unknown`** — All ~15 catch blocks migrated to safe `unknown` error handling
|
|
105
|
+
- **`getErrorMessage()` utility** — Centralized error-to-string conversion with stack trace support (`utils/errors.ts`)
|
|
106
|
+
- **`as any` elimination** — 12 typed interfaces for vector backends (Qdrant, Supabase, Pinecone, Chroma, Turso, HNSW) replace all `as any` in `vectorBackend.ts`
|
|
107
|
+
- **`wrapResult(unknown)`** — Changed from `any` to `unknown` in all 9 smartTools files
|
|
108
|
+
- **Zod schema extraction** — Smart tool schemas moved to `const` objects for reuse and IDE autocomplete
|
|
109
|
+
|
|
110
|
+
#### 🔐 Vault Audit & Auto-Lock
|
|
111
|
+
- **Audit trail** — `swarm_vault({ action: "audit" })` returns last 500 operations with timestamps, agent names, and details
|
|
112
|
+
- **Auto-lock timer** — Vault auto-locks after configurable idle timeout (`SWARM_VAULT_TIMEOUT`, default 30 min)
|
|
113
|
+
- **`VaultAuditEntry` type** — Fully typed audit log entries
|
|
114
|
+
|
|
115
|
+
#### ⏰ Scheduled Task Pause/Resume
|
|
116
|
+
- **`pauseScheduledTask()`** — Pause individual scheduled tasks without removing them
|
|
117
|
+
- **`resumeScheduledTask()`** — Resume paused tasks, preserving next execution time
|
|
118
|
+
- **Per-task `enabled` field** — Tasks can be selectively disabled/enabled
|
|
119
|
+
|
|
120
|
+
#### 🩺 Doctor JSON Output
|
|
121
|
+
- **`mcp-swarm-doctor --json`** — Machine-readable diagnostic output for CI/CD pipelines
|
|
122
|
+
- **`DoctorResult` type** — Structured check results: `{ name, status, message, details }`
|
|
123
|
+
- **`runDoctorChecks()` export** — Programmatic access to all health checks
|
|
124
|
+
|
|
125
|
+
#### 🔄 100% ESM Migration
|
|
126
|
+
- **`require("node:crypto")` → `import { createHmac }`** — in `githubApi.ts`
|
|
127
|
+
- **`require("node:os")` → `import os`** — in `briefings.ts`
|
|
128
|
+
- **`require("ws")` → `import WebSocket`** — in `companion.ts` with safe `wsState` wrapper
|
|
129
|
+
- **Zero `require()` calls remaining** — Project is now fully ESM-only
|
|
130
|
+
|
|
131
|
+
#### 🧪 New Tests
|
|
132
|
+
- **`companionBridge.test.ts`** — 18 tests covering BridgeManager, CompanionControl, verifyWebhookSignature, Briefings exports, and Bridge type safety
|
|
133
|
+
- **HMAC verification tests** — Valid/invalid/wrong-secret/empty-payload scenarios
|
|
134
|
+
|
|
135
|
+
#### 📝 Code Quality
|
|
136
|
+
- **File-level `eslint-disable`** — Clean annotation for MCP SDK `input: any` limitation (10 smartTools files)
|
|
137
|
+
- **Debug log cleanup** — Removed `console.log` artifacts from test files
|
|
138
|
+
- **`companion.ts` WebSocket safety** — Extracted `wsState` object to prevent null-reference errors
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
12
142
|
## [1.1.6] - 2026-02-10
|
|
13
143
|
|
|
14
144
|
### What's New
|
package/CHANGELOG.ru.md
CHANGED
|
@@ -9,6 +9,136 @@
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
+
## [1.2.0] - 2026-02-10
|
|
13
|
+
|
|
14
|
+
### Что нового
|
|
15
|
+
|
|
16
|
+
#### 🔐 Swarm Vault
|
|
17
|
+
- **Шифрованное хранилище секретов** — AES-256-GCM шифрование с PBKDF2 деривацией ключа
|
|
18
|
+
- **Управление сессиями** — Ключи расшифровываются в памяти, очищаются при завершении
|
|
19
|
+
- **Облачный бэкап** — Экспорт/импорт хранилища в Telegram, GitHub Gist, Google Drive, S3 или локальный файл
|
|
20
|
+
- **Новый Smart Tool** — `swarm_vault` с действиями: init, unlock, get, set, delete, list, export, import, lock, status
|
|
21
|
+
|
|
22
|
+
#### 🧙 Мастер настройки
|
|
23
|
+
- **Интерактивная первичная настройка** — Запускается при `swarm_agent init` если конфиг не существует
|
|
24
|
+
- **Мультиязычность** — Автоопределение локали системы (русский/английский)
|
|
25
|
+
- **Стандартный режим** — Пропустить всё, совместимость с v1.1.x из коробки
|
|
26
|
+
- **Режим настройки** — Выбор Vault, Vector DB, Embeddings, GitHub, Профили, Плагины
|
|
27
|
+
- **Новый Smart Tool** — `swarm_setup` с действиями: wizard_prompt, wizard_run, config_get, config_exists
|
|
28
|
+
|
|
29
|
+
#### 🧠 Каскад эмбеддингов
|
|
30
|
+
- **Каскад провайдеров** — Ollama (бесплатно/локально) → OpenAI (платно) → simpleEmbed v2 (оффлайн)
|
|
31
|
+
- **simpleEmbed v2** — Улучшен: биграммы, char n-граммы, TF-IDF веса, позиционное кодирование
|
|
32
|
+
- **Семантическое кэширование** — LRU-кэш на 5000 записей, устраняет повторные API-вызовы
|
|
33
|
+
- **Rate limiting** — Ограничение запросов по провайдерам
|
|
34
|
+
- **Трекинг расходов** — Отслеживание токенов и USD за сессию для OpenAI
|
|
35
|
+
- **Новый Smart Tool** — `swarm_embeddings` с 7 действиями
|
|
36
|
+
|
|
37
|
+
#### 🗄️ Векторные бэкенды
|
|
38
|
+
- **6 адаптеров** — Local HNSW, ChromaDB, Supabase pgvector, Qdrant Cloud, Pinecone, Turso
|
|
39
|
+
- **Миграция** — Перенос всех документов между любыми двумя бэкендами
|
|
40
|
+
- **Health-check и фоллбэк** — Автоматический откат на локальный при недоступности внешнего
|
|
41
|
+
- **TTL / очистка данных** — Автоматическое удаление старых векторов по настраиваемому TTL
|
|
42
|
+
|
|
43
|
+
#### 🧲 Авто-индексация и Smart Memory
|
|
44
|
+
- **Авто-индексация** — Завершённые задачи, изменения файлов и ревью индексируются автоматически
|
|
45
|
+
- **Smart Context Injection** — Поиск по памяти перед назначением задачи
|
|
46
|
+
- **Self-Correction Loop** — Поиск прошлых исправлений ошибок для новых похожих ошибок
|
|
47
|
+
- **Conflict Memory** — Запоминание паттернов разрешения merge-конфликтов
|
|
48
|
+
- **Новый Smart Tool** — `swarm_memory` с 8 действиями
|
|
49
|
+
|
|
50
|
+
#### 📊 Аналитика
|
|
51
|
+
- **Локальное хранение** — История задач и метрики агентов в JSON (`.swarm/analytics.json`)
|
|
52
|
+
- **Производительность агентов** — Количество задач, среднее время, специализации
|
|
53
|
+
- **Новый Smart Tool** — `swarm_analytics` с действиями: log_task, log_event, get_tasks, get_events, get_metrics, summary, cleanup
|
|
54
|
+
|
|
55
|
+
#### 👤 Профили агентов
|
|
56
|
+
- **6 профилей-специалистов** — frontend, backend, security, devops, fullstack, custom
|
|
57
|
+
- **Контекстные инструкции** — Каждый профиль имеет приоритеты и список навыков
|
|
58
|
+
- **Новый Smart Tool** — `swarm_profiles` с действиями: get, list, default, instructions
|
|
59
|
+
|
|
60
|
+
#### ⏰ Запланированные задачи
|
|
61
|
+
- **Крон-подобный планировщик** — Определение повторяющихся задач стандартным cron-синтаксисом
|
|
62
|
+
- **Система проверки** — Задачи проверяются при heartbeat агента
|
|
63
|
+
- **Новый Smart Tool** — `swarm_scheduler` с действиями: add, list, check_due, remove
|
|
64
|
+
|
|
65
|
+
#### 🔌 Система плагинов
|
|
66
|
+
- **Пользовательские расширения** — Загрузка плагинов из `~/.swarm/plugins/`
|
|
67
|
+
- **Типы плагинов** — embedding, vectorBackend, hook, command
|
|
68
|
+
- **Динамический импорт** — Автоматическое обнаружение и загрузка .js/.mjs файлов
|
|
69
|
+
- **Новый Smart Tool** — `swarm_plugins` с действиями: discover, load, load_all, init_dir
|
|
70
|
+
|
|
71
|
+
#### 🔄 GitHub синхронизация
|
|
72
|
+
- **Автоопределение авторизации** — gh CLI → git credential → GITHUB_TOKEN env → Vault
|
|
73
|
+
- **Двусторонняя синхронизация** — GitHub Issues ↔ Swarm Tasks с фильтрацией по лейблам
|
|
74
|
+
- **CRUD для Issues** — Создание, закрытие и комментирование из агента
|
|
75
|
+
- **Новый Smart Tool** — `swarm_github` с действиями: auth_status, list_issues, create_issue, close_issue, sync_from_github
|
|
76
|
+
|
|
77
|
+
### Изменено
|
|
78
|
+
- **Smart Tools: 27 → 35** — Добавлены 8 новых тулов для фич v1.2.0
|
|
79
|
+
- **Индекс тулов** — Новый модуль `v120.ts` содержит все определения тулов v1.2.0
|
|
80
|
+
- **Полная типобезопасность v120.ts** — Все `any` заменены на `z.infer` схемы и явные type assertions
|
|
81
|
+
|
|
82
|
+
### Улучшено (Раунд 2)
|
|
83
|
+
|
|
84
|
+
#### 🔐 Ротация пароля Vault
|
|
85
|
+
- **`swarm_vault rotate`** — Перешифрование хранилища новым паролем, все ключи сохраняются
|
|
86
|
+
- **Свежий salt** — Новый PBKDF2 salt генерируется при каждой ротации
|
|
87
|
+
|
|
88
|
+
#### ⏰ Персистентность запланированных задач
|
|
89
|
+
- **`lastRun` персистентность** — Время выполнения задач сохраняется в `config.json`, переживает перезапуски
|
|
90
|
+
- **`check_missed` действие** — Обнаружение задач, пропущенных пока Companion был оффлайн
|
|
91
|
+
- **Исправление пробелов** — Сгенерированные ID задач больше не содержат хвостовых пробелов
|
|
92
|
+
|
|
93
|
+
#### 🔌 Жизненный цикл плагинов
|
|
94
|
+
- **`onUnload` хук** — Плагины теперь могут освобождать ресурсы (таймеры, соединения) при выгрузке
|
|
95
|
+
- **Кросс-платформенный импорт** — Исправлена нормализация путей через `pathToFileURL`
|
|
96
|
+
|
|
97
|
+
#### 🗄️ Переключение векторного бэкенда
|
|
98
|
+
- **`backend_switch` действие** — Смена активного бэкенда через `swarm_embeddings`
|
|
99
|
+
- **Предложение миграции** — Предупреждает если у старого бэкенда есть данные
|
|
100
|
+
|
|
101
|
+
### Улучшено (Раунд 3 — Типобезопасность и качество кода)
|
|
102
|
+
|
|
103
|
+
#### 🛡️ Полная типобезопасность
|
|
104
|
+
- **`err: any` → `err: unknown`** — Все ~15 catch-блоков мигрированы на безопасную обработку `unknown`
|
|
105
|
+
- **Утилита `getErrorMessage()`** — Централизованная конвертация ошибок в строку с поддержкой stack trace (`utils/errors.ts`)
|
|
106
|
+
- **Удаление `as any`** — 12 типизированных интерфейсов для векторных бэкендов (Qdrant, Supabase, Pinecone, Chroma, Turso, HNSW) заменяют все `as any` в `vectorBackend.ts`
|
|
107
|
+
- **`wrapResult(unknown)`** — Изменён с `any` на `unknown` во всех 9 файлах smartTools
|
|
108
|
+
- **Извлечение Zod-схем** — Схемы Smart Tools вынесены в `const`-объекты для переиспользования и автодополнения IDE
|
|
109
|
+
|
|
110
|
+
#### 🔐 Vault Audit и авто-блокировка
|
|
111
|
+
- **Аудит-трейл** — `swarm_vault({ action: "audit" })` возвращает последние 500 операций с метками времени, именами агентов и деталями
|
|
112
|
+
- **Таймер авто-блокировки** — Vault автоматически блокируется после настраиваемого таймаута простоя (`SWARM_VAULT_TIMEOUT`, по умолчанию 30 мин)
|
|
113
|
+
- **Тип `VaultAuditEntry`** — Полностью типизированные записи аудит-лога
|
|
114
|
+
|
|
115
|
+
#### ⏰ Пауза/возобновление планируемых задач
|
|
116
|
+
- **`pauseScheduledTask()`** — Приостановка отдельных задач без удаления
|
|
117
|
+
- **`resumeScheduledTask()`** — Возобновление приостановленных задач с сохранением времени следующего запуска
|
|
118
|
+
- **Поле `enabled` для каждой задачи** — Задачи можно выборочно отключать/включать
|
|
119
|
+
|
|
120
|
+
#### 🩺 Doctor JSON-вывод
|
|
121
|
+
- **`mcp-swarm-doctor --json`** — Машиночитаемый диагностический вывод для CI/CD пайплайнов
|
|
122
|
+
- **Тип `DoctorResult`** — Структурированные результаты проверок: `{ name, status, message, details }`
|
|
123
|
+
- **Экспорт `runDoctorChecks()`** — Программный доступ ко всем проверкам здоровья
|
|
124
|
+
|
|
125
|
+
#### 🔄 100% ESM миграция
|
|
126
|
+
- **`require("node:crypto")` → `import { createHmac }`** — в `githubApi.ts`
|
|
127
|
+
- **`require("node:os")` → `import os`** — в `briefings.ts`
|
|
128
|
+
- **`require("ws")` → `import WebSocket`** — в `companion.ts` с безопасной обёрткой `wsState`
|
|
129
|
+
- **Ноль `require()` вызовов** — Проект теперь полностью ESM-only
|
|
130
|
+
|
|
131
|
+
#### 🧪 Новые тесты
|
|
132
|
+
- **`companionBridge.test.ts`** — 18 тестов: BridgeManager, CompanionControl, verifyWebhookSignature, экспорты Briefings, типобезопасность Bridge
|
|
133
|
+
- **Тесты HMAC-верификации** — Сценарии: валидная/невалидная/чужой-секрет/пустой-payload
|
|
134
|
+
|
|
135
|
+
#### 📝 Качество кода
|
|
136
|
+
- **File-level `eslint-disable`** — Чистая аннотация для ограничения MCP SDK `input: any` (10 файлов smartTools)
|
|
137
|
+
- **Очистка debug-логов** — Удалены артефакты `console.log` из тестовых файлов
|
|
138
|
+
- **`companion.ts` WebSocket safety** — Извлечён объект `wsState` для предотвращения null-reference ошибок
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
12
142
|
## [1.1.6] - 2026-02-10
|
|
13
143
|
|
|
14
144
|
### Что нового
|
package/README.md
CHANGED
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
<img src="./assets/banner.png" alt="MCP Swarm Banner" width="800" />
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
|
-
# 🐝 MCP Swarm v1.
|
|
15
|
+
# 🐝 MCP Swarm v1.2.0 — Universal AI Agent Coordination Platform
|
|
16
16
|
|
|
17
|
-
> 🐝 **v1.
|
|
17
|
+
> 🐝 **v1.2.0 — Platform Expansion:** 35 Smart Tools (9 new), Vault with audit trail & auto-lock, Setup Wizard, Analytics Store, Embeddings Cascade (multi-provider), Vector Backends (6 adapters: Local, Chroma, Supabase, Qdrant, Pinecone, Turso), Auto-Index, Agent Profiles, Scheduled Tasks with pause/resume, Plugin Loader, Doctor CLI (`--json`), 100% ESM, full type safety. Update: `npm install -g mcp-swarm@latest`
|
|
18
18
|
|
|
19
19
|
**MCP Swarm** is a global "nervous system" for your AI assistants. It turns separate agents (Claude, Cursor, Windsurf, OpenCode) into a coordinated team that can work on massive projects without conflicts or context loss.
|
|
20
20
|
|
|
@@ -57,9 +57,9 @@ When you use multiple AI tools simultaneously, they often collide: editing the s
|
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
60
|
-
## 🛠
|
|
60
|
+
## 🛠 35 Smart Tools: The Swarm Toolkit
|
|
61
61
|
|
|
62
|
-
In v1.0
|
|
62
|
+
In v1.2.0, we expanded to **35 Smart Tools** (from 26 in v1.1.x) — 9 new tools for secrets, analytics, embeddings, vector backends, auto-indexing, agent profiles, scheduled tasks, and plugins. Each tool uses an `action` parameter to expose multiple operations.
|
|
63
63
|
|
|
64
64
|
### 🚀 Core System (2)
|
|
65
65
|
|
|
@@ -127,6 +127,20 @@ In v1.0.2, we **consolidated 54 tools into 26** — zero feature loss, 2× fewer
|
|
|
127
127
|
| 25 | **swarm_clusters** | clusters + conflict | `init`, `list`, `find`, `conflict_predict`, `conflict_hotspots` |
|
|
128
128
|
| 26 | **swarm_telegram** | telegram + qa | `setup`, `send`, `notify_*`, `qa_start`, `qa_iterate`, `qa_report` |
|
|
129
129
|
|
|
130
|
+
### 🆕 New in v1.2.0 (8)
|
|
131
|
+
|
|
132
|
+
| # | Tool | Description | Key Actions |
|
|
133
|
+
|---|------|-------------|-------------|
|
|
134
|
+
| 27 | **swarm_vault** | Secret management (AES-256-GCM) | `init`, `unlock`, `set`, `get`, `delete`, `list`, `rotate`, `export`, `import`, `lock`, `status`, `audit` |
|
|
135
|
+
| 28 | **swarm_analytics** | Task/event metrics & storage | `log_task`, `log_event`, `get_tasks`, `get_events`, `get_metrics`, `summary`, `cleanup` |
|
|
136
|
+
| 29 | **swarm_memory** | Auto-index & smart context | `index_task`, `index_file`, `index_review`, `smart_context`, `find_error_solution`, `record_error_fix` |
|
|
137
|
+
| 30 | **swarm_embeddings** | Multi-provider embeddings + backends | `embed`, `health`, `costs`, `backend_status`, `backend_migrate`, `backend_switch`, `backend_health` |
|
|
138
|
+
| 31 | **swarm_profiles** | Agent profiles & specialization | `get`, `list`, `default`, `instructions` |
|
|
139
|
+
| 32 | **swarm_scheduler** | Cron-based task scheduler | `add`, `list`, `check_due`, `check_missed`, `remove` |
|
|
140
|
+
| 33 | **swarm_plugins** | Plugin loader & discovery | `discover`, `load`, `load_all`, `init_dir` |
|
|
141
|
+
| 34 | **swarm_github** | GitHub Issue ↔ Task sync | `auth_status`, `list_issues`, `create_issue`, `close_issue`, `sync_from_github` |
|
|
142
|
+
| 35 | **swarm_setup** | Setup wizard & config | `wizard_prompt`, `wizard_run`, `config_get`, `config_exists` |
|
|
143
|
+
|
|
130
144
|
---
|
|
131
145
|
|
|
132
146
|
### Usage Examples
|
|
@@ -1094,6 +1108,37 @@ cloudflare/
|
|
|
1094
1108
|
|
|
1095
1109
|
---
|
|
1096
1110
|
|
|
1111
|
+
## 🩺 Doctor — Health Check CLI
|
|
1112
|
+
|
|
1113
|
+
```bash
|
|
1114
|
+
# Human-readable output
|
|
1115
|
+
npx mcp-swarm-doctor
|
|
1116
|
+
|
|
1117
|
+
# JSON output for CI/CD pipelines
|
|
1118
|
+
npx mcp-swarm-doctor --json
|
|
1119
|
+
```
|
|
1120
|
+
|
|
1121
|
+
**Example output:**
|
|
1122
|
+
```
|
|
1123
|
+
🩺 MCP Swarm Doctor
|
|
1124
|
+
✅ Node.js version: v23.11.1 (>= 18.0.0)
|
|
1125
|
+
✅ Package installed: mcp-swarm@1.2.0
|
|
1126
|
+
✅ TypeScript compiled: dist/ exists
|
|
1127
|
+
✅ Hub URL configured: wss://mcp-swarm-hub.example.workers.dev/ws
|
|
1128
|
+
⚠️ Telegram not configured: TELEGRAM_USER_ID is missing
|
|
1129
|
+
```
|
|
1130
|
+
|
|
1131
|
+
**JSON mode** (`--json`) returns structured results:
|
|
1132
|
+
```json
|
|
1133
|
+
[
|
|
1134
|
+
{ "name": "node-version", "status": "pass", "message": "v23.11.1 (>= 18.0.0)" },
|
|
1135
|
+
{ "name": "package", "status": "pass", "message": "mcp-swarm@1.2.0" },
|
|
1136
|
+
{ "name": "telegram", "status": "warn", "message": "TELEGRAM_USER_ID is missing" }
|
|
1137
|
+
]
|
|
1138
|
+
```
|
|
1139
|
+
|
|
1140
|
+
---
|
|
1141
|
+
|
|
1097
1142
|
## 📝 Changelog
|
|
1098
1143
|
|
|
1099
1144
|
See [CHANGELOG.md](./CHANGELOG.md)
|
|
@@ -1126,4 +1171,5 @@ Your feedback shapes the future of the project:
|
|
|
1126
1171
|
|
|
1127
1172
|
## 📜 License
|
|
1128
1173
|
|
|
1129
|
-
MIT © 2025
|
|
1174
|
+
MIT © 2025–2026
|
|
1175
|
+
|
package/README.ru.md
CHANGED
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
<img src="./assets/banner.png" alt="MCP Swarm Banner" width="800" />
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
|
-
# 🐝 MCP Swarm v1.
|
|
15
|
+
# 🐝 MCP Swarm v1.2.0 — Универсальная Платформа Координации AI-Агентов
|
|
16
16
|
|
|
17
|
-
> 🐝 **v1.
|
|
17
|
+
> 🐝 **v1.2.0 — Расширение платформы:** 35 Smart Tools (9 новых), Vault с аудит-трейлом и авто-блокировкой, Setup Wizard, Analytics Store, Embeddings Cascade (много-провайдерные эмбеддинги), Vector Backends (6 адаптеров: Local, Chroma, Supabase, Qdrant, Pinecone, Turso), Auto-Index, Профили агентов, Планировщик с паузой/возобновлением, Plugin Loader, Doctor CLI (`--json`), 100% ESM, полная типобезопасность. Обновитесь: `npm install -g mcp-swarm@latest`
|
|
18
18
|
|
|
19
19
|
**MCP Swarm** — это глобальная «нервная система» для ваших AI-помощников. Она превращает разрозненных агентов (Claude, Cursor, Windsurf, OpenCode) в слаженную команду, способную работать над огромными проектами без конфликтов и потери контекста.
|
|
20
20
|
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
61
|
-
## 🛠
|
|
61
|
+
## 🛠 35 Smart Tools: Инструментарий Swarm
|
|
62
62
|
|
|
63
|
-
В v1.0
|
|
63
|
+
В v1.2.0 мы расширили набор до **35 Smart Tools** (с 26 в v1.1.x) — 9 новых инструментов для секретов, аналитики, эмбеддингов, векторных бэкендов, авто-индексации, профилей агентов, планировщика задач и плагинов. Каждый инструмент использует параметр `action` для доступа к нескольким операциям.
|
|
64
64
|
|
|
65
65
|
### 🚀 Ядро системы (2)
|
|
66
66
|
|
|
@@ -128,6 +128,20 @@
|
|
|
128
128
|
| 25 | **swarm_clusters** | clusters + conflict | `init`, `list`, `find`, `conflict_predict`, `conflict_hotspots` |
|
|
129
129
|
| 26 | **swarm_telegram** | telegram + qa | `setup`, `send`, `notify_*`, `qa_start`, `qa_iterate`, `qa_report` |
|
|
130
130
|
|
|
131
|
+
### 🆕 Новое в v1.2.0 (8)
|
|
132
|
+
|
|
133
|
+
| # | Инструмент | Описание | Основные действия |
|
|
134
|
+
|---|-----------|----------|-------------------|
|
|
135
|
+
| 27 | **swarm_vault** | Управление секретами (AES-256-GCM) | `init`, `unlock`, `set`, `get`, `delete`, `list`, `rotate`, `export`, `import`, `lock`, `status`, `audit` |
|
|
136
|
+
| 28 | **swarm_analytics** | Метрики задач/событий | `log_task`, `log_event`, `get_tasks`, `get_events`, `get_metrics`, `summary`, `cleanup` |
|
|
137
|
+
| 29 | **swarm_memory** | Авто-индексация и умный контекст | `index_task`, `index_file`, `index_review`, `smart_context`, `find_error_solution`, `record_error_fix` |
|
|
138
|
+
| 30 | **swarm_embeddings** | Много-провайдерные эмбеддинги + бэкенды | `embed`, `health`, `costs`, `backend_status`, `backend_migrate`, `backend_switch`, `backend_health` |
|
|
139
|
+
| 31 | **swarm_profiles** | Профили агентов и специализация | `get`, `list`, `default`, `instructions` |
|
|
140
|
+
| 32 | **swarm_scheduler** | Cron-планировщик задач | `add`, `list`, `check_due`, `check_missed`, `remove` |
|
|
141
|
+
| 33 | **swarm_plugins** | Загрузчик и обнаружение плагинов | `discover`, `load`, `load_all`, `init_dir` |
|
|
142
|
+
| 34 | **swarm_github** | GitHub Issue ↔ Task синх. | `auth_status`, `list_issues`, `create_issue`, `close_issue`, `sync_from_github` |
|
|
143
|
+
| 35 | **swarm_setup** | Мастер настройки и конфиг | `wizard_prompt`, `wizard_run`, `config_get`, `config_exists` |
|
|
144
|
+
|
|
131
145
|
---
|
|
132
146
|
|
|
133
147
|
### Примеры использования
|
|
@@ -895,6 +909,37 @@ cloudflare/
|
|
|
895
909
|
|
|
896
910
|
---
|
|
897
911
|
|
|
912
|
+
## 🩺 Doctor — CLI диагностики
|
|
913
|
+
|
|
914
|
+
```bash
|
|
915
|
+
# Человекочитаемый вывод
|
|
916
|
+
npx mcp-swarm-doctor
|
|
917
|
+
|
|
918
|
+
# JSON-вывод для CI/CD пайплайнов
|
|
919
|
+
npx mcp-swarm-doctor --json
|
|
920
|
+
```
|
|
921
|
+
|
|
922
|
+
**Пример вывода:**
|
|
923
|
+
```
|
|
924
|
+
🩺 MCP Swarm Doctor
|
|
925
|
+
✅ Node.js version: v23.11.1 (>= 18.0.0)
|
|
926
|
+
✅ Package installed: mcp-swarm@1.2.0
|
|
927
|
+
✅ TypeScript compiled: dist/ exists
|
|
928
|
+
✅ Hub URL configured: wss://mcp-swarm-hub.example.workers.dev/ws
|
|
929
|
+
⚠️ Telegram not configured: TELEGRAM_USER_ID is missing
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
**JSON-режим** (`--json`) возвращает структурированные результаты:
|
|
933
|
+
```json
|
|
934
|
+
[
|
|
935
|
+
{ "name": "node-version", "status": "pass", "message": "v23.11.1 (>= 18.0.0)" },
|
|
936
|
+
{ "name": "package", "status": "pass", "message": "mcp-swarm@1.2.0" },
|
|
937
|
+
{ "name": "telegram", "status": "warn", "message": "TELEGRAM_USER_ID is missing" }
|
|
938
|
+
]
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
---
|
|
942
|
+
|
|
898
943
|
## 📝 Changelog
|
|
899
944
|
|
|
900
945
|
См. [CHANGELOG.md](./CHANGELOG.md)
|
|
@@ -926,4 +971,5 @@ PRs welcome! Основные принципы:
|
|
|
926
971
|
|
|
927
972
|
## 📜 License
|
|
928
973
|
|
|
929
|
-
MIT © 2025
|
|
974
|
+
MIT © 2025–2026
|
|
975
|
+
|
package/TELEGRAM.md
CHANGED
|
@@ -150,6 +150,19 @@ IDE starts → Companion reads TELEGRAM_USER_ID + TELEGRAM_BOT_URL from env
|
|
|
150
150
|
|
|
151
151
|
---
|
|
152
152
|
|
|
153
|
+
## Hub Auto-Notifications (v1.1.6)
|
|
154
|
+
|
|
155
|
+
Hub automatically sends real-time alerts to your Telegram:
|
|
156
|
+
|
|
157
|
+
- `task_created` — New task added
|
|
158
|
+
- `task_completed` — Task finished
|
|
159
|
+
- `swarm_stopped` — Swarm paused/stopped
|
|
160
|
+
- `swarm_resumed` — Swarm resumed
|
|
161
|
+
- `urgent` — Urgent preemption triggered
|
|
162
|
+
- `agent_died` — Agent disconnected unexpectedly
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
153
166
|
## Deploy Your Own Bot (Optional)
|
|
154
167
|
|
|
155
168
|
If you want your own Telegram bot instance, follow these steps:
|
|
@@ -375,6 +388,19 @@ IDE запускается → Companion читает TELEGRAM_USER_ID + TELEGRA
|
|
|
375
388
|
|
|
376
389
|
---
|
|
377
390
|
|
|
391
|
+
## Авто-уведомления Hub (v1.1.6)
|
|
392
|
+
|
|
393
|
+
Hub автоматически шлёт уведомления в Telegram о критических событиях:
|
|
394
|
+
|
|
395
|
+
- `task_created` — Новая задача
|
|
396
|
+
- `task_completed` — Задача завершена
|
|
397
|
+
- `swarm_stopped` — Рой остановлен/на паузе
|
|
398
|
+
- `swarm_resumed` — Рой возобновил работу
|
|
399
|
+
- `urgent` — Срочное переназначение
|
|
400
|
+
- `agent_died` — Агент неожиданно отключился
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
378
404
|
## Деплой своего бота (Опционально)
|
|
379
405
|
|
|
380
406
|
Если вы хотите свой экземпляр Telegram-бота:
|
package/dist/bridge.js
CHANGED
|
@@ -4,11 +4,9 @@
|
|
|
4
4
|
* Обеспечивает доступ к локальным файлам для Remote MCP Server.
|
|
5
5
|
* Поддерживает несколько проектов одновременно.
|
|
6
6
|
*/
|
|
7
|
-
import
|
|
7
|
+
import WebSocket from "ws";
|
|
8
8
|
import { getRepoRoot } from "./workflows/repo.js";
|
|
9
|
-
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
11
|
-
const WS = require("ws");
|
|
9
|
+
import { getErrorMessage } from "./utils/errorUtils.js";
|
|
12
10
|
// ============ BRIDGE MANAGER ============
|
|
13
11
|
export class BridgeManager {
|
|
14
12
|
connections = new Map();
|
|
@@ -85,7 +83,7 @@ export class BridgeManager {
|
|
|
85
83
|
url.pathname = "/bridge";
|
|
86
84
|
url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
|
|
87
85
|
url.searchParams.set("repoPath", repoPath);
|
|
88
|
-
const ws = new
|
|
86
|
+
const ws = new WebSocket(url.toString());
|
|
89
87
|
connection.ws = ws;
|
|
90
88
|
ws.on("open", () => {
|
|
91
89
|
connection.connected = true;
|
|
@@ -158,7 +156,7 @@ export class BridgeManager {
|
|
|
158
156
|
catch (err) {
|
|
159
157
|
ws.send(JSON.stringify({
|
|
160
158
|
requestId,
|
|
161
|
-
result: { bridgeConnected: true, error: err
|
|
159
|
+
result: { bridgeConnected: true, error: getErrorMessage(err) },
|
|
162
160
|
}));
|
|
163
161
|
}
|
|
164
162
|
}
|
|
@@ -186,15 +184,17 @@ export class BridgeManager {
|
|
|
186
184
|
return result;
|
|
187
185
|
}
|
|
188
186
|
catch (err) {
|
|
189
|
-
return { ok: false, error:
|
|
187
|
+
return { ok: false, error: getErrorMessage(err) };
|
|
190
188
|
}
|
|
191
189
|
}
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
192
191
|
toolHandlers = null;
|
|
193
192
|
async buildToolHandlers() {
|
|
194
193
|
const { allSmartTools } = await import("./smartTools/index.js");
|
|
195
194
|
this.toolHandlers = new Map();
|
|
196
195
|
for (const tool of allSmartTools) {
|
|
197
196
|
// Each smart tool is [name, schema, handler]
|
|
197
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
198
198
|
const [name, , handler] = tool;
|
|
199
199
|
this.toolHandlers.set(name, handler);
|
|
200
200
|
}
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|