@nxuss/lemma 1.18.2 → 1.20.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/.agents/skills/lemma/SKILL.md +124 -0
- package/README.md +5 -1
- package/bin/init.js +184 -3
- package/bin/lemma-call.js +269 -0
- package/dist/cjs/mcp/index.js +4 -2
- package/dist/cjs/mcp/index.js.map +1 -1
- package/dist/esm/mcp/index.js +4 -2
- package/dist/esm/mcp/index.js.map +1 -1
- package/lemma-proxy.cjs +12 -0
- package/package.json +11 -2
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lemma
|
|
3
|
+
description: Lemma — cache semántico, firewall de privacidad y memoria cross-sesión para Muse. Usa `lemma call <tool>` vía bash para acceder a 70+ tools sin MCP nativo.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
allowed-tools: bash
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Lemma para Muse
|
|
9
|
+
|
|
10
|
+
Eres Muse Code (muse-spark). Tienes **Lemma MCP** disponible — gateway de caché semántica, firewall de privacidad y memoria persistente. Muse no expone MCP nativamente, así que llamas a Lemma vía **CLI `lemma call`** (wrapper sobre `mcp-server.js` por stdio) + **proxy local**.
|
|
11
|
+
|
|
12
|
+
## Qué es Lemma
|
|
13
|
+
|
|
14
|
+
- **Proxy local** en `http://localhost:8081` — cachea respuestas LLM (BM25 + embeddings), ahorra tokens/dinero.
|
|
15
|
+
- **Brain persistente** en `~/.lemma-cache/lemma_brain.json` + memoria por proyecto.
|
|
16
|
+
- **MCP server** con 70+ tools — las mismas que usan Claude Code / Cursor / Codex, aquí vía `lemma call`.
|
|
17
|
+
|
|
18
|
+
> **Nota de compatibilidad:** Este skill NO afecta a Claude Code, Cursor, Codex ni otros CLIs con MCP nativo. Ellos siguen usando `mcp__lemma__*` directo. Las reglas globales de `AGENTS.md` (MANDATORY RULES) aplican a clientes con MCP nativo; si eres Muse, **este skill tiene prioridad** sobre `AGENTS.md` para decidir cuándo usar Lemma.
|
|
19
|
+
|
|
20
|
+
## Cuándo usar Lemma (Muse)
|
|
21
|
+
|
|
22
|
+
| Tarea | Qué hacer con Lemma |
|
|
23
|
+
|---|---|
|
|
24
|
+
| Pregunta que puede estar ya resuelta | `search_memory` antes de razonar |
|
|
25
|
+
| Pregunta atada a archivos concretos (mismo prompt + mismos archivos) | `state_hash_cache` con `action=lookup` antes, `store` después |
|
|
26
|
+
| Conocimiento que debe sobrevivir sesiones | `search_memory` / `store_memory` (con `derivedFrom`) |
|
|
27
|
+
| Leer/listar/buscar workspace | Usa tus tools nativos (`read_file`, `bash ls/grep`) — Lemma añade scrubbing si lo llamas, pero no es obligatorio |
|
|
28
|
+
| Tarea mecánica → decidir modelo barato | `get_routing_advice` |
|
|
29
|
+
| Aplicar patch | `validate_patch_sandbox` primero |
|
|
30
|
+
| "¿Cuánto ahorramos?" | `token_receipt` |
|
|
31
|
+
|
|
32
|
+
Si Lemma no encaja, usa tu tool nativo. No fuerces Lemma donde no aporta.
|
|
33
|
+
|
|
34
|
+
## Cómo llamar a Lemma desde Muse (preferido)
|
|
35
|
+
|
|
36
|
+
Usa el wrapper `lemma call` — evita craft de JSON-RPC manual y escapa args por ti. Está disponible como `node ./lemma-proxy.cjs call` o `node ./bin/lemma-call.js` o `npx @nxuss/lemma call` si instalaste global.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# 1. Lookup en memoria antes de razonar (preferido — wrapper)
|
|
40
|
+
node ./lemma-proxy.cjs call search_memory --query "tu pregunta"
|
|
41
|
+
# o JSON explícito:
|
|
42
|
+
node ./lemma-proxy.cjs call search_memory '{"query":"tu pregunta"}'
|
|
43
|
+
|
|
44
|
+
# 2. Busca en workspace (con scrubbing)
|
|
45
|
+
node ./lemma-proxy.cjs call search_workspace --query "texto" --maxResults 10
|
|
46
|
+
|
|
47
|
+
# 3. Guarda solución verificada
|
|
48
|
+
node ./lemma-proxy.cjs call store_memory '{"content":"solución verificada","tags":["bugfix"]}'
|
|
49
|
+
|
|
50
|
+
# 4. Lista tools disponibles
|
|
51
|
+
node ./lemma-proxy.cjs call --list
|
|
52
|
+
|
|
53
|
+
# Pipe también funciona:
|
|
54
|
+
echo '{"query":"hello"}' | node ./bin/lemma-call.js search_memory
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Alternativa raw (solo si el wrapper no está disponible):**
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_memory","arguments":{"query":"tu pregunta"}}}' | node ./mcp-server.js
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Para tráfico LLM real (cache del proxy), asegúrate que el daemon corre:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
node ./lemma-proxy.cjs status
|
|
67
|
+
node ./lemma-proxy.cjs start
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Cero config en este repo
|
|
71
|
+
|
|
72
|
+
Si clonaste `lemma` y lo abriste con Muse, **no necesitas correr ningún comando**. Este repo ya trae:
|
|
73
|
+
- `.agents/skills/lemma/SKILL.md` (este archivo) — Muse lo detecta al abrir el workspace
|
|
74
|
+
- `AGENTS.md` con guard clause para Muse
|
|
75
|
+
- `bin/lemma-call.js` + `lemma-proxy.cjs call` (wrapper sin JSON manual)
|
|
76
|
+
- `mcp-server.js` como fallback sin build
|
|
77
|
+
|
|
78
|
+
Muse te pedirá confiar el workspace la primera vez (prompt interactivo). Una vez que aceptas, el skill queda activo automáticamente — sin `lemma init`, sin `npm run build` manual. Para uso total (70+ tools) el wrapper resuelve `dist/cjs/mcp/index.js` → `mcp-server.js`; si `dist` no existe se auto-construye o usa el fallback con las tools core.
|
|
79
|
+
|
|
80
|
+
## Sandbox y permisos
|
|
81
|
+
|
|
82
|
+
Muse corre con sandbox por workspace. El proxy (`localhost:8081`) y el brain (`~/.lemma-cache/`) están **fuera** del workspace, así que:
|
|
83
|
+
|
|
84
|
+
- La primera vez Muse pregunta si confías el workspace — di que sí. Después queda recordado, no necesitas `--trust-workspace` manual cada vez (solo si lo abres con flag explícito).
|
|
85
|
+
- Si ves `permission denied`, acepta el trust prompt y re-intenta; no necesitas `--disable-sandbox`.
|
|
86
|
+
- El wrapper prioriza `dist/cjs/mcp/index.js` y cae a `mcp-server.js` si aún no hay build — cero pasos extra.
|
|
87
|
+
|
|
88
|
+
## Flujo obligatorio al iniciar sesión
|
|
89
|
+
|
|
90
|
+
1. Llama `search_memory` vía `lemma call` con el tema de la tarea.
|
|
91
|
+
2. Si hay hit, verifícalo contra el código actual antes de presentarlo.
|
|
92
|
+
3. Al terminar con solución verificada (tests pasaron), llama `store_memory` vía `lemma call`.
|
|
93
|
+
|
|
94
|
+
## Flujo para bugs
|
|
95
|
+
|
|
96
|
+
1. `get_telepathic_hints` vía `lemma call` si necesitas contexto de runtime.
|
|
97
|
+
2. `search_memory` con el mensaje de error.
|
|
98
|
+
|
|
99
|
+
## Regla dura
|
|
100
|
+
|
|
101
|
+
Si tu respuesta viene de un cache hit, dilo explícitamente: "esto viene de memoria cacheada". Nunca presentes un hit como razonamiento fresco. Y nunca guardes una solución no verificada.
|
|
102
|
+
|
|
103
|
+
## Verificación (opcional)
|
|
104
|
+
|
|
105
|
+
En este repo no necesitas instalar nada — ya está listo. Solo si quieres verificar:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Wrapper responde (sin JSON manual)
|
|
109
|
+
node ./lemma-proxy.cjs call --list | head -c 500
|
|
110
|
+
node ./lemma-proxy.cjs call get_project_onboarding '{}' | head -c 800
|
|
111
|
+
|
|
112
|
+
# Proxy (solo si usas cache de tráfico LLM)
|
|
113
|
+
node ./lemma-proxy.cjs status
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Para **otros proyectos** (no este repo), instala Lemma una vez:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npx @nxuss/lemma init # genera .agents/skills/lemma/SKILL.md + AGENTS.md en ese proyecto
|
|
120
|
+
# o
|
|
121
|
+
npm i -D @nxuss/lemma && npx lemma init
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
> Generado por `lemma init` — @nxuss/lemma para Muse.
|
package/README.md
CHANGED
|
@@ -27,10 +27,12 @@ to an auditable ledger, never an estimate.
|
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
29
|
npm install -g @nxuss/lemma
|
|
30
|
-
lemma init # auto-configures MCP for your IDE
|
|
30
|
+
lemma init # auto-configures MCP for your IDE (Claude Code, Cursor, Codex, Windsurf, Kiro, OpenCode)
|
|
31
31
|
lemma start # gateway + dashboard on http://localhost:8081
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
> **Muse** — no setup needed. This repo is already Muse-compatible zero-config: clone and open with `muse` — the skill at `.agents/skills/lemma/SKILL.md` auto-loads and `lemma call` works via `bash`. See [MCP integration](#-mcp-integration).
|
|
35
|
+
|
|
34
36
|
---
|
|
35
37
|
|
|
36
38
|
## ✨ What Lemma actually does
|
|
@@ -154,9 +156,11 @@ Customize via `lemma.config.json`:
|
|
|
154
156
|
|
|
155
157
|
| Client | Setup |
|
|
156
158
|
| :--- | :--- |
|
|
159
|
+
| **Muse** (`muse` CLI · Muse Spark) | **Zero-config** — clone this repo and open with `muse`; skill at `.agents/skills/lemma/SKILL.md` auto-loads, `lemma call` wrapper via `bash` (no MCP native needed). No `lemma init` required. |
|
|
157
160
|
| OpenCode | `lemma init` — registers itself in `~/.opencode.json`, zero config. |
|
|
158
161
|
| Cursor / Windsurf / Kiro / Antigravity | Settings → MCP → add server, command `lemma mcp`. |
|
|
159
162
|
| Claude Desktop | Add to `mcpServers`: `{ "lemma": { "command": "npx", "args": ["-y", "@nxuss/lemma", "mcp"] } }` |
|
|
163
|
+
| Claude Code / Codex CLI | `lemma init` — auto-configures MCP + sets gateway (`ANTHROPIC_BASE_URL`/`OPENAI_BASE_URL` → `http://localhost:8081`). |
|
|
160
164
|
|
|
161
165
|
Once connected, Lemma auto-injects its TurboMode system prompt on handshake — states the goal
|
|
162
166
|
(reduce what enters context without ever costing a correct answer) and enforces it: a tool call
|
package/bin/init.js
CHANGED
|
@@ -427,9 +427,18 @@ function configureClaudeCodeGateway(anthropicApiKey) {
|
|
|
427
427
|
|
|
428
428
|
const LEMMA_RULES_CONTENT = `# Lemma MCP — Autonomous Behaviors
|
|
429
429
|
|
|
430
|
-
> ⚠️ MANDATORY RULES — Follow without exception
|
|
430
|
+
> ⚠️ MANDATORY RULES — Follow without exception **for MCP-native clients**.
|
|
431
431
|
|
|
432
|
-
The MCP server \`lemma\` is connected.
|
|
432
|
+
The MCP server \`lemma\` is connected. For clients with native MCP support
|
|
433
|
+
(Claude Code, Cursor, Codex, Windsurf, Kiro, OpenCode), NEVER use native tools
|
|
434
|
+
when a Lemma equivalent exists.
|
|
435
|
+
|
|
436
|
+
> **Muse Code:** you DO NOT have native \`mcp__lemma__*\` tools. For you,
|
|
437
|
+
> \`AGENTS.md\` is advisory. Follow \`.agents/skills/lemma/SKILL.md\` instead —
|
|
438
|
+
> it has priority and uses \`lemma call\` via bash. Do not enforce the table
|
|
439
|
+
> below as a hard block; use it only when \`lemma call\` actually helps.
|
|
440
|
+
|
|
441
|
+
## Mandatory Substitutions (MCP-native clients only)
|
|
433
442
|
|
|
434
443
|
## Mandatory Substitutions
|
|
435
444
|
|
|
@@ -452,6 +461,8 @@ The MCP server \`lemma\` is connected. NEVER use native tools when a Lemma equiv
|
|
|
452
461
|
2. Call \`search_memory\` with the task topic — recall past solutions
|
|
453
462
|
3. When done: call \`store_memory\` with the solution
|
|
454
463
|
|
|
464
|
+
> Muse: use \`node ./lemma-proxy.cjs call <tool>\` (see \`.agents/skills/lemma/SKILL.md\`).
|
|
465
|
+
|
|
455
466
|
## Bug Reporting
|
|
456
467
|
|
|
457
468
|
1. Call \`get_telepathic_hints\` with the relevant file
|
|
@@ -474,6 +485,17 @@ function updateAgentsMd() {
|
|
|
474
485
|
const existing = fs.readFileSync(agentsMdPath, 'utf8');
|
|
475
486
|
if (!existing.includes('@nxuss/lemma')) {
|
|
476
487
|
fs.appendFileSync(agentsMdPath, '\n---\n\n' + LEMMA_RULES_CONTENT, 'utf8');
|
|
488
|
+
} else if (!existing.includes('Muse Code:') || !existing.includes('MCP-native clients')) {
|
|
489
|
+
// Migrate old Lemma AGENTS.md (pre-Muse guard) to new version with Muse compatibility
|
|
490
|
+
// Replace the old block in-place to preserve any user content above it
|
|
491
|
+
const lemmaBlockRegex = /# Lemma MCP[\s\S]*?\*Auto-generated by `lemma init` — @nxuss\/lemma\*/;
|
|
492
|
+
if (lemmaBlockRegex.test(existing)) {
|
|
493
|
+
const updated = existing.replace(lemmaBlockRegex, LEMMA_RULES_CONTENT.trim());
|
|
494
|
+
fs.writeFileSync(agentsMdPath, updated, 'utf8');
|
|
495
|
+
} else {
|
|
496
|
+
// Fallback: append new block
|
|
497
|
+
fs.appendFileSync(agentsMdPath, '\n---\n\n' + LEMMA_RULES_CONTENT, 'utf8');
|
|
498
|
+
}
|
|
477
499
|
}
|
|
478
500
|
} else {
|
|
479
501
|
fs.writeFileSync(agentsMdPath, LEMMA_RULES_CONTENT, 'utf8');
|
|
@@ -546,7 +568,162 @@ function configureKiro() {
|
|
|
546
568
|
return true;
|
|
547
569
|
}
|
|
548
570
|
|
|
549
|
-
// OpenCode: register MCP server in opencode.json
|
|
571
|
+
// OpenCode: register MCP server in opencode.json + Muse skill
|
|
572
|
+
const MUSE_SKILL_CONTENT = `---
|
|
573
|
+
name: lemma
|
|
574
|
+
description: Lemma — cache semántico, firewall de privacidad y memoria cross-sesión para Muse. Usa lemma call <tool> vía bash para acceder a 70+ tools sin MCP nativo.
|
|
575
|
+
user-invocable: true
|
|
576
|
+
allowed-tools: bash
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
# Lemma para Muse
|
|
580
|
+
|
|
581
|
+
Eres Muse Code (muse-spark). Tienes **Lemma MCP** disponible — gateway de caché semántica, firewall de privacidad y memoria persistente. Muse no expone MCP nativamente, así que llamas a Lemma vía **CLI \`lemma call\`** (wrapper sobre \`mcp-server.js\` por stdio) + **proxy local**.
|
|
582
|
+
|
|
583
|
+
## Qué es Lemma
|
|
584
|
+
|
|
585
|
+
- **Proxy local** en \`http://localhost:8081\` — cachea respuestas LLM (BM25 + embeddings), ahorra tokens/dinero.
|
|
586
|
+
- **Brain persistente** en \`~/.lemma-cache/lemma_brain.json\` + memoria por proyecto.
|
|
587
|
+
- **MCP server** con 70+ tools — las mismas que usan Claude Code / Cursor / Codex, aquí vía \`lemma call\`.
|
|
588
|
+
|
|
589
|
+
> **Nota de compatibilidad:** Este skill NO afecta a Claude Code, Cursor, Codex ni otros CLIs con MCP nativo. Ellos siguen usando \`mcp__lemma__*\` directo. Las reglas globales de \`AGENTS.md\` (MANDATORY RULES) aplican a clientes con MCP nativo; si eres Muse, **este skill tiene prioridad** sobre \`AGENTS.md\` para decidir cuándo usar Lemma.
|
|
590
|
+
|
|
591
|
+
## Cuándo usar Lemma (Muse)
|
|
592
|
+
|
|
593
|
+
| Tarea | Qué hacer con Lemma |
|
|
594
|
+
|---|---|
|
|
595
|
+
| Pregunta que puede estar ya resuelta | \`search_memory\` antes de razonar |
|
|
596
|
+
| Pregunta atada a archivos concretos (mismo prompt + mismos archivos) | \`state_hash_cache\` con \`action=lookup\` antes, \`store\` después |
|
|
597
|
+
| Conocimiento que debe sobrevivir sesiones | \`search_memory\` / \`store_memory\` (con \`derivedFrom\`) |
|
|
598
|
+
| Leer/listar/buscar workspace | Usa tus tools nativos (\`read_file\`, \`bash ls/grep\`) — Lemma añade scrubbing si lo llamas, pero no es obligatorio |
|
|
599
|
+
| Tarea mecánica → decidir modelo barato | \`get_routing_advice\` |
|
|
600
|
+
| Aplicar patch | \`validate_patch_sandbox\` primero |
|
|
601
|
+
| "¿Cuánto ahorramos?" | \`token_receipt\` |
|
|
602
|
+
|
|
603
|
+
Si Lemma no encaja, usa tu tool nativo. No fuerces Lemma donde no aporta.
|
|
604
|
+
|
|
605
|
+
## Cómo llamar a Lemma desde Muse (preferido)
|
|
606
|
+
|
|
607
|
+
Usa el wrapper \`lemma call\` — evita craft de JSON-RPC manual y escapa args por ti. Está disponible como \`node ./lemma-proxy.cjs call\` o \`node ./bin/lemma-call.js\` o \`npx @nxuss/lemma call\` si instalaste global.
|
|
608
|
+
|
|
609
|
+
\`\`\`bash
|
|
610
|
+
# 1. Lookup en memoria antes de razonar (preferido — wrapper)
|
|
611
|
+
node ./lemma-proxy.cjs call search_memory --query "tu pregunta"
|
|
612
|
+
# o JSON explícito:
|
|
613
|
+
node ./lemma-proxy.cjs call search_memory '{"query":"tu pregunta"}'
|
|
614
|
+
|
|
615
|
+
# 2. Busca en workspace (con scrubbing)
|
|
616
|
+
node ./lemma-proxy.cjs call search_workspace --query "texto" --maxResults 10
|
|
617
|
+
|
|
618
|
+
# 3. Guarda solución verificada
|
|
619
|
+
node ./lemma-proxy.cjs call store_memory '{"content":"solución verificada","tags":["bugfix"]}'
|
|
620
|
+
|
|
621
|
+
# 4. Lista tools disponibles
|
|
622
|
+
node ./lemma-proxy.cjs call --list
|
|
623
|
+
|
|
624
|
+
# Pipe también funciona:
|
|
625
|
+
echo '{"query":"hello"}' | node ./bin/lemma-call.js search_memory
|
|
626
|
+
\`\`\`
|
|
627
|
+
|
|
628
|
+
**Alternativa raw (solo si el wrapper no está disponible):**
|
|
629
|
+
|
|
630
|
+
\`\`\`bash
|
|
631
|
+
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_memory","arguments":{"query":"tu pregunta"}}}' | node ./mcp-server.js
|
|
632
|
+
\`\`\`
|
|
633
|
+
|
|
634
|
+
Para tráfico LLM real (cache del proxy), asegúrate que el daemon corre:
|
|
635
|
+
|
|
636
|
+
\`\`\`bash
|
|
637
|
+
node ./lemma-proxy.cjs status
|
|
638
|
+
node ./lemma-proxy.cjs start
|
|
639
|
+
\`\`\`
|
|
640
|
+
|
|
641
|
+
## Cero config en este repo
|
|
642
|
+
|
|
643
|
+
Si clonaste \`lemma\` y lo abriste con Muse, **no necesitas correr ningún comando**. Este repo ya trae:
|
|
644
|
+
- \`.agents/skills/lemma/SKILL.md\` (este archivo) — Muse lo detecta al abrir el workspace
|
|
645
|
+
- \`AGENTS.md\` con guard clause para Muse
|
|
646
|
+
- \`bin/lemma-call.js\` + \`lemma-proxy.cjs call\` (wrapper sin JSON manual)
|
|
647
|
+
- \`mcp-server.js\` como fallback sin build
|
|
648
|
+
|
|
649
|
+
Muse te pedirá confiar el workspace la primera vez (prompt interactivo). Una vez que aceptas, el skill queda activo automáticamente — sin \`lemma init\`, sin \`npm run build\` manual. Para uso total (70+ tools) el wrapper resuelve \`dist/cjs/mcp/index.js\` → \`mcp-server.js\`; si \`dist\` no existe se auto-construye o usa el fallback con las tools core.
|
|
650
|
+
|
|
651
|
+
## Sandbox y permisos
|
|
652
|
+
|
|
653
|
+
Muse corre con sandbox por workspace. El proxy (\`localhost:8081\`) y el brain (\`~/.lemma-cache/\`) están **fuera** del workspace, así que:
|
|
654
|
+
|
|
655
|
+
- La primera vez Muse pregunta si confías el workspace — di que sí. Después queda recordado, no necesitas \`--trust-workspace\` manual cada vez (solo si lo abres con flag explícito).
|
|
656
|
+
- Si ves \`permission denied\`, acepta el trust prompt y re-intenta; no necesitas \`--disable-sandbox\`.
|
|
657
|
+
- El wrapper prioriza \`dist/cjs/mcp/index.js\` y cae a \`mcp-server.js\` si aún no hay build — cero pasos extra.
|
|
658
|
+
|
|
659
|
+
## Flujo obligatorio al iniciar sesión
|
|
660
|
+
|
|
661
|
+
1. Llama \`search_memory\` vía \`lemma call\` con el tema de la tarea.
|
|
662
|
+
2. Si hay hit, verifícalo contra el código actual antes de presentarlo.
|
|
663
|
+
3. Al terminar con solución verificada (tests pasaron), llama \`store_memory\` vía \`lemma call\`.
|
|
664
|
+
|
|
665
|
+
## Flujo para bugs
|
|
666
|
+
|
|
667
|
+
1. \`get_telepathic_hints\` vía \`lemma call\` si necesitas contexto de runtime.
|
|
668
|
+
2. \`search_memory\` con el mensaje de error.
|
|
669
|
+
|
|
670
|
+
## Regla dura
|
|
671
|
+
|
|
672
|
+
Si tu respuesta viene de un cache hit, dilo explícitamente: "esto viene de memoria cacheada". Nunca presentes un hit como razonamiento fresco. Y nunca guardes una solución no verificada.
|
|
673
|
+
|
|
674
|
+
## Verificación (opcional)
|
|
675
|
+
|
|
676
|
+
En este repo no necesitas instalar nada — ya está listo. Solo si quieres verificar:
|
|
677
|
+
|
|
678
|
+
\`\`\`bash
|
|
679
|
+
# Wrapper responde (sin JSON manual)
|
|
680
|
+
node ./lemma-proxy.cjs call --list | head -c 500
|
|
681
|
+
node ./lemma-proxy.cjs call get_project_onboarding '{}' | head -c 800
|
|
682
|
+
|
|
683
|
+
# Proxy (solo si usas cache de tráfico LLM)
|
|
684
|
+
node ./lemma-proxy.cjs status
|
|
685
|
+
\`\`\`
|
|
686
|
+
|
|
687
|
+
Para **otros proyectos** (no este repo), instala Lemma una vez:
|
|
688
|
+
|
|
689
|
+
\`\`\`bash
|
|
690
|
+
npx @nxuss/lemma init # genera .agents/skills/lemma/SKILL.md + AGENTS.md en ese proyecto
|
|
691
|
+
# o
|
|
692
|
+
npm i -D @nxuss/lemma && npx lemma init
|
|
693
|
+
\`\`\`
|
|
694
|
+
|
|
695
|
+
> Generado por \`lemma init\` — @nxuss/lemma para Muse.
|
|
696
|
+
`;
|
|
697
|
+
|
|
698
|
+
function configureMuse() {
|
|
699
|
+
const cwd = process.cwd();
|
|
700
|
+
const skillDir = path.join(cwd, '.agents', 'skills', 'lemma');
|
|
701
|
+
try {
|
|
702
|
+
ensureDir(skillDir);
|
|
703
|
+
const skillPath = path.join(skillDir, 'SKILL.md');
|
|
704
|
+
fs.writeFileSync(skillPath, MUSE_SKILL_CONTENT, 'utf8');
|
|
705
|
+
return true;
|
|
706
|
+
} catch { return false; }
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
function ensureKiroMigratesAgentsMd() {
|
|
710
|
+
// Kiro's configureKiro also touches AGENTS.md — ensure it migrates the same way
|
|
711
|
+
const cwd = process.cwd();
|
|
712
|
+
const agentsMdPath = path.join(cwd, 'AGENTS.md');
|
|
713
|
+
try {
|
|
714
|
+
if (fs.existsSync(agentsMdPath)) {
|
|
715
|
+
const existing = fs.readFileSync(agentsMdPath, 'utf8');
|
|
716
|
+
if (existing.includes('@nxuss/lemma') && (!existing.includes('Muse Code:') || !existing.includes('MCP-native clients'))) {
|
|
717
|
+
const lemmaBlockRegex = /# Lemma MCP[\s\S]*?\*Auto-generated by `lemma init` — @nxuss\/lemma\*/;
|
|
718
|
+
if (lemmaBlockRegex.test(existing)) {
|
|
719
|
+
const updated = existing.replace(lemmaBlockRegex, LEMMA_RULES_CONTENT.trim());
|
|
720
|
+
fs.writeFileSync(agentsMdPath, updated, 'utf8');
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
} catch {}
|
|
725
|
+
}
|
|
726
|
+
|
|
550
727
|
function configureOpenCode() {
|
|
551
728
|
const cwd = process.cwd();
|
|
552
729
|
const opencodePath = path.join(cwd, 'opencode.json');
|
|
@@ -771,6 +948,10 @@ async function main() {
|
|
|
771
948
|
configureOpenCode();
|
|
772
949
|
ok('OpenCode configured (opencode.json MCP + instructions)');
|
|
773
950
|
|
|
951
|
+
const museOk = configureMuse();
|
|
952
|
+
if (museOk) ok('Muse configured (.agents/skills/lemma/SKILL.md)');
|
|
953
|
+
else warn('Muse skill could not be configured');
|
|
954
|
+
|
|
774
955
|
const hasContinue = detectTool('Continue.dev', () => configureContinueDotDev());
|
|
775
956
|
if (hasContinue) ok('Continue.dev configured');
|
|
776
957
|
else skip('Continue.dev not detected');
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Lemma Call — one-shot MCP tool invocation for CLIs without native MCP (Muse, etc.)
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* node bin/lemma-call.js <tool_name> [json_args]
|
|
9
|
+
* node bin/lemma-call.js search_memory '{"query":"hello"}'
|
|
10
|
+
* echo '{"query":"hello"}' | node bin/lemma-call.js search_memory
|
|
11
|
+
* node bin/lemma-call.js --list # lists available tools
|
|
12
|
+
*
|
|
13
|
+
* Also via npx:
|
|
14
|
+
* npx @nxuss/lemma call search_memory '{"query":"hello"}'
|
|
15
|
+
*
|
|
16
|
+
* Resolves MCP server path the same way as bin/init.js and mcp-server.js:
|
|
17
|
+
* 1. dist/cjs/mcp/index.js (built)
|
|
18
|
+
* 2. mcp-server.js (fallback/legacy)
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const fs = require('fs');
|
|
22
|
+
const path = require('path');
|
|
23
|
+
const { spawn } = require('child_process');
|
|
24
|
+
|
|
25
|
+
function resolveMcpServer() {
|
|
26
|
+
const candidates = [
|
|
27
|
+
path.join(__dirname, '..', 'dist', 'cjs', 'mcp', 'index.js'),
|
|
28
|
+
path.join(__dirname, '..', 'mcp-server.js'),
|
|
29
|
+
path.join(__dirname, 'mcp-server.js'),
|
|
30
|
+
];
|
|
31
|
+
for (const p of candidates) {
|
|
32
|
+
if (fs.existsSync(p)) return p;
|
|
33
|
+
}
|
|
34
|
+
// Zero-config: try to auto-build dist if missing and tsc is available (fresh clone without build)
|
|
35
|
+
try {
|
|
36
|
+
const pkgPath = path.join(__dirname, '..', 'package.json');
|
|
37
|
+
if (fs.existsSync(pkgPath)) {
|
|
38
|
+
const { execSync } = require('child_process');
|
|
39
|
+
// Only attempt if typescript is installed (npm install was run)
|
|
40
|
+
execSync('npx tsc --project tsconfig.cjs.json --outDir ./dist/cjs 2>&1', { cwd: path.join(__dirname, '..'), stdio: 'ignore', timeout: 30000 });
|
|
41
|
+
const built = path.join(__dirname, '..', 'dist', 'cjs', 'mcp', 'index.js');
|
|
42
|
+
if (fs.existsSync(built)) return built;
|
|
43
|
+
}
|
|
44
|
+
} catch {}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function parseArgs(argv) {
|
|
49
|
+
const args = argv.slice(2);
|
|
50
|
+
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
51
|
+
return { help: true };
|
|
52
|
+
}
|
|
53
|
+
if (args.includes('--list') || args.includes('--tools')) {
|
|
54
|
+
return { list: true };
|
|
55
|
+
}
|
|
56
|
+
// tool name is first non-flag arg
|
|
57
|
+
let tool = null;
|
|
58
|
+
let jsonArg = null;
|
|
59
|
+
const flags = {};
|
|
60
|
+
for (let i = 0; i < args.length; i++) {
|
|
61
|
+
const a = args[i];
|
|
62
|
+
if (a.startsWith('--')) {
|
|
63
|
+
const key = a.slice(2);
|
|
64
|
+
const next = args[i + 1];
|
|
65
|
+
if (next && !next.startsWith('--')) {
|
|
66
|
+
flags[key] = next;
|
|
67
|
+
i++;
|
|
68
|
+
} else {
|
|
69
|
+
flags[key] = true;
|
|
70
|
+
}
|
|
71
|
+
} else if (!tool) {
|
|
72
|
+
tool = a;
|
|
73
|
+
} else if (!jsonArg) {
|
|
74
|
+
jsonArg = a;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Flags like --query "hello" should become jsonArg object
|
|
78
|
+
let jsonObj = null;
|
|
79
|
+
if (jsonArg) {
|
|
80
|
+
try { jsonObj = JSON.parse(jsonArg); } catch (e) {
|
|
81
|
+
console.error(`[lemma-call] Invalid JSON args: ${e.message}`);
|
|
82
|
+
process.exit(2);
|
|
83
|
+
}
|
|
84
|
+
} else if (Object.keys(flags).length > 0) {
|
|
85
|
+
jsonObj = flags;
|
|
86
|
+
// coerce common string flags
|
|
87
|
+
for (const k of Object.keys(jsonObj)) {
|
|
88
|
+
if (jsonObj[k] === 'true') jsonObj[k] = true;
|
|
89
|
+
if (jsonObj[k] === 'false') jsonObj[k] = false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return { tool, jsonObj, flags };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function readStdin() {
|
|
96
|
+
return new Promise(resolve => {
|
|
97
|
+
if (process.stdin.isTTY) return resolve(null);
|
|
98
|
+
let data = '';
|
|
99
|
+
process.stdin.setEncoding('utf8');
|
|
100
|
+
process.stdin.on('data', chunk => data += chunk);
|
|
101
|
+
process.stdin.on('end', () => {
|
|
102
|
+
const t = data.trim();
|
|
103
|
+
if (!t) return resolve(null);
|
|
104
|
+
try { resolve(JSON.parse(t)); } catch { resolve(t); }
|
|
105
|
+
});
|
|
106
|
+
// If stdin never ends (no pipe), timeout
|
|
107
|
+
setTimeout(() => resolve(null), 100);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async function main() {
|
|
112
|
+
const parsed = parseArgs(process.argv);
|
|
113
|
+
if (parsed.help) {
|
|
114
|
+
console.log(`lemma-call — one-shot Lemma MCP tool invocation
|
|
115
|
+
|
|
116
|
+
Usage:
|
|
117
|
+
node bin/lemma-call.js <tool> [json]
|
|
118
|
+
node bin/lemma-call.js search_memory '{"query":"hello"}'
|
|
119
|
+
node bin/lemma-call.js search_memory --query "hello"
|
|
120
|
+
echo '{"query":"hello"}' | node bin/lemma-call.js search_memory
|
|
121
|
+
node bin/lemma-call.js --list
|
|
122
|
+
npx @nxuss/lemma call <tool> [json] (via lemma-proxy.cjs)
|
|
123
|
+
`);
|
|
124
|
+
process.exit(0);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const mcpPath = resolveMcpServer();
|
|
128
|
+
if (!mcpPath) {
|
|
129
|
+
console.error('[lemma-call] MCP server not found. Run `npm run build` first.');
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// --list mode: proper MCP handshake (initialize → tools/list)
|
|
134
|
+
if (parsed.list) {
|
|
135
|
+
const initReq = JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize', params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'lemma-call', version: '1.0.0' } } }) + '\n';
|
|
136
|
+
const initialized = JSON.stringify({ jsonrpc: '2.0', method: 'notifications/initialized' }) + '\n';
|
|
137
|
+
const listReq = JSON.stringify({ jsonrpc: '2.0', id: 2, method: 'tools/list' }) + '\n';
|
|
138
|
+
const child = spawn(process.execPath, [mcpPath], { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
139
|
+
let out = '';
|
|
140
|
+
child.stdout.on('data', d => out += d.toString());
|
|
141
|
+
child.stderr.on('data', () => {}); // ignore watcher noise
|
|
142
|
+
child.stdin.write(initReq);
|
|
143
|
+
child.stdin.write(initialized);
|
|
144
|
+
child.stdin.write(listReq);
|
|
145
|
+
child.stdin.end();
|
|
146
|
+
// Give server time to respond before close (MCP is stream-oriented)
|
|
147
|
+
await new Promise(r => setTimeout(r, 800));
|
|
148
|
+
try { child.kill(); } catch {}
|
|
149
|
+
await new Promise(r => child.on('close', r).on('error', r));
|
|
150
|
+
// Parse all JSON-RPC response lines, find the tools/list result (id:2)
|
|
151
|
+
const lines = out.trim().split('\n').filter(Boolean);
|
|
152
|
+
let tools = null;
|
|
153
|
+
for (const line of lines) {
|
|
154
|
+
try {
|
|
155
|
+
const j = JSON.parse(line);
|
|
156
|
+
if (j.id === 2 && j.result && Array.isArray(j.result.tools)) { tools = j.result.tools; break; }
|
|
157
|
+
if (j.result && Array.isArray(j.result.tools) && !tools) tools = j.result.tools;
|
|
158
|
+
} catch {}
|
|
159
|
+
}
|
|
160
|
+
if (tools) {
|
|
161
|
+
console.log(JSON.stringify(tools.map(t => t.name), null, 2));
|
|
162
|
+
} else {
|
|
163
|
+
// Fallback: try last line approach
|
|
164
|
+
try {
|
|
165
|
+
const res = JSON.parse(lines[lines.length - 1] || '{}');
|
|
166
|
+
const t = res.result?.tools || [];
|
|
167
|
+
if (t.length) console.log(JSON.stringify(t.map(x => x.name), null, 2));
|
|
168
|
+
else console.log(out.trim().split('\n').pop() || '[]');
|
|
169
|
+
} catch {
|
|
170
|
+
console.log(out.trim() || '[]');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
process.exit(0);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (!parsed.tool) {
|
|
177
|
+
console.error('[lemma-call] Missing tool name. Try --help');
|
|
178
|
+
process.exit(2);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
let argsObj = parsed.jsonObj;
|
|
182
|
+
// If no args from CLI, try stdin
|
|
183
|
+
if (!argsObj) {
|
|
184
|
+
const stdinData = await readStdin();
|
|
185
|
+
if (stdinData && typeof stdinData === 'object') argsObj = stdinData;
|
|
186
|
+
else if (typeof stdinData === 'string' && stdinData) {
|
|
187
|
+
try { argsObj = JSON.parse(stdinData); } catch { argsObj = { query: stdinData }; }
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (!argsObj) argsObj = {};
|
|
191
|
+
|
|
192
|
+
// MCP handshake: initialize → initialized → tools/call (required by SDK)
|
|
193
|
+
const initReq = JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize', params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'lemma-call', version: '1.0.0' } } }) + '\n';
|
|
194
|
+
const initialized = JSON.stringify({ jsonrpc: '2.0', method: 'notifications/initialized' }) + '\n';
|
|
195
|
+
const request = JSON.stringify({
|
|
196
|
+
jsonrpc: '2.0',
|
|
197
|
+
id: 2,
|
|
198
|
+
method: 'tools/call',
|
|
199
|
+
params: { name: parsed.tool, arguments: argsObj }
|
|
200
|
+
}) + '\n';
|
|
201
|
+
|
|
202
|
+
const child = spawn(process.execPath, [mcpPath], { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
203
|
+
let stdout = '';
|
|
204
|
+
let stderr = '';
|
|
205
|
+
child.stdout.on('data', d => stdout += d.toString());
|
|
206
|
+
child.stderr.on('data', d => stderr += d.toString());
|
|
207
|
+
child.stdin.write(initReq);
|
|
208
|
+
child.stdin.write(initialized);
|
|
209
|
+
child.stdin.write(request);
|
|
210
|
+
// Keep stdin open briefly for server to process; MCP SDK buffers responses
|
|
211
|
+
await new Promise(r => setTimeout(r, 500));
|
|
212
|
+
child.stdin.end();
|
|
213
|
+
// Wait for response with timeout
|
|
214
|
+
const exitCode = await Promise.race([
|
|
215
|
+
new Promise(resolve => child.on('close', resolve)),
|
|
216
|
+
new Promise(resolve => setTimeout(() => { try { child.kill(); } catch {}; resolve(0); }, 5000))
|
|
217
|
+
]);
|
|
218
|
+
|
|
219
|
+
// MCP server returns JSON-RPC with result.content[].text — find id:2 response
|
|
220
|
+
const lines = stdout.trim().split('\n').filter(Boolean);
|
|
221
|
+
let parsedRes = null;
|
|
222
|
+
for (const line of lines) {
|
|
223
|
+
try {
|
|
224
|
+
const j = JSON.parse(line);
|
|
225
|
+
if (j.id === 2) { parsedRes = j; break; }
|
|
226
|
+
} catch {}
|
|
227
|
+
}
|
|
228
|
+
if (!parsedRes) {
|
|
229
|
+
try { parsedRes = JSON.parse(lines[lines.length - 1] || ''); } catch {}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (parsedRes && parsedRes.result) {
|
|
233
|
+
// Pretty-print the tool result for Muse to read easily
|
|
234
|
+
const content = parsedRes.result.content;
|
|
235
|
+
if (Array.isArray(content)) {
|
|
236
|
+
for (const c of content) {
|
|
237
|
+
if (c.text) {
|
|
238
|
+
// Try to pretty-print if text is JSON
|
|
239
|
+
try {
|
|
240
|
+
const j = JSON.parse(c.text);
|
|
241
|
+
console.log(JSON.stringify(j, null, 2));
|
|
242
|
+
} catch {
|
|
243
|
+
console.log(c.text);
|
|
244
|
+
}
|
|
245
|
+
} else {
|
|
246
|
+
console.log(JSON.stringify(c, null, 2));
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
} else {
|
|
250
|
+
console.log(JSON.stringify(parsedRes.result, null, 2));
|
|
251
|
+
}
|
|
252
|
+
// Propagate isError as exit code
|
|
253
|
+
if (parsedRes.result.isError) process.exit(1);
|
|
254
|
+
process.exit(0);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (parsedRes && parsedRes.error) {
|
|
258
|
+
console.error(`[lemma-call] MCP error: ${parsedRes.error.message || JSON.stringify(parsedRes.error)}`);
|
|
259
|
+
if (stderr.trim()) console.error(stderr.trim());
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// Fallback: dump raw output
|
|
264
|
+
if (stdout.trim()) console.log(stdout.trim());
|
|
265
|
+
if (stderr.trim()) console.error(stderr.trim());
|
|
266
|
+
process.exit(exitCode || 0);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
main().catch(e => { console.error('[lemma-call]', e.message); process.exit(1); });
|
package/dist/cjs/mcp/index.js
CHANGED
|
@@ -129,11 +129,12 @@ class LemmaMcpServer {
|
|
|
129
129
|
if (!fs_1.default.existsSync(liveContextPath)) {
|
|
130
130
|
fs_1.default.writeFileSync(liveContextPath, "# No Live Context\nNo recent crashes or state changes recorded by Lemma.", "utf8");
|
|
131
131
|
}
|
|
132
|
-
fs_1.default.watch(liveContextPath, (eventType) => {
|
|
132
|
+
const watcher = fs_1.default.watch(liveContextPath, (eventType) => {
|
|
133
133
|
if (eventType === "change") {
|
|
134
134
|
(0, resources_1.notifyResourceUpdated)(this.server, "lemma://runtime/context");
|
|
135
135
|
}
|
|
136
136
|
});
|
|
137
|
+
watcher.on('error', () => (0, utils_1.logWarn)("live-context", "Live context watcher error — EMFILE or permission, ignoring"));
|
|
137
138
|
}
|
|
138
139
|
catch (err) {
|
|
139
140
|
(0, utils_1.logWarn)("live-context", "Could not set up live context watcher");
|
|
@@ -150,11 +151,12 @@ class LemmaMcpServer {
|
|
|
150
151
|
const statsDir = path_1.default.dirname(statsPath);
|
|
151
152
|
if (!fs_1.default.existsSync(statsDir))
|
|
152
153
|
return;
|
|
153
|
-
fs_1.default.watch(statsDir, (eventType, filename) => {
|
|
154
|
+
const watcher = fs_1.default.watch(statsDir, (eventType, filename) => {
|
|
154
155
|
if (filename === "stats.json") {
|
|
155
156
|
(0, resources_1.notifyResourceUpdated)(this.server, "lemma://stats/usage");
|
|
156
157
|
}
|
|
157
158
|
});
|
|
159
|
+
watcher.on('error', () => (0, utils_1.logWarn)("stats-watcher", "Stats watcher error — EMFILE or permission, ignoring"));
|
|
158
160
|
}
|
|
159
161
|
catch (err) {
|
|
160
162
|
(0, utils_1.logWarn)("stats-watcher", "Could not set up stats watcher");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/mcp/index.js
CHANGED
|
@@ -124,11 +124,12 @@ class LemmaMcpServer {
|
|
|
124
124
|
if (!fs.existsSync(liveContextPath)) {
|
|
125
125
|
fs.writeFileSync(liveContextPath, "# No Live Context\nNo recent crashes or state changes recorded by Lemma.", "utf8");
|
|
126
126
|
}
|
|
127
|
-
fs.watch(liveContextPath, (eventType) => {
|
|
127
|
+
const watcher = fs.watch(liveContextPath, (eventType) => {
|
|
128
128
|
if (eventType === "change") {
|
|
129
129
|
notifyResourceUpdated(this.server, "lemma://runtime/context");
|
|
130
130
|
}
|
|
131
131
|
});
|
|
132
|
+
watcher.on('error', () => logWarn("live-context", "Live context watcher error — EMFILE or permission, ignoring"));
|
|
132
133
|
}
|
|
133
134
|
catch (err) {
|
|
134
135
|
logWarn("live-context", "Could not set up live context watcher");
|
|
@@ -145,11 +146,12 @@ class LemmaMcpServer {
|
|
|
145
146
|
const statsDir = path.dirname(statsPath);
|
|
146
147
|
if (!fs.existsSync(statsDir))
|
|
147
148
|
return;
|
|
148
|
-
fs.watch(statsDir, (eventType, filename) => {
|
|
149
|
+
const watcher = fs.watch(statsDir, (eventType, filename) => {
|
|
149
150
|
if (filename === "stats.json") {
|
|
150
151
|
notifyResourceUpdated(this.server, "lemma://stats/usage");
|
|
151
152
|
}
|
|
152
153
|
});
|
|
154
|
+
watcher.on('error', () => logWarn("stats-watcher", "Stats watcher error — EMFILE or permission, ignoring"));
|
|
153
155
|
}
|
|
154
156
|
catch (err) {
|
|
155
157
|
logWarn("stats-watcher", "Could not set up stats watcher");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAiB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAY,OAAO,EAAE,MAAM,SAAS,CAAC;AAElF,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,SAAS,WAAW;IAClB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACxF,WAAW,GAAG,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC;QACtC,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,IAAI;YAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG;YAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,OAAO;YAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,cAAc,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,eAAe,EAAE,UAAU;YAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5E,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,IAAI,CAAC;QACH,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,IAAI,CAAC;QACH,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,cAAc;IAGlB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,cAAc;SACxB,EACD;YACE,YAAY,EAAE;gBACZ,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;gBAC9B,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,EAAE;gBACf,4EAA4E;gBAC5E,sEAAsE;gBACtE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;aAC7C;YACD,YAAY,EAAE,sBAAsB;SACrC,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,aAAa;QACnB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEnD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,oFAAoF;QACpF,gFAAgF;QAChF,iFAAiF;QACjF,yEAAyE;QACzE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACK,qBAAqB;QAC3B,IAAI,CAAC;YACH,UAAU,CAAC;gBACT,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,sBAAsB,CAAC,MAAM,GAAG,kBAAkB,EAAE;aAC5D,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;IAED,qEAAqE;IAE7D,uBAAuB;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;YACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpC,EAAE,CAAC,aAAa,CACd,eAAe,EACf,0EAA0E,EAC1E,MAAM,CACP,CAAC;YACJ,CAAC;YAED,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"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"}
|
package/lemma-proxy.cjs
CHANGED
|
@@ -55,6 +55,18 @@ if (cmd === 'init') {
|
|
|
55
55
|
process.exit(1);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
+
} else if (cmd === 'call') {
|
|
59
|
+
// One-shot MCP tool invocation: `lemma call <tool> [json]` or `npx @nxuss/lemma call <tool> [json]`
|
|
60
|
+
// Avoids manual JSON-RPC echo piping for Muse and other non-MCP CLIs.
|
|
61
|
+
const callPath = path.join(__dirname, 'bin', 'lemma-call.js');
|
|
62
|
+
if (fs.existsSync(callPath)) {
|
|
63
|
+
// Forward remaining args to lemma-call.js; keep process.argv[2]='call' semantics by shifting
|
|
64
|
+
process.argv.splice(2, 1); // remove 'call'
|
|
65
|
+
require(callPath);
|
|
66
|
+
} else {
|
|
67
|
+
console.error('lemma-call not found. Run npm run build first.');
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
58
70
|
} else if (cmd === 'proxy') {
|
|
59
71
|
const proxyPath = path.join(__dirname, 'cache-proxy.js');
|
|
60
72
|
if (fs.existsSync(proxyPath)) require(proxyPath);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nxuss/lemma",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"description": "Intelligent AI Gateway for IDEs & Agents — Semantic cache, Privacy Firewall, Infrastructure Command Center, and Autonomous Cost-Optimization.",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -86,8 +86,10 @@
|
|
|
86
86
|
"cache-proxy.js",
|
|
87
87
|
"bin/init.js",
|
|
88
88
|
"bin/cli.js",
|
|
89
|
+
"bin/lemma-call.js",
|
|
89
90
|
"bin/checkpoint.js",
|
|
90
91
|
"bin/brain-ingest.js",
|
|
92
|
+
".agents/skills/lemma/SKILL.md",
|
|
91
93
|
"dashboard/dist/**/*",
|
|
92
94
|
"sdks/crewai/dist/**/*",
|
|
93
95
|
"!dist/examples/**",
|
|
@@ -105,6 +107,7 @@
|
|
|
105
107
|
"build:cjs": "tsc --project tsconfig.cjs.json",
|
|
106
108
|
"build:sdks": "npm run sdk:build",
|
|
107
109
|
"postbuild": "node scripts/post-build.js && node scripts/fix-esm-extensions.js",
|
|
110
|
+
"prepare": "npm run build:cjs 2>&1 | tail -n 5 || true",
|
|
108
111
|
"dev": "npx tsx start-dev.ts",
|
|
109
112
|
"start": "node dist/cjs/index.js",
|
|
110
113
|
"test": "jest",
|
|
@@ -157,7 +160,13 @@
|
|
|
157
160
|
"llm-gateway",
|
|
158
161
|
"openai-proxy",
|
|
159
162
|
"anthropic-proxy",
|
|
160
|
-
"vector-database"
|
|
163
|
+
"vector-database",
|
|
164
|
+
"muse",
|
|
165
|
+
"muse-code",
|
|
166
|
+
"muse-spark",
|
|
167
|
+
"claude-code",
|
|
168
|
+
"cursor",
|
|
169
|
+
"codex"
|
|
161
170
|
],
|
|
162
171
|
"author": "Nxus Studio",
|
|
163
172
|
"license": "MIT",
|