@kevinbermudezc/context-guard 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -260,11 +260,49 @@ Add to your respective MCP configuration file:
260
260
 
261
261
  ---
262
262
 
263
- ## 🛠️ CLI & FinOps Telemetry (v1.4.0)
263
+ ## 🤖 Native Agent Adapters & Automatic Setup (Phase 3)
264
+
265
+ ContextGuard is natively compatible with **Google Antigravity (AGY)**, **Cursor**, and **Claude Code**. Instead of manually configuring JSON files, you can initialize your workspace with a single command:
266
+
267
+ ```bash
268
+ # Auto-detects and provisions rules, skills, and MCP for ALL agents
269
+ npx @kevinbermudezc/context-guard init
270
+
271
+ # Or target a specific coding environment:
272
+ npx @kevinbermudezc/context-guard init cursor
273
+ npx @kevinbermudezc/context-guard init antigravity
274
+ npx @kevinbermudezc/context-guard init claude
275
+ ```
276
+
277
+ ### 1. 🪁 Google Antigravity (AGY) Integration
278
+ When running `context-guard init antigravity` (or configuring manually):
279
+ - **Project Rule (`.agents/rules/context-guard.md`)**: Instructs Antigravity agents to never dump large files (>300 lines) and prioritize `inspect_outline` and `read_file_safe`.
280
+ - **Custom Skill (`.agents/skills/context-guard/SKILL.md`)**: Activates progressive disclosure runbooks whenever the agent explores large components or unmapped codebases.
281
+ - **Lifecycle Interception Hook (`.agents/hooks.json`)**: Intercepts `view_file` calls using the native JSON protocol (`{ decision: "deny", reason: "..." }`) to block raw lockfiles or un-scoped reads.
282
+
283
+ ### 2. 🖱️ Cursor IDE Integration
284
+ When running `context-guard init cursor`:
285
+ - **Cursor Rule (`.cursor/rules/context-guard.mdc`)**: Configured with `alwaysApply: true` to prevent Composer from flooding its reasoning window with raw >300-line file dumps.
286
+ - **MCP Config (`.cursor/mcp.json`)**: Seamlessly connects Cursor Composer to `read_file_safe`, `inspect_outline`, and `grep_distilled`.
287
+
288
+ ### 3. 🤖 Claude Code Integration
289
+ When running `context-guard init claude`:
290
+ - **PreToolUse Hook (`.claude/settings.json`)**: Intercepts `Read`, `View`, and un-piped `Bash` commands (`cat file.ts`), returning `Exit Code 2` with an AST skeleton and line-tagged signatures in `stderr`.
291
+
292
+ ---
293
+
294
+ ## 🛠️ CLI & FinOps Telemetry (v1.5.0)
264
295
 
265
296
  ContextGuard includes a beautiful developer CLI with built-in token savings, financial ROI telemetry, and privacy controls:
266
297
 
