opengauge 0.1.0 → 0.1.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 CHANGED
@@ -1,46 +1,53 @@
1
1
  # OpenGauge
2
2
 
3
- A local-first, token-efficient LLM chat interface that runs on your machine and helps reduce context bloat while preserving useful history.
3
+ A local-first, token-efficient LLM chat interface.
4
4
 
5
- ## What this repo does
5
+ If you just want to use it, you only need one command:
6
6
 
7
- OpenGauge provides:
8
- - A local web chat UI on `http://localhost:3000`
9
- - Token optimization (compression + deduplication + checkpointing)
10
- - Context retrieval from past messages (RAG-style memory)
11
- - Provider support for Anthropic, OpenAI, Gemini, and Ollama
12
- - Local storage via SQLite in `~/.opengauge/opengauge.db`
7
+ ```bash
8
+ npx opengauge
9
+ ```
13
10
 
14
- ## Quick start
11
+ ## What this repo does
12
+
13
+ OpenGauge runs a local web chat app with:
14
+ - Token optimization (compression + deduplication + checkpoints)
15
+ - Context retrieval from conversation history (RAG-style)
16
+ - Multiple providers: Anthropic, OpenAI, Gemini, Ollama
17
+ - Local storage in SQLite at `~/.opengauge/opengauge.db`
15
18
 
16
- ### Run directly
19
+ ## Use via npx (recommended)
17
20
 
18
21
  ```bash
19
22
  npx opengauge
20
23
  ```
21
24
 
22
- ### Run from source
25
+ You do not need to install OpenGauge globally first.
26
+ `npx` will download the package (if not already cached) and run it.
27
+ On first run, it may take a little longer while it fetches the package.
23
28
 
24
- ```bash
25
- git clone https://github.com/applytorque/opengauge.git
26
- cd opengauge
27
- npm install
28
- npm run build
29
- npm start
30
- ```
29
+ This starts a local server and opens the app in your browser.
31
30
 
32
- Then open:
31
+ Default URL:
33
32
 
34
33
  ```txt
35
34
  http://localhost:3000
36
35
  ```
37
36
 
38
- ## Provider setup
37
+ If port 3000 is busy:
39
38
 
40
- On first launch, use the in-app setup wizard or create this file:
39
+ ```bash
40
+ npx opengauge --port 3001
41
+ ```
42
+
43
+ ## First-time setup
44
+
45
+ When the app opens, configure your provider in the UI wizard, or create:
41
46
 
42
47
  `~/.opengauge/config.yml`
43
48
 
49
+ Example:
50
+
44
51
  ```yaml
45
52
  providers:
46
53
  anthropic:
@@ -51,12 +58,22 @@ defaults:
51
58
  provider: anthropic
52
59
  ```
53
60
 
54
- ## Useful scripts
61
+ ## Developer setup (from source)
62
+
63
+ ```bash
64
+ git clone https://github.com/applytorque/opengauge.git
65
+ cd opengauge
66
+ npm install
67
+ npm run build
68
+ npm start
69
+ ```
70
+
71
+ ## Useful commands
55
72
 
56
73
  ```bash
57
- npm run build # compile TypeScript + copy UI assets
58
- npm start # start OpenGauge
59
- npm pack --dry-run # preview npm package contents
74
+ npm run build # Compile TypeScript + copy UI assets
75
+ npm start # Run CLI entry locally
76
+ npm pack --dry-run # Preview npm package contents
60
77
  ```
61
78
 
62
79
  ## License
