opencode-swarm-plugin 0.30.0 → 0.30.3
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/.turbo/turbo-build.log +4 -4
- package/CHANGELOG.md +93 -0
- package/README.md +3 -6
- package/bin/swarm.ts +151 -22
- package/dist/hive.d.ts.map +1 -1
- package/dist/index.d.ts +94 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18826 -3467
- package/dist/memory-tools.d.ts +209 -0
- package/dist/memory-tools.d.ts.map +1 -0
- package/dist/memory.d.ts +124 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/plugin.js +18766 -3418
- package/dist/schemas/index.d.ts +7 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/worker-handoff.d.ts +78 -0
- package/dist/schemas/worker-handoff.d.ts.map +1 -0
- package/dist/swarm-orchestrate.d.ts +50 -0
- package/dist/swarm-orchestrate.d.ts.map +1 -1
- package/dist/swarm-prompts.d.ts +1 -1
- package/dist/swarm-prompts.d.ts.map +1 -1
- package/dist/swarm-review.d.ts +4 -0
- package/dist/swarm-review.d.ts.map +1 -1
- package/docs/planning/ADR-008-worker-handoff-protocol.md +293 -0
- package/package.json +4 -2
- package/src/hive.integration.test.ts +114 -0
- package/src/hive.ts +33 -22
- package/src/index.ts +38 -3
- package/src/memory-tools.test.ts +111 -0
- package/src/memory-tools.ts +273 -0
- package/src/memory.integration.test.ts +266 -0
- package/src/memory.test.ts +334 -0
- package/src/memory.ts +441 -0
- package/src/schemas/index.ts +18 -0
- package/src/schemas/worker-handoff.test.ts +271 -0
- package/src/schemas/worker-handoff.ts +131 -0
- package/src/swarm-orchestrate.ts +262 -24
- package/src/swarm-prompts.ts +48 -5
- package/src/swarm-review.ts +7 -0
- package/src/swarm.integration.test.ts +386 -9
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
$ bun build ./src/index.ts --outdir ./dist --target node --external @electric-sql/pglite --external swarm-mail && bun build ./src/plugin.ts --outfile ./dist/plugin.js --target node --external @electric-sql/pglite --external swarm-mail && tsc
|
|
2
|
-
Bundled
|
|
2
|
+
Bundled 811 modules in 120ms
|
|
3
3
|
|
|
4
|
-
index.js 1.
|
|
4
|
+
index.js 1.71 MB (entry point)
|
|
5
5
|
|
|
6
|
-
Bundled
|
|
6
|
+
Bundled 812 modules in 123ms
|
|
7
7
|
|
|
8
|
-
plugin.js 1.
|
|
8
|
+
plugin.js 1.67 MB (entry point)
|
|
9
9
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,98 @@
|
|
|
1
1
|
# opencode-swarm-plugin
|
|
2
2
|
|
|
3
|
+
## 0.30.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`1e41c9b`](https://github.com/joelhooks/swarm-tools/commit/1e41c9b42ae468761f813d406171d182fb9948e0) Thanks [@joelhooks](https://github.com/joelhooks)! - ## 🐝 Semantic Memory Consolidation
|
|
8
|
+
|
|
9
|
+
> _"Simplicity is the ultimate sophistication."_
|
|
10
|
+
> — Leonardo da Vinci
|
|
11
|
+
|
|
12
|
+
The semantic memory system has moved into swarm-mail, bringing persistent learning to the hive.
|
|
13
|
+
|
|
14
|
+
### What's New
|
|
15
|
+
|
|
16
|
+
**Semantic Memory in swarm-mail:**
|
|
17
|
+
|
|
18
|
+
- `createSemanticMemory()` - Initialize memory store with PGLite + Ollama embeddings
|
|
19
|
+
- `getMigrationStatus()` - Check if legacy memory needs migration
|
|
20
|
+
- `migrateLegacyMemory()` - Migrate from old semantic-memory-mcp format
|
|
21
|
+
- Automatic migration on first use (no manual intervention needed)
|
|
22
|
+
|
|
23
|
+
**Legacy Migration:**
|
|
24
|
+
|
|
25
|
+
- Detects old `~/.semantic-memory/` databases
|
|
26
|
+
- Migrates memories, embeddings, and metadata
|
|
27
|
+
- Preserves all tags and timestamps
|
|
28
|
+
- Creates backup before migration
|
|
29
|
+
|
|
30
|
+
**Worker Handoff Protocol:**
|
|
31
|
+
|
|
32
|
+
- Agents can now hand off work mid-task
|
|
33
|
+
- State preserved via swarm mail messages
|
|
34
|
+
- Enables long-running tasks across context limits
|
|
35
|
+
|
|
36
|
+
### Breaking Changes
|
|
37
|
+
|
|
38
|
+
None - this is additive. The old semantic-memory-mcp still works but is deprecated.
|
|
39
|
+
|
|
40
|
+
### Files Added/Changed
|
|
41
|
+
|
|
42
|
+
- `packages/swarm-mail/src/memory/` - New memory subsystem
|
|
43
|
+
- `packages/swarm-mail/src/memory/migrate-legacy.ts` - Migration tooling
|
|
44
|
+
- `packages/opencode-swarm-plugin/bin/swarm.ts` - Uses new exports
|
|
45
|
+
|
|
46
|
+
- Updated dependencies [[`1e41c9b`](https://github.com/joelhooks/swarm-tools/commit/1e41c9b42ae468761f813d406171d182fb9948e0)]:
|
|
47
|
+
- swarm-mail@0.5.0
|
|
48
|
+
|
|
49
|
+
## 0.30.2
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- [`5858148`](https://github.com/joelhooks/swarm-tools/commit/5858148d5785393c0a6993a2595fba275f305707) Thanks [@joelhooks](https://github.com/joelhooks)! - chore: trigger publish workflow
|
|
54
|
+
|
|
55
|
+
## 0.30.1
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- [`57d5600`](https://github.com/joelhooks/swarm-tools/commit/57d5600a53e148ce1d1da48b3b5a8723a5552e04) Thanks [@joelhooks](https://github.com/joelhooks)! - ## 🚦 Review Gate UX Fix + Verbose Setup
|
|
60
|
+
|
|
61
|
+
> _"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."_
|
|
62
|
+
> — Douglas Adams, _Mostly Harmless_
|
|
63
|
+
|
|
64
|
+
Two UX improvements that make swarm coordination feel less like shouting into the void.
|
|
65
|
+
|
|
66
|
+
### What Changed
|
|
67
|
+
|
|
68
|
+
**Review Gate Response Fix:**
|
|
69
|
+
|
|
70
|
+
- `swarm_complete` no longer returns `success: false` when code review is pending
|
|
71
|
+
- Now returns `success: true` with `status: "pending_review"` or `status: "needs_changes"`
|
|
72
|
+
- **Why it matters**: The old format made review checkpoints look like errors. Agents would retry unnecessarily or report failures when the workflow was actually working as designed. Review gates are a feature, not a bug.
|
|
73
|
+
|
|
74
|
+
**Setup Command Verbosity:**
|
|
75
|
+
|
|
76
|
+
- Added `p.log.step()` and `p.log.success()` throughout swarm setup
|
|
77
|
+
- Users can now see exactly what's happening: dependency checks, git init, swarm-mail connection
|
|
78
|
+
- **Why it matters**: Silent setup commands feel broken. Explicit progress logs build trust and make debugging easier when setup actually does fail.
|
|
79
|
+
|
|
80
|
+
### Why It Matters
|
|
81
|
+
|
|
82
|
+
**For Agents:**
|
|
83
|
+
|
|
84
|
+
- No more false-negative responses from review gates
|
|
85
|
+
- Clear workflow state (pending vs. needs changes vs. complete)
|
|
86
|
+
- Reduced retry loops and error noise
|
|
87
|
+
|
|
88
|
+
**For Users:**
|
|
89
|
+
|
|
90
|
+
- Setup command shows its work (not a black box)
|
|
91
|
+
- Review process is transparent in logs
|
|
92
|
+
- Easier to diagnose when things actually break
|
|
93
|
+
|
|
94
|
+
**Backward compatible:** Yes. Existing agents checking for `success: false` will still work, they just won't see false errors anymore.
|
|
95
|
+
|
|
3
96
|
## 0.30.0
|
|
4
97
|
|
|
5
98
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -220,7 +220,8 @@ These tools significantly enhance the swarm experience:
|
|
|
220
220
|
|------|---------|---------|
|
|
221
221
|
| [CASS](https://github.com/Dicklesworthstone/coding_agent_session_search) | Historical context - queries past sessions for similar decompositions | See below |
|
|
222
222
|
| [UBS](https://github.com/Dicklesworthstone/ultimate_bug_scanner) | Bug scanning - runs on subtask completion to catch issues | See below |
|
|
223
|
-
|
|
223
|
+
|
|
224
|
+
> **Note:** Semantic memory is now embedded in the plugin. No separate installation needed - just install Ollama for vector embeddings.
|
|
224
225
|
|
|
225
226
|
#### Installing CASS
|
|
226
227
|
|
|
@@ -243,15 +244,11 @@ cd ultimate_bug_scanner
|
|
|
243
244
|
pip install -e .
|
|
244
245
|
```
|
|
245
246
|
|
|
246
|
-
#### Installing semantic-memory
|
|
247
|
-
|
|
248
|
-
The `semantic-memory_check` tool verifies Ollama is ready (see installation steps above).
|
|
249
|
-
|
|
250
247
|
**Why install these?**
|
|
251
248
|
|
|
252
249
|
- **CASS** - When you run `/swarm "Add OAuth"`, the coordinator queries CASS for similar past tasks. Without it, decomposition is based only on the current task description.
|
|
253
250
|
- **UBS** - Every `swarm_complete` runs UBS to scan for bugs. Without it, you lose automatic bug detection.
|
|
254
|
-
- **
|
|
251
|
+
- **Ollama** - Enables vector similarity search for semantic memory. Without it, memory falls back to full-text search (still functional, less semantic).
|
|
255
252
|
|
|
256
253
|
Run `swarm doctor` to check which dependencies are installed.
|
|
257
254
|
|
package/bin/swarm.ts
CHANGED
|
@@ -35,6 +35,12 @@ import {
|
|
|
35
35
|
ensureHiveDirectory,
|
|
36
36
|
getHiveAdapter,
|
|
37
37
|
} from "../src/hive";
|
|
38
|
+
import {
|
|
39
|
+
legacyDatabaseExists,
|
|
40
|
+
getMigrationStatus,
|
|
41
|
+
migrateLegacyMemories,
|
|
42
|
+
} from "swarm-mail";
|
|
43
|
+
import { getSwarmMail } from "swarm-mail";
|
|
38
44
|
|
|
39
45
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
40
46
|
const pkg = JSON.parse(
|
|
@@ -427,22 +433,13 @@ const DEPENDENCIES: Dependency[] = [
|
|
|
427
433
|
description: "AI-powered static analysis for pre-completion bug scanning",
|
|
428
434
|
},
|
|
429
435
|
{
|
|
430
|
-
name: "
|
|
431
|
-
command: "
|
|
432
|
-
checkArgs: ["
|
|
433
|
-
required: false,
|
|
434
|
-
install: "npm install -g semantic-memory",
|
|
435
|
-
installType: "npm",
|
|
436
|
-
description: "Learning persistence with vector search",
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
name: "Redis",
|
|
440
|
-
command: "redis-cli",
|
|
441
|
-
checkArgs: ["ping"],
|
|
436
|
+
name: "Ollama",
|
|
437
|
+
command: "ollama",
|
|
438
|
+
checkArgs: ["--version"],
|
|
442
439
|
required: false,
|
|
443
|
-
install: "brew install
|
|
440
|
+
install: "brew install ollama && ollama pull mxbai-embed-large",
|
|
444
441
|
installType: "brew",
|
|
445
|
-
description: "
|
|
442
|
+
description: "Local embeddings for semantic memory (embedded in plugin)",
|
|
446
443
|
},
|
|
447
444
|
];
|
|
448
445
|
|
|
@@ -1229,8 +1226,8 @@ function getFixCommand(dep: Dependency): string | null {
|
|
|
1229
1226
|
switch (dep.name) {
|
|
1230
1227
|
case "OpenCode":
|
|
1231
1228
|
return "brew install sst/tap/opencode";
|
|
1232
|
-
case "
|
|
1233
|
-
return "
|
|
1229
|
+
case "Ollama":
|
|
1230
|
+
return "brew install ollama && ollama pull mxbai-embed-large";
|
|
1234
1231
|
case "Redis":
|
|
1235
1232
|
return "brew install redis && brew services start redis";
|
|
1236
1233
|
case "CASS (Coding Agent Session Search)":
|
|
@@ -1382,6 +1379,7 @@ async function setup() {
|
|
|
1382
1379
|
let isReinstall = false;
|
|
1383
1380
|
|
|
1384
1381
|
// Check if already configured FIRST
|
|
1382
|
+
p.log.step("Checking existing configuration...");
|
|
1385
1383
|
const configDir = join(homedir(), ".config", "opencode");
|
|
1386
1384
|
const pluginDir = join(configDir, "plugin");
|
|
1387
1385
|
const commandDir = join(configDir, "command");
|
|
@@ -1492,6 +1490,8 @@ async function setup() {
|
|
|
1492
1490
|
}
|
|
1493
1491
|
if (action === "reinstall") {
|
|
1494
1492
|
isReinstall = true;
|
|
1493
|
+
p.log.step("Reinstalling swarm configuration...");
|
|
1494
|
+
p.log.message(dim(" This will check dependencies, sync skills, and update config files"));
|
|
1495
1495
|
}
|
|
1496
1496
|
// action === "reinstall" - fall through to full setup
|
|
1497
1497
|
}
|
|
@@ -1622,11 +1622,13 @@ async function setup() {
|
|
|
1622
1622
|
}
|
|
1623
1623
|
|
|
1624
1624
|
// Check for .beads → .hive migration
|
|
1625
|
+
p.log.step("Checking for legacy .beads directory...");
|
|
1625
1626
|
const cwd = process.cwd();
|
|
1626
1627
|
const migrationCheck = checkBeadsMigrationNeeded(cwd);
|
|
1627
1628
|
if (migrationCheck.needed) {
|
|
1628
|
-
p.log.
|
|
1629
|
-
p.log.message(dim("
|
|
1629
|
+
p.log.warn("Found legacy .beads directory");
|
|
1630
|
+
p.log.message(dim(" Path: " + migrationCheck.beadsPath));
|
|
1631
|
+
p.log.message(dim(" Will rename to .hive/ and merge history"));
|
|
1630
1632
|
|
|
1631
1633
|
const shouldMigrate = await p.confirm({
|
|
1632
1634
|
message: "Migrate .beads to .hive? (recommended)",
|
|
@@ -1645,17 +1647,23 @@ async function setup() {
|
|
|
1645
1647
|
try {
|
|
1646
1648
|
const result = await migrateBeadsToHive(cwd);
|
|
1647
1649
|
if (result.migrated) {
|
|
1648
|
-
migrateSpinner.stop("
|
|
1649
|
-
p.log.success("
|
|
1650
|
+
migrateSpinner.stop("Renamed .beads/ → .hive/");
|
|
1651
|
+
p.log.success("Directory migration complete");
|
|
1650
1652
|
|
|
1651
1653
|
// Merge historic beads into issues.jsonl
|
|
1654
|
+
migrateSpinner.start("Merging historic cells...");
|
|
1652
1655
|
const mergeResult = await mergeHistoricBeads(cwd);
|
|
1653
1656
|
if (mergeResult.merged > 0) {
|
|
1654
|
-
|
|
1657
|
+
migrateSpinner.stop("Historic cells merged");
|
|
1658
|
+
p.log.success(`Merged ${mergeResult.merged} cells (${mergeResult.skipped} already present)`);
|
|
1659
|
+
} else {
|
|
1660
|
+
migrateSpinner.stop("No historic cells to merge");
|
|
1655
1661
|
}
|
|
1656
1662
|
|
|
1657
1663
|
// Import JSONL into PGLite database
|
|
1664
|
+
migrateSpinner.start("Importing to database...");
|
|
1658
1665
|
const importResult = await importJsonlToPGLite(cwd);
|
|
1666
|
+
migrateSpinner.stop("Database import complete");
|
|
1659
1667
|
if (importResult.imported > 0 || importResult.updated > 0) {
|
|
1660
1668
|
p.log.success(`Database: ${importResult.imported} imported, ${importResult.updated} updated`);
|
|
1661
1669
|
}
|
|
@@ -1670,10 +1678,121 @@ async function setup() {
|
|
|
1670
1678
|
} else {
|
|
1671
1679
|
p.log.warn("Skipping migration - .beads will continue to work but is deprecated");
|
|
1672
1680
|
}
|
|
1681
|
+
} else {
|
|
1682
|
+
p.log.message(dim(" No legacy .beads directory found"));
|
|
1683
|
+
}
|
|
1684
|
+
|
|
1685
|
+
// Check for legacy semantic-memory migration
|
|
1686
|
+
p.log.step("Checking for legacy semantic-memory database...");
|
|
1687
|
+
if (legacyDatabaseExists()) {
|
|
1688
|
+
p.log.warn("Found legacy semantic-memory database");
|
|
1689
|
+
|
|
1690
|
+
const migrationStatus = await getMigrationStatus();
|
|
1691
|
+
if (migrationStatus) {
|
|
1692
|
+
const { total, withEmbeddings } = migrationStatus;
|
|
1693
|
+
p.log.message(dim(` Memories: ${total} total (${withEmbeddings} with embeddings)`));
|
|
1694
|
+
p.log.message(dim(` Will migrate to swarm-mail unified database`));
|
|
1695
|
+
|
|
1696
|
+
const shouldMigrate = await p.confirm({
|
|
1697
|
+
message: "Migrate to swarm-mail database? (recommended)",
|
|
1698
|
+
initialValue: true,
|
|
1699
|
+
});
|
|
1700
|
+
|
|
1701
|
+
if (p.isCancel(shouldMigrate)) {
|
|
1702
|
+
p.cancel("Setup cancelled");
|
|
1703
|
+
process.exit(0);
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1706
|
+
if (shouldMigrate) {
|
|
1707
|
+
const migrateSpinner = p.spinner();
|
|
1708
|
+
migrateSpinner.start("Connecting to target database...");
|
|
1709
|
+
|
|
1710
|
+
try {
|
|
1711
|
+
// Get swarm-mail database for this project
|
|
1712
|
+
const targetDb = await getSwarmMail(cwd);
|
|
1713
|
+
migrateSpinner.message("Migrating memories...");
|
|
1714
|
+
|
|
1715
|
+
// Run migration with progress updates
|
|
1716
|
+
const result = await migrateLegacyMemories({
|
|
1717
|
+
targetDb,
|
|
1718
|
+
onProgress: (msg) => {
|
|
1719
|
+
// Update spinner message for key milestones
|
|
1720
|
+
if (msg.includes("complete") || msg.includes("Progress:")) {
|
|
1721
|
+
migrateSpinner.message(msg.replace("[migrate] ", ""));
|
|
1722
|
+
}
|
|
1723
|
+
},
|
|
1724
|
+
});
|
|
1725
|
+
|
|
1726
|
+
migrateSpinner.stop("Semantic memory migration complete");
|
|
1727
|
+
|
|
1728
|
+
if (result.migrated > 0) {
|
|
1729
|
+
p.log.success(`Migrated ${result.migrated} memories to swarm-mail`);
|
|
1730
|
+
}
|
|
1731
|
+
if (result.skipped > 0) {
|
|
1732
|
+
p.log.message(dim(` Skipped ${result.skipped} (already exist)`));
|
|
1733
|
+
}
|
|
1734
|
+
if (result.failed > 0) {
|
|
1735
|
+
p.log.warn(`Failed to migrate ${result.failed} memories`);
|
|
1736
|
+
for (const error of result.errors.slice(0, 3)) {
|
|
1737
|
+
p.log.message(dim(` ${error}`));
|
|
1738
|
+
}
|
|
1739
|
+
if (result.errors.length > 3) {
|
|
1740
|
+
p.log.message(dim(` ... and ${result.errors.length - 3} more errors`));
|
|
1741
|
+
}
|
|
1742
|
+
}
|
|
1743
|
+
} catch (error) {
|
|
1744
|
+
migrateSpinner.stop("Migration failed");
|
|
1745
|
+
p.log.error(error instanceof Error ? error.message : String(error));
|
|
1746
|
+
}
|
|
1747
|
+
} else {
|
|
1748
|
+
p.log.warn("Skipping migration - legacy semantic-memory will continue to work but is deprecated");
|
|
1749
|
+
}
|
|
1750
|
+
}
|
|
1751
|
+
} else {
|
|
1752
|
+
p.log.message(dim(" No legacy semantic-memory database found"));
|
|
1753
|
+
}
|
|
1754
|
+
|
|
1755
|
+
// Check for legacy semantic-memory MCP server in OpenCode config
|
|
1756
|
+
p.log.step("Checking for legacy MCP servers...");
|
|
1757
|
+
const opencodeConfigPath = join(configDir, 'config.json');
|
|
1758
|
+
if (existsSync(opencodeConfigPath)) {
|
|
1759
|
+
try {
|
|
1760
|
+
const opencodeConfig = JSON.parse(readFileSync(opencodeConfigPath, 'utf-8'));
|
|
1761
|
+
if (opencodeConfig.mcpServers?.['semantic-memory']) {
|
|
1762
|
+
p.log.warn('Found legacy semantic-memory MCP server');
|
|
1763
|
+
p.log.message(dim(' Semantic memory is now embedded in the plugin'));
|
|
1764
|
+
|
|
1765
|
+
const removeMcp = await p.confirm({
|
|
1766
|
+
message: 'Remove from MCP servers config?',
|
|
1767
|
+
initialValue: true,
|
|
1768
|
+
});
|
|
1769
|
+
|
|
1770
|
+
if (p.isCancel(removeMcp)) {
|
|
1771
|
+
p.cancel('Setup cancelled');
|
|
1772
|
+
process.exit(0);
|
|
1773
|
+
}
|
|
1774
|
+
|
|
1775
|
+
if (removeMcp) {
|
|
1776
|
+
delete opencodeConfig.mcpServers['semantic-memory'];
|
|
1777
|
+
writeFileSync(opencodeConfigPath, JSON.stringify(opencodeConfig, null, 2));
|
|
1778
|
+
p.log.success('Removed semantic-memory from MCP servers');
|
|
1779
|
+
p.log.message(dim(` Updated: ${opencodeConfigPath}`));
|
|
1780
|
+
} else {
|
|
1781
|
+
p.log.warn('Keeping legacy MCP - you may see duplicate semantic-memory tools');
|
|
1782
|
+
}
|
|
1783
|
+
} else {
|
|
1784
|
+
p.log.message(dim(' No legacy MCP servers found'));
|
|
1785
|
+
}
|
|
1786
|
+
} catch (error) {
|
|
1787
|
+
p.log.message(dim(' Could not parse OpenCode config (skipping MCP check)'));
|
|
1788
|
+
}
|
|
1789
|
+
} else {
|
|
1790
|
+
p.log.message(dim(' No OpenCode config found (skipping MCP check)'));
|
|
1673
1791
|
}
|
|
1674
1792
|
|
|
1675
1793
|
// Model selection
|
|
1676
|
-
p.log.step("
|
|
1794
|
+
p.log.step("Configuring swarm agents...");
|
|
1795
|
+
p.log.message(dim(" Coordinator handles orchestration, worker executes tasks"));
|
|
1677
1796
|
|
|
1678
1797
|
const coordinatorModel = await p.select({
|
|
1679
1798
|
message: "Select coordinator model (for orchestration/planning):",
|
|
@@ -1769,27 +1888,37 @@ async function setup() {
|
|
|
1769
1888
|
process.exit(0);
|
|
1770
1889
|
}
|
|
1771
1890
|
|
|
1891
|
+
p.log.success("Selected models:");
|
|
1892
|
+
p.log.message(dim(` Coordinator: ${coordinatorModel}`));
|
|
1893
|
+
p.log.message(dim(` Worker: ${workerModel}`));
|
|
1894
|
+
|
|
1772
1895
|
p.log.step("Setting up OpenCode integration...");
|
|
1773
1896
|
|
|
1774
1897
|
// Track file operation statistics
|
|
1775
1898
|
const stats: FileStats = { created: 0, updated: 0, unchanged: 0 };
|
|
1776
1899
|
|
|
1777
1900
|
// Create directories if needed
|
|
1901
|
+
p.log.step("Creating configuration directories...");
|
|
1778
1902
|
const skillsDir = join(configDir, "skills");
|
|
1779
1903
|
for (const dir of [pluginDir, commandDir, agentDir, swarmAgentDir, skillsDir]) {
|
|
1780
1904
|
mkdirWithStatus(dir);
|
|
1781
1905
|
}
|
|
1782
1906
|
|
|
1783
1907
|
// Write plugin and command files
|
|
1908
|
+
p.log.step("Writing configuration files...");
|
|
1784
1909
|
stats[writeFileWithStatus(pluginPath, getPluginWrapper(), "Plugin")]++;
|
|
1785
1910
|
stats[writeFileWithStatus(commandPath, SWARM_COMMAND, "Command")]++;
|
|
1786
1911
|
|
|
1787
1912
|
// Write nested agent files (swarm/planner.md, swarm/worker.md)
|
|
1788
1913
|
// This is the format used by Task(subagent_type="swarm/worker")
|
|
1914
|
+
p.log.step("Writing agent configuration...");
|
|
1789
1915
|
stats[writeFileWithStatus(plannerAgentPath, getPlannerAgent(coordinatorModel as string), "Planner agent")]++;
|
|
1790
1916
|
stats[writeFileWithStatus(workerAgentPath, getWorkerAgent(workerModel as string), "Worker agent")]++;
|
|
1791
1917
|
|
|
1792
1918
|
// Clean up legacy flat agent files if they exist
|
|
1919
|
+
if (existsSync(legacyPlannerPath) || existsSync(legacyWorkerPath)) {
|
|
1920
|
+
p.log.step("Cleaning up legacy agent files...");
|
|
1921
|
+
}
|
|
1793
1922
|
rmWithStatus(legacyPlannerPath, "legacy planner");
|
|
1794
1923
|
rmWithStatus(legacyWorkerPath, "legacy worker");
|
|
1795
1924
|
|
package/dist/hive.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hive.d.ts","sourceRoot":"","sources":["../src/hive.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hive.d.ts","sourceRoot":"","sources":["../src/hive.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ import type { Plugin } from "@opencode-ai/plugin";
|
|
|
34
34
|
* - repo-crawl:* - GitHub API tools for repository research
|
|
35
35
|
* - skills:* - Agent skills discovery, activation, and execution
|
|
36
36
|
* - mandate:* - Agent voting system for collaborative knowledge curation
|
|
37
|
+
* - semantic-memory:* - Semantic memory with vector embeddings (Ollama + PGLite)
|
|
37
38
|
*
|
|
38
39
|
* @param input - Plugin context from OpenCode
|
|
39
40
|
* @returns Plugin hooks including tools, events, and tool execution hooks
|
|
@@ -138,6 +139,84 @@ export { swarmTools, SwarmError, DecompositionError, formatSubtaskPrompt, format
|
|
|
138
139
|
* Note: hiveTools includes both hive_* and beads_* (legacy aliases)
|
|
139
140
|
*/
|
|
140
141
|
export declare const allTools: {
|
|
142
|
+
readonly "semantic-memory_store": {
|
|
143
|
+
description: string;
|
|
144
|
+
args: {
|
|
145
|
+
information: import("zod").ZodString;
|
|
146
|
+
collection: import("zod").ZodOptional<import("zod").ZodString>;
|
|
147
|
+
tags: import("zod").ZodOptional<import("zod").ZodString>;
|
|
148
|
+
metadata: import("zod").ZodOptional<import("zod").ZodString>;
|
|
149
|
+
};
|
|
150
|
+
execute(args: {
|
|
151
|
+
information: string;
|
|
152
|
+
collection?: string | undefined;
|
|
153
|
+
tags?: string | undefined;
|
|
154
|
+
metadata?: string | undefined;
|
|
155
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
156
|
+
};
|
|
157
|
+
readonly "semantic-memory_find": {
|
|
158
|
+
description: string;
|
|
159
|
+
args: {
|
|
160
|
+
query: import("zod").ZodString;
|
|
161
|
+
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
162
|
+
collection: import("zod").ZodOptional<import("zod").ZodString>;
|
|
163
|
+
expand: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
164
|
+
fts: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
165
|
+
};
|
|
166
|
+
execute(args: {
|
|
167
|
+
query: string;
|
|
168
|
+
limit?: number | undefined;
|
|
169
|
+
collection?: string | undefined;
|
|
170
|
+
expand?: boolean | undefined;
|
|
171
|
+
fts?: boolean | undefined;
|
|
172
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
173
|
+
};
|
|
174
|
+
readonly "semantic-memory_get": {
|
|
175
|
+
description: string;
|
|
176
|
+
args: {
|
|
177
|
+
id: import("zod").ZodString;
|
|
178
|
+
};
|
|
179
|
+
execute(args: {
|
|
180
|
+
id: string;
|
|
181
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
182
|
+
};
|
|
183
|
+
readonly "semantic-memory_remove": {
|
|
184
|
+
description: string;
|
|
185
|
+
args: {
|
|
186
|
+
id: import("zod").ZodString;
|
|
187
|
+
};
|
|
188
|
+
execute(args: {
|
|
189
|
+
id: string;
|
|
190
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
191
|
+
};
|
|
192
|
+
readonly "semantic-memory_validate": {
|
|
193
|
+
description: string;
|
|
194
|
+
args: {
|
|
195
|
+
id: import("zod").ZodString;
|
|
196
|
+
};
|
|
197
|
+
execute(args: {
|
|
198
|
+
id: string;
|
|
199
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
200
|
+
};
|
|
201
|
+
readonly "semantic-memory_list": {
|
|
202
|
+
description: string;
|
|
203
|
+
args: {
|
|
204
|
+
collection: import("zod").ZodOptional<import("zod").ZodString>;
|
|
205
|
+
};
|
|
206
|
+
execute(args: {
|
|
207
|
+
collection?: string | undefined;
|
|
208
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
209
|
+
};
|
|
210
|
+
readonly "semantic-memory_stats": {
|
|
211
|
+
description: string;
|
|
212
|
+
args: {};
|
|
213
|
+
execute(args: Record<string, never>, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
214
|
+
};
|
|
215
|
+
readonly "semantic-memory_check": {
|
|
216
|
+
description: string;
|
|
217
|
+
args: {};
|
|
218
|
+
execute(args: Record<string, never>, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
219
|
+
};
|
|
141
220
|
readonly mandate_file: {
|
|
142
221
|
description: string;
|
|
143
222
|
args: {
|
|
@@ -1441,4 +1520,19 @@ export { guardrailOutput, truncateWithBoundaries, createMetrics, DEFAULT_GUARDRA
|
|
|
1441
1520
|
* ```
|
|
1442
1521
|
*/
|
|
1443
1522
|
export { SWARM_COMPACTION_CONTEXT, createCompactionHook } from "./compaction-hook";
|
|
1523
|
+
/**
|
|
1524
|
+
* Re-export memory module
|
|
1525
|
+
*
|
|
1526
|
+
* Includes:
|
|
1527
|
+
* - memoryTools - All semantic-memory tools (store, find, get, remove, validate, list, stats, check)
|
|
1528
|
+
* - createMemoryAdapter - Factory function for memory adapter
|
|
1529
|
+
* - resetMemoryCache - Cache management for testing
|
|
1530
|
+
*
|
|
1531
|
+
* Types:
|
|
1532
|
+
* - MemoryAdapter - Memory adapter interface
|
|
1533
|
+
* - StoreArgs, FindArgs, IdArgs, ListArgs - Tool argument types
|
|
1534
|
+
* - StoreResult, FindResult, StatsResult, HealthResult, OperationResult - Result types
|
|
1535
|
+
*/
|
|
1536
|
+
export { memoryTools, createMemoryAdapter, resetMemoryCache, type MemoryAdapter, type StoreArgs, type FindArgs, type IdArgs, type ListArgs, type StoreResult, type FindResult, type StatsResult, type HealthResult, type OperationResult, } from "./memory-tools";
|
|
1537
|
+
export type { Memory, SearchResult, SearchOptions } from "swarm-mail";
|
|
1444
1538
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|