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.
- package/LICENSE +21 -0
- package/README.md +1105 -0
- package/bin/__tests__/auto-fix-violations.spec.js +132 -0
- package/bin/__tests__/auto-restart-guards.spec.js +11 -0
- package/bin/__tests__/check-doc-drift.spec.js +11 -0
- package/bin/__tests__/check-version.spec.js +240 -0
- package/bin/__tests__/cli.spec.js +11 -0
- package/bin/__tests__/guard-auto-manager.spec.js +11 -0
- package/bin/__tests__/guard-supervisor.spec.js +11 -0
- package/bin/__tests__/hook-status.spec.js +11 -0
- package/bin/__tests__/install.spec.js +11 -0
- package/bin/__tests__/nightly-metrics-report.spec.js +94 -0
- package/bin/__tests__/plan-review.spec.js +11 -0
- package/bin/__tests__/predictive-hooks.spec.js +11 -0
- package/bin/__tests__/run-ast-adapter.spec.js +11 -0
- package/bin/__tests__/run-orchestrator.spec.js +11 -0
- package/bin/__tests__/run-playbook.spec.js +11 -0
- package/bin/__tests__/setup-eslint.spec.js +11 -0
- package/bin/__tests__/violations-api.spec.js +11 -0
- package/bin/__tests__/watch-hooks.spec.js +11 -0
- package/bin/ai-commit.sh +5 -0
- package/bin/audit +5 -0
- package/bin/audit-library.js +6 -0
- package/bin/auto-fix-violations.js +19 -0
- package/bin/auto-restart-guards.js +6 -0
- package/bin/check-doc-drift.js +6 -0
- package/bin/check-version.js +19 -0
- package/bin/cleanup-branches.sh +5 -0
- package/bin/cli.js +6 -0
- package/bin/demo-recording.sh +5 -0
- package/bin/demo-violations +5 -0
- package/bin/fix-enforcer +5 -0
- package/bin/fix-gitflow-enforcement.sh +5 -0
- package/bin/generate-progress-report.sh +5 -0
- package/bin/git-analyze-pairs.sh +5 -0
- package/bin/git-leave-branch-check.sh +5 -0
- package/bin/gitflow +5 -0
- package/bin/gitflow-shell-integration.sh +5 -0
- package/bin/guard-auto-manager.js +6 -0
- package/bin/guard-autostart.sh +5 -0
- package/bin/guard-env.sh +5 -0
- package/bin/guard-supervisor.js +6 -0
- package/bin/hook-status.js +6 -0
- package/bin/install-git-wrapper.sh +5 -0
- package/bin/install.js +6 -0
- package/bin/kill-mcp-zombies.sh +5 -0
- package/bin/nightly-metrics-report.js +8 -0
- package/bin/plan-review.js +6 -0
- package/bin/predictive-hooks.js +6 -0
- package/bin/pumuki-audit.js +6 -0
- package/bin/pumuki-init.js +19 -0
- package/bin/pumuki-mcp-server.js +13 -0
- package/bin/pumuki-mcp.js +6 -0
- package/bin/pumuki-rules.js +6 -0
- package/bin/request-no-verify-approval.sh +5 -0
- package/bin/run-ast-adapter.js +6 -0
- package/bin/run-intelligent-audit.sh +5 -0
- package/bin/run-orchestrator.js +6 -0
- package/bin/run-playbook.js +6 -0
- package/bin/session-loader.sh +5 -0
- package/bin/setup-eslint.js +6 -0
- package/bin/start-guards.sh +5 -0
- package/bin/sync-autonomous-orchestrator.sh +5 -0
- package/bin/sync-to-library.sh +5 -0
- package/bin/update-evidence.sh +5 -0
- package/bin/update-session-context.sh +5 -0
- package/bin/verify-no-verify.sh +5 -0
- package/bin/violations +5 -0
- package/bin/violations-api.js +6 -0
- package/bin/watch-hooks.js +6 -0
- package/docs/API_REFERENCE.md +161 -0
- package/docs/ARCHITECTURE.md +236 -0
- package/docs/ARCHITECTURE_DETAILED.md +499 -0
- package/docs/BRANCH_PROTECTION_GUIDE.md +236 -0
- package/docs/CODE_STANDARDS.md +440 -0
- package/docs/CONTRIBUTING.md +246 -0
- package/docs/DEPENDENCIES.md +541 -0
- package/docs/HOW_IT_WORKS.md +716 -0
- package/docs/INSTALLATION.md +784 -0
- package/docs/MCP_SERVERS.md +786 -0
- package/docs/TESTING.md +423 -0
- package/docs/USAGE.md +856 -0
- package/docs/images/ast_intelligence_01.png +0 -0
- package/docs/images/ast_intelligence_02.png +0 -0
- package/docs/images/ast_intelligence_03.png +0 -0
- package/docs/images/ast_intelligence_04.png +0 -0
- package/docs/images/ast_intelligence_05.png +0 -0
- package/hooks/getSkillRulesPath.ts +52 -0
- package/hooks/git-status-monitor.ts +160 -0
- package/hooks/index.js +5 -0
- package/hooks/notify-macos.ts +42 -0
- package/hooks/package.json +16 -0
- package/hooks/post-tool-use-tracker.sh +89 -0
- package/hooks/pre-tool-use-evidence-validator.ts +252 -0
- package/hooks/pre-tool-use-guard.ts +151 -0
- package/hooks/skill-activation-prompt.sh +8 -0
- package/hooks/skill-activation-prompt.ts +307 -0
- package/index.js +49 -0
- package/package.json +117 -0
- package/presentation/cli/audit.sh +24 -0
- package/presentation/cli/autonomous-status.sh +92 -0
- package/presentation/cli/categorize-violations.sh +179 -0
- package/presentation/cli/direct-audit-option2.sh +23 -0
- package/presentation/cli/direct-audit.sh +33 -0
- package/scripts/hooks-system/.AI_TOKEN_STATUS.txt +16 -0
- package/scripts/hooks-system/.audit-reports/auto-recovery.log +1 -0
- package/scripts/hooks-system/.audit-reports/install-wizard.log +4 -0
- package/scripts/hooks-system/.audit-reports/notifications.log +425 -0
- package/scripts/hooks-system/.audit-reports/token-monitor.log +1275 -0
- package/scripts/hooks-system/.audit_tmp/intelligent-report.json +44953 -0
- package/scripts/hooks-system/.audit_tmp/intelligent-report.txt +1338 -0
- package/scripts/hooks-system/.audit_tmp/severity-history.jsonl +1 -0
- package/scripts/hooks-system/.audit_tmp/token-usage.jsonl +1 -0
- package/scripts/hooks-system/.hook-system/config.json +8 -0
- package/scripts/hooks-system/application/CompositionRoot.js +325 -0
- package/scripts/hooks-system/application/__tests__/CompositionRoot.spec.js +84 -0
- package/scripts/hooks-system/application/commands/index.js +64 -0
- package/scripts/hooks-system/application/queries/index.js +60 -0
- package/scripts/hooks-system/application/services/AutonomousOrchestrator.js +130 -0
- package/scripts/hooks-system/application/services/ContextDetectionEngine.js +181 -0
- package/scripts/hooks-system/application/services/DynamicRulesLoader.js +182 -0
- package/scripts/hooks-system/application/services/GitFlowService.js +156 -0
- package/scripts/hooks-system/application/services/GitTreeState.js +140 -0
- package/scripts/hooks-system/application/services/HookSystemScheduler.js +77 -0
- package/scripts/hooks-system/application/services/IntelligentCommitAnalyzer.js +151 -0
- package/scripts/hooks-system/application/services/IntelligentGitTreeMonitor.js +118 -0
- package/scripts/hooks-system/application/services/PlatformAnalysisService.js +173 -0
- package/scripts/hooks-system/application/services/PlatformDetectionService.js +168 -0
- package/scripts/hooks-system/application/services/PlaybookRunner.js +39 -0
- package/scripts/hooks-system/application/services/PredictiveHookAdvisor.js +56 -0
- package/scripts/hooks-system/application/services/RealtimeGuardPlugin.js +62 -0
- package/scripts/hooks-system/application/services/RealtimeGuardService.js +374 -0
- package/scripts/hooks-system/application/services/SmartDirtyTreeAnalyzer.js +63 -0
- package/scripts/hooks-system/application/services/__tests__/AutonomousOrchestrator.spec.js +36 -0
- package/scripts/hooks-system/application/services/__tests__/ContextDetectionEngine.spec.js +33 -0
- package/scripts/hooks-system/application/services/__tests__/DynamicRulesLoader.spec.js +43 -0
- package/scripts/hooks-system/application/services/__tests__/GitTreeState.spec.js +163 -0
- package/scripts/hooks-system/application/services/__tests__/HookSystemScheduler.spec.js +207 -0
- package/scripts/hooks-system/application/services/__tests__/IntelligentCommitAnalyzer.spec.js +365 -0
- package/scripts/hooks-system/application/services/__tests__/IntelligentGitTreeMonitor.spec.js +188 -0
- package/scripts/hooks-system/application/services/__tests__/PlatformDetectionService.spec.js +28 -0
- package/scripts/hooks-system/application/services/__tests__/PlaybookRunner.spec.js +143 -0
- package/scripts/hooks-system/application/services/__tests__/PredictiveHookAdvisor.spec.js +181 -0
- package/scripts/hooks-system/application/services/__tests__/RealtimeGuardPlugin.spec.js +45 -0
- package/scripts/hooks-system/application/services/__tests__/RealtimeGuardService.critical.spec.js +401 -0
- package/scripts/hooks-system/application/services/commit/CommitMessageGenerator.js +34 -0
- package/scripts/hooks-system/application/services/commit/FeatureDetector.js +101 -0
- package/scripts/hooks-system/application/services/evidence/EvidenceContextManager.js +163 -0
- package/scripts/hooks-system/application/services/evidence/__tests__/EvidenceContextManager.spec.js +98 -0
- package/scripts/hooks-system/application/services/guard/GuardAutoManagerService.js +169 -0
- package/scripts/hooks-system/application/services/guard/GuardConfig.js +15 -0
- package/scripts/hooks-system/application/services/guard/GuardEventLogger.js +70 -0
- package/scripts/hooks-system/application/services/guard/GuardHealthReminder.js +54 -0
- package/scripts/hooks-system/application/services/guard/GuardHeartbeatMonitor.js +94 -0
- package/scripts/hooks-system/application/services/guard/GuardLockManager.js +72 -0
- package/scripts/hooks-system/application/services/guard/GuardMonitorLoop.js +29 -0
- package/scripts/hooks-system/application/services/guard/GuardNotificationHandler.js +36 -0
- package/scripts/hooks-system/application/services/guard/GuardProcessManager.js +113 -0
- package/scripts/hooks-system/application/services/guard/GuardRecoveryService.js +90 -0
- package/scripts/hooks-system/application/services/guard/__tests__/GuardAutoManagerService.spec.js +77 -0
- package/scripts/hooks-system/application/services/installation/ConfigurationGeneratorService.js +123 -0
- package/scripts/hooks-system/application/services/installation/FileSystemInstallerService.js +112 -0
- package/scripts/hooks-system/application/services/installation/GitEnvironmentService.js +166 -0
- package/scripts/hooks-system/application/services/installation/HookInstaller.js +197 -0
- package/scripts/hooks-system/application/services/installation/IdeIntegrationService.js +37 -0
- package/scripts/hooks-system/application/services/installation/InstallService.js +130 -0
- package/scripts/hooks-system/application/services/installation/McpConfigurator.js +172 -0
- package/scripts/hooks-system/application/services/installation/PlatformDetectorService.js +36 -0
- package/scripts/hooks-system/application/services/installation/VSCodeTaskConfigurator.js +97 -0
- package/scripts/hooks-system/application/services/logging/UnifiedLogger.js +142 -0
- package/scripts/hooks-system/application/services/logging/__tests__/UnifiedLogger.spec.js +66 -0
- package/scripts/hooks-system/application/services/monitoring/ActivityMonitor.js +80 -0
- package/scripts/hooks-system/application/services/monitoring/AstMonitor.js +140 -0
- package/scripts/hooks-system/application/services/monitoring/DevDocsMonitor.js +85 -0
- package/scripts/hooks-system/application/services/monitoring/EvidenceMonitor.js +103 -0
- package/scripts/hooks-system/application/services/monitoring/EvidenceMonitorService.js +162 -0
- package/scripts/hooks-system/application/services/monitoring/GitTreeMonitor.js +123 -0
- package/scripts/hooks-system/application/services/monitoring/GitTreeMonitorService.js +114 -0
- package/scripts/hooks-system/application/services/monitoring/HealthCheckProviders.js +153 -0
- package/scripts/hooks-system/application/services/monitoring/HealthCheckService.js +118 -0
- package/scripts/hooks-system/application/services/monitoring/HeartbeatMonitorService.js +61 -0
- package/scripts/hooks-system/application/services/monitoring/TokenMonitor.js +60 -0
- package/scripts/hooks-system/application/services/monitoring/__tests__/EvidenceMonitorService.spec.js +107 -0
- package/scripts/hooks-system/application/services/monitoring/__tests__/GitTreeMonitorService.spec.js +27 -0
- package/scripts/hooks-system/application/services/monitoring/__tests__/HealthCheckProviders.spec.js +68 -0
- package/scripts/hooks-system/application/services/monitoring/__tests__/HealthCheckService.spec.js +69 -0
- package/scripts/hooks-system/application/services/monitoring/__tests__/HeartbeatMonitorService.spec.js +35 -0
- package/scripts/hooks-system/application/services/notification/MacNotificationSender.js +106 -0
- package/scripts/hooks-system/application/services/notification/NotificationCenterService.js +221 -0
- package/scripts/hooks-system/application/services/notification/NotificationDispatcher.js +42 -0
- package/scripts/hooks-system/application/services/notification/__tests__/NotificationCenterService.spec.js +40 -0
- package/scripts/hooks-system/application/services/notification/components/NotificationCooldownManager.js +62 -0
- package/scripts/hooks-system/application/services/notification/components/NotificationDeduplicator.js +67 -0
- package/scripts/hooks-system/application/services/notification/components/NotificationQueue.js +36 -0
- package/scripts/hooks-system/application/services/notification/components/NotificationRetryExecutor.js +58 -0
- package/scripts/hooks-system/application/services/platform/PlatformHeuristics.js +144 -0
- package/scripts/hooks-system/application/services/recovery/AutoRecoveryManager.js +137 -0
- package/scripts/hooks-system/application/services/recovery/__tests__/AutoRecoveryManager.spec.js +62 -0
- package/scripts/hooks-system/application/services/smart-commit/CommitMessageSuggester.js +97 -0
- package/scripts/hooks-system/application/services/smart-commit/FileContextGrouper.js +114 -0
- package/scripts/hooks-system/application/services/smart-commit/SmartCommitSummaryBuilder.js +53 -0
- package/scripts/hooks-system/application/services/token/CursorTokenService.js +44 -0
- package/scripts/hooks-system/application/services/token/TokenMetricsService.js +109 -0
- package/scripts/hooks-system/application/services/token/TokenMonitorService.js +160 -0
- package/scripts/hooks-system/application/services/token/TokenStatusReporter.js +56 -0
- package/scripts/hooks-system/application/services/token/__tests__/CursorTokenService.spec.js +69 -0
- package/scripts/hooks-system/application/services/token/__tests__/TokenMonitorService.spec.js +185 -0
- package/scripts/hooks-system/application/state/HookSystemStateMachine.js +59 -0
- package/scripts/hooks-system/application/state/__tests__/HookSystemStateMachine.spec.js +115 -0
- package/scripts/hooks-system/application/use-cases/AnalyzeCodebaseUseCase.js +54 -0
- package/scripts/hooks-system/application/use-cases/AnalyzeStagedFilesUseCase.js +61 -0
- package/scripts/hooks-system/application/use-cases/AutoExecuteAIStartUseCase.js +123 -0
- package/scripts/hooks-system/application/use-cases/BlockCommitUseCase.js +90 -0
- package/scripts/hooks-system/application/use-cases/GenerateAuditReportUseCase.js +184 -0
- package/scripts/hooks-system/application/use-cases/__tests__/AnalyzeCodebaseUseCase.spec.js +156 -0
- package/scripts/hooks-system/application/use-cases/__tests__/AnalyzeStagedFilesUseCase.spec.js +146 -0
- package/scripts/hooks-system/application/use-cases/__tests__/AutoExecuteAIStartUseCase.spec.js +89 -0
- package/scripts/hooks-system/application/use-cases/__tests__/BlockCommitUseCase.spec.js +171 -0
- package/scripts/hooks-system/application/use-cases/__tests__/GenerateAuditReportUseCase.spec.js +207 -0
- package/scripts/hooks-system/bin/__tests__/auto-fix-violations.spec.js +132 -0
- package/scripts/hooks-system/bin/__tests__/auto-restart-guards.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/check-doc-drift.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/check-version.spec.js +240 -0
- package/scripts/hooks-system/bin/__tests__/cli.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/guard-auto-manager.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/guard-supervisor.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/hook-status.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/install.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/nightly-metrics-report.spec.js +94 -0
- package/scripts/hooks-system/bin/__tests__/plan-review.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/predictive-hooks.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/run-ast-adapter.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/run-orchestrator.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/run-playbook.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/setup-eslint.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/violations-api.spec.js +11 -0
- package/scripts/hooks-system/bin/__tests__/watch-hooks.spec.js +11 -0
- package/scripts/hooks-system/bin/ai-commit.sh +63 -0
- package/scripts/hooks-system/bin/audit +463 -0
- package/scripts/hooks-system/bin/audit-library.js +54 -0
- package/scripts/hooks-system/bin/auto-fix-violations.js +130 -0
- package/scripts/hooks-system/bin/auto-restart-guards.js +93 -0
- package/scripts/hooks-system/bin/check-doc-drift.js +35 -0
- package/scripts/hooks-system/bin/check-version.js +201 -0
- package/scripts/hooks-system/bin/cleanup-branches.sh +106 -0
- package/scripts/hooks-system/bin/cli.js +208 -0
- package/scripts/hooks-system/bin/demo-recording.sh +57 -0
- package/scripts/hooks-system/bin/demo-violations +44 -0
- package/scripts/hooks-system/bin/fix-enforcer +27 -0
- package/scripts/hooks-system/bin/fix-gitflow-enforcement.sh +68 -0
- package/scripts/hooks-system/bin/generate-progress-report.sh +129 -0
- package/scripts/hooks-system/bin/git-analyze-pairs.sh +0 -0
- package/scripts/hooks-system/bin/git-leave-branch-check.sh +73 -0
- package/scripts/hooks-system/bin/gitflow +17 -0
- package/scripts/hooks-system/bin/gitflow-shell-integration.sh +64 -0
- package/scripts/hooks-system/bin/guard-auto-manager.js +44 -0
- package/scripts/hooks-system/bin/guard-autostart.sh +158 -0
- package/scripts/hooks-system/bin/guard-env.sh +40 -0
- package/scripts/hooks-system/bin/guard-supervisor.js +516 -0
- package/scripts/hooks-system/bin/hook-status.js +41 -0
- package/scripts/hooks-system/bin/install-git-wrapper.sh +53 -0
- package/scripts/hooks-system/bin/install.js +10 -0
- package/scripts/hooks-system/bin/kill-mcp-zombies.sh +48 -0
- package/scripts/hooks-system/bin/nightly-metrics-report.js +138 -0
- package/scripts/hooks-system/bin/plan-review.js +31 -0
- package/scripts/hooks-system/bin/predictive-hooks.js +18 -0
- package/scripts/hooks-system/bin/pumuki-audit.js +113 -0
- package/scripts/hooks-system/bin/pumuki-init.js +104 -0
- package/scripts/hooks-system/bin/pumuki-mcp.js +74 -0
- package/scripts/hooks-system/bin/pumuki-rules.js +74 -0
- package/scripts/hooks-system/bin/request-no-verify-approval.sh +116 -0
- package/scripts/hooks-system/bin/run-ast-adapter.js +86 -0
- package/scripts/hooks-system/bin/run-intelligent-audit.sh +67 -0
- package/scripts/hooks-system/bin/run-orchestrator.js +27 -0
- package/scripts/hooks-system/bin/run-playbook.js +23 -0
- package/scripts/hooks-system/bin/session-loader.sh +264 -0
- package/scripts/hooks-system/bin/setup-eslint.js +110 -0
- package/scripts/hooks-system/bin/start-guards.sh +190 -0
- package/scripts/hooks-system/bin/sync-autonomous-orchestrator.sh +32 -0
- package/scripts/hooks-system/bin/sync-to-library.sh +46 -0
- package/scripts/hooks-system/bin/update-evidence.sh +1167 -0
- package/scripts/hooks-system/bin/update-session-context.sh +261 -0
- package/scripts/hooks-system/bin/verify-no-verify.sh +68 -0
- package/scripts/hooks-system/bin/violations +20 -0
- package/scripts/hooks-system/bin/violations-api.js +345 -0
- package/scripts/hooks-system/bin/watch-hooks.js +20 -0
- package/scripts/hooks-system/config/project.config.json +36 -0
- package/scripts/hooks-system/config/state-map.json +12 -0
- package/scripts/hooks-system/domain/entities/AuditResult.js +139 -0
- package/scripts/hooks-system/domain/entities/Finding.js +116 -0
- package/scripts/hooks-system/domain/entities/SeverityConfig.js +73 -0
- package/scripts/hooks-system/domain/entities/SeverityConfig.ts +90 -0
- package/scripts/hooks-system/domain/entities/__tests__/AuditResult.spec.js +450 -0
- package/scripts/hooks-system/domain/entities/__tests__/Finding.spec.js +335 -0
- package/scripts/hooks-system/domain/entities/__tests__/SeverityConfig.spec.js +240 -0
- package/scripts/hooks-system/domain/entities/__tests__/entities.spec.js +29 -0
- package/scripts/hooks-system/domain/errors/__tests__/DomainErrors.spec.js +59 -0
- package/scripts/hooks-system/domain/errors/index.js +169 -0
- package/scripts/hooks-system/domain/events/__tests__/DomainEvents.spec.js +60 -0
- package/scripts/hooks-system/domain/events/index.js +121 -0
- package/scripts/hooks-system/domain/ports/IAstPort.js +67 -0
- package/scripts/hooks-system/domain/ports/IEvidencePort.js +86 -0
- package/scripts/hooks-system/domain/ports/IGitCommandPort.js +110 -0
- package/scripts/hooks-system/domain/ports/IGitPort.js +114 -0
- package/scripts/hooks-system/domain/ports/IGitQueryPort.js +93 -0
- package/scripts/hooks-system/domain/ports/INotificationPort.js +35 -0
- package/scripts/hooks-system/domain/ports/__tests__/ports.spec.js +36 -0
- package/scripts/hooks-system/domain/ports/index.js +14 -0
- package/scripts/hooks-system/domain/repositories/ICursorTokenRepository.js +13 -0
- package/scripts/hooks-system/domain/repositories/IFindingsRepository.js +30 -0
- package/scripts/hooks-system/domain/repositories/__tests__/IFindingsRepository.spec.js +18 -0
- package/scripts/hooks-system/domain/rules/CommitBlockingRules.js +142 -0
- package/scripts/hooks-system/domain/rules/__tests__/CommitBlockingRules.spec.js +18 -0
- package/scripts/hooks-system/domain/services/AuditAnalyzer.js +103 -0
- package/scripts/hooks-system/domain/services/AuditFilter.js +26 -0
- package/scripts/hooks-system/domain/services/AuditResultSerializer.js +35 -0
- package/scripts/hooks-system/domain/services/AuditScorer.js +38 -0
- package/scripts/hooks-system/domain/values/Severity.js +93 -0
- package/scripts/hooks-system/index.js +49 -0
- package/scripts/hooks-system/infrastructure/adapters/AstAnalyzerAdapter.js +150 -0
- package/scripts/hooks-system/infrastructure/adapters/FileEvidenceAdapter.js +140 -0
- package/scripts/hooks-system/infrastructure/adapters/GitCliAdapter.js +16 -0
- package/scripts/hooks-system/infrastructure/adapters/GitCommandAdapter.js +68 -0
- package/scripts/hooks-system/infrastructure/adapters/GitHubCliAdapter.js +85 -0
- package/scripts/hooks-system/infrastructure/adapters/GitQueryAdapter.js +58 -0
- package/scripts/hooks-system/infrastructure/adapters/LegacyAnalyzerAdapter.js +61 -0
- package/scripts/hooks-system/infrastructure/adapters/MacOSNotificationAdapter.js +99 -0
- package/scripts/hooks-system/infrastructure/adapters/__tests__/AstAnalyzerAdapter.spec.js +32 -0
- package/scripts/hooks-system/infrastructure/adapters/__tests__/FileEvidenceAdapter.spec.js +31 -0
- package/scripts/hooks-system/infrastructure/adapters/__tests__/GitCliAdapter.spec.js +39 -0
- package/scripts/hooks-system/infrastructure/adapters/__tests__/MacOSNotificationAdapter.spec.js +33 -0
- package/scripts/hooks-system/infrastructure/adapters/git/GitCommandRunner.js +78 -0
- package/scripts/hooks-system/infrastructure/adapters/git/GitCommandService.js +67 -0
- package/scripts/hooks-system/infrastructure/adapters/git/GitQueryService.js +50 -0
- package/scripts/hooks-system/infrastructure/adapters/index.js +14 -0
- package/scripts/hooks-system/infrastructure/ast/README.md +198 -0
- package/scripts/hooks-system/infrastructure/ast/__tests__/ast-core.spec.js +160 -0
- package/scripts/hooks-system/infrastructure/ast/__tests__/ast-intelligence.spec.js +20 -0
- package/scripts/hooks-system/infrastructure/ast/android/__tests__/ast-android.spec.js +33 -0
- package/scripts/hooks-system/infrastructure/ast/android/__tests__/clean-architecture-analyzer.spec.js +96 -0
- package/scripts/hooks-system/infrastructure/ast/android/__tests__/ddd-analyzer.spec.js +113 -0
- package/scripts/hooks-system/infrastructure/ast/android/__tests__/detekt-runner.spec.js +36 -0
- package/scripts/hooks-system/infrastructure/ast/android/__tests__/feature-first-analyzer.spec.js +80 -0
- package/scripts/hooks-system/infrastructure/ast/android/__tests__/native-bridge.spec.js +31 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidASTIntelligentAnalyzer.js +15 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidASTParser.js +157 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidAnalysisOrchestrator.js +164 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidArchitectureDetector.js +334 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidClassAnalyzer.js +162 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidForbiddenLiteralsAnalyzer.js +261 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/AndroidSOLIDAnalyzer.js +287 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/__tests__/AndroidForbiddenLiteralsAnalyzer.spec.js +58 -0
- package/scripts/hooks-system/infrastructure/ast/android/analyzers/__tests__/AndroidSOLIDAnalyzer.spec.js +84 -0
- package/scripts/hooks-system/infrastructure/ast/android/ast-android.js +1785 -0
- package/scripts/hooks-system/infrastructure/ast/android/clean-architecture-analyzer.js +115 -0
- package/scripts/hooks-system/infrastructure/ast/android/ddd-analyzer.js +70 -0
- package/scripts/hooks-system/infrastructure/ast/android/detekt-runner.js +81 -0
- package/scripts/hooks-system/infrastructure/ast/android/feature-first-analyzer.js +53 -0
- package/scripts/hooks-system/infrastructure/ast/android/native-bridge.js +119 -0
- package/scripts/hooks-system/infrastructure/ast/archive/README.md +18 -0
- package/scripts/hooks-system/infrastructure/ast/archive/ast-intelligence.ts +276 -0
- package/scripts/hooks-system/infrastructure/ast/archive/ios-rules.js +329 -0
- package/scripts/hooks-system/infrastructure/ast/archive/kotlin-analyzer.js +332 -0
- package/scripts/hooks-system/infrastructure/ast/archive/kotlin-parser.js +303 -0
- package/scripts/hooks-system/infrastructure/ast/archive/swift-analyzer.js +390 -0
- package/scripts/hooks-system/infrastructure/ast/ast-core.js +594 -0
- package/scripts/hooks-system/infrastructure/ast/ast-intelligence.js +617 -0
- package/scripts/hooks-system/infrastructure/ast/backend/__tests__/ast-backend.spec.js +20 -0
- package/scripts/hooks-system/infrastructure/ast/backend/__tests__/clean-architecture-analyzer.spec.js +151 -0
- package/scripts/hooks-system/infrastructure/ast/backend/__tests__/ddd-analyzer.spec.js +124 -0
- package/scripts/hooks-system/infrastructure/ast/backend/__tests__/feature-first-analyzer.spec.js +128 -0
- package/scripts/hooks-system/infrastructure/ast/backend/__tests__/forbidden-literals-analyzer.spec.js +95 -0
- package/scripts/hooks-system/infrastructure/ast/backend/__tests__/nestjs-patterns-analyzer.spec.js +59 -0
- package/scripts/hooks-system/infrastructure/ast/backend/__tests__/solid-analyzer.spec.js +114 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/BackendArchitectureDetector.js +141 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/BackendPatternDetector.js +23 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/__tests__/BackendArchitectureDetector.spec.js +239 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/__tests__/BackendPatternDetector.spec.js +58 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/CQRSDetector.js +41 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/CleanArchitectureDetector.js +52 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/FeatureFirstCleanDetector.js +74 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/LayeredArchitectureDetector.js +25 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/MVCDetector.js +32 -0
- package/scripts/hooks-system/infrastructure/ast/backend/analyzers/detectors/OnionArchitectureDetector.js +32 -0
- package/scripts/hooks-system/infrastructure/ast/backend/ast-backend-clean.js +44 -0
- package/scripts/hooks-system/infrastructure/ast/backend/ast-backend.js +2048 -0
- package/scripts/hooks-system/infrastructure/ast/backend/clean-architecture-analyzer.js +142 -0
- package/scripts/hooks-system/infrastructure/ast/backend/ddd-analyzer.js +256 -0
- package/scripts/hooks-system/infrastructure/ast/backend/feature-first-analyzer.js +70 -0
- package/scripts/hooks-system/infrastructure/ast/backend/forbidden-literals-analyzer.js +236 -0
- package/scripts/hooks-system/infrastructure/ast/backend/nestjs-patterns-analyzer.js +11 -0
- package/scripts/hooks-system/infrastructure/ast/backend/solid-analyzer.js +392 -0
- package/scripts/hooks-system/infrastructure/ast/common/BDDTDDWorkflowRules.js +52 -0
- package/scripts/hooks-system/infrastructure/ast/common/__tests__/BDDTDDWorkflowRules.spec.js +133 -0
- package/scripts/hooks-system/infrastructure/ast/common/__tests__/ast-common.spec.js +20 -0
- package/scripts/hooks-system/infrastructure/ast/common/__tests__/documentation-analyzer.spec.js +120 -0
- package/scripts/hooks-system/infrastructure/ast/common/__tests__/images-backend-analyzer.spec.js +123 -0
- package/scripts/hooks-system/infrastructure/ast/common/__tests__/monorepo-health-analyzer.spec.js +118 -0
- package/scripts/hooks-system/infrastructure/ast/common/__tests__/network-resilience-analyzer.spec.js +180 -0
- package/scripts/hooks-system/infrastructure/ast/common/__tests__/offline-backend-analyzer.spec.js +111 -0
- package/scripts/hooks-system/infrastructure/ast/common/__tests__/push-backend-analyzer.spec.js +124 -0
- package/scripts/hooks-system/infrastructure/ast/common/ast-common.js +345 -0
- package/scripts/hooks-system/infrastructure/ast/common/documentation-analyzer.js +217 -0
- package/scripts/hooks-system/infrastructure/ast/common/images-backend-analyzer.js +36 -0
- package/scripts/hooks-system/infrastructure/ast/common/monorepo-health-analyzer.js +452 -0
- package/scripts/hooks-system/infrastructure/ast/common/network-resilience-analyzer.js +178 -0
- package/scripts/hooks-system/infrastructure/ast/common/offline-backend-analyzer.js +53 -0
- package/scripts/hooks-system/infrastructure/ast/common/push-backend-analyzer.js +42 -0
- package/scripts/hooks-system/infrastructure/ast/common/rules/BDDRules.js +87 -0
- package/scripts/hooks-system/infrastructure/ast/common/rules/ImplementationRules.js +83 -0
- package/scripts/hooks-system/infrastructure/ast/common/rules/TDDRules.js +109 -0
- package/scripts/hooks-system/infrastructure/ast/common/rules/WorkflowRules.js +137 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/__tests__/ast-frontend.spec.js +20 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/FrontendArchitectureDetector.js +289 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/FrontendForbiddenLiteralsAnalyzer.js +257 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/FrontendSOLIDAnalyzer.js +274 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/__tests__/FrontendArchitectureDetector.spec.js +151 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/__tests__/FrontendForbiddenLiteralsAnalyzer.spec.js +20 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/analyzers/__tests__/FrontendSOLIDAnalyzer.spec.js +108 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/ast-frontend-clean.js +42 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/ast-frontend.js +2094 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/clean-architecture-analyzer.js +88 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/ddd-analyzer.js +94 -0
- package/scripts/hooks-system/infrastructure/ast/frontend/feature-first-analyzer.js +51 -0
- package/scripts/hooks-system/infrastructure/ast/ios/__tests__/ast-ios.spec.js +40 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSArchitectureDetector.spec.js +20 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSArchitectureRules.spec.js +61 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSCICDRules.spec.js +10 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSEnterpriseAnalyzer.spec.js +36 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSForbiddenLiteralsAnalyzer.spec.js +64 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSNetworkingAdvancedRules.spec.js +10 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSPerformanceRules.spec.js +34 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSSPMRules.spec.js +10 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/__tests__/iOSSwiftUIAdvancedRules.spec.js +10 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSASTIntelligentAnalyzer.js +894 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSArchitectureDetector.js +445 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSArchitectureRules.js +700 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSCICDRules.js +431 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSEnterpriseAnalyzer.js +580 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSForbiddenLiteralsAnalyzer.js +261 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSNetworkingAdvancedRules.js +177 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSPerformanceRules.js +11 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSSPMRules.js +496 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSSwiftUIAdvancedRules.js +333 -0
- package/scripts/hooks-system/infrastructure/ast/ios/analyzers/iOSTestingAdvancedRules.js +225 -0
- package/scripts/hooks-system/infrastructure/ast/ios/ast-ios.js +2176 -0
- package/scripts/hooks-system/infrastructure/ast/ios/native-bridge.js +92 -0
- package/scripts/hooks-system/infrastructure/ast/ios/parsers/SourceKittenParser.js +471 -0
- package/scripts/hooks-system/infrastructure/ast/ios/parsers/__tests__/SourceKittenParser.spec.js +41 -0
- package/scripts/hooks-system/infrastructure/ast/text/__tests__/text-scanner.spec.js +20 -0
- package/scripts/hooks-system/infrastructure/ast/text/text-scanner.js +1120 -0
- package/scripts/hooks-system/infrastructure/cache/CacheService.js +160 -0
- package/scripts/hooks-system/infrastructure/cli/__tests__/install-wizard.spec.js +16 -0
- package/scripts/hooks-system/infrastructure/cli/install-wizard.js +74 -0
- package/scripts/hooks-system/infrastructure/core/GitOperations.js +50 -0
- package/scripts/hooks-system/infrastructure/core/GitOperations.ts +112 -0
- package/scripts/hooks-system/infrastructure/core/__tests__/GitOperations.spec.js +146 -0
- package/scripts/hooks-system/infrastructure/eslint/eslint-integration.sh +75 -0
- package/scripts/hooks-system/infrastructure/events/EventListeners.js +143 -0
- package/scripts/hooks-system/infrastructure/events/__tests__/events.spec.js +14 -0
- package/scripts/hooks-system/infrastructure/external-tools/GitOperations.js +54 -0
- package/scripts/hooks-system/infrastructure/external-tools/eslint/backend.config.template.mjs +58 -0
- package/scripts/hooks-system/infrastructure/git-hooks/pre-push +35 -0
- package/scripts/hooks-system/infrastructure/git-server/pre-receive-hook +253 -0
- package/scripts/hooks-system/infrastructure/guards/git-wrapper.sh +32 -0
- package/scripts/hooks-system/infrastructure/guards/master-validator.sh +247 -0
- package/scripts/hooks-system/infrastructure/guards/prevent-no-verify.sh +34 -0
- package/scripts/hooks-system/infrastructure/hooks/__tests__/skill-activation-prompt.spec.js +11 -0
- package/scripts/hooks-system/infrastructure/hooks/pre-tool-use-intelligent-enforcer.sh +489 -0
- package/scripts/hooks-system/infrastructure/hooks/skill-activation-prompt.js +244 -0
- package/scripts/hooks-system/infrastructure/logging/UnifiedLoggerFactory.js +40 -0
- package/scripts/hooks-system/infrastructure/logging/__tests__/logging.spec.js +9 -0
- package/scripts/hooks-system/infrastructure/mcp/README.md +116 -0
- package/scripts/hooks-system/infrastructure/mcp/__tests__/ast-intelligence-automation.spec.js +38 -0
- package/scripts/hooks-system/infrastructure/mcp/__tests__/evidence-watcher.spec.js +38 -0
- package/scripts/hooks-system/infrastructure/mcp/ast-intelligence-automation.js +1097 -0
- package/scripts/hooks-system/infrastructure/mcp/evidence-watcher.js +128 -0
- package/scripts/hooks-system/infrastructure/mcp/package.json +17 -0
- package/scripts/hooks-system/infrastructure/mcp/services/EvidenceService.js +87 -0
- package/scripts/hooks-system/infrastructure/mcp/services/McpProtocolHandler.js +166 -0
- package/scripts/hooks-system/infrastructure/orchestration/__tests__/intelligent-audit.spec.js +11 -0
- package/scripts/hooks-system/infrastructure/orchestration/intelligent-audit.js +353 -0
- package/scripts/hooks-system/infrastructure/patterns/pattern-checks.sh +98 -0
- package/scripts/hooks-system/infrastructure/reporting/ReportImpactAnalyzer.js +109 -0
- package/scripts/hooks-system/infrastructure/reporting/ReportMetricsCalculator.js +114 -0
- package/scripts/hooks-system/infrastructure/reporting/ReportPresenter.js +86 -0
- package/scripts/hooks-system/infrastructure/reporting/__tests__/reporting.spec.js +15 -0
- package/scripts/hooks-system/infrastructure/reporting/report-generator.js +130 -0
- package/scripts/hooks-system/infrastructure/reporting/severity-tracker.js +105 -0
- package/scripts/hooks-system/infrastructure/repositories/CursorTokenRepository.js +76 -0
- package/scripts/hooks-system/infrastructure/repositories/FileFindingsRepository.js +88 -0
- package/scripts/hooks-system/infrastructure/repositories/__tests__/repositories.spec.js +20 -0
- package/scripts/hooks-system/infrastructure/repositories/datasources/CursorApiDataSource.js +73 -0
- package/scripts/hooks-system/infrastructure/repositories/datasources/CursorFileDataSource.js +55 -0
- package/scripts/hooks-system/infrastructure/severity/__tests__/severity-evaluator.spec.js +18 -0
- package/scripts/hooks-system/infrastructure/severity/analyzers/__tests__/maintainability-analyzer.spec.js +170 -0
- package/scripts/hooks-system/infrastructure/severity/analyzers/__tests__/performance-analyzer.spec.js +186 -0
- package/scripts/hooks-system/infrastructure/severity/analyzers/__tests__/security-analyzer.spec.js +151 -0
- package/scripts/hooks-system/infrastructure/severity/analyzers/__tests__/stability-analyzer.spec.js +143 -0
- package/scripts/hooks-system/infrastructure/severity/analyzers/maintainability-analyzer.js +100 -0
- package/scripts/hooks-system/infrastructure/severity/analyzers/performance-analyzer.js +109 -0
- package/scripts/hooks-system/infrastructure/severity/analyzers/security-analyzer.js +104 -0
- package/scripts/hooks-system/infrastructure/severity/analyzers/stability-analyzer.js +85 -0
- package/scripts/hooks-system/infrastructure/severity/context/analyzers/CodeClassificationAnalyzer.js +71 -0
- package/scripts/hooks-system/infrastructure/severity/context/analyzers/DataAnalyzer.js +64 -0
- package/scripts/hooks-system/infrastructure/severity/context/analyzers/ImpactAnalyzer.js +68 -0
- package/scripts/hooks-system/infrastructure/severity/context/analyzers/SafetyAnalyzer.js +82 -0
- package/scripts/hooks-system/infrastructure/severity/context/context-builder.js +88 -0
- package/scripts/hooks-system/infrastructure/severity/generators/RecommendationGenerator.js +153 -0
- package/scripts/hooks-system/infrastructure/severity/mappers/SeverityMapper.js +10 -0
- package/scripts/hooks-system/infrastructure/severity/policies/gate-policies.js +136 -0
- package/scripts/hooks-system/infrastructure/severity/policies/severity-policies.json +206 -0
- package/scripts/hooks-system/infrastructure/severity/scorers/ContextMultiplier.js +49 -0
- package/scripts/hooks-system/infrastructure/severity/severity-evaluator.js +117 -0
- package/scripts/hooks-system/infrastructure/shell/core/constants.sh +26 -0
- package/scripts/hooks-system/infrastructure/shell/core/utils.sh +45 -0
- package/scripts/hooks-system/infrastructure/shell/gitflow/git-wrapper.sh +646 -0
- package/scripts/hooks-system/infrastructure/shell/gitflow/gitflow-enforcer.sh +620 -0
- package/scripts/hooks-system/infrastructure/shell/gitflow/gitflow-state-manager.sh +235 -0
- package/scripts/hooks-system/infrastructure/shell/gitflow-state-manager.sh +225 -0
- package/scripts/hooks-system/infrastructure/shell/orchestrators/audit-orchestrator.sh +1106 -0
- package/scripts/hooks-system/infrastructure/shell/security/detect-secrets.sh +26 -0
- package/scripts/hooks-system/infrastructure/shell/security/detect_secrets.py +182 -0
- package/scripts/hooks-system/infrastructure/shell/validate-clean-architecture.sh +254 -0
- package/scripts/hooks-system/infrastructure/shell/validators/check-doc-structure.sh +62 -0
- package/scripts/hooks-system/infrastructure/shell/validators/ensure-critical-docs.sh +26 -0
- package/scripts/hooks-system/infrastructure/shell/validators/validate-ai-protocol.sh +474 -0
- package/scripts/hooks-system/infrastructure/shell/validators/validate-clean-architecture.sh +303 -0
- package/scripts/hooks-system/infrastructure/shell/validators/validate-conventional-commit.sh +42 -0
- package/scripts/hooks-system/infrastructure/storage/file-operations.sh +31 -0
- package/scripts/hooks-system/infrastructure/telemetry/TelemetryService.js +165 -0
- package/scripts/hooks-system/infrastructure/telemetry/__tests__/telemetry.spec.js +15 -0
- package/scripts/hooks-system/infrastructure/telemetry/metrics-logger.js +66 -0
- package/scripts/hooks-system/infrastructure/telemetry/metrics-server.js +61 -0
- package/scripts/hooks-system/infrastructure/utils/__tests__/utils.spec.js +8 -0
- package/scripts/hooks-system/infrastructure/utils/error-utils.js +28 -0
- package/scripts/hooks-system/infrastructure/utils/timestamp-helper.sh +106 -0
- package/scripts/hooks-system/infrastructure/utils/token-manager.js +121 -0
- package/scripts/hooks-system/infrastructure/validators/__tests__/detect-commit-language.spec.js +16 -0
- package/scripts/hooks-system/infrastructure/validators/__tests__/enforce-english-literals.spec.js +67 -0
- package/scripts/hooks-system/infrastructure/validators/detect-commit-language.js +145 -0
- package/scripts/hooks-system/infrastructure/validators/enforce-english-literals.js +202 -0
- package/scripts/hooks-system/infrastructure/watchdog/__tests__/.audit-reports/token-monitor.log +18 -0
- package/scripts/hooks-system/infrastructure/watchdog/__tests__/auto-recovery.spec.js +14 -0
- package/scripts/hooks-system/infrastructure/watchdog/__tests__/token-monitor.spec.js +67 -0
- package/scripts/hooks-system/infrastructure/watchdog/__tests__/watchdog.spec.js +22 -0
- package/scripts/hooks-system/infrastructure/watchdog/ai-watchdog.sh +278 -0
- package/scripts/hooks-system/infrastructure/watchdog/auto-recovery.js +32 -0
- package/scripts/hooks-system/infrastructure/watchdog/health-check.js +58 -0
- package/scripts/hooks-system/infrastructure/watchdog/token-monitor-loop.sh +20 -0
- package/scripts/hooks-system/infrastructure/watchdog/token-monitor.js +69 -0
- package/scripts/hooks-system/infrastructure/watchdog/token-tracker.sh +208 -0
- package/scripts/hooks-system/presentation/cli/audit.sh +32 -0
- package/scripts/hooks-system/presentation/cli/autonomous-status.sh +92 -0
- package/scripts/hooks-system/presentation/cli/categorize-violations.sh +179 -0
- package/scripts/hooks-system/presentation/cli/direct-audit-option2.sh +23 -0
- package/scripts/hooks-system/presentation/cli/direct-audit.sh +33 -0
- package/skills/android-guidelines/SKILL.md +475 -0
- package/skills/android-guidelines/resources/advanced-topics.md +44 -0
- package/skills/android-guidelines/resources/architecture-overview.md +44 -0
- package/skills/backend-guidelines/SKILL.md +335 -0
- package/skills/backend-guidelines/resources/architecture-overview.md +48 -0
- package/skills/frontend-guidelines/SKILL.md +367 -0
- package/skills/frontend-guidelines/resources/architecture-overview.md +44 -0
- package/skills/ios-guidelines/SKILL.md +406 -0
- package/skills/ios-guidelines/resources/architecture-overview.md +47 -0
- package/skills/skill-rules.json +334 -0
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
3
|
+
# Git Wrapper - Proactive GitFlow Enforcer
|
|
4
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
5
|
+
# Intercepts git commands BEFORE execution to enforce Git Flow
|
|
6
|
+
#
|
|
7
|
+
# Setup: Add to .zshrc
|
|
8
|
+
# alias git='bash /path/to/git-wrapper.sh'
|
|
9
|
+
#
|
|
10
|
+
# This wrapper validates:
|
|
11
|
+
# - Branch naming (feature/, fix/, chore/, docs/)
|
|
12
|
+
# - Commit from correct branch
|
|
13
|
+
# - Evidence freshness before commit
|
|
14
|
+
# - Issue reference in commits
|
|
15
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
16
|
+
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
# Protected branches (local enforcement even without GitHub branch protection)
|
|
19
|
+
PROTECTED_BRANCHES=("main" "develop")
|
|
20
|
+
|
|
21
|
+
is_protected_branch() {
|
|
22
|
+
local name="${1#refs/heads/}"
|
|
23
|
+
for protected in "${PROTECTED_BRANCHES[@]}"; do
|
|
24
|
+
if [[ "$name" == "$protected" ]]; then
|
|
25
|
+
return 0
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
return 1
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
extract_refspec_target() {
|
|
32
|
+
local refspec="$1"
|
|
33
|
+
|
|
34
|
+
if [[ "$refspec" == ":"* ]]; then
|
|
35
|
+
refspec="${refspec#:}"
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
if [[ "$refspec" == *:* ]]; then
|
|
39
|
+
refspec="${refspec##*:}"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
refspec="${refspec#refs/heads/}"
|
|
43
|
+
echo "$refspec"
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# Colors
|
|
47
|
+
RED='\033[0;31m'
|
|
48
|
+
GREEN='\033[0;32m'
|
|
49
|
+
YELLOW='\033[1;33m'
|
|
50
|
+
BLUE='\033[0;34m'
|
|
51
|
+
CYAN='\033[0;36m'
|
|
52
|
+
NC='\033[0m'
|
|
53
|
+
|
|
54
|
+
# Git command (real git binary)
|
|
55
|
+
GIT_BIN="/usr/bin/git"
|
|
56
|
+
|
|
57
|
+
# Get repo root
|
|
58
|
+
REPO_ROOT=$($GIT_BIN rev-parse --show-toplevel 2>/dev/null || echo "")
|
|
59
|
+
|
|
60
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
61
|
+
# Validate branch name
|
|
62
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
63
|
+
validate_branch_name() {
|
|
64
|
+
local branch="$1"
|
|
65
|
+
|
|
66
|
+
# Allow main, develop, master
|
|
67
|
+
if [[ "$branch" == "main" ]] || [[ "$branch" == "develop" ]] || [[ "$branch" == "master" ]]; then
|
|
68
|
+
return 0
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# Must follow pattern: type/description
|
|
72
|
+
if [[ ! "$branch" =~ ^(feature|fix|chore|docs|refactor|test|ci)/ ]]; then
|
|
73
|
+
echo -e "${RED}β Invalid branch name: $branch${NC}"
|
|
74
|
+
echo ""
|
|
75
|
+
echo "Branch must follow pattern:"
|
|
76
|
+
echo " feature/description"
|
|
77
|
+
echo " fix/description"
|
|
78
|
+
echo " chore/description"
|
|
79
|
+
echo " docs/description"
|
|
80
|
+
echo ""
|
|
81
|
+
echo "Example: feature/user-authentication"
|
|
82
|
+
echo ""
|
|
83
|
+
return 1
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
return 0
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
90
|
+
# Validate commit from correct branch
|
|
91
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
92
|
+
validate_commit_branch() {
|
|
93
|
+
local current_branch=$($GIT_BIN branch --show-current 2>/dev/null || echo "")
|
|
94
|
+
|
|
95
|
+
if [[ -z "$current_branch" ]]; then
|
|
96
|
+
echo -e "${RED}β Detached HEAD - cannot commit${NC}"
|
|
97
|
+
return 1
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
# Cannot commit directly to main/develop
|
|
101
|
+
if [[ "$current_branch" == "main" ]] || [[ "$current_branch" == "develop" ]]; then
|
|
102
|
+
echo -e "${RED}β Cannot commit directly to $current_branch${NC}"
|
|
103
|
+
echo ""
|
|
104
|
+
echo "Create a feature branch:"
|
|
105
|
+
echo " git checkout -b feature/my-feature"
|
|
106
|
+
echo ""
|
|
107
|
+
return 1
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# Validate branch name
|
|
111
|
+
if ! validate_branch_name "$current_branch"; then
|
|
112
|
+
return 1
|
|
113
|
+
fi
|
|
114
|
+
|
|
115
|
+
return 0
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
119
|
+
# Check evidence freshness
|
|
120
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
121
|
+
check_evidence() {
|
|
122
|
+
local evidence_file="$REPO_ROOT/.AI_EVIDENCE.json"
|
|
123
|
+
|
|
124
|
+
if [[ ! -f "$evidence_file" ]]; then
|
|
125
|
+
echo -e "${YELLOW}β οΈ .AI_EVIDENCE.json not found${NC}"
|
|
126
|
+
echo ""
|
|
127
|
+
echo "Run: ai-start feature-name"
|
|
128
|
+
echo ""
|
|
129
|
+
return 1
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
local evidence_ts=$(jq -r '.timestamp' "$evidence_file" 2>/dev/null || echo "")
|
|
133
|
+
|
|
134
|
+
if [[ -z "$evidence_ts" ]] || [[ "$evidence_ts" == "null" ]]; then
|
|
135
|
+
return 1
|
|
136
|
+
fi
|
|
137
|
+
|
|
138
|
+
# Convert to epoch (handle ISO 8601 with milliseconds)
|
|
139
|
+
local clean_ts=$(echo "$evidence_ts" | sed 's/\.[0-9]*Z$/Z/')
|
|
140
|
+
local evidence_epoch=$(date -j -f "%Y-%m-%dT%H:%M:%SZ" "$clean_ts" +%s 2>/dev/null || echo "0")
|
|
141
|
+
local now_epoch=$(date +%s)
|
|
142
|
+
local age=$((now_epoch - evidence_epoch))
|
|
143
|
+
|
|
144
|
+
if [[ $age -gt 180 ]]; then
|
|
145
|
+
echo -e "${YELLOW}β οΈ Evidence is stale (${age}s old, max 3min)${NC}"
|
|
146
|
+
echo ""
|
|
147
|
+
echo "Consider running: ai-start $(git branch --show-current)"
|
|
148
|
+
echo ""
|
|
149
|
+
return 1
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
return 0
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
156
|
+
# Validate Git Flow Content (Intelligent Semantic Analysis)
|
|
157
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
158
|
+
validate_gitflow_content() {
|
|
159
|
+
local current_branch=$($GIT_BIN branch --show-current 2>/dev/null || echo "")
|
|
160
|
+
|
|
161
|
+
# Skip if on main/develop
|
|
162
|
+
if [[ "$current_branch" == "main" ]] || [[ "$current_branch" == "develop" ]]; then
|
|
163
|
+
return 0
|
|
164
|
+
fi
|
|
165
|
+
|
|
166
|
+
# Skip if not a feature/fix branch
|
|
167
|
+
if [[ ! "$current_branch" =~ ^(feature|fix|feat)/ ]]; then
|
|
168
|
+
return 0
|
|
169
|
+
fi
|
|
170
|
+
|
|
171
|
+
# Count commits in this branch (compare with develop)
|
|
172
|
+
local commit_count=$($GIT_BIN rev-list --count develop..HEAD 2>/dev/null || echo "0")
|
|
173
|
+
|
|
174
|
+
# Skip if first commit
|
|
175
|
+
if [[ $commit_count -eq 0 ]]; then
|
|
176
|
+
return 0
|
|
177
|
+
fi
|
|
178
|
+
|
|
179
|
+
# Get commit messages for semantic analysis
|
|
180
|
+
local commit_messages=$($GIT_BIN log --oneline --format="%s" develop..HEAD 2>/dev/null || echo "")
|
|
181
|
+
|
|
182
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
183
|
+
# SEMANTIC ANALYSIS: Detect multiple features by keywords
|
|
184
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
185
|
+
|
|
186
|
+
# Use grep -c and ensure single integer output
|
|
187
|
+
local has_android=$(echo "$commit_messages" | grep -cE "android|kotlin|detekt|ast.*rule|compose" 2>/dev/null | head -1 | tr -d '\n' || echo "0")
|
|
188
|
+
local has_mcp=$(echo "$commit_messages" | grep -cE "mcp|server.*notification|cursor.*integration" 2>/dev/null | head -1 | tr -d '\n' || echo "0")
|
|
189
|
+
local has_watchdog=$(echo "$commit_messages" | grep -cE "watchdog|monitor|timestamp.*parsing" 2>/dev/null | head -1 | tr -d '\n' || echo "0")
|
|
190
|
+
local has_gitflow=$(echo "$commit_messages" | grep -cE "git.*flow|enforcer|wrapper|branch" 2>/dev/null | head -1 | tr -d '\n' || echo "0")
|
|
191
|
+
local has_hooks=$(echo "$commit_messages" | grep -cE "hook|pre-commit|session.*loader|evidence" 2>/dev/null | head -1 | tr -d '\n' || echo "0")
|
|
192
|
+
local has_frontend=$(echo "$commit_messages" | grep -cE "frontend|react|next|dashboard" 2>/dev/null | head -1 | tr -d '\n' || echo "0")
|
|
193
|
+
local has_backend=$(echo "$commit_messages" | grep -cE "backend|nestjs|api|controller" 2>/dev/null | head -1 | tr -d '\n' || echo "0")
|
|
194
|
+
|
|
195
|
+
# Count distinct features (>2 commits per feature to count)
|
|
196
|
+
# Convert to integer safely
|
|
197
|
+
has_android=$((has_android + 0))
|
|
198
|
+
has_mcp=$((has_mcp + 0))
|
|
199
|
+
has_watchdog=$((has_watchdog + 0))
|
|
200
|
+
has_gitflow=$((has_gitflow + 0))
|
|
201
|
+
has_hooks=$((has_hooks + 0))
|
|
202
|
+
has_frontend=$((has_frontend + 0))
|
|
203
|
+
has_backend=$((has_backend + 0))
|
|
204
|
+
|
|
205
|
+
local feature_count=0
|
|
206
|
+
[[ $has_android -ge 2 ]] && ((feature_count++))
|
|
207
|
+
[[ $has_mcp -ge 2 ]] && ((feature_count++))
|
|
208
|
+
[[ $has_watchdog -ge 2 ]] && ((feature_count++))
|
|
209
|
+
[[ $has_gitflow -ge 2 ]] && ((feature_count++))
|
|
210
|
+
[[ $has_hooks -ge 2 ]] && ((feature_count++))
|
|
211
|
+
[[ $has_frontend -ge 2 ]] && ((feature_count++))
|
|
212
|
+
[[ $has_backend -ge 2 ]] && ((feature_count++))
|
|
213
|
+
|
|
214
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
215
|
+
# DECISION: Multiple features in one branch?
|
|
216
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
217
|
+
|
|
218
|
+
# If 3+ distinct features β WARNING
|
|
219
|
+
if [[ $feature_count -ge 3 ]]; then
|
|
220
|
+
echo -e "${YELLOW}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
221
|
+
echo -e "${YELLOW}β οΈ GIT FLOW WARNING: Multiple Features in One Branch${NC}"
|
|
222
|
+
echo -e "${YELLOW}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
223
|
+
echo ""
|
|
224
|
+
echo -e "${CYAN}π Pumuki detectΓ³ mΓΊltiples features no relacionadas:${NC}"
|
|
225
|
+
echo ""
|
|
226
|
+
echo -e "${CYAN}π Branch: ${current_branch}${NC}"
|
|
227
|
+
echo -e "${CYAN}π Total commits: ${commit_count}${NC}"
|
|
228
|
+
echo -e "${CYAN}π Features detectadas: ${feature_count}${NC}"
|
|
229
|
+
echo ""
|
|
230
|
+
echo -e "${YELLOW}π AnΓ‘lisis semΓ‘ntico de commits:${NC}"
|
|
231
|
+
[[ $has_android -ge 2 ]] && echo " π€ Android AST ($has_android commits)"
|
|
232
|
+
[[ $has_mcp -ge 2 ]] && echo " π‘ MCP Server ($has_mcp commits)"
|
|
233
|
+
[[ $has_watchdog -ge 2 ]] && echo " ποΈ Watchdog ($has_watchdog commits)"
|
|
234
|
+
[[ $has_gitflow -ge 2 ]] && echo " π Git Flow ($has_gitflow commits)"
|
|
235
|
+
[[ $has_hooks -ge 2 ]] && echo " πͺ Hooks System ($has_hooks commits)"
|
|
236
|
+
[[ $has_frontend -ge 2 ]] && echo " π¨ Frontend ($has_frontend commits)"
|
|
237
|
+
[[ $has_backend -ge 2 ]] && echo " π§ Backend ($has_backend commits)"
|
|
238
|
+
echo ""
|
|
239
|
+
echo -e "${YELLOW}π‘ BEST PRACTICE:${NC}"
|
|
240
|
+
echo " One branch = One cohesive feature/epic"
|
|
241
|
+
echo " Multiple features = Separate PRs for better review"
|
|
242
|
+
echo ""
|
|
243
|
+
echo -e "${CYAN}π Pumuki sugiere:${NC}"
|
|
244
|
+
echo " A) Si es un EPIC (features relacionadas) β ContinΓΊa"
|
|
245
|
+
echo " B) Si son features INDEPENDIENTES β Considera split"
|
|
246
|
+
echo ""
|
|
247
|
+
echo -e "${YELLOW}π Commits en esta rama:${NC}"
|
|
248
|
+
echo "$commit_messages" | head -10 | sed 's/^/ /'
|
|
249
|
+
if [[ $commit_count -gt 10 ]]; then
|
|
250
|
+
echo " ... y $((commit_count - 10)) mΓ‘s"
|
|
251
|
+
fi
|
|
252
|
+
echo ""
|
|
253
|
+
echo -e "${CYAN}Esto es un WARNING (no bloqueante) - TΓΊ decides! π${NC}"
|
|
254
|
+
echo -e "${YELLOW}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
255
|
+
echo ""
|
|
256
|
+
fi
|
|
257
|
+
|
|
258
|
+
# If 15+ commits β Additional info
|
|
259
|
+
if [[ $commit_count -ge 15 ]]; then
|
|
260
|
+
echo -e "${CYAN}π Pumuki nota: ${commit_count} commits es mucho para un PR${NC}"
|
|
261
|
+
echo -e "${CYAN} Considera squash o split antes de merge${NC}"
|
|
262
|
+
echo ""
|
|
263
|
+
fi
|
|
264
|
+
|
|
265
|
+
return 0
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
269
|
+
# Handle git commit
|
|
270
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
271
|
+
handle_commit() {
|
|
272
|
+
# Validate branch
|
|
273
|
+
if ! validate_commit_branch; then
|
|
274
|
+
return 1
|
|
275
|
+
fi
|
|
276
|
+
|
|
277
|
+
# Validate git flow content (intelligent semantic analysis)
|
|
278
|
+
validate_gitflow_content
|
|
279
|
+
|
|
280
|
+
# Auto-discard token status artefact to keep commits clean
|
|
281
|
+
if [[ -n "$REPO_ROOT" ]] && [[ -f "$REPO_ROOT/.AI_TOKEN_STATUS.txt" ]]; then
|
|
282
|
+
$GIT_BIN -C "$REPO_ROOT" checkout -- .AI_TOKEN_STATUS.txt 2>/dev/null || true
|
|
283
|
+
fi
|
|
284
|
+
|
|
285
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
286
|
+
# ATOMIC COMMIT ENFORCER - Intelligent analysis
|
|
287
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
288
|
+
local staged_files=$($GIT_BIN diff --cached --name-only)
|
|
289
|
+
local staged_count=$(echo "$staged_files" | wc -l | xargs)
|
|
290
|
+
|
|
291
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
292
|
+
# INTELLIGENT ANALYSIS: Check if files are related
|
|
293
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
294
|
+
|
|
295
|
+
# Detect projects/modules touched
|
|
296
|
+
local projects=$(echo "$staged_files" | grep -E "^apps/[^/]+" | sed 's|^apps/\([^/]*\).*|\1|' | sort -u)
|
|
297
|
+
local project_count=$(echo "$projects" | grep -v "^$" | wc -l | xargs)
|
|
298
|
+
|
|
299
|
+
# Detect root-level modules
|
|
300
|
+
local root_modules=$(echo "$staged_files" | grep -E "^(custom-rules|scripts|\.github|\.vscode|\.cursor)" | sed 's|^\([^/]*\).*|\1|' | sort -u)
|
|
301
|
+
local root_module_count=$(echo "$root_modules" | grep -v "^$" | wc -l | xargs)
|
|
302
|
+
|
|
303
|
+
# Detect file type patterns (backend, frontend, mobile)
|
|
304
|
+
local has_backend=$(echo "$staged_files" | grep -E "^apps/backend/" | head -1)
|
|
305
|
+
local has_frontend=$(echo "$staged_files" | grep -E "^apps/(admin-dashboard|web)/" | head -1)
|
|
306
|
+
local has_mobile=$(echo "$staged_files" | grep -E "^apps/mobile/" | head -1)
|
|
307
|
+
|
|
308
|
+
local concerns_count=0
|
|
309
|
+
[[ -n "$has_backend" ]] && ((concerns_count++))
|
|
310
|
+
[[ -n "$has_frontend" ]] && ((concerns_count++))
|
|
311
|
+
[[ -n "$has_mobile" ]] && ((concerns_count++))
|
|
312
|
+
|
|
313
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
314
|
+
# FEATURE COHESION ANALYSIS: Are files related by feature?
|
|
315
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
316
|
+
|
|
317
|
+
# Extract feature/module names from paths
|
|
318
|
+
# Backend: apps/backend/src/orders/... β "orders"
|
|
319
|
+
# Frontend: apps/admin-dashboard/src/orders/... β "orders"
|
|
320
|
+
# Mobile: apps/mobile/Orders/... β "Orders"
|
|
321
|
+
local backend_features=$(echo "$staged_files" | grep -E "^apps/backend/src/[^/]+" | sed 's|^apps/backend/src/\([^/]*\).*|\1|' | sort -u | tr '[:upper:]' '[:lower:]')
|
|
322
|
+
local frontend_features=$(echo "$staged_files" | grep -E "^apps/(admin-dashboard|web)/src/[^/]+" | sed 's|^apps/[^/]*/src/\([^/]*\).*|\1|' | sort -u | tr '[:upper:]' '[:lower:]')
|
|
323
|
+
local mobile_features=$(echo "$staged_files" | grep -E "^apps/mobile/[^/]+" | sed 's|^apps/mobile/\([^/]*\).*|\1|' | sort -u | tr '[:upper:]' '[:lower:]')
|
|
324
|
+
|
|
325
|
+
# Combine all features and check for overlap
|
|
326
|
+
local all_features=$(echo -e "$backend_features\n$frontend_features\n$mobile_features" | grep -v "^$" | sort -u)
|
|
327
|
+
local unique_feature_count=$(echo "$all_features" | wc -l | xargs)
|
|
328
|
+
|
|
329
|
+
# Check if features are related (same feature name across platforms)
|
|
330
|
+
local features_related=false
|
|
331
|
+
local common_features=""
|
|
332
|
+
if [[ $concerns_count -gt 1 ]]; then
|
|
333
|
+
# If multiple concerns, check if they share feature names
|
|
334
|
+
if [[ -n "$backend_features" ]] && [[ -n "$frontend_features" ]]; then
|
|
335
|
+
common_features=$(comm -12 <(echo "$backend_features" | sort) <(echo "$frontend_features" | sort))
|
|
336
|
+
fi
|
|
337
|
+
if [[ -z "$common_features" ]] && [[ -n "$backend_features" ]] && [[ -n "$mobile_features" ]]; then
|
|
338
|
+
common_features=$(comm -12 <(echo "$backend_features" | sort) <(echo "$mobile_features" | sort))
|
|
339
|
+
fi
|
|
340
|
+
if [[ -z "$common_features" ]] && [[ -n "$frontend_features" ]] && [[ -n "$mobile_features" ]]; then
|
|
341
|
+
common_features=$(comm -12 <(echo "$frontend_features" | sort) <(echo "$mobile_features" | sort))
|
|
342
|
+
fi
|
|
343
|
+
|
|
344
|
+
if [[ -n "$common_features" ]]; then
|
|
345
|
+
features_related=true
|
|
346
|
+
fi
|
|
347
|
+
else
|
|
348
|
+
# Single concern β always related
|
|
349
|
+
features_related=true
|
|
350
|
+
fi
|
|
351
|
+
|
|
352
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
353
|
+
# DECISION LOGIC
|
|
354
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
355
|
+
|
|
356
|
+
local should_block=false
|
|
357
|
+
local should_warn=false
|
|
358
|
+
local reason=""
|
|
359
|
+
|
|
360
|
+
# Rule 1: Multiple concerns BUT unrelated features β BLOCK
|
|
361
|
+
# Rule 1b: Multiple concerns AND related features β ALLOW (cross-platform feature)
|
|
362
|
+
if [[ $concerns_count -gt 1 ]] && [[ $features_related == false ]]; then
|
|
363
|
+
should_block=true
|
|
364
|
+
reason="Mixes multiple concerns (backend + frontend + mobile) with UNRELATED features"
|
|
365
|
+
fi
|
|
366
|
+
|
|
367
|
+
# Rule 2: Multiple unrelated projects β BLOCK
|
|
368
|
+
if [[ $project_count -gt 1 ]] && [[ $concerns_count -gt 0 ]]; then
|
|
369
|
+
should_block=true
|
|
370
|
+
reason="Mixes multiple projects: $(echo "$projects" | tr '\n' ' ')"
|
|
371
|
+
fi
|
|
372
|
+
|
|
373
|
+
# Rule 3: >50 files but same feature β WARNING (allow)
|
|
374
|
+
if [[ $staged_count -gt 50 ]] && [[ $should_block == false ]]; then
|
|
375
|
+
should_warn=true
|
|
376
|
+
reason="Large commit (${staged_count} files) - Ensure it's ONE complete feature"
|
|
377
|
+
fi
|
|
378
|
+
|
|
379
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
380
|
+
# BLOCK: Multiple concerns or unrelated projects
|
|
381
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
382
|
+
if [[ $should_block == true ]]; then
|
|
383
|
+
echo -e "${RED}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
384
|
+
echo -e "${RED}β ATOMIC COMMIT VIOLATION - Multiple Concerns Detected${NC}"
|
|
385
|
+
echo -e "${RED}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
386
|
+
echo ""
|
|
387
|
+
echo -e "${RED}Reason: ${reason}${NC}"
|
|
388
|
+
echo ""
|
|
389
|
+
echo -e "${YELLOW}Commit atomicity requires:${NC}"
|
|
390
|
+
echo " β
ONE complete feature (entity + repo + usecase + tests)"
|
|
391
|
+
echo " β
ONE concern (backend OR frontend OR mobile) OR"
|
|
392
|
+
echo " β
Cross-platform feature with SAME feature name (orders + orders + Orders)"
|
|
393
|
+
echo " β
Compiles + Tests pass"
|
|
394
|
+
echo ""
|
|
395
|
+
echo -e "${CYAN}Analysis:${NC}"
|
|
396
|
+
echo " π Total files: ${staged_count}"
|
|
397
|
+
if [[ $project_count -gt 0 ]]; then
|
|
398
|
+
echo " π¦ Projects: $(echo "$projects" | tr '\n' ' ')"
|
|
399
|
+
fi
|
|
400
|
+
if [[ $concerns_count -gt 0 ]]; then
|
|
401
|
+
echo " π Concerns: ${concerns_count} (backend=${has_backend:+YES}, frontend=${has_frontend:+YES}, mobile=${has_mobile:+YES})"
|
|
402
|
+
fi
|
|
403
|
+
if [[ -n "$backend_features" ]]; then
|
|
404
|
+
echo " π§ Backend features: $(echo "$backend_features" | tr '\n' ' ')"
|
|
405
|
+
fi
|
|
406
|
+
if [[ -n "$frontend_features" ]]; then
|
|
407
|
+
echo " π¨ Frontend features: $(echo "$frontend_features" | tr '\n' ' ')"
|
|
408
|
+
fi
|
|
409
|
+
if [[ -n "$mobile_features" ]]; then
|
|
410
|
+
echo " π± Mobile features: $(echo "$mobile_features" | tr '\n' ' ')"
|
|
411
|
+
fi
|
|
412
|
+
echo ""
|
|
413
|
+
echo -e "${YELLOW}π‘ Tip: Cross-platform commits are OK if files share the SAME feature name${NC}"
|
|
414
|
+
echo " Example: backend/src/orders/... + admin-dashboard/src/orders/... + mobile/Orders/... β
"
|
|
415
|
+
echo ""
|
|
416
|
+
echo -e "${CYAN}Solution: Split into separate commits:${NC}"
|
|
417
|
+
echo ""
|
|
418
|
+
echo "1. Backend changes:"
|
|
419
|
+
echo " git reset HEAD"
|
|
420
|
+
echo " git add apps/backend/** custom-rules/**"
|
|
421
|
+
echo " git commit -m \"feat(backend): ...\""
|
|
422
|
+
echo ""
|
|
423
|
+
echo "2. Frontend changes:"
|
|
424
|
+
echo " git add apps/admin-dashboard/**"
|
|
425
|
+
echo " git commit -m \"feat(frontend): ...\""
|
|
426
|
+
echo ""
|
|
427
|
+
echo -e "${RED}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
428
|
+
echo ""
|
|
429
|
+
echo -e "${YELLOW}Staged files (first 20):${NC}"
|
|
430
|
+
echo "$staged_files" | head -20
|
|
431
|
+
if [[ $staged_count -gt 20 ]]; then
|
|
432
|
+
echo " ... and $((staged_count - 20)) more"
|
|
433
|
+
fi
|
|
434
|
+
echo ""
|
|
435
|
+
return 1
|
|
436
|
+
fi
|
|
437
|
+
|
|
438
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
439
|
+
# INFO: Cross-platform feature detected (multiple concerns but related)
|
|
440
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
441
|
+
if [[ $concerns_count -gt 1 ]] && [[ $features_related == true ]] && [[ $should_block == false ]]; then
|
|
442
|
+
echo -e "${GREEN}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
443
|
+
echo -e "${GREEN}β
CROSS-PLATFORM FEATURE DETECTED${NC}"
|
|
444
|
+
echo -e "${GREEN}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
445
|
+
echo ""
|
|
446
|
+
echo -e "${CYAN}Files are related by feature - Commit allowed!${NC}"
|
|
447
|
+
echo ""
|
|
448
|
+
if [[ -n "$common_features" ]]; then
|
|
449
|
+
echo -e "${CYAN}Shared features: ${common_features}${NC}"
|
|
450
|
+
fi
|
|
451
|
+
echo ""
|
|
452
|
+
fi
|
|
453
|
+
|
|
454
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
455
|
+
# WARNING: Large commit but seems related
|
|
456
|
+
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
457
|
+
if [[ $should_warn == true ]]; then
|
|
458
|
+
echo -e "${YELLOW}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
459
|
+
echo -e "${YELLOW}β οΈ LARGE COMMIT WARNING${NC}"
|
|
460
|
+
echo -e "${YELLOW}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
461
|
+
echo ""
|
|
462
|
+
echo -e "${YELLOW}You have ${staged_count} files staged.${NC}"
|
|
463
|
+
echo ""
|
|
464
|
+
echo -e "${CYAN}This is OK if:${NC}"
|
|
465
|
+
echo " β
It's ONE complete feature (entity + repo + usecase + DTOs + tests + mappers)"
|
|
466
|
+
echo " β
All files are related (same module/feature)"
|
|
467
|
+
echo " β
Code compiles"
|
|
468
|
+
echo " β
Tests pass"
|
|
469
|
+
echo ""
|
|
470
|
+
echo -e "${CYAN}Analysis:${NC}"
|
|
471
|
+
if [[ $project_count -gt 0 ]]; then
|
|
472
|
+
echo " π¦ Project: $(echo "$projects" | tr '\n' ' ')"
|
|
473
|
+
fi
|
|
474
|
+
if [[ -n "$root_modules" ]]; then
|
|
475
|
+
echo " π Modules: $(echo "$root_modules" | tr '\n' ' ')"
|
|
476
|
+
fi
|
|
477
|
+
echo ""
|
|
478
|
+
echo -e "${YELLOW}Proceeding with commit...${NC}"
|
|
479
|
+
echo ""
|
|
480
|
+
fi
|
|
481
|
+
|
|
482
|
+
# Check evidence (warning only)
|
|
483
|
+
check_evidence || true
|
|
484
|
+
|
|
485
|
+
# Execute real git commit
|
|
486
|
+
$GIT_BIN "$@"
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
490
|
+
# Handle git checkout -b (branch creation)
|
|
491
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
492
|
+
handle_branch_creation() {
|
|
493
|
+
local branch_name="${3:-}"
|
|
494
|
+
|
|
495
|
+
if [[ -z "$branch_name" ]]; then
|
|
496
|
+
$GIT_BIN "$@"
|
|
497
|
+
return $?
|
|
498
|
+
fi
|
|
499
|
+
|
|
500
|
+
# Validate branch name
|
|
501
|
+
if ! validate_branch_name "$branch_name"; then
|
|
502
|
+
return 1
|
|
503
|
+
fi
|
|
504
|
+
|
|
505
|
+
echo -e "${GREEN}β
Branch name valid: $branch_name${NC}"
|
|
506
|
+
|
|
507
|
+
# Execute real git
|
|
508
|
+
$GIT_BIN "$@"
|
|
509
|
+
|
|
510
|
+
# Update evidence automatically
|
|
511
|
+
if [[ -f "$REPO_ROOT/scripts/hooks-system/bin/update-evidence.sh" ]]; then
|
|
512
|
+
echo ""
|
|
513
|
+
echo -e "${CYAN}π Updating evidence for new branch...${NC}"
|
|
514
|
+
bash "$REPO_ROOT/scripts/hooks-system/bin/update-evidence.sh" "$branch_name" < /dev/null || true
|
|
515
|
+
elif [[ -f "$REPO_ROOT/bin/update-evidence.sh" ]]; then
|
|
516
|
+
echo ""
|
|
517
|
+
echo -e "${CYAN}π Updating evidence for new branch...${NC}"
|
|
518
|
+
bash "$REPO_ROOT/bin/update-evidence.sh" "$branch_name" < /dev/null || true
|
|
519
|
+
fi
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
523
|
+
# Handle git push
|
|
524
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
525
|
+
handle_push() {
|
|
526
|
+
shift # drop 'push'
|
|
527
|
+
local git_args=("$@")
|
|
528
|
+
local current_branch=$($GIT_BIN branch --show-current 2>/dev/null || echo "")
|
|
529
|
+
local override="${GITFLOW_ALLOW_PROTECTED_PUSH:-false}"
|
|
530
|
+
|
|
531
|
+
if [[ "$override" != "true" ]]; then
|
|
532
|
+
if is_protected_branch "$current_branch"; then
|
|
533
|
+
echo -e "${RED}β Push directo desde rama protegida ($current_branch) bloqueado.${NC}"
|
|
534
|
+
echo ""
|
|
535
|
+
echo -e "${CYAN}π Usa el flujo Git Flow: crea una rama feature/fix y abre PR hacia develop.${NC}"
|
|
536
|
+
echo ""
|
|
537
|
+
return 1
|
|
538
|
+
fi
|
|
539
|
+
|
|
540
|
+
local args_without_cmd=("${git_args[@]}")
|
|
541
|
+
local delete_mode=false
|
|
542
|
+
local remote_seen=false
|
|
543
|
+
|
|
544
|
+
for arg in "${args_without_cmd[@]}"; do
|
|
545
|
+
if [[ "$arg" == "--" ]]; then
|
|
546
|
+
continue
|
|
547
|
+
fi
|
|
548
|
+
|
|
549
|
+
if [[ "$arg" == -* ]]; then
|
|
550
|
+
case "$arg" in
|
|
551
|
+
--force|-f|--force-with-lease)
|
|
552
|
+
echo -e "${RED}β Force push bloqueado por polΓtica interna.${NC}"
|
|
553
|
+
echo " β Usa PR + merge controlado."
|
|
554
|
+
return 1
|
|
555
|
+
;;
|
|
556
|
+
--delete|-d)
|
|
557
|
+
delete_mode=true
|
|
558
|
+
continue
|
|
559
|
+
;;
|
|
560
|
+
--delete=*)
|
|
561
|
+
local target="${arg#*=}"
|
|
562
|
+
target="${target#origin/}"
|
|
563
|
+
target="${target#refs/heads/}"
|
|
564
|
+
if is_protected_branch "$target"; then
|
|
565
|
+
echo -e "${RED}β EliminaciΓ³n de rama protegida ($target) bloqueada.${NC}"
|
|
566
|
+
return 1
|
|
567
|
+
fi
|
|
568
|
+
continue
|
|
569
|
+
;;
|
|
570
|
+
*)
|
|
571
|
+
continue
|
|
572
|
+
;;
|
|
573
|
+
esac
|
|
574
|
+
fi
|
|
575
|
+
|
|
576
|
+
if [[ "$delete_mode" == true ]]; then
|
|
577
|
+
local target="${arg#origin/}"
|
|
578
|
+
target="${target#refs/heads/}"
|
|
579
|
+
if is_protected_branch "$target"; then
|
|
580
|
+
echo -e "${RED}β EliminaciΓ³n de rama protegida ($target) bloqueada.${NC}"
|
|
581
|
+
return 1
|
|
582
|
+
fi
|
|
583
|
+
delete_mode=false
|
|
584
|
+
continue
|
|
585
|
+
fi
|
|
586
|
+
|
|
587
|
+
if [[ "$remote_seen" == false ]]; then
|
|
588
|
+
remote_seen=true
|
|
589
|
+
continue
|
|
590
|
+
fi
|
|
591
|
+
|
|
592
|
+
local target
|
|
593
|
+
target=$(extract_refspec_target "$arg")
|
|
594
|
+
if [[ -n "$target" ]] && is_protected_branch "$target"; then
|
|
595
|
+
echo -e "${RED}β Push directo a rama protegida ($target) bloqueado.${NC}"
|
|
596
|
+
echo ""
|
|
597
|
+
echo -e "${CYAN}π Usa Pull Request o el ciclo Git Flow (gitflow-enforcer.sh cycle).${NC}"
|
|
598
|
+
echo ""
|
|
599
|
+
return 1
|
|
600
|
+
fi
|
|
601
|
+
done
|
|
602
|
+
fi
|
|
603
|
+
|
|
604
|
+
echo -e "${BLUE}π Pushing with guardrails...${NC}"
|
|
605
|
+
$GIT_BIN push "${git_args[@]}"
|
|
606
|
+
|
|
607
|
+
if [[ "$override" != "true" ]]; then
|
|
608
|
+
echo ""
|
|
609
|
+
echo -e "${CYAN}π PrΓ³ximo paso recomendado: gh pr create --base develop --head $current_branch${NC}"
|
|
610
|
+
echo ""
|
|
611
|
+
fi
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
615
|
+
# Main wrapper logic
|
|
616
|
+
#βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
617
|
+
main() {
|
|
618
|
+
local cmd="${1:-}"
|
|
619
|
+
|
|
620
|
+
# If not in git repo, just execute
|
|
621
|
+
if [[ -z "$REPO_ROOT" ]]; then
|
|
622
|
+
exec $GIT_BIN "$@"
|
|
623
|
+
fi
|
|
624
|
+
|
|
625
|
+
case "$cmd" in
|
|
626
|
+
commit)
|
|
627
|
+
handle_commit "$@"
|
|
628
|
+
;;
|
|
629
|
+
checkout)
|
|
630
|
+
if [[ "${2:-}" == "-b" ]]; then
|
|
631
|
+
handle_branch_creation "$@"
|
|
632
|
+
else
|
|
633
|
+
$GIT_BIN "$@"
|
|
634
|
+
fi
|
|
635
|
+
;;
|
|
636
|
+
push)
|
|
637
|
+
handle_push "$@"
|
|
638
|
+
;;
|
|
639
|
+
*)
|
|
640
|
+
# Pass through to real git
|
|
641
|
+
exec $GIT_BIN "$@"
|
|
642
|
+
;;
|
|
643
|
+
esac
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
main "$@"
|