pumuki-ast-hooks 5.3.16 → 5.3.18

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.
Files changed (41) hide show
  1. package/docs/VIOLATIONS_RESOLUTION_PLAN.md +95 -0
  2. package/docs/alerting-system.md +51 -0
  3. package/docs/observability.md +36 -0
  4. package/docs/type-safety.md +8 -0
  5. package/package.json +1 -1
  6. package/scripts/hooks-system/.AI_TOKEN_STATUS.txt +1 -1
  7. package/scripts/hooks-system/.audit-reports/auto-recovery.log +2 -0
  8. package/scripts/hooks-system/.audit-reports/install-wizard.log +8 -0
  9. package/scripts/hooks-system/.audit-reports/notifications.log +45 -0
  10. package/scripts/hooks-system/.audit-reports/token-monitor.log +174 -0
  11. package/scripts/hooks-system/application/CompositionRoot.js +73 -24
  12. package/scripts/hooks-system/application/services/DynamicRulesLoader.js +2 -1
  13. package/scripts/hooks-system/application/services/PlaybookRunner.js +1 -1
  14. package/scripts/hooks-system/application/services/RealtimeGuardService.js +85 -15
  15. package/scripts/hooks-system/application/services/guard/GuardAutoManagerService.js +31 -2
  16. package/scripts/hooks-system/application/services/guard/GuardConfig.js +17 -9
  17. package/scripts/hooks-system/application/services/guard/GuardHeartbeatMonitor.js +6 -9
  18. package/scripts/hooks-system/application/services/guard/GuardProcessManager.js +29 -0
  19. package/scripts/hooks-system/application/services/installation/GitEnvironmentService.js +4 -1
  20. package/scripts/hooks-system/application/services/installation/McpConfigurator.js +2 -1
  21. package/scripts/hooks-system/application/services/logging/AuditLogger.js +88 -0
  22. package/scripts/hooks-system/application/services/logging/UnifiedLogger.js +13 -4
  23. package/scripts/hooks-system/application/services/monitoring/EvidenceMonitorService.js +7 -3
  24. package/scripts/hooks-system/application/services/token/TokenMetricsService.js +14 -1
  25. package/scripts/hooks-system/bin/cli.js +15 -1
  26. package/scripts/hooks-system/config/env.js +33 -0
  27. package/scripts/hooks-system/domain/events/__tests__/EventBus.spec.js +33 -0
  28. package/scripts/hooks-system/domain/events/index.js +32 -6
  29. package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidAnalysisOrchestrator.js +3 -2
  30. package/scripts/hooks-system/infrastructure/ast/ast-core.js +12 -20
  31. package/scripts/hooks-system/infrastructure/ast/ast-intelligence.js +8 -18
  32. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/BackendPatternDetector.js +2 -1
  33. package/scripts/hooks-system/infrastructure/ast/backend/ast-backend.js +10 -8
  34. package/scripts/hooks-system/infrastructure/ast/frontend/ast-frontend.js +196 -196
  35. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSASTIntelligentAnalyzer.js +3 -2
  36. package/scripts/hooks-system/infrastructure/hooks/skill-activation-prompt.js +3 -2
  37. package/scripts/hooks-system/infrastructure/logging/UnifiedLoggerFactory.js +35 -5
  38. package/scripts/hooks-system/infrastructure/orchestration/intelligent-audit.js +86 -16
  39. package/scripts/hooks-system/infrastructure/telemetry/metrics-server.js +51 -2
  40. package/scripts/hooks-system/infrastructure/validators/enforce-english-literals.js +6 -8
  41. package/scripts/hooks-system/infrastructure/watchdog/__tests__/.audit-reports/token-monitor.log +3 -0
