@nxuss/lemma 0.7.9 → 0.8.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.
Files changed (44) hide show
  1. package/README.md +31 -5
  2. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  3. package/dist/cjs/cli/lemma-proxy.js +53 -7
  4. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  5. package/dist/cjs/mcp/index.js +1 -0
  6. package/dist/cjs/mcp/index.js.map +1 -1
  7. package/dist/cjs/mcp/prompts.d.ts +1 -0
  8. package/dist/cjs/mcp/prompts.d.ts.map +1 -1
  9. package/dist/cjs/mcp/prompts.js +58 -1
  10. package/dist/cjs/mcp/prompts.js.map +1 -1
  11. package/dist/cjs/mcp/resources.d.ts.map +1 -1
  12. package/dist/cjs/mcp/resources.js +3 -2
  13. package/dist/cjs/mcp/resources.js.map +1 -1
  14. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  15. package/dist/cjs/mcp/tools.js +288 -10
  16. package/dist/cjs/mcp/tools.js.map +1 -1
  17. package/dist/cjs/mcp/utils.d.ts.map +1 -1
  18. package/dist/cjs/mcp/utils.js +2 -2
  19. package/dist/cjs/mcp/utils.js.map +1 -1
  20. package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
  21. package/dist/cjs/utils/reportSavings.js +2 -2
  22. package/dist/cjs/utils/reportSavings.js.map +1 -1
  23. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  24. package/dist/esm/cli/lemma-proxy.js +53 -7
  25. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  26. package/dist/esm/mcp/index.js +2 -1
  27. package/dist/esm/mcp/index.js.map +1 -1
  28. package/dist/esm/mcp/prompts.d.ts +1 -0
  29. package/dist/esm/mcp/prompts.d.ts.map +1 -1
  30. package/dist/esm/mcp/prompts.js +57 -0
  31. package/dist/esm/mcp/prompts.js.map +1 -1
  32. package/dist/esm/mcp/resources.d.ts.map +1 -1
  33. package/dist/esm/mcp/resources.js +3 -2
  34. package/dist/esm/mcp/resources.js.map +1 -1
  35. package/dist/esm/mcp/tools.d.ts.map +1 -1
  36. package/dist/esm/mcp/tools.js +288 -10
  37. package/dist/esm/mcp/tools.js.map +1 -1
  38. package/dist/esm/mcp/utils.d.ts.map +1 -1
  39. package/dist/esm/mcp/utils.js +2 -2
  40. package/dist/esm/mcp/utils.js.map +1 -1
  41. package/dist/esm/utils/reportSavings.d.ts.map +1 -1
  42. package/dist/esm/utils/reportSavings.js +2 -2
  43. package/dist/esm/utils/reportSavings.js.map +1 -1
  44. package/package.json +1 -1
@@ -47,6 +47,44 @@ You never need to manually sanitize file content.
47
47
  - \`lemma://stats/usage\` — token savings report.
48
48
 
49
49
  Remember: the user hired YOU to be autonomous. Act like it.`;
