pumuki-ast-hooks 5.6.9 → 5.6.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pumuki-ast-hooks",
3
- "version": "5.6.9",
3
+ "version": "5.6.10",
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": {
@@ -3,3 +3,8 @@
3
3
  {"timestamp":"2026-01-11T00:48:07.599Z","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
4
  {"timestamp":"2026-01-11T14:18:31.035Z","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":{}}
5
5
  {"timestamp":"2026-01-11T18:11:22.230Z","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
+ {"timestamp":"2026-01-11T18:41:52.124Z","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":{}}
7
+ {"timestamp":"2026-01-11T18:43:18.048Z","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":{}}
8
+ {"timestamp":"2026-01-11T18:44:21.682Z","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":{}}
9
+ {"timestamp":"2026-01-11T18:48:20.329Z","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":{}}
10
+ {"timestamp":"2026-01-11T18:54:50.282Z","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":{}}
@@ -18,3 +18,23 @@
18
18
  {"timestamp":"2026-01-11T18:11:22.141Z","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":{}}
19
19
  {"timestamp":"2026-01-11T18:11:22.141Z","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":{}}
20
20
  {"timestamp":"2026-01-11T18:11:22.141Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
21
+ {"timestamp":"2026-01-11T18:41:52.245Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_START","data":{"repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"},"context":{}}
22
+ {"timestamp":"2026-01-11T18:41:52.290Z","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":{}}
23
+ {"timestamp":"2026-01-11T18:41:52.292Z","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":{}}
24
+ {"timestamp":"2026-01-11T18:41:52.293Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
25
+ {"timestamp":"2026-01-11T18:43:18.193Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_START","data":{"repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"},"context":{}}
26
+ {"timestamp":"2026-01-11T18:43:18.213Z","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":{}}
27
+ {"timestamp":"2026-01-11T18:43:18.214Z","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":{}}
28
+ {"timestamp":"2026-01-11T18:43:18.214Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
29
+ {"timestamp":"2026-01-11T18:44:21.765Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_START","data":{"repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"},"context":{}}
30
+ {"timestamp":"2026-01-11T18:44:21.774Z","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":{}}
31
+ {"timestamp":"2026-01-11T18:44:21.775Z","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":{}}
32
+ {"timestamp":"2026-01-11T18:44:21.775Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
33
+ {"timestamp":"2026-01-11T18:48:20.805Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_START","data":{"repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"},"context":{}}
34
+ {"timestamp":"2026-01-11T18:48:20.823Z","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":{}}
35
+ {"timestamp":"2026-01-11T18:48:20.824Z","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":{}}
36
+ {"timestamp":"2026-01-11T18:48:20.825Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
37
+ {"timestamp":"2026-01-11T18:54:50.501Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_START","data":{"repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"},"context":{}}
38
+ {"timestamp":"2026-01-11T18:54:50.515Z","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":{}}
39
+ {"timestamp":"2026-01-11T18:54:50.515Z","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":{}}
40
+ {"timestamp":"2026-01-11T18:54:50.515Z","level":"info","component":"InstallWizard","event":"INSTALL_WIZARD_COMPLETED","data":{},"context":{}}
@@ -350,3 +350,123 @@
350
350
  {"timestamp":1768155082230,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
351
351
  {"timestamp":1768155082230,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
352
352
  {"timestamp":1768155082230,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
353
+ {"timestamp":1768156912122,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
354
+ {"timestamp":1768156912122,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
355
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
356
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
357
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
358
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
359
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
360
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
361
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
362
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
363
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
364
+ {"timestamp":1768156912123,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
365
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
366
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
367
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
368
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
369
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
370
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
371
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
372
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
373
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
374
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
375
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
376
+ {"timestamp":1768156912124,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
377
+ {"timestamp":1768156998043,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
378
+ {"timestamp":1768156998044,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
379
+ {"timestamp":1768156998044,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
380
+ {"timestamp":1768156998044,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
381
+ {"timestamp":1768156998045,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
382
+ {"timestamp":1768156998045,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
383
+ {"timestamp":1768156998045,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
384
+ {"timestamp":1768156998045,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
385
+ {"timestamp":1768156998046,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
386
+ {"timestamp":1768156998046,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
387
+ {"timestamp":1768156998046,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
388
+ {"timestamp":1768156998046,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
389
+ {"timestamp":1768156998046,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
390
+ {"timestamp":1768156998046,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
391
+ {"timestamp":1768156998046,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
392
+ {"timestamp":1768156998046,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
393
+ {"timestamp":1768156998047,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
394
+ {"timestamp":1768156998047,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
395
+ {"timestamp":1768156998047,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
396
+ {"timestamp":1768156998047,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
397
+ {"timestamp":1768156998047,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
398
+ {"timestamp":1768156998047,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
399
+ {"timestamp":1768156998047,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
400
+ {"timestamp":1768156998047,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
401
+ {"timestamp":1768157061679,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
402
+ {"timestamp":1768157061679,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
403
+ {"timestamp":1768157061680,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
404
+ {"timestamp":1768157061680,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
405
+ {"timestamp":1768157061680,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
406
+ {"timestamp":1768157061680,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
407
+ {"timestamp":1768157061681,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
408
+ {"timestamp":1768157061681,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
409
+ {"timestamp":1768157061681,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
410
+ {"timestamp":1768157061681,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
411
+ {"timestamp":1768157061681,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
412
+ {"timestamp":1768157061681,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
413
+ {"timestamp":1768157061681,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
414
+ {"timestamp":1768157061681,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
415
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
416
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
417
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
418
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
419
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
420
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
421
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
422
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
423
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
424
+ {"timestamp":1768157061682,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
425
+ {"timestamp":1768157300325,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
426
+ {"timestamp":1768157300326,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
427
+ {"timestamp":1768157300326,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
428
+ {"timestamp":1768157300326,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
429
+ {"timestamp":1768157300326,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
430
+ {"timestamp":1768157300326,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
431
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
432
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
433
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
434
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
435
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
436
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
437
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
438
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
439
+ {"timestamp":1768157300327,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
440
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
441
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
442
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
443
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
444
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
445
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
446
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
447
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
448
+ {"timestamp":1768157300328,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
449
+ {"timestamp":1768157690280,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
450
+ {"timestamp":1768157690280,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
451
+ {"timestamp":1768157690280,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
452
+ {"timestamp":1768157690280,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
453
+ {"timestamp":1768157690280,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
454
+ {"timestamp":1768157690280,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
455
+ {"timestamp":1768157690280,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
456
+ {"timestamp":1768157690280,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
457
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
458
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
459
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
460
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
461
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
462
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
463
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
464
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
465
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
466
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
467
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
468
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
469
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"constructor","status":"started","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
470
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"ensure_dir","status":"started"}
471
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"ensure_dir","status":"success"}
472
+ {"timestamp":1768157690281,"hook":"audit_logger","operation":"constructor","status":"success","repoRoot":"/Users/juancarlosmerlosalbarracin/Developer/Projects/ast-intelligence-hooks/scripts/hooks-system"}
@@ -0,0 +1,58 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ class CriticalDependenciesService {
5
+ static check({ targetRoot, logger, logWarning, logSuccess }) {
6
+ const packageJsonPath = path.join(targetRoot, 'package.json');
7
+
8
+ if (!fs.existsSync(packageJsonPath)) {
9
+ logWarning('package.json not found. Skipping dependency check.');
10
+ return;
11
+ }
12
+
13
+ const isResolvableFromTargetRoot = (name) => {
14
+ try {
15
+ require.resolve(name, { paths: [targetRoot] });
16
+ return true;
17
+ } catch {
18
+ return false;
19
+ }
20
+ };
21
+
22
+ try {
23
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
24
+ const allDeps = {
25
+ ...packageJson.dependencies,
26
+ ...packageJson.devDependencies
27
+ };
28
+
29
+ const criticalDeps = ['ts-morph'];
30
+ const missingDeps = [];
31
+
32
+ for (const dep of criticalDeps) {
33
+ if (allDeps[dep]) {
34
+ continue;
35
+ }
36
+ if (isResolvableFromTargetRoot(dep)) {
37
+ continue;
38
+ }
39
+ missingDeps.push(dep);
40
+ }
41
+
42
+ if (missingDeps.length > 0) {
43
+ logWarning(`Missing critical dependencies: ${missingDeps.join(', ')}`);
44
+ logWarning('AST analysis may fail without these dependencies.');
45
+ logWarning(`Install with: npm install --save-dev ${missingDeps.join(' ')}`);
46
+ if (logger && typeof logger.warn === 'function') {
47
+ logger.warn('MISSING_CRITICAL_DEPENDENCIES', { missingDeps });
48
+ }
49
+ } else {
50
+ logSuccess('All critical dependencies present');
51
+ }
52
+ } catch (error) {
53
+ logWarning(`Failed to check dependencies: ${error.message}`);
54
+ }
55
+ }
56
+ }
57
+
58
+ module.exports = CriticalDependenciesService;
@@ -7,6 +7,7 @@ const PlatformDetectorService = require('./PlatformDetectorService');
7
7
  const FileSystemInstallerService = require('./FileSystemInstallerService');
8
8
  const ConfigurationGeneratorService = require('./ConfigurationGeneratorService');
9
9
  const IdeIntegrationService = require('./IdeIntegrationService');
10
+ const CriticalDependenciesService = require('./CriticalDependenciesService');
10
11
  const UnifiedLogger = require('../logging/UnifiedLogger');
11
12
 
12
13
  const COLORS = {
@@ -77,40 +78,12 @@ class InstallService {
77
78
  }
78
79
 
79
80
  checkCriticalDependencies() {
80
- const packageJsonPath = path.join(this.targetRoot, 'package.json');
81
-
82
- if (!fs.existsSync(packageJsonPath)) {
83
- this.logWarning('package.json not found. Skipping dependency check.');
84
- return;
85
- }
86
-
87
- try {
88
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
89
- const allDeps = {
90
- ...packageJson.dependencies,
91
- ...packageJson.devDependencies
92
- };
93
-
94
- const criticalDeps = ['ts-morph'];
95
- const missingDeps = [];
96
-
97
- for (const dep of criticalDeps) {
98
- if (!allDeps[dep]) {
99
- missingDeps.push(dep);
100
- }
101
- }
102
-
103
- if (missingDeps.length > 0) {
104
- this.logWarning(`Missing critical dependencies: ${missingDeps.join(', ')}`);
105
- this.logWarning('AST analysis may fail without these dependencies.');
106
- this.logWarning(`Install with: npm install --save-dev ${missingDeps.join(' ')}`);
107
- this.logger.warn('MISSING_CRITICAL_DEPENDENCIES', { missingDeps });
108
- } else {
109
- this.logSuccess('All critical dependencies present');
110
- }
111
- } catch (error) {
112
- this.logWarning(`Failed to check dependencies: ${error.message}`);
113
- }
81
+ CriticalDependenciesService.check({
82
+ targetRoot: this.targetRoot,
83
+ logger: this.logger,
84
+ logWarning: (msg) => this.logWarning(msg),
85
+ logSuccess: (msg) => this.logSuccess(msg)
86
+ });
114
87
  }
115
88
 
116
89
  async run() {
@@ -92,3 +92,49 @@ describe('InstallService - cleanupDuplicateRules', () => {
92
92
  expect(fs.existsSync(path.join(windsurfRules, 'windsurf.mdc'))).toBe(true);
93
93
  });
94
94
  });
95
+
96
+ describe('InstallService - checkCriticalDependencies', () => {
97
+ const fs = require('fs');
98
+ const os = require('os');
99
+ const path = require('path');
100
+ const InstallService = require('../../application/services/installation/InstallService');
101
+
102
+ let testRoot;
103
+ let service;
104
+
105
+ beforeEach(() => {
106
+ testRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'ast-hooks-install-deps-'));
107
+ fs.writeFileSync(path.join(testRoot, 'package.json'), JSON.stringify({ name: 'test', version: '1.0.0' }, null, 2));
108
+
109
+ service = new InstallService();
110
+ service.targetRoot = testRoot;
111
+ service.logger = { warn: jest.fn(), info: jest.fn(), error: jest.fn(), debug: jest.fn() };
112
+ service.logWarning = jest.fn();
113
+ service.logSuccess = jest.fn();
114
+ });
115
+
116
+ afterEach(() => {
117
+ if (fs.existsSync(testRoot)) {
118
+ fs.rmSync(testRoot, { recursive: true, force: true });
119
+ }
120
+ });
121
+
122
+ it('should not warn when ts-morph is resolvable even if not declared', () => {
123
+ const tsMorphDir = path.join(testRoot, 'node_modules', 'ts-morph');
124
+ fs.mkdirSync(tsMorphDir, { recursive: true });
125
+ fs.writeFileSync(path.join(tsMorphDir, 'package.json'), JSON.stringify({ name: 'ts-morph', version: '999.0.0' }, null, 2));
126
+ fs.writeFileSync(path.join(tsMorphDir, 'index.js'), 'module.exports = {}');
127
+
128
+ service.checkCriticalDependencies();
129
+
130
+ expect(service.logSuccess).toHaveBeenCalledWith('All critical dependencies present');
131
+ expect(service.logWarning).not.toHaveBeenCalledWith(expect.stringContaining('Missing critical dependencies'));
132
+ });
133
+
134
+ it('should warn when ts-morph is not declared and not resolvable', () => {
135
+ service.checkCriticalDependencies();
136
+
137
+ expect(service.logWarning).toHaveBeenCalledWith(expect.stringContaining('Missing critical dependencies'));
138
+ expect(service.logger.warn).toHaveBeenCalledWith('MISSING_CRITICAL_DEPENDENCIES', { missingDeps: ['ts-morph'] });
139
+ });
140
+ });
@@ -13,3 +13,12 @@
13
13
  {"timestamp":"2026-01-11T18:11:25.198Z","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"}}
14
14
  {"timestamp":"2026-01-11T18:11:25.199Z","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"}}
15
15
  {"timestamp":"2026-01-11T18:11:25.199Z","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)"}}
16
+ {"timestamp":"2026-01-11T18:44:26.804Z","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"}}
17
+ {"timestamp":"2026-01-11T18:44:26.808Z","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"}}
18
+ {"timestamp":"2026-01-11T18:44:26.808Z","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)"}}
19
+ {"timestamp":"2026-01-11T18:48:25.806Z","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
+ {"timestamp":"2026-01-11T18:48:25.810Z","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
+ {"timestamp":"2026-01-11T18:48:25.811Z","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":"2026-01-11T18:54:53.862Z","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":"2026-01-11T18:54:53.871Z","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":"2026-01-11T18:54:53.873Z","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)"}}