@@ -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 | No aplica (repo JS puro sin TS); se documenta enfoque de seguridad de tipos | [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 | No aplica al hook-system (no expone servidor HTTP); la detección queda en proyectos auditados | [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).
@@ -0,0 +1,51 @@
1
+ # Alerting system (hook-system)
2
+
3
+ This repo does not expose its own HTTP server; metrics are published via `/metrics` in `metrics-server.js`, reading `.audit_tmp/hook-metrics.jsonl`. Alerts rely on `recordMetric` events from critical services (guards, scheduler).
4
+
5
+ ## Key metrics
6
+ - `hook_events_total{hook="guard_auto_manager",status="lock_fail|start|stop"}`
7
+ - `hook_events_total{hook="realtime_guard",status="start|stop"}`
8
+ - `hook_events_total{hook="git_tree",status="dirty|clean"}`
9
+ - `hook_events_total{hook="token_monitor",status="start|fail"}`
10
+ - `hook_events_total{hook="gitflow_autosync",status="enabled|sync_success"}`
11
+ - `hook_events_total{hook="evidence",status="stale|auto_refresh_success"}`
12
+
13
+ ## Alert examples (Prometheus)
14
+ ```yaml
15
+ - alert: GuardLockFailure
16
+ expr: increase(hook_events_total{hook="guard_auto_manager",status="lock_fail"}[5m]) > 0
17
+ for: 5m
18
+ labels: { severity: critical }
19
+ annotations:
20
+ summary: "Guard auto manager could not acquire lock"
21
+ description: "Check duplicate instance or orphan PID file"
22
+
23
+ - alert: GitTreeDirtyPersistent
24
+ expr: increase(hook_events_total{hook="git_tree",status="dirty"}[15m]) >= 3
25
+ for: 0m
26
+ labels: { severity: warning }
27
+ annotations:
28
+ summary: "Repo dirty repeatedly"
29
+ description: "More than 3 dirty detections in 15m"
30
+
31
+ - alert: EvidenceStale
32
+ expr: increase(hook_events_total{hook="evidence",status="stale"}[30m]) > 0
33
+ for: 0m
34
+ labels: { severity: warning }
35
+ annotations:
36
+ summary: "Evidence is stale"
37
+ description: "Guard detected evidence outside SLA"
38
+
39
+ - alert: TokenMonitorFail
40
+ expr: increase(hook_events_total{hook="token_monitor",status="fail"}[10m]) > 0
41
+ for: 0m
42
+ labels: { severity: warning }
43
+ annotations:
44
+ summary: "Token monitor failed to start"
45
+ description: "Check script/token monitor availability"
46
+ ```
47
+
48
+ ## Operations
49
+ - Run `metrics-server.js` (port `HOOK_METRICS_PORT`, default 9464) to expose `/metrics`.
50
+ - Scrape Prometheus apuntando a `http://<host>:<port>/metrics`.
51
+ - Ajustar umbrales/ventanas según ruido y frecuencia de uso.
@@ -0,0 +1,36 @@
1
+ # Observability (Prometheus) - hook-system
2
+
3
+ The hook-system exposes plaintext metrics via `/metrics` (`infrastructure/telemetry/metrics-server.js`). Metrics are based on `hook_events_total` emitted by `recordMetric` from critical services (GuardAutoManager, RealtimeGuardService, HookSystemScheduler, etc.).
4
+
5
+ ## Exposure
6
+ - Run `metrics-server.js` (port `HOOK_METRICS_PORT`, default 9464).
7
+ - Data source: `.audit_tmp/hook-metrics.jsonl` (append-only).
8
+ - Endpoint: `http://<host>:<port>/metrics`.
9
+
10
+ ## Available metrics (main)
11
+ - `hook_events_total{hook="guard_auto_manager",status="lock_fail|start|stop"}`
12
+ - `hook_events_total{hook="realtime_guard",status="start|stop"}`
13
+ - `hook_events_total{hook="git_tree",status="dirty|clean"}`
14
+ - `hook_events_total{hook="token_monitor",status="start|fail"}`
15
+ - `hook_events_total{hook="gitflow_autosync",status="enabled|sync_success"}`
16
+ - `hook_events_total{hook="evidence",status="stale|auto_refresh_success"}`
17
+ - `hook_events_total{hook="autonomous-orchestrator",status="success|failure"}`
18
+
19
+ ## Prometheus scrape (example)
20
+ ```yaml
21
+ scrape_configs:
22
+ - job_name: 'hook-system'
23
+ metrics_path: /metrics
24
+ static_configs:
25
+ - targets: ['localhost:9464']
26
+ ```
27
+
28
+ ## Base dashboard (Grafana example)
29
+ - Panel 1: "Guard status" -> `increase(hook_events_total{hook="guard_auto_manager"}[5m])`
30
+ - Panel 2: "Git tree dirty" -> `increase(hook_events_total{hook="git_tree",status="dirty"}[15m])`
31
+ - Panel 3: "Evidence stale" -> `increase(hook_events_total{hook="evidence",status="stale"}[30m])`
32
+ - Panel 4: "Token monitor fails" -> `increase(hook_events_total{hook="token_monitor",status="fail"}[10m])`
33
+
34
+ ## Notes
35
+ - Adjust window sizes `[]` based on noise/usage.
36
+ - `.audit_tmp/hook-metrics.jsonl` can be rotated externally if it grows too much; `/metrics` recomputes from the current file.
@@ -0,0 +1,8 @@
1
+ # Type safety (hook-system)
2
+
3
+ The hook-system is 100% JavaScript (no TS build), so strict TypeScript “no-any” migration does not apply here. Type safety is enforced through:
4
+ - Unit/critical tests (guards, event bus, scheduler) and implicit contracts in services.
5
+ - Input validation in events (DomainEvent and derivatives) and defensive checks in services.
6
+ - No TS transpilation/bundle in this repo; CORS/AST analyses run on audited projects that may use TS.
7
+
8
+ For audited projects (outside this repo), use strict TS and avoid `any`; here we only document non-applicability.
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.18",
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:58:22.226Z
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,48 @@
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":{}}
852
+ {"timestamp":"2025-12-30T08:28:21.114Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"c0ff8c81-b221-41e5-b794-47f531c4695c","type":"token_ok"},"context":{}}
853
+ {"timestamp":"2025-12-30T08:31:21.232Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"f1fd65fe-8c97-4cf7-9e69-e78adcee7f6a","type":"token_ok"},"context":{}}
854
+ {"timestamp":"2025-12-30T08:34:21.331Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"813aa1ac-d446-409a-9073-b8926977e1e3","type":"token_ok"},"context":{}}
855
+ {"timestamp":"2025-12-30T08:37:21.446Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"3302369a-dfd0-412f-9371-0f42e2d38c43","type":"token_ok"},"context":{}}
856
+ {"timestamp":"2025-12-30T08:40:21.564Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"99b37ef1-a097-4813-a549-f5397704155e","type":"token_ok"},"context":{}}
857
+ {"timestamp":"2025-12-30T08:43:21.675Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"a4910417-b3c5-44cb-bbaf-17a058951161","type":"token_ok"},"context":{}}
858
+ {"timestamp":"2025-12-30T08:46:21.788Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"d354de41-d835-44da-868f-0ee4b6f446b0","type":"token_ok"},"context":{}}
859
+ {"timestamp":"2025-12-30T08:49:21.901Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"b8d841eb-439a-4ea8-b90f-25555315f26d","type":"token_ok"},"context":{}}
860
+ {"timestamp":"2025-12-30T08:52:22.017Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"9c11c1b3-3816-4a02-b776-7298606a33f1","type":"token_ok"},"context":{}}
861
+ {"timestamp":"2025-12-30T08:55:22.116Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"5440bbb5-a069-4be6-a84f-1a8e525e2ebe","type":"token_ok"},"context":{}}
862
+ {"timestamp":"2025-12-30T08:58:22.227Z","level":"debug","component":"NotificationCenter","event":"Notification enqueued","data":{"id":"22a08362-af10-4d6d-8e4d-011afe460c7d","type":"token_ok"},"context":{}}