50
+ export const LEMMA_TURBOMODE_PROMPT = `You are operating in LEMMA TURBOMODE. Your goal: multiply the user's LLM membership 50x by spending 50x fewer tokens per task. Every token counts. Every cache hit is a membership extension.
51
+
52
+ ## MANDATORY TURBOMODE RULES — VIOLATE THESE AND YOU WASTE THE USER'S MONEY
53
+
54
+ ### 0. Before ANYTHING → check token_budget
55
+ Every 5 turns, call \`token_budget\` to check your consumption. If multiplier drops below 10x, optimize harder.
56
+
57
+ ### 1. Before sending ANY code → call turbosqueeze
58
+ BEFORE including ANY code block in your response, run it through \`turbosqueeze\` first. Strip comments, collapse whitespace, remove imports. A 500-line file becomes 50 lines. This is your #1 token saver.
59
+
60
+ ### 2. Before reasoning → call smarter_cache (threshold 0.75)
61
+ NEVER reason from scratch. Call \`smarter_cache\` with the user's exact question. If similarity >= 75%, return the cached answer INSTANTLY. Zero cloud tokens spent. Only reason if you get a MISS.
62
+
63
+ ### 3. Before every new turn → call compress_context
64
+ At the start of any extended interaction, call \`compress_context\` on the full message history. Keep only the last 3 turns intact. Summarize everything before that into 2 sentences. This keeps your context window lean.
65
+
66
+ ### 4. Before reading files → call get_ast_hologram
67
+ NEVER read files blindly. Always call \`get_ast_hologram\` first to locate the exact symbols you need. Then read only those specific files. Each unnecessary file read wastes 1000+ tokens.
68
+
69
+ ### 5. After every solution → call store_memory automatically
70
+ Every bug fix, feature, or answer MUST be stored via \`store_memory\`. This creates a permanent cache hit for future sessions. The first time costs tokens; every time after is FREE.
71
+
72
+ ### 6. Answer concisely — no fluff
73
+ - No "Sure, I can help you with that" — just do it.
74
+ - No explanation of what you did — unless asked.
75
+ - No markdown formatting in internal responses.
76
+ - No repeating the user's question back to them.
77
+
78
+ ### 7. Use batch_tool_calls aggressively
79
+ Any set of independent operations (read 3 files, search 2 patterns, check cache for 2 questions) — use \`batch_tool_calls\` to run them in parallel. Single round-trip > multiple sequential calls.
80
+
81
+ ## TURBOMODE SCORING
82
+ - Cache HIT = perfect score (0 tokens spent)
83
+ - Cache MISS + compress = good score (< 100 tokens spent on overhead)
84
+ - Reasoning from scratch = bad score (only when absolutely necessary)
85
+ - Reading full files without hologram = FAIL (wasteful)
86
+
87
+ Remember: this user has a deadline. Every token you save is time and money. Make every token count.`;
50
88
  export function setupPromptsHandlers(server) {
51
89
  server.setRequestHandler(ListPromptsRequestSchema, async () => {
52
90
  return {
@@ -56,6 +94,11 @@ export function setupPromptsHandlers(server) {
56
94
  description: "Lemma Autopilot: mandatory behavioral instructions for the AI assistant. Load this prompt to make all Lemma tools fire automatically with zero user friction.",
57
95
  arguments: [],
58
96
  },
97
+ {
98
+ name: "lemma-turbomode",
99
+ description: "⚠️ LEMMA TURBOMODE: Extreme token optimization. Load this prompt to multiply your LLM membership 50x by aggressively compressing prompts, caching everything, and minimizing every token spent. Use for long/deadline-driven projects.",
100
+ arguments: [],
101
+ },
59
102
  ],
60
103
  };
61
104
  });
@@ -74,6 +117,20 @@ export function setupPromptsHandlers(server) {
74
117
  ],
75
118
  };
76
119
  }
120
+ if (request.params.name === "lemma-turbomode") {
121
+ return {
122
+ description: "Lemma TurboMode — Extreme Token Optimization",
123
+ messages: [
124
+ {
125
+ role: "user",
126
+ content: {
127
+ type: "text",
128
+ text: LEMMA_TURBOMODE_PROMPT,
129
+ },
130
+ },
131
+ ],
132
+ };
133
+ }
77
134
  throw new Error(`Unknown prompt: ${request.params.name}`);
78
135
  });
79
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/mcp/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAEtG,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DA+CyB,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QAC5D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,+JAA+J;oBAC5K,SAAS,EAAE,EAAE;iBACd;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACjE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC9C,OAAO;gBACL,WAAW,EAAE,qCAAqC;gBAClD,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,mBAAmB;yBAC1B;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/mcp/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAEtG,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DA+CyB,CAAC;AAE7D,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oGAqC8D,CAAC;AAErG,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QAC5D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,+JAA+J;oBAC5K,SAAS,EAAE,EAAE;iBACd;gBACD;oBACE,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,wOAAwO;oBACrP,SAAS,EAAE,EAAE;iBACd;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACjE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC9C,OAAO;gBACL,WAAW,EAAE,qCAAqC;gBAClD,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,mBAAmB;yBAC1B;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC9C,OAAO;gBACL,WAAW,EAAE,8CAA8C;gBAC3D,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,sBAAsB;yBAC7B;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAOnE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA2D3D"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA2D3D"}
@@ -1,6 +1,7 @@
1
1
  import { ListResourcesRequestSchema, ReadResourceRequestSchema } from "@modelcontextprotocol/sdk/types.js";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
