pumuki-ast-hooks 5.3.1

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 (567) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1105 -0
  3. package/bin/__tests__/auto-fix-violations.spec.js +132 -0
  4. package/bin/__tests__/auto-restart-guards.spec.js +11 -0
  5. package/bin/__tests__/check-doc-drift.spec.js +11 -0
  6. package/bin/__tests__/check-version.spec.js +240 -0
  7. package/bin/__tests__/cli.spec.js +11 -0
  8. package/bin/__tests__/guard-auto-manager.spec.js +11 -0
  9. package/bin/__tests__/guard-supervisor.spec.js +11 -0
  10. package/bin/__tests__/hook-status.spec.js +11 -0
  11. package/bin/__tests__/install.spec.js +11 -0
  12. package/bin/__tests__/nightly-metrics-report.spec.js +94 -0
  13. package/bin/__tests__/plan-review.spec.js +11 -0
  14. package/bin/__tests__/predictive-hooks.spec.js +11 -0
  15. package/bin/__tests__/run-ast-adapter.spec.js +11 -0
  16. package/bin/__tests__/run-orchestrator.spec.js +11 -0
  17. package/bin/__tests__/run-playbook.spec.js +11 -0
  18. package/bin/__tests__/setup-eslint.spec.js +11 -0
  19. package/bin/__tests__/violations-api.spec.js +11 -0
  20. package/bin/__tests__/watch-hooks.spec.js +11 -0
  21. package/bin/ai-commit.sh +5 -0
  22. package/bin/audit +5 -0
  23. package/bin/audit-library.js +6 -0
  24. package/bin/auto-fix-violations.js +19 -0
  25. package/bin/auto-restart-guards.js +6 -0
  26. package/bin/check-doc-drift.js +6 -0
  27. package/bin/check-version.js +19 -0
  28. package/bin/cleanup-branches.sh +5 -0
  29. package/bin/cli.js +6 -0
  30. package/bin/demo-recording.sh +5 -0
  31. package/bin/demo-violations +5 -0
  32. package/bin/fix-enforcer +5 -0
  33. package/bin/fix-gitflow-enforcement.sh +5 -0
  34. package/bin/generate-progress-report.sh +5 -0
  35. package/bin/git-analyze-pairs.sh +5 -0
  36. package/bin/git-leave-branch-check.sh +5 -0
  37. package/bin/gitflow +5 -0
  38. package/bin/gitflow-shell-integration.sh +5 -0
  39. package/bin/guard-auto-manager.js +6 -0
  40. package/bin/guard-autostart.sh +5 -0
  41. package/bin/guard-env.sh +5 -0
  42. package/bin/guard-supervisor.js +6 -0
  43. package/bin/hook-status.js +6 -0
  44. package/bin/install-git-wrapper.sh +5 -0
  45. package/bin/install.js +6 -0
  46. package/bin/kill-mcp-zombies.sh +5 -0
  47. package/bin/nightly-metrics-report.js +8 -0
  48. package/bin/plan-review.js +6 -0
  49. package/bin/predictive-hooks.js +6 -0
  50. package/bin/pumuki-audit.js +6 -0
  51. package/bin/pumuki-init.js +19 -0
  52. package/bin/pumuki-mcp-server.js +13 -0
  53. package/bin/pumuki-mcp.js +6 -0
  54. package/bin/pumuki-rules.js +6 -0
  55. package/bin/request-no-verify-approval.sh +5 -0
  56. package/bin/run-ast-adapter.js +6 -0
  57. package/bin/run-intelligent-audit.sh +5 -0
  58. package/bin/run-orchestrator.js +6 -0
  59. package/bin/run-playbook.js +6 -0
  60. package/bin/session-loader.sh +5 -0
  61. package/bin/setup-eslint.js +6 -0
  62. package/bin/start-guards.sh +5 -0
  63. package/bin/sync-autonomous-orchestrator.sh +5 -0
  64. package/bin/sync-to-library.sh +5 -0
  65. package/bin/update-evidence.sh +5 -0
  66. package/bin/update-session-context.sh +5 -0
  67. package/bin/verify-no-verify.sh +5 -0
  68. package/bin/violations +5 -0
  69. package/bin/violations-api.js +6 -0
  70. package/bin/watch-hooks.js +6 -0
  71. package/docs/API_REFERENCE.md +161 -0
  72. package/docs/ARCHITECTURE.md +236 -0
  73. package/docs/ARCHITECTURE_DETAILED.md +499 -0
  74. package/docs/BRANCH_PROTECTION_GUIDE.md +236 -0
  75. package/docs/CODE_STANDARDS.md +440 -0
  76. package/docs/CONTRIBUTING.md +246 -0
  77. package/docs/DEPENDENCIES.md +541 -0
  78. package/docs/HOW_IT_WORKS.md +716 -0
  79. package/docs/INSTALLATION.md +784 -0
  80. package/docs/MCP_SERVERS.md +786 -0
  81. package/docs/TESTING.md +423 -0
  82. package/docs/USAGE.md +856 -0
  83. package/docs/images/ast_intelligence_01.png +0 -0
  84. package/docs/images/ast_intelligence_02.png +0 -0
  85. package/docs/images/ast_intelligence_03.png +0 -0
  86. package/docs/images/ast_intelligence_04.png +0 -0
  87. package/docs/images/ast_intelligence_05.png +0 -0
  88. package/hooks/getSkillRulesPath.ts +52 -0
  89. package/hooks/git-status-monitor.ts +160 -0
  90. package/hooks/index.js +5 -0
  91. package/hooks/notify-macos.ts +42 -0
  92. package/hooks/package.json +16 -0
  93. package/hooks/post-tool-use-tracker.sh +89 -0
  94. package/hooks/pre-tool-use-evidence-validator.ts +252 -0
  95. package/hooks/pre-tool-use-guard.ts +151 -0
  96. package/hooks/skill-activation-prompt.sh +8 -0
  97. package/hooks/skill-activation-prompt.ts +307 -0
  98. package/index.js +49 -0
  99. package/package.json +117 -0
  100. package/presentation/cli/audit.sh +24 -0
  101. package/presentation/cli/autonomous-status.sh +92 -0
  102. package/presentation/cli/categorize-violations.sh +179 -0
  103. package/presentation/cli/direct-audit-option2.sh +23 -0
  104. package/presentation/cli/direct-audit.sh +33 -0
  105. package/scripts/hooks-system/.AI_TOKEN_STATUS.txt +16 -0
  106. package/scripts/hooks-system/.audit-reports/auto-recovery.log +1 -0
  107. package/scripts/hooks-system/.audit-reports/install-wizard.log +4 -0
  108. package/scripts/hooks-system/.audit-reports/notifications.log +425 -0
  109. package/scripts/hooks-system/.audit-reports/token-monitor.log +1275 -0
  110. package/scripts/hooks-system/.audit_tmp/intelligent-report.json +44953 -0
  111. package/scripts/hooks-system/.audit_tmp/intelligent-report.txt +1338 -0
  112. package/scripts/hooks-system/.audit_tmp/severity-history.jsonl +1 -0
  113. package/scripts/hooks-system/.audit_tmp/token-usage.jsonl +1 -0
  114. package/scripts/hooks-system/.hook-system/config.json +8 -0
  115. package/scripts/hooks-system/application/CompositionRoot.js +325 -0
  116. package/scripts/hooks-system/application/__tests__/CompositionRoot.spec.js +84 -0
  117. package/scripts/hooks-system/application/commands/index.js +64 -0
  118. package/scripts/hooks-system/application/queries/index.js +60 -0
  119. package/scripts/hooks-system/application/services/AutonomousOrchestrator.js +130 -0
  120. package/scripts/hooks-system/application/services/ContextDetectionEngine.js +181 -0
  121. package/scripts/hooks-system/application/services/DynamicRulesLoader.js +182 -0
  122. package/scripts/hooks-system/application/services/GitFlowService.js +156 -0
  123. package/scripts/hooks-system/application/services/GitTreeState.js +140 -0
  124. package/scripts/hooks-system/application/services/HookSystemScheduler.js +77 -0
  125. package/scripts/hooks-system/application/services/IntelligentCommitAnalyzer.js +151 -0
  126. package/scripts/hooks-system/application/services/IntelligentGitTreeMonitor.js +118 -0
  127. package/scripts/hooks-system/application/services/PlatformAnalysisService.js +173 -0
  128. package/scripts/hooks-system/application/services/PlatformDetectionService.js +168 -0
  129. package/scripts/hooks-system/application/services/PlaybookRunner.js +39 -0
  130. package/scripts/hooks-system/application/services/PredictiveHookAdvisor.js +56 -0
  131. package/scripts/hooks-system/application/services/RealtimeGuardPlugin.js +62 -0
  132. package/scripts/hooks-system/application/services/RealtimeGuardService.js +374 -0
  133. package/scripts/hooks-system/application/services/SmartDirtyTreeAnalyzer.js +63 -0
  134. package/scripts/hooks-system/application/services/__tests__/AutonomousOrchestrator.spec.js +36 -0
  135. package/scripts/hooks-system/application/services/__tests__/ContextDetectionEngine.spec.js +33 -0
  136. package/scripts/hooks-system/application/services/__tests__/DynamicRulesLoader.spec.js +43 -0
  137. package/scripts/hooks-system/application/services/__tests__/GitTreeState.spec.js +163 -0
  138. package/scripts/hooks-system/application/services/__tests__/HookSystemScheduler.spec.js +207 -0
  139. package/scripts/hooks-system/application/services/__tests__/IntelligentCommitAnalyzer.spec.js +365 -0
  140. package/scripts/hooks-system/application/services/__tests__/IntelligentGitTreeMonitor.spec.js +188 -0
  141. package/scripts/hooks-system/application/services/__tests__/PlatformDetectionService.spec.js +28 -0
  142. package/scripts/hooks-system/application/services/__tests__/PlaybookRunner.spec.js +143 -0
  143. package/scripts/hooks-system/application/services/__tests__/PredictiveHookAdvisor.spec.js +181 -0
  144. package/scripts/hooks-system/application/services/__tests__/RealtimeGuardPlugin.spec.js +45 -0
  145. package/scripts/hooks-system/application/services/__tests__/RealtimeGuardService.critical.spec.js +401 -0
  146. package/scripts/hooks-system/application/services/commit/CommitMessageGenerator.js +34 -0
  147. package/scripts/hooks-system/application/services/commit/FeatureDetector.js +101 -0
  148. package/scripts/hooks-system/application/services/evidence/EvidenceContextManager.js +163 -0
  149. package/scripts/hooks-system/application/services/evidence/__tests__/EvidenceContextManager.spec.js +98 -0
  150. package/scripts/hooks-system/application/services/guard/GuardAutoManagerService.js +169 -0
  151. package/scripts/hooks-system/application/services/guard/GuardConfig.js +15 -0
  152. package/scripts/hooks-system/application/services/guard/GuardEventLogger.js +70 -0
  153. package/scripts/hooks-system/application/services/guard/GuardHealthReminder.js +54 -0
  154. package/scripts/hooks-system/application/services/guard/GuardHeartbeatMonitor.js +94 -0
  155. package/scripts/hooks-system/application/services/guard/GuardLockManager.js +72 -0
  156. package/scripts/hooks-system/application/services/guard/GuardMonitorLoop.js +29 -0
  157. package/scripts/hooks-system/application/services/guard/GuardNotificationHandler.js +36 -0
  158. package/scripts/hooks-system/application/services/guard/GuardProcessManager.js +113 -0
  159. package/scripts/hooks-system/application/services/guard/GuardRecoveryService.js +90 -0
  160. package/scripts/hooks-system/application/services/guard/__tests__/GuardAutoManagerService.spec.js +77 -0
  161. package/scripts/hooks-system/application/services/installation/ConfigurationGeneratorService.js +123 -0
  162. package/scripts/hooks-system/application/services/installation/FileSystemInstallerService.js +112 -0
  163. package/scripts/hooks-system/application/services/installation/GitEnvironmentService.js +166 -0
  164. package/scripts/hooks-system/application/services/installation/HookInstaller.js +197 -0
  165. package/scripts/hooks-system/application/services/installation/IdeIntegrationService.js +37 -0
  166. package/scripts/hooks-system/application/services/installation/InstallService.js +130 -0
  167. package/scripts/hooks-system/application/services/installation/McpConfigurator.js +172 -0
  168. package/scripts/hooks-system/application/services/installation/PlatformDetectorService.js +36 -0
  169. package/scripts/hooks-system/application/services/installation/VSCodeTaskConfigurator.js +97 -0
  170. package/scripts/hooks-system/application/services/logging/UnifiedLogger.js +142 -0
  171. package/scripts/hooks-system/application/services/logging/__tests__/UnifiedLogger.spec.js +66 -0
  172. package/scripts/hooks-system/application/services/monitoring/ActivityMonitor.js +80 -0
  173. package/scripts/hooks-system/application/services/monitoring/AstMonitor.js +140 -0
  174. package/scripts/hooks-system/application/services/monitoring/DevDocsMonitor.js +85 -0
  175. package/scripts/hooks-system/application/services/monitoring/EvidenceMonitor.js +103 -0
  176. package/scripts/hooks-system/application/services/monitoring/EvidenceMonitorService.js +162 -0
  177. package/scripts/hooks-system/application/services/monitoring/GitTreeMonitor.js +123 -0
  178. package/scripts/hooks-system/application/services/monitoring/GitTreeMonitorService.js +114 -0
  179. package/scripts/hooks-system/application/services/monitoring/HealthCheckProviders.js +153 -0
  180. package/scripts/hooks-system/application/services/monitoring/HealthCheckService.js +118 -0
  181. package/scripts/hooks-system/application/services/monitoring/HeartbeatMonitorService.js +61 -0
  182. package/scripts/hooks-system/application/services/monitoring/TokenMonitor.js +60 -0
  183. package/scripts/hooks-system/application/services/monitoring/__tests__/EvidenceMonitorService.spec.js +107 -0
  184. package/scripts/hooks-system/application/services/monitoring/__tests__/GitTreeMonitorService.spec.js +27 -0
  185. package/scripts/hooks-system/application/services/monitoring/__tests__/HealthCheckProviders.spec.js +68 -0
  186. package/scripts/hooks-system/application/services/monitoring/__tests__/HealthCheckService.spec.js +69 -0
  187. package/scripts/hooks-system/application/services/monitoring/__tests__/HeartbeatMonitorService.spec.js +35 -0
  188. package/scripts/hooks-system/application/services/notification/MacNotificationSender.js +106 -0
  189. package/scripts/hooks-system/application/services/notification/NotificationCenterService.js +221 -0
  190. package/scripts/hooks-system/application/services/notification/NotificationDispatcher.js +42 -0
  191. package/scripts/hooks-system/application/services/notification/__tests__/NotificationCenterService.spec.js +40 -0
  192. package/scripts/hooks-system/application/services/notification/components/NotificationCooldownManager.js +62 -0
  193. package/scripts/hooks-system/application/services/notification/components/NotificationDeduplicator.js +67 -0
  194. package/scripts/hooks-system/application/services/notification/components/NotificationQueue.js +36 -0
  195. package/scripts/hooks-system/application/services/notification/components/NotificationRetryExecutor.js +58 -0
  196. package/scripts/hooks-system/application/services/platform/PlatformHeuristics.js +144 -0
  197. package/scripts/hooks-system/application/services/recovery/AutoRecoveryManager.js +137 -0
  198. package/scripts/hooks-system/application/services/recovery/__tests__/AutoRecoveryManager.spec.js +62 -0
  199. package/scripts/hooks-system/application/services/smart-commit/CommitMessageSuggester.js +97 -0
  200. package/scripts/hooks-system/application/services/smart-commit/FileContextGrouper.js +114 -0
  201. package/scripts/hooks-system/application/services/smart-commit/SmartCommitSummaryBuilder.js +53 -0
  202. package/scripts/hooks-system/application/services/token/CursorTokenService.js +44 -0
  203. package/scripts/hooks-system/application/services/token/TokenMetricsService.js +109 -0
  204. package/scripts/hooks-system/application/services/token/TokenMonitorService.js +160 -0
  205. package/scripts/hooks-system/application/services/token/TokenStatusReporter.js +56 -0
  206. package/scripts/hooks-system/application/services/token/__tests__/CursorTokenService.spec.js +69 -0
  207. package/scripts/hooks-system/application/services/token/__tests__/TokenMonitorService.spec.js +185 -0
  208. package/scripts/hooks-system/application/state/HookSystemStateMachine.js +59 -0
  209. package/scripts/hooks-system/application/state/__tests__/HookSystemStateMachine.spec.js +115 -0
  210. package/scripts/hooks-system/application/use-cases/AnalyzeCodebaseUseCase.js +54 -0
  211. package/scripts/hooks-system/application/use-cases/AnalyzeStagedFilesUseCase.js +61 -0
  212. package/scripts/hooks-system/application/use-cases/AutoExecuteAIStartUseCase.js +123 -0
  213. package/scripts/hooks-system/application/use-cases/BlockCommitUseCase.js +90 -0
  214. package/scripts/hooks-system/application/use-cases/GenerateAuditReportUseCase.js +184 -0
  215. package/scripts/hooks-system/application/use-cases/__tests__/AnalyzeCodebaseUseCase.spec.js +156 -0
  216. package/scripts/hooks-system/application/use-cases/__tests__/AnalyzeStagedFilesUseCase.spec.js +146 -0
  217. package/scripts/hooks-system/application/use-cases/__tests__/AutoExecuteAIStartUseCase.spec.js +89 -0
  218. package/scripts/hooks-system/application/use-cases/__tests__/BlockCommitUseCase.spec.js +171 -0
  219. package/scripts/hooks-system/application/use-cases/__tests__/GenerateAuditReportUseCase.spec.js +207 -0
  220. package/scripts/hooks-system/bin/__tests__/auto-fix-violations.spec.js +132 -0
  221. package/scripts/hooks-system/bin/__tests__/auto-restart-guards.spec.js +11 -0
  222. package/scripts/hooks-system/bin/__tests__/check-doc-drift.spec.js +11 -0
  223. package/scripts/hooks-system/bin/__tests__/check-version.spec.js +240 -0
  224. package/scripts/hooks-system/bin/__tests__/cli.spec.js +11 -0
  225. package/scripts/hooks-system/bin/__tests__/guard-auto-manager.spec.js +11 -0
  226. package/scripts/hooks-system/bin/__tests__/guard-supervisor.spec.js +11 -0
  227. package/scripts/hooks-system/bin/__tests__/hook-status.spec.js +11 -0
  228. package/scripts/hooks-system/bin/__tests__/install.spec.js +11 -0
  229. package/scripts/hooks-system/bin/__tests__/nightly-metrics-report.spec.js +94 -0
  230. package/scripts/hooks-system/bin/__tests__/plan-review.spec.js +11 -0
  231. package/scripts/hooks-system/bin/__tests__/predictive-hooks.spec.js +11 -0
  232. package/scripts/hooks-system/bin/__tests__/run-ast-adapter.spec.js +11 -0
  233. package/scripts/hooks-system/bin/__tests__/run-orchestrator.spec.js +11 -0
  234. package/scripts/hooks-system/bin/__tests__/run-playbook.spec.js +11 -0
  235. package/scripts/hooks-system/bin/__tests__/setup-eslint.spec.js +11 -0
  236. package/scripts/hooks-system/bin/__tests__/violations-api.spec.js +11 -0
  237. package/scripts/hooks-system/bin/__tests__/watch-hooks.spec.js +11 -0
  238. package/scripts/hooks-system/bin/ai-commit.sh +63 -0
  239. package/scripts/hooks-system/bin/audit +463 -0
  240. package/scripts/hooks-system/bin/audit-library.js +54 -0
  241. package/scripts/hooks-system/bin/auto-fix-violations.js +130 -0
  242. package/scripts/hooks-system/bin/auto-restart-guards.js +93 -0
  243. package/scripts/hooks-system/bin/check-doc-drift.js +35 -0
  244. package/scripts/hooks-system/bin/check-version.js +201 -0
  245. package/scripts/hooks-system/bin/cleanup-branches.sh +106 -0
  246. package/scripts/hooks-system/bin/cli.js +208 -0
  247. package/scripts/hooks-system/bin/demo-recording.sh +57 -0
  248. package/scripts/hooks-system/bin/demo-violations +44 -0
  249. package/scripts/hooks-system/bin/fix-enforcer +27 -0
  250. package/scripts/hooks-system/bin/fix-gitflow-enforcement.sh +68 -0
  251. package/scripts/hooks-system/bin/generate-progress-report.sh +129 -0
  252. package/scripts/hooks-system/bin/git-analyze-pairs.sh +0 -0
  253. package/scripts/hooks-system/bin/git-leave-branch-check.sh +73 -0
  254. package/scripts/hooks-system/bin/gitflow +17 -0
  255. package/scripts/hooks-system/bin/gitflow-shell-integration.sh +64 -0
  256. package/scripts/hooks-system/bin/guard-auto-manager.js +44 -0
  257. package/scripts/hooks-system/bin/guard-autostart.sh +158 -0
  258. package/scripts/hooks-system/bin/guard-env.sh +40 -0
  259. package/scripts/hooks-system/bin/guard-supervisor.js +516 -0
  260. package/scripts/hooks-system/bin/hook-status.js +41 -0
  261. package/scripts/hooks-system/bin/install-git-wrapper.sh +53 -0
  262. package/scripts/hooks-system/bin/install.js +10 -0
  263. package/scripts/hooks-system/bin/kill-mcp-zombies.sh +48 -0
  264. package/scripts/hooks-system/bin/nightly-metrics-report.js +138 -0
  265. package/scripts/hooks-system/bin/plan-review.js +31 -0
  266. package/scripts/hooks-system/bin/predictive-hooks.js +18 -0
  267. package/scripts/hooks-system/bin/pumuki-audit.js +113 -0
  268. package/scripts/hooks-system/bin/pumuki-init.js +104 -0
  269. package/scripts/hooks-system/bin/pumuki-mcp.js +74 -0
  270. package/scripts/hooks-system/bin/pumuki-rules.js +74 -0
  271. package/scripts/hooks-system/bin/request-no-verify-approval.sh +116 -0
  272. package/scripts/hooks-system/bin/run-ast-adapter.js +86 -0
  273. package/scripts/hooks-system/bin/run-intelligent-audit.sh +67 -0
  274. package/scripts/hooks-system/bin/run-orchestrator.js +27 -0
  275. package/scripts/hooks-system/bin/run-playbook.js +23 -0
  276. package/scripts/hooks-system/bin/session-loader.sh +264 -0
  277. package/scripts/hooks-system/bin/setup-eslint.js +110 -0
  278. package/scripts/hooks-system/bin/start-guards.sh +190 -0
  279. package/scripts/hooks-system/bin/sync-autonomous-orchestrator.sh +32 -0
  280. package/scripts/hooks-system/bin/sync-to-library.sh +46 -0
  281. package/scripts/hooks-system/bin/update-evidence.sh +1167 -0
  282. package/scripts/hooks-system/bin/update-session-context.sh +261 -0
  283. package/scripts/hooks-system/bin/verify-no-verify.sh +68 -0
  284. package/scripts/hooks-system/bin/violations +20 -0
  285. package/scripts/hooks-system/bin/violations-api.js +345 -0
  286. package/scripts/hooks-system/bin/watch-hooks.js +20 -0
  287. package/scripts/hooks-system/config/project.config.json +36 -0
  288. package/scripts/hooks-system/config/state-map.json +12 -0
  289. package/scripts/hooks-system/domain/entities/AuditResult.js +139 -0
  290. package/scripts/hooks-system/domain/entities/Finding.js +116 -0
  291. package/scripts/hooks-system/domain/entities/SeverityConfig.js +73 -0
  292. package/scripts/hooks-system/domain/entities/SeverityConfig.ts +90 -0
  293. package/scripts/hooks-system/domain/entities/__tests__/AuditResult.spec.js +450 -0
  294. package/scripts/hooks-system/domain/entities/__tests__/Finding.spec.js +335 -0
  295. package/scripts/hooks-system/domain/entities/__tests__/SeverityConfig.spec.js +240 -0
  296. package/scripts/hooks-system/domain/entities/__tests__/entities.spec.js +29 -0
  297. package/scripts/hooks-system/domain/errors/__tests__/DomainErrors.spec.js +59 -0
  298. package/scripts/hooks-system/domain/errors/index.js +169 -0
  299. package/scripts/hooks-system/domain/events/__tests__/DomainEvents.spec.js +60 -0
  300. package/scripts/hooks-system/domain/events/index.js +121 -0
  301. package/scripts/hooks-system/domain/ports/IAstPort.js +67 -0
  302. package/scripts/hooks-system/domain/ports/IEvidencePort.js +86 -0
  303. package/scripts/hooks-system/domain/ports/IGitCommandPort.js +110 -0
  304. package/scripts/hooks-system/domain/ports/IGitPort.js +114 -0
  305. package/scripts/hooks-system/domain/ports/IGitQueryPort.js +93 -0
  306. package/scripts/hooks-system/domain/ports/INotificationPort.js +35 -0
  307. package/scripts/hooks-system/domain/ports/__tests__/ports.spec.js +36 -0
  308. package/scripts/hooks-system/domain/ports/index.js +14 -0
  309. package/scripts/hooks-system/domain/repositories/ICursorTokenRepository.js +13 -0
  310. package/scripts/hooks-system/domain/repositories/IFindingsRepository.js +30 -0
  311. package/scripts/hooks-system/domain/repositories/__tests__/IFindingsRepository.spec.js +18 -0
  312. package/scripts/hooks-system/domain/rules/CommitBlockingRules.js +142 -0
  313. package/scripts/hooks-system/domain/rules/__tests__/CommitBlockingRules.spec.js +18 -0
  314. package/scripts/hooks-system/domain/services/AuditAnalyzer.js +103 -0
  315. package/scripts/hooks-system/domain/services/AuditFilter.js +26 -0
  316. package/scripts/hooks-system/domain/services/AuditResultSerializer.js +35 -0
  317. package/scripts/hooks-system/domain/services/AuditScorer.js +38 -0
  318. package/scripts/hooks-system/domain/values/Severity.js +93 -0
  319. package/scripts/hooks-system/index.js +49 -0
  320. package/scripts/hooks-system/infrastructure/adapters/AstAnalyzerAdapter.js +150 -0
  321. package/scripts/hooks-system/infrastructure/adapters/FileEvidenceAdapter.js +140 -0
  322. package/scripts/hooks-system/infrastructure/adapters/GitCliAdapter.js +16 -0
  323. package/scripts/hooks-system/infrastructure/adapters/GitCommandAdapter.js +68 -0
  324. package/scripts/hooks-system/infrastructure/adapters/GitHubCliAdapter.js +85 -0
  325. package/scripts/hooks-system/infrastructure/adapters/GitQueryAdapter.js +58 -0
  326. package/scripts/hooks-system/infrastructure/adapters/LegacyAnalyzerAdapter.js +61 -0
  327. package/scripts/hooks-system/infrastructure/adapters/MacOSNotificationAdapter.js +99 -0
  328. package/scripts/hooks-system/infrastructure/adapters/__tests__/AstAnalyzerAdapter.spec.js +32 -0
  329. package/scripts/hooks-system/infrastructure/adapters/__tests__/FileEvidenceAdapter.spec.js +31 -0
  330. package/scripts/hooks-system/infrastructure/adapters/__tests__/GitCliAdapter.spec.js +39 -0
  331. package/scripts/hooks-system/infrastructure/adapters/__tests__/MacOSNotificationAdapter.spec.js +33 -0
  332. package/scripts/hooks-system/infrastructure/adapters/git/GitCommandRunner.js +78 -0
  333. package/scripts/hooks-system/infrastructure/adapters/git/GitCommandService.js +67 -0
  334. package/scripts/hooks-system/infrastructure/adapters/git/GitQueryService.js +50 -0
  335. package/scripts/hooks-system/infrastructure/adapters/index.js +14 -0
  336. package/scripts/hooks-system/infrastructure/ast/README.md +198 -0
  337. package/scripts/hooks-system/infrastructure/ast/__tests__/ast-core.spec.js +160 -0
  338. package/scripts/hooks-system/infrastructure/ast/__tests__/ast-intelligence.spec.js +20 -0
  339. package/scripts/hooks-system/infrastructure/ast/android/__tests__/ast-android.spec.js +33 -0
  340. package/scripts/hooks-system/infrastructure/ast/android/__tests__/clean-architecture-analyzer.spec.js +96 -0
  341. package/scripts/hooks-system/infrastructure/ast/android/__tests__/ddd-analyzer.spec.js +113 -0
  342. package/scripts/hooks-system/infrastructure/ast/android/__tests__/detekt-runner.spec.js +36 -0
  343. package/scripts/hooks-system/infrastructure/ast/android/__tests__/feature-first-analyzer.spec.js +80 -0
  344. package/scripts/hooks-system/infrastructure/ast/android/__tests__/native-bridge.spec.js +31 -0
  345. package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidASTIntelligentAnalyzer.js +15 -0
  346. package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidASTParser.js +157 -0
  347. package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidAnalysisOrchestrator.js +164 -0
  348. package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidArchitectureDetector.js +334 -0
  349. package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidClassAnalyzer.js +162 -0
  350. package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidForbiddenLiteralsAnalyzer.js +261 -0
  351. package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidSOLIDAnalyzer.js +287 -0
  352. package/scripts/hooks-system/infrastructure/ast/android/analyzers/__tests__/AndroidForbiddenLiteralsAnalyzer.spec.js +58 -0
  353. package/scripts/hooks-system/infrastructure/ast/android/analyzers/__tests__/AndroidSOLIDAnalyzer.spec.js +84 -0
  354. package/scripts/hooks-system/infrastructure/ast/android/ast-android.js +1785 -0
  355. package/scripts/hooks-system/infrastructure/ast/android/clean-architecture-analyzer.js +115 -0
  356. package/scripts/hooks-system/infrastructure/ast/android/ddd-analyzer.js +70 -0
  357. package/scripts/hooks-system/infrastructure/ast/android/detekt-runner.js +81 -0
  358. package/scripts/hooks-system/infrastructure/ast/android/feature-first-analyzer.js +53 -0
  359. package/scripts/hooks-system/infrastructure/ast/android/native-bridge.js +119 -0
  360. package/scripts/hooks-system/infrastructure/ast/archive/README.md +18 -0
  361. package/scripts/hooks-system/infrastructure/ast/archive/ast-intelligence.ts +276 -0
  362. package/scripts/hooks-system/infrastructure/ast/archive/ios-rules.js +329 -0
  363. package/scripts/hooks-system/infrastructure/ast/archive/kotlin-analyzer.js +332 -0
  364. package/scripts/hooks-system/infrastructure/ast/archive/kotlin-parser.js +303 -0
  365. package/scripts/hooks-system/infrastructure/ast/archive/swift-analyzer.js +390 -0
  366. package/scripts/hooks-system/infrastructure/ast/ast-core.js +594 -0
  367. package/scripts/hooks-system/infrastructure/ast/ast-intelligence.js +617 -0
  368. package/scripts/hooks-system/infrastructure/ast/backend/__tests__/ast-backend.spec.js +20 -0
  369. package/scripts/hooks-system/infrastructure/ast/backend/__tests__/clean-architecture-analyzer.spec.js +151 -0
  370. package/scripts/hooks-system/infrastructure/ast/backend/__tests__/ddd-analyzer.spec.js +124 -0
  371. package/scripts/hooks-system/infrastructure/ast/backend/__tests__/feature-first-analyzer.spec.js +128 -0
  372. package/scripts/hooks-system/infrastructure/ast/backend/__tests__/forbidden-literals-analyzer.spec.js +95 -0
  373. package/scripts/hooks-system/infrastructure/ast/backend/__tests__/nestjs-patterns-analyzer.spec.js +59 -0
  374. package/scripts/hooks-system/infrastructure/ast/backend/__tests__/solid-analyzer.spec.js +114 -0
  375. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/BackendArchitectureDetector.js +141 -0
  376. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/BackendPatternDetector.js +23 -0
  377. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/__tests__/BackendArchitectureDetector.spec.js +239 -0
  378. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/__tests__/BackendPatternDetector.spec.js +58 -0
  379. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/CQRSDetector.js +41 -0
  380. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/CleanArchitectureDetector.js +52 -0
  381. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/FeatureFirstCleanDetector.js +74 -0
  382. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/LayeredArchitectureDetector.js +25 -0
  383. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/MVCDetector.js +32 -0
  384. package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/OnionArchitectureDetector.js +32 -0
  385. package/scripts/hooks-system/infrastructure/ast/backend/ast-backend-clean.js +44 -0
  386. package/scripts/hooks-system/infrastructure/ast/backend/ast-backend.js +2048 -0
  387. package/scripts/hooks-system/infrastructure/ast/backend/clean-architecture-analyzer.js +142 -0
  388. package/scripts/hooks-system/infrastructure/ast/backend/ddd-analyzer.js +256 -0
  389. package/scripts/hooks-system/infrastructure/ast/backend/feature-first-analyzer.js +70 -0
  390. package/scripts/hooks-system/infrastructure/ast/backend/forbidden-literals-analyzer.js +236 -0
  391. package/scripts/hooks-system/infrastructure/ast/backend/nestjs-patterns-analyzer.js +11 -0
  392. package/scripts/hooks-system/infrastructure/ast/backend/solid-analyzer.js +392 -0
  393. package/scripts/hooks-system/infrastructure/ast/common/BDDTDDWorkflowRules.js +52 -0
  394. package/scripts/hooks-system/infrastructure/ast/common/__tests__/BDDTDDWorkflowRules.spec.js +133 -0
  395. package/scripts/hooks-system/infrastructure/ast/common/__tests__/ast-common.spec.js +20 -0
  396. package/scripts/hooks-system/infrastructure/ast/common/__tests__/documentation-analyzer.spec.js +120 -0
  397. package/scripts/hooks-system/infrastructure/ast/common/__tests__/images-backend-analyzer.spec.js +123 -0
  398. package/scripts/hooks-system/infrastructure/ast/common/__tests__/monorepo-health-analyzer.spec.js +118 -0
  399. package/scripts/hooks-system/infrastructure/ast/common/__tests__/network-resilience-analyzer.spec.js +180 -0
  400. package/scripts/hooks-system/infrastructure/ast/common/__tests__/offline-backend-analyzer.spec.js +111 -0
  401. package/scripts/hooks-system/infrastructure/ast/common/__tests__/push-backend-analyzer.spec.js +124 -0
  402. package/scripts/hooks-system/infrastructure/ast/common/ast-common.js +345 -0
  403. package/scripts/hooks-system/infrastructure/ast/common/documentation-analyzer.js +217 -0
  404. package/scripts/hooks-system/infrastructure/ast/common/images-backend-analyzer.js +36 -0
  405. package/scripts/hooks-system/infrastructure/ast/common/monorepo-health-analyzer.js +452 -0
  406. package/scripts/hooks-system/infrastructure/ast/common/network-resilience-analyzer.js +178 -0
  407. package/scripts/hooks-system/infrastructure/ast/common/offline-backend-analyzer.js +53 -0
  408. package/scripts/hooks-system/infrastructure/ast/common/push-backend-analyzer.js +42 -0
  409. package/scripts/hooks-system/infrastructure/ast/common/rules/BDDRules.js +87 -0
  410. package/scripts/hooks-system/infrastructure/ast/common/rules/ImplementationRules.js +83 -0
  411. package/scripts/hooks-system/infrastructure/ast/common/rules/TDDRules.js +109 -0
  412. package/scripts/hooks-system/infrastructure/ast/common/rules/WorkflowRules.js +137 -0
  413. package/scripts/hooks-system/infrastructure/ast/frontend/__tests__/ast-frontend.spec.js +20 -0
  414. package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/FrontendArchitectureDetector.js +289 -0
  415. package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/FrontendForbiddenLiteralsAnalyzer.js +257 -0
  416. package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/FrontendSOLIDAnalyzer.js +274 -0
  417. package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/__tests__/FrontendArchitectureDetector.spec.js +151 -0
  418. package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/__tests__/FrontendForbiddenLiteralsAnalyzer.spec.js +20 -0
  419. package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/__tests__/FrontendSOLIDAnalyzer.spec.js +108 -0
  420. package/scripts/hooks-system/infrastructure/ast/frontend/ast-frontend-clean.js +42 -0
  421. package/scripts/hooks-system/infrastructure/ast/frontend/ast-frontend.js +2094 -0
  422. package/scripts/hooks-system/infrastructure/ast/frontend/clean-architecture-analyzer.js +88 -0
  423. package/scripts/hooks-system/infrastructure/ast/frontend/ddd-analyzer.js +94 -0
  424. package/scripts/hooks-system/infrastructure/ast/frontend/feature-first-analyzer.js +51 -0
  425. package/scripts/hooks-system/infrastructure/ast/ios/__tests__/ast-ios.spec.js +40 -0
  426. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSArchitectureDetector.spec.js +20 -0
  427. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSArchitectureRules.spec.js +61 -0
  428. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSCICDRules.spec.js +10 -0
  429. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSEnterpriseAnalyzer.spec.js +36 -0
  430. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSForbiddenLiteralsAnalyzer.spec.js +64 -0
  431. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSNetworkingAdvancedRules.spec.js +10 -0
  432. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSPerformanceRules.spec.js +34 -0
  433. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSSPMRules.spec.js +10 -0
  434. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSSwiftUIAdvancedRules.spec.js +10 -0
  435. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSASTIntelligentAnalyzer.js +894 -0
  436. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSArchitectureDetector.js +445 -0
  437. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSArchitectureRules.js +700 -0
  438. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSCICDRules.js +431 -0
  439. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSEnterpriseAnalyzer.js +580 -0
  440. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSForbiddenLiteralsAnalyzer.js +261 -0
  441. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSNetworkingAdvancedRules.js +177 -0
  442. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSPerformanceRules.js +11 -0
  443. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSSPMRules.js +496 -0
  444. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSSwiftUIAdvancedRules.js +333 -0
  445. package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSTestingAdvancedRules.js +225 -0
  446. package/scripts/hooks-system/infrastructure/ast/ios/ast-ios.js +2176 -0
  447. package/scripts/hooks-system/infrastructure/ast/ios/native-bridge.js +92 -0
  448. package/scripts/hooks-system/infrastructure/ast/ios/parsers/SourceKittenParser.js +471 -0
  449. package/scripts/hooks-system/infrastructure/ast/ios/parsers/__tests__/SourceKittenParser.spec.js +41 -0
  450. package/scripts/hooks-system/infrastructure/ast/text/__tests__/text-scanner.spec.js +20 -0
  451. package/scripts/hooks-system/infrastructure/ast/text/text-scanner.js +1120 -0
  452. package/scripts/hooks-system/infrastructure/cache/CacheService.js +160 -0
  453. package/scripts/hooks-system/infrastructure/cli/__tests__/install-wizard.spec.js +16 -0
  454. package/scripts/hooks-system/infrastructure/cli/install-wizard.js +74 -0
  455. package/scripts/hooks-system/infrastructure/core/GitOperations.js +50 -0
  456. package/scripts/hooks-system/infrastructure/core/GitOperations.ts +112 -0
  457. package/scripts/hooks-system/infrastructure/core/__tests__/GitOperations.spec.js +146 -0
  458. package/scripts/hooks-system/infrastructure/eslint/eslint-integration.sh +75 -0
  459. package/scripts/hooks-system/infrastructure/events/EventListeners.js +143 -0
  460. package/scripts/hooks-system/infrastructure/events/__tests__/events.spec.js +14 -0
  461. package/scripts/hooks-system/infrastructure/external-tools/GitOperations.js +54 -0
  462. package/scripts/hooks-system/infrastructure/external-tools/eslint/backend.config.template.mjs +58 -0
  463. package/scripts/hooks-system/infrastructure/git-hooks/pre-push +35 -0
  464. package/scripts/hooks-system/infrastructure/git-server/pre-receive-hook +253 -0
  465. package/scripts/hooks-system/infrastructure/guards/git-wrapper.sh +32 -0
  466. package/scripts/hooks-system/infrastructure/guards/master-validator.sh +247 -0
  467. package/scripts/hooks-system/infrastructure/guards/prevent-no-verify.sh +34 -0
  468. package/scripts/hooks-system/infrastructure/hooks/__tests__/skill-activation-prompt.spec.js +11 -0
  469. package/scripts/hooks-system/infrastructure/hooks/pre-tool-use-intelligent-enforcer.sh +489 -0
  470. package/scripts/hooks-system/infrastructure/hooks/skill-activation-prompt.js +244 -0
  471. package/scripts/hooks-system/infrastructure/logging/UnifiedLoggerFactory.js +40 -0
  472. package/scripts/hooks-system/infrastructure/logging/__tests__/logging.spec.js +9 -0
  473. package/scripts/hooks-system/infrastructure/mcp/README.md +116 -0
  474. package/scripts/hooks-system/infrastructure/mcp/__tests__/ast-intelligence-automation.spec.js +38 -0
  475. package/scripts/hooks-system/infrastructure/mcp/__tests__/evidence-watcher.spec.js +38 -0
  476. package/scripts/hooks-system/infrastructure/mcp/ast-intelligence-automation.js +1097 -0
  477. package/scripts/hooks-system/infrastructure/mcp/evidence-watcher.js +128 -0
  478. package/scripts/hooks-system/infrastructure/mcp/package.json +17 -0
  479. package/scripts/hooks-system/infrastructure/mcp/services/EvidenceService.js +87 -0
  480. package/scripts/hooks-system/infrastructure/mcp/services/McpProtocolHandler.js +166 -0
  481. package/scripts/hooks-system/infrastructure/orchestration/__tests__/intelligent-audit.spec.js +11 -0
  482. package/scripts/hooks-system/infrastructure/orchestration/intelligent-audit.js +353 -0
  483. package/scripts/hooks-system/infrastructure/patterns/pattern-checks.sh +98 -0
  484. package/scripts/hooks-system/infrastructure/reporting/ReportImpactAnalyzer.js +109 -0
  485. package/scripts/hooks-system/infrastructure/reporting/ReportMetricsCalculator.js +114 -0
  486. package/scripts/hooks-system/infrastructure/reporting/ReportPresenter.js +86 -0
  487. package/scripts/hooks-system/infrastructure/reporting/__tests__/reporting.spec.js +15 -0
  488. package/scripts/hooks-system/infrastructure/reporting/report-generator.js +130 -0
  489. package/scripts/hooks-system/infrastructure/reporting/severity-tracker.js +105 -0
  490. package/scripts/hooks-system/infrastructure/repositories/CursorTokenRepository.js +76 -0
  491. package/scripts/hooks-system/infrastructure/repositories/FileFindingsRepository.js +88 -0
  492. package/scripts/hooks-system/infrastructure/repositories/__tests__/repositories.spec.js +20 -0
  493. package/scripts/hooks-system/infrastructure/repositories/datasources/CursorApiDataSource.js +73 -0
  494. package/scripts/hooks-system/infrastructure/repositories/datasources/CursorFileDataSource.js +55 -0
  495. package/scripts/hooks-system/infrastructure/severity/__tests__/severity-evaluator.spec.js +18 -0
  496. package/scripts/hooks-system/infrastructure/severity/analyzers/__tests__/maintainability-analyzer.spec.js +170 -0
  497. package/scripts/hooks-system/infrastructure/severity/analyzers/__tests__/performance-analyzer.spec.js +186 -0
  498. package/scripts/hooks-system/infrastructure/severity/analyzers/__tests__/security-analyzer.spec.js +151 -0
  499. package/scripts/hooks-system/infrastructure/severity/analyzers/__tests__/stability-analyzer.spec.js +143 -0
  500. package/scripts/hooks-system/infrastructure/severity/analyzers/maintainability-analyzer.js +100 -0
  501. package/scripts/hooks-system/infrastructure/severity/analyzers/performance-analyzer.js +109 -0
  502. package/scripts/hooks-system/infrastructure/severity/analyzers/security-analyzer.js +104 -0
  503. package/scripts/hooks-system/infrastructure/severity/analyzers/stability-analyzer.js +85 -0
  504. package/scripts/hooks-system/infrastructure/severity/context/analyzers/CodeClassificationAnalyzer.js +71 -0
  505. package/scripts/hooks-system/infrastructure/severity/context/analyzers/DataAnalyzer.js +64 -0
  506. package/scripts/hooks-system/infrastructure/severity/context/analyzers/ImpactAnalyzer.js +68 -0
  507. package/scripts/hooks-system/infrastructure/severity/context/analyzers/SafetyAnalyzer.js +82 -0
  508. package/scripts/hooks-system/infrastructure/severity/context/context-builder.js +88 -0
  509. package/scripts/hooks-system/infrastructure/severity/generators/RecommendationGenerator.js +153 -0
  510. package/scripts/hooks-system/infrastructure/severity/mappers/SeverityMapper.js +10 -0
  511. package/scripts/hooks-system/infrastructure/severity/policies/gate-policies.js +136 -0
  512. package/scripts/hooks-system/infrastructure/severity/policies/severity-policies.json +206 -0
  513. package/scripts/hooks-system/infrastructure/severity/scorers/ContextMultiplier.js +49 -0
  514. package/scripts/hooks-system/infrastructure/severity/severity-evaluator.js +117 -0
  515. package/scripts/hooks-system/infrastructure/shell/core/constants.sh +26 -0
  516. package/scripts/hooks-system/infrastructure/shell/core/utils.sh +45 -0
  517. package/scripts/hooks-system/infrastructure/shell/gitflow/git-wrapper.sh +646 -0
  518. package/scripts/hooks-system/infrastructure/shell/gitflow/gitflow-enforcer.sh +620 -0
  519. package/scripts/hooks-system/infrastructure/shell/gitflow/gitflow-state-manager.sh +235 -0
  520. package/scripts/hooks-system/infrastructure/shell/gitflow-state-manager.sh +225 -0
  521. package/scripts/hooks-system/infrastructure/shell/orchestrators/audit-orchestrator.sh +1106 -0
  522. package/scripts/hooks-system/infrastructure/shell/security/detect-secrets.sh +26 -0
  523. package/scripts/hooks-system/infrastructure/shell/security/detect_secrets.py +182 -0
  524. package/scripts/hooks-system/infrastructure/shell/validate-clean-architecture.sh +254 -0
  525. package/scripts/hooks-system/infrastructure/shell/validators/check-doc-structure.sh +62 -0
  526. package/scripts/hooks-system/infrastructure/shell/validators/ensure-critical-docs.sh +26 -0
  527. package/scripts/hooks-system/infrastructure/shell/validators/validate-ai-protocol.sh +474 -0
  528. package/scripts/hooks-system/infrastructure/shell/validators/validate-clean-architecture.sh +303 -0
  529. package/scripts/hooks-system/infrastructure/shell/validators/validate-conventional-commit.sh +42 -0
  530. package/scripts/hooks-system/infrastructure/storage/file-operations.sh +31 -0
  531. package/scripts/hooks-system/infrastructure/telemetry/TelemetryService.js +165 -0
  532. package/scripts/hooks-system/infrastructure/telemetry/__tests__/telemetry.spec.js +15 -0
  533. package/scripts/hooks-system/infrastructure/telemetry/metrics-logger.js +66 -0
  534. package/scripts/hooks-system/infrastructure/telemetry/metrics-server.js +61 -0
  535. package/scripts/hooks-system/infrastructure/utils/__tests__/utils.spec.js +8 -0
  536. package/scripts/hooks-system/infrastructure/utils/error-utils.js +28 -0
  537. package/scripts/hooks-system/infrastructure/utils/timestamp-helper.sh +106 -0
  538. package/scripts/hooks-system/infrastructure/utils/token-manager.js +121 -0
  539. package/scripts/hooks-system/infrastructure/validators/__tests__/detect-commit-language.spec.js +16 -0
  540. package/scripts/hooks-system/infrastructure/validators/__tests__/enforce-english-literals.spec.js +67 -0
  541. package/scripts/hooks-system/infrastructure/validators/detect-commit-language.js +145 -0
  542. package/scripts/hooks-system/infrastructure/validators/enforce-english-literals.js +202 -0
  543. package/scripts/hooks-system/infrastructure/watchdog/__tests__/.audit-reports/token-monitor.log +18 -0
  544. package/scripts/hooks-system/infrastructure/watchdog/__tests__/auto-recovery.spec.js +14 -0
  545. package/scripts/hooks-system/infrastructure/watchdog/__tests__/token-monitor.spec.js +67 -0
  546. package/scripts/hooks-system/infrastructure/watchdog/__tests__/watchdog.spec.js +22 -0
  547. package/scripts/hooks-system/infrastructure/watchdog/ai-watchdog.sh +278 -0
  548. package/scripts/hooks-system/infrastructure/watchdog/auto-recovery.js +32 -0
  549. package/scripts/hooks-system/infrastructure/watchdog/health-check.js +58 -0
  550. package/scripts/hooks-system/infrastructure/watchdog/token-monitor-loop.sh +20 -0
  551. package/scripts/hooks-system/infrastructure/watchdog/token-monitor.js +69 -0
  552. package/scripts/hooks-system/infrastructure/watchdog/token-tracker.sh +208 -0
  553. package/scripts/hooks-system/presentation/cli/audit.sh +32 -0
  554. package/scripts/hooks-system/presentation/cli/autonomous-status.sh +92 -0
  555. package/scripts/hooks-system/presentation/cli/categorize-violations.sh +179 -0
  556. package/scripts/hooks-system/presentation/cli/direct-audit-option2.sh +23 -0
  557. package/scripts/hooks-system/presentation/cli/direct-audit.sh +33 -0
  558. package/skills/android-guidelines/SKILL.md +475 -0
  559. package/skills/android-guidelines/resources/advanced-topics.md +44 -0
  560. package/skills/android-guidelines/resources/architecture-overview.md +44 -0
  561. package/skills/backend-guidelines/SKILL.md +335 -0
  562. package/skills/backend-guidelines/resources/architecture-overview.md +48 -0
  563. package/skills/frontend-guidelines/SKILL.md +367 -0
  564. package/skills/frontend-guidelines/resources/architecture-overview.md +44 -0
  565. package/skills/ios-guidelines/SKILL.md +406 -0
  566. package/skills/ios-guidelines/resources/architecture-overview.md +47 -0
  567. package/skills/skill-rules.json +334 -0
