swarmdo 1.27.0 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/helpers/auto-memory-hook.mjs +71 -34
- package/.claude-plugin/README.md +3 -3
- package/.claude-plugin/docs/INSTALLATION.md +1 -1
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +1 -1
- package/.claude-plugin/docs/QUICKSTART.md +3 -3
- package/.claude-plugin/hooks/hooks.json +19 -1
- package/.claude-plugin/marketplace.json +17 -17
- package/.claude-plugin/plugin.json +7 -39
- package/.claude-plugin/scripts/install.sh +3 -3
- package/.claude-plugin/scripts/swarmdo-hook.sh +1 -1
- package/.claude-plugin/scripts/verify.sh +2 -2
- package/README.md +11 -9
- package/package.json +1 -1
- package/v3/@swarmdo/cli/.claude/helpers/auto-memory-hook.mjs +70 -33
- package/v3/@swarmdo/cli/bin/cli.js +38 -0
- package/v3/@swarmdo/cli/dist/src/apply/apply.d.ts +6 -0
- package/v3/@swarmdo/cli/dist/src/apply/apply.js +41 -8
- package/v3/@swarmdo/cli/dist/src/commands/apply.js +17 -4
- package/v3/@swarmdo/cli/dist/src/commands/compact-snapshot.d.ts +17 -0
- package/v3/@swarmdo/cli/dist/src/commands/compact-snapshot.js +133 -0
- package/v3/@swarmdo/cli/dist/src/commands/index.js +4 -3
- package/v3/@swarmdo/cli/dist/src/commands/pack.d.ts +8 -0
- package/v3/@swarmdo/cli/dist/src/commands/pack.js +28 -2
- package/v3/@swarmdo/cli/dist/src/commands/usage.js +174 -2
- package/v3/@swarmdo/cli/dist/src/compact/compact.js +17 -7
- package/v3/@swarmdo/cli/dist/src/compact-snapshot/compact-snapshot.d.ts +58 -0
- package/v3/@swarmdo/cli/dist/src/compact-snapshot/compact-snapshot.js +104 -0
- package/v3/@swarmdo/cli/dist/src/config-lint/lint.js +16 -2
- package/v3/@swarmdo/cli/dist/src/init/helpers-generator.js +33 -3
- package/v3/@swarmdo/cli/dist/src/redact/redact.js +1 -1
- package/v3/@swarmdo/cli/dist/src/sbom/sbom.js +5 -2
- package/v3/@swarmdo/cli/dist/src/swarmvector/model-prices.js +12 -2
- package/v3/@swarmdo/cli/dist/src/testreport/testreport.js +11 -2
- package/v3/@swarmdo/cli/dist/src/transcript/export.d.ts +5 -0
- package/v3/@swarmdo/cli/dist/src/transcript/export.js +8 -1
- package/v3/@swarmdo/cli/dist/src/usage/claude-pricing.d.ts +6 -2
- package/v3/@swarmdo/cli/dist/src/usage/claude-pricing.js +33 -4
- package/v3/@swarmdo/cli/dist/src/usage/limits.d.ts +77 -0
- package/v3/@swarmdo/cli/dist/src/usage/limits.js +134 -0
- package/v3/@swarmdo/cli/dist/src/usage/reflect-html.d.ts +23 -0
- package/v3/@swarmdo/cli/dist/src/usage/reflect-html.js +94 -0
- package/v3/@swarmdo/cli/dist/src/usage/reflect.d.ts +105 -0
- package/v3/@swarmdo/cli/dist/src/usage/reflect.js +165 -0
- package/v3/@swarmdo/cli/dist/src/usage/spend-forecast.d.ts +28 -0
- package/v3/@swarmdo/cli/dist/src/usage/spend-forecast.js +33 -0
- package/v3/@swarmdo/cli/dist/src/usage/transcript-errors.d.ts +14 -0
- package/v3/@swarmdo/cli/dist/src/usage/transcript-errors.js +10 -0
- package/v3/@swarmdo/cli/dist/src/usage/transcript-usage.js +1 -1
- package/v3/@swarmdo/cli/dist/src/util/csv.d.ts +14 -0
- package/v3/@swarmdo/cli/dist/src/util/csv.js +20 -0
- package/v3/@swarmdo/cli/package.json +2 -2
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
15
15
|
import { join, dirname } from 'path';
|
|
16
|
-
import { fileURLToPath } from 'url';
|
|
16
|
+
import { fileURLToPath, pathToFileURL } from 'url';
|
|
17
17
|
|
|
18
18
|
const __filename = fileURLToPath(import.meta.url);
|
|
19
19
|
const __dirname = dirname(__filename);
|
|
@@ -52,13 +52,30 @@ async function gracefulExit(signal) {
|
|
|
52
52
|
process.on('SIGTERM', () => { gracefulExit('SIGTERM'); });
|
|
53
53
|
process.on('SIGINT', () => { gracefulExit('SIGINT'); });
|
|
54
54
|
|
|
55
|
-
// Ensure data dir
|
|
56
|
-
if (!existsSync(DATA_DIR)) mkdirSync(DATA_DIR, { recursive: true });
|
|
57
|
-
|
|
58
55
|
// ============================================================================
|
|
59
56
|
// Simple JSON File Backend (implements IMemoryBackend interface)
|
|
60
57
|
// ============================================================================
|
|
61
58
|
|
|
59
|
+
// Collapse entries that are the SAME memory — identical content signature but
|
|
60
|
+
// distinct ids — keeping the first occurrence. The auto-memory bridge
|
|
61
|
+
// historically re-imported every session with a fresh random id, bloating the
|
|
62
|
+
// store ~22x (#53); this heals already-bloated stores and de-dupes defensively.
|
|
63
|
+
// Keyed by namespace + content hash (or raw content) so genuinely distinct
|
|
64
|
+
// memories are never merged. Pure.
|
|
65
|
+
function dedupeByContentSignature(entries) {
|
|
66
|
+
const seen = new Set();
|
|
67
|
+
const out = [];
|
|
68
|
+
for (const e of entries) {
|
|
69
|
+
const ns = (e && e.namespace) || 'default';
|
|
70
|
+
const body = (e && e.metadata && e.metadata.contentHash) || (e && (e.content || e.value)) || '';
|
|
71
|
+
const sig = ns + '\u0001' + body;
|
|
72
|
+
if (seen.has(sig)) continue;
|
|
73
|
+
seen.add(sig);
|
|
74
|
+
out.push(e);
|
|
75
|
+
}
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
78
|
+
|
|
62
79
|
class JsonFileBackend {
|
|
63
80
|
constructor(filePath) {
|
|
64
81
|
this.filePath = filePath;
|
|
@@ -70,7 +87,12 @@ class JsonFileBackend {
|
|
|
70
87
|
try {
|
|
71
88
|
const data = JSON.parse(readFileSync(this.filePath, 'utf-8'));
|
|
72
89
|
if (Array.isArray(data)) {
|
|
73
|
-
|
|
90
|
+
// Collapse content-duplicates left by the pre-#53 import bug (same
|
|
91
|
+
// memory re-imported each session under a fresh id). Auto-heals an
|
|
92
|
+
// already-bloated store by rewriting it once when dupes are dropped.
|
|
93
|
+
const deduped = dedupeByContentSignature(data);
|
|
94
|
+
for (const entry of deduped) this.entries.set(entry.id, entry);
|
|
95
|
+
if (deduped.length < data.length) this._persist();
|
|
74
96
|
}
|
|
75
97
|
} catch { /* start fresh */ }
|
|
76
98
|
}
|
|
@@ -99,7 +121,11 @@ class JsonFileBackend {
|
|
|
99
121
|
async query(opts) {
|
|
100
122
|
let results = [...this.entries.values()];
|
|
101
123
|
if (opts?.namespace) results = results.filter(e => e.namespace === opts.namespace);
|
|
102
|
-
|
|
124
|
+
// NOTE: opts.type is the QueryType search STRATEGY (semantic|keyword|hybrid|…),
|
|
125
|
+
// NOT an entry MemoryType. This JSON backend has no vector search, so the
|
|
126
|
+
// strategy is moot — filtering entries by it excluded everything (a 'hybrid'
|
|
127
|
+
// query matched no 'semantic' entries), which zeroed out the bridge's
|
|
128
|
+
// content-hash dedup and let the store bloat ~22x per re-import (#53).
|
|
103
129
|
if (opts?.limit) results = results.slice(0, opts.limit);
|
|
104
130
|
return results;
|
|
105
131
|
}
|
|
@@ -613,33 +639,44 @@ async function doImportAll() {
|
|
|
613
639
|
// Main
|
|
614
640
|
// ============================================================================
|
|
615
641
|
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
//
|
|
619
|
-
//
|
|
620
|
-
|
|
621
|
-
//
|
|
622
|
-
|
|
623
|
-
process.
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
642
|
+
// Only dispatch CLI commands when this file is executed directly
|
|
643
|
+
// (`node auto-memory-hook.mjs …`), NOT when it is imported by a test —
|
|
644
|
+
// importing must not run a command or exit the process (#53 regression test
|
|
645
|
+
// imports JsonFileBackend + dedupeByContentSignature below).
|
|
646
|
+
if (import.meta.url === pathToFileURL(process.argv[1] || '').href) {
|
|
647
|
+
// Ensure data dir (only when actually running a command, not on import)
|
|
648
|
+
if (!existsSync(DATA_DIR)) mkdirSync(DATA_DIR, { recursive: true });
|
|
649
|
+
const command = process.argv[2] || 'status';
|
|
650
|
+
|
|
651
|
+
// Dynamic import() failures can surface as unhandled rejections on a later
|
|
652
|
+
// microtask even when the awaiting call site already caught them, which would
|
|
653
|
+
// otherwise force a non-zero exit. Swallow to keep hooks exit-0, but surface the
|
|
654
|
+
// reason under SWARMDO_DEBUG/DEBUG so genuine async bugs aren't silently hidden
|
|
655
|
+
// (FIX 2 — the previous `() => {}` discarded every rejection process-wide).
|
|
656
|
+
process.on('unhandledRejection', (reason) => {
|
|
657
|
+
if (DEBUG) {
|
|
658
|
+
const detail = reason && reason.message ? reason.message : String(reason);
|
|
659
|
+
process.stderr.write(`[AutoMemory] unhandledRejection (suppressed): ${detail}\n`);
|
|
660
|
+
}
|
|
661
|
+
});
|
|
662
|
+
|
|
663
|
+
try {
|
|
664
|
+
switch (command) {
|
|
665
|
+
case 'import': await doImport(); break;
|
|
666
|
+
case 'import-all': await doImportAll(); break;
|
|
667
|
+
case 'sync': await doSync(); break;
|
|
668
|
+
case 'status': await doStatus(); break;
|
|
669
|
+
default:
|
|
670
|
+
console.log('Usage: auto-memory-hook.mjs <import|sync|status>');
|
|
671
|
+
process.exit(1);
|
|
672
|
+
}
|
|
673
|
+
} catch (err) {
|
|
674
|
+
// Hooks must never crash Claude Code - fail silently
|
|
675
|
+
dim(`Error (non-critical): ${err.message}`);
|
|
639
676
|
}
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
dim(`Error (non-critical): ${err.message}`);
|
|
677
|
+
// Ensure clean exit for Claude Code hooks (exit 0 = success, no stderr = no error)
|
|
678
|
+
process.exit(0);
|
|
643
679
|
}
|
|
644
|
-
|
|
645
|
-
|
|
680
|
+
|
|
681
|
+
// Exported for unit tests (the run-guard above keeps import side-effect-free).
|
|
682
|
+
export { JsonFileBackend, dedupeByContentSignature };
|
package/.claude-plugin/README.md
CHANGED
|
@@ -297,7 +297,7 @@ Then in Claude Code:
|
|
|
297
297
|
|
|
298
298
|
```bash
|
|
299
299
|
# Add MCP servers to Claude Code
|
|
300
|
-
claude mcp add swarmdo npx swarmdo@
|
|
300
|
+
claude mcp add swarmdo npx swarmdo@latest mcp start
|
|
301
301
|
claude mcp add swarmdo-swarm npx swarmdo-swarm mcp start # Optional
|
|
302
302
|
```
|
|
303
303
|
|
|
@@ -350,7 +350,7 @@ cp -r agents ~/.claude/agents/
|
|
|
350
350
|
|
|
351
351
|
```bash
|
|
352
352
|
# Run setup via npx
|
|
353
|
-
npx swarmdo@
|
|
353
|
+
npx swarmdo@latest init --plugin
|
|
354
354
|
|
|
355
355
|
# This will:
|
|
356
356
|
# 1. Create .claude directory
|
|
@@ -499,7 +499,7 @@ Swarmdo integrates with 3 MCP servers providing 110+ tools:
|
|
|
499
499
|
"mcpServers": {
|
|
500
500
|
"swarmdo": {
|
|
501
501
|
"command": "npx",
|
|
502
|
-
"args": ["swarmdo@
|
|
502
|
+
"args": ["swarmdo@latest", "mcp", "start"]
|
|
503
503
|
}
|
|
504
504
|
}
|
|
505
505
|
}
|
|
@@ -128,7 +128,7 @@ The plugin defines MCP servers, but you may need to install the packages:
|
|
|
128
128
|
|
|
129
129
|
```bash
|
|
130
130
|
# Core MCP (recommended)
|
|
131
|
-
npm install -g swarmdo@
|
|
131
|
+
npm install -g swarmdo@latest
|
|
132
132
|
|
|
133
133
|
# Optional enhanced coordination
|
|
134
134
|
npm install -g swarmdo-swarm
|
|
@@ -202,7 +202,7 @@ The swarm automatically:
|
|
|
202
202
|
|
|
203
203
|
```bash
|
|
204
204
|
# Core MCP (required)
|
|
205
|
-
claude mcp add swarmdo npx swarmdo@
|
|
205
|
+
claude mcp add swarmdo npx swarmdo@latest mcp start
|
|
206
206
|
|
|
207
207
|
# Enhanced coordination (optional)
|
|
208
208
|
claude mcp add swarmdo-swarm npx swarmdo-swarm mcp start
|
|
@@ -296,10 +296,10 @@ ls ~/.claude/commands/
|
|
|
296
296
|
cat ~/.claude/settings.json
|
|
297
297
|
|
|
298
298
|
# Verify MCP package
|
|
299
|
-
npx swarmdo@
|
|
299
|
+
npx swarmdo@latest --version
|
|
300
300
|
|
|
301
301
|
# Reinstall if needed
|
|
302
|
-
npm install -g swarmdo@
|
|
302
|
+
npm install -g swarmdo@latest
|
|
303
303
|
```
|
|
304
304
|
|
|
305
305
|
### Agents Not Spawning
|
|
@@ -50,6 +50,10 @@
|
|
|
50
50
|
{
|
|
51
51
|
"type": "command",
|
|
52
52
|
"command": "/bin/bash -c 'INPUT=$(cat); CUSTOM=$(echo \"$INPUT\" | jq -r \".custom_instructions // \\\"\\\"\"); echo \"🔄 PreCompact Guidance:\"; echo \"📋 IMPORTANT: Review CLAUDE.md in project root for:\"; echo \" • 54 available agents and concurrent usage patterns\"; echo \" • Swarm coordination strategies (hierarchical, mesh, adaptive)\"; echo \" • SPARC methodology workflows with batchtools optimization\"; echo \" • Critical concurrent execution rules (GOLDEN RULE: 1 MESSAGE = ALL OPERATIONS)\"; if [ -n \"$CUSTOM\" ]; then echo \"🎯 Custom compact instructions: $CUSTOM\"; fi; echo \"✅ Ready for compact operation\"'"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "command",
|
|
56
|
+
"command": "/bin/bash -c '\"${CLAUDE_PLUGIN_ROOT}/bin/swarmdo\" compact-snapshot write || true'"
|
|
53
57
|
}
|
|
54
58
|
]
|
|
55
59
|
},
|
|
@@ -59,11 +63,15 @@
|
|
|
59
63
|
{
|
|
60
64
|
"type": "command",
|
|
61
65
|
"command": "/bin/bash -c 'echo \"🔄 Auto-Compact Guidance (Context Window Full):\"; echo \"📋 CRITICAL: Before compacting, ensure you understand:\"; echo \" • All 54 agents available in .claude/agents/ directory\"; echo \" • Concurrent execution patterns from CLAUDE.md\"; echo \" • Batchtools optimization for 300% performance gains\"; echo \" • Swarm coordination strategies for complex tasks\"; echo \"⚡ Apply GOLDEN RULE: Always batch operations in single messages\"; echo \"✅ Auto-compact proceeding with full agent context\"'"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"type": "command",
|
|
69
|
+
"command": "/bin/bash -c '\"${CLAUDE_PLUGIN_ROOT}/bin/swarmdo\" compact-snapshot write || true'"
|
|
62
70
|
}
|
|
63
71
|
]
|
|
64
72
|
}
|
|
65
73
|
],
|
|
66
|
-
"
|
|
74
|
+
"SessionEnd": [
|
|
67
75
|
{
|
|
68
76
|
"hooks": [
|
|
69
77
|
{
|
|
@@ -72,6 +80,16 @@
|
|
|
72
80
|
}
|
|
73
81
|
]
|
|
74
82
|
}
|
|
83
|
+
],
|
|
84
|
+
"UserPromptSubmit": [
|
|
85
|
+
{
|
|
86
|
+
"hooks": [
|
|
87
|
+
{
|
|
88
|
+
"type": "command",
|
|
89
|
+
"command": "/bin/bash -c '\"${CLAUDE_PLUGIN_ROOT}/bin/swarmdo\" compact-snapshot read || true'"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
75
93
|
]
|
|
76
94
|
}
|
|
77
95
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"name": "swarmdo",
|
|
3
3
|
"description": "Swarmdo Marketplace: Claude Code native agents, swarms, workers, and MCP tools for continuous software engineering",
|
|
4
4
|
"owner": {
|
|
5
|
-
"name": "
|
|
6
|
-
"url": "https://
|
|
5
|
+
"name": "SwarmDo",
|
|
6
|
+
"url": "https://github.com/SwarmDo/swarmdo"
|
|
7
7
|
},
|
|
8
8
|
"plugins": [
|
|
9
9
|
{
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
{
|
|
75
75
|
"name": "swarmdo-agent",
|
|
76
76
|
"source": "./plugins/swarmdo-agent",
|
|
77
|
-
"description": "Agent runtimes
|
|
77
|
+
"description": "Agent runtimes — local WASM-sandboxed agents (rvagent) + Anthropic Claude Managed Agents (cloud); one interface, local-vs-cloud backends"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"name": "swarmdo-workflows",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
{
|
|
110
110
|
"name": "swarmdo-adr",
|
|
111
111
|
"source": "./plugins/swarmdo-adr",
|
|
112
|
-
"description": "ADR lifecycle management
|
|
112
|
+
"description": "ADR lifecycle management — create, index, supersede, and link Architecture Decision Records to code"
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
"name": "swarmdo-cost-tracker",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
{
|
|
120
120
|
"name": "swarmdo-ddd",
|
|
121
121
|
"source": "./plugins/swarmdo-ddd",
|
|
122
|
-
"description": "Domain-Driven Design scaffolding
|
|
122
|
+
"description": "Domain-Driven Design scaffolding — bounded contexts, aggregate roots, domain events, and anti-corruption layers"
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
"name": "swarmdo-federation",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
{
|
|
130
130
|
"name": "swarmdo-graph-intelligence",
|
|
131
131
|
"source": "./plugins/swarmdo-graph-intelligence",
|
|
132
|
-
"description": "Real-time graph intelligence
|
|
132
|
+
"description": "Real-time graph intelligence — personalized PageRank, streaming delta updates, witness-signed reasoning, and federation-distributable vectors"
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
"name": "swarmdo-iot-cognitum",
|
|
@@ -139,57 +139,57 @@
|
|
|
139
139
|
{
|
|
140
140
|
"name": "swarmdo-knowledge-graph",
|
|
141
141
|
"source": "./plugins/swarmdo-knowledge-graph",
|
|
142
|
-
"description": "Knowledge graph construction
|
|
142
|
+
"description": "Knowledge graph construction — entity extraction, relation mapping, and pathfinder graph traversal"
|
|
143
143
|
},
|
|
144
144
|
{
|
|
145
145
|
"name": "swarmdo-market-data",
|
|
146
146
|
"source": "./plugins/swarmdo-market-data",
|
|
147
|
-
"description": "Market data ingestion
|
|
147
|
+
"description": "Market data ingestion — feed normalization, OHLCV vectorization, and HNSW-indexed pattern matching"
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
150
|
"name": "swarmdo-migrations",
|
|
151
151
|
"source": "./plugins/swarmdo-migrations",
|
|
152
|
-
"description": "Schema migration management
|
|
152
|
+
"description": "Schema migration management — generate, validate, dry-run, and rollback database migrations"
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
"name": "swarmdo-neural-trader",
|
|
156
156
|
"source": "./plugins/swarmdo-neural-trader",
|
|
157
|
-
"description": "Neural trading strategies
|
|
157
|
+
"description": "Neural trading strategies — self-learning LSTM/Transformer/N-BEATS models with Rust/NAPI backtesting"
|
|
158
158
|
},
|
|
159
159
|
{
|
|
160
160
|
"name": "swarmdo-observability",
|
|
161
161
|
"source": "./plugins/swarmdo-observability",
|
|
162
|
-
"description": "Structured logging, distributed tracing, and metrics
|
|
162
|
+
"description": "Structured logging, distributed tracing, and metrics — correlate agent swarm activity with application telemetry"
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
165
|
"name": "swarmdo-swarmvector",
|
|
166
166
|
"source": "./plugins/swarmdo-swarmvector",
|
|
167
|
-
"description": "Self-learning vector database
|
|
167
|
+
"description": "Self-learning vector database — HNSW, FlashAttention-3, Graph RAG, hybrid search, DiskANN, and Brain AGI"
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
170
|
"name": "swarmdo-sparc",
|
|
171
171
|
"source": "./plugins/swarmdo-sparc",
|
|
172
|
-
"description": "SPARC methodology
|
|
172
|
+
"description": "SPARC methodology — Specification, Pseudocode, Architecture, Refinement, Completion phases with quality gates"
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
175
|
"name": "swarmdo-metaharness",
|
|
176
176
|
"source": "./plugins/swarmdo-metaharness",
|
|
177
|
-
"description": "MetaHarness integration
|
|
177
|
+
"description": "MetaHarness integration — surfaces score/genome/mint/mcp-scan/threat-model via skills; pairs with @metaharness/router (ADR-148/149) for cost-optimal model routing; honors ADR-150 optional-augmentation constraint"
|
|
178
178
|
},
|
|
179
179
|
{
|
|
180
180
|
"name": "swarmdo-arena",
|
|
181
181
|
"source": "./plugins/swarmdo-arena",
|
|
182
|
-
"description": "Competitive ruliology for swarmdo swarms
|
|
182
|
+
"description": "Competitive ruliology for swarmdo swarms — arenas, tournaments, and adaptive co-evolution of program strategies (ADR-147/148); strategies-as-programs compete under payoff games"
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
"name": "swarmdo-caveman",
|
|
186
186
|
"source": "./plugins/swarmdo-caveman",
|
|
187
|
-
"description": "Token compression
|
|
187
|
+
"description": "Token compression — /caveman-compress rewrites memory files into few-token caveman-speak, substance preserved (MIT, vendored)"
|
|
188
188
|
},
|
|
189
189
|
{
|
|
190
190
|
"name": "swarmdo-ponytail",
|
|
191
191
|
"source": "./plugins/swarmdo-ponytail",
|
|
192
|
-
"description": "Anti-over-engineering
|
|
192
|
+
"description": "Anti-over-engineering — /ponytail makes agents think like the laziest senior dev: YAGNI, stdlib first, one line before fifty (MIT, vendored)"
|
|
193
193
|
}
|
|
194
194
|
]
|
|
195
195
|
}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swarmdo",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.28.2",
|
|
4
|
+
"description": "AI agent orchestration for Claude Code: swarm coordination, 314 MCP tools, 60+ agent types, persistent AgentDB memory with HNSW vector search, self-learning hooks, SPARC methodology, and GitHub automation",
|
|
5
5
|
"author": {
|
|
6
|
-
"name": "
|
|
6
|
+
"name": "SwarmDo Team",
|
|
7
7
|
"email": "maintainers@swarmdo.com"
|
|
8
8
|
},
|
|
9
|
-
"homepage": "
|
|
10
|
-
"repository":
|
|
11
|
-
"type": "git",
|
|
12
|
-
"url": "the upstream project (see NOTICE)"
|
|
13
|
-
},
|
|
14
|
-
"bugs": {
|
|
15
|
-
"url": "the upstream project (see NOTICE)"
|
|
16
|
-
},
|
|
9
|
+
"homepage": "https://swarmdo.com",
|
|
10
|
+
"repository": "https://github.com/SwarmDo/swarmdo",
|
|
17
11
|
"license": "MIT",
|
|
18
12
|
"keywords": [
|
|
19
13
|
"ai-agents",
|
|
@@ -31,43 +25,17 @@
|
|
|
31
25
|
"code-review",
|
|
32
26
|
"performance-optimization"
|
|
33
27
|
],
|
|
34
|
-
"category": "development",
|
|
35
|
-
"tags": [
|
|
36
|
-
"productivity",
|
|
37
|
-
"automation",
|
|
38
|
-
"ai",
|
|
39
|
-
"agents",
|
|
40
|
-
"swarm",
|
|
41
|
-
"coordination",
|
|
42
|
-
"sparc",
|
|
43
|
-
"github",
|
|
44
|
-
"neural-network",
|
|
45
|
-
"enterprise"
|
|
46
|
-
],
|
|
47
|
-
"engines": {
|
|
48
|
-
"claudeCode": ">=2.0.0",
|
|
49
|
-
"node": ">=20.0.0"
|
|
50
|
-
},
|
|
51
28
|
"mcpServers": {
|
|
52
29
|
"swarmdo": {
|
|
53
30
|
"command": "npx",
|
|
54
31
|
"args": [
|
|
55
|
-
"
|
|
32
|
+
"-y",
|
|
33
|
+
"swarmdo@latest",
|
|
56
34
|
"mcp",
|
|
57
35
|
"start"
|
|
58
36
|
],
|
|
59
37
|
"description": "Core Swarmdo MCP server for swarm coordination, agent management, and task orchestration (40+ tools)",
|
|
60
38
|
"optional": false
|
|
61
|
-
},
|
|
62
|
-
"swarmdo-swarm": {
|
|
63
|
-
"command": "npx",
|
|
64
|
-
"args": [
|
|
65
|
-
"swarmdo-swarm",
|
|
66
|
-
"mcp",
|
|
67
|
-
"start"
|
|
68
|
-
],
|
|
69
|
-
"description": "Enhanced swarm coordination with WASM acceleration (2.8-4.4x speed improvement)",
|
|
70
|
-
"optional": true
|
|
71
39
|
}
|
|
72
40
|
}
|
|
73
41
|
}
|
|
@@ -137,7 +137,7 @@ if [ "$INSTALL_TYPE" = "1" ] || [ "$INSTALL_TYPE" = "4" ]; then
|
|
|
137
137
|
"mcpServers": {
|
|
138
138
|
"swarmdo": {
|
|
139
139
|
"command": "npx",
|
|
140
|
-
"args": ["swarmdo@
|
|
140
|
+
"args": ["swarmdo@latest", "mcp", "start"],
|
|
141
141
|
"description": "Core Swarmdo MCP server with 40+ orchestration tools"
|
|
142
142
|
}
|
|
143
143
|
}
|
|
@@ -154,7 +154,7 @@ Add to ~/.claude/settings.json:
|
|
|
154
154
|
"mcpServers": {
|
|
155
155
|
"swarmdo": {
|
|
156
156
|
"command": "npx",
|
|
157
|
-
"args": ["swarmdo@
|
|
157
|
+
"args": ["swarmdo@latest", "mcp", "start"]
|
|
158
158
|
},
|
|
159
159
|
"swarmdo-swarm": {
|
|
160
160
|
"command": "npx",
|
|
@@ -174,7 +174,7 @@ MCP_INSTRUCTIONS
|
|
|
174
174
|
|
|
175
175
|
if [ "$INSTALL_MCP" = "y" ]; then
|
|
176
176
|
info "Installing swarmdo MCP server..."
|
|
177
|
-
npx swarmdo@
|
|
177
|
+
npx swarmdo@latest --version 2>/dev/null || npm install -g swarmdo@latest
|
|
178
178
|
success "Swarmdo MCP server installed"
|
|
179
179
|
|
|
180
180
|
read -p "Install optional swarmdo-swarm MCP? (y/n) [n]: " INSTALL_SWARM
|
|
@@ -27,7 +27,7 @@ if command -v swarmdo >/dev/null 2>&1; then
|
|
|
27
27
|
elif command -v swarmdo >/dev/null 2>&1; then
|
|
28
28
|
run swarmdo hooks "$@"
|
|
29
29
|
else
|
|
30
|
-
run npx --prefer-offline --yes swarmdo@
|
|
30
|
+
run npx --prefer-offline --yes swarmdo@latest hooks "$@"
|
|
31
31
|
fi
|
|
32
32
|
|
|
33
33
|
exit 0
|
|
@@ -69,8 +69,8 @@ fi
|
|
|
69
69
|
|
|
70
70
|
# Check MCP packages
|
|
71
71
|
info "Checking MCP packages..."
|
|
72
|
-
if npx swarmdo@
|
|
73
|
-
VERSION=$(npx swarmdo@
|
|
72
|
+
if npx swarmdo@latest --version &> /dev/null; then
|
|
73
|
+
VERSION=$(npx swarmdo@latest --version 2>/dev/null || echo "unknown")
|
|
74
74
|
success "swarmdo MCP: $VERSION"
|
|
75
75
|
else
|
|
76
76
|
warning "swarmdo MCP not installed"
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://swarmdo.com)
|
|
4
4
|
|
|
5
|
-
[](https://img.shields.io/badge/npx%20swarmdo-v1.30.0-cb3837?style=for-the-badge&logo=npm&logoColor=white)](https://github.com/SwarmDo/swarmdo/releases)
|
|
6
6
|
[](https://github.com/SwarmDo/swarmdo/blob/main/LICENSE)
|
|
7
7
|
[](https://swarmdo.com)
|
|
8
8
|
[](https://github.com/SwarmDo/swarmdo)
|
|
@@ -47,17 +47,17 @@ There are **two different install paths** with very different surface areas. Pic
|
|
|
47
47
|
|
|
48
48
|
| | **Claude Code Plugin** | **CLI install (`npx swarmdo init`)** |
|
|
49
49
|
|---|---|---|
|
|
50
|
-
| What it gives you | Slash commands +
|
|
50
|
+
| What it gives you | Slash commands + skills + agent definitions per-plugin; `swarmdo-core` also registers the swarmdo MCP server | Full Swarmdo loop — 98 agents, 60+ commands, 30 skills, MCP server, hooks, daemon |
|
|
51
51
|
| Files in your workspace | **Zero** | `.claude/`, `.swarmdo/`, `CLAUDE.md`, helpers, settings |
|
|
52
|
-
| MCP server registered | **
|
|
52
|
+
| MCP server registered | **Yes with `swarmdo-core`** (via the plugin's `.mcp.json`); other plugins are commands/skills only | Yes |
|
|
53
53
|
| Hooks installed | No | Yes |
|
|
54
|
-
| Best for | Try
|
|
54
|
+
| Best for | Try Swarmdo without committing files to your workspace | Production use — everything works as documented |
|
|
55
55
|
|
|
56
|
-
### Path A — Claude Code Plugins (
|
|
56
|
+
### Path A — Claude Code Plugins (zero files in your repo)
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
59
|
# Add the marketplace
|
|
60
|
-
/plugin marketplace add
|
|
60
|
+
/plugin marketplace add SwarmDo/swarmdo
|
|
61
61
|
|
|
62
62
|
# Install core + any plugins you need
|
|
63
63
|
/plugin install swarmdo-core@swarmdo
|
|
@@ -66,7 +66,9 @@ There are **two different install paths** with very different surface areas. Pic
|
|
|
66
66
|
/plugin install swarmdo-neural-trader@swarmdo
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
`swarmdo-core` registers the swarmdo MCP server (300+ tools) plus base agents and setup skills; the other plugins add their slash commands and agent definitions. Hooks and the daemon still require Path B.
|
|
70
|
+
|
|
71
|
+
> 📦 `swarmdo-core` has been submitted to Anthropic's Claude Code plugin directory (community marketplace). Once approved it will also be installable via `/plugin install swarmdo-core@claude-community` — no marketplace-add needed.
|
|
70
72
|
|
|
71
73
|
<details>
|
|
72
74
|
<summary><strong>🔌 All 35 plugins</strong></summary>
|
|
@@ -159,7 +161,7 @@ This adds slash commands and agent definitions only. The Swarmdo MCP server is N
|
|
|
159
161
|
|
|
160
162
|
```bash
|
|
161
163
|
# One-line install (POSIX shells only — see Windows note below)
|
|
162
|
-
curl -fsSL https://cdn.jsdelivr.net/gh/
|
|
164
|
+
curl -fsSL https://cdn.jsdelivr.net/gh/SwarmDo/swarmdo@main/scripts/install.sh | bash
|
|
163
165
|
```
|
|
164
166
|
|
|
165
167
|
**All platforms (including native Windows PowerShell / cmd):**
|
|
@@ -269,7 +271,7 @@ The recent release train added a full day-to-day operations layer around the swa
|
|
|
269
271
|
|
|
270
272
|
| Command | What it does |
|
|
271
273
|
|---------|-------------|
|
|
272
|
-
| `swarmdo usage` (alias `cost`) | Claude Code **spend analytics** from your local transcripts — `daily`, `monthly
|
|
274
|
+
| `swarmdo usage` (alias `cost`) | Claude Code **spend analytics** from your local transcripts — `daily`, `monthly` (with a month-end spend projection), `models`, `projects`, `sessions`, live 5-hour `blocks` burn, `errors` (tool-failure analytics), `cache` (prompt-cache efficiency + $ saved), `diff` (period-over-period comparison with per-model movers), `reflect` (a wrapped-style retrospective — busiest day, streak, top models/projects, peak hour, delegation ratio — with a shareable `--html` dashboard), and `limits` (an official-quota **exhaustion forecaster** over Claude Code's `rate_limits`); the standard views take `--csv` for spreadsheet export |
|
|
273
275
|
| `swarmdo usage guard` | **Budget policy** — limits for the active 5h block / today / month via flags or `SWARMDO_GUARD_*` env → ok / warn / over; `--strict` exits 1, safe for CI gates and Stop hooks |
|
|
274
276
|
| `swarmdo hud` | **One-screen ops HUD** — 5h block burn, task readiness, daemon workers, memory snapshots (`--watch`, `--json`) |
|
|
275
277
|
| `swarmdo repair` (alias `tdd-repair`) | **Test-Driven Repair** — a bounded, budget-capped headless `claude` loop that fixes source until a failing test passes; dry-run unless `--confirm` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swarmdo",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.30.0",
|
|
4
4
|
"description": "Swarmdo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|