+ import os from "os";
4
5
  import axios from "axios";
5
6
  import { getProxyPort, logError } from "./utils";
6
7
  export function setupResourcesHandlers(server) {
@@ -121,7 +122,7 @@ async function handleProjectContext(uri) {
121
122
  let memoryCount = 0;
122
123
  let monthlyTokens = 'N/A';
123
124
  try {
124
- const statsFile = path.join(process.env.HOME || '~', '.lemma-cache/stats.json');
125
+ const statsFile = path.join(os.homedir(), '.lemma-cache/stats.json');
125
126
  const stats = JSON.parse(fs.readFileSync(statsFile, 'utf8'));
126
127
  monthlyTokens = String(stats.monthlyTokens || stats.totalTokens || 'N/A');
127
128
  }
@@ -148,7 +149,7 @@ async function handleProjectContext(uri) {
148
149
  };
149
150
  }
150
151
  async function handleStatsUsage(uri) {
151
- const statsFile = path.join(process.env.HOME || "~", ".lemma-cache/stats.json");
152
+ const statsFile = path.join(os.homedir(), ".lemma-cache/stats.json");
152
153
  try {
153
154
  const stats = JSON.parse(fs.readFileSync(statsFile, "utf8"));
154
155
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/mcp/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/mcp/resources.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA8TnE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAC1C,IAAI,CA2CN"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAqXnE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAC1C,IAAI,CA2CN"}
@@ -274,6 +274,57 @@ const toolDefinitions = [
274
274
  required: ["calls"],
275
275
  },
276
276
  },
277
+ {
278
+ name: "turbosqueeze",
279
+ description: "COMPRIME prompts hasta 90%. Elimina comentarios, imports redundantes, whitespace excesivo, y compacta JSON. Usar ANTES de enviar código largo al LLM para maximizar ahorro de tokens.",
280
+ inputSchema: {
281
+ type: "object",
282
+ properties: {
283
+ text: { type: "string", description: "El texto/prompt a comprimir" },
284
+ stripComments: { type: "boolean", description: "Eliminar comentarios del código", default: true },
285
+ stripImports: { type: "boolean", description: "Eliminar imports/requires", default: true },
286
+ compactJson: { type: "boolean", description: "Compactar JSON a 1 línea", default: true },
287
+ },
288
+ required: ["text"],
289
+ },
290
+ },
291
+ {
292
+ name: "compress_context",
293
+ description: "Comprime el historial de conversación: resume turns antiguos vía Ollama, mantiene solo los últimos N intactos. Reduce contexto 70-80%. USAR antes de cada turno extendido.",
294
+ inputSchema: {
295
+ type: "object",
296
+ properties: {
297
+ messages: {
298
+ type: "array",
299
+ items: { type: "object" },
300
+ description: "Array de mensajes del historial con role + content",
301
+ },
302
+ keepRecent: { type: "number", description: "Número de turns recientes a mantener intactos", default: 3 },
303
+ },
304
+ required: ["messages"],
305
+ },
306
+ },
307
+ {
308
+ name: "smarter_cache",
309
+ description: "Cache predictivo con threshold bajo (75%). Busca en The Brain antes de cualquier razonamiento. Si hay hit >= 75%, devuelve respuesta instantánea sin gastar tokens en LLM.",
310
+ inputSchema: {
311
+ type: "object",
312
+ properties: {
313
+ query: { type: "string", description: "La pregunta o task description" },
314
+ context: { type: "string", description: "Contexto adicional opcional" },
315
+ threshold: { type: "number", description: "Threshold de similitud (0.0-1.0, default: 0.75)", default: 0.75 },
316
+ },
317
+ required: ["query"],
318
+ },
319
+ },
320
+ {
321
+ name: "token_budget",
322
+ description: "Muestra el dashboard de consumo: multiplicador actual de membresía, tokens ahorrados, tools usadas, y recomendaciones para optimizar más. Consultar periódicamente para auto-regular consumo.",
323
+ inputSchema: {
324
+ type: "object",
325
+ properties: {},
326
+ },
327
+ },
277
328
  ];