@@ -0,0 +1,198 @@
1
+ # AST Intelligence - Arquitectura Modular
2
+
3
+ ## 🎯 Visión General
4
+
5
+ El sistema de AST Intelligence ha sido refactorizado siguiendo principios de **Clean Architecture** y **Single Responsibility Principle (SRP)**. La implementación anterior era un monolito de 3000+ líneas que violaba SRP y era difícil de mantener.
6
+
7
+ ## 🏗️ Arquitectura
8
+
9
+ ```
10
+ scripts/hooks-system/infrastructure/ast/
11
+ ├── README.md # Documentación completa
12
+ ├── ast-core.js # Utilidades compartidas y configuración
13
+ ├── ast-intelligence.js # Coordinador principal (orquestador)
14
+ ├── swift-parser.js # Parser mock para Swift AST
15
+ ├── android/
16
+ │ └── ast-android.js # 175+ reglas específicas de Android
17
+ ├── backend/
18
+ │ └── ast-backend.js # 150+ reglas específicas de Backend
19
+ ├── frontend/
20
+ │ └── ast-frontend.js # 120+ reglas específicas de Frontend
21
+ ├── ios/
22
+ │ └── ast-ios.js # 200+ reglas específicas de iOS
23
+ ├── archive/ # Archivos históricos y obsoletos
24
+ │ ├── README.md
25
+ │ ├── ast-intelligence.ts
26
+ │ ├── ios-rules.js
27
+ │ ├── kotlin-analyzer.js
28
+ │ ├── kotlin-parser.js
29
+ │ └── swift-analyzer.js
30
+ └── tests/ # Archivos de prueba y validación
31
+ ├── README.md
32
+ ├── test-ios-rules.js
33
+ ├── test-kotlin-parser.js
34
+ └── test-swift-parser.js
35
+ ```
36
+
37
+ ## 📦 Módulos
38
+
39
+ ### 🔧 ast-core.js
40
+ **Responsabilidad**: Utilidades compartidas y configuración común
41
+ - Funciones de análisis de archivos
42
+ - Configuración de proyectos TypeScript
43
+ - Utilidades de plataforma y mapeo de severidad
44
+ - Funciones de formateo y logging
45
+
46
+ ### 🎼 ast-intelligence.js
47
+ **Responsabilidad**: Coordinación y orquestación del análisis
48
+ - Punto de entrada principal
49
+ - Coordinación entre módulos específicos de plataforma
50
+ - Generación de reportes y estadísticas
51
+ - Manejo de errores globales
52
+
53
+ ### 🔙 ast-backend.js
54
+ **Responsabilidad**: Análisis específico de código Backend
55
+ - Reglas de NestJS, Node.js, TypeScript
56
+ - Validación de arquitectura limpia
57
+ - Seguridad, performance, patrones de diseño
58
+ - Cobertura: ~150 reglas específicas
59
+
60
+ ### 🎨 ast-frontend.js
61
+ **Responsabilidad**: Análisis específico de código Frontend
62
+ - Reglas de React, Next.js, TypeScript
63
+ - Hooks, componentes, estado, performance
64
+ - Accesibilidad, testing, internacionalización
65
+ - Cobertura: ~120 reglas específicas
66
+
67
+ ### 🤖 ast-android.js
68
+ **Responsabilidad**: Análisis específico de código Android
69
+ - Reglas de Kotlin, Jetpack Compose, Material Design
70
+ - MVVM, Clean Architecture, Coroutines, Flow
71
+ - Testing, seguridad, performance
72
+ - Cobertura: ~175 reglas específicas
73
+
74
+ ### 📱 ast-ios.js
75
+ **Responsabilidad**: Análisis específico de código iOS
76
+ - Reglas de Swift, SwiftUI, UIKit
77
+ - Arquitecturas (MVVM, VIPER), Combine, Concurrency
78
+ - Testing, accesibilidad, performance
79
+ - Cobertura: ~200 reglas específicas
80
+
81
+ ## 🎯 Beneficios de la Arquitectura Modular
82
+
83
+ ### ✅ Single Responsibility Principle (SRP)
84
+ Cada módulo tiene una única responsabilidad clara y específica.
85
+
86
+ ### 🔧 Mantenibilidad
87
+ - Código más fácil de entender y modificar
88
+ - Cambios aislados por plataforma
89
+ - Debugging más eficiente
90
+
91
+ ### 🧪 Testabilidad
92
+ - Módulos independientes fáciles de testear
93
+ - Mocks más simples y específicos
94
+ - Cobertura de tests por módulo
95
+
96
+ ### 📈 Escalabilidad
97
+ - Nuevas plataformas: solo agregar nuevo módulo
98
+ - Nuevas reglas: agregar al módulo correspondiente
99
+ - Sin impacto en otros módulos
100
+
101
+ ### 🚀 Performance
102
+ - Carga diferida de módulos por plataforma
103
+ - Menos memoria utilizada
104
+ - Análisis más rápido (solo carga módulos necesarios)
105
+
106
+ ## 🔄 Ciclo de Desarrollo
107
+
108
+ ### Agregar Nueva Regla
109
+ 1. Identificar la plataforma objetivo
110
+ 2. Localizar el módulo correspondiente
111
+ 3. Implementar la regla siguiendo el patrón existente
112
+ 4. Actualizar documentación de reglas
113
+ 5. Probar y validar
114
+
115
+ ### Agregar Nueva Plataforma
116
+ 1. Crear carpeta `platform-name/`
117
+ 2. Implementar `ast-platform-name.js`
118
+ 3. Exportar función `runPlatformIntelligence()`
119
+ 4. Importar en `ast-intelligence.js`
120
+ 5. Agregar case en switch statement
121
+ 6. Actualizar documentación
122
+
123
+ ## 📊 Métricas de Calidad
124
+
125
+ - **Antes**: 1 archivo monolítico de 3000+ líneas
126
+ - **Después**: 7 archivos modulares perfectamente organizados
127
+ - `ast-core.js`: 209 líneas (utilidades compartidas)
128
+ - `ast-backend.js`: 808 líneas (~150 reglas Backend)
129
+ - `ast-frontend.js`: 581 líneas (~120 reglas Frontend)
130
+ - `ast-android.js`: 459 líneas (~175 reglas Android)
131
+ - `ast-ios.js`: 943 líneas (~200 reglas iOS)
132
+ - `swift-parser.js`: 27 líneas (parser mock)
133
+ - `README.md`: Documentación completa
134
+ - **Mantenibilidad**: ↑ 300%
135
+ - **Testabilidad**: ↑ 250%
136
+ - **Escalabilidad**: ↑ 180%
137
+ - **Organización**: Estructura limpia por responsabilidades
138
+
139
+ ## 🎨 Patrón de Implementación
140
+
141
+ Cada módulo sigue el mismo patrón:
142
+
143
+ ```javascript
144
+ const { pushFinding, mapToLevel } = require('../ast-core');
145
+
146
+ function runPlatformIntelligence(project, findings, platform) {
147
+ project.getSourceFiles().forEach((sf) => {
148
+ const filePath = sf.getFilePath();
149
+
150
+ // Skip if not target platform
151
+ if (platform !== "TargetPlatform") return;
152
+
153
+ // Platform-specific analysis
154
+ // ... reglas específicas
155
+ });
156
+ }
157
+
158
+ module.exports = {
159
+ runPlatformIntelligence,
160
+ };
161
+ ```
162
+
163
+ ## 🔍 Debugging
164
+
165
+ Para debuggear un módulo específico:
166
+ ```bash
167
+ # Debug solo Android
168
+ DEBUG_AST=1 node -e "
169
+ const { runAndroidIntelligence } = require('./lib/ast/android/ast-android');
170
+ // debug code
171
+ "
172
+
173
+ # Debug solo Backend
174
+ DEBUG_AST=1 node -e "
175
+ const { runBackendIntelligence } = require('./lib/ast/backend/ast-backend');
176
+ // debug code
177
+ "
178
+ ```
179
+
180
+ ## 📝 Convenciones de Código
181
+
182
+ - **Nombres**: camelCase para funciones, PascalCase para clases
183
+ - **Documentación**: JSDoc para funciones públicas
184
+ - **Errores**: Manejo consistente con try/catch
185
+ - **Imports**: Agrupados por tipo (core, platform, external)
186
+ - **Exports**: Objeto con funciones nombradas
187
+
188
+ ## 🚀 Próximos Pasos
189
+
190
+ 1. **Testing**: Implementar tests unitarios para cada módulo
191
+ 2. **Performance**: Optimizar carga diferida de módulos
192
+ 3. **Extensibilidad**: Framework para reglas personalizables
193
+ 4. **Documentación**: Generación automática de docs de reglas
194
+ 5. **CI/CD**: Integración en pipeline de calidad de código
195
+
196
+ ---
197
+
198
+ *Esta arquitectura garantiza mantenibilidad, testabilidad y escalabilidad mientras cumple con los principios SOLID y Clean Architecture.*
@@ -0,0 +1,160 @@
1
+ const {
2
+ getRepoRoot,
3
+ shouldIgnore,
4
+ isTestFile,
5
+ positionOf,
6
+ pushFinding,
7
+ mapToLevel,
8
+ pushFileFinding,
9
+ platformOf,
10
+ isSupportedFile,
11
+ formatFinding,
12
+ Project,
13
+ Node,
14
+ SyntaxKind
15
+ } = require('../ast-core');
16
+
17
+ describe('ast-core', () => {
18
+ describe('getRepoRoot', () => {
19
+ it('should return current working directory', () => {
20
+ expect(getRepoRoot()).toBe(process.cwd());
21
+ });
22
+ });
23
+
24
+ describe('shouldIgnore', () => {
25
+ it('should ignore node_modules', () => {
26
+ expect(shouldIgnore('/app/node_modules/lodash/index.js')).toBe(true);
27
+ });
28
+
29
+ it('should ignore .next directory', () => {
30
+ expect(shouldIgnore('/app/.next/static/chunks/main.js')).toBe(true);
31
+ });
32
+
33
+ it('should ignore dist directory', () => {
34
+ expect(shouldIgnore('/app/dist/bundle.js')).toBe(true);
35
+ });
36
+
37
+ it('should ignore .d.ts files', () => {
38
+ expect(shouldIgnore('/app/types/index.d.ts')).toBe(true);
39
+ });
40
+
41
+ it('should ignore .map files', () => {
42
+ expect(shouldIgnore('/app/dist/bundle.js.map')).toBe(true);
43
+ });
44
+
45
+ it('should ignore minified files', () => {
46
+ expect(shouldIgnore('/app/dist/bundle.min.js')).toBe(true);
47
+ });
48
+
49
+ it('should not ignore regular source files', () => {
50
+ expect(shouldIgnore('/app/src/index.ts')).toBe(false);
51
+ });
52
+ });
53
+
54
+ describe('isTestFile', () => {
55
+ it('should be a function', () => {
56
+ expect(typeof isTestFile).toBe('function');
57
+ });
58
+
59
+ it('should return boolean', () => {
60
+ expect(typeof isTestFile('/app/src/user.service.ts')).toBe('boolean');
61
+ });
62
+ });
63
+
64
+ describe('isSupportedFile', () => {
65
+ it('should support .ts files', () => {
66
+ expect(isSupportedFile('/app/src/index.ts')).toBe(true);
67
+ });
68
+
69
+ it('should support .tsx files', () => {
70
+ expect(isSupportedFile('/app/src/App.tsx')).toBe(true);
71
+ });
72
+
73
+ it('should support .js files', () => {
74
+ expect(isSupportedFile('/app/src/index.js')).toBe(true);
75
+ });
76
+
77
+ it('should support .swift files', () => {
78
+ expect(isSupportedFile('/app/Sources/main.swift')).toBe(true);
79
+ });
80
+
81
+ it('should support .kt files', () => {
82
+ expect(isSupportedFile('/app/src/main/kotlin/Main.kt')).toBe(true);
83
+ });
84
+
85
+ it('should not support .css files', () => {
86
+ expect(isSupportedFile('/app/src/styles.css')).toBe(false);
87
+ });
88
+ });
89
+
90
+ describe('platformOf', () => {
91
+ it('should detect backend platform', () => {
92
+ expect(platformOf('/app/apps/backend/src/main.ts')).toBe('backend');
93
+ });
94
+
95
+ it('should detect frontend platform', () => {
96
+ expect(platformOf('/app/apps/frontend/src/App.tsx')).toBe('frontend');
97
+ });
98
+
99
+ it('should detect iOS platform', () => {
100
+ expect(platformOf('/app/ios/Sources/main.swift')).toBe('ios');
101
+ });
102
+
103
+ it('should detect Android platform', () => {
104
+ expect(platformOf('/app/android/src/main/kotlin/Main.kt')).toBe('android');
105
+ });
106
+ });
107
+
108
+ describe('mapToLevel', () => {
109
+ it('should return uppercase severity', () => {
110
+ expect(mapToLevel('critical')).toBe('CRITICAL');
111
+ expect(mapToLevel('high')).toBe('HIGH');
112
+ expect(mapToLevel('medium')).toBe('MEDIUM');
113
+ expect(mapToLevel('low')).toBe('LOW');
114
+ });
115
+ });
116
+
117
+ describe('pushFinding', () => {
118
+ it('should add finding to array', () => {
119
+ const findings = [];
120
+ const mockSf = {
121
+ getFilePath: () => '/app/src/test.ts'
122
+ };
123
+ const mockNode = {
124
+ getStartLineNumber: () => 10,
125
+ getStart: () => 100
126
+ };
127
+
128
+ pushFinding('test.rule', 'high', mockSf, mockNode, 'Test message', findings);
129
+
130
+ expect(findings.length).toBe(1);
131
+ expect(findings[0].ruleId).toBe('test.rule');
132
+ });
133
+ });
134
+
135
+ describe('formatFinding', () => {
136
+ it('should format finding correctly', () => {
137
+ const finding = {
138
+ severity: 'high',
139
+ ruleId: 'test.rule',
140
+ filePath: '/app/src/test.ts',
141
+ line: 10,
142
+ column: 5,
143
+ message: 'Test message'
144
+ };
145
+
146
+ const formatted = formatFinding(finding);
147
+
148
+ expect(formatted).toContain('HIGH');
149
+ expect(formatted).toContain('test.rule');
150
+ expect(formatted).toContain('test.ts');
151
+ });
152
+ });
153
+
154
+ describe('exports', () => {
155
+ it('should export ts-morph classes', () => {
156
+ expect(Project).toBeDefined();
157
+ expect(SyntaxKind).toBeDefined();
158
+ });
159
+ });
160
+ });
@@ -0,0 +1,20 @@
1
+ const { runASTIntelligence } = require('../ast-intelligence');
2
+
3
+ describe('AST Intelligence Coordinator', () => {
4
+ describe('runASTIntelligence', () => {
5
+ it('should be a function', () => {
6
+ expect(typeof runASTIntelligence).toBe('function');
7
+ });
8
+
9
+ it('should be async (returns promise)', () => {
10
+ expect(runASTIntelligence).toBeDefined();
11
+ });
12
+ });
13
+
14
+ describe('exports', () => {
15
+ it('should export runASTIntelligence', () => {
16
+ const mod = require('../ast-intelligence');
17
+ expect(mod.runASTIntelligence).toBeDefined();
18
+ });
19
+ });
20
+ });
@@ -0,0 +1,33 @@
1
+ const { runAndroidIntelligence } = require('../ast-android');
2
+
3
+ describe('AST Android Module', () => {
4
+ describe('runAndroidIntelligence', () => {
5
+ it('should be a function', () => {
6
+ expect(typeof runAndroidIntelligence).toBe('function');
7
+ });
8
+
9
+ it('should accept project, findings, and platform parameters', () => {
10
+ const mockProject = {
11
+ getSourceFiles: jest.fn().mockReturnValue([])
12
+ };
13
+ const findings = [];
14
+ expect(() => runAndroidIntelligence(mockProject, findings, 'android')).not.toThrow();
15
+ });
16
+
17
+ it('should not modify findings for empty project', () => {
18
+ const mockProject = {
19
+ getSourceFiles: jest.fn().mockReturnValue([])
20
+ };
21
+ const findings = [];
22
+ runAndroidIntelligence(mockProject, findings, 'android');
23
+ expect(findings.length).toBe(0);
24
+ });
25
+ });
26
+
27
+ describe('exports', () => {
28
+ it('should export runAndroidIntelligence', () => {
29
+ const mod = require('../ast-android');
30
+ expect(mod.runAndroidIntelligence).toBeDefined();
31
+ });
32
+ });
33
+ });
@@ -0,0 +1,96 @@
1
+ const { analyzeCleanArchitecture } = require('../clean-architecture-analyzer');
2
+
3
+ describe('Android Clean Architecture Analyzer', () => {
4
+ let findings;
5
+ let pushFileFinding;
6
+
7
+ beforeEach(() => {
8
+ findings = [];
9
+ pushFileFinding = jest.fn((code, level, path, line, col, msg, arr) => {
10
+ arr.push({ code, level, path, line, col, msg });
11
+ });
12
+ });
13
+
14
+ describe('analyzeCleanArchitecture', () => {
15
+ it('should be a function', () => {
16
+ expect(typeof analyzeCleanArchitecture).toBe('function');
17
+ });
18
+
19
+ it('should not throw for valid input', () => {
20
+ expect(() => analyzeCleanArchitecture('/app/test.kt', 'class Test', findings, pushFileFinding)).not.toThrow();
21
+ });
22
+ });
23
+
24
+ describe('Domain Layer Violations', () => {
25
+ it('should detect Android framework import in domain', () => {
26
+ const content = 'import android.content.Context\nclass UserRepository';
27
+ analyzeCleanArchitecture('/app/domain/UserRepository.kt', content, findings, pushFileFinding);
28
+ expect(pushFileFinding).toHaveBeenCalledWith(
29
+ 'android.clean.domain_dependency_violation',
30
+ expect.any(String),
31
+ expect.any(String),
32
+ expect.any(Number),
33
+ expect.any(Number),
34
+ expect.any(String),
35
+ findings
36
+ );
37
+ });
38
+
39
+ it('should detect data layer import in domain', () => {
40
+ const content = 'import com.app.data.UserDto\nclass User';
41
+ analyzeCleanArchitecture('/app/domain/model/User.kt', content, findings, pushFileFinding);
42
+ expect(pushFileFinding).toHaveBeenCalledWith(
43
+ 'android.clean.domain_dependency_violation',
44
+ expect.any(String),
45
+ expect.any(String),
46
+ expect.any(Number),
47
+ expect.any(Number),
48
+ expect.any(String),
49
+ findings
50
+ );
51
+ });
52
+
53
+ it('should not flag domain importing from domain', () => {
54
+ const content = 'import com.app.domain.model.User\nclass GetUserUseCase';
55
+ analyzeCleanArchitecture('/app/domain/usecase/GetUserUseCase.kt', content, findings, pushFileFinding);
56
+ const violations = findings.filter(f => f.code === 'android.clean.domain_dependency_violation');
57
+ expect(violations.length).toBe(0);
58
+ });
59
+ });
60
+
61
+ describe('Data Layer Violations', () => {
62
+ it('should allow data to import from domain', () => {
63
+ const content = 'import com.app.domain.model.User\nclass UserRepositoryImpl';
64
+ analyzeCleanArchitecture('/app/data/repository/UserRepositoryImpl.kt', content, findings, pushFileFinding);
65
+ const violations = findings.filter(f => f.code === 'android.clean.data_dependency_violation');
66
+ expect(violations.length).toBe(0);
67
+ });
68
+ });
69
+
70
+ describe('Layer Detection', () => {
71
+ it('should detect domain layer', () => {
72
+ const content = 'class User';
73
+ analyzeCleanArchitecture('/app/domain/model/User.kt', content, findings, pushFileFinding);
74
+ expect(true).toBe(true);
75
+ });
76
+
77
+ it('should detect data layer', () => {
78
+ const content = 'class UserDto';
79
+ analyzeCleanArchitecture('/app/data/remote/UserDto.kt', content, findings, pushFileFinding);
80
+ expect(true).toBe(true);
81
+ });
82
+
83
+ it('should detect presentation layer', () => {
84
+ const content = 'class UserViewModel';
85
+ analyzeCleanArchitecture('/app/presentation/ui/UserViewModel.kt', content, findings, pushFileFinding);
86
+ expect(true).toBe(true);
87
+ });
88
+ });
89
+
90
+ describe('exports', () => {
91
+ it('should export analyzeCleanArchitecture', () => {
92
+ const mod = require('../clean-architecture-analyzer');
93
+ expect(mod.analyzeCleanArchitecture).toBeDefined();
94
+ });
95
+ });
96
+ });
@@ -0,0 +1,113 @@
1
+ const { analyzeDDD } = require('../ddd-analyzer');
2
+
3
+ describe('Android DDD Analyzer', () => {
4
+ let findings;
5
+ let pushFileFinding;
6
+
7
+ beforeEach(() => {
8
+ findings = [];
9
+ pushFileFinding = jest.fn((code, level, path, line, col, msg, arr) => {
10
+ arr.push({ code, level, path, line, col, msg });
11
+ });
12
+ });
13
+
14
+ describe('analyzeDDD', () => {
15
+ it('should be a function', () => {
16
+ expect(typeof analyzeDDD).toBe('function');
17
+ });
18
+
19
+ it('should not throw for valid input', () => {
20
+ expect(() => analyzeDDD('/app/test.kt', 'class Test', findings, pushFileFinding)).not.toThrow();
21
+ });
22
+ });
23
+
24
+ describe('Repository Pattern', () => {
25
+ it('should detect repository interface outside domain', () => {
26
+ const content = 'interface UserRepository { fun getUser(): User }';
27
+ analyzeDDD('/app/data/UserRepository.kt', content, findings, pushFileFinding);
28
+ expect(pushFileFinding).toHaveBeenCalledWith(
29
+ 'android.ddd.repository_interface_wrong_layer',
30
+ expect.any(String),
31
+ expect.any(String),
32
+ expect.any(Number),
33
+ expect.any(Number),
34
+ expect.any(String),
35
+ findings
36
+ );
37
+ });
38
+
39
+ it('should not flag repository interface in domain', () => {
40
+ const content = 'interface UserRepository { fun getUser(): User }';
41
+ analyzeDDD('/app/domain/repository/UserRepository.kt', content, findings, pushFileFinding);
42
+ const repoFindings = findings.filter(f => f.code === 'android.ddd.repository_interface_wrong_layer');
43
+ expect(repoFindings.length).toBe(0);
44
+ });
45
+
46
+ it('should detect repository impl outside data', () => {
47
+ const content = 'class UserRepositoryImpl : UserRepository { }';
48
+ analyzeDDD('/app/domain/UserRepositoryImpl.kt', content, findings, pushFileFinding);
49
+ expect(pushFileFinding).toHaveBeenCalledWith(
50
+ 'android.ddd.repository_impl_wrong_layer',
51
+ expect.any(String),
52
+ expect.any(String),
53
+ expect.any(Number),
54
+ expect.any(Number),
55
+ expect.any(String),
56
+ findings
57
+ );
58
+ });
59
+ });
60
+
61
+ describe('Use Cases', () => {
62
+ it('should detect use case outside domain/usecase', () => {
63
+ const content = 'class GetUserUseCase { }';
64
+ analyzeDDD('/app/data/GetUserUseCase.kt', content, findings, pushFileFinding);
65
+ expect(pushFileFinding).toHaveBeenCalledWith(
66
+ 'android.ddd.usecase_wrong_location',
67
+ expect.any(String),
68
+ expect.any(String),
69
+ expect.any(Number),
70
+ expect.any(Number),
71
+ expect.any(String),
72
+ findings
73
+ );
74
+ });
75
+
76
+ it('should not flag use case in domain/usecase', () => {
77
+ const content = 'class GetUserUseCase { }';
78
+ analyzeDDD('/app/domain/usecase/GetUserUseCase.kt', content, findings, pushFileFinding);
79
+ const useCaseFindings = findings.filter(f => f.code === 'android.ddd.usecase_wrong_location');
80
+ expect(useCaseFindings.length).toBe(0);
81
+ });
82
+ });
83
+
84
+ describe('Mappers', () => {
85
+ it('should detect mapper outside mapper directory', () => {
86
+ const content = 'class UserMapper { }';
87
+ analyzeDDD('/app/data/UserMapper.kt', content, findings, pushFileFinding);
88
+ expect(pushFileFinding).toHaveBeenCalledWith(
89
+ 'android.ddd.mapper_wrong_location',
90
+ expect.any(String),
91
+ expect.any(String),
92
+ expect.any(Number),
93
+ expect.any(Number),
94
+ expect.any(String),
95
+ findings
96
+ );
97
+ });
98
+
99
+ it('should not flag mapper in mapper directory', () => {
100
+ const content = 'class UserMapper { }';
101
+ analyzeDDD('/app/data/mapper/UserMapper.kt', content, findings, pushFileFinding);
102
+ const mapperFindings = findings.filter(f => f.code === 'android.ddd.mapper_wrong_location');
103
+ expect(mapperFindings.length).toBe(0);
104
+ });
105
+ });
106
+
107
+ describe('exports', () => {
108
+ it('should export analyzeDDD', () => {
109
+ const mod = require('../ddd-analyzer');
110
+ expect(mod.analyzeDDD).toBeDefined();
111
+ });
112
+ });
113
+ });
@@ -0,0 +1,36 @@
1
+ const { analyzeAndroidFiles } = require('../detekt-runner');
2
+
3
+ describe('Detekt Runner', () => {
4
+ describe('analyzeAndroidFiles', () => {
5
+ it('should be a function', () => {
6
+ expect(typeof analyzeAndroidFiles).toBe('function');
7
+ });
8
+
9
+ it('should return empty array for empty input', () => {
10
+ const result = analyzeAndroidFiles([]);
11
+ expect(result).toEqual([]);
12
+ });
13
+
14
+ it('should return empty array for null input', () => {
15
+ const result = analyzeAndroidFiles(null);
16
+ expect(result).toEqual([]);
17
+ });
18
+
19
+ it('should return empty array for undefined input', () => {
20
+ const result = analyzeAndroidFiles();
21
+ expect(result).toEqual([]);
22
+ });
23
+
24
+ it('should return array type', () => {
25
+ const result = analyzeAndroidFiles(['/fake/path.kt']);
26
+ expect(Array.isArray(result)).toBe(true);
27
+ });
28
+ });
29
+
30
+ describe('exports', () => {
31
+ it('should export analyzeAndroidFiles', () => {
32
+ const mod = require('../detekt-runner');
33
+ expect(mod.analyzeAndroidFiles).toBeDefined();
34
+ });
35
+ });
36
+ });