@kevinbermudezc/context-guard 1.3.0 → 1.3.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
@@ -8,7 +8,9 @@
8
8
 
9
9
  > **Intelligent context admission control & token optimization for Claude Code, Cursor, and Agentic AI workflows.**
10
10
 
11
- Stop burning expensive tokens and degrading reasoning accuracy. `ContextGuard` intercepts un-scoped, large file reads before they enter your frontier reasoning models (Claude Opus 5, Claude Sonnet 5, GPT-6 Astra), extracting structural signatures or delegating summarization to ultra-fast worker models (Gemini 3.8 Flash, local SLMs).
11
+ > 🐶 **Built on Dogfooding:** ContextGuard built itself — saving over 500,000 tokens during its own development lifecycle, verified by its internal FinOps ledger.
12
+
13
+ Stop burning expensive tokens and degrading reasoning accuracy. `ContextGuard` intercepts un-scoped, large file reads before they enter your frontier reasoning models (Claude Opus 5.5, Claude Sonnet 5.5, GPT-6 Astra), extracting structural signatures or delegating summarization to ultra-fast worker models (Gemini 3.8 Flash, local SLMs).
12
14
 
13
15
  ---
14
16
 
@@ -24,7 +26,7 @@ ContextGuard is built on **TypeScript 7.0**, utilizing the native **Go-based com
24
26
 
25
27
  Frontier models are incredible at reasoning, but reading massive files (1,000+ lines of monorepo code, generated types, or verbose logs) introduces two major problems:
26
28
 
27
- 1. **FinOps Bleed:** Frontier models cost between \$3.00 and \$15.00+ per million input tokens. Dumping a few 2,000-line files into a session quickly adds up to dozens of dollars per day per developer.
29
+ 1. **FinOps Bleed:** Frontier models cost between \$2.00 and \$10.00+ per million input tokens (e.g. Claude Opus 5.5, GPT-6 Astra). Dumping a few 2,000-line files into a session quickly adds up to dozens of dollars per day per developer.
28
30
  2. **Context Rot & "Lost in the Middle":** Saturating attention heads with hundreds of lines of boilerplate degrades precision, increases hallucination rates, and derails agentic reasoning loops.
29
31
 
30
32
  ---
@@ -50,7 +52,7 @@ flowchart TD
50
52
  F -- "YES (Large un-scoped read)" --> G["🛡️ <b>CONTEXTGUARD SHUNT TRIGGER</b>"]
51
53
 
52
54
  G --> H["<b>Tier 0: Local AST Skeletonizer</b><br>TS, JS, Python, Go, Rust, Java, C#<br>+ Svelte 5, Vue 3, Angular, Astro SFCs<br>• Collapses import walls (&gt;5 imports)<br>• Cost: <b>$0.00</b> | Latency: <b>&lt; 5ms</b>"]
53
- G --> I["<b>Tier 1: Worker Model</b><br>Logs, JSON, Markdown, Docs<br>• Gemini 2.5 Flash / Local Ollama<br>• Cost: <b>~95% cheaper</b> than Frontier"]
55
+ G --> I["<b>Tier 1: Worker Model</b><br>Logs, JSON, Markdown, Docs<br>• Gemini 3.8 Flash / Local Ollama<br>• Cost: <b>~95% cheaper</b> than Frontier"]
54
56
 
55
57
  H --> J["🛑 <b>HARD BLOCK (Exit Code 2)</b><br>Emits line-tagged skeleton <code>[L89]</code> to stderr"]
56
58
  I --> J
@@ -80,7 +82,7 @@ Imagine Claude Code needs to inspect how refund errors are handled in `src/payme
80
82
  ```text
81
83
  1. Claude Code executes: Read("src/payment-gateway.ts")
82
84
  └── ❌ Dumps all 1,500 lines into the frontier reasoning context
83
- ├── Tokens burned: ~8,500 tokens (~$0.13 in Claude Opus for a single read)
85
+ ├── Tokens burned: ~8,500 tokens (~$0.034 in Claude Opus 5.5 for a single read)
84
86
  ├── Context window saturated with 28 repetitive imports & unrelated schema logic
85
87
  └── High risk of "Lost in the Middle" attention degradation and hallucinations
86
88
  ```
@@ -166,18 +168,53 @@ The MCP server exposes tools, passive resources, and optimized prompt templates:
166
168
  | **Resource** | `contextguard://config` | Live inspection of active thresholds, bypass formats, and worker provider |
167
169
  | **Prompt** | `investigate_codebase_safely` | System prompt template enforcing token preservation and outline-first navigation |
168
170
 
169
- ### Install & Run
171
+ ### How to Install & Configure ContextGuard MCP
172
+
173
+ The Model Context Protocol (MCP) server allows AI editors to automatically call `read_file_safe`, `inspect_outline`, and `grep_distilled`.
174
+
175
+ #### 1. Instant Run (No Installation Required)
176
+
177
+ You can run the server directly via `npx` (it will download the latest binary on the fly):
170
178
 
171
179
  ```bash
172
- # One-shot (no install):
173
180
  npx -y -p @kevinbermudezc/context-guard context-guard-mcp
181
+ ```
182
+
183
+ Or install it globally/locally in your repository:
174
184
 
175
- # Or as a local dependency:
185
+ ```bash
186
+ # Global install:
187
+ npm install -g @kevinbermudezc/context-guard
188
+
189
+ # Or as a project devDependency:
176
190
  pnpm add -D @kevinbermudezc/context-guard
177
- node ./node_modules/@kevinbermudezc/context-guard/dist/bin/mcp-server.js
178
191
  ```
179
192
 