267
298
  ```bash
299
+ # Automatically configure rules and MCP for all agents in your repository
300
+ npx @kevinbermudezc/context-guard init
301
+
302
+ # Target specific agent (antigravity, cursor, or claude)
303
+ npx @kevinbermudezc/context-guard init cursor
304
+ npx @kevinbermudezc/context-guard init antigravity
305
+
268
306
  # View file through ContextGuard (shows FinOps savings card if shunted)
269
307
  npx @kevinbermudezc/context-guard src/large-service.ts
270
308
 
@@ -27,11 +27,33 @@ async function runHook() {
27
27
  catch {
28
28
  process.exit(0); // If stdin is not valid JSON, allow
29
29
  }
30
- const toolName = payload.tool_name || payload.name;
31
- const toolInput = payload.tool_input || payload.input || {};
30
+ // Support both Claude Code (tool_name / name) and Antigravity (toolCall.name)
31
+ const isAntigravity = Boolean(payload.toolCall);
32
+ const toolName = payload.toolCall ? payload.toolCall.name : (payload.tool_name || payload.name);
33
+ const toolInput = payload.toolCall ? (payload.toolCall.args || {}) : (payload.tool_input || payload.input || {});
34
+ // Helper function to respond correctly to either Claude Code or Antigravity
35
+ const respondAllow = () => {
36
+ if (isAntigravity) {
37
+ process.stdout.write(JSON.stringify({ decision: 'allow' }) + '\n');
38
+ }
39
+ process.exit(0);
40
+ };
41
+ const respondDeny = (message) => {
42
+ if (isAntigravity) {
43
+ process.stdout.write(JSON.stringify({
44
+ decision: 'deny',
45
+ reason: message
46
+ }) + '\n');
47
+ process.exit(0);
48
+ }
49
+ else {
50
+ process.stderr.write(message + '\n');
51
+ process.exit(2);
52
+ }
53
+ };
32
54
  let targetFilePath = null;
33
55
  let isScoped = false;
34
- // 1. Intercept "Read", "View" or other file reading tools in Claude Code
56
+ // 1. Intercept "Read", "View" or other file reading tools in Claude Code / Antigravity
35
57
  const isReadTool = ['Read', 'View', 'view_file', 'readFile', 'read_file'].includes(toolName || '');
36
58
  if (isReadTool) {
37
59
  const rawPath = toolInput.file_path || toolInput.path || toolInput.filePath || toolInput.AbsolutePath;
@@ -50,7 +72,7 @@ async function runHook() {
50
72
  const cmd = (toolInput.command || '').trim();
51
73
  // Allow piped/filtered commands (e.g. cat file | grep foo, or head -n 20)
52
74
  if (cmd.includes('|') || cmd.includes('>') || cmd.startsWith('head -n') || cmd.startsWith('tail -n')) {
53
- process.exit(0);
75
+ respondAllow();
54
76
  }
55
77
  const catMatch = cmd.match(/^(?:cat|less|more)\s+(["']?)([^"'\s]+)\1$/);
56
78
  if (catMatch) {
@@ -59,11 +81,12 @@ async function runHook() {
59
81
  }
60
82
  // If not a reading tool or already scoped, allow execution immediately
61
83
  if (!targetFilePath || isScoped) {
62
- process.exit(0); // Exit 0 = ALLOW
84
+ respondAllow();
63
85
  }
64
- const resolvedPath = path.resolve(process.cwd(), targetFilePath);
86
+ const filePath = targetFilePath;
87
+ const resolvedPath = path.resolve(process.cwd(), filePath);
65
88
  if (!fs.existsSync(resolvedPath) || fs.statSync(resolvedPath).isDirectory()) {
66
- process.exit(0);
89
+ respondAllow();
67
90
  }
68
91
  const ext = path.extname(resolvedPath).toLowerCase();
69
92
  // 3. Allow Claude Code native multimodal formats & notebooks (.png, .jpg, .pdf, .ipynb)
@@ -74,7 +97,7 @@ async function runHook() {
74
97
  '.ipynb'
75
98
  ]);
76
99
  if (CLAUDE_NATIVE_MEDIA_EXTENSIONS.has(ext)) {
77
- process.exit(0); // Exit 0 = ALLOW Claude native vision & viewer
100
+ respondAllow();
78
101
  }
79
102
  // 4. Check for Non-Multimodal Binaries, Lockfiles, and Minified files
80
103
  const classification = classifyFile(resolvedPath);
@@ -85,8 +108,7 @@ async function runHook() {
85
108
  ``,
86
109
  `👉 ${classification.recommendedAction}`
87
110
  ].join('\n');
88
- process.stderr.write(feedback + '\n');
89
- process.exit(2);
111
+ respondDeny(feedback);
90
112
  }
91
113
  const stat = fs.statSync(resolvedPath);
92
114
  const rawContent = fs.readFileSync(resolvedPath, 'utf-8');
@@ -94,7 +116,7 @@ async function runHook() {
94
116
  const totalLines = lines.length;
95
117
  // If within safety thresholds, allow direct read
96
118
  if (totalLines <= CONFIG.maxLines && stat.size <= CONFIG.maxBytes) {
97
- process.exit(0); // Exit 0 = ALLOW
119
+ respondAllow();
98
120
  }
99
121
  // ========================================================================
100
122
  // APPLY CONTEXTGUARD SHUNT (BLOCK AND EMIT SKELETON)
@@ -125,9 +147,8 @@ async function runHook() {
125
147
  `🎯 ACCIÓN RECOMENDADA:`,
126
148
  `Revisa las firmas anteriores y ejecuta la herramienta "Read" (o "View") especificando los parámetros "offset" y "limit" para inspeccionar únicamente la sección necesaria.`
127
149
  ].join('\n');
128
- // Emit to stderr and exit with code 2 to trigger a controlled block with system feedback in Claude Code
129
- process.stderr.write(feedbackMessage + '\n');
130
- process.exit(2);
150
+ // Emit controlled block with system feedback in Claude Code or Antigravity
151
+ respondDeny(feedbackMessage);
131
152
  }
132
153
  runHook().catch(() => process.exit(0));
133
154
  //# sourceMappingURL=claude-hook.js.map
@@ -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":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG7E,KAAK,UAAU,OAAO;IACpB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAY,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC;IACvD,CAAC;IAED,8EAA8E;IAC9E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAEjH,4EAA4E;IAC5E,MAAM,YAAY,GAAG,GAAU,EAAE;QAC/B,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,OAAe,EAAS,EAAE;QAC7C,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClC,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,OAAO;aAChB,CAAC,GAAG,IAAI,CAAC,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,uFAAuF;IACvF,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACnG,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC;QACtG,cAAc,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,uEAAuE;QACvE,IACE,SAAS,CAAC,MAAM,KAAK,SAAS;YAC9B,SAAS,CAAC,KAAK,KAAK,SAAS;YAC7B,SAAS,CAAC,SAAS,KAAK,SAAS;YACjC,SAAS,CAAC,OAAO,KAAK,SAAS;YAC/B,SAAS,CAAC,KAAK,KAAK,SAAS,EAC7B,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,0EAA0E;QAC1E,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrG,YAAY,EAAE,CAAC;QACjB,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACxE,IAAI,QAAQ,EAAE,CAAC;YACb,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,IAAI,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;QAChC,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAW,cAAe,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5E,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IAErD,wFAAwF;IACxF,6GAA6G;IAC7G,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;QACzE,MAAM;QACN,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,8BAA8B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,sEAAsE;IACtE,MAAM,cAAc,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,cAAc,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG;YACf,uCAAuC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG;YAC/E,cAAc,CAAC,MAAM;YACrB,EAAE;YACF,MAAM,cAAc,CAAC,iBAAiB,EAAE;SACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAEhC,iDAAiD;IACjD,IAAI,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClE,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,2EAA2E;IAC3E,qDAAqD;IACrD,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,UAAU,GAAG,EAAE,mCAAmC,CAAC;IAEzH,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,iBAAiB,CAAC;QAChB,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC;QACpD,MAAM,EAAE,mBAAmB;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,kBAAkB,EAAE,MAAM,CAAC,YAAY,CAAC,cAAc;KACvD,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG;QACtB,2EAA2E;QAC3E,eAAe,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,UAAU,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QACnH,0BAA0B,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,YAAY,MAAM,CAAC,eAAe,gBAAgB,MAAM,CAAC,YAAY,CAAC,cAAc,6BAA6B;QAC9K,kIAAkI;QAClI,EAAE;QACF,2DAA2D;QAC3D,kFAAkF;QAClF,OAAO;QACP,kFAAkF;QAClF,EAAE;QACF,wBAAwB;QACxB,4KAA4K;KAC7K,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,2EAA2E;IAC3E,WAAW,CAAC,eAAe,CAAC,CAAC;AAC/B,CAAC;AAED,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -5,6 +5,7 @@ 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
7
  import { isTelemetryEnabled, enableTelemetry, disableTelemetry, getAnonymousId } from '../src/telemetry.js';
8
+ import { getUpdateNotice } from '../src/update-notifier.js';
8
9
  import { VERSION } from '../src/version.js';
9
10
  // ─── Minimal ANSI Formatting (Clean, Terminal-Agnostic) ───────────────────────
10
11
  const c = {
@@ -33,6 +34,7 @@ function printHelp() {
33
34
  ${c.green}context-guard telemetry${c.reset} <status|enable|disable>
34
35
 
35
36
  ${c.bold}COMMANDS${c.reset}
37
+ ${c.cyan}init${c.reset} [agent] Configura ContextGuard automáticamente (antigravity, cursor, claude, all)
36
38
  ${c.cyan}stats${c.reset} [dir] Muestra la telemetría acumulada o audita un directorio
37
39
  ${c.cyan}stats --watch${c.reset} Monitor interactivo de consumo y ahorro en tiempo real
38
40
  ${c.cyan}stats --reset${c.reset} Reinicia el historial de métricas locales
@@ -226,6 +228,143 @@ function printStats(args) {
226
228
  ${c.dim}💡 Corre "context-guard stats <directorio>" para auditar una carpeta.${c.reset}
227
229
  `);
