pumuki-ast-hooks 5.3.15 → 5.3.17

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/bin/install.js CHANGED
File without changes
@@ -8,21 +8,21 @@
8
8
 
9
9
  ## 🎯 Overview
10
10
 
11
- Esta versión corrige la configuración MCP en Windsurf para evitar colisiones entre proyectos abiertos en paralelo. Ahora se usa una única entrada global con ruta absoluta al binario local del repo y se elimina el hardcode legacy en el configurador CLI.
11
+ This release fixes MCP configuration in Windsurf to avoid collisions when multiple projects are open in parallel. It now uses a single global entry with an absolute path to the repo’s local binary and removes the legacy hardcode in the CLI configurator.
12
12
 
13
13
  ---
14
14
 
15
15
  ## 🐛 Bug Fixes
16
16
 
17
- ### Fixed: Colisión de MCP al abrir varios repos en Windsurf
18
- - **Issue**: Se generaban MCP por workspace y un ID legacy fijo, causando duplicados/cancelaciones del `ai_gate_check`.
19
- - **Resolution**: Configuración solo en `~/.codeium/windsurf/mcp_config.json` con ID fijo `ast-intelligence-automation` apuntando al binario local; se elimina el hardcode legacy en `pumuki-mcp.js`.
20
- - **Impact**: El MCP ya no colisiona al trabajar con varios repos simultáneamente.
17
+ ### Fixed: MCP collision when opening multiple repos in Windsurf
18
+ - **Issue**: MCP was generated per workspace with a fixed legacy ID, causing duplicates/cancellations of `ai_gate_check`.
19
+ - **Resolution**: Configuration only in `~/.codeium/windsurf/mcp_config.json` with fixed ID `ast-intelligence-automation` pointing to the local binary; legacy hardcode removed in `pumuki-mcp.js`.
20
+ - **Impact**: MCP no longer collides when working with multiple repos simultaneously.
21
21
 
22
22
  ---
23
23
 
24
24
  ## 📚 Documentation
25
- - Nueva guía: `docs/MCP_CONFIGURATION.md` explicando configuración global y validación del `ai_gate_check` en Windsurf.
25
+ - New guide: `docs/MCP_CONFIGURATION.md` explaining global configuration and `ai_gate_check` validation in Windsurf.
26
26
 
27
27
  ---
28
28
 
