monomind 1.15.6 → 1.15.7
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/agents/github/repo-architect.md +1 -1
- package/.claude/agents/specialists/integration-architect.md +6 -6
- package/.claude/commands/hive-mind/hive-mind-init.md +1 -1
- package/.claude/commands/hive-mind/hive-mind-memory.md +1 -1
- package/.claude/commands/mastermind/brain.md +11 -11
- package/.claude/commands/mastermind/master.md +4 -4
- package/.claude/commands/mastermind/memory.md +6 -6
- package/.claude/commands/memory/README.md +4 -4
- package/.claude/commands/truth/start.md +3 -3
- package/.claude/helpers/extras-registry.json +2 -2
- package/.claude/helpers/skill-registry.json +26 -26
- package/.claude/helpers/statusline.cjs +8 -8
- package/.claude/skills/agentic-jujutsu/SKILL.md +3 -3
- package/.claude/skills/mastermind/_protocol.md +8 -8
- package/README.md +6 -6
- package/package.json +2 -2
- package/packages/@monomind/cli/README.md +6 -6
- package/packages/@monomind/cli/dist/src/__tests__/browse-analyzer.test.js +18 -1
- package/packages/@monomind/cli/dist/src/commands/agent.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/autopilot.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/completions.js +2 -21
- package/packages/@monomind/cli/dist/src/commands/config.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/hive-mind.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-commands.js +31 -31
- package/packages/@monomind/cli/dist/src/commands/hooks-routing-commands.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/hooks.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/index.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/commands/index.js +0 -4
- package/packages/@monomind/cli/dist/src/commands/init.js +8 -8
- package/packages/@monomind/cli/dist/src/commands/memory.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/memory.js +25 -25
- package/packages/@monomind/cli/dist/src/commands/migrate.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/neural.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/swarm.js +1 -1
- package/packages/@monomind/cli/dist/src/config-adapter.js +8 -8
- package/packages/@monomind/cli/dist/src/index.js +1 -1
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +2 -2
- package/packages/@monomind/cli/dist/src/init/executor.js +16 -16
- package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +1 -1
- package/packages/@monomind/cli/dist/src/init/statusline-generator.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/init/statusline-generator.js +8 -8
- package/packages/@monomind/cli/dist/src/init/types.d.ts +3 -3
- package/packages/@monomind/cli/dist/src/init/types.js +3 -3
- package/packages/@monomind/cli/dist/src/mcp-client.js +1 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.js +3 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +13 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +4 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +4 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.js +1 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.js +23 -23
- package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.d.ts +22 -6
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +553 -505
- package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +5 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +1 -156
- package/packages/@monomind/cli/dist/src/memory/embedding-operations.js +3 -3
- package/packages/@monomind/cli/dist/src/memory/hnsw-operations.js +5 -5
- package/packages/@monomind/cli/dist/src/memory/intelligence.js +2 -2
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +86 -234
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +455 -1702
- package/packages/@monomind/cli/dist/src/memory/memory-crud.js +3 -3
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +5 -5
- package/packages/@monomind/cli/dist/src/memory/memory-read.js +4 -4
- package/packages/@monomind/cli/dist/src/suggest.js +0 -1
- package/packages/@monomind/cli/dist/src/types.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/ui/dashboard.html +41 -5
- package/packages/@monomind/cli/dist/src/ui/orgs.html +91 -5
- package/packages/@monomind/cli/dist/src/ui/server.mjs +44 -0
- package/packages/@monomind/cli/dist/src/update/validator.js +1 -3
- package/packages/@monomind/cli/package.json +4 -4
- package/scripts/verify-appliance.sh +1 -1
- package/packages/@monomind/cli/dist/src/commands/plugins.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/plugins.js +0 -799
- package/packages/@monomind/cli/dist/src/plugins/manager.d.ts +0 -133
- package/packages/@monomind/cli/dist/src/plugins/manager.js +0 -498
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.d.ts +0 -88
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +0 -650
- package/packages/@monomind/cli/dist/src/plugins/store/index.d.ts +0 -76
- package/packages/@monomind/cli/dist/src/plugins/store/index.js +0 -141
- package/packages/@monomind/cli/dist/src/plugins/store/search.d.ts +0 -46
- package/packages/@monomind/cli/dist/src/plugins/store/search.js +0 -231
- package/packages/@monomind/cli/dist/src/plugins/store/types.d.ts +0 -274
- package/packages/@monomind/cli/dist/src/plugins/store/types.js +0 -7
- package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
- package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.js +0 -126
- package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.d.ts +0 -12
- package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.js +0 -188
- package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
- package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.js +0 -206
- package/packages/@monomind/cli/dist/src/services/registry-api.d.ts +0 -58
- package/packages/@monomind/cli/dist/src/services/registry-api.js +0 -199
|
@@ -292,7 +292,7 @@ const runCommand = {
|
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
294
|
output.printSuccess(`Memory files backed up (${jsonFiles.length} JSON, ${hasDb ? '1 DB' : '0 DB'}).`);
|
|
295
|
-
output.printInfo('Run "monomind memory init --force" to import v2 memory into v1
|
|
295
|
+
output.printInfo('Run "monomind memory init --force" to import v2 memory into v1 LanceDB.');
|
|
296
296
|
}
|
|
297
297
|
migrated.push('memory');
|
|
298
298
|
}
|
|
@@ -775,7 +775,7 @@ function formatMigrationStatus(status) {
|
|
|
775
775
|
function getMigrationSteps(target) {
|
|
776
776
|
const allSteps = [
|
|
777
777
|
{ name: 'Configuration Files', description: 'Migrate config schema to v1 format', source: './monomind.json', dest: './monomind.config.json' },
|
|
778
|
-
{ name: 'Memory Backend', description: 'Upgrade to hybrid backend with
|
|
778
|
+
{ name: 'Memory Backend', description: 'Upgrade to hybrid backend with LanceDB', source: './.monomind/memory', dest: './data/memory' },
|
|
779
779
|
{ name: 'Agent Definitions', description: 'Convert agent configs to v1 format', source: './.monomind/agents', dest: './packages/agents' },
|
|
780
780
|
{ name: 'Hook Registry', description: 'Migrate hooks to v1 hook system', source: './src/hooks', dest: './packages/hooks' },
|
|
781
781
|
{ name: 'Workflow Definitions', description: 'Convert workflows to event-sourced format', source: './.monomind/workflows', dest: './data/workflows' },
|
|
@@ -56,7 +56,7 @@ const statusCommand = {
|
|
|
56
56
|
component: 'Pattern Index',
|
|
57
57
|
status: hnswStatus.available ? output.success('Ready') : output.dim('Empty'),
|
|
58
58
|
details: hnswStatus.available
|
|
59
|
-
? `${hnswStatus.entryCount} vectors, ${hnswStatus.dimensions}-dim (
|
|
59
|
+
? `${hnswStatus.entryCount} vectors, ${hnswStatus.dimensions}-dim (ANN via LanceDB)`
|
|
60
60
|
: 'No vectors indexed yet',
|
|
61
61
|
},
|
|
62
62
|
{
|
|
@@ -271,7 +271,7 @@ const initCommand = {
|
|
|
271
271
|
output.writeln(output.dim(' Initializing memory namespace...'));
|
|
272
272
|
output.writeln(output.dim(' Setting up communication channels...'));
|
|
273
273
|
if (v1Mode) {
|
|
274
|
-
output.writeln(output.dim(' Configuring
|
|
274
|
+
output.writeln(output.dim(' Configuring LanceDB integration (ANN)....'));
|
|
275
275
|
output.writeln(output.dim(' Initializing keyword routing + outcome measurement...'));
|
|
276
276
|
}
|
|
277
277
|
output.writeln();
|
|
@@ -30,8 +30,8 @@ export function systemConfigToMonomindConfig(systemConfig) {
|
|
|
30
30
|
backend: normalizeMemoryBackend(systemConfig.memory?.type),
|
|
31
31
|
persistPath: systemConfig.memory?.path || './data/memory',
|
|
32
32
|
cacheSize: systemConfig.memory?.maxSize ?? 1000000,
|
|
33
|
-
enableHNSW: systemConfig.memory?.
|
|
34
|
-
vectorDimension: systemConfig.memory?.
|
|
33
|
+
enableHNSW: systemConfig.memory?.lancedb?.indexType === 'hnsw',
|
|
34
|
+
vectorDimension: systemConfig.memory?.lancedb?.dimensions ?? 384,
|
|
35
35
|
},
|
|
36
36
|
// MCP configuration
|
|
37
37
|
mcp: {
|
|
@@ -114,12 +114,10 @@ export function configToSystemConfig(config) {
|
|
|
114
114
|
type: denormalizeMemoryBackend(config.memory.backend),
|
|
115
115
|
path: config.memory.persistPath,
|
|
116
116
|
maxSize: config.memory.cacheSize,
|
|
117
|
-
|
|
117
|
+
lancedb: {
|
|
118
118
|
dimensions: config.memory.vectorDimension,
|
|
119
119
|
indexType: config.memory.enableHNSW ? 'hnsw' : 'flat',
|
|
120
|
-
|
|
121
|
-
m: 16,
|
|
122
|
-
quantization: 'none',
|
|
120
|
+
nProbes: 20,
|
|
123
121
|
},
|
|
124
122
|
},
|
|
125
123
|
mcp: {
|
|
@@ -182,11 +180,13 @@ function normalizeMemoryBackend(backend) {
|
|
|
182
180
|
switch (backend) {
|
|
183
181
|
case 'memory':
|
|
184
182
|
case 'sqlite':
|
|
185
|
-
case '
|
|
183
|
+
case 'lancedb':
|
|
186
184
|
case 'hybrid':
|
|
187
185
|
return backend;
|
|
186
|
+
case 'agentdb':
|
|
187
|
+
return 'lancedb'; // legacy alias
|
|
188
188
|
case 'redis':
|
|
189
|
-
return 'memory';
|
|
189
|
+
return 'memory';
|
|
190
190
|
default:
|
|
191
191
|
return 'hybrid';
|
|
192
192
|
}
|
|
@@ -287,7 +287,7 @@ export class CLI {
|
|
|
287
287
|
this.output.writeln(this.output.bold('V1 FEATURES:'));
|
|
288
288
|
this.output.printList([
|
|
289
289
|
'15-agent hierarchical mesh coordination',
|
|
290
|
-
'
|
|
290
|
+
'LanceDB with ANN vector indexing',
|
|
291
291
|
'Keyword routing + route-outcome measurement',
|
|
292
292
|
'Unified SwarmCoordinator engine',
|
|
293
293
|
'Event-sourced state management',
|
|
@@ -176,7 +176,7 @@ function cliCommandsTable() {
|
|
|
176
176
|
| \`init\` | 4 | Project initialization |
|
|
177
177
|
| \`agent\` | 8 | Agent lifecycle management |
|
|
178
178
|
| \`swarm\` | 6 | Multi-agent swarm coordination |
|
|
179
|
-
| \`memory\` | 11 |
|
|
179
|
+
| \`memory\` | 11 | LanceDB memory with ANN search |
|
|
180
180
|
| \`task\` | 6 | Task creation and lifecycle |
|
|
181
181
|
| \`session\` | 7 | Session state management |
|
|
182
182
|
| \`hooks\` | 17 | Self-learning hooks + 12 workers |
|
|
@@ -350,7 +350,7 @@ function intelligenceSystem() {
|
|
|
350
350
|
|
|
351
351
|
- **Keyword routing**: Deterministic task→agent routing via \`createKeywordRouter\`
|
|
352
352
|
- **Outcome measurement**: Route and command outcomes are recorded and scored to surface routing accuracy over time
|
|
353
|
-
- **Pattern search**:
|
|
353
|
+
- **Pattern search**: LanceDB ANN vector search for finding similar past patterns
|
|
354
354
|
|
|
355
355
|
Routing and learning are JS-only — no native engine is required. Outcomes
|
|
356
356
|
feed back into the recorded metrics so routing quality is measured, not assumed.`;
|
|
@@ -64,13 +64,13 @@ const SKILLS_MAP = {
|
|
|
64
64
|
'hive-mind-advanced',
|
|
65
65
|
],
|
|
66
66
|
browser: ['agent-browser-testing'],
|
|
67
|
-
|
|
68
|
-
'
|
|
69
|
-
'
|
|
70
|
-
'
|
|
71
|
-
'
|
|
72
|
-
'
|
|
73
|
-
'reasoningbank
|
|
67
|
+
memory: [
|
|
68
|
+
'memory-advanced',
|
|
69
|
+
'memory-learning',
|
|
70
|
+
'memory-patterns',
|
|
71
|
+
'memory-optimization',
|
|
72
|
+
'memory-vector-search',
|
|
73
|
+
'memory-reasoningbank',
|
|
74
74
|
'reasoningbank-intelligence',
|
|
75
75
|
],
|
|
76
76
|
github: [
|
|
@@ -1028,8 +1028,8 @@ async function copySkills(targetDir, options, result) {
|
|
|
1028
1028
|
else {
|
|
1029
1029
|
if (skillsConfig.core)
|
|
1030
1030
|
skillsToCopy.push(...SKILLS_MAP.core);
|
|
1031
|
-
if (skillsConfig.
|
|
1032
|
-
skillsToCopy.push(...SKILLS_MAP.
|
|
1031
|
+
if (skillsConfig.memory)
|
|
1032
|
+
skillsToCopy.push(...SKILLS_MAP.memory);
|
|
1033
1033
|
if (skillsConfig.github)
|
|
1034
1034
|
skillsToCopy.push(...SKILLS_MAP.github);
|
|
1035
1035
|
if (skillsConfig.browser)
|
|
@@ -1416,7 +1416,7 @@ async function writeStatusline(targetDir, options, result) {
|
|
|
1416
1416
|
}
|
|
1417
1417
|
}
|
|
1418
1418
|
}
|
|
1419
|
-
// ALWAYS generate statusline.cjs — the generated version includes
|
|
1419
|
+
// ALWAYS generate statusline.cjs — the generated version includes
|
|
1420
1420
|
// vectors/size, tests, ADRs, hooks, and integration stats that the
|
|
1421
1421
|
// pre-installed static copy in the npm package lacks.
|
|
1422
1422
|
// This must overwrite any copy from writeHelpers() which copies the legacy file.
|
|
@@ -1670,7 +1670,7 @@ async function writeCapabilitiesDoc(targetDir, options, result) {
|
|
|
1670
1670
|
Monomind is a domain-driven design architecture for multi-agent AI coordination with:
|
|
1671
1671
|
|
|
1672
1672
|
- **15-Agent Swarm Coordination** with hierarchical and mesh topologies
|
|
1673
|
-
- **
|
|
1673
|
+
- **ANN Vector Search** - indexed pattern retrieval via LanceDB
|
|
1674
1674
|
- **Keyword Routing** - deterministic task→agent routing with outcome measurement
|
|
1675
1675
|
- **Byzantine Fault Tolerance** - Queen-led consensus mechanisms
|
|
1676
1676
|
- **MCP Server Integration** - Model Context Protocol support
|
|
@@ -1769,7 +1769,7 @@ npx monomind@latest swarm monitor
|
|
|
1769
1769
|
| \`init\` | 4 | Project initialization |
|
|
1770
1770
|
| \`agent\` | 8 | Agent lifecycle management |
|
|
1771
1771
|
| \`swarm\` | 6 | Multi-agent coordination |
|
|
1772
|
-
| \`memory\` | 11 |
|
|
1772
|
+
| \`memory\` | 11 | LanceDB with ANN vector search |
|
|
1773
1773
|
| \`mcp\` | 9 | MCP server management |
|
|
1774
1774
|
| \`task\` | 6 | Task assignment |
|
|
1775
1775
|
| \`session\` | 7 | Session persistence |
|
|
@@ -1787,7 +1787,7 @@ npx monomind@latest swarm monitor
|
|
|
1787
1787
|
| \`security\` | 6 | Security scanning |
|
|
1788
1788
|
| \`performance\` | 5 | Profiling & benchmarks |
|
|
1789
1789
|
| \`providers\` | 5 | AI provider config |
|
|
1790
|
-
|
|
1790
|
+
|
|
1791
1791
|
| \`deployment\` | 5 | Deploy management |
|
|
1792
1792
|
| \`embeddings\` | 4 | Vector embeddings |
|
|
1793
1793
|
| \`claims\` | 4 | Authorization |
|
|
@@ -1874,7 +1874,7 @@ npx monomind@latest doctor --fix
|
|
|
1874
1874
|
|
|
1875
1875
|
### Intelligence System
|
|
1876
1876
|
- **Keyword routing**: Deterministic task→agent routing with outcome measurement
|
|
1877
|
-
- **
|
|
1877
|
+
- **ANN pattern search**: Indexed vector search via LanceDB
|
|
1878
1878
|
- **ReasoningBank**: Stores learned patterns and trajectories for retrieval
|
|
1879
1879
|
- **Int8 Quantization**: ~4x memory reduction for stored embeddings
|
|
1880
1880
|
|
|
@@ -1959,7 +1959,7 @@ npx monomind@latest hive-mind consensus --propose "task"
|
|
|
1959
1959
|
|
|
1960
1960
|
| Metric | Target | Status |
|
|
1961
1961
|
|--------|--------|--------|
|
|
1962
|
-
|
|
|
1962
|
+
| ANN Search | Indexed vector search | ✅ Implemented (LanceDB) |
|
|
1963
1963
|
| Memory Reduction | 50-75% | ✅ Implemented (~4x via Int8 quantization) |
|
|
1964
1964
|
| Pattern Learning | Recorded + retrievable | ✅ Implemented (ReasoningBank) |
|
|
1965
1965
|
| MCP Response | <100ms | ✅ Achieved |
|
|
@@ -1978,7 +1978,7 @@ npx monomind@latest hive-mind consensus --propose "task"
|
|
|
1978
1978
|
| Package | Version | Purpose |
|
|
1979
1979
|
|---------|---------|---------|
|
|
1980
1980
|
| agentic-flow | 3.0.0-alpha.1 | Core coordination + ReasoningBank + Router |
|
|
1981
|
-
|
|
|
1981
|
+
| @lancedb/lancedb | latest | Vector database (ANN search) |
|
|
1982
1982
|
|
|
1983
1983
|
### Optional Integrations
|
|
1984
1984
|
| Package | Command |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Auto-detects project profile and generates:
|
|
5
5
|
* 1. .agents/shared_instructions.md — prepended to every agent prompt
|
|
6
|
-
* 2. Memory seeds — pre-loaded into
|
|
6
|
+
* 2. Memory seeds — pre-loaded into LanceDB so agents start with project best practices
|
|
7
7
|
*/
|
|
8
8
|
import type { InitResult } from './types.js';
|
|
9
9
|
export interface ProjectProfile {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Auto-detects project profile and generates:
|
|
5
5
|
* 1. .agents/shared_instructions.md — prepended to every agent prompt
|
|
6
|
-
* 2. Memory seeds — pre-loaded into
|
|
6
|
+
* 2. Memory seeds — pre-loaded into LanceDB so agents start with project best practices
|
|
7
7
|
*/
|
|
8
8
|
import * as fs from 'node:fs';
|
|
9
9
|
import * as path from 'node:path';
|
|
@@ -18,7 +18,7 @@ import type { InitOptions } from './types.js';
|
|
|
18
18
|
* 🏗️ DDD Domains [●●○○○] 2/5 ⚡ HNSW 150x
|
|
19
19
|
* 🤖 Swarm ◉ [ 5/15] 👥 2 🪝 10/17 🟢 CVE 3/3 💾 4MB 🧠 63%
|
|
20
20
|
* 🔧 Architecture ADRs ●71% │ DDD ● 13% │ Security ●CLEAN
|
|
21
|
-
* 📊
|
|
21
|
+
* 📊 LanceDB Vectors ●3104⚡ │ Size 216KB │ Tests ●6 (~24 cases) │ MCP ●1/1
|
|
22
22
|
*/
|
|
23
23
|
export declare function generateStatuslineScript(options: InitOptions): string;
|
|
24
24
|
export declare function generateStatuslineHook(options: InitOptions): string;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* 🏗️ DDD Domains [●●○○○] 2/5 ⚡ HNSW 150x
|
|
18
18
|
* 🤖 Swarm ◉ [ 5/15] 👥 2 🪝 10/17 🟢 CVE 3/3 💾 4MB 🧠 63%
|
|
19
19
|
* 🔧 Architecture ADRs ●71% │ DDD ● 13% │ Security ●CLEAN
|
|
20
|
-
* 📊
|
|
20
|
+
* 📊 LanceDB Vectors ●3104⚡ │ Size 216KB │ Tests ●6 (~24 cases) │ MCP ●1/1
|
|
21
21
|
*/
|
|
22
22
|
export function generateStatuslineScript(options) {
|
|
23
23
|
const maxAgents = options.runtime.maxAgents;
|
|
@@ -313,7 +313,7 @@ function getLearningStats() {
|
|
|
313
313
|
path.join(CWD, '.monomind', 'memory.db'),
|
|
314
314
|
path.join(CWD, '.claude', 'memory.db'),
|
|
315
315
|
path.join(CWD, 'data', 'memory.db'),
|
|
316
|
-
path.join(CWD, '.
|
|
316
|
+
path.join(CWD, '.swarm', 'lancedb'),
|
|
317
317
|
];
|
|
318
318
|
|
|
319
319
|
for (const dbPath of memoryPaths) {
|
|
@@ -461,7 +461,7 @@ function getSwarmStatus() {
|
|
|
461
461
|
function getSystemMetrics() {
|
|
462
462
|
const memoryMB = Math.floor(process.memoryUsage().heapUsed / 1024 / 1024);
|
|
463
463
|
const learning = getLearningStats();
|
|
464
|
-
const
|
|
464
|
+
const lancedbStats = getMemoryStats();
|
|
465
465
|
|
|
466
466
|
// Intelligence from learning.json
|
|
467
467
|
const learningData = readJSON(path.join(CWD, '.monomind', 'metrics', 'learning.json'));
|
|
@@ -473,7 +473,7 @@ function getSystemMetrics() {
|
|
|
473
473
|
} else {
|
|
474
474
|
// Use actual vector/entry counts — 2000 entries = 100%
|
|
475
475
|
const fromPatterns = learning.patterns > 0 ? Math.min(100, Math.floor(learning.patterns / 20)) : 0;
|
|
476
|
-
const fromVectors =
|
|
476
|
+
const fromVectors = lancedbStats.vectorCount > 0 ? Math.min(100, Math.floor(lancedbStats.vectorCount / 20)) : 0;
|
|
477
477
|
intelligencePct = Math.max(fromPatterns, fromVectors);
|
|
478
478
|
}
|
|
479
479
|
|
|
@@ -590,8 +590,8 @@ function getActiveAgent() {
|
|
|
590
590
|
} catch { return null; }
|
|
591
591
|
}
|
|
592
592
|
|
|
593
|
-
//
|
|
594
|
-
function
|
|
593
|
+
// Memory (LanceDB) stats — count real entries
|
|
594
|
+
function getMemoryStats() {
|
|
595
595
|
let vectorCount = 0;
|
|
596
596
|
let dbSizeKB = 0;
|
|
597
597
|
let namespaces = 0;
|
|
@@ -1067,7 +1067,7 @@ function generateDashboard() {
|
|
|
1067
1067
|
const system = getSystemMetrics();
|
|
1068
1068
|
const adrs = getADRStatus();
|
|
1069
1069
|
const hooks = getHooksStatus();
|
|
1070
|
-
const
|
|
1070
|
+
const lancedbStats = getMemoryStats();
|
|
1071
1071
|
const tests = getTestStats();
|
|
1072
1072
|
const session = getSessionStats();
|
|
1073
1073
|
const integration = getIntegrationStatus();
|
|
@@ -1188,7 +1188,7 @@ function generateJSON() {
|
|
|
1188
1188
|
system: getSystemMetrics(),
|
|
1189
1189
|
adrs: getADRStatus(),
|
|
1190
1190
|
hooks: getHooksStatus(),
|
|
1191
|
-
|
|
1191
|
+
lancedb: getMemoryStats(),
|
|
1192
1192
|
tests: getTestStats(),
|
|
1193
1193
|
git: { modified: git.modified, untracked: git.untracked, staged: git.staged, ahead: git.ahead, behind: git.behind },
|
|
1194
1194
|
lastUpdated: new Date().toISOString(),
|
|
@@ -66,8 +66,8 @@ export interface HooksConfig {
|
|
|
66
66
|
export interface SkillsConfig {
|
|
67
67
|
/** Include core skills (swarm, sparc, mastermind, monodesign, monomotion) */
|
|
68
68
|
core: boolean;
|
|
69
|
-
/** Include
|
|
70
|
-
|
|
69
|
+
/** Include memory/LanceDB skills */
|
|
70
|
+
memory: boolean;
|
|
71
71
|
/** Include GitHub integration skills */
|
|
72
72
|
github: boolean;
|
|
73
73
|
/** Include browser automation skills */
|
|
@@ -194,7 +194,7 @@ export interface RuntimeConfig {
|
|
|
194
194
|
/** Maximum agents */
|
|
195
195
|
maxAgents: number;
|
|
196
196
|
/** Memory backend */
|
|
197
|
-
memoryBackend: 'memory' | 'sqlite' | '
|
|
197
|
+
memoryBackend: 'memory' | 'sqlite' | 'lancedb' | 'hybrid';
|
|
198
198
|
/** Enable HNSW indexing */
|
|
199
199
|
enableHNSW: boolean;
|
|
200
200
|
/** Enable neural learning */
|
|
@@ -73,7 +73,7 @@ export const DEFAULT_INIT_OPTIONS = {
|
|
|
73
73
|
},
|
|
74
74
|
skills: {
|
|
75
75
|
core: true,
|
|
76
|
-
|
|
76
|
+
memory: true,
|
|
77
77
|
github: true,
|
|
78
78
|
browser: true,
|
|
79
79
|
advanced: true,
|
|
@@ -164,7 +164,7 @@ export const MINIMAL_INIT_OPTIONS = {
|
|
|
164
164
|
},
|
|
165
165
|
skills: {
|
|
166
166
|
core: true,
|
|
167
|
-
|
|
167
|
+
memory: false,
|
|
168
168
|
github: false,
|
|
169
169
|
browser: false,
|
|
170
170
|
advanced: false,
|
|
@@ -220,7 +220,7 @@ export const FULL_INIT_OPTIONS = {
|
|
|
220
220
|
},
|
|
221
221
|
skills: {
|
|
222
222
|
core: true,
|
|
223
|
-
|
|
223
|
+
memory: true,
|
|
224
224
|
github: true,
|
|
225
225
|
browser: true,
|
|
226
226
|
advanced: true,
|
|
@@ -32,8 +32,6 @@ import { githubTools } from './mcp-tools/github-tools.js';
|
|
|
32
32
|
import { daaTools } from './mcp-tools/daa-tools.js';
|
|
33
33
|
import { coordinationTools } from './mcp-tools/coordination-tools.js';
|
|
34
34
|
import { browserTools } from './mcp-tools/browser-tools.js';
|
|
35
|
-
// Phase 6: AgentDB v1 controller tools
|
|
36
|
-
import { agentdbTools } from './mcp-tools/agentdb-tools.js';
|
|
37
35
|
import { guidanceTools } from './mcp-tools/guidance-tools.js';
|
|
38
36
|
import { autopilotTools } from './mcp-tools/autopilot-tools.js';
|
|
39
37
|
// Knowledge graph tools (graphify — deprecated shims + monograph native)
|
|
@@ -51,10 +49,7 @@ import { coherenceTools } from './mcp-tools/coherence-tools.js';
|
|
|
51
49
|
* Maps tool names to their handler functions
|
|
52
50
|
*/
|
|
53
51
|
const TOOL_REGISTRY = new Map();
|
|
54
|
-
// Register all tools — refuse silent overrides
|
|
55
|
-
// tool cannot shadow a built-in handler (e.g. `agent_spawn`, `memory_store`)
|
|
56
|
-
// without an explicit override flag. Logical-name collision is a real concern
|
|
57
|
-
// when the plugin system goes live.
|
|
52
|
+
// Register all tools — refuse silent overrides without an explicit override flag.
|
|
58
53
|
function registerTools(tools, options = {}) {
|
|
59
54
|
for (const tool of tools) {
|
|
60
55
|
if (TOOL_REGISTRY.has(tool.name) && !options.override) {
|
|
@@ -89,8 +84,6 @@ registerTools([
|
|
|
89
84
|
...daaTools,
|
|
90
85
|
...coordinationTools,
|
|
91
86
|
...browserTools,
|
|
92
|
-
// Phase 6: AgentDB v1 controller tools
|
|
93
|
-
...agentdbTools,
|
|
94
87
|
// Guidance & discovery tools
|
|
95
88
|
...guidanceTools,
|
|
96
89
|
// Autopilot persistent completion tools
|
|
@@ -147,7 +147,7 @@ const autopilotProgress = {
|
|
|
147
147
|
};
|
|
148
148
|
const autopilotLearn = {
|
|
149
149
|
name: 'autopilot_learn',
|
|
150
|
-
description: 'Discover success patterns from past task completions. Requires
|
|
150
|
+
description: 'Discover success patterns from past task completions. Requires memory backend for full functionality.',
|
|
151
151
|
category: 'autopilot',
|
|
152
152
|
inputSchema: { type: 'object', properties: {} },
|
|
153
153
|
handler: async () => {
|
|
@@ -159,12 +159,12 @@ const autopilotLearn = {
|
|
|
159
159
|
]);
|
|
160
160
|
return ok({ metrics, patterns });
|
|
161
161
|
}
|
|
162
|
-
return ok({ available: false, reason: '
|
|
162
|
+
return ok({ available: false, reason: 'memory backend/AutopilotLearning not initialized', patterns: [] });
|
|
163
163
|
},
|
|
164
164
|
};
|
|
165
165
|
const autopilotHistory = {
|
|
166
166
|
name: 'autopilot_history',
|
|
167
|
-
description: 'Search past completion episodes by keyword. Requires
|
|
167
|
+
description: 'Search past completion episodes by keyword. Requires memory backend.',
|
|
168
168
|
category: 'autopilot',
|
|
169
169
|
inputSchema: {
|
|
170
170
|
type: 'object',
|
|
@@ -121,7 +121,7 @@ export const daaTools = [
|
|
|
121
121
|
}
|
|
122
122
|
store.agents[id] = agent;
|
|
123
123
|
saveDAAStore(store);
|
|
124
|
-
// Store agent in
|
|
124
|
+
// Store agent in memory backend for searchable agent registry
|
|
125
125
|
try {
|
|
126
126
|
const bridge = await import('../memory/memory-bridge.js');
|
|
127
127
|
await bridge.bridgeStoreEntry({
|
|
@@ -131,7 +131,7 @@ export const daaTools = [
|
|
|
131
131
|
tags: [agent.type, agent.cognitivePattern],
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
|
-
catch { /*
|
|
134
|
+
catch { /* memory backend unavailable */ }
|
|
135
135
|
return {
|
|
136
136
|
success: true,
|
|
137
137
|
agent: {
|
|
@@ -177,7 +177,7 @@ export const daaTools = [
|
|
|
177
177
|
agent.lastActivity = new Date().toISOString();
|
|
178
178
|
agent.status = 'active';
|
|
179
179
|
saveDAAStore(store);
|
|
180
|
-
// Store adaptation feedback in
|
|
180
|
+
// Store adaptation feedback in memory backend for pattern learning (backward compat: JSON store above)
|
|
181
181
|
let _storedIn = 'json-store';
|
|
182
182
|
try {
|
|
183
183
|
const bridge = await import('../memory/memory-bridge.js');
|
|
@@ -187,9 +187,9 @@ export const daaTools = [
|
|
|
187
187
|
quality: performanceScore,
|
|
188
188
|
agent: agentId,
|
|
189
189
|
});
|
|
190
|
-
_storedIn = '
|
|
190
|
+
_storedIn = 'lancedb';
|
|
191
191
|
}
|
|
192
|
-
catch { /*
|
|
192
|
+
catch { /* memory backend unavailable */ }
|
|
193
193
|
return {
|
|
194
194
|
success: true,
|
|
195
195
|
agentId,
|
|
@@ -283,7 +283,7 @@ export const daaTools = [
|
|
|
283
283
|
}
|
|
284
284
|
workflow.status = 'running';
|
|
285
285
|
saveDAAStore(store);
|
|
286
|
-
// Store workflow state in
|
|
286
|
+
// Store workflow state in memory backend for tracking
|
|
287
287
|
try {
|
|
288
288
|
const bridge = await import('../memory/memory-bridge.js');
|
|
289
289
|
await bridge.bridgeStoreEntry({
|
|
@@ -296,7 +296,7 @@ export const daaTools = [
|
|
|
296
296
|
namespace: 'daa-workflows',
|
|
297
297
|
});
|
|
298
298
|
}
|
|
299
|
-
catch { /*
|
|
299
|
+
catch { /* memory backend unavailable */ }
|
|
300
300
|
return {
|
|
301
301
|
success: true,
|
|
302
302
|
workflowId,
|
|
@@ -325,7 +325,7 @@ export const daaTools = [
|
|
|
325
325
|
const store = loadDAAStore();
|
|
326
326
|
const sourceId = input.sourceAgentId;
|
|
327
327
|
// Cap targetIds to prevent a large array from inflating the JSON store
|
|
328
|
-
// entry and the
|
|
328
|
+
// entry and the memory backend tags blob. 100 target agents is already very
|
|
329
329
|
// generous for any realistic swarm configuration.
|
|
330
330
|
const MAX_TARGET_IDS = 100;
|
|
331
331
|
const MAX_TARGET_ID_LEN = 256;
|
|
@@ -344,7 +344,7 @@ export const daaTools = [
|
|
|
344
344
|
targetAgents: targetIds,
|
|
345
345
|
timestamp: new Date().toISOString(),
|
|
346
346
|
};
|
|
347
|
-
// Primary: store in
|
|
347
|
+
// Primary: store in memory backend for vector-searchable knowledge
|
|
348
348
|
let _storedIn = 'json-store';
|
|
349
349
|
try {
|
|
350
350
|
const bridge = await import('../memory/memory-bridge.js');
|
|
@@ -354,9 +354,9 @@ export const daaTools = [
|
|
|
354
354
|
namespace: 'daa-knowledge',
|
|
355
355
|
tags: [domain, sourceId, ...targetIds],
|
|
356
356
|
});
|
|
357
|
-
_storedIn = '
|
|
357
|
+
_storedIn = 'lancedb';
|
|
358
358
|
}
|
|
359
|
-
catch { /*
|
|
359
|
+
catch { /* memory backend unavailable */ }
|
|
360
360
|
// Backward compat: always persist in JSON store (cap at 1000 entries)
|
|
361
361
|
if (Object.keys(store.knowledge).length >= 1000) {
|
|
362
362
|
const oldest = Object.keys(store.knowledge)[0];
|
|
@@ -373,8 +373,8 @@ export const daaTools = [
|
|
|
373
373
|
domain,
|
|
374
374
|
sharedAt: knowledgeEntry.timestamp,
|
|
375
375
|
_storedIn,
|
|
376
|
-
_note: _storedIn === '
|
|
377
|
-
? 'Knowledge stored in
|
|
376
|
+
_note: _storedIn === 'lancedb'
|
|
377
|
+
? 'Knowledge stored in memory backend (vector-searchable) and JSON store. Target agents can retrieve via daa_learning_status or memory search.'
|
|
378
378
|
: 'Knowledge stored in shared JSON registry. Target agents can retrieve via daa_learning_status. No cross-agent memory transfer occurs.',
|
|
379
379
|
};
|
|
380
380
|
},
|
|
@@ -76,11 +76,11 @@ const CAPABILITY_CATALOG = {
|
|
|
76
76
|
},
|
|
77
77
|
'memory-knowledge': {
|
|
78
78
|
name: 'Memory & Knowledge',
|
|
79
|
-
description: 'Persistent memory with
|
|
79
|
+
description: 'Persistent memory with ANN vector search, LanceDB storage, and embeddings.',
|
|
80
80
|
tools: ['memory_store', 'memory_retrieve', 'memory_search', 'memory_list', 'memory_delete', 'memory_init', 'memory_export', 'memory_import', 'memory_stats', 'memory_compact', 'memory_namespace'],
|
|
81
81
|
commands: ['memory store', 'memory retrieve', 'memory search', 'memory list', 'memory delete', 'memory init'],
|
|
82
82
|
agents: ['swarm-memory-manager', 'v1-memory-specialist'],
|
|
83
|
-
skills: ['v1-memory-unification', '
|
|
83
|
+
skills: ['v1-memory-unification', 'memory-advanced', 'memory-vector-search', 'memory-patterns', 'memory-learning'],
|
|
84
84
|
whenToUse: 'When you need to persist, search, or retrieve knowledge across sessions.',
|
|
85
85
|
},
|
|
86
86
|
'intelligence-learning': {
|
|
@@ -89,7 +89,7 @@ const CAPABILITY_CATALOG = {
|
|
|
89
89
|
tools: ['neural_train', 'neural_predict', 'neural_status', 'neural_patterns', 'neural_optimize'],
|
|
90
90
|
commands: ['neural train', 'neural predict', 'neural status', 'neural patterns', 'neural optimize'],
|
|
91
91
|
agents: ['sona-learning-optimizer', 'safla-neural'],
|
|
92
|
-
skills: ['reasoningbank-intelligence', 'reasoningbank
|
|
92
|
+
skills: ['reasoningbank-intelligence', 'memory-reasoningbank'],
|
|
93
93
|
whenToUse: 'When optimizing agent routing, training patterns from outcomes, or adaptive learning.',
|
|
94
94
|
},
|
|
95
95
|
'hooks-automation': {
|
|
@@ -158,7 +158,7 @@ const CAPABILITY_CATALOG = {
|
|
|
158
158
|
tools: ['embeddings_embed', 'embeddings_batch', 'embeddings_search', 'embeddings_init'],
|
|
159
159
|
commands: ['embeddings embed', 'embeddings batch', 'embeddings search', 'embeddings init'],
|
|
160
160
|
agents: [],
|
|
161
|
-
skills: ['
|
|
161
|
+
skills: ['memory-vector-search', 'memory-optimization'],
|
|
162
162
|
whenToUse: 'When you need semantic search, document embedding, or vector similarity operations.',
|
|
163
163
|
},
|
|
164
164
|
'code-analysis': {
|
|
@@ -675,7 +675,7 @@ export const hiveMindTools = [
|
|
|
675
675
|
state.consensus.pending = state.consensus.pending.filter(p => p.proposalId !== proposal.proposalId);
|
|
676
676
|
}
|
|
677
677
|
saveHiveState(state);
|
|
678
|
-
// Persist consensus result
|
|
678
|
+
// Persist consensus result for searchable history
|
|
679
679
|
if (resolved) {
|
|
680
680
|
try {
|
|
681
681
|
const bridge = await import('../memory/memory-bridge.js');
|
|
@@ -693,7 +693,7 @@ export const hiveMindTools = [
|
|
|
693
693
|
tags: [proposal.type, proposalStrategy || 'raft', proposal.status],
|
|
694
694
|
});
|
|
695
695
|
}
|
|
696
|
-
catch { /*
|
|
696
|
+
catch { /* LanceDB not available — JSON store is primary */ }
|
|
697
697
|
// Persist consensus audit record
|
|
698
698
|
const sessionSecret = process.env.MONOMIND_SESSION_SECRET;
|
|
699
699
|
if (!sessionSecret) {
|
|
@@ -983,7 +983,7 @@ export const hiveMindTools = [
|
|
|
983
983
|
}
|
|
984
984
|
state.sharedMemory[key] = cappedValue;
|
|
985
985
|
saveHiveState(state);
|
|
986
|
-
// Also store
|
|
986
|
+
// Also store for searchable hive memory
|
|
987
987
|
try {
|
|
988
988
|
const bridge = await import('../memory/memory-bridge.js');
|
|
989
989
|
await bridge.bridgeStoreEntry({
|
|
@@ -992,7 +992,7 @@ export const hiveMindTools = [
|
|
|
992
992
|
namespace: 'hive-memory',
|
|
993
993
|
});
|
|
994
994
|
}
|
|
995
|
-
catch { /*
|
|
995
|
+
catch { /* LanceDB not available */ }
|
|
996
996
|
return {
|
|
997
997
|
action,
|
|
998
998
|
key,
|
|
@@ -735,6 +735,7 @@ export const hooksIntelligenceAttention = {
|
|
|
735
735
|
results,
|
|
736
736
|
stats: {
|
|
737
737
|
computeTimeMs,
|
|
738
|
+
speedup: implementation.startsWith('real-') ? computeTimeMs : null,
|
|
738
739
|
_stub: implementation === 'none',
|
|
739
740
|
_note: implementation === 'none' ? 'Pure-JS similarity only; native attention backends are not part of the lean build.' : undefined,
|
|
740
741
|
},
|