nexus-prime 3.12.1 → 3.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -5
- package/dist/agents/adapters/mcp.d.ts.map +1 -1
- package/dist/agents/adapters/mcp.js +59 -0
- package/dist/agents/adapters/mcp.js.map +1 -1
- package/dist/agents/adapters.d.ts +10 -1
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/adapters.js +21 -0
- package/dist/agents/adapters.js.map +1 -1
- package/dist/agents/core/types.d.ts +1 -1
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/learner.d.ts +9 -0
- package/dist/agents/learner.d.ts.map +1 -1
- package/dist/agents/learner.js +35 -0
- package/dist/agents/learner.js.map +1 -1
- package/dist/cli.js +29 -5
- package/dist/cli.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/dashboard/index.html +215 -43
- package/dist/engines/client-bootstrap.d.ts +1 -1
- package/dist/engines/client-bootstrap.d.ts.map +1 -1
- package/dist/engines/client-bootstrap.js +71 -7
- package/dist/engines/client-bootstrap.js.map +1 -1
- package/dist/engines/embedder.d.ts +11 -2
- package/dist/engines/embedder.d.ts.map +1 -1
- package/dist/engines/embedder.js +81 -6
- package/dist/engines/embedder.js.map +1 -1
- package/dist/engines/kv-bridge.d.ts +17 -0
- package/dist/engines/kv-bridge.d.ts.map +1 -1
- package/dist/engines/kv-bridge.js +87 -0
- package/dist/engines/kv-bridge.js.map +1 -1
- package/dist/engines/memory-bridge.d.ts +39 -0
- package/dist/engines/memory-bridge.d.ts.map +1 -0
- package/dist/engines/memory-bridge.js +105 -0
- package/dist/engines/memory-bridge.js.map +1 -0
- package/dist/engines/memory.d.ts +9 -1
- package/dist/engines/memory.d.ts.map +1 -1
- package/dist/engines/memory.js +31 -3
- package/dist/engines/memory.js.map +1 -1
- package/dist/engines/skill-runtime.d.ts.map +1 -1
- package/dist/engines/skill-runtime.js +37 -2
- package/dist/engines/skill-runtime.js.map +1 -1
- package/dist/engines/token-supremacy.d.ts.map +1 -1
- package/dist/engines/token-supremacy.js +19 -7
- package/dist/engines/token-supremacy.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<
|
|
2
|
+
<img src="./docs/assets/nexus-prime-logo.svg" alt="Nexus Prime" width="80" height="80">
|
|
3
|
+
<h1>Nexus Prime</h1>
|
|
3
4
|
<p><strong>Local-first MCP control plane for coding agents</strong></p>
|
|
4
5
|
|
|
5
6
|
[](https://www.npmjs.com/package/nexus-prime)
|
|
6
7
|
[](https://www.npmjs.com/package/nexus-prime)
|
|
7
8
|
[](LICENSE)
|
|
8
|
-
[](https://github.com/topics/agentic-os)
|
|
9
9
|
[](https://github.com/sir-ad/nexus-prime/actions)
|
|
10
10
|
[](https://nodejs.org)
|
|
11
11
|
<!-- traffic-badges:start -->
|
|
@@ -13,11 +13,25 @@
|
|
|
13
13
|
[](https://github.com/sir-ad/nexus-prime)
|
|
14
14
|
<!-- traffic-badges:end -->
|
|
15
15
|
|
|
16
|
+
[](https://github.com/sir-ad/nexus-prime/stargazers)
|
|
17
|
+
[](https://github.com/sir-ad/nexus-prime/network/members)
|
|
18
|
+
[](https://github.com/sir-ad/nexus-prime/issues)
|
|
19
|
+
[](https://github.com/sir-ad/nexus-prime/commits)
|
|
20
|
+
[](https://github.com/sir-ad/nexus-prime/pulls)
|
|
21
|
+
|
|
16
22
|
<!-- AI / Agentic Widgets -->
|
|
17
23
|
[](https://github.com/topics/ai)
|
|
18
24
|
[](https://github.com/topics/llm)
|
|
19
25
|
[](https://modelcontextprotocol.io/)
|
|
20
|
-
|
|
26
|
+
[](https://github.com/topics/agentic-os)
|
|
27
|
+
[](https://www.typescriptlang.org/)
|
|
28
|
+
[](https://opensource.org/)
|
|
29
|
+
|
|
30
|
+
<!-- Community -->
|
|
31
|
+
[](https://www.reddit.com/r/LLMDevs/)
|
|
32
|
+
[](https://www.reddit.com/r/Nexus_Prime/)
|
|
33
|
+
[](https://discord.gg/zCPEjPZj)
|
|
34
|
+
|
|
21
35
|
<p><i>Bootstrap. Orchestrate. Verify. Learn.</i></p>
|
|
22
36
|
<a href="https://www.producthunt.com/products/nexus-prime?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-nexus-prime" target="_blank" rel="noopener noreferrer"><img alt="Nexus-Prime - Semantic memory and parallel execution for AI coding agents | Product Hunt" width="250" height="54" src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1096831&theme=dark&t=1773345508816"></a>
|
|
23
37
|
|
|
@@ -66,6 +80,34 @@ npx nexus-prime mcp
|
|
|
66
80
|
|
|
67
81
|
Home-scoped bootstrap now runs automatically on install or first binary start, and the first Nexus run inside a repo writes the workspace-scoped client files it needs. `nexus-prime setup <client>` and `nexus-prime setup all` remain the explicit refresh/fix path when you want to force regeneration.
|
|
68
82
|
|
|
83
|
+
### Docker
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
docker compose up # Nexus Prime only
|
|
87
|
+
docker compose --profile with-ollama up # Nexus Prime + local Ollama
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Embedding backends
|
|
91
|
+
|
|
92
|
+
Nexus Prime supports multiple embedding backends with automatic fallback:
|
|
93
|
+
|
|
94
|
+
| Backend | Config | Default model |
|
|
95
|
+
|---------|--------|---------------|
|
|
96
|
+
| **Local TF-IDF** | `NEXUS_EMBED_MODE=local` (default) | Built-in 128-dim |
|
|
97
|
+
| **Ollama** | `NEXUS_EMBED_MODE=ollama` | `nomic-embed-text` |
|
|
98
|
+
| **HuggingFace** | `NEXUS_EMBED_MODE=huggingface` | `sentence-transformers/all-MiniLM-L6-v2` |
|
|
99
|
+
| **OpenAI** | `NEXUS_EMBED_MODE=api` | `text-embedding-3-small` |
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Ollama (requires ollama running locally)
|
|
103
|
+
NEXUS_EMBED_MODE=ollama NEXUS_OLLAMA_ENDPOINT=http://localhost:11434 npx nexus-prime mcp
|
|
104
|
+
|
|
105
|
+
# HuggingFace Inference API
|
|
106
|
+
NEXUS_EMBED_MODE=huggingface NEXUS_HF_API_KEY=hf_... npx nexus-prime mcp
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Fallback chain: Ollama → HuggingFace → OpenAI → Local TF-IDF. If the preferred backend is unavailable, Nexus falls through automatically.
|
|
110
|
+
|
|
69
111
|
## Default bootstrap-orchestrate path
|
|
70
112
|
|
|
71
113
|
```txt
|
|
@@ -174,15 +216,18 @@ flowchart TD
|
|
|
174
216
|
## 🚀 Client Setup and Runtime Contract
|
|
175
217
|
|
|
176
218
|
### Supported MCP Clients
|
|
177
|
-
Nexus Prime
|
|
219
|
+
Nexus Prime provides automated setup for **9 coding agents**:
|
|
178
220
|
- 🔴 **Codex**
|
|
179
221
|
- 🔵 **Cursor**
|
|
180
222
|
- 🍊 **Claude Code**
|
|
181
223
|
- 🟢 **Opencode**
|
|
182
224
|
- 🌊 **Windsurf**
|
|
183
225
|
- 🛡️ **Antigravity / OpenClaw**
|
|
226
|
+
- 🔧 **Aider**
|
|
227
|
+
- 🔗 **Continue.dev**
|
|
228
|
+
- ⚙️ **Cline**
|
|
184
229
|
|
|
185
|
-
|
|
230
|
+
All agent configurations are written automatically on `npm install`. The first Nexus run inside a repo writes workspace-scoped client files. `nexus-prime setup <client>` and `nexus-prime setup all` remain the explicit refresh/fix path.
|
|
186
231
|
|
|
187
232
|
### Automated Integration
|
|
188
233
|
```bash
|
|
@@ -191,6 +236,9 @@ nexus-prime setup cursor
|
|
|
191
236
|
nexus-prime setup claude
|
|
192
237
|
nexus-prime setup windsurf
|
|
193
238
|
nexus-prime setup antigravity
|
|
239
|
+
nexus-prime setup aider
|
|
240
|
+
nexus-prime setup continue
|
|
241
|
+
nexus-prime setup cline
|
|
194
242
|
nexus-prime setup all
|
|
195
243
|
nexus-prime setup status
|
|
196
244
|
```
|
|
@@ -573,6 +621,36 @@ Inventory Snapshot: 109 skills · 64 workflows · 5 hooks · 3 automations · 7
|
|
|
573
621
|
## 📜 Release History
|
|
574
622
|
|
|
575
623
|
<details open>
|
|
624
|
+
<summary><b>v3.14.0</b> · 2026-03-16 · Ollama/HuggingFace embeddings, autonomous memory, agent ecosystem expansion</summary>
|
|
625
|
+
|
|
626
|
+
- **Embedding backend chain**: Added Ollama and HuggingFace Inference API as embedding backends with automatic fallback (Ollama → HuggingFace → OpenAI → Local TF-IDF).
|
|
627
|
+
- **Agent ecosystem expansion**: Added first-class setup for Aider, Continue.dev, and Cline alongside existing Codex, Cursor, Claude Code, Opencode, Windsurf, and OpenClaw adapters (9 agents total).
|
|
628
|
+
- **OpenClaw memory bridge**: Bidirectional memory sync between Nexus Prime and OpenClaw instances via `nexus_openclaw_memory_sync`.
|
|
629
|
+
- **Autonomous memory management**: Configurable decay rates, access-frequency retention (frequently recalled memories decay slower), and a maintenance cycle that expires stale low-value memories.
|
|
630
|
+
- **Learning-to-skill promotion**: Recurring agent learnings are automatically promoted to reusable skills when access patterns indicate reliability.
|
|
631
|
+
- **Fuzzy skill matching**: Skill resolution now uses Jaccard similarity scoring instead of exact name matching, so approximate goal text finds relevant skills.
|
|
632
|
+
- **Adaptive token optimization**: Reading plan thresholds adjust dynamically based on file count and budget constraints.
|
|
633
|
+
- **Docker one-click install**: `docker compose up` starts Nexus Prime; `--profile with-ollama` adds local Ollama for fully offline operation.
|
|
634
|
+
- **Fixed**: Dashboard memory graph no longer overlaps text (z-index stacking). Claude Code MCP config path corrected to `~/.claude/mcp.json`. Agent auto-config now writes workspace configs during `npm install`.
|
|
635
|
+
|
|
636
|
+
Full notes: [CHANGELOG.md](./CHANGELOG.md)
|
|
637
|
+
</details>
|
|
638
|
+
|
|
639
|
+
<details>
|
|
640
|
+
<summary><b>v3.13.0</b> · 2026-03-15 · Workspace surfaces, dashboard layout fixes, and community presence</summary>
|
|
641
|
+
|
|
642
|
+
- Dashboard workspaces now drive their own graph visibility, library tabs, titles, and subtitles per surface mode (overview, knowledge, runs, catalog, governance).
|
|
643
|
+
- Fixed memory graph overlapping text in non-graph surfaces by collapsing focusable-shell gap when the graph widget is hidden and removing conflicting inline margin.
|
|
644
|
+
- Added graph-note text overflow handling and responsive min-height for hidden-graph surfaces.
|
|
645
|
+
- Library tabs are now rendered dynamically per workspace instead of a single hardcoded rail.
|
|
646
|
+
- Knowledge workspace auto-opens the create form when no collections exist.
|
|
647
|
+
- Plan and execute actions now switch to the runs workspace automatically.
|
|
648
|
+
- Added community badges (Reddit, Discord), engagement badges (stars, forks, issues, PRs), and the r/LLMDevs #1 Post of the Day recognition.
|
|
649
|
+
|
|
650
|
+
Full notes: [CHANGELOG.md](./CHANGELOG.md)
|
|
651
|
+
</details>
|
|
652
|
+
|
|
653
|
+
<details>
|
|
576
654
|
<summary><b>v3.12.1</b> · 2026-03-14 · Dashboard focus mode, graph recall wiring, and bootstrap recovery</summary>
|
|
577
655
|
|
|
578
656
|
- Added dashboard maximize/restore focus mode across the main operational panels so graph, memory snapshots, runtime events, and operator actions are usable without the cramped default layout.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/mcp.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgE5C,KAAK,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;AAC5C,KAAK,iBAAiB,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/mcp.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgE5C,KAAK,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;AAC5C,KAAK,iBAAiB,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CAAC;AAiKF,qBAAa,UAAW,YAAW,OAAO;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAG,KAAK,CAAU;IACtB,SAAS,UAAS;IAClB,MAAM,EAAE,MAAM,EAAE,CAAM;IAEtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,OAAO,CAAC,CAAkB;IAElC,OAAO,CAAC,GAAG;;IAmBX,OAAO,CAAC,gBAAgB;IA4BxB,WAAW,CAAC,KAAK,EAAE,UAAU;IAI7B,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,uBAAuB;IAsB/B,cAAc,CAAC,OAAO,GAAE,cAAsC,GAAG,iBAAiB,EAAE;IAIpF,OAAO,CAAC,oBAAoB;IA+xB5B,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,iBAAiB;YAsCX,cAAc;IA0zD5B,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAItC,OAAO,CAAC,IAAI;IAmBN,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAOxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAClD,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;CACzC"}
|
|
@@ -119,6 +119,7 @@ const MANUAL_OR_DIAGNOSTIC_TOOLS = new Set([
|
|
|
119
119
|
'nexus_pattern_search',
|
|
120
120
|
'nexus_pattern_list',
|
|
121
121
|
'nexus_knowledge_provenance',
|
|
122
|
+
'nexus_openclaw_memory_sync',
|
|
122
123
|
]);
|
|
123
124
|
/** Session-level telemetry tracker */
|
|
124
125
|
class SessionTelemetry {
|
|
@@ -408,6 +409,20 @@ export class MCPAdapter {
|
|
|
408
409
|
description: 'Expert surface: run memory maintenance to expire TTL memories, cool stale entries, and quarantine or scrap low-signal items.',
|
|
409
410
|
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
410
411
|
},
|
|
412
|
+
{
|
|
413
|
+
name: 'nexus_openclaw_memory_sync',
|
|
414
|
+
description: 'Expert surface: sync memory to/from OpenClaw/Antigravity instances. Use "syncTo" to export memory bundle to target directory, "syncFrom" to import from source directory.',
|
|
415
|
+
inputSchema: {
|
|
416
|
+
type: 'object',
|
|
417
|
+
properties: {
|
|
418
|
+
action: { type: 'string', enum: ['syncTo', 'syncFrom', 'status'], description: 'The sync action to perform' },
|
|
419
|
+
targetDir: { type: 'string', description: 'Target directory for syncTo (e.g. ~/.antigravity/nexus-prime/)' },
|
|
420
|
+
sourceDir: { type: 'string', description: 'Source directory for syncFrom' },
|
|
421
|
+
scope: { type: 'string', enum: ['session', 'project', 'user', 'promoted', 'shared'], description: 'Memory scope for syncTo' },
|
|
422
|
+
},
|
|
423
|
+
required: ['action'],
|
|
424
|
+
},
|
|
425
|
+
},
|
|
411
426
|
{
|
|
412
427
|
name: 'nexus_memory_trace',
|
|
413
428
|
description: 'Expert surface: inspect one memory item with lineage, backlinks, and reconciliation details.',
|
|
@@ -1555,6 +1570,50 @@ export class MCPAdapter {
|
|
|
1555
1570
|
}],
|
|
1556
1571
|
};
|
|
1557
1572
|
}
|
|
1573
|
+
case 'nexus_openclaw_memory_sync': {
|
|
1574
|
+
const action = String(request.params.arguments?.action ?? 'status');
|
|
1575
|
+
const targetDir = String(request.params.arguments?.targetDir ?? '');
|
|
1576
|
+
const sourceDir = String(request.params.arguments?.sourceDir ?? '');
|
|
1577
|
+
const scope = String(request.params.arguments?.scope ?? 'session');
|
|
1578
|
+
const { MemoryBridge } = await import('../../engines/memory-bridge.js');
|
|
1579
|
+
const { MemoryEngine } = await import('../../engines/memory.js');
|
|
1580
|
+
const memoryEngine = new MemoryEngine();
|
|
1581
|
+
const bridge = new MemoryBridge(memoryEngine);
|
|
1582
|
+
let detail;
|
|
1583
|
+
if (action === 'syncTo') {
|
|
1584
|
+
const result = bridge.syncTo(targetDir || bridge.getBridgeDir(), { scope });
|
|
1585
|
+
detail = formatBullets([
|
|
1586
|
+
`Success: ${result.success}`,
|
|
1587
|
+
`Items: ${result.itemCount}`,
|
|
1588
|
+
result.path ? `Path: ${result.path}` : '',
|
|
1589
|
+
]);
|
|
1590
|
+
}
|
|
1591
|
+
else if (action === 'syncFrom') {
|
|
1592
|
+
const result = bridge.syncFrom(sourceDir || bridge.getBridgeDir());
|
|
1593
|
+
detail = formatBullets([
|
|
1594
|
+
`Success: ${result.success}`,
|
|
1595
|
+
`Items: ${result.itemCount}`,
|
|
1596
|
+
result.errors?.length ? `Errors: ${result.errors.join(', ')}` : '',
|
|
1597
|
+
]);
|
|
1598
|
+
}
|
|
1599
|
+
else {
|
|
1600
|
+
const result = bridge.getSyncState();
|
|
1601
|
+
detail = formatBullets([
|
|
1602
|
+
`Last sync: ${result.lastSync ? new Date(result.lastSync).toISOString() : 'never'}`,
|
|
1603
|
+
`Direction: ${result.lastDirection || 'none'}`,
|
|
1604
|
+
`Items: ${result.lastItemCount}`,
|
|
1605
|
+
]);
|
|
1606
|
+
}
|
|
1607
|
+
return {
|
|
1608
|
+
content: [{
|
|
1609
|
+
type: 'text',
|
|
1610
|
+
text: [
|
|
1611
|
+
`OpenClaw memory sync: ${action}`,
|
|
1612
|
+
detail,
|
|
1613
|
+
].join('\n\n'),
|
|
1614
|
+
}],
|
|
1615
|
+
};
|
|
1616
|
+
}
|
|
1558
1617
|
case 'nexus_memory_trace': {
|
|
1559
1618
|
const id = String(request.params.arguments?.id ?? '');
|
|
1560
1619
|
const detail = this.nexusRef.traceMemory(id);
|