@@ -0,0 +1,170 @@
1
+ # Release Notes - v5.3.4
2
+
3
+ **Release Date**: December 29, 2025
4
+ **Type**: Patch Release
5
+ **Compatibility**: Fully backward compatible with 5.3.x
6
+
7
+ ---
8
+
9
+ ## 🎯 Overview
10
+
11
+ Version 5.3.4 addresses critical bugs in the audit orchestrator that were preventing correct analysis of repository files. This patch ensures that audit options work as intended and provide accurate violation reports.
12
+
13
+ ---
14
+
15
+ ## 🐛 Bug Fixes
16
+
17
+ ### Fixed: Audit Option 2 Analyzing Only Staged Files
18
+
19
+ **Issue**: Option 2 (Strict REPO+STAGING) was incorrectly configured with `STAGING_ONLY_MODE=1`, causing it to analyze only staged files instead of the entire repository.
20
+
21
+ **Impact**: Users running full repository audits were only seeing violations from staged files, missing thousands of potential issues in the codebase.
22
+
23
+ **Resolution**:
24
+ - Added `unset STAGING_ONLY_MODE` in `full_audit_strict_repo_and_staging()` function
25
+ - Added `export AUDIT_LIBRARY=true` to include library files in analysis
26
+ - Fixed environment variable propagation to Node.js subprocess
27
+
28
+ **Files Changed**:
29
+ - `scripts/hooks-system/infrastructure/shell/orchestrators/audit-orchestrator.sh`
30
+
31
+ **Verification**:
32
+ ```bash
33
+ # Before: Only staged files analyzed
34
+ npm run audit # Option 2 → ~376 files, ~546 violations
35
+
36
+ # After: Full repository analyzed
37
+ npm run audit # Option 2 → All files, correct violation count
38
+ ```
39
+
40
+ ---
41
+
42
+ ### Fixed: AUDIT_LIBRARY Not Passed to Node.js Process
43
+
44
+ **Issue**: The `AUDIT_LIBRARY` environment variable was set in the shell but not exported to the Node.js subprocess executing `ast-intelligence.js`.
45
+
46
+ **Impact**: When auditing the library itself, files in `scripts/hooks-system/` were being incorrectly filtered out.
47
+
48
+ **Resolution**:
49
+ - Modified `run_ast_intelligence()` to explicitly export `AUDIT_LIBRARY` when spawning Node.js process
50
+ - Ensured variable is available in both execution paths (with and without `NODE_PATH`)
51
+
52
+ **Files Changed**:
53
+ - `scripts/hooks-system/infrastructure/shell/orchestrators/audit-orchestrator.sh` (lines 1014, 1016)
54
+
55
+ ---
56
+
57
+ ### Improved: Staged File Path Matching
58
+
59
+ **Issue**: Violations in staged files were not being correctly matched due to differences between absolute and relative path formats.
60
+
61
+ **Impact**: Staged file summary showed incorrect violation counts.
62
+
63
+ **Resolution**:
64
+ - Enhanced `compute_staged_summary()` to use both relative and absolute paths for matching
65
+ - Implemented more robust path comparison using `endswith()` logic
66
+ - Added `staged-rel.txt` for relative path storage
67
+
68
+ **Files Changed**:
69
+ - `scripts/hooks-system/infrastructure/shell/orchestrators/audit-orchestrator.sh` (lines 337-370)
70
+
71
+ ---
72
+
73
+ ## 🔧 Improvements
74
+
75
+ ### Enhanced Error Messages
76
+
77
+ - Improved informative messages when no AST-compatible files are staged (Option 3)
78
+ - Better debug output for troubleshooting audit issues
79
+
80
+ ### Code Quality
81
+
82
+ - Cleaned up debug console.log statements
83
+ - Improved code organization in audit orchestrator
84
+
85
+ ---
86
+
87
+ ## 📦 Installation
88
+
89
+ ### New Installation
90
+
91
+ ```bash
92
+ npm install --save-dev @pumuki/ast-intelligence-hooks@5.3.4
93
+ npm run install-hooks
94
+ ```
95
+
96
+ ### Upgrade from 5.3.3
97
+
98
+ ```bash
99
+ npm install --save-dev @pumuki/ast-intelligence-hooks@5.3.4
100
+ npm run install-hooks # Recommended to update orchestrator scripts
101
+ ```
102
+
103
+ See [Migration Guide](./MIGRATION_5.3.4.md) for detailed upgrade instructions.
104
+
105
+ ---
106
+
107
+ ## ✅ Verification
108
+
109
+ After upgrading, verify the fixes:
110
+
111
+ ### Test 1: Full Repository Audit (Option 2)
112
+
113
+ ```bash
114
+ npm run audit
115
+ # Select option 2: "Strict REPO+STAGING"
116
+ ```
117
+
118
+ **Expected**: Should analyze ALL files in repository, not just staged files.
119
+
120
+ ### Test 2: Staging Only Audit (Option 3)
121
+
122
+ ```bash
123
+ git add src/some-file.ts
124
+ npm run audit
125
+ # Select option 3: "Strict STAGING only"
126
+ ```
127
+
128
+ **Expected**: Should analyze only staged files and show correct violations.
129
+
130
+ ---
131
+
132
+ ## 🔄 Breaking Changes
133
+
134
+ **None**. This is a fully backward-compatible patch release.
135
+
136
+ ---
137
+
138
+ ## 📚 Documentation
139
+
140
+ - [CHANGELOG](../CHANGELOG.md)
141
+ - [Migration Guide](./MIGRATION_5.3.4.md)
142
+ - [Installation Guide](./INSTALLATION.md)
143
+ - [API Reference](./API_REFERENCE.md)
144
+
145
+ ---
146
+
147
+ ## 🙏 Acknowledgments
148
+
149
+ Thanks to all users who reported issues and helped identify these bugs.
150
+
151
+ ---
152
+
153
+ ## 📞 Support
154
+
155
+ - **Issues**: [GitHub Issues](https://github.com/SwiftEnProfundidad/ast-intelligence-hooks/issues)
156
+ - **Discussions**: [GitHub Discussions](https://github.com/SwiftEnProfundidad/ast-intelligence-hooks/discussions)
157
+ - **Email**: freelancemerlos@gmail.com
158
+
159
+ ---
160
+
161
+ ## 🚀 What's Next?
162
+
163
+ Stay tuned for upcoming features in future releases:
164
+ - Enhanced violation reporting
165
+ - Performance optimizations
166
+ - Additional platform support
167
+
168
+ ---
169
+
170
+ **Full Changelog**: [5.3.3...5.3.4](https://github.com/SwiftEnProfundidad/ast-intelligence-hooks/compare/v5.3.3...v5.3.4)
@@ -0,0 +1,95 @@
1
+ # 🚀 Plan de Resolución de Violaciones - ast-intelligence-hooks
2
+
3
+ ## 🧭 Leyenda de Estado (viva)
4
+ - ✅ **Hecho** (tarea completada exitosamente)
5
+ - 🚧 **En construcción** (tarea en progreso)
6
+ - ⏳ **Pendiente** (tarea aún no iniciada)
7
+ - ❌ **Bloqueada** (tarea impedida por dependencias o problemas externos)
8
+ - 🔄 **Revisión** (tarea completada pero pendiente de verificación o ajustes)
9
+
10
+ ---
11
+
12
+ ## 📊 Resumen Ejecutivo
13
+ - **Estado actual:** ⚠️ Acción requerida (217 críticas, 1 alta, 117 medias, 211 bajas)
14
+ - **Branch:** `fix/audit-staged-severity-case-insensitive`
15
+ - **Fecha de inicio:** 30/12/2025 — **ETA general:** 15/01/2026
16
+ - **Objetivo:** Reducir a 0 las CRÍTICAS/HIGH y bajar el total < 20 antes de permitir commits sin bypass.
17
+ - **Riesgos:**
18
+ 1) Complejidad al refactorizar excepciones; 2) Dependencias entre módulos/config; 3) Tiempo limitado para instrumentación (Prometheus / audit logging).
19
+
20
+ **Referencias rápidas:**
21
+ - [Violations report](../.violations-by-priority.md)
22
+ - [AST summary JSON](../.audit-reports/latest_ast_summary.json)
23
+ - [Arquitectura](../ARCHITECTURE.md)
24
+
25
+ ---
26
+
27
+ ## 📅 Timeline Visual (fechas estimadas)
28
+ ```mermaid
29
+ gantt
30
+ title Fases de Resolución de Violaciones
31
+ dateFormat YYYY-MM-DD
32
+ section Fase 1: CRÍTICAS
33
+ Excepciones personalizadas :active, crit1, 2025-12-30, 4d
34
+ Separación de entornos : crit2, after crit1, 3d
35
+ Auditoría de seguridad : crit3, after crit2, 3d
36
+ Métricas Prometheus : crit4, after crit3, 2d
37
+ Patrones de confiabilidad : crit5, after crit4, 2d
38
+
39
+ section Fase 2: HIGH + MEDIUM
40
+ Corrección HIGH : high1, after crit5, 1d
41
+ Refactorización MEDIUM : med1, after high1, 5d
42
+
43
+ section Fase 3: LOW
44
+ Optimizaciones y documentación : low1, after med1, 5d
45
+ ```
46
+
47
+ ---
48
+
49
+ ## 🔴 Fase 1: Violaciones CRÍTICAS (217)
50
+ | Estado | Violación | Cant. | Responsable | DOD (Definition of Done) | Doc |
51
+ |--------|-----------|-------|-------------|--------------------------|-----|
52
+ | ✅ | backend.error.custom_exceptions | 105 | BE | CustomError base + reemplazo de `Error` genérico en BE; tests pasando | [Guía de excepciones](../docs/error-handling.md) |
53
+ | 🚧 | backend.config.missing_env_separation | 80 | BE | Config por entorno (dev/stg/prod), sin secretos hardcode | [Config entornos](../docs/env-configuration.md) |
54
+ | ⏳ | backend.security.missing_audit_logging | 69 | BE | Audit trail en operaciones sensibles + logs estructurados | [Audit logging](../docs/security-auditing.md) |
55
+ | ⏳ | backend.metrics.missing_prometheus | 64 | BE | Endpoints /metrics, instrumentación clave y dashboard base | [Prometheus](../docs/metrics-monitoring.md) |
56
+ | ⏳ | backend.reliability.missing_bulkhead | 40 | BE | Limitadores/aislamiento en puntos críticos + pruebas de carga | [Reliability](../docs/reliability-patterns.md) |
57
+
58
+ ---
59
+
60
+ ## 🟠 Fase 2: Violaciones HIGH + MEDIUM (118)
61
+ | Estado | Violación | Cant. | Responsable | DOD | Doc |
62
+ |--------|-----------|-------|-------------|-----|-----|
63
+ | ⏳ | HIGH (1) | 1 | BE | Tipado estricto sin `any`; tests verdes | [Type safety](../docs/type-safety.md) |
64
+ | ⏳ | backend.testing.mocks | 40 | QA/BE | Mocks revisados; cobertura > 80% en módulos afectados | [Testing](../docs/testing-strategies.md) |
65
+ | ⏳ | backend.event.handler | 26 | BE | Handlers idempotentes + tests de eventos | [Eventos](../docs/event-handling.md) |
66
+ | ⏳ | backend.observability.missing_prometheus | 24 | BE | Métricas por handler; dashboards mínimos | [Observabilidad](../docs/observability.md) |
67
+ | ⏳ | backend.auth.missing_cors | 17 | BE | Política CORS por entorno; tests e2e básicos | [CORS](../docs/cors-configuration.md) |
68
+ | ⏳ | backend.observability.missing_alerting | 10 | SRE | Alertas en métricas críticas; umbrales definidos | [Alerting](../docs/alerting-system.md) |
69
+
70
+ ---
71
+
72
+ ## 🔵 Fase 3: Violaciones LOW (211)
73
+ | Estado | Violación | Cant. | Responsable | DOD | Doc |
74
+ |--------|-----------|-------|-------------|-----|-----|
75
+ | ⏳ | frontend.code_quality.comment | 4 | FE | Comentarios depurados; lint OK | [Code standards](../docs/code-standards.md) |
76
+ | ⏳ | frontend.code_quality.magic_number | 4 | FE | Constantes declaradas; tests ajustados | [Constantes](../docs/constants-vs-magic-numbers.md) |
77
+ | ⏳ | frontend.devops.hardcoded_feature_flag | 2 | FE/DevOps | Flags externalizados por entorno | [Feature flags](../docs/feature-flags.md) |
78
+ | ⏳ | frontend.performance.code_splitting | 2 | FE | Split aplicado en rutas pesadas; bundle size reducido | [Perf FE](../docs/frontend-performance.md) |
79
+ | ⏳ | frontend.performance.missing_code_splitting | 2 | FE | Lazy loading habilitado en vistas grandes | [Code splitting](../docs/code-splitting.md) |
80
+
81
+ ---
82
+
83
+ ## 📈 Métricas de Progreso
84
+ | Fase | Total | Completado | % |
85
+ |------|-------|------------|---|
86
+ | CRÍTICAS | 217 | 0 | 0% |
87
+ | HIGH + MEDIUM | 118 | 0 | 0% |
88
+ | LOW | 211 | 0 | 0% |
89
+ | **TOTAL** | **546** | **0** | **0%** |
90
+
91
+ **Riesgos actualizados:**
92
+ 1) Implementación de Prometheus podría requerir cambios de infra; 2) Revisión de seguridad depende de disponibilidad de equipo; 3) Refactorizaciones pueden impactar tiempos.
93
+
94
+ **Comentarios/Notas colaborativas:**
95
+ - Añade comentarios bajo cada tabla al cerrar tareas (usa la leyenda para actualizar estados).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pumuki-ast-hooks",
3
- "version": "5.3.15",
3
+ "version": "5.3.17",
4
4
  "description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -12,5 +12,5 @@ Source: file