228
230
  }
231
+ // ─── Workspace Initializer (Phase 3 Native Adapters) ──────────────────────────
232
+ function initWorkspace(agentArg) {
233
+ const rootDir = process.cwd();
234
+ const agent = (agentArg || 'all').toLowerCase();
235
+ console.log(`
236
+ ${c.cyan}🛡️ ${c.bold}ContextGuard Workspace Initializer${c.reset}
237
+ ${c.dim}Configurando adaptadores y reglas nativas de ContextGuard...${c.reset}
238
+ `);
239
+ const configured = [];
240
+ // 1. Antigravity Adapter (.agents/rules/context-guard.md & .agents/skills/context-guard/SKILL.md)
241
+ if (['all', 'antigravity', 'agy'].includes(agent)) {
242
+ const agentsDir = path.join(rootDir, '.agents');
243
+ const rulesDir = path.join(agentsDir, 'rules');
244
+ const skillDir = path.join(agentsDir, 'skills', 'context-guard');
245
+ fs.mkdirSync(rulesDir, { recursive: true });
246
+ fs.mkdirSync(skillDir, { recursive: true });
247
+ const ruleContent = `# 🛡️ ContextGuard Project Rule for Google Antigravity (AGY)
248
+
249
+ You MUST follow these context admission control and token optimization rules:
250
+
251
+ ## 1. Context Admission Control
252
+ - **Do NOT read large files (>300 lines) into context unrestricted.**
253
+ - When \`read_file_safe\` is available via MCP:
254
+ - Use \`inspect_outline(file_path)\` to get a structural map of the file with line numbers \`[L#]\`.
255
+ - Use \`read_file_safe(file_path)\` which automatically returns an AST skeleton for files >300 lines.
256
+ - When inspecting implementations, read targeted line ranges:
257
+ \`read_file_safe(file_path, start_line=..., end_line=...)\` or \`view_file(AbsolutePath=..., StartLine=..., EndLine=...)\`.
258
+
259
+ ## 2. Lockfiles and Binaries
260
+ - **Never open lockfiles** (\`package-lock.json\`, \`pnpm-lock.yaml\`, \`yarn.lock\`, \`bun.lockb\`) or compiled/minified bundles (\`.min.js\`, \`.wasm\`, \`.pyc\`).
261
+ - Use command-line tools (\`pnpm why <pkg>\`, \`npm ls <pkg>\`, or read \`package.json\` directly) to check package dependencies.
262
+ `;
263
+ const skillContent = `---
264
+ name: context-guard
265
+ description: >-
266
+ Uses ContextGuard to inspect large files, outlines, and structural AST skeletons safely without blowing up the context window. Use whenever exploring unfamiliar files, large components (>300 lines), or auditing token consumption.
267
+ ---
268
+
269
+ # 🛡️ ContextGuard Skill for Antigravity
270
+
271
+ ContextGuard provides intelligent context admission control, reducing token usage by up to 90% when reading large source files.
272
+
273
+ ## Workflow:
274
+ 1. Inspect file outline first: \`inspect_outline(file_path)\`
275
+ 2. Read safe content: \`read_file_safe(file_path)\`
276
+ 3. Read targeted ranges: \`read_file_safe(file_path, start_line=N, end_line=M)\`
277
+ 4. Search symbols structurally: \`grep_distilled(pattern=...)\`
278
+ `;
279
+ fs.writeFileSync(path.join(rulesDir, 'context-guard.md'), ruleContent, 'utf-8');
280
+ fs.writeFileSync(path.join(skillDir, 'SKILL.md'), skillContent, 'utf-8');
281
+ // Add or merge .agents/mcp.json
282
+ const mcpFile = path.join(agentsDir, 'mcp.json');
283
+ let mcpConfig = { mcpServers: {} };
284
+ if (fs.existsSync(mcpFile)) {
285
+ try {
286
+ mcpConfig = JSON.parse(fs.readFileSync(mcpFile, 'utf-8'));
287
+ }
288
+ catch { }
289
+ }
290
+ mcpConfig.mcpServers = mcpConfig.mcpServers || {};
291
+ mcpConfig.mcpServers['context-guard'] = {
292
+ command: 'npx',
293
+ args: ['-y', '-p', '@kevinbermudezc/context-guard@latest', 'context-guard-mcp']
294
+ };
295
+ fs.writeFileSync(mcpFile, JSON.stringify(mcpConfig, null, 2), 'utf-8');
296
+ configured.push(`Google Antigravity (.agents/rules, .agents/skills, .agents/mcp.json)`);
297
+ }
298
+ // 2. Cursor Adapter (.cursor/rules/context-guard.mdc & .cursor/mcp.json)
299
+ if (['all', 'cursor'].includes(agent)) {
300
+ const cursorDir = path.join(rootDir, '.cursor');
301
+ const rulesDir = path.join(cursorDir, 'rules');
302
+ fs.mkdirSync(rulesDir, { recursive: true });
303
+ const cursorRuleContent = `---
304
+ description: ContextGuard FinOps and Context Window Admission Control
305
+ globs: *
306
+ alwaysApply: true
307
+ ---
308
+
309
+ # 🛡️ ContextGuard Rule for Cursor (Composer & Chat)
310
+
311
+ You MUST follow these context admission control and token optimization rules:
312
+ 1. Zero direct reads for files >300 lines without slice bounds.
313
+ 2. Prioritize ContextGuard MCP tools:
314
+ - \`read_file_safe(file_path)\`: Returns AST skeleton automatically for files >300 lines.
315
+ - \`inspect_outline(file_path)\`: Instant zero-cost structural outline (<5ms).
316
+ - Read targeted slices: \`read_file_safe(file_path, start_line, end_line)\`.
317
+ 3. Never read lockfiles (\`package-lock.json\`, \`pnpm-lock.yaml\`) or minified bundles.
318
+ `;
319
+ fs.writeFileSync(path.join(rulesDir, 'context-guard.mdc'), cursorRuleContent, 'utf-8');
320
+ const cursorMcpFile = path.join(cursorDir, 'mcp.json');
321
+ let cursorMcpConfig = { mcpServers: {} };
322
+ if (fs.existsSync(cursorMcpFile)) {
323
+ try {
324
+ cursorMcpConfig = JSON.parse(fs.readFileSync(cursorMcpFile, 'utf-8'));
325
+ }
326
+ catch { }
327
+ }
328
+ cursorMcpConfig.mcpServers = cursorMcpConfig.mcpServers || {};
329
+ cursorMcpConfig.mcpServers['context-guard'] = {
330
+ command: 'npx',
331
+ args: ['-y', '-p', '@kevinbermudezc/context-guard@latest', 'context-guard-mcp']
332
+ };
333
+ fs.writeFileSync(cursorMcpFile, JSON.stringify(cursorMcpConfig, null, 2), 'utf-8');
334
+ configured.push(`Cursor (.cursor/rules/context-guard.mdc, .cursor/mcp.json)`);
335
+ }
336
+ // 3. Claude Code Adapter (.claude/settings.json PreToolUse hook)
337
+ if (['all', 'claude'].includes(agent)) {
338
+ const claudeDir = path.join(rootDir, '.claude');
339
+ fs.mkdirSync(claudeDir, { recursive: true });
340
+ const settingsFile = path.join(claudeDir, 'settings.json');
341
+ let settings = {};
342
+ if (fs.existsSync(settingsFile)) {
343
+ try {
344
+ settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8'));
345
+ }
346
+ catch { }
347
+ }
348
+ settings.hooks = settings.hooks || {};
349
+ settings.hooks.PreToolUse = settings.hooks.PreToolUse || [];
350
+ const hookCmd = 'npx -y -p @kevinbermudezc/context-guard context-guard-hook';
351
+ const exists = settings.hooks.PreToolUse.some((h) => h.command && h.command.includes('context-guard-hook'));
352
+ if (!exists) {
353
+ settings.hooks.PreToolUse.push({
354
+ matcher: 'Read|View|view_file|readFile|read_file|Bash|bash',
355
+ command: hookCmd
356
+ });
357
+ }
358
+ fs.writeFileSync(settingsFile, JSON.stringify(settings, null, 2), 'utf-8');
359
+ configured.push(`Claude Code (.claude/settings.json PreToolUse hook)`);
360
+ }
361
+ for (const item of configured) {
362
+ console.log(` ${c.green}✔ Adaptador configurado:${c.reset} ${item}`);
363
+ }
364
+ console.log(`
365
+ ${c.bold}🚀 ¡Todo listo!${c.reset} Tus agentes ahora respetarán los límites de contexto y optimizarán tokens automáticamente.
366
+ `);
367
+ }
229
368
  // ─── Single File Execution Card ───────────────────────────────────────────────