@@ -0,0 +1,23 @@
1
+ export interface UploadedAttachment {
2
+ filename: string;
3
+ mimetype: string;
4
+ buffer: Buffer;
5
+ size: number;
6
+ }
7
+ export interface ProcessedAttachment {
8
+ filename: string;
9
+ mimetype: string;
10
+ size: number;
11
+ kind: 'pdf' | 'image' | 'text' | 'binary';
12
+ extractedText: string;
13
+ summary: string;
14
+ keyPoints: string[];
15
+ chunks: string[];
16
+ }
17
+ export interface AttachmentProcessResult {
18
+ files: ProcessedAttachment[];
19
+ inlineContext: string;
20
+ count: number;
21
+ }
22
+ export declare function processAttachments(files: UploadedAttachment[]): Promise<AttachmentProcessResult | null>;
23
+ //# sourceMappingURL=processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../../src/core/attachments/processor.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AASD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,kBAAkB,EAAE,GAC1B,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAiCzC"}
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.processAttachments = processAttachments;
40
+ const path_1 = __importDefault(require("path"));
41
+ const compressor_1 = require("../optimizer/compressor");
42
+ const MAX_FILES = 8;
43
+ const MAX_FILE_BYTES = 8 * 1024 * 1024;
44
+ const MAX_TEXT_CHARS_PER_FILE = 20000;
45
+ const MAX_TOTAL_CONTEXT_CHARS = 22000;
46
+ const CHUNK_SIZE = 1200;
47
+ const CHUNK_OVERLAP = 180;
48
+ async function processAttachments(files) {
49
+ if (!files.length)
50
+ return null;
51
+ const limitedFiles = files.slice(0, MAX_FILES);
52
+ const processed = [];
53
+ const sections = [];
54
+ let totalChars = 0;
55
+ for (const file of limitedFiles) {
56
+ const result = await processSingleAttachment(file);
57
+ if (!result)
58
+ continue;
59
+ processed.push(result);
60
+ const keyPointsText = result.keyPoints.map((point, i) => `${i + 1}. ${point}`).join('\n');
61
+ const section = `[File: ${result.filename}]\nType: ${result.kind} (${result.mimetype || 'unknown'})\nSummary: ${result.summary}\nKey Points:\n${keyPointsText}`;
62
+ if (totalChars + section.length <= MAX_TOTAL_CONTEXT_CHARS) {
63
+ sections.push(section);
64
+ totalChars += section.length;
65
+ }
66
+ }
67
+ if (!processed.length)
68
+ return null;
69
+ const combined = `[Attached Files]\nUse this processed file context when answering. Prioritize user message when conflicts occur.\n\n${sections.join('\n\n')}\n\n[End Attached Files]`;
70
+ const compressed = (0, compressor_1.compressPrompt)(combined, 0.7).compressed;
71
+ return {
72
+ files: processed,
73
+ inlineContext: compressed,
74
+ count: processed.length,
75
+ };
76
+ }
77
+ async function processSingleAttachment(file) {
78
+ const ext = path_1.default.extname(file.filename).toLowerCase();
79
+ const mime = (file.mimetype || '').toLowerCase();
80
+ const safeName = file.filename || 'unnamed-file';
81
+ if (file.size > MAX_FILE_BYTES) {
82
+ const summary = `File skipped due to size limit (${file.size} bytes).`;
83
+ return {
84
+ filename: safeName,
85
+ mimetype: mime,
86
+ size: file.size,
87
+ kind: inferKind(mime, ext),
88
+ extractedText: summary,
89
+ summary,
90
+ keyPoints: [summary],
91
+ chunks: [summary],
92
+ };
93
+ }
94
+ const kind = inferKind(mime, ext);
95
+ let text = '';
96
+ if (kind === 'pdf') {
97
+ text = await extractPdfText(file.buffer);
98
+ if (!text) {
99
+ text = 'PDF detected but text extraction returned empty. The file may be scanned or image-based.';
100
+ }
101
+ }
102
+ else if (kind === 'text') {
103
+ text = file.buffer.toString('utf8');
104
+ }
105
+ else if (kind === 'image') {
106
+ text = await extractImageTextWithOptionalOCR(file.buffer);
107
+ if (!text) {
108
+ text = `Image attached (${safeName}). OCR is not available in this runtime, so only metadata is stored.`;
109
+ }
110
+ }
111
+ else {
112
+ const headerHex = file.buffer.subarray(0, 64).toString('hex');
113
+ text = `Binary file attached (${safeName}). Full parser not available for this type. Size: ${file.size} bytes. Header(hex): ${headerHex}`;
114
+ }
115
+ const normalized = normalizeText(text).slice(0, MAX_TEXT_CHARS_PER_FILE);
116
+ const chunks = chunkText(normalized, CHUNK_SIZE, CHUNK_OVERLAP);
117
+ const { summary, keyPoints } = summarizeTextIntelligently(normalized);
118
+ return {
119
+ filename: safeName,
120
+ mimetype: mime,
121
+ size: file.size,
122
+ kind,
123
+ extractedText: normalized,
124
+ summary,
125
+ keyPoints,
126
+ chunks,
127
+ };
128
+ }
129
+ function inferKind(mime, ext) {
130
+ if (mime.includes('pdf') || ext === '.pdf')
131
+ return 'pdf';
132
+ if (mime.startsWith('image/'))
133
+ return 'image';
134
+ if (isTextLike(mime, ext))
135
+ return 'text';
136
+ return 'binary';
137
+ }
138
+ async function extractPdfText(buffer) {
139
+ try {
140
+ const pdfParseModule = await Promise.resolve().then(() => __importStar(require('pdf-parse')));
141
+ const pdfParse = pdfParseModule.default || pdfParseModule;
142
+ const result = await pdfParse(buffer);
143
+ return result?.text || '';
144
+ }
145
+ catch {
146
+ return '';
147
+ }
148
+ }
149
+ async function extractImageTextWithOptionalOCR(_buffer) {
150
+ try {
151
+ const dynamicImport = new Function('specifier', 'return import(specifier)');
152
+ const tesseract = await dynamicImport('tesseract.js');
153
+ const createWorker = tesseract.createWorker || tesseract.default?.createWorker;
154
+ if (!createWorker)
155
+ return '';
156
+ const worker = await createWorker('eng');
157
+ const result = await worker.recognize(_buffer);
158
+ await worker.terminate();
159
+ return normalizeText(result?.data?.text || '');
160
+ }
161
+ catch {
162
+ return '';
163
+ }
164
+ }
165
+ function isTextLike(mime, ext) {
166
+ if (mime.startsWith('text/'))
167
+ return true;
168
+ if (mime.includes('json') || mime.includes('xml') || mime.includes('yaml') || mime.includes('csv')) {
169
+ return true;
170
+ }
171
+ const textExtensions = new Set([
172
+ '.txt', '.md', '.markdown', '.json', '.yaml', '.yml', '.xml', '.csv', '.ts', '.js', '.jsx', '.tsx',
173
+ '.py', '.java', '.c', '.cpp', '.cs', '.go', '.rs', '.rb', '.php', '.swift', '.kt', '.sql', '.html',
174
+ '.css', '.scss', '.sh', '.bash', '.zsh', '.toml', '.ini', '.cfg', '.conf', '.log', '.rtf'
175
+ ]);
176
+ return textExtensions.has(ext);
177
+ }
178
+ function normalizeText(text) {
179
+ return text
180
+ .replace(/\r/g, '\n')
181
+ .replace(/\n{3,}/g, '\n\n')
182
+ .replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F]/g, ' ')
183
+ .trim();
184
+ }
185
+ function chunkText(text, chunkSize, overlap) {
186
+ if (!text)
187
+ return [];
188
+ const chunks = [];
189
+ let start = 0;
190
+ while (start < text.length) {
191
+ let end = Math.min(start + chunkSize, text.length);
192
+ if (end < text.length) {
193
+ const boundary = text.lastIndexOf('\n', end);
194
+ const sentenceBoundary = text.lastIndexOf('. ', end);
195
+ const bestBoundary = Math.max(boundary, sentenceBoundary);
196
+ if (bestBoundary > start + Math.floor(chunkSize * 0.5)) {
197
+ end = bestBoundary + 1;
198
+ }
199
+ }
200
+ const chunk = text.slice(start, end).trim();
201
+ if (chunk)
202
+ chunks.push(chunk);
203
+ if (end >= text.length)
204
+ break;
205
+ start = Math.max(end - overlap, start + 1);
206
+ }
207
+ return chunks.slice(0, 30);
208
+ }
209
+ function summarizeTextIntelligently(text) {
210
+ if (!text) {
211
+ return { summary: 'No extractable text content found.', keyPoints: ['No text content available.'] };
212
+ }
213
+ const sentences = text
214
+ .split(/(?<=[.!?])\s+/)
215
+ .map((s) => s.trim())
216
+ .filter((s) => s.length > 20 && s.length < 320)
217
+ .slice(0, 200);
218
+ if (sentences.length === 0) {
219
+ const snippet = text.slice(0, 240);
220
+ return { summary: snippet, keyPoints: [snippet] };
221
+ }
222
+ const stopwords = new Set([
223
+ 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'to', 'of', 'and', 'in', 'on',
224
+ 'for', 'with', 'as', 'by', 'at', 'from', 'or', 'that', 'this', 'it', 'its', 'if', 'then', 'than',
225
+ 'into', 'about', 'over', 'under', 'between', 'after', 'before', 'can', 'could', 'should', 'would',
226
+ 'may', 'might', 'will', 'shall', 'do', 'does', 'did', 'not', 'no', 'yes', 'we', 'you', 'they'
227
+ ]);
228
+ const freq = new Map();
229
+ for (const sentence of sentences) {
230
+ const words = sentence.toLowerCase().match(/[a-z0-9]{3,}/g) || [];
231
+ for (const word of words) {
232
+ if (stopwords.has(word))
233
+ continue;
234
+ freq.set(word, (freq.get(word) || 0) + 1);
235
+ }
236
+ }
237
+ const scored = sentences.map((sentence) => {
238
+ const words = sentence.toLowerCase().match(/[a-z0-9]{3,}/g) || [];
239
+ const score = words.reduce((sum, word) => sum + (freq.get(word) || 0), 0) / Math.max(words.length, 1);
240
+ return { sentence, score };
241
+ });
242
+ const top = scored
243
+ .sort((a, b) => b.score - a.score)
244
+ .slice(0, 6)
245
+ .map((s) => s.sentence);
246
+ const keyPoints = top.slice(0, 5);
247
+ const summary = (0, compressor_1.compressPrompt)(top.slice(0, 3).join(' '), 0.55).compressed;
248
+ return {
249
+ summary,
250
+ keyPoints: keyPoints.length ? keyPoints : [summary],
251
+ };
252
+ }
253
+ //# sourceMappingURL=processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../src/core/attachments/processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Queries, FileChunk } from '../../db/queries';
2
+ export interface RetrievedFileChunk extends FileChunk {
3
+ similarity: number;
4
+ }
5
+ export declare function retrieveRelevantFileChunks(query: string, conversationId: string, queries: Queries, k?: number): Promise<RetrievedFileChunk[]>;
6
+ export declare function buildFileContextBlock(chunks: RetrievedFileChunk[]): string;
7
+ //# sourceMappingURL=retriever.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retriever.d.ts","sourceRoot":"","sources":["../../../src/core/attachments/retriever.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKtD,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,OAAO,EAChB,CAAC,GAAE,MAAU,GACZ,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA4C/B;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAS1E"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retrieveRelevantFileChunks = retrieveRelevantFileChunks;
4
+ exports.buildFileContextBlock = buildFileContextBlock;
5
+ const embedder_1 = require("../rag/embedder");
6
+ const dedup_1 = require("../optimizer/dedup");
7
+ const compressor_1 = require("../optimizer/compressor");
8
+ async function retrieveRelevantFileChunks(query, conversationId, queries, k = 8) {
9
+ const queryEmbedding = await (0, embedder_1.embed)(query);
10
+ if (!queryEmbedding)
11
+ return [];
12
+ const chunks = queries.listFileChunksByConversation(conversationId);
13
+ if (!chunks.length)
14
+ return [];
15
+ // Try vector search if sqlite-vec table is available.
16
+ const vectorHits = queries.searchSimilarFileChunks(queryEmbedding, k * 2);
17
+ if (vectorHits.length > 0) {
18
+ const chunkMap = new Map(chunks.map((chunk) => [chunk.id, chunk]));
19
+ const retrieved = [];
20
+ for (const hit of vectorHits) {
21
+ const chunk = chunkMap.get(hit.chunk_id);
22
+ if (!chunk)
23
+ continue;
24
+ retrieved.push({
25
+ ...chunk,
26
+ similarity: 1 - hit.distance,
27
+ });
28
+ }
29
+ return retrieved
30
+ .sort((a, b) => b.similarity - a.similarity)
31
+ .slice(0, k);
32
+ }
33
+ // Fallback in-memory similarity (bounded to latest chunks for efficiency)
34
+ const recentChunks = chunks.slice(0, 160);
35
+ const scored = [];
36
+ for (const chunk of recentChunks) {
37
+ const chunkEmbedding = await (0, embedder_1.embed)(chunk.content);
38
+ if (!chunkEmbedding)
39
+ continue;
40
+ scored.push({
41
+ ...chunk,
42
+ similarity: (0, dedup_1.cosineSimilarity)(queryEmbedding, chunkEmbedding),
43
+ });
44
+ }
45
+ return scored
46
+ .sort((a, b) => b.similarity - a.similarity)
47
+ .slice(0, k);
48
+ }
49
+ function buildFileContextBlock(chunks) {
50
+ if (!chunks.length)
51
+ return '';
52
+ const lines = chunks.map((chunk, index) => {
53
+ const compressed = (0, compressor_1.compressPrompt)(chunk.content, 0.72).compressed;
54
+ return `${index + 1}. ${compressed}`;
55
+ });
56
+ return `[Retrieved File Knowledge]\n${lines.join('\n\n')}\n[End Retrieved File Knowledge]`;
57
+ }
58
+ //# sourceMappingURL=retriever.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retriever.js","sourceRoot":"","sources":["../../../src/core/attachments/retriever.ts"],"names":[],"mappings":";;AASA,gEAiDC;AAED,sDASC;AApED,8CAAwC;AACxC,8CAAsD;AACtD,wDAAyD;AAMlD,KAAK,UAAU,0BAA0B,CAC9C,KAAa,EACb,cAAsB,EACtB,OAAgB,EAChB,IAAY,CAAC;IAEb,MAAM,cAAc,GAAG,MAAM,IAAA,gBAAK,EAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAE9B,sDAAsD;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,SAAS,GAAyB,EAAE,CAAC;QAE3C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,SAAS,CAAC,IAAI,CAAC;gBACb,GAAG,KAAK;gBACR,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS;aACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,0EAA0E;IAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,MAAM,IAAA,gBAAK,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc;YAAE,SAAS;QAE9B,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,KAAK;YACR,UAAU,EAAE,IAAA,wBAAgB,EAAC,cAAc,EAAE,cAAc,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM;SACV,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;SAC3C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAA4B;IAChE,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAE9B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,UAAU,GAAG,IAAA,2BAAc,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC;QAClE,OAAO,GAAG,KAAK,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,OAAO,+BAA+B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,kCAAkC,CAAC;AAC7F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../../src/core/optimizer/compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyCH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AASD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,cAAc,GAAE,MAAY,GAC3B,iBAAiB,CA0DnB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,cAAc,GAAE,MAAU,EAC1B,cAAc,GAAE,MAAY,GAC3B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhF"}
1
+ {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../../src/core/optimizer/compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyCH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AASD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,cAAc,GAAE,MAAY,GAC3B,iBAAiB,CAgDnB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,cAAc,GAAE,MAAU,EAC1B,cAAc,GAAE,MAAY,GAC3B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhF"}
@@ -62,13 +62,14 @@ function estimateTokens(text) {
62
62
  * @param aggressiveness - 0 (no compression) to 1 (maximum compression). Default 0.3.
63
63
  */
64
64
  function compressPrompt(text, aggressiveness = 0.3) {
65
+ const safeAggressiveness = Math.max(0, Math.min(0.85, aggressiveness));
65
66
  const tokensRaw = estimateTokens(text);
66
67
  let result = text;
67
68
  // Always apply phrase compression (these are lossless transformations)
68
69
  for (const [pattern, replacement] of COMPRESSION_MAP) {
69
70
  result = result.replace(pattern, replacement);
70
71
  }
71
- if (aggressiveness > 0.4) {
72
+ if (safeAggressiveness > 0.4) {
72
73
  // Strip markdown formatting from older context while preserving meaning
73
74
  result = result
74
75
  .replace(/^#{1,6}\s+/gm, '')
@@ -78,22 +79,16 @@ function compressPrompt(text, aggressiveness = 0.3) {
78
79
  .replace(/`([^`]+)`/g, '$1');
79
80
  }
80
81
  // Apply word-level compression proportional to aggressiveness
81
- if (aggressiveness > 0.2) {
82
+ if (safeAggressiveness > 0.2) {
82
83
  // Remove filler words
83
84
  const fillerPatterns = LOW_IMPORTANCE_PATTERNS.slice(3); // very, really, just, etc.
84
85
  for (const pattern of fillerPatterns) {
85
86
  result = result.replace(pattern, '');
86
87
  }
87
88
  }
88
- if (aggressiveness > 0.5) {
89
+ if (safeAggressiveness > 0.5) {
89
90
  // Remove articles (more aggressive)
90
91
  result = result.replace(/\b(the|a|an)\s+/gi, '');
91
- // Remove additional low-information discourse words
92
- result = result.replace(/\b(i|you|we|they|it|this|that|these|those|here|there|today|now|then|also|well|okay|great|sure)\b/gi, '');
93
- }
94
- if (aggressiveness > 0.7) {
95
- // Remove copulas where surrounding context is clear
96
- result = result.replace(/\b(is|are|was|were)\s+/gi, ' ');
97
92
  }
98
93
  // Clean up extra whitespace
99
94
  result = result.replace(/\s{2,}/g, ' ').trim();
@@ -1 +1 @@
1
- {"version":3,"file":"compressor.js","sourceRoot":"","sources":["../../../src/core/optimizer/compressor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compressor.js","sourceRoot":"","sources":["../../../src/core/optimizer/compressor.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Zero API cost, ~23ms per embedding, fully offline.
5
5
  * Output dimension: 384
6
6
  */
7
+ export declare function getEmbeddingMode(): 'onnx-minilm' | 'fallback-hash';
7
8
  /**
8
9
  * Generate embedding for a text using the ONNX model.
9
10
  * Returns null if the model is not available.
@@ -1 +1 @@
1
- {"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../../src/core/rag/embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmGH;;;GAGG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAuDtE;AA2CD;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAMlF"}
1
+ {"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../../src/core/rag/embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuDH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,eAAe,CAElE;AAmDD;;;GAGG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAuDtE;AA2CD;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAMlF"}
@@ -42,6 +42,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
42
42
  return (mod && mod.__esModule) ? mod : { "default": mod };
43
43
  };
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.getEmbeddingMode = getEmbeddingMode;
45
46
  exports.embed = embed;
46
47
  exports.embedBatch = embedBatch;
47
48
  const path_1 = __importDefault(require("path"));
@@ -49,6 +50,7 @@ const fs_1 = __importDefault(require("fs"));
49
50
  const os_1 = __importDefault(require("os"));
50
51
  let session = null;
51
52
  let sessionChecked = false;
53
+ let usingFallbackEmbeddings = false;
52
54
  let tokenizer = null;
53
55
  // Simple word-piece tokenizer for MiniLM
54
56
  // In production, you'd use the actual tokenizer from the model
@@ -70,6 +72,7 @@ async function getSession() {
70
72
  const modelDir = path_1.default.join(os_1.default.homedir(), '.opengauge', 'models');
71
73
  const modelPath = path_1.default.join(modelDir, 'all-MiniLM-L6-v2.onnx');
72
74
  if (!fs_1.default.existsSync(modelPath)) {
75
+ usingFallbackEmbeddings = true;
73
76
  console.log('[OpenGauge] Embedding model not found. Using fallback hash embeddings.');
74
77
  console.log(` To enable full semantic search, place all-MiniLM-L6-v2.onnx in ${modelDir}`);
75
78
  return null;
@@ -77,14 +80,19 @@ async function getSession() {
77
80
  session = await ort.InferenceSession.create(modelPath, {
78
81
  executionProviders: ['cpu'],
79
82
  });
83
+ usingFallbackEmbeddings = false;
80
84
  console.log('[OpenGauge] ONNX embedding model loaded successfully.');
81
85
  return session;
82
86
  }
83
87
  catch (error) {
88
+ usingFallbackEmbeddings = true;
84
89
  console.warn('[OpenGauge] Failed to initialize ONNX embedding model. Using fallback.', error);
85
90
  return null;
86
91
  }
87
92
  }
93
+ function getEmbeddingMode() {
94
+ return usingFallbackEmbeddings ? 'fallback-hash' : 'onnx-minilm';
95
+ }
88
96
  /**
89
97
  * Simple tokenization: split on whitespace and punctuation,
90
98
  * convert to indices. This is a fallback; a proper tokenizer
@@ -1 +1 @@
1
- {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../../src/core/rag/embedder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../../src/core/rag/embedder.ts"],"names":[],"mappings":"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"}