180
- ### 🖱️ Cursor (`~/.cursor/mcp.json`)
193
+ ---
194
+
195
+ #### 2. Configure Your AI Coding Assistant
196
+
197
+ ##### 🖱️ Cursor
198
+ 1. Open **Cursor Settings** (`Cmd + ,` on macOS or `Ctrl + ,` on Windows/Linux).
199
+ 2. Navigate to **Features > MCP Servers** or open `~/.cursor/mcp.json`.
200
+ 3. Add the `context-guard` entry:
201
+
202
+ ```json
203
+ {
204
+ "mcpServers": {
205
+ "context-guard": {
206
+ "command": "npx",
207
+ "args": ["-y", "-p", "@kevinbermudezc/context-guard@latest", "context-guard-mcp"]
208
+ }
209
+ }
210
+ }
211
+ ```
212
+
213
+ ##### 🤖 Claude Desktop
214
+ 1. Open the Claude Desktop configuration file:
215
+ - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
216
+ - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
217
+ 2. Add the `context-guard` definition:
181
218
 
182
219
  ```json
183
220
  {
@@ -189,8 +226,10 @@ node ./node_modules/@kevinbermudezc/context-guard/dist/bin/mcp-server.js
189
226
  }
190
227
  }
191
228
  ```
229
+ 3. Restart Claude Desktop. You will see `read_file_safe`, `inspect_outline`, and `grep_distilled` under the 🔌 icon.
192
230
 
193
- ### 🤖 Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json`)
231
+ ##### 🪁 Antigravity / Google AGY
232
+ 1. In your project workspace, create or edit `.agents/mcp.json` (or globally in `~/.gemini/config/mcp_config.json`):
194
233
 
195
234
  ```json
196
235
  {
@@ -203,7 +242,8 @@ node ./node_modules/@kevinbermudezc/context-guard/dist/bin/mcp-server.js
203
242
  }
204
243
  ```
205
244
 
206
- ### 🪁 Antigravity / Google AGY (`.agents/mcp.json` or `~/.config/agy/mcp.json`)
245
+ ##### 🏄 Windsurf (Cascade) & Zed
246
+ Add to your respective MCP configuration file:
207
247
 
208
248
  ```json
209
249
  {
@@ -216,11 +256,11 @@ node ./node_modules/@kevinbermudezc/context-guard/dist/bin/mcp-server.js
216
256
  }
217
257
  ```
218
258
 
219
- > **Note:** Configuration examples are also available in [`examples/mcp-configs/`](./examples/mcp-configs/).
259
+ > 📁 Ready-to-use configuration files are available in [`examples/mcp-configs/`](./examples/mcp-configs/).
220
260
 
221
261
  ---
222
262
 
223
- ## 🛠️ CLI & FinOps Telemetry (v1.3.0)
263
+ ## 🛠️ CLI & FinOps Telemetry (v1.3.1)
224
264
 
225
265
  ContextGuard includes a beautiful developer CLI with built-in token savings and financial ROI telemetry:
226
266
 
@@ -255,7 +295,7 @@ Customize thresholds and worker models via environment variables:
255
295
  | `CONTEXT_GUARD_MAX_LINES` | `300` | Maximum lines allowed for un-scoped direct reads |
256
296
  | `CONTEXT_GUARD_MAX_BYTES` | `25600` | Maximum file size in bytes (~25 KB) |
257
297
  | `CONTEXT_GUARD_PROVIDER` | `skeleton` | Worker mode: `skeleton` (Tier 0 AST), `gemini`, `ollama`, or `openai` |
258
- | `GEMINI_API_KEY` | - | API key for Gemini 2.5 Flash worker |
298
+ | `GEMINI_API_KEY` | - | API key for Gemini 3.8 Flash worker |
259
299
  | `GEMINI_MODEL` | `gemini-3.8-flash` | Gemini model name |
260
300
  | `OLLAMA_BASE_URL` | `http://localhost:11434` | Ollama local endpoint |
261
301
  | `OLLAMA_MODEL` | `qwen2.5-coder:7b` | Model to use in Ollama |
@@ -109,12 +109,12 @@ async function runHook() {
109
109
  rawTokens: finOps.rawTokens,
110
110
  guardedTokens: finOps.guardedTokens,
111
111
  tokensSaved: finOps.tokensSaved,
112
- dollarsSavedSonnet: finOps.dollarsSaved.claudeSonnet
112
+ dollarsSavedSonnet: finOps.dollarsSaved.claudeSonnet55
113
113
  });