230
369
  function printExecutionCard(filePath, result) {
231
370
  const statusLabels = {
@@ -251,6 +390,15 @@ function printExecutionCard(filePath, result) {
251
390
  // ─── CLI Entrypoint ───────────────────────────────────────────────────────────
252
391
  async function runCli() {
253
392
  const args = process.argv.slice(2);
393
+ // Non-blocking update notification check (silent and clean)
394
+ const isJson = args.includes('--json');
395
+ const isWatch = args.includes('--watch') || args.includes('-w');
396
+ if (!isJson && !isWatch) {
397
+ const notice = getUpdateNotice(VERSION);
398
+ if (notice) {
399
+ console.log(`\n${notice.message}\n`);
400
+ }
401
+ }
254
402
  if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
255
403
  printHelp();
256
404
  process.exit(0);
@@ -259,6 +407,11 @@ async function runCli() {
259
407
  console.log(`ContextGuard v${VERSION}`);
260
408
  process.exit(0);
261
409
  }
410
+ // Subcommand: init
411
+ if (args[0] === 'init') {
412
+ initWorkspace(args[1]);
413
+ return;
414
+ }
262
415
  // Subcommand: stats
263
416
  if (args[0] === 'stats') {
264
417
  printStats(args);
@@ -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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"}
@@ -8,6 +8,7 @@ export * from './import-collapser.js';
8
8
  export * from './token-metrics.js';
9
9
  export * from './telemetry.js';
10
10
  export * from './version.js';
11
+ export * from './update-notifier.js';
11
12
  /**
12
13
  * Main engine of ContextGuard
13
14
  * Evaluates file size and either passes it through or shunts it to an AST/Worker summary.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMxE,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAE7B;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkJrG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMxE,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AAErC;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkJrG"}
package/dist/src/index.js CHANGED
@@ -16,6 +16,7 @@ export * from './import-collapser.js';
16
16
  export * from './token-metrics.js';
17
17
  export * from './telemetry.js';
18
18
  export * from './version.js';
19
+ export * from './update-notifier.js';
19
20
  /**
20
21
  * Main engine of ContextGuard
21
22
  * Evaluates file size and either passes it through or shunts it to an AST/Worker summary.
@@ -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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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Compares semantic versions (e.g., '1.4.1' > '1.4.0').
3
+ */
4
+ export declare function isNewerVersion(latest: string, current: string): boolean;
5
+ /**
6
+ * Reads local cached update check result.
7
+ */
8
+ export declare function getCachedLatestVersion(): string | null;
9
+ /**
10
+ * Saves update check result to local cache.
11
+ */
12
+ export declare function saveUpdateCache(latestVersion: string): void;
13
+ /**
14
+ * Checks if the 24-hour cache has expired.
15
+ */
16
+ export declare function shouldCheckRegistry(): boolean;
17
+ /**
18
+ * Triggers an asynchronous, non-blocking check to the npm registry.
19
+ * Completely fire-and-forget; never delays command termination or errors.
20
+ */
21
+ export declare function refreshLatestVersionInBackground(): void;
22
+ /**
23
+ * Checks if a newer version is known and formats a clean notification.
24
+ * Returns null if current is up-to-date or if no check is available.
25
+ */
26
+ export declare function getUpdateNotice(currentVersion: string): {
27
+ latestVersion: string;
28
+ message: string;
29
+ } | null;
30
+ //# sourceMappingURL=update-notifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-notifier.d.ts","sourceRoot":"","sources":["../../src/update-notifier.ts"],"names":[],"mappings":"AAmCA;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAUvE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAUtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAS3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,IAAI,IAAI,CAwBvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA+BzG"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Fast, non-blocking update notifier for ContextGuard CLI.
3
+ *
4
+ * Design Principles:
5
+ * - Zero latency impact: checks local cache file first (< 1ms).
6
+ * - Background refresh: only polls npm registry once every 24 hours.
7
+ * - Clean terminal design: subtle, single-line or clean two-line layout without broken box-drawing ASCII/ANSI frames.
8
+ * - Silent failure: never throws, never logs errors, never hangs if offline.
9
+ */
10
+ import fs from 'node:fs';
11
+ import path from 'node:path';
12
+ import os from 'node:os';
13
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
14
+ const NPM_REGISTRY_URL = 'https://registry.npmjs.org/@kevinbermudezc/context-guard/latest';
15
+ function getContextGuardDir() {
16
+ const dir = process.env.CONTEXT_GUARD_DIR || path.join(os.homedir(), '.contextguard');
17
+ if (!fs.existsSync(dir)) {
18
+ try {
19
+ fs.mkdirSync(dir, { recursive: true });
20
+ }
21
+ catch { }
22
+ }
23
+ return dir;
24
+ }
25
+ function getCacheFilePath() {
26
+ return path.join(getContextGuardDir(), 'update-check.json');
27
+ }
28
+ /**
29
+ * Compares semantic versions (e.g., '1.4.1' > '1.4.0').
30
+ */
31
+ export function isNewerVersion(latest, current) {
32
+ const parse = (v) => v.replace(/^v/, '').split('.').map((p) => parseInt(p, 10) || 0);
33
+ const [lMaj, lMin, lPat] = parse(latest);
34
+ const [cMaj, cMin, cPat] = parse(current);
35
+ if (lMaj > cMaj)
36
+ return true;
37
+ if (lMaj < cMaj)
38
+ return false;
39
+ if (lMin > cMin)
40
+ return true;
41
+ if (lMin < cMin)
42
+ return false;
43
+ return lPat > cPat;
44
+ }
45
+ /**
46
+ * Reads local cached update check result.
47
+ */
48
+ export function getCachedLatestVersion() {
49
+ try {
50
+ const file = getCacheFilePath();
51
+ if (!fs.existsSync(file))
52
+ return null;
53
+ const raw = fs.readFileSync(file, 'utf-8');
54
+ const data = JSON.parse(raw);
55
+ return data.latestVersion || null;
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ /**
62
+ * Saves update check result to local cache.
63
+ */
64
+ export function saveUpdateCache(latestVersion) {
65
+ try {
66
+ const file = getCacheFilePath();
67
+ const data = {
68
+ lastChecked: Date.now(),
69
+ latestVersion
70
+ };
71
+ fs.writeFileSync(file, JSON.stringify(data), 'utf-8');
72
+ }
73
+ catch { }
74
+ }
75
+ /**
76
+ * Checks if the 24-hour cache has expired.
77
+ */
78
+ export function shouldCheckRegistry() {
79
+ try {
80
+ const file = getCacheFilePath();
81
+ if (!fs.existsSync(file))
82
+ return true;
83
+ const raw = fs.readFileSync(file, 'utf-8');
84
+ const data = JSON.parse(raw);
85
+ return Date.now() - (data.lastChecked || 0) > CHECK_INTERVAL_MS;
86
+ }
87
+ catch {
88
+ return true;
89
+ }
90
+ }
91
+ /**
92
+ * Triggers an asynchronous, non-blocking check to the npm registry.
93
+ * Completely fire-and-forget; never delays command termination or errors.
94
+ */
95
+ export function refreshLatestVersionInBackground() {
96
+ if (!shouldCheckRegistry()) {
97
+ return;
98
+ }
99
+ const controller = new AbortController();
100
+ const timeout = setTimeout(() => controller.abort(), 1200);
101
+ fetch(NPM_REGISTRY_URL, {
102
+ method: 'GET',
103
+ headers: { 'Accept': 'application/json' },
104
+ signal: controller.signal
105
+ })
106
+ .then((res) => {
107
+ if (!res.ok)
108
+ return null;
109
+ return res.json();
110
+ })
111
+ .then((data) => {
112
+ if (data && typeof data.version === 'string') {
113
+ saveUpdateCache(data.version);
114
+ }
115
+ })
116
+ .catch(() => { })
117
+ .finally(() => clearTimeout(timeout));
118
+ }
119
+ /**
120
+ * Checks if a newer version is known and formats a clean notification.
121
+ * Returns null if current is up-to-date or if no check is available.
122
+ */
123
+ export function getUpdateNotice(currentVersion) {
124
+ // Always trigger background refresh if cache is expired
125
+ refreshLatestVersionInBackground();
126
+ const cachedLatest = getCachedLatestVersion();
127
+ if (!cachedLatest) {
128
+ return null;
129
+ }
130
+ if (isNewerVersion(cachedLatest, currentVersion)) {
131
+ const c = {
132
+ yellow: '\x1b[33m',
133
+ green: '\x1b[32m',
134
+ cyan: '\x1b[36m',
135
+ dim: '\x1b[2m',
136
+ bold: '\x1b[1m',
137
+ reset: '\x1b[0m'
138
+ };
139
+ const message = [
140
+ ` ${c.yellow}▲${c.reset} ${c.bold}ContextGuard update available:${c.reset} ${c.dim}v${currentVersion}${c.reset} → ${c.green}${c.bold}v${cachedLatest}${c.reset}`,
141
+ ` ${c.dim}Run:${c.reset} ${c.cyan}npm i -g @kevinbermudezc/context-guard@latest${c.reset}`
142
+ ].join('\n');
143
+ return {
144
+ latestVersion: cachedLatest,
145
+ message
146
+ };
147
+ }
148
+ return null;
149
+ }
150
+ //# sourceMappingURL=update-notifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-notifier.js","sourceRoot":"","sources":["../../src/update-notifier.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.4.0";
1
+ export declare const VERSION = "1.5.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,2 +1,2 @@
1
- export const VERSION = '1.4.0';
1
+ export const VERSION = '1.5.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=antigravity-hook.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-hook.test.d.ts","sourceRoot":"","sources":["../../tests/antigravity-hook.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Antigravity Lifecycle Hook Compatibility Tests
3
+ */
4
+ import { describe, it } from 'node:test';
5
+ import assert from 'node:assert';
6
+ import { spawn } from 'node:child_process';
7
+ import path from 'node:path';
8
+ const HOOK_BIN = path.resolve(process.cwd(), 'dist/bin/claude-hook.js');
9
+ function runHookWithPayload(payload) {
10
+ return new Promise((resolve) => {
11
+ const proc = spawn('node', [HOOK_BIN], {
12
+ stdio: ['pipe', 'pipe', 'pipe']
13
+ });
14
+ let stdout = '';
15
+ let stderr = '';
16
+ proc.stdout.on('data', (d) => { stdout += d.toString(); });
17
+ proc.stderr.on('data', (d) => { stderr += d.toString(); });
18
+ proc.on('close', (code) => {
19
+ resolve({ code, stdout, stderr });
20
+ });
21
+ proc.stdin.write(JSON.stringify(payload));
22
+ proc.stdin.end();
23
+ });
24
+ }
25
+ describe('Antigravity Lifecycle Hook Adapter', () => {
26
+ it('should return decision="allow" for small files via toolCall payload', async () => {
27
+ const payload = {
28
+ toolCall: {
29
+ name: 'view_file',
30
+ args: {
31
+ AbsolutePath: path.resolve(process.cwd(), 'package.json')
32
+ }
33
+ }
34
+ };
35
+ const res = await runHookWithPayload(payload);
36
+ assert.strictEqual(res.code, 0);
37
+ const parsed = JSON.parse(res.stdout.trim());
38
+ assert.strictEqual(parsed.decision, 'allow');
39
+ });
40
+ it('should return decision="allow" when scoped lines (StartLine, EndLine) are requested', async () => {
41
+ const payload = {
42
+ toolCall: {
43
+ name: 'view_file',
44
+ args: {
45
+ AbsolutePath: path.resolve(process.cwd(), 'bin/mcp-server.ts'),
46
+ StartLine: 1,
47
+ EndLine: 50
48
+ }
49
+ }
50
+ };
51
+ const res = await runHookWithPayload(payload);
52
+ assert.strictEqual(res.code, 0);
53
+ const parsed = JSON.parse(res.stdout.trim());
54
+ assert.strictEqual(parsed.decision, 'allow');
55
+ });
56
+ it('should return decision="deny" with structural outline feedback when reading large files (>300 lines) un-scoped', async () => {
57
+ const payload = {
58
+ toolCall: {
59
+ name: 'view_file',
60
+ args: {
61
+ AbsolutePath: path.resolve(process.cwd(), 'bin/mcp-server.ts')
62
+ }
63
+ }
64
+ };
65
+ const res = await runHookWithPayload(payload);
66
+ assert.strictEqual(res.code, 0); // Antigravity expects exit 0 with JSON { decision: "deny", reason: "..." }
67
+ const parsed = JSON.parse(res.stdout.trim());
68
+ assert.strictEqual(parsed.decision, 'deny');
69
+ assert.ok(parsed.reason.includes('LECTURA REGULADA'));
70
+ assert.ok(parsed.reason.includes('ESQUELETO ESTRUCTURAL Y FIRMAS'));
71
+ });
72
+ it('should return decision="deny" when attempting to view lockfiles', async () => {
73
+ const payload = {
74
+ toolCall: {
75
+ name: 'view_file',
76
+ args: {
77
+ AbsolutePath: path.resolve(process.cwd(), 'pnpm-lock.yaml')
78
+ }
79
+ }
80
+ };
81
+ const res = await runHookWithPayload(payload);
82
+ assert.strictEqual(res.code, 0);
83
+ const parsed = JSON.parse(res.stdout.trim());
84
+ assert.strictEqual(parsed.decision, 'deny');
85
+ assert.ok(parsed.reason.includes('ACCESO DENEGADO'));
86
+ });
87
+ });
88
+ //# sourceMappingURL=antigravity-hook.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-hook.test.js","sourceRoot":"","sources":["../../tests/antigravity-hook.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=init.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../../tests/init.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Tests for context-guard init workspace command
3
+ */
4
+ import { describe, it, beforeEach, afterEach } from 'node:test';
5
+ import assert from 'node:assert';
6
+ import { spawnSync } from 'node:child_process';
7
+ import fs from 'node:fs';
8
+ import os from 'node:os';
9
+ import path from 'node:path';
10
+ const CLI_BIN = path.resolve(process.cwd(), 'dist/bin/context-guard.js');
11
+ describe('context-guard init (Phase 3)', () => {
12
+ let tmpWorkspace;
13
+ beforeEach(() => {
14
+ tmpWorkspace = fs.mkdtempSync(path.join(os.tmpdir(), 'cg-init-test-'));
15
+ });
16
+ afterEach(() => {
17
+ if (fs.existsSync(tmpWorkspace)) {
18
+ try {
19
+ fs.rmSync(tmpWorkspace, { recursive: true, force: true });
20
+ }
21
+ catch { }
22
+ }
23
+ });
24
+ it('should initialize Antigravity rules, skill and mcp config when targeting antigravity', () => {
25
+ const res = spawnSync('node', [CLI_BIN, 'init', 'antigravity'], {
26
+ cwd: tmpWorkspace,
27
+ encoding: 'utf-8'
28
+ });
29
+ assert.strictEqual(res.status, 0);
30
+ assert.ok(res.stdout.includes('Google Antigravity'));
31
+ const rulePath = path.join(tmpWorkspace, '.agents/rules/context-guard.md');
32
+ const skillPath = path.join(tmpWorkspace, '.agents/skills/context-guard/SKILL.md');
33
+ const mcpPath = path.join(tmpWorkspace, '.agents/mcp.json');
34
+ assert.ok(fs.existsSync(rulePath), 'Antigravity rule must exist');
35
+ assert.ok(fs.existsSync(skillPath), 'Antigravity skill must exist');
36
+ assert.ok(fs.existsSync(mcpPath), 'Antigravity MCP config must exist');
37
+ const mcpJson = JSON.parse(fs.readFileSync(mcpPath, 'utf-8'));
38
+ assert.ok(mcpJson.mcpServers['context-guard']);
39
+ });
40
+ it('should initialize Cursor rules and mcp config when targeting cursor', () => {
41
+ const res = spawnSync('node', [CLI_BIN, 'init', 'cursor'], {
42
+ cwd: tmpWorkspace,
43
+ encoding: 'utf-8'
44
+ });
45
+ assert.strictEqual(res.status, 0);
46
+ assert.ok(res.stdout.includes('Cursor'));
47
+ const rulePath = path.join(tmpWorkspace, '.cursor/rules/context-guard.mdc');
48
+ const mcpPath = path.join(tmpWorkspace, '.cursor/mcp.json');
49
+ assert.ok(fs.existsSync(rulePath), 'Cursor rule must exist');
50
+ assert.ok(fs.existsSync(mcpPath), 'Cursor MCP config must exist');
51
+ });
52
+ it('should configure all adapters when run with no arguments or "all"', () => {
53
+ const res = spawnSync('node', [CLI_BIN, 'init'], {
54
+ cwd: tmpWorkspace,
55
+ encoding: 'utf-8'
56
+ });
57
+ assert.strictEqual(res.status, 0);
58
+ assert.ok(fs.existsSync(path.join(tmpWorkspace, '.agents/rules/context-guard.md')));
59
+ assert.ok(fs.existsSync(path.join(tmpWorkspace, '.cursor/rules/context-guard.mdc')));
60
+ assert.ok(fs.existsSync(path.join(tmpWorkspace, '.claude/settings.json')));
61
+ });
62
+ });
63
+ //# sourceMappingURL=init.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../tests/init.test.ts"],"names":[],"mappings":"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"}
@@ -90,7 +90,7 @@ describe('ContextGuard MCP Server (Phase 2)', () => {
90
90
  assert.ok(result.serverInfo, 'Must include serverInfo');
91
91
  const info = result.serverInfo;
92
92
  assert.strictEqual(info.name, 'context-guard');
93
- assert.strictEqual(info.version, '1.4.0');
93
+ assert.strictEqual(info.version, '1.5.0');
94
94
  });
95
95
  it('should list exactly 3 registered tools', async () => {
96
96
  const res = await sendRequest(proc, req('tools/list'));
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=update-notifier.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-notifier.test.d.ts","sourceRoot":"","sources":["../../tests/update-notifier.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Tests for the update notifier system
3
+ */
4
+ import { describe, it, beforeEach, afterEach } from 'node:test';
5
+ import assert from 'node:assert';
6
+ import fs from 'node:fs';
7
+ import os from 'node:os';
8
+ import path from 'node:path';
9
+ import { isNewerVersion, getCachedLatestVersion, saveUpdateCache, shouldCheckRegistry, getUpdateNotice } from '../src/update-notifier.js';
10
+ describe('Update Notifier System', () => {
11
+ let tempDir;
12
+ const originalEnv = { ...process.env };
13
+ beforeEach(() => {
14
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'cg-update-test-'));
15
+ process.env.CONTEXT_GUARD_DIR = tempDir;
16
+ });
17
+ afterEach(() => {
18
+ process.env = { ...originalEnv };
19
+ if (fs.existsSync(tempDir)) {
20
+ try {
21
+ fs.rmSync(tempDir, { recursive: true, force: true });
22
+ }
23
+ catch { }
24
+ }
25
+ });
26
+ it('should accurately compare semver versions', () => {
27
+ assert.strictEqual(isNewerVersion('1.4.1', '1.4.0'), true);
28
+ assert.strictEqual(isNewerVersion('1.5.0', '1.4.9'), true);
29
+ assert.strictEqual(isNewerVersion('2.0.0', '1.9.9'), true);
30
+ assert.strictEqual(isNewerVersion('1.4.0', '1.4.0'), false);
31
+ assert.strictEqual(isNewerVersion('1.3.2', '1.4.0'), false);
32
+ });
33
+ it('should read and write cache properly', () => {
34
+ assert.strictEqual(getCachedLatestVersion(), null);
35
+ assert.strictEqual(shouldCheckRegistry(), true);
36
+ saveUpdateCache('1.4.5');
37
+ assert.strictEqual(getCachedLatestVersion(), '1.4.5');
38
+ assert.strictEqual(shouldCheckRegistry(), false);
39
+ });
40
+ it('should return a clean, unboxed notification message when a newer version is available', () => {
41
+ saveUpdateCache('1.5.0');
42
+ const notice = getUpdateNotice('1.4.0');
43
+ assert.ok(notice);
44
+ assert.strictEqual(notice.latestVersion, '1.5.0');
45
+ assert.ok(notice.message.includes('ContextGuard update available'));
46
+ assert.ok(notice.message.includes('v1.4.0'));
47
+ assert.ok(notice.message.includes('v1.5.0'));
48
+ assert.ok(notice.message.includes('npm i -g @kevinbermudezc/context-guard@latest'));
49
+ // Ensure no broken ASCII box-drawing characters
50
+ assert.strictEqual(notice.message.includes('╭'), false);
51
+ assert.strictEqual(notice.message.includes('╰'), false);
52
+ assert.strictEqual(notice.message.includes('│'), false);
53
+ });
54
+ it('should return null when the current version is equal or newer', () => {
55
+ saveUpdateCache('1.4.0');
56
+ const notice = getUpdateNotice('1.4.0');
57
+ assert.strictEqual(notice, null);
58
+ });
59
+ });
60
+ //# sourceMappingURL=update-notifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-notifier.test.js","sourceRoot":"","sources":["../../tests/update-notifier.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ {
2
+ "context-guard-admission": {
3
+ "enabled": true,
4
+ "PreToolUse": [
5
+ {
6
+ "matcher": "view_file",
7
+ "hooks": [
8
+ {
9
+ "type": "command",
10
+ "command": "npx -y -p @kevinbermudezc/context-guard context-guard-hook",
11
+ "timeout": 5
12
+ }
13
+ ]
14
+ }
15
+ ]
16
+ }
17
+ }
@@ -0,0 +1,15 @@
1
+ # 🛡️ ContextGuard Project Rule for Google Antigravity (AGY)
2
+
3
+ You MUST follow these context admission control and token optimization rules:
4
+
5
+ ## 1. Context Admission Control
6
+ - **Do NOT read large files (>300 lines) into context unrestricted.** Dumping large files floods the context window and accelerates model degradation.
7
+ - When `read_file_safe` is available via MCP:
8
+ - Use `inspect_outline(file_path)` to get a structural map of the file with line numbers `[L#]`.
9
+ - Use `read_file_safe(file_path)` which automatically returns an AST skeleton for files >300 lines.
10
+ - When inspecting implementations, read targeted line ranges:
11
+ `read_file_safe(file_path, start_line=..., end_line=...)` or `view_file(AbsolutePath=..., StartLine=..., EndLine=...)`.
12
+
13
+ ## 2. Lockfiles and Binaries
14
+ - **Never open lockfiles** (`package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `bun.lockb`) or compiled/minified bundles (`.min.js`, `.wasm`, `.pyc`).
15
+ - Use command-line tools (`pnpm why <pkg>`, `npm ls <pkg>`, or read `package.json` directly) to check package dependencies.
@@ -0,0 +1,25 @@
1
+ ---
2
+ description: ContextGuard FinOps and Context Window Admission Control
3
+ globs: *
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # 🛡️ ContextGuard Rule for Cursor (Composer & Chat)
8
+
9
+ You MUST follow these context admission control and token optimization rules to protect the model context window and prevent latency degradation from massive files:
10
+
11
+ ## 1. Zero Direct Reads for Large Files (>300 lines)
12
+ - **NEVER** read files larger than 300 lines without line constraints (`start_line`, `end_line`).
13
+ - Instead of using default read tools, prioritize calling ContextGuard MCP tools:
14
+ - Call `read_file_safe(file_path: "path/to/file")` to automatically receive an AST structural skeleton if the file is large (>300 lines).
15
+ - Call `inspect_outline(file_path: "path/to/file")` (< 5ms, 0 tokens) to inspect classes, methods, and types with their exact line tags `[L#]`.
16
+ - Once the relevant code block is located, read only the target slice:
17
+ `read_file_safe(file_path: "path/to/file", start_line: 120, end_line: 180)`
18
+
19
+ ## 2. Pattern Searching
20
+ - When searching for symbols or references across files, use `grep_distilled(pattern: "myFunction")`.
21
+ - It isolates only matching signatures and structural surroundings rather than returning huge dumps of implementation code.
22
+
23
+ ## 3. Binaries and Lockfiles
24
+ - Do NOT read `package-lock.json`, `pnpm-lock.yaml`, `bun.lockb`, or minified bundles (`.min.js`).
25
+ - Use CLI commands (`npm ls`, `pnpm why`, `cat package.json`) to inspect dependencies.
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: context-guard
3
+ description: >-
4
+ Uses ContextGuard to inspect large files, outlines, and structural AST skeletons safely without blowing up the context window. Use whenever exploring unfamiliar files, large components (>300 lines), or auditing token consumption.
5
+ ---
6
+
7
+ # 🛡️ ContextGuard Skill for Antigravity
8
+
9
+ ContextGuard provides intelligent context admission control, reducing token usage by up to 90% when reading large source files.
10
+
11
+ ## When to Use
12
+ - Whenever you need to read or understand a source file larger than 300 lines.
13
+ - When locating functions, classes, interfaces, or types in a large codebase.
14
+ - When searching patterns across unfamiliar repositories.
15
+
16
+ ## Workflow
17
+
18
+ ### 1. Inspect File Structure First (<5ms, 0 tokens)
19
+ Instead of dumping full files into context, call `inspect_outline`:
20
+ ```json
21
+ {
22
+ "file_path": "path/to/large-service.ts"
23
+ }
24
+ ```
25
+ This returns all class declarations, function signatures, and exported types with exact line numbers `[L120]`.
26
+
27
+ ### 2. Read Safe Protected Content
28
+ When reading files through MCP, call `read_file_safe`:
29
+ ```json
30
+ {
31
+ "file_path": "path/to/large-service.ts"
32
+ }
33
+ ```
34
+ - If the file is small (≤300 lines), full content is returned.
35
+ - If the file is large (>300 lines), an AST skeleton is returned with instructions.
36
+
37
+ ### 3. Read Only Targeted Slices
38
+ Once you identify the line numbers from the outline, read only the relevant function:
39
+ ```json
40
+ {
41
+ "file_path": "path/to/large-service.ts",
42
+ "start_line": 120,
43
+ "end_line": 160
44
+ }
45
+ ```
46
+
47
+ ### 4. Search Symbols with Structural Distillation
48
+ Use `grep_distilled` instead of raw regex searches to see structural context around matches without dumping hundreds of lines of implementation.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevinbermudezc/context-guard",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
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"