pumuki-ast-hooks 5.3.16 → 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.
@@ -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.16",
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-30T06:43:17.150Z
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":{}}
@@ -815,3 +815,37 @@
815
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
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
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":{}}
@@ -2449,3 +2449,105 @@
2449
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
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
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
@@ -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: () => {
@@ -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
 
@@ -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)"}}