12
12
 
13
13
  ℹ️ Data is stale. Ensure guards are running and refreshing token usage.
14
14
 
15
- Last updated: 2025-12-30T05:52:15.296Z
15
+ Last updated: 2025-12-30T08:25:20.984Z
16
16
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -1,2 +1,4 @@
1
1
  {"timestamp":"2025-12-28T13:58:33.364Z","level":"info","component":"AutoRecovery","event":"NotificationCenterService shutdown","data":{"totalEnqueued":0,"totalSent":0,"totalDeduplicated":0,"totalCooldownSkipped":0,"totalFailed":0,"totalRetries":0,"queueSize":0,"deduplication":{"size":0},"cooldowns":{"activeCooldowns":0}},"context":{}}
2
2
  {"timestamp":"2025-12-29T14:01:15.120Z","level":"info","component":"AutoRecovery","event":"NotificationCenterService shutdown","data":{"totalEnqueued":0,"totalSent":0,"totalDeduplicated":0,"totalCooldownSkipped":0,"totalFailed":0,"totalRetries":0,"queueSize":0,"deduplication":{"size":0},"cooldowns":{"activeCooldowns":0}},"context":{}}
3
+ {"timestamp":"2025-12-30T08:17:43.107Z","level":"info","component":"AutoRecovery","event":"NotificationCenterService shutdown","data":{"totalEnqueued":0,"totalSent":0,"totalDeduplicated":0,"totalCooldownSkipped":0,"totalFailed":0,"totalRetries":0,"queueSize":0,"deduplication":{"size":0},"cooldowns":{"activeCooldowns":0}},"context":{}}
4
+ {"timestamp":"2025-12-30T08:18:14.228Z","level":"info","component":"AutoRecovery","event":"NotificationCenterService shutdown","data":{"totalEnqueued":0,"totalSent":0,"totalDeduplicated":0,"totalCooldownSkipped":0,"totalFailed":0,"totalRetries":0,"queueSize":0,"deduplication":{"size":0},"cooldowns":{"activeCooldowns":0}},"context":{}}
@@ -6,3 +6,11 @@
6
6
  {"timestamp":"2025-12-29T14:01:15.064Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_CONFIG_EXISTS","data":{"configPath":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/.hook-system/config.json"},"context":{}}
7
7
  {"timestamp":"2025-12-29T14:01:15.064Z","level":"error","component":"InstallWizard","event":"INSTALL_WIZARD_SYMLINK_FAILED","data":{"error":"EEXIST: file already exists, symlink '/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/scripts/hooks-system/bin/guard-supervisor.js' -> '/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/.git/hooks/guard-supervisor'"},"context":{}}
8
8
  {"timestamp":"2025-12-29T14:01:15.064Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
9
+ {"timestamp":"2025-12-30T08:17:43.167Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_START","data":{"repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"},"context":{}}
10
+ {"timestamp":"2025-12-30T08:17:43.175Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_CONFIG_EXISTS","data":{"configPath":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/.hook-system/config.json"},"context":{}}
11
+ {"timestamp":"2025-12-30T08:17:43.175Z","level":"error","component":"InstallWizard","event":"INSTALL_WIZARD_SYMLINK_FAILED","data":{"error":"EEXIST: file already exists, symlink '/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/scripts/hooks-system/bin/guard-supervisor.js' -> '/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/.git/hooks/guard-supervisor'"},"context":{}}
12
+ {"timestamp":"2025-12-30T08:17:43.175Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
13
+ {"timestamp":"2025-12-30T08:18:14.287Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_START","data":{"repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"},"context":{}}
14
+ {"timestamp":"2025-12-30T08:18:14.294Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_CONFIG_EXISTS","data":{"configPath":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/.hook-system/config.json"},"context":{}}
15
+ {"timestamp":"2025-12-30T08:18:14.294Z","level":"error","component":"InstallWizard","event":"INSTALL_WIZARD_SYMLINK_FAILED","data":{"error":"EEXIST: file already exists, symlink '/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/scripts/hooks-system/bin/guard-supervisor.js' -> '/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system/.git/hooks/guard-supervisor'"},"context":{}}
16
+ {"timestamp":"2025-12-30T08:18:14.294Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
@@ -798,3 +798,54 @@
798
798
  {"timestamp":"2025-12-30T05:46:15.082Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"2cca3a88-8da2-43af-a312-e3afaf195e15","type":"token_ok"},"context":{}}
799
799
  {"timestamp":"2025-12-30T05:49:15.199Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"89b54d29-cdc7-4098-9824-baccf1d32184","type":"token_ok"},"context":{}}
800
800
  {"timestamp":"2025-12-30T05:52:15.297Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"7b5026e8-99bd-406e-a80e-6d76dc650bcc","type":"token_ok"},"context":{}}
801
+ {"timestamp":"2025-12-30T05:55:15.415Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"b66bb262-e90e-4a01-bc48-c68325c739a7","type":"token_ok"},"context":{}}
802
+ {"timestamp":"2025-12-30T05:58:15.529Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"b7b3340b-6f28-4932-a3b1-c253af018c27","type":"token_ok"},"context":{}}
803
+ {"timestamp":"2025-12-30T06:01:15.638Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"a4492bea-8217-4604-af15-76d262b63e47","type":"token_ok"},"context":{}}
804
+ {"timestamp":"2025-12-30T06:04:15.751Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"8be12ade-b5ed-4a60-91d6-168a3b1c3a9f","type":"token_ok"},"context":{}}
805
+ {"timestamp":"2025-12-30T06:07:15.863Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"5c3c02ef-1cbf-4dae-a72b-68ccdca7b793","type":"token_ok"},"context":{}}
806
+ {"timestamp":"2025-12-30T06:10:15.978Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"7158fce4-68ae-444c-867c-c31d362738a7","type":"token_ok"},"context":{}}
807
+ {"timestamp":"2025-12-30T06:13:16.096Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"6b8f8715-61c0-4d42-b4fb-80238e556fad","type":"token_ok"},"context":{}}
808
+ {"timestamp":"2025-12-30T06:16:16.204Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"0a592d5a-db41-414c-a6d3-9dbbee534d9f","type":"token_ok"},"context":{}}
809
+ {"timestamp":"2025-12-30T06:19:16.307Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"562fe726-35f3-46c7-bf84-b5be33f05de3","type":"token_ok"},"context":{}}
810
+ {"timestamp":"2025-12-30T06:22:16.404Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"40aafde8-10bd-47a9-95ff-7388c5c0c529","type":"token_ok"},"context":{}}
811
+ {"timestamp":"2025-12-30T06:25:16.501Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"3aeb5c36-8a83-4dfa-96d9-d8574e0fa546","type":"token_ok"},"context":{}}
812
+ {"timestamp":"2025-12-30T06:28:16.628Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"32434725-03be-467f-aeed-3153a14eb5df","type":"token_ok"},"context":{}}
813
+ {"timestamp":"2025-12-30T06:31:16.738Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"5f16c8a2-81fd-4e3e-8075-b0e171d76a67","type":"token_ok"},"context":{}}
814
+ {"timestamp":"2025-12-30T06:34:16.852Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"29b05d79-ac04-4c22-9179-c30689ac9006","type":"token_ok"},"context":{}}
815
+ {"timestamp":"2025-12-30T06:37:16.952Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"11938df4-8a18-45ea-a5a8-35188baf14ed","type":"token_ok"},"context":{}}
816
+ {"timestamp":"2025-12-30T06:40:17.049Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"925cecd0-def1-4d63-b0a6-c3ae9fcea8cf","type":"token_ok"},"context":{}}
817
+ {"timestamp":"2025-12-30T06:43:17.151Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"d3264621-dc35-401a-b7f6-6f41b8a6a2f8","type":"token_ok"},"context":{}}
818
+ {"timestamp":"2025-12-30T06:46:17.264Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"4e542654-636b-4d07-9358-c3eb5b11a134","type":"token_ok"},"context":{}}
819
+ {"timestamp":"2025-12-30T06:49:17.377Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"4e707dbe-7038-4360-9585-731a092c5d05","type":"token_ok"},"context":{}}
820
+ {"timestamp":"2025-12-30T06:52:17.492Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"c0ab24c1-3483-4b6c-b376-138513bcd2ad","type":"token_ok"},"context":{}}
821
+ {"timestamp":"2025-12-30T06:55:17.610Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"b426e7b7-2505-4f48-819d-784af3e10793","type":"token_ok"},"context":{}}
822
+ {"timestamp":"2025-12-30T06:58:17.701Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"96dafe91-2054-47d1-981d-84bd643ac3c5","type":"token_ok"},"context":{}}
823
+ {"timestamp":"2025-12-30T07:01:17.813Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"8ba344ad-4cc0-42a2-891f-d627599e30e3","type":"token_ok"},"context":{}}
824
+ {"timestamp":"2025-12-30T07:04:17.926Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"f0b35065-aab2-4ac6-bf8a-4e9e1fdbd480","type":"token_ok"},"context":{}}
825
+ {"timestamp":"2025-12-30T07:07:18.037Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"f6c3c758-6088-432b-a152-19abcf6672a8","type":"token_ok"},"context":{}}
826
+ {"timestamp":"2025-12-30T07:10:18.156Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"9a09ce0c-9ae0-4f5d-aa79-be3d5a58d98b","type":"token_ok"},"context":{}}
827
+ {"timestamp":"2025-12-30T07:13:18.245Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"2cc400ab-0c64-43b4-9489-14679df26f58","type":"token_ok"},"context":{}}
828
+ {"timestamp":"2025-12-30T07:16:18.365Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"8e37a715-c5f2-48a1-80e2-2bd77738874f","type":"token_ok"},"context":{}}
829
+ {"timestamp":"2025-12-30T07:19:18.484Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"31937f5e-a455-4ccc-9a1b-f3f762fbe03a","type":"token_ok"},"context":{}}
830
+ {"timestamp":"2025-12-30T07:22:18.599Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"e8ebf4d7-17ef-407e-8c4b-31d1b5172acd","type":"token_ok"},"context":{}}
831
+ {"timestamp":"2025-12-30T07:25:18.705Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"dc164499-35f2-4cca-aa6f-0d748467eb31","type":"token_ok"},"context":{}}
832
+ {"timestamp":"2025-12-30T07:28:18.809Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"3916797e-8e9d-46ff-bb26-012eb5928af7","type":"token_ok"},"context":{}}
833
+ {"timestamp":"2025-12-30T07:31:18.929Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"d2d3f376-9dd0-4ae8-88d2-ababdc439ab1","type":"token_ok"},"context":{}}
834
+ {"timestamp":"2025-12-30T07:34:19.040Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"5da03356-8814-405e-8048-9d3315864ec0","type":"token_ok"},"context":{}}
835
+ {"timestamp":"2025-12-30T07:37:19.153Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"c5a482c6-ddfd-4952-a2a9-e613e8137ef1","type":"token_ok"},"context":{}}
836
+ {"timestamp":"2025-12-30T07:40:19.273Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"ba7bbe3b-bb53-4a64-b5fb-02267190cd48","type":"token_ok"},"context":{}}
837
+ {"timestamp":"2025-12-30T07:43:19.379Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"b66a602e-b4bf-4cae-a67e-9db017e25be3","type":"token_ok"},"context":{}}
838
+ {"timestamp":"2025-12-30T07:46:19.497Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"a3019645-f431-46c5-bc4f-04868e7f0903","type":"token_ok"},"context":{}}
839
+ {"timestamp":"2025-12-30T07:49:19.613Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"e20795d0-1adf-4185-8344-3de8e82d8591","type":"token_ok"},"context":{}}
840
+ {"timestamp":"2025-12-30T07:52:19.735Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"9c81b203-f673-4025-9e11-5f10cea40ab7","type":"token_ok"},"context":{}}
841
+ {"timestamp":"2025-12-30T07:55:19.844Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"a5101979-ff12-47ad-9363-4135ad15714d","type":"token_ok"},"context":{}}
842
+ {"timestamp":"2025-12-30T07:58:19.943Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"3145bcf7-eb68-478a-8b96-23bb7f5dc491","type":"token_ok"},"context":{}}
843
+ {"timestamp":"2025-12-30T08:01:20.057Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"80a62732-80b2-4090-bdee-2e1c5bfe974c","type":"token_ok"},"context":{}}
844
+ {"timestamp":"2025-12-30T08:04:20.174Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"5d039d68-06ba-4faf-929b-9804dd92b6d9","type":"token_ok"},"context":{}}
845
+ {"timestamp":"2025-12-30T08:07:20.291Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"d7520424-d719-4b7c-af56-aa0e18c97a2b","type":"token_ok"},"context":{}}
846
+ {"timestamp":"2025-12-30T08:10:20.410Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"bd75a2df-d12a-4327-b9dc-6a274ae839e9","type":"token_ok"},"context":{}}
847
+ {"timestamp":"2025-12-30T08:13:20.516Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"bb0d1579-a6f5-44bc-8b48-95d80e5be560","type":"token_ok"},"context":{}}
848
+ {"timestamp":"2025-12-30T08:16:20.631Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"2c8d9800-984a-4c65-9bd4-445b39d038d1","type":"token_ok"},"context":{}}
849
+ {"timestamp":"2025-12-30T08:19:20.750Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"aea6dbae-9f29-476f-aae0-eb0baed57b63","type":"token_ok"},"context":{}}
850
+ {"timestamp":"2025-12-30T08:22:20.864Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"9b5ff199-4e82-4c52-ac48-63c3f113bce8","type":"token_ok"},"context":{}}
851
+ {"timestamp":"2025-12-30T08:25:20.986Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"c997c7e1-df65-444b-9f83-256def74479f","type":"token_ok"},"context":{}}
@@ -2398,3 +2398,156 @@
2398
2398
  {"timestamp":"2025-12-30T05:52:15.286Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2399
2399
  {"timestamp":"2025-12-30T05:52:15.287Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2400
2400
  {"timestamp":"2025-12-30T05:52:15.297Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2401
+ {"timestamp":"2025-12-30T05:55:15.405Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2402
+ {"timestamp":"2025-12-30T05:55:15.406Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2403
+ {"timestamp":"2025-12-30T05:55:15.416Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2404
+ {"timestamp":"2025-12-30T05:58:15.519Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2405
+ {"timestamp":"2025-12-30T05:58:15.520Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2406
+ {"timestamp":"2025-12-30T05:58:15.529Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2407
+ {"timestamp":"2025-12-30T06:01:15.628Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2408
+ {"timestamp":"2025-12-30T06:01:15.629Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2409
+ {"timestamp":"2025-12-30T06:01:15.639Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2410
+ {"timestamp":"2025-12-30T06:04:15.741Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2411
+ {"timestamp":"2025-12-30T06:04:15.742Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2412
+ {"timestamp":"2025-12-30T06:04:15.752Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2413
+ {"timestamp":"2025-12-30T06:07:15.852Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2414
+ {"timestamp":"2025-12-30T06:07:15.853Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2415
+ {"timestamp":"2025-12-30T06:07:15.863Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2416
+ {"timestamp":"2025-12-30T06:10:15.968Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2417
+ {"timestamp":"2025-12-30T06:10:15.969Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2418
+ {"timestamp":"2025-12-30T06:10:15.978Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2419
+ {"timestamp":"2025-12-30T06:13:16.086Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2420
+ {"timestamp":"2025-12-30T06:13:16.087Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2421
+ {"timestamp":"2025-12-30T06:13:16.096Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2422
+ {"timestamp":"2025-12-30T06:16:16.193Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2423
+ {"timestamp":"2025-12-30T06:16:16.195Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2424
+ {"timestamp":"2025-12-30T06:16:16.204Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2425
+ {"timestamp":"2025-12-30T06:19:16.295Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2426
+ {"timestamp":"2025-12-30T06:19:16.296Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2427
+ {"timestamp":"2025-12-30T06:19:16.307Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2428
+ {"timestamp":"2025-12-30T06:22:16.392Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2429
+ {"timestamp":"2025-12-30T06:22:16.393Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2430
+ {"timestamp":"2025-12-30T06:22:16.404Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2431
+ {"timestamp":"2025-12-30T06:25:16.490Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2432
+ {"timestamp":"2025-12-30T06:25:16.491Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2433
+ {"timestamp":"2025-12-30T06:25:16.501Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2434
+ {"timestamp":"2025-12-30T06:28:16.615Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2435
+ {"timestamp":"2025-12-30T06:28:16.616Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2436
+ {"timestamp":"2025-12-30T06:28:16.628Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2437
+ {"timestamp":"2025-12-30T06:31:16.725Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2438
+ {"timestamp":"2025-12-30T06:31:16.727Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2439
+ {"timestamp":"2025-12-30T06:31:16.739Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2440
+ {"timestamp":"2025-12-30T06:34:16.842Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2441
+ {"timestamp":"2025-12-30T06:34:16.843Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2442
+ {"timestamp":"2025-12-30T06:34:16.853Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2443
+ {"timestamp":"2025-12-30T06:37:16.941Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2444
+ {"timestamp":"2025-12-30T06:37:16.942Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2445
+ {"timestamp":"2025-12-30T06:37:16.952Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2446
+ {"timestamp":"2025-12-30T06:40:17.038Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2447
+ {"timestamp":"2025-12-30T06:40:17.039Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2448
+ {"timestamp":"2025-12-30T06:40:17.049Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2449
+ {"timestamp":"2025-12-30T06:43:17.139Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2450
+ {"timestamp":"2025-12-30T06:43:17.141Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2451
+ {"timestamp":"2025-12-30T06:43:17.151Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2452
+ {"timestamp":"2025-12-30T06:46:17.253Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2453
+ {"timestamp":"2025-12-30T06:46:17.254Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2454
+ {"timestamp":"2025-12-30T06:46:17.265Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2455
+ {"timestamp":"2025-12-30T06:49:17.367Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2456
+ {"timestamp":"2025-12-30T06:49:17.368Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2457
+ {"timestamp":"2025-12-30T06:49:17.377Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2458
+ {"timestamp":"2025-12-30T06:52:17.482Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2459
+ {"timestamp":"2025-12-30T06:52:17.483Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2460
+ {"timestamp":"2025-12-30T06:52:17.492Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2461
+ {"timestamp":"2025-12-30T06:55:17.600Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2462
+ {"timestamp":"2025-12-30T06:55:17.601Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2463
+ {"timestamp":"2025-12-30T06:55:17.611Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2464
+ {"timestamp":"2025-12-30T06:58:17.690Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2465
+ {"timestamp":"2025-12-30T06:58:17.691Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2466
+ {"timestamp":"2025-12-30T06:58:17.701Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2467
+ {"timestamp":"2025-12-30T07:01:17.803Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2468
+ {"timestamp":"2025-12-30T07:01:17.804Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2469
+ {"timestamp":"2025-12-30T07:01:17.814Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2470
+ {"timestamp":"2025-12-30T07:04:17.916Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2471
+ {"timestamp":"2025-12-30T07:04:17.917Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2472
+ {"timestamp":"2025-12-30T07:04:17.927Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2473
+ {"timestamp":"2025-12-30T07:07:18.027Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2474
+ {"timestamp":"2025-12-30T07:07:18.028Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2475
+ {"timestamp":"2025-12-30T07:07:18.037Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2476
+ {"timestamp":"2025-12-30T07:10:18.146Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2477
+ {"timestamp":"2025-12-30T07:10:18.147Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2478
+ {"timestamp":"2025-12-30T07:10:18.156Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2479
+ {"timestamp":"2025-12-30T07:13:18.235Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2480
+ {"timestamp":"2025-12-30T07:13:18.236Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2481
+ {"timestamp":"2025-12-30T07:13:18.246Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2482
+ {"timestamp":"2025-12-30T07:16:18.354Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2483
+ {"timestamp":"2025-12-30T07:16:18.355Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2484
+ {"timestamp":"2025-12-30T07:16:18.366Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2485
+ {"timestamp":"2025-12-30T07:19:18.472Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2486
+ {"timestamp":"2025-12-30T07:19:18.473Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2487
+ {"timestamp":"2025-12-30T07:19:18.484Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2488
+ {"timestamp":"2025-12-30T07:22:18.588Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2489
+ {"timestamp":"2025-12-30T07:22:18.589Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2490
+ {"timestamp":"2025-12-30T07:22:18.600Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2491
+ {"timestamp":"2025-12-30T07:25:18.693Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2492
+ {"timestamp":"2025-12-30T07:25:18.694Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2493
+ {"timestamp":"2025-12-30T07:25:18.705Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2494
+ {"timestamp":"2025-12-30T07:28:18.795Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2495
+ {"timestamp":"2025-12-30T07:28:18.797Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2496
+ {"timestamp":"2025-12-30T07:28:18.809Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2497
+ {"timestamp":"2025-12-30T07:31:18.919Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2498
+ {"timestamp":"2025-12-30T07:31:18.920Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2499
+ {"timestamp":"2025-12-30T07:31:18.929Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2500
+ {"timestamp":"2025-12-30T07:34:19.028Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2501
+ {"timestamp":"2025-12-30T07:34:19.030Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2502
+ {"timestamp":"2025-12-30T07:34:19.040Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2503
+ {"timestamp":"2025-12-30T07:37:19.142Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2504
+ {"timestamp":"2025-12-30T07:37:19.143Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2505
+ {"timestamp":"2025-12-30T07:37:19.154Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2506
+ {"timestamp":"2025-12-30T07:40:19.262Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2507
+ {"timestamp":"2025-12-30T07:40:19.263Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2508
+ {"timestamp":"2025-12-30T07:40:19.274Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2509
+ {"timestamp":"2025-12-30T07:43:19.368Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2510
+ {"timestamp":"2025-12-30T07:43:19.369Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2511
+ {"timestamp":"2025-12-30T07:43:19.379Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2512
+ {"timestamp":"2025-12-30T07:46:19.487Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2513
+ {"timestamp":"2025-12-30T07:46:19.488Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2514
+ {"timestamp":"2025-12-30T07:46:19.497Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2515
+ {"timestamp":"2025-12-30T07:49:19.603Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2516
+ {"timestamp":"2025-12-30T07:49:19.605Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2517
+ {"timestamp":"2025-12-30T07:49:19.614Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2518
+ {"timestamp":"2025-12-30T07:52:19.721Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2519
+ {"timestamp":"2025-12-30T07:52:19.722Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2520
+ {"timestamp":"2025-12-30T07:52:19.736Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2521
+ {"timestamp":"2025-12-30T07:55:19.833Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2522
+ {"timestamp":"2025-12-30T07:55:19.834Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2523
+ {"timestamp":"2025-12-30T07:55:19.845Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2524
+ {"timestamp":"2025-12-30T07:58:19.931Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2525
+ {"timestamp":"2025-12-30T07:58:19.933Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2526
+ {"timestamp":"2025-12-30T07:58:19.944Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2527
+ {"timestamp":"2025-12-30T08:01:20.047Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2528
+ {"timestamp":"2025-12-30T08:01:20.048Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2529
+ {"timestamp":"2025-12-30T08:01:20.058Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2530
+ {"timestamp":"2025-12-30T08:04:20.162Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2531
+ {"timestamp":"2025-12-30T08:04:20.163Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2532
+ {"timestamp":"2025-12-30T08:04:20.174Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2533
+ {"timestamp":"2025-12-30T08:07:20.280Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2534
+ {"timestamp":"2025-12-30T08:07:20.281Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2535
+ {"timestamp":"2025-12-30T08:07:20.291Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2536
+ {"timestamp":"2025-12-30T08:10:20.399Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2537
+ {"timestamp":"2025-12-30T08:10:20.400Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2538
+ {"timestamp":"2025-12-30T08:10:20.410Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2539
+ {"timestamp":"2025-12-30T08:13:20.505Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2540
+ {"timestamp":"2025-12-30T08:13:20.506Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2541
+ {"timestamp":"2025-12-30T08:13:20.516Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2542
+ {"timestamp":"2025-12-30T08:16:20.621Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2543
+ {"timestamp":"2025-12-30T08:16:20.622Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2544
+ {"timestamp":"2025-12-30T08:16:20.631Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2545
+ {"timestamp":"2025-12-30T08:19:20.740Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2546
+ {"timestamp":"2025-12-30T08:19:20.741Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2547
+ {"timestamp":"2025-12-30T08:19:20.750Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2548
+ {"timestamp":"2025-12-30T08:22:20.854Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2549
+ {"timestamp":"2025-12-30T08:22:20.855Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2550
+ {"timestamp":"2025-12-30T08:22:20.865Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
2551
+ {"timestamp":"2025-12-30T08:25:20.975Z","level":"debug","component":"TokenMonitor","event":"CURSOR_SERVICE_USING_FILE","data":{"usage":{"tokensUsed":0,"maxTokens":1000000,"percentUsed":72.36585,"timestamp":"2025-12-29T15:38:11.174Z","source":"file","untrusted":false}},"context":{}}
2552
+ {"timestamp":"2025-12-30T08:25:20.976Z","level":"debug","component":"TokenMonitor","event":"TOKEN_MONITOR_METRICS","data":{"timestamp":"2025-12-29T15:38:11.174Z","tokensUsed":0,"maxTokens":1000000,"percentUsed":0,"remainingTokens":1000000,"level":"ok","source":"file","stale":true,"untrusted":false},"context":{}}
2553
+ {"timestamp":"2025-12-30T08:25:20.986Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":0,"tokensUsed":0,"maxTokens":1000000,"source":"file","stale":true,"untrusted":false},"context":{"message":"Result level=ok percent=0% used=0/1000000 source=file (stale)"}}
@@ -18,7 +18,7 @@ class PlaybookRunner {
18
18
  run(id) {
19
19
  const playbook = this.playbooks[id];
20
20
  if (!playbook) {
21
- throw new Error(`Playbook '${id}' not found`);
21
+ throw new NotFoundError(`Playbook '${id}'`);
22
22
  }
23
23
 
24
24
  for (const step of playbook.steps) {
@@ -110,7 +110,7 @@ fi
110
110
 
111
111
  # Try node_modules/.bin first (works with npm install)
112
112
  if [ -f "node_modules/.bin/ast-hooks" ]; then
113
- OUTPUT=$(node_modules/.bin/ast-hooks ast 2>&1)
113
+ OUTPUT=$(node_modules/.bin/ast-hooks ast --staged 2>&1)
114
114
  EXIT_CODE=$?
115
115
  echo "$OUTPUT"
116
116
  if [ $EXIT_CODE -ne 0 ]; then
@@ -63,7 +63,7 @@ class McpConfigurator {
63
63
  }
64
64
  }
65
65
 
66
- const serverId = 'ast-intelligence-automation';
66
+ const serverId = computeServerIdForRepo(this.targetRoot);
67
67
  const mcpConfig = {
68
68
  mcpServers: {
69
69
  [serverId]: {
@@ -98,10 +98,6 @@ class McpConfigurator {
98
98
 
99
99
  existing.mcpServers[serverId] = mcpConfig.mcpServers[serverId];
100
100
 
101
- if (existing.mcpServers['ast-intelligence-automation']) {
102
- existing.mcpServers['ast-intelligence-automation'] = mcpConfig.mcpServers[serverId];
103
- }
104
-
105
101
  fs.writeFileSync(globalConfigPath, JSON.stringify(existing, null, 2));
106
102
  this.logSuccess(`Updated global Windsurf MCP at ${globalConfigPath}`);
107
103
  if (this.logger) this.logger.info('MCP_GLOBAL_UPDATED', { path: globalConfigPath });
@@ -121,7 +121,21 @@ const commands = {
121
121
  },
122
122
 
123
123
  ast: () => {
124
- execSync(`node ${path.join(HOOKS_ROOT, 'infrastructure/ast/ast-intelligence.js')}`, { stdio: 'inherit' });
124
+ const env = { ...process.env };
125
+ const filteredArgs = [];
126
+
127
+ for (const arg of args) {
128
+ if (arg === '--staged') {
129
+ env.STAGING_ONLY_MODE = '1';
130
+ } else {
131
+ filteredArgs.push(arg);
132
+ }
133
+ }
134
+
135
+ execSync(
136
+ `node ${path.join(HOOKS_ROOT, 'infrastructure/ast/ast-intelligence.js')} ${filteredArgs.join(' ')}`,
137
+ { stdio: 'inherit', env }
138
+ );
125
139
  },
126
140
 
127
141
  install: () => {
@@ -2,40 +2,10 @@
2
2
  const fs = require('fs');
3
3
  const path = require('path');
4
4
  const os = require('os');
5
- const crypto = require('crypto');
6
-
7
- function slugifyId(input) {
8
- return String(input || '')
9
- .trim()
10
- .toLowerCase()
11
- .replace(/[^a-z0-9]+/g, '-')
12
- .replace(/^-+|-+$/g, '')
13
- .slice(0, 48);
14
- }
15
-
16
- function computeRepoFingerprint(repoRoot) {
17
- try {
18
- const real = fs.realpathSync(repoRoot);
19
- return crypto.createHash('sha1').update(real).digest('hex').slice(0, 8);
20
- } catch {
21
- return crypto.createHash('sha1').update(String(repoRoot || '')).digest('hex').slice(0, 8);
22
- }
23
- }
24
-
25
- function computeServerIdForRepo(repoRoot) {
26
- const legacyServerId = 'ast-intelligence-automation';
27
- const forced = (process.env.MCP_SERVER_ID || '').trim();
28
- if (forced.length > 0) return forced;
29
-
30
- const repoName = path.basename(repoRoot || process.cwd());
31
- const slug = slugifyId(repoName) || 'repo';
32
- const fp = computeRepoFingerprint(repoRoot);
33
- return `${legacyServerId}-${slug}-${fp}`;
34
- }
35
5
 
36
6
  const MCP_CONFIG = {
37
7
  mcpServers: {
38
- '__SERVER_ID__': {
8
+ 'ast-intelligence-automation': {
39
9
  command: 'node',
40
10
  type: 'stdio',
41
11
  args: ['./scripts/hooks-system/infrastructure/mcp/ast-intelligence-automation.js'],
@@ -60,16 +30,14 @@ function detectIDE() {
60
30
 
61
31
  function configureMCP() {
62
32
  const cwd = process.cwd();
63
- console.log(' Pumuki Hooks - MCP Configuration\n');
64
-
65
- const serverId = computeServerIdForRepo(cwd);
33
+ console.log('🔌 Pumuki Hooks - MCP Configuration\n');
66
34
 
67
35
  const ide = detectIDE();
68
36
  if (!ide) {
69
- console.log(' No supported IDE detected (Cursor, Windsurf, VSCode)');
37
+ console.log('⚠️ No supported IDE detected (Cursor, Windsurf, VSCode)');
70
38
  console.log(' Creating local .cursor/mcp.json instead.\n');
71
39
  } else {
72
- console.log(` Detected IDE: ${ide.name}`);
40
+ console.log(`✅ Detected IDE: ${ide.name}`);
73
41
  }
74
42
 
75
43
  const mcpDir = path.join(cwd, '.cursor');
@@ -80,31 +48,23 @@ function configureMCP() {
80
48
  }
81
49
 
82
50
  const config = JSON.parse(JSON.stringify(MCP_CONFIG));
83
- config.mcpServers[serverId] = config.mcpServers['__SERVER_ID__'];
84
- delete config.mcpServers['__SERVER_ID__'];
85
-
86
- config.mcpServers[serverId].args[0] =
51
+ config.mcpServers['ast-intelligence-automation'].args[0] =
87
52
  path.join(cwd, 'scripts/hooks-system/infrastructure/mcp/ast-intelligence-automation.js');
88
- config.mcpServers[serverId].env.REPO_ROOT = cwd;
53
+ config.mcpServers['ast-intelligence-automation'].env.REPO_ROOT = cwd;
89
54
 
90
55
  if (fs.existsSync(mcpFile)) {
91
56
  const existing = JSON.parse(fs.readFileSync(mcpFile, 'utf8'));
92
- existing.mcpServers = { ...(existing.mcpServers || {}), ...config.mcpServers };
93
-
94
- // Remove legacy id to avoid collisions across multiple open workspaces
95
- if (existing.mcpServers['ast-intelligence-automation']) {
96
- delete existing.mcpServers['ast-intelligence-automation'];
97
- }
57
+ existing.mcpServers = { ...existing.mcpServers, ...config.mcpServers };
98
58
  fs.writeFileSync(mcpFile, JSON.stringify(existing, null, 2));
99
- console.log(' Updated existing .cursor/mcp.json');
59
+ console.log(' Updated existing .cursor/mcp.json');
100
60
  } else {
101
61
  fs.writeFileSync(mcpFile, JSON.stringify(config, null, 2));
102
- console.log(' Created .cursor/mcp.json');
62
+ console.log(' Created .cursor/mcp.json');
103
63
  }
104
64
 
105
- console.log('\n MCP Server configured:');
106
- console.log(` - ${serverId}`);
107
- console.log('\n Restart your IDE to activate the MCP server.');
65
+ console.log('\n📋 MCP Server configured:');
66
+ console.log(' - ast-intelligence-automation');
67
+ console.log('\n🔄 Restart your IDE to activate the MCP server.');
108
68
  }
109
69
 
110
70
  if (require.main === module) {
@@ -5,7 +5,7 @@
5
5
  "platforms": [
6
6
  "backend"
7
7
  ],
8
- "created": "2025-12-30T05:45:54.907Z"
8
+ "created": "2025-12-25T22:02:53.249Z"
9
9
  },
10
10
  "architecture": {
11
11
  "pattern": "FEATURE_FIRST_CLEAN_DDD",
@@ -1,3 +1,5 @@
1
+ const { ValidationError } = require('../errors');
2
+
1
3
  class DomainEvent {
2
4
  constructor(type, payload) {
3
5
  this.type = type;
@@ -7,8 +9,8 @@ class DomainEvent {
7
9
  }
8
10
 
9
11
  validate() {
10
- if (!this.type) throw new Error('Event type is required');
11
- if (!this.payload) throw new Error('Event payload is required');
12
+ if (!this.type) throw new ValidationError('Event type is required', 'type', this.type);
13
+ if (!this.payload) throw new ValidationError('Event payload is required', 'payload', this.payload);
12
14
  return true;
13
15
  }
14
16
 
@@ -29,7 +31,9 @@ class EvidenceStaleEvent extends DomainEvent {
29
31
 
30
32
  validate() {
31
33
  super.validate();
32
- if (!this.payload.evidencePath) throw new Error('Evidence path is required');
34
+ if (!this.payload.evidencePath) {
35
+ throw new ValidationError('Evidence path is required', 'payload.evidencePath', this.payload.evidencePath);
36
+ }
33
37
  }
34
38
  }
35
39
 
@@ -41,8 +45,12 @@ class GitFlowViolationEvent extends DomainEvent {
41
45
 
42
46
  validate() {
43
47
  super.validate();
44
- if (!this.payload.branch) throw new Error('Branch name is required');
45
- if (!this.payload.violation) throw new Error('Violation details are required');
48
+ if (!this.payload.branch) {
49
+ throw new ValidationError('Branch name is required', 'payload.branch', this.payload.branch);
50
+ }
51
+ if (!this.payload.violation) {
52
+ throw new ValidationError('Violation details are required', 'payload.violation', this.payload.violation);
53
+ }
46
54
  }
47
55
  }
48
56
 
@@ -54,7 +62,9 @@ class AstCriticalFoundEvent extends DomainEvent {
54
62
 
55
63
  validate() {
56
64
  super.validate();
57
- if (!Array.isArray(this.payload.findings)) throw new Error('Findings must be an array');
65
+ if (!Array.isArray(this.payload.findings)) {
66
+ throw new ValidationError('Findings must be an array', 'payload.findings', this.payload.findings);
67
+ }
58
68
  }
59
69
  }
60
70
 
@@ -28,7 +28,30 @@ const { execSync } = require('child_process');
28
28
  const MCP_VERSION = '2024-11-05';
29
29
 
30
30
  // Configuration - LAZY LOADING to avoid blocking MCP initialization
31
- const REPO_ROOT = process.env.REPO_ROOT || process.cwd();
31
+ function safeGitRoot(startDir) {
32
+ try {
33
+ const out = execSync('git rev-parse --show-toplevel', {
34
+ cwd: startDir,
35
+ encoding: 'utf8',
36
+ stdio: ['ignore', 'pipe', 'ignore']
37
+ });
38
+ const root = String(out || '').trim();
39
+ return root || null;
40
+ } catch {
41
+ return null;
42
+ }
43
+ }
44
+
45
+ function resolveRepoRoot() {
46
+ const envRoot = (process.env.REPO_ROOT || '').trim() || null;
47
+ const cwdRoot = safeGitRoot(process.cwd());
48
+ // Prefer explicit REPO_ROOT to avoid cross-repo bleed when MCP server is launched from another workspace
49
+ if (envRoot) return envRoot;
50
+ if (cwdRoot) return cwdRoot;
51
+ return process.cwd();
52
+ }
53
+
54
+ const REPO_ROOT = resolveRepoRoot();
32
55
 
33
56
  // Lazy-loaded CompositionRoot - only initialized when first needed
34
57
  let _compositionRoot = null;
@@ -1026,11 +1026,11 @@ run_ast_intelligence() {
1026
1026
  done
1027
1027
 
1028
1028
  # Execute AST with proper error handling and NODE_PATH
1029
- # IMPORTANT: run from ROOT_DIR so git rev-parse resolves project root correctly
1029
+ # Change to HOOKS_SYSTEM_DIR so Node.js resolves modules correctly
1030
1030
  if [[ -n "$node_path_value" ]]; then
1031
- ast_output=$(cd "$ROOT_DIR" && export NODE_PATH="$node_path_value" && export AUDIT_TMP="$TMP_DIR" && export AUDIT_LIBRARY="${AUDIT_LIBRARY:-false}" && "$node_bin" "${AST_DIR}/ast-intelligence.js" 2>&1) || ast_exit_code=$?
1031
+ ast_output=$(cd "$HOOKS_SYSTEM_DIR" && export NODE_PATH="$node_path_value" && export AUDIT_TMP="$TMP_DIR" && export AUDIT_LIBRARY="${AUDIT_LIBRARY:-false}" && "$node_bin" "${AST_DIR}/ast-intelligence.js" 2>&1) || ast_exit_code=$?
1032
1032
  else
1033
- ast_output=$(cd "$ROOT_DIR" && export AUDIT_TMP="$TMP_DIR" && export AUDIT_LIBRARY="${AUDIT_LIBRARY:-false}" && "$node_bin" "${AST_DIR}/ast-intelligence.js" 2>&1) || ast_exit_code=$?
1033
+ ast_output=$(cd "$HOOKS_SYSTEM_DIR" && export AUDIT_TMP="$TMP_DIR" && export AUDIT_LIBRARY="${AUDIT_LIBRARY:-false}" && "$node_bin" "${AST_DIR}/ast-intelligence.js" 2>&1) || ast_exit_code=$?
1034
1034
  fi
1035
1035
 
1036
1036
  # Check if AST script failed
@@ -19,3 +19,6 @@
19
19
  {"timestamp":"2025-12-29T14:01:17.350Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":10,"tokensUsed":100000,"maxTokens":1000000,"source":"realtime","stale":false},"context":{"message":"Result level=ok percent=10% used=100000/1000000 source=realtime"}}
20
20
  {"timestamp":"2025-12-29T14:01:17.352Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"warning","percentUsed":91,"tokensUsed":910000,"maxTokens":1000000,"source":"fallback","stale":false},"context":{"message":"Result level=warning percent=91% used=910000/1000000 source=fallback"}}
21
21
  {"timestamp":"2025-12-29T14:01:17.352Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"critical","percentUsed":98,"tokensUsed":980000,"maxTokens":1000000,"source":"realtime","stale":true},"context":{"message":"Result level=critical percent=98% used=980000/1000000 source=realtime (stale)"}}
22
+ {"timestamp":"2025-12-30T08:18:15.791Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"ok","percentUsed":10,"tokensUsed":100000,"maxTokens":1000000,"source":"realtime","stale":false},"context":{"message":"Result level=ok percent=10% used=100000/1000000 source=realtime"}}
23
+ {"timestamp":"2025-12-30T08:18:15.794Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"warning","percentUsed":91,"tokensUsed":910000,"maxTokens":1000000,"source":"fallback","stale":false},"context":{"message":"Result level=warning percent=91% used=910000/1000000 source=fallback"}}
24
+ {"timestamp":"2025-12-30T08:18:15.794Z","level":"info","component":"TokenMonitor","event":"TOKEN_MONITOR_RESULT","data":{"level":"critical","percentUsed":98,"tokensUsed":980000,"maxTokens":1000000,"source":"realtime","stale":true},"context":{"message":"Result level=critical percent=98% used=980000/1000000 source=realtime (stale)"}}