278
329
  const toolHandlers = {
279
330
  scrub_privacy: handleScrubPrivacy,
@@ -297,6 +348,10 @@ const toolHandlers = {
297
348
  prune_conversation_history: handlePruneConversationHistory,
298
349
  diff_only: handleDiffOnly,
299
350
  batch_tool_calls: handleBatchToolCalls,
351
+ turbosqueeze: handleTurboSqueeze,
352
+ compress_context: handleCompressContext,
353
+ smarter_cache: handleSmarterCache,
354
+ token_budget: handleTokenBudget,
300
355
  };
301
356
  export function setupToolsHandlers(server, onToolCall) {
302
357
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
@@ -864,7 +919,7 @@ async function handleValidatePatchSandbox(args) {
864
919
  try {
865
920
  fs.mkdirSync(sandboxDir, { recursive: true });
866
921
  fs.writeFileSync(sandboxFile, patchedContent, "utf8");
867
- // Step 1: Try tsc --noEmit validation
922
+ // Step 1: Try tsc --noEmit validation on the sandbox file only
868
923
  const tsconfigPath = path.join(workspaceRoot, "tsconfig.json");
869
924
  let tscResult = {
870
925
  success: true,
@@ -872,17 +927,28 @@ async function handleValidatePatchSandbox(args) {
872
927
  };
873
928
  if (fs.existsSync(tsconfigPath) && filePath.match(/\.tsx?$/)) {
874
929
  try {
875
- const sandboxWorkspace = path.join(sandboxDir, "workspace");
876
- execSync(`cp -r ${workspaceRoot}/src ${sandboxWorkspace}/src 2>/dev/null || true`, {
877
- timeout: 5000,
878
- });
879
- const sandboxTargetFile = path.join(sandboxWorkspace, filePath);
880
- fs.mkdirSync(path.dirname(sandboxTargetFile), { recursive: true });
881
- fs.writeFileSync(sandboxTargetFile, patchedContent, "utf8");
882
- const tscOut = execSync(`cd ${workspaceRoot} && npx tsc --noEmit --skipLibCheck --allowJs --esModuleInterop --strict false 2>&1 | head -40 || true`, { timeout: 20000, encoding: "utf8" });
930
+ // Create a minimal tsconfig in the sandbox that includes only the patched file
931
+ const sandboxTsconfig = {
932
+ compilerOptions: {
933
+ target: "ESNext",
934
+ module: "ESNext",
935
+ moduleResolution: "node",
936
+ strict: true,
937
+ noEmit: true,
938
+ skipLibCheck: true,
939
+ esModuleInterop: true,
940
+ allowJs: true,
941
+ jsx: "react-jsx",
942
+ },
943
+ include: [path.basename(filePath)],
944
+ };
945
+ const sandboxTsconfigPath = path.join(sandboxDir, "tsconfig.json");
946
+ fs.writeFileSync(sandboxTsconfigPath, JSON.stringify(sandboxTsconfig, null, 2));
947
+ const tscOut = execSync(`npx tsc --noEmit --project "${sandboxTsconfigPath}" 2>&1 | head -40 || true`, { timeout: 20000, encoding: "utf8", cwd: sandboxDir });
883
948
  const relevantErrors = tscOut
884
949
  .split("\n")
885
- .filter((l) => l.includes(path.basename(filePath)) || l.includes("error TS"));
950
+ .filter((l) => l.includes("error TS"))
951
+ .filter(Boolean);
886
952
  tscResult = {
887
953
  success: relevantErrors.length === 0,
888
954
  output: relevantErrors.length > 0
@@ -1150,4 +1216,216 @@ async function handleBatchToolCalls(args) {
1150
1216
  content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
1151
1217
  };
1152
1218
  }
1219
+ // ── TurboSqueeze ─────────────────────────────────────────────────
1220
+ async function handleTurboSqueeze(args) {
1221
+ const text = args?.text;
1222
+ const stripComments = args?.stripComments !== false;
1223
+ const stripImports = args?.stripImports !== false;
1224
+ const compactJson = args?.compactJson !== false;
1225
+ if (!text)
1226
+ throw new Error("text is required");
1227
+ let squeezed = text;
1228
+ // Strip multi-line comments
1229
+ if (stripComments) {
1230
+ squeezed = squeezed.replace(/\/\*[\s\S]*?\*\//g, '');
1231
+ squeezed = squeezed.replace(/\/\/.*$/gm, '');
1232
+ }
1233
+ // Remove empty lines and trim whitespace
1234
+ squeezed = squeezed.replace(/^\s*[\r\n]/gm, '\n');
1235
+ squeezed = squeezed.replace(/^[ \t]+/gm, ' ');
1236
+ squeezed = squeezed.replace(/[ \t]+$/gm, '');
1237
+ // Strip imports
1238
+ if (stripImports) {
1239
+ squeezed = squeezed.replace(/^import\s+[\s\S]*?from\s+['"][\w@\/\.-]+['"];?\s*$/gm, '');
1240
+ squeezed = squeezed.replace(/^import\s+['"][\w@\/\.-]+['"];?\s*$/gm, '');
1241
+ squeezed = squeezed.replace(/^const\s+\w+\s*=\s*require\(['"][\w@\/\.-]+['"]\);?\s*$/gm, '');
1242
+ squeezed = squeezed.replace(/^require\(['"][\w@\/\.-]+['"]\);?\s*$/gm, '');
1243
+ }
1244
+ // Compact JSON
1245
+ if (compactJson) {
1246
+ squeezed = squeezed.replace(/"\s*:\s*/g, '":');
1247
+ squeezed = squeezed.replace(/,\s*"/g, ',"');
1248
+ squeezed = squeezed.replace(/\[\s+/g, '[');
1249
+ squeezed = squeezed.replace(/\s+\]/g, ']');
1250
+ squeezed = squeezed.replace(/\{\s+/g, '{');
1251
+ squeezed = squeezed.replace(/\s+\}/g, '}');
1252
+ }
1253
+ // Compact consecutive blank lines
1254
+ squeezed = squeezed.replace(/\n{3,}/g, '\n\n').trim();
1255
+ const ratio = text.length > 0 ? ((1 - squeezed.length / text.length) * 100).toFixed(1) : "0";
1256
+ const saved = Math.max(0, text.length - squeezed.length);
1257
+ try {
1258
+ const { reportSavings } = await import("../utils/reportSavings");
1259
+ reportSavings({ source: "contextSqueeze", charsBefore: text.length, charsAfter: squeezed.length, toolName: "turbosqueeze" });
1260
+ }
1261
+ catch { }
1262
+ return {
1263
+ content: [{
1264
+ type: "text",
1265
+ text: `[TurboSqueeze: ${ratio}% reduction (${saved} chars / ~${Math.floor(saved / 4)} tokens saved)]\n\n${squeezed}`,
1266
+ }],
1267
+ };
1268
+ }
1269
+ // ── Compress Context ─────────────────────────────────────────────
1270
+ async function handleCompressContext(args) {
1271
+ const messages = args?.messages;
1272
+ const keepRecent = args?.keepRecent || 3;
1273
+ if (!messages || !Array.isArray(messages))
1274
+ throw new Error("messages array is required");
1275
+ if (messages.length <= keepRecent + 1) {
1276
+ return {
1277
+ content: [{
1278
+ type: "text",
1279
+ text: JSON.stringify({ messages, tokensSavedEstimate: 0, note: "Historial muy corto — no se necesita compresión." }, null, 2),
1280
+ }],
1281
+ };
1282
+ }
1283
+ const recent = messages.slice(-keepRecent);
1284
+ const old = messages.slice(0, -keepRecent);
1285
+ let summary = "";
1286
+ let summaryMethod = "trim";
1287
+ try {
1288
+ const host = process.env.OLLAMA_HOST || 'http://localhost:11434';
1289
+ const model = process.env.OLLAMA_GEN_MODEL || 'llama3';
1290
+ const summaryPrompt = `Summarize the following conversation history into 2-3 concise sentences. Capture ONLY: key decisions made, code patterns established, unresolved issues. Be extremely brief.\n\n${JSON.stringify(old.map((m) => ({ role: m.role, content: typeof m.content === 'string' ? m.content.substring(0, 400) : '...' })))}`;
1291
+ const resp = await axios.post(`${host}/api/generate`, {
1292
+ model, prompt: summaryPrompt, stream: false,
1293
+ options: { temperature: 0.1, num_predict: 300 },
1294
+ });
1295
+ summary = resp.data.response.trim();
1296
+ summaryMethod = "ollama";
1297
+ }
1298
+ catch {
1299
+ summary = old.map((m, i) => `[Turn ${i + 1} / ${m.role}]: ${typeof m.content === 'string' ? m.content.substring(0, 150).replace(/\n/g, ' ') : '...'}`).join('\n').substring(0, 2000);
1300
+ summaryMethod = "truncate";
1301
+ }
1302
+ const oldLength = JSON.stringify(old).length;
1303
+ const summaryLength = summary.length;
1304
+ const tokensSaved = Math.floor(Math.max(0, oldLength - summaryLength) / 4);
1305
+ const compressed = [
1306
+ { role: "user", content: `[Historial comprimido vía ${summaryMethod} — turns anteriores resumidos a ~${Math.floor(summaryLength / 4)} tokens]:\n${summary}` },
1307
+ ...recent,
1308
+ ];
1309
+ try {
1310
+ const { reportSavings } = await import("../utils/reportSavings");
1311
+ reportSavings({ source: "historyPrune", tokens: tokensSaved, toolName: "compress_context" });
1312
+ }
1313
+ catch { }
1314
+ return {
1315
+ content: [{
1316
+ type: "text",
1317
+ text: JSON.stringify({ messages: compressed, tokensSavedEstimate: tokensSaved, summaryMethod }, null, 2),
1318
+ }],
1319
+ };
1320
+ }
1321
+ // ── Smarter Cache ────────────────────────────────────────────────
1322
+ async function handleSmarterCache(args) {
1323
+ const query = args?.query;
1324
+ const context = args?.context || "";
1325
+ const threshold = typeof args?.threshold === "number" ? args.threshold : 0.75;
1326
+ if (!query)
1327
+ throw new Error("query is required");
1328
+ const port = getProxyPort();
1329
+ const fullQuery = context ? `${query}\n\nContext: ${context}` : query;
1330
+ try {
1331
+ const searchRes = await axios.get(`http://localhost:${port}/api/search?q=${encodeURIComponent(fullQuery)}&limit=5`);
1332
+ const results = searchRes.data.results || [];
1333
+ const topHit = results[0];
1334
+ if (topHit && topHit.similarity >= threshold) {
1335
+ const responseText = typeof topHit.response === "string"
1336
+ ? topHit.response
1337
+ : topHit.response?.choices?.[0]?.message?.content || JSON.stringify(topHit.response, null, 2);
1338
+ const tokensSaved = Math.floor(responseText.length / 4);
1339
+ try {
1340
+ const { reportSavings } = await import("../utils/reportSavings");
1341
+ reportSavings({ source: "cache", tokens: tokensSaved, toolName: "smarter_cache", query: query.substring(0, 100) });
1342
+ }
1343
+ catch { }
1344
+ return {
1345
+ content: [{
1346
+ type: "text",
1347
+ text: JSON.stringify({
1348
+ hit: true,
1349
+ similarity: topHit.similarity,
1350
+ threshold,
1351
+ answer: responseText,
1352
+ source: "lemma-brain",
1353
+ tokensSaved,
1354
+ tokensSavedFormatted: `~${tokensSaved.toLocaleString()} tokens`,
1355
+ }, null, 2),
1356
+ }],
1357
+ };
1358
+ }
1359
+ return {
1360
+ content: [{
1361
+ type: "text",
1362
+ text: JSON.stringify({
1363
+ hit: false,
1364
+ similarity: topHit?.similarity || 0,
1365
+ threshold,
1366
+ answer: null,
1367
+ source: "llm-call-required",
1368
+ hint: "Después de resolver, llama store_memory para cachear y no gastar tokens en esto otra vez.",
1369
+ }, null, 2),
1370
+ }],
1371
+ };
1372
+ }
1373
+ catch (e) {
1374
+ logError("smarter_cache", e);
1375
+ return {
1376
+ content: [{
1377
+ type: "text",
1378
+ text: JSON.stringify({
1379
+ hit: false,
1380
+ error: e.message,
1381
+ source: "cache-unavailable",
1382
+ hint: "Lemma Proxy no está corriendo. El LLM funcionará normalmente sin cache.",
1383
+ }, null, 2),
1384
+ }],
1385
+ };
1386
+ }
1387
+ }
1388
+ // ── Token Budget ─────────────────────────────────────────────────
1389
+ async function handleTokenBudget(_args) {
1390
+ const statsFile = path.join(os.homedir(), '.lemma-cache/stats.json');
1391
+ const port = getProxyPort();
1392
+ let stats = {};
1393
+ try {
1394
+ stats = JSON.parse(fs.readFileSync(statsFile, 'utf8'));
1395
+ }
1396
+ catch { }
1397
+ let ledger = [];
1398
+ try {
1399
+ const resp = await axios.get(`http://localhost:${port}/api/ledger`);
1400
+ ledger = resp.data.events || [];
1401
+ }
1402
+ catch { }
1403
+ const totalTokensSaved = stats.totalTokens || ledger.reduce((sum, e) => sum + (e.tokensImpact || 0), 0);
1404
+ const monthlyTokens = stats.monthlyTokens || stats.totalTokens || 100000;
1405
+ const multiplier = monthlyTokens > 0 ? ((monthlyTokens + totalTokensSaved) / monthlyTokens).toFixed(1) : "N/A";
1406
+ const toolCallCount = ledger.length || stats.toolCalls || 0;
1407
+ return {
1408
+ content: [{
1409
+ type: "text",
1410
+ text: JSON.stringify({
1411
+ membershipMultiplier: `${multiplier}x`,
1412
+ totalTokensSaved: totalTokensSaved.toLocaleString(),
1413
+ estimatedTokensPerMonth: monthlyTokens.toLocaleString(),
1414
+ effectiveBudget: (monthlyTokens + totalTokensSaved).toLocaleString(),
1415
+ toolCallsOptimized: toolCallCount,
1416
+ activeStrategies: {
1417
+ turboSqueeze: true,
1418
+ contextCompression: true,
1419
+ semanticCaching: true,
1420
+ historyPruning: true,
1421
+ astNavigation: true,
1422
+ privacyScrubbing: true,
1423
+ },
1424
+ recommendations: toolCallCount === 0
1425
+ ? ["No se han usado tools de Lemma todavía. Asegúrate de que el agente esté usando el prompt lemma-turbomode."]
1426
+ : ["Sigue usando turbosqueeze antes de cada code block grande.", "Usa smarter_cache antes de razonar."],
1427
+ }, null, 2),
1428
+ }],
1429
+ };
1430
+ }
1153
1431
  //# sourceMappingURL=tools.js.map