114
114
  const feedbackMessage = [
115
115
  `🛡️ [CONTEXTGUARD: LECTURA REGULADA - PREVENCIÓN DE SATURACIÓN DE TOKENS]`,
116
116
  `El recurso "${path.basename(resolvedPath)}" contiene ${totalLines} líneas (~${(stat.size / 1024).toFixed(1)} KB).`,
117
- `📉 Tokens prevenidos: ~${finOps.tokensSaved.toLocaleString()} tokens (${finOps.percentageSaved}% ahorro | ~$${finOps.dollarsSaved.claudeSonnet} USD en Sonnet).`,
117
+ `📉 Tokens prevenidos: ~${finOps.tokensSaved.toLocaleString()} tokens (${finOps.percentageSaved}% ahorro | ~$${finOps.dollarsSaved.claudeSonnet55} USD en Claude Sonnet 5.5).`,
118
118
  `Para optimizar tu contexto y prevenir degradación de razonamiento, no se ha cargado el archivo completo en la ventana principal.`,
119
119
  ``,
120
120
  `📋 ESQUELETO ESTRUCTURAL Y FIRMAS (Con índices de línea):`,
@@ -1 +1 @@
1
- {"version":3,"file":"claude-hook.js","sourceRoot":"","sources":["../../bin/claude-hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-hook.js","sourceRoot":"","sources":["../../bin/claude-hook.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,11 @@ import fs from 'node:fs';
4
4
  import { processWithContextGuard } from '../src/index.js';
5
5
  import { extractCodeSkeleton } from '../src/skeletonizer.js';
6
6
  import { getAggregatedStats, resetMetrics, calculateFinOps } from '../src/token-metrics.js';
7
- // ─── ANSI Colors & Terminal Formatting (Zero-Dependencies) ────────────────────
7
+ // ─── Minimal ANSI Formatting (Clean, Terminal-Agnostic) ───────────────────────
8
8
  const c = {
9
9
  reset: '\x1b[0m',
10
10
  bold: '\x1b[1m',
11
11
  dim: '\x1b[2m',
12
- italic: '\x1b[3m',
13
- underline: '\x1b[4m',
14
12
  // Colors
15
13
  red: '\x1b[31m',
16
14
  green: '\x1b[32m',
@@ -19,13 +17,9 @@ const c = {
19
17
  magenta: '\x1b[35m',
20
18
  cyan: '\x1b[36m',
21
19
  white: '\x1b[37m',
22
- gray: '\x1b[90m',
23
- // Backgrounds
24
- bgBlue: '\x1b[44m',
25
- bgGreen: '\x1b[42m',
26
- bgRed: '\x1b[41m'
20
+ gray: '\x1b[90m'
27
21
  };
28
- const VERSION = '1.3.0';
22
+ const VERSION = '1.3.1';
29
23
  // ─── Help Menu ────────────────────────────────────────────────────────────────
30
24
  function printHelp() {
31
25
  console.log(`
@@ -33,13 +27,13 @@ function printHelp() {
33
27
  ${c.dim}Intelligent Context Admission Control & FinOps Optimization${c.reset}
34
28
 
35
29
  ${c.bold}USAGE${c.reset}
36
- ${c.green}$ context-guard${c.reset} <file-path> [options]
37
- ${c.green}$ context-guard stats${c.reset} [path] [options]
30
+ ${c.green}context-guard${c.reset} <file-path> [options]
31
+ ${c.green}context-guard stats${c.reset} [path] [options]
38
32
 
39
33
  ${c.bold}COMMANDS${c.reset}
40
- ${c.cyan}stats${c.reset} [dir] ${c.white}Muestra la telemetría acumulada o audita un directorio${c.reset}
41
- ${c.cyan}stats --watch${c.reset} ${c.white}Monitor interactivo de consumo y ahorro en tiempo real${c.reset}
42
- ${c.cyan}stats --reset${c.reset} ${c.white}Reinicia el historial de métricas locales${c.reset}
34
+ ${c.cyan}stats${c.reset} [dir] Muestra la telemetría acumulada o audita un directorio
35
+ ${c.cyan}stats --watch${c.reset} Monitor interactivo de consumo y ahorro en tiempo real
36
+ ${c.cyan}stats --reset${c.reset} Reinicia el historial de métricas locales
43
37
 
44
38
  ${c.bold}OPTIONS${c.reset}
45
39
  ${c.yellow}-q, --query <text>${c.reset} Filtro semántico para el modelo worker (Gemini/Ollama)
@@ -52,26 +46,26 @@ function printHelp() {
52
46
 
53
47
  ${c.bold}EXAMPLES${c.reset}
54
48
  ${c.dim}# Inspecciona un archivo con protección automática (>300 líneas)${c.reset}
55
- ${c.cyan}context-guard${c.reset} src/large-service.ts
49
+ context-guard src/large-service.ts
56
50
 
57
51
  ${c.dim}# Lee un rango acotado sin aplicar el guard${c.reset}
58
- ${c.cyan}context-guard${c.reset} src/large-service.ts --start 120 --end 160
52
+ context-guard src/large-service.ts --start 120 --end 160
59
53
 
60
54
  ${c.dim}# Consulta el ahorro histórico de tokens y dinero${c.reset}
61
- ${c.cyan}context-guard stats${c.reset}
55
+ context-guard stats
62
56
 
63
57
  ${c.dim}# Audita el potencial de ahorro de un directorio completo${c.reset}
64
- ${c.cyan}context-guard stats${c.reset} src/
58
+ context-guard stats src/
65
59
 
66
60
  ${c.dim}# Monitor en tiempo real mientras usas Claude Code o Cursor${c.reset}
67
- ${c.cyan}context-guard stats --watch${c.reset}
61
+ context-guard stats --watch
68
62
  `);
69
63
  }
70
- // ─── Directory Auditor (Option B) ─────────────────────────────────────────────
64
+ // ─── Directory Auditor ────────────────────────────────────────────────────────
71
65
  function auditDirectory(targetDir) {
72
66
  const resolved = path.resolve(process.cwd(), targetDir);
73
67
  if (!fs.existsSync(resolved)) {
74
- console.error(`${c.red}✖ Error:${c.reset} El directorio no existe: ${targetDir}`);
68
+ console.error(`\n ${c.red}✖ Error:${c.reset} El directorio no existe: ${targetDir}\n`);
75
69
  process.exit(1);
76
70
  }
77
71
  const IGNORED = new Set(['node_modules', '.git', 'dist', 'build', '.next', '.turbo', 'coverage']);
@@ -119,61 +113,61 @@ function auditDirectory(targetDir) {
119
113
  }
120
114
  const tokensSaved = Math.max(0, totalRawTokens - totalGuardedTokens);
121
115
  const pctSaved = totalRawTokens > 0 ? ((tokensSaved / totalRawTokens) * 100).toFixed(1) : '0';
122
- const opusDollars = ((tokensSaved / 1_000_000) * 15.00).toFixed(2);
123
- const sonnetDollars = ((tokensSaved / 1_000_000) * 3.00).toFixed(2);
116
+ const opusDollars = ((tokensSaved / 1_000_000) * 4.00).toFixed(2);
117
+ const sonnetDollars = ((tokensSaved / 1_000_000) * 2.00).toFixed(2);
118
+ const gpt6Dollars = ((tokensSaved / 1_000_000) * 10.00).toFixed(2);
124
119
  console.log(`
125
- ${c.cyan}🔍 ${c.bold}Auditoría de Código y FinOps: ${c.white}${path.relative(process.cwd(), resolved) || '.'}${c.reset}
126
- ${c.gray}Analizados ${filesToAudit.length} archivos fuente (${largeFilesCount} archivos superan las 300 líneas)${c.reset}
120
+ ${c.cyan}🔍 ${c.bold}Auditoría FinOps:${c.reset} ${c.white}${path.relative(process.cwd(), resolved) || '.'}${c.reset}
121
+ ${c.dim}${filesToAudit.length} archivos fuente analizados (${largeFilesCount} superan el umbral de 300 líneas)${c.reset}
127
122
 
128
- ${c.bold}┌─────────────────────────────────────────────────────────────────┐${c.reset}
129
- │ ${c.yellow}Escenario de Lectura Cruda:${c.reset} ~${totalRawTokens.toLocaleString().padStart(8)} tokens │
130
- │ ${c.green}Con ContextGuard (AST):${c.reset} ~${totalGuardedTokens.toLocaleString().padStart(8)} tokens │
131
- │ │
132
- │ ${c.bold}${c.green}📉 Ahorro potencial:${c.reset} ${c.bold}~${tokensSaved.toLocaleString()}${c.reset} tokens (${c.bold}${pctSaved}%${c.reset} reducción) │
133
- │ │
134
- │ ${c.bold}💰 Estimación de Ahorro en Dólares:${c.reset} │
135
- │ • Claude Opus 4/5: ${c.green}$${opusDollars} USD${c.reset} │
136
- │ • Claude Sonnet 4: ${c.green}$${sonnetDollars} USD${c.reset} │
137
- ${c.bold}└─────────────────────────────────────────────────────────────────┘${c.reset}
138
- `);
123
+ ${c.bold}Consumo de Tokens:${c.reset}
124
+ ${c.gray}•${c.reset} Lectura Cruda: ${c.yellow}~${totalRawTokens.toLocaleString()} tokens${c.reset}
125
+ ${c.gray}•${c.reset} Con ContextGuard: ${c.green}~${totalGuardedTokens.toLocaleString()} tokens${c.reset}
126
+ ${c.gray}•${c.reset} ${c.bold}Ahorro Neto:${c.reset} ${c.green}${c.bold}~${tokensSaved.toLocaleString()} tokens (${pctSaved}% reducción)${c.reset}
127
+
128
+ ${c.bold}Ahorro Estimado en Dólares:${c.reset}
129
+ ${c.gray}•${c.reset} Claude Opus 5.5: ${c.green}$${opusDollars} USD${c.reset}
130
+ ${c.gray}•${c.reset} Claude Sonnet 5.5: ${c.green}$${sonnetDollars} USD${c.reset}
131
+ ${c.gray}•${c.reset} GPT-6 Astra: ${c.green}$${gpt6Dollars} USD${c.reset}
132
+ `);
139
133
  }
140
- // ─── Real-Time Live Watcher (Real-time telemetry) ─────────────────────────────
134
+ // ─── Real-Time Live Watcher ───────────────────────────────────────────────────
141
135
  function runRealtimeWatch() {
142
136
  // Clear screen
143
137
  process.stdout.write('\x1b[2J\x1b[0;0H');
144
138
  const render = () => {
145
- process.stdout.write('\x1b[0;0H'); // cursor to home
139
+ process.stdout.write('\x1b[0;0H'); // cursor to top-left
146
140
  const stats = getAggregatedStats();
147
141
  const time = new Date().toLocaleTimeString();
148
142
  console.log(`
149
143
  ${c.cyan}🛡️ ${c.bold}ContextGuard Live Telemetry Monitor${c.reset} ${c.gray}[${time}]${c.reset}
150
144
  ${c.dim}Escuchando intercepciones activas de Claude Code, Cursor y MCP...${c.reset}
151
145
 
152
- ${c.bold}┌── 📊 Métricas Globales Acumuladas ─────────────────────────────┐${c.reset}
153
- │ Archivos Regulados: ${c.bold}${c.cyan}${stats.totalInterceptions.toString().padEnd(10)}${c.reset} │
154
- │ Tokens Crudos Evitados: ${c.bold}${c.yellow}${stats.totalRawTokens.toLocaleString().padEnd(12)}${c.reset} │
155
- │ Tokens AST Inyectados: ${c.bold}${c.white}${stats.totalGuardedTokens.toLocaleString().padEnd(12)}${c.reset} │
156
- │ ${c.green}${c.bold}Tokens Netos Ahorrados:${c.reset} ${c.bold}${c.green}${stats.totalTokensSaved.toLocaleString().padEnd(12)}${c.reset} │
157
- │ │
158
- │ ${c.bold}💰 Retorno de Inversión (ROI Estimado):${c.reset} │
159
- │ • Claude Opus 4/5: ${c.bold}${c.green}$${stats.totalDollarsSavedOpus.toFixed(2)} USD${c.reset} │
160
- │ • Claude Sonnet 4: ${c.bold}${c.green}$${stats.totalDollarsSavedSonnet.toFixed(2)} USD${c.reset} │
161
- │ • GPT-4o / Astra: ${c.bold}${c.green}$${stats.totalDollarsSavedGpt4o.toFixed(2)} USD${c.reset} │
162
- ${c.bold}└── 📋 Últimos Eventos Registrados ───────────────────────────────┘${c.reset}
163
- `);
146
+ ${c.bold}Balance de Tokens:${c.reset}
147
+ ${c.gray}•${c.reset} Archivos regulados: ${c.cyan}${stats.totalInterceptions}${c.reset}
148
+ ${c.gray}•${c.reset} Tokens crudos evitados: ${c.yellow}~${stats.totalRawTokens.toLocaleString()}${c.reset}
149
+ ${c.gray}•${c.reset} Tokens AST inyectados: ${c.white}~${stats.totalGuardedTokens.toLocaleString()}${c.reset}
150
+ ${c.gray}•${c.reset} ${c.bold}Tokens netos ahorrados:${c.reset} ${c.green}${c.bold}~${stats.totalTokensSaved.toLocaleString()}${c.reset}
151
+
152
+ ${c.bold}Retorno de Inversión (ROI):${c.reset}
153
+ ${c.gray}•${c.reset} Claude Opus 5.5: ${c.green}$${stats.totalDollarsSavedOpus.toFixed(2)} USD${c.reset}
154
+ ${c.gray}•${c.reset} Claude Sonnet 5.5: ${c.green}$${stats.totalDollarsSavedSonnet.toFixed(2)} USD${c.reset}
155
+ ${c.gray}•${c.reset} GPT-6 Astra: ${c.green}$${stats.totalDollarsSavedGpt6.toFixed(2)} USD${c.reset}
156
+
157
+ ${c.bold}Últimos Eventos:${c.reset}`);
164
158
  const recent = stats.events.slice(-6).reverse();
165
159
  if (recent.length === 0) {
166
- console.log(` ${c.dim}Aún no hay eventos registrados. Usa Claude Code o el CLI para ver tráfico.${c.reset}\n`);
160
+ console.log(` ${c.dim}(Sin eventos recientes. Usa Claude Code o el CLI para registrar tráfico)${c.reset}\n`);
167
161
  }
168
162
  else {
169
163
  for (const ev of recent) {
170
164
  const badge = ev.source === 'hook' ? `${c.magenta}[HOOK]${c.reset}` : `${c.blue}[CLI]${c.reset} `;
171
165
  const fName = ev.filePath.length > 28 ? '...' + ev.filePath.slice(-25) : ev.filePath.padEnd(28);
172
- console.log(` ${c.dim}${ev.timestamp.slice(11, 19)}${c.reset} ${badge} ${c.white}${fName}${c.reset} 📉 ${c.green}+${ev.tokensSaved.toLocaleString()} tokens${c.reset} ${c.gray}(~$${ev.dollarsSavedSonnet})${c.reset}`);
166
+ console.log(` ${c.dim}${ev.timestamp.slice(11, 19)}${c.reset} ${badge} ${c.white}${fName}${c.reset} ${c.green}+${ev.tokensSaved.toLocaleString()} tokens${c.reset} ${c.gray}(~$${ev.dollarsSavedSonnet})${c.reset}`);
173
167
  }
174
168
  console.log('');
175
169
  }
176
- console.log(` ${c.gray}Presiona Ctrl+C para salir.${c.reset}`);
170
+ console.log(` ${c.dim}Presiona Ctrl+C para salir.${c.reset}`);
177
171
  };
178
172
  render();
179
173
  const interval = setInterval(render, 1000);
@@ -206,50 +200,45 @@ function printStats(args) {
206
200
  return;
207
201
  }
208
202
  console.log(`
209
- ${c.cyan}🛡️ ${c.bold}ContextGuard — Resumen FinOps & Telemetría${c.reset}
210
- ${c.gray}Métricas calculadas en base a intercepciones en tu máquina${c.reset}
203
+ ${c.cyan}🛡️ ${c.bold}ContextGuard — Resumen FinOps${c.reset}
204
+ ${c.dim}Telemetría de intercepciones registradas en este equipo${c.reset}
205
+
206
+ ${c.bold}Balance de Tokens:${c.reset}
207
+ ${c.gray}•${c.reset} Archivos regulados: ${c.cyan}${stats.totalInterceptions}${c.reset}
208
+ ${c.gray}•${c.reset} Tokens crudos evitados: ${c.yellow}~${stats.totalRawTokens.toLocaleString()}${c.reset}
209
+ ${c.gray}•${c.reset} Tokens AST inyectados: ${c.white}~${stats.totalGuardedTokens.toLocaleString()}${c.reset}
210
+ ${c.gray}•${c.reset} ${c.bold}Tokens netos ahorrados:${c.reset} ${c.green}${c.bold}~${stats.totalTokensSaved.toLocaleString()}${c.reset}
211
211
 
212
- ${c.bold}┌── 📈 Balance de Tokens ─────────────────────────────────────────┐${c.reset}
213
- │ Intercepciones totales: ${c.bold}${c.cyan}${stats.totalInterceptions.toString().padEnd(10)}${c.reset} │
214
- │ Tokens crudos solicitados: ${c.bold}${c.yellow}${stats.totalRawTokens.toLocaleString().padEnd(12)}${c.reset} │
215
- │ Tokens procesados (AST): ${c.bold}${c.white}${stats.totalGuardedTokens.toLocaleString().padEnd(12)}${c.reset} │
216
- │ ${c.green}${c.bold}Tokens netos ahorrados:${c.reset} ${c.bold}${c.green}${stats.totalTokensSaved.toLocaleString().padEnd(12)}${c.reset} │
217
- │ │
218
- │ ${c.bold}💰 Ahorro Estimado en Dólares:${c.reset} │
219
- │ • Claude Opus 4/5: ${c.bold}${c.green}$${stats.totalDollarsSavedOpus.toFixed(2)} USD${c.reset} │
220
- │ • Claude Sonnet 4: ${c.bold}${c.green}$${stats.totalDollarsSavedSonnet.toFixed(2)} USD${c.reset} │
221
- │ • GPT-4o / Astra: ${c.bold}${c.green}$${stats.totalDollarsSavedGpt4o.toFixed(2)} USD${c.reset} │
222
- ${c.bold}└─────────────────────────────────────────────────────────────────┘${c.reset}
212
+ ${c.bold}Ahorro Estimado en Dólares:${c.reset}
213
+ ${c.gray}•${c.reset} Claude Opus 5.5: ${c.green}$${stats.totalDollarsSavedOpus.toFixed(2)} USD${c.reset}
214
+ ${c.gray}•${c.reset} Claude Sonnet 5.5: ${c.green}$${stats.totalDollarsSavedSonnet.toFixed(2)} USD${c.reset}
215
+ ${c.gray}•${c.reset} GPT-6 Astra: ${c.green}$${stats.totalDollarsSavedGpt6.toFixed(2)} USD${c.reset}
223
216
 
224
- ${c.dim}👉 Corre "context-guard stats --watch" para ver el flujo en tiempo real.${c.reset}
225
- ${c.dim}👉 Corre "context-guard stats <directorio>" para auditar un proyecto.${c.reset}
217
+ ${c.dim}💡 Corre "context-guard stats --watch" para ver el monitor en vivo.${c.reset}
218
+ ${c.dim}💡 Corre "context-guard stats <directorio>" para auditar una carpeta.${c.reset}
226
219
  `);
227
220
  }
228
221
  // ─── Single File Execution Card ───────────────────────────────────────────────
229
222
  function printExecutionCard(filePath, result) {
230
- const statusColor = {
231
- PASSTHROUGH_FULL: `${c.green}✅ PASSTHROUGH (Directo)${c.reset}`,
232
- PASSTHROUGH_SLICE: `${c.green}✅ SLICE (Rango acotado)${c.reset}`,
233
- SHUNTED_LOCAL_AST: `${c.cyan}🛡️ SHUNTED (Esqueleto AST Tier 0)${c.reset}`,
234
- SHUNTED_WORKER_MODEL: `${c.magenta}🤖 WORKER (Resumen ligero)${c.reset}`,
235
- BLOCKED_BINARY: `${c.red}🛑 BLOCKED (Archivo Binario)${c.reset}`,
236
- BLOCKED_LOCKFILE: `${c.red}🛑 BLOCKED (Lockfile masivo)${c.reset}`,
237
- BLOCKED_MINIFIED: `${c.red}🛑 BLOCKED (Código Minificado)${c.reset}`,
238
- ERROR: `${c.red}✖ ERROR${c.reset}`
223
+ const statusLabels = {
224
+ PASSTHROUGH_FULL: `${c.green}PASSTHROUGH (Directo)${c.reset}`,
225
+ PASSTHROUGH_SLICE: `${c.green}SLICE (Rango acotado)${c.reset}`,
226
+ SHUNTED_LOCAL_AST: `${c.cyan}SHUNTED (Esqueleto AST Tier 0)${c.reset}`,
227
+ SHUNTED_WORKER_MODEL: `${c.magenta}WORKER (Resumen ligero)${c.reset}`,
228
+ BLOCKED_BINARY: `${c.red}BLOCKED (Archivo Binario)${c.reset}`,
229
+ BLOCKED_LOCKFILE: `${c.red}BLOCKED (Lockfile)${c.reset}`,
230
+ BLOCKED_MINIFIED: `${c.red}BLOCKED (Minificado)${c.reset}`,
231
+ ERROR: `${c.red}ERROR${c.reset}`
239
232
  };
240
- const badge = statusColor[result.status] || result.status;
233
+ const label = statusLabels[result.status] || result.status;
241
234
  const fileName = path.basename(filePath);
242
235
  const m = result.metrics;
243
236
  console.log(`
244
- ${c.bold}┌── 🛡️ ContextGuard ──────────────────────────────────────────────┐${c.reset}
245
- │ ${c.bold}Archivo:${c.reset} ${c.white}${fileName.padEnd(46)}${c.reset}│
246
- │ ${c.bold}Estado:${c.reset} ${badge.padEnd(55)}│
247
- │ ${c.bold}Líneas:${c.reset} ${(result.totalLines ? `${result.totalLines} líneas (~${((result.sizeBytes || 0) / 1024).toFixed(1)} KB)` : 'N/A').padEnd(46)}│`);
237
+ ${c.cyan}🛡️ ${c.bold}${fileName}${c.reset} ${c.gray}•${c.reset} ${label} ${c.gray}•${c.reset} ${result.totalLines ? `${result.totalLines} líneas (~${((result.sizeBytes || 0) / 1024).toFixed(1)} KB)` : ''}`);
248
238
  if (m && m.tokensSaved > 0) {
249
- console.log(` │ ${c.bold}Ahorro:${c.reset} ${c.green}${c.bold}-${m.tokensSaved.toLocaleString()} tokens (-${m.percentageSaved}%)${c.reset} ${c.gray}(~$${m.dollarsSaved.claudeSonnet} en Sonnet)${c.reset} │`);
239
+ console.log(` ${c.green}📉 Ahorro:${c.reset} ${c.bold}-${m.tokensSaved.toLocaleString()} tokens (-${m.percentageSaved}%)${c.reset} ${c.gray}(~$${m.dollarsSaved.claudeSonnet55} USD en Claude Sonnet 5.5)${c.reset}`);
250
240
  }
251
- console.log(` ${c.bold}└─────────────────────────────────────────────────────────────────┘${c.reset}
252
- `);
241
+ console.log('');
253
242
  }
254
243
  // ─── CLI Entrypoint ───────────────────────────────────────────────────────────
255
244
  async function runCli() {
@@ -297,7 +286,7 @@ async function runCli() {
297
286
  }
298
287
  else {
299
288
  if (result.error) {
300
- console.error(`${c.red}✖ [ContextGuard Error]${c.reset} ${result.error}`);
289
+ console.error(`\n ${c.red}✖ [ContextGuard Error]${c.reset} ${result.error}\n`);
301
290
  process.exit(1);
302
291
  }
303
292
  printExecutionCard(filePath, result);
@@ -1 +1 @@
1
- {"version":3,"file":"context-guard.js","sourceRoot":"","sources":["../../bin/context-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-guard.js","sourceRoot":"","sources":["../../bin/context-guard.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ import { extractCodeSkeleton, isSupportedExtension } from '../src/skeletonizer.j
24
24
  import { spawnSync } from 'node:child_process';
25
25
  // ─── Constants ────────────────────────────────────────────────────────────────
26
26
  const SERVER_NAME = 'context-guard';
27
- const SERVER_VERSION = '1.2.0';
27
+ const SERVER_VERSION = '1.3.1';
28
28
  // Native Claude Code / multimodal formats — allow full passthrough
29
29
  const NATIVE_MEDIA_EXTS = new Set([
30
30
  '.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.ico', '.bmp', '.avif',
package/dist/src/index.js CHANGED
@@ -38,7 +38,7 @@ export async function processWithContextGuard(options) {
38
38
  rawTokens: metrics.rawTokens,
39
39
  guardedTokens: metrics.guardedTokens,
40
40
  tokensSaved: metrics.tokensSaved,
41
- dollarsSavedSonnet: metrics.dollarsSaved.claudeSonnet
41
+ dollarsSavedSonnet: metrics.dollarsSaved.claudeSonnet55
42
42
  });
43
43
  }
44
44
  return res;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,9 @@ export interface TokenComparison {
6
6
  tokensSaved: number;
7
7
  percentageSaved: number;
8
8
  dollarsSaved: {
9
- claudeOpus: number;
10
- claudeSonnet: number;
11
- gpt4o: number;
9
+ claudeOpus55: number;
10
+ claudeSonnet55: number;
11
+ gpt6Astra: number;
12
12
  };
13
13
  }
14
14
  export interface MetricEvent {
@@ -28,7 +28,7 @@ export interface AggregatedStats {
28
28
  totalTokensSaved: number;
29
29
  totalDollarsSavedOpus: number;
30
30
  totalDollarsSavedSonnet: number;
31
- totalDollarsSavedGpt4o: number;
31
+ totalDollarsSavedGpt6: number;
32
32
  events: MetricEvent[];
33
33
  }
34
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"token-metrics.d.ts","sourceRoot":"","sources":["../../src/token-metrics.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,CA4BrF;AAcD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,IAAI,CAyB7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CA8BpD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAOnC"}
1
+ {"version":3,"file":"token-metrics.d.ts","sourceRoot":"","sources":["../../src/token-metrics.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,CA4BrF;AAiBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,IAAI,CAyB7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CA8BpD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAOnC"}
@@ -31,10 +31,10 @@ export function calculateFinOps(rawText, guardedText) {
31
31
  const guardedTokens = estimateTokens(guardedText);
32
32
  const tokensSaved = Math.max(0, rawTokens - guardedTokens);
33
33
  const percentageSaved = rawTokens > 0 ? (tokensSaved / rawTokens) * 100 : 0;
34
- // Pricing per 1M input tokens
35
- const OPUS_PRICE_PER_M = 15.00;
36
- const SONNET_PRICE_PER_M = 3.00;
37
- const GPT4O_PRICE_PER_M = 2.50;
34
+ // Pricing per 1M input tokens (Anthropic & OpenAI official docs)
35
+ const OPUS55_PRICE_PER_M = 4.00;
36
+ const SONNET55_PRICE_PER_M = 2.00;
37
+ const GPT6_PRICE_PER_M = 10.00;
38
38
  return {
39
39
  rawBytes,
40
40
  rawTokens,
@@ -43,14 +43,17 @@ export function calculateFinOps(rawText, guardedText) {
43
43
  tokensSaved,
44
44
  percentageSaved: parseFloat(percentageSaved.toFixed(1)),
45
45
  dollarsSaved: {
46
- claudeOpus: parseFloat(((tokensSaved / 1_000_000) * OPUS_PRICE_PER_M).toFixed(4)),
47
- claudeSonnet: parseFloat(((tokensSaved / 1_000_000) * SONNET_PRICE_PER_M).toFixed(4)),
48
- gpt4o: parseFloat(((tokensSaved / 1_000_000) * GPT4O_PRICE_PER_M).toFixed(4))
46
+ claudeOpus55: parseFloat(((tokensSaved / 1_000_000) * OPUS55_PRICE_PER_M).toFixed(4)),
47
+ claudeSonnet55: parseFloat(((tokensSaved / 1_000_000) * SONNET55_PRICE_PER_M).toFixed(4)),
48
+ gpt6Astra: parseFloat(((tokensSaved / 1_000_000) * GPT6_PRICE_PER_M).toFixed(4))
49
49
  }
50
50
  };
51
51
  }
52
52
  // ─── Persistent Metrics Store (~/.contextguard/metrics.json) ──────────────────
53
53
  function getMetricsFilePath() {
54
+ if (process.env.CONTEXT_GUARD_METRICS_FILE) {
55
+ return process.env.CONTEXT_GUARD_METRICS_FILE;
56
+ }
54
57
  const dir = path.join(os.homedir(), '.contextguard');
55
58
  if (!fs.existsSync(dir)) {
56
59
  try {
@@ -114,9 +117,9 @@ export function getAggregatedStats() {
114
117
  totalRawTokens,
115
118
  totalGuardedTokens,
116
119
  totalTokensSaved,
117
- totalDollarsSavedOpus: parseFloat(((totalTokensSaved / 1_000_000) * 15.00).toFixed(2)),
118
- totalDollarsSavedSonnet: parseFloat(((totalTokensSaved / 1_000_000) * 3.00).toFixed(2)),
119
- totalDollarsSavedGpt4o: parseFloat(((totalTokensSaved / 1_000_000) * 2.50).toFixed(2)),
120
+ totalDollarsSavedOpus: parseFloat(((totalTokensSaved / 1_000_000) * 4.00).toFixed(2)),
121
+ totalDollarsSavedSonnet: parseFloat(((totalTokensSaved / 1_000_000) * 2.00).toFixed(2)),
122
+ totalDollarsSavedGpt6: parseFloat(((totalTokensSaved / 1_000_000) * 10.00).toFixed(2)),
120
123
  events
121
124
  };
122
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token-metrics.js","sourceRoot":"","sources":["../../src/token-metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-metrics.js","sourceRoot":"","sources":["../../src/token-metrics.ts"],"names":[],"mappings":"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"}
@@ -89,7 +89,7 @@ describe('ContextGuard MCP Server (Phase 2)', () => {
89
89
  assert.ok(result.serverInfo, 'Must include serverInfo');
90
90
  const info = result.serverInfo;
91
91
  assert.strictEqual(info.name, 'context-guard');
92
- assert.strictEqual(info.version, '1.2.0');
92
+ assert.strictEqual(info.version, '1.3.1');
93
93
  });
94
94
  it('should list exactly 3 registered tools', async () => {
95
95
  const res = await sendRequest(proc, req('tools/list'));
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Token Metrics and FinOps Unit Tests
3
3
  */
4
+ import fs from 'node:fs';
5
+ import os from 'node:os';
6
+ import path from 'node:path';
4
7
  import { describe, it } from 'node:test';
5
8
  import assert from 'node:assert';
6
9
  import { estimateTokens, calculateFinOps, getAggregatedStats, resetMetrics, recordMetricEvent } from '../src/token-metrics.js';
@@ -18,24 +21,38 @@ describe('Token Metrics & FinOps (Fase 5 Preview)', () => {
18
21
  const fin = calculateFinOps(rawContent, skeletonContent);
19
22
  assert.ok(fin.tokensSaved > 0, 'Must have saved tokens');
20
23
  assert.ok(fin.percentageSaved > 80, `Expected >80% savings, got ${fin.percentageSaved}%`);
21
- assert.ok(fin.dollarsSaved.claudeSonnet >= 0);
22
- assert.ok(fin.dollarsSaved.claudeOpus >= 0);
24
+ assert.ok(fin.dollarsSaved.claudeSonnet55 >= 0);
25
+ assert.ok(fin.dollarsSaved.claudeOpus55 >= 0);
26
+ assert.ok(fin.dollarsSaved.gpt6Astra >= 0);
23
27
  });
24
28
  it('should record metric events and aggregate stats', () => {
25
- resetMetrics();
26
- recordMetricEvent({
27
- source: 'cli',
28
- filePath: 'test.ts',
29
- action: 'SHUNTED_LOCAL_AST',
30
- rawTokens: 1000,
31
- guardedTokens: 100,
32
- tokensSaved: 900,
33
- dollarsSavedSonnet: 0.0027
34
- });
35
- const stats = getAggregatedStats();
36
- assert.strictEqual(stats.totalInterceptions, 1);
37
- assert.strictEqual(stats.totalTokensSaved, 900);
38
- assert.ok(stats.events.length === 1);
29
+ const testMetricsFile = path.join(os.tmpdir(), `cg-metrics-test-${Date.now()}-${Math.random().toString(36).slice(2)}.json`);
30
+ process.env.CONTEXT_GUARD_METRICS_FILE = testMetricsFile;
31
+ try {
32
+ resetMetrics();
33
+ recordMetricEvent({
34
+ source: 'cli',
35
+ filePath: 'test.ts',
36
+ action: 'SHUNTED_LOCAL_AST',
37
+ rawTokens: 1000,
38
+ guardedTokens: 100,
39
+ tokensSaved: 900,
40
+ dollarsSavedSonnet: 0.0027
41
+ });
42
+ const stats = getAggregatedStats();
43
+ assert.strictEqual(stats.totalInterceptions, 1);
44
+ assert.strictEqual(stats.totalTokensSaved, 900);
45
+ assert.ok(stats.events.length === 1);
46
+ }
47
+ finally {
48
+ delete process.env.CONTEXT_GUARD_METRICS_FILE;
49
+ if (fs.existsSync(testMetricsFile)) {
50
+ try {
51
+ fs.unlinkSync(testMetricsFile);
52
+ }
53
+ catch { }
54
+ }
55
+ }
39
56
  });
40
57
  });
41
58
  //# sourceMappingURL=token-metrics.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-metrics.test.js","sourceRoot":"","sources":["../../tests/token-metrics.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE/H,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE7B,MAAM,SAAS,GAAG,6DAA6D,CAAC;QAChF,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,wCAAwC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QACrD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;QAExD,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACzD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACzD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,GAAG,EAAE,EAAE,8BAA8B,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC;QAC1F,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,YAAY,EAAE,CAAC;QAEf,iBAAiB,CAAC;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,mBAAmB;YAC3B,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,GAAG;YAClB,WAAW,EAAE,GAAG;YAChB,kBAAkB,EAAE,MAAM;SAC3B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;QACnC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"token-metrics.test.js","sourceRoot":"","sources":["../../tests/token-metrics.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevinbermudezc/context-guard",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Intelligent context admission control and token optimization for Claude Code, Cursor, Windsurf, Antigravity, and Agentic AI workflows.",
5
5
  "publishConfig": {
6
6
  "access": "public"