@nxuss/lemma 0.4.14 → 0.5.1
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 +76 -17
- package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
- package/dist/cjs/cli/lemma-proxy.js +94 -14
- package/dist/cjs/cli/lemma-proxy.js.map +1 -1
- package/dist/cjs/mcp/index.js +198 -1
- package/dist/cjs/mcp/index.js.map +1 -1
- package/dist/cjs/observability/IdeContextSync.d.ts.map +1 -1
- package/dist/cjs/observability/IdeContextSync.js +22 -10
- package/dist/cjs/observability/IdeContextSync.js.map +1 -1
- package/dist/cjs/utils/ClipboardWatcher.d.ts +19 -0
- package/dist/cjs/utils/ClipboardWatcher.d.ts.map +1 -0
- package/dist/cjs/utils/ClipboardWatcher.js +99 -0
- package/dist/cjs/utils/ClipboardWatcher.js.map +1 -0
- package/dist/cjs/utils/ContextSqueezer.d.ts +27 -1
- package/dist/cjs/utils/ContextSqueezer.d.ts.map +1 -1
- package/dist/cjs/utils/ContextSqueezer.js +279 -6
- package/dist/cjs/utils/ContextSqueezer.js.map +1 -1
- package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
- package/dist/esm/cli/lemma-proxy.js +94 -14
- package/dist/esm/cli/lemma-proxy.js.map +1 -1
- package/dist/esm/mcp/index.js +198 -1
- package/dist/esm/mcp/index.js.map +1 -1
- package/dist/esm/observability/IdeContextSync.d.ts.map +1 -1
- package/dist/esm/observability/IdeContextSync.js +22 -10
- package/dist/esm/observability/IdeContextSync.js.map +1 -1
- package/dist/esm/utils/ClipboardWatcher.d.ts +19 -0
- package/dist/esm/utils/ClipboardWatcher.d.ts.map +1 -0
- package/dist/esm/utils/ClipboardWatcher.js +93 -0
- package/dist/esm/utils/ClipboardWatcher.js.map +1 -0
- package/dist/esm/utils/ContextSqueezer.d.ts +27 -1
- package/dist/esm/utils/ContextSqueezer.d.ts.map +1 -1
- package/dist/esm/utils/ContextSqueezer.js +273 -6
- package/dist/esm/utils/ContextSqueezer.js.map +1 -1
- package/package.json +2 -2
|
@@ -12,8 +12,14 @@ exports.compactWhitespace = compactWhitespace;
|
|
|
12
12
|
exports.detectFunctionDeclaration = detectFunctionDeclaration;
|
|
13
13
|
exports.treeShakeCode = treeShakeCode;
|
|
14
14
|
exports.squeezeCode = squeezeCode;
|
|
15
|
+
exports.detectFilePath = detectFilePath;
|
|
15
16
|
exports.squeezePrompt = squeezePrompt;
|
|
17
|
+
exports.extractContentText = extractContentText;
|
|
18
|
+
exports.decimateHistory = decimateHistory;
|
|
16
19
|
exports.pruneHistoryMessages = pruneHistoryMessages;
|
|
20
|
+
exports.stripImports = stripImports;
|
|
21
|
+
exports.generateAstDiff = generateAstDiff;
|
|
22
|
+
exports.filterHighDensityRAG = filterHighDensityRAG;
|
|
17
23
|
/**
|
|
18
24
|
* Remove single-line and multi-line comments from JavaScript/TypeScript/JSON/CSS code
|
|
19
25
|
*/
|
|
@@ -91,7 +97,7 @@ function treeShakeCode(code, query) {
|
|
|
91
97
|
return squeezeCode(code);
|
|
92
98
|
}
|
|
93
99
|
// Strip comments first to preserve tree-shaker comment markers in the final output
|
|
94
|
-
const cleanCode = stripComments(code);
|
|
100
|
+
const cleanCode = stripImports(stripComments(code));
|
|
95
101
|
const lines = cleanCode.split('\n');
|
|
96
102
|
const resultLines = [];
|
|
97
103
|
let inFunctionBody = false;
|
|
@@ -148,19 +154,58 @@ function treeShakeCode(code, query) {
|
|
|
148
154
|
*/
|
|
149
155
|
function squeezeCode(code) {
|
|
150
156
|
const withoutComments = stripComments(code);
|
|
151
|
-
|
|
157
|
+
const withoutImports = stripImports(withoutComments);
|
|
158
|
+
return compactWhitespace(withoutImports);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Detects the file path from the first line comment inside a code block
|
|
162
|
+
*/
|
|
163
|
+
function detectFilePath(code) {
|
|
164
|
+
const firstLine = code.trim().split('\n')[0]?.trim();
|
|
165
|
+
if (!firstLine)
|
|
166
|
+
return null;
|
|
167
|
+
// Matches comments like:
|
|
168
|
+
// // src/proxy/KeyManager.ts
|
|
169
|
+
// # src/proxy/KeyManager.py
|
|
170
|
+
// /* src/proxy/KeyManager.ts */
|
|
171
|
+
const match = firstLine.match(/^(?:\/\/#?|#|\/\*)\s*([a-zA-Z0-9_\-\.\/\\:]{3,120})(?:\s*\*\/)?$/);
|
|
172
|
+
if (match && match[1]) {
|
|
173
|
+
return match[1];
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
152
176
|
}
|
|
153
177
|
/**
|
|
154
178
|
* Squeezes all markdown code blocks (``` ... ```) inside a prompt string
|
|
155
179
|
*/
|
|
156
|
-
function squeezePrompt(prompt, query = '') {
|
|
180
|
+
function squeezePrompt(prompt, query = '', fileHistory) {
|
|
181
|
+
// Apply codebase search RAG filtering first to throw away trash search snippets
|
|
182
|
+
const ragFiltered = filterHighDensityRAG(prompt, query);
|
|
157
183
|
const codeBlockRegex = /(```[a-zA-Z0-9+#-]*\n)([\s\S]*?)(```)/g;
|
|
158
184
|
const originalSize = prompt.length;
|
|
159
185
|
// Clean the query by stripping all code blocks. This prevents false positive matches
|
|
160
186
|
// on function names that are only present inside attached codebase files.
|
|
161
187
|
const cleanQuery = query ? query.replace(codeBlockRegex, '').trim() : '';
|
|
162
|
-
const squeezed =
|
|
188
|
+
const squeezed = ragFiltered.replace(codeBlockRegex, (match, prefix, code, suffix) => {
|
|
163
189
|
try {
|
|
190
|
+
const filePath = detectFilePath(code);
|
|
191
|
+
if (filePath && fileHistory) {
|
|
192
|
+
const previousContent = fileHistory.get(filePath);
|
|
193
|
+
if (previousContent) {
|
|
194
|
+
if (previousContent.trim() === code.trim()) {
|
|
195
|
+
// File is identical! Return a placeholder to completely omit it and save 100% tokens!
|
|
196
|
+
return `${prefix}// [Lemma AST: Omitted ${filePath} - identical to previous message]\n${suffix}`;
|
|
197
|
+
}
|
|
198
|
+
// File has changed! Generate an AST diff instead of squeezing full code
|
|
199
|
+
const diffContent = generateAstDiff(previousContent, code);
|
|
200
|
+
const firstLine = code.split('\n')[0] || '';
|
|
201
|
+
const replacement = `${firstLine}\n${diffContent}`;
|
|
202
|
+
// Update history with the latest version for subsequent incremental diffs
|
|
203
|
+
fileHistory.set(filePath, code);
|
|
204
|
+
return `${prefix}${replacement}\n${suffix}`;
|
|
205
|
+
}
|
|
206
|
+
// First time seeing this file, save the raw content in session history
|
|
207
|
+
fileHistory.set(filePath, code);
|
|
208
|
+
}
|
|
164
209
|
const language = prefix.match(/```([a-zA-Z0-9+#-]+)/)?.[1] || '';
|
|
165
210
|
if (['typescript', 'javascript', 'ts', 'js', 'tsx', 'jsx'].includes(language.toLowerCase()) && cleanQuery) {
|
|
166
211
|
const squeezedCode = treeShakeCode(code, cleanQuery);
|
|
@@ -186,6 +231,82 @@ function squeezePrompt(prompt, query = '') {
|
|
|
186
231
|
compressionRatio
|
|
187
232
|
};
|
|
188
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Extract plain text string content from message formats (string or content block arrays)
|
|
236
|
+
*/
|
|
237
|
+
function extractContentText(content) {
|
|
238
|
+
if (typeof content === 'string') {
|
|
239
|
+
return content;
|
|
240
|
+
}
|
|
241
|
+
if (Array.isArray(content)) {
|
|
242
|
+
return content
|
|
243
|
+
.map(part => {
|
|
244
|
+
if (part && typeof part === 'object') {
|
|
245
|
+
if (part.type === 'text' && typeof part.text === 'string') {
|
|
246
|
+
return part.text;
|
|
247
|
+
}
|
|
248
|
+
if (typeof part.text === 'string') {
|
|
249
|
+
return part.text;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return '';
|
|
253
|
+
})
|
|
254
|
+
.filter(Boolean)
|
|
255
|
+
.join('\n');
|
|
256
|
+
}
|
|
257
|
+
if (content && typeof content === 'object') {
|
|
258
|
+
if (typeof content.text === 'string') {
|
|
259
|
+
return content.text;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return '';
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Decimates older conversational history turns by replacing them with high-density,
|
|
266
|
+
* single-line structured summaries of what was asked and what was resolved.
|
|
267
|
+
*/
|
|
268
|
+
function decimateHistory(messages) {
|
|
269
|
+
if (!messages || messages.length <= 6) {
|
|
270
|
+
return messages;
|
|
271
|
+
}
|
|
272
|
+
const decimated = [];
|
|
273
|
+
// Keep the first message (typically system prompt or initial prompt) completely intact
|
|
274
|
+
decimated.push(messages[0]);
|
|
275
|
+
// We want to summarize the "middle" turns, keeping the last 4 messages fully intact
|
|
276
|
+
const middleEndIndex = messages.length - 4;
|
|
277
|
+
const summaries = [];
|
|
278
|
+
let idx = 1;
|
|
279
|
+
while (idx < middleEndIndex) {
|
|
280
|
+
const msg = messages[idx];
|
|
281
|
+
const nextMsg = messages[idx + 1];
|
|
282
|
+
const userText = msg.role === 'user' ? extractContentText(msg.content) : '';
|
|
283
|
+
const assistantText = (nextMsg && nextMsg.role === 'assistant') ? extractContentText(nextMsg.content) : '';
|
|
284
|
+
if (userText) {
|
|
285
|
+
const userIntent = userText.length > 80 ? userText.substring(0, 80) + '...' : userText;
|
|
286
|
+
let assistantResolution = '';
|
|
287
|
+
if (assistantText) {
|
|
288
|
+
const cleanAsst = assistantText.replace(/```[\s\S]*?```/g, '[code block]');
|
|
289
|
+
assistantResolution = cleanAsst.length > 120 ? cleanAsst.substring(0, 120) + '...' : cleanAsst;
|
|
290
|
+
}
|
|
291
|
+
summaries.push(`- Turn ${Math.floor(idx / 2) + 1}: User asked: "${userIntent.trim()}" | Assistant resolved: "${assistantResolution.trim().replace(/\\s+/g, ' ')}"`);
|
|
292
|
+
idx += 2;
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
idx++;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
if (summaries.length > 0) {
|
|
299
|
+
decimated.push({
|
|
300
|
+
role: 'system',
|
|
301
|
+
content: `// [Lemma Conversational Context Decimator: Compressed ${summaries.length} older history turns to save tokens]\n${summaries.join('\n')}`
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
// Append the remaining messages
|
|
305
|
+
for (let i = middleEndIndex; i < messages.length; i++) {
|
|
306
|
+
decimated.push(messages[i]);
|
|
307
|
+
}
|
|
308
|
+
return decimated;
|
|
309
|
+
}
|
|
189
310
|
/**
|
|
190
311
|
* Prunes conversational message history to compress large repeated codeblocks in historical messages.
|
|
191
312
|
* Keeps only the most recent message's codeblocks fully intact, and prunes older historical messages
|
|
@@ -195,10 +316,11 @@ function pruneHistoryMessages(messages) {
|
|
|
195
316
|
if (!messages || messages.length <= 2) {
|
|
196
317
|
return { messages, tokensSavedEstimate: 0 };
|
|
197
318
|
}
|
|
319
|
+
const decimatedMessages = decimateHistory(messages);
|
|
198
320
|
let tokensSavedEstimate = 0;
|
|
199
|
-
const pruned =
|
|
321
|
+
const pruned = decimatedMessages.map((msg, index) => {
|
|
200
322
|
// Keep system messages and the last user/assistant turn completely untouched to avoid losing coherence
|
|
201
|
-
if (index >=
|
|
323
|
+
if (index >= decimatedMessages.length - 2 || msg.role === 'system') {
|
|
202
324
|
return msg;
|
|
203
325
|
}
|
|
204
326
|
const codeBlockRegex = /(```[a-zA-Z0-9+#-]*\n)([\s\S]*?)(```)/g;
|
|
@@ -238,4 +360,155 @@ function pruneHistoryMessages(messages) {
|
|
|
238
360
|
});
|
|
239
361
|
return { messages: pruned, tokensSavedEstimate };
|
|
240
362
|
}
|
|
363
|
+
/**
|
|
364
|
+
* Strip import statements and require declarations from JavaScript, TypeScript, Python and CSS code
|
|
365
|
+
*/
|
|
366
|
+
function stripImports(code) {
|
|
367
|
+
const lines = code.split('\n');
|
|
368
|
+
let removedCount = 0;
|
|
369
|
+
const processedLines = lines.filter(line => {
|
|
370
|
+
const trimmed = line.trim();
|
|
371
|
+
// JS/TS standard imports: import ... from ... or import '...'
|
|
372
|
+
if (trimmed.startsWith('import ') || trimmed.startsWith('import{') || trimmed.startsWith('import*')) {
|
|
373
|
+
removedCount++;
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
// CommonJS require statement: const ... = require(...)
|
|
377
|
+
if (trimmed.includes('require(') && (trimmed.startsWith('const ') || trimmed.startsWith('let ') || trimmed.startsWith('var ') || trimmed.startsWith('import '))) {
|
|
378
|
+
removedCount++;
|
|
379
|
+
return false;
|
|
380
|
+
}
|
|
381
|
+
// Python imports: import ... or from ... import ...
|
|
382
|
+
if (trimmed.startsWith('import ') || trimmed.startsWith('from ') && trimmed.includes(' import ')) {
|
|
383
|
+
removedCount++;
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
// CSS imports: @import ...
|
|
387
|
+
if (trimmed.startsWith('@import ')) {
|
|
388
|
+
removedCount++;
|
|
389
|
+
return false;
|
|
390
|
+
}
|
|
391
|
+
return true;
|
|
392
|
+
});
|
|
393
|
+
if (removedCount > 0) {
|
|
394
|
+
processedLines.unshift(`// [Lemma Squeezer: Squeezed ${removedCount} import/dependency lines]`);
|
|
395
|
+
}
|
|
396
|
+
return processedLines.join('\n');
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Generate a highly compact, unified line-by-line diff between two versions of code blocks
|
|
400
|
+
*/
|
|
401
|
+
function generateAstDiff(oldCode, newCode) {
|
|
402
|
+
const oldLines = oldCode.split('\n').map(l => l.trimEnd());
|
|
403
|
+
const newLines = newCode.split('\n').map(l => l.trimEnd());
|
|
404
|
+
const diffLines = [];
|
|
405
|
+
let oldIdx = 0;
|
|
406
|
+
let newIdx = 0;
|
|
407
|
+
while (oldIdx < oldLines.length || newIdx < newLines.length) {
|
|
408
|
+
if (oldIdx < oldLines.length && newIdx < newLines.length) {
|
|
409
|
+
if (oldLines[oldIdx] === newLines[newIdx]) {
|
|
410
|
+
oldIdx++;
|
|
411
|
+
newIdx++;
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
// Detect a modified line vs inserted vs deleted
|
|
415
|
+
let matchOffset = -1;
|
|
416
|
+
for (let offset = 1; offset < 5; offset++) {
|
|
417
|
+
if (newIdx + offset < newLines.length && oldLines[oldIdx] === newLines[newIdx + offset]) {
|
|
418
|
+
matchOffset = offset;
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
if (matchOffset !== -1) {
|
|
423
|
+
for (let i = 0; i < matchOffset; i++) {
|
|
424
|
+
diffLines.push(`+ ${newLines[newIdx + i]}`);
|
|
425
|
+
}
|
|
426
|
+
newIdx += matchOffset;
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
let deleteOffset = -1;
|
|
430
|
+
for (let offset = 1; offset < 5; offset++) {
|
|
431
|
+
if (oldIdx + offset < oldLines.length && oldLines[oldIdx + offset] === newLines[newIdx]) {
|
|
432
|
+
deleteOffset = offset;
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
if (deleteOffset !== -1) {
|
|
437
|
+
for (let i = 0; i < deleteOffset; i++) {
|
|
438
|
+
diffLines.push(`- ${oldLines[oldIdx + i]}`);
|
|
439
|
+
}
|
|
440
|
+
oldIdx += deleteOffset;
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
diffLines.push(`- ${oldLines[oldIdx]}`);
|
|
444
|
+
diffLines.push(`+ ${newLines[newIdx]}`);
|
|
445
|
+
oldIdx++;
|
|
446
|
+
newIdx++;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
else if (newIdx < newLines.length) {
|
|
452
|
+
diffLines.push(`+ ${newLines[newIdx]}`);
|
|
453
|
+
newIdx++;
|
|
454
|
+
}
|
|
455
|
+
else if (oldIdx < oldLines.length) {
|
|
456
|
+
diffLines.push(`- ${oldLines[oldIdx]}`);
|
|
457
|
+
oldIdx++;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
if (diffLines.length === 0) {
|
|
461
|
+
return `// [Lemma AST Diff: No structural differences found]`;
|
|
462
|
+
}
|
|
463
|
+
return [
|
|
464
|
+
`// [Lemma AST Incremental Diff: showing only modified/inserted lines]`,
|
|
465
|
+
...diffLines
|
|
466
|
+
].join('\n');
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Filters large codebase search results / RAG dumps in the prompt, keeping only the most
|
|
470
|
+
* semantically relevant snippets based on keyword intersection (Jaccard similarity).
|
|
471
|
+
*/
|
|
472
|
+
function filterHighDensityRAG(prompt, query) {
|
|
473
|
+
// If prompt is short, don't do RAG filtering
|
|
474
|
+
if (prompt.length < 2000 || !query)
|
|
475
|
+
return prompt;
|
|
476
|
+
const searchResultRegex = /(?:Codebase search results|Context from search|Files found from search|Selected codebase snippets|Search results):([\s\S]*?)(?=\n\n\w|\n\n#|$)/i;
|
|
477
|
+
const match = prompt.match(searchResultRegex);
|
|
478
|
+
if (!match || !match[1])
|
|
479
|
+
return prompt;
|
|
480
|
+
const rawSection = match[1];
|
|
481
|
+
// Snippets inside the search results section are usually separated by dashed lines, newlines, or headers
|
|
482
|
+
// Let's split by double newlines or markdown headers or code block borders
|
|
483
|
+
const snippets = rawSection.split(/(?=^#|\/\/ File:|^File:)/m).map(s => s.trim()).filter(Boolean);
|
|
484
|
+
if (snippets.length <= 3)
|
|
485
|
+
return prompt; // Don't filter if there are very few snippets
|
|
486
|
+
const scoredSnippets = snippets.map(snippet => {
|
|
487
|
+
// Calculate Jaccard similarity between snippet and user query
|
|
488
|
+
const wordsQuery = new Set(query.toLowerCase().match(/\w+/g) || []);
|
|
489
|
+
const wordsSnippet = new Set(snippet.toLowerCase().match(/\w+/g) || []);
|
|
490
|
+
let intersection = 0;
|
|
491
|
+
for (const w of wordsQuery) {
|
|
492
|
+
if (wordsSnippet.has(w))
|
|
493
|
+
intersection++;
|
|
494
|
+
}
|
|
495
|
+
const similarity = wordsQuery.size + wordsSnippet.size > 0
|
|
496
|
+
? intersection / (wordsQuery.size + wordsSnippet.size - intersection)
|
|
497
|
+
: 0;
|
|
498
|
+
return { snippet, similarity };
|
|
499
|
+
});
|
|
500
|
+
// Sort by similarity descending
|
|
501
|
+
scoredSnippets.sort((a, b) => b.similarity - a.similarity);
|
|
502
|
+
// Keep only the top 3 most relevant snippets, or any snippet with a similarity above 0.05
|
|
503
|
+
const threshold = 0.05;
|
|
504
|
+
const kept = scoredSnippets.filter((item, idx) => idx < 3 || item.similarity >= threshold);
|
|
505
|
+
const discardedCount = scoredSnippets.length - kept.length;
|
|
506
|
+
if (discardedCount > 0) {
|
|
507
|
+
const keptSection = kept.map(k => k.snippet).join('\n\n');
|
|
508
|
+
const summary = `\n\n// [Lemma RAG Filter: Omitted ${discardedCount} low-relevance fuzzy-match snippets, saving ~${discardedCount * 300} context tokens]\n\n`;
|
|
509
|
+
const newSection = `${keptSection}${summary}`;
|
|
510
|
+
return prompt.replace(rawSection, newSection);
|
|
511
|
+
}
|
|
512
|
+
return prompt;
|
|
513
|
+
}
|
|
241
514
|
//# sourceMappingURL=ContextSqueezer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextSqueezer.js","sourceRoot":"","sources":["../../../src/utils/ContextSqueezer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContextSqueezer.js","sourceRoot":"","sources":["../../../src/utils/ContextSqueezer.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAYH,sCAgCC;AAKD,8CAOC;AAGD,8DA0BC;AAMD,sCAoEC;AAKD,kCAIC;AAKD,wCAaC;AAKD,sCAkEC;AAKD,gDA0BC;AAMD,0CAkDC;AAOD,oDAqDC;AAKD,oCAgCC;AAKD,0CAoEC;AAMD,oDAiDC;AAhjBD;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,0CAA0C;IAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAElD,wCAAwC;IACxC,iEAAiE;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtC,uEAAuE;QACvE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,8EAA8E;YAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACzC,CAAC;YACD,8BAA8B;YAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YACxD,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,uBAAuB;SACnD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,qBAAqB;SAC5D,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,oDAAoD;AAClF,CAAC;AAGD,SAAgB,yBAAyB,CAAC,OAAe;IACvD,wBAAwB;IACxB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvD,qDAAqD;IACrD,MAAM,SAAS,GAAG,iHAAiH,CAAC;IACpI,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,2CAA2C;IAC3C,MAAM,UAAU,GAAG,mIAAmI,CAAC;IACvJ,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,+CAA+C;IAC/C,MAAM,WAAW,GAAG,mJAAmJ,CAAC;IACxK,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClD,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,wCAAwC;IACxC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,mFAAmF;IACnF,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,qEAAqE;IACrE,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,IAAI,cAAc,EAAE,CAAC;YACnB,yDAAyD;YACzD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC/C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAChD,eAAe,IAAI,KAAK,GAAG,MAAM,CAAC;YAElC,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;gBACzB,cAAc,GAAG,KAAK,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,uDAAuD,iBAAiB,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBACjH,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,eAAe;YAC3C,CAAC;iBAAM,CAAC;gBACN,iBAAiB,EAAE,CAAC;YACtB,CAAC;YACD,SAAS;QACX,CAAC;QAED,qCAAqC;QACrC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QAED,kFAAkF;QAClF,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,oDAAoD;YACpD,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;YAE7D,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAClE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,eAAe;gBAEzC,2EAA2E;gBAC3E,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACnE,cAAc,GAAG,IAAI,CAAC;oBACtB,eAAe,GAAG,CAAC,CAAC;oBACpB,iBAAiB,GAAG,CAAC,CAAC;oBACtB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvB,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,IAAY;IACtC,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IACrD,OAAO,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACrD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,yBAAyB;IACzB,6BAA6B;IAC7B,4BAA4B;IAC5B,gCAAgC;IAChC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IAClG,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,MAAc,EACd,QAAgB,EAAE,EAClB,WAAiC;IAEjC,gFAAgF;IAChF,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAExD,MAAM,cAAc,GAAG,wCAAwC,CAAC;IAEhE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IAEnC,qFAAqF;IACrF,0EAA0E;IAC1E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QACnF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAClD,IAAI,eAAe,EAAE,CAAC;oBACpB,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;wBAC3C,sFAAsF;wBACtF,OAAO,GAAG,MAAM,0BAA0B,QAAQ,sCAAsC,MAAM,EAAE,CAAC;oBACnG,CAAC;oBAED,wEAAwE;oBACxE,MAAM,WAAW,GAAG,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;oBAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5C,MAAM,WAAW,GAAG,GAAG,SAAS,KAAK,WAAW,EAAE,CAAC;oBAEnD,0EAA0E;oBAC1E,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAEhC,OAAO,GAAG,MAAM,GAAG,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC9C,CAAC;gBAED,uEAAuE;gBACvE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjE,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC1G,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACrD,OAAO,GAAG,MAAM,GAAG,YAAY,KAAK,MAAM,EAAE,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvC,OAAO,GAAG,MAAM,GAAG,YAAY,KAAK,MAAM,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,iDAAiD;QACjE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;IACrC,MAAM,gBAAgB,GAAG,YAAY,GAAG,CAAC;QACvC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,OAAY;IAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO;aACX,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC1D,OAAO,IAAI,CAAC,IAAI,CAAC;gBACnB,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC,IAAI,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAe;IAC7C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAU,EAAE,CAAC;IAC5B,uFAAuF;IACvF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5B,oFAAoF;IACpF,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,OAAO,GAAG,GAAG,cAAc,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,aAAa,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3G,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvF,IAAI,mBAAmB,GAAG,EAAE,CAAC;YAC7B,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;gBAC3E,mBAAmB,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACjG,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,UAAU,CAAC,IAAI,EAAE,4BAA4B,mBAAmB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACpK,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,GAAG,EAAE,CAAC;QACR,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,0DAA0D,SAAS,CAAC,MAAM,yCAAyC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACnJ,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,QAAe;IAClD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,iBAAiB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAEpD,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClD,uGAAuG;QACvG,IAAI,KAAK,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnE,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,cAAc,GAAG,wCAAwC,CAAC;QAEhE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAa,EAAE,MAAc,EAAE,IAAY,EAAE,MAAc,EAAE,EAAE;oBAClG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;wBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACtC,MAAM,OAAO,GAAG,yCAAyC,KAAK,CAAC,MAAM,+CAA+C,CAAC;wBACrH,mBAAmB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACtD,OAAO,GAAG,MAAM,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC;oBAC1C,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC/C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACrC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC1D,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnD,CAAC;oBACD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAClC,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnD,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,8DAA8D;QAC9D,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACpG,YAAY,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,uDAAuD;QACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAChK,YAAY,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,oDAAoD;QACpD,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjG,YAAY,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,2BAA2B;QAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,YAAY,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,cAAc,CAAC,OAAO,CAAC,gCAAgC,YAAY,2BAA2B,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe,EAAE,OAAe;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC5D,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzD,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1C,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,gDAAgD;gBAChD,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;gBACrB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;oBAC1C,IAAI,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;wBACxF,WAAW,GAAG,MAAM,CAAC;wBACrB,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;oBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;wBACrC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9C,CAAC;oBACD,MAAM,IAAI,WAAW,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;oBACtB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;wBAC1C,IAAI,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BACxF,YAAY,GAAG,MAAM,CAAC;4BACtB,MAAM;wBACR,CAAC;oBACH,CAAC;oBAED,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;wBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;4BACtC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC9C,CAAC;wBACD,MAAM,IAAI,YAAY,CAAC;oBACzB,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBACxC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBACxC,MAAM,EAAE,CAAC;wBACT,MAAM,EAAE,CAAC;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,EAAE,CAAC;QACX,CAAC;aAAM,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,sDAAsD,CAAC;IAChE,CAAC;IAED,OAAO;QACL,uEAAuE;QACvE,GAAG,SAAS;KACb,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,MAAc,EAAE,KAAa;IAChE,6CAA6C;IAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAElD,MAAM,iBAAiB,GAAG,iJAAiJ,CAAC;IAC5K,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAEvC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5B,yGAAyG;IACzG,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClG,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,8CAA8C;IAEvF,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC5C,8DAA8D;QAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAExE,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,YAAY,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC;YACxD,CAAC,CAAC,YAAY,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC;YACrE,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,gCAAgC;IAChC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAE3D,0FAA0F;IAC1F,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IAC3F,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3D,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,qCAAqC,cAAc,gDAAgD,cAAc,GAAG,GAAG,sBAAsB,CAAC;QAE9J,MAAM,UAAU,GAAG,GAAG,WAAW,GAAG,OAAO,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lemma-proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/lemma-proxy.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"lemma-proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/lemma-proxy.ts"],"names":[],"mappings":";AAw3CA,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6KhL"}
|
|
@@ -170,22 +170,28 @@ async function ensureChromaRunning() {
|
|
|
170
170
|
}
|
|
171
171
|
function ensureGitIgnore() {
|
|
172
172
|
const gi = path.join(process.cwd(), '.gitignore');
|
|
173
|
-
|
|
173
|
+
let added = false;
|
|
174
174
|
try {
|
|
175
|
+
let content = '';
|
|
175
176
|
if (fs.existsSync(gi)) {
|
|
176
|
-
|
|
177
|
-
if (!content.includes(line)) {
|
|
178
|
-
fs.appendFileSync(gi, `\n# Lemma Context Logs\n${line}\n`);
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
177
|
+
content = fs.readFileSync(gi, 'utf8');
|
|
181
178
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
179
|
+
const appendLines = [];
|
|
180
|
+
if (!content.includes('.lemma/')) {
|
|
181
|
+
appendLines.push('# Lemma Context Logs', '.lemma/');
|
|
182
|
+
added = true;
|
|
183
|
+
}
|
|
184
|
+
if (!content.includes('chroma_data/')) {
|
|
185
|
+
appendLines.push('# Lemma Local Vector Database', 'chroma_data/');
|
|
186
|
+
added = true;
|
|
187
|
+
}
|
|
188
|
+
if (appendLines.length > 0) {
|
|
189
|
+
const prefix = content.endsWith('\n') || content === '' ? '' : '\n';
|
|
190
|
+
fs.appendFileSync(gi, prefix + appendLines.join('\n') + '\n');
|
|
185
191
|
}
|
|
186
192
|
}
|
|
187
193
|
catch { }
|
|
188
|
-
return
|
|
194
|
+
return added;
|
|
189
195
|
}
|
|
190
196
|
// ── License helpers ────────────────────────────────────────────────────────────
|
|
191
197
|
async function loadLicense() {
|
|
@@ -500,8 +506,43 @@ async function relayMissStream(res, body, provider, tier) {
|
|
|
500
506
|
setSseHeaders(res, false, 1.0, tier);
|
|
501
507
|
const apiKey = provider === 'openai' ? process.env.OPENAI_API_KEY : process.env.ANTHROPIC_API_KEY;
|
|
502
508
|
if (!apiKey) {
|
|
503
|
-
|
|
504
|
-
|
|
509
|
+
console.log(`\n⚠️ No API Key found for ${provider.toUpperCase()} stream. Falling back to local Ollama (Zero-Cost Mode)!`);
|
|
510
|
+
const isCloudModel = body.model && (body.model.startsWith('gpt') ||
|
|
511
|
+
body.model.startsWith('claude') ||
|
|
512
|
+
body.model.startsWith('gemini'));
|
|
513
|
+
const localModel = isCloudModel ? 'llama3' : (body.model || 'llama3');
|
|
514
|
+
const payload = JSON.stringify({ ...body, model: localModel, stream: true });
|
|
515
|
+
await new Promise(resolve => {
|
|
516
|
+
const req = http.request({
|
|
517
|
+
hostname: '127.0.0.1',
|
|
518
|
+
port: 11434,
|
|
519
|
+
path: '/v1/chat/completions',
|
|
520
|
+
method: 'POST',
|
|
521
|
+
headers: {
|
|
522
|
+
'Content-Type': 'application/json',
|
|
523
|
+
'Content-Length': Buffer.byteLength(payload)
|
|
524
|
+
}
|
|
525
|
+
}, upstream => {
|
|
526
|
+
upstream.on('data', chunk => res.write(chunk));
|
|
527
|
+
upstream.on('end', () => {
|
|
528
|
+
res.write('data: [DONE]\n\n');
|
|
529
|
+
res.end();
|
|
530
|
+
resolve();
|
|
531
|
+
});
|
|
532
|
+
upstream.on('error', err => {
|
|
533
|
+
res.write(`data: ${JSON.stringify({ error: `Ollama stream error: ${err.message}` })}\n\ndata: [DONE]\n\n`);
|
|
534
|
+
res.end();
|
|
535
|
+
resolve();
|
|
536
|
+
});
|
|
537
|
+
});
|
|
538
|
+
req.on('error', err => {
|
|
539
|
+
res.write(`data: ${JSON.stringify({ error: `Failed to connect to local Ollama. Verify that Ollama is running on port 11434. (Original error: ${err.message})` })}\n\ndata: [DONE]\n\n`);
|
|
540
|
+
res.end();
|
|
541
|
+
resolve();
|
|
542
|
+
});
|
|
543
|
+
req.write(payload);
|
|
544
|
+
req.end();
|
|
545
|
+
});
|
|
505
546
|
return;
|
|
506
547
|
}
|
|
507
548
|
const hostname = provider === 'openai' ? 'api.openai.com' : 'api.anthropic.com';
|
|
@@ -528,6 +569,7 @@ class LemmaServer {
|
|
|
528
569
|
constructor(port, projectName, openBrowser = true) {
|
|
529
570
|
this.stats = {};
|
|
530
571
|
this.dashboardPath = '';
|
|
572
|
+
this.sessions = new Map();
|
|
531
573
|
this.port = port;
|
|
532
574
|
this.projectName = projectName || detectProject();
|
|
533
575
|
this.projectDir = ensureProjectDir(this.projectName);
|
|
@@ -698,9 +740,23 @@ class LemmaServer {
|
|
|
698
740
|
req.body.model = model;
|
|
699
741
|
// Apply the Agent Multiplexer to local-verify the prompt in parallel
|
|
700
742
|
const enrichedPrompt = await agentMultiplexer.multiplexPrompt(prompt, model);
|
|
743
|
+
// Resolve conversation session key and retrieve/create the fileHistory map
|
|
744
|
+
let fileHistory;
|
|
745
|
+
if (req.body.messages && req.body.messages.length > 0) {
|
|
746
|
+
try {
|
|
747
|
+
const firstMsg = req.body.messages[0];
|
|
748
|
+
const content = typeof firstMsg.content === 'string' ? firstMsg.content : JSON.stringify(firstMsg.content);
|
|
749
|
+
const sessionKey = crypto.createHash('sha1').update(content).digest('hex');
|
|
750
|
+
if (!this.sessions.has(sessionKey)) {
|
|
751
|
+
this.sessions.set(sessionKey, { fileHistory: new Map() });
|
|
752
|
+
}
|
|
753
|
+
fileHistory = this.sessions.get(sessionKey).fileHistory;
|
|
754
|
+
}
|
|
755
|
+
catch { }
|
|
756
|
+
}
|
|
701
757
|
// Compress long TS/JS codebase file blocks in the enriched prompt using the Context Squeezer AST Tree-Shaker!
|
|
702
758
|
// The query context is the user's primary prompt to ensure we keep relevant methods!
|
|
703
|
-
const squeezeResult = squeezePrompt(enrichedPrompt, prompt);
|
|
759
|
+
const squeezeResult = squeezePrompt(enrichedPrompt, prompt, fileHistory);
|
|
704
760
|
const squeezedPrompt = squeezeResult.squeezed;
|
|
705
761
|
const compressionSavings = squeezeResult.originalSize - squeezeResult.squeezedSize;
|
|
706
762
|
if (compressionSavings > 0) {
|
|
@@ -925,6 +981,14 @@ Adjusted Answer:`;
|
|
|
925
981
|
console.log('simply copy-paste this command into your MCP settings:');
|
|
926
982
|
console.log(`\n \x1b[1m\x1b[33mlemma mcp\x1b[0m\n`);
|
|
927
983
|
console.log('────────────────────────────────────────────────\n');
|
|
984
|
+
// Auto-start the Local Clipboard Optimizer Watcher in the background
|
|
985
|
+
try {
|
|
986
|
+
const { startClipboardWatcher } = require('../utils/ClipboardWatcher');
|
|
987
|
+
startClipboardWatcher(1000);
|
|
988
|
+
}
|
|
989
|
+
catch (err) {
|
|
990
|
+
console.warn(`⚠️ Could not auto-initialize Clipboard Watcher: ${err.message}`);
|
|
991
|
+
}
|
|
928
992
|
});
|
|
929
993
|
process.on('SIGTERM', () => server.close());
|
|
930
994
|
}
|
|
@@ -1159,7 +1223,7 @@ program.command('init')
|
|
|
1159
1223
|
console.log('✅ Created .lemma directory (Telepathic Sync enabled)');
|
|
1160
1224
|
}
|
|
1161
1225
|
if (ensureGitIgnore()) {
|
|
1162
|
-
console.log('✅
|
|
1226
|
+
console.log('✅ Updated .gitignore with Lemma ignore rules');
|
|
1163
1227
|
}
|
|
1164
1228
|
const envFile = path.join(process.cwd(), '.env');
|
|
1165
1229
|
const lemmaConfig = `\n# Lemma AI Gateway Configuration\nOPENAI_BASE_URL=http://localhost:8081/v1\nLEMMA_PROJECT=${project}\n`;
|
|
@@ -1437,6 +1501,22 @@ program.command('autopilot')
|
|
|
1437
1501
|
process.exit(1);
|
|
1438
1502
|
}
|
|
1439
1503
|
});
|
|
1504
|
+
program.command('clipboard')
|
|
1505
|
+
.description('Start the Lemma Local Clipboard Telepathic Optimizer (auto-squeezes copied code blocks)')
|
|
1506
|
+
.option('--interval <ms>', 'Polling interval in milliseconds', '1000')
|
|
1507
|
+
.action((opts) => {
|
|
1508
|
+
try {
|
|
1509
|
+
const interval = parseInt(opts.interval) || 1000;
|
|
1510
|
+
const { startClipboardWatcher } = require('../utils/ClipboardWatcher');
|
|
1511
|
+
startClipboardWatcher(interval);
|
|
1512
|
+
// Keep process alive
|
|
1513
|
+
process.stdin.resume();
|
|
1514
|
+
}
|
|
1515
|
+
catch (err) {
|
|
1516
|
+
console.error('❌ Exception starting Clipboard Watcher:', err.message);
|
|
1517
|
+
process.exit(1);
|
|
1518
|
+
}
|
|
1519
|
+
});
|
|
1440
1520
|
if (process.argv[1] && (process.argv[1].includes('lemma') || process.argv[1].endsWith('.cjs') || process.argv[1].endsWith('.js'))) {
|
|
1441
1521
|
program.parse(process.argv);
|
|
1442
1522
|
}
|