cycode 3.12.3.dev3__tar.gz → 3.12.3.dev5__tar.gz

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 (206) hide show
  1. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/PKG-INFO +1 -1
  2. cycode-3.12.3.dev5/cycode/__init__.py +1 -0
  3. cycode-3.12.3.dev5/cycode/cli/apps/ai_guardrails/scan/claude_config.py +44 -0
  4. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/payload.py +6 -1
  5. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/pre_push/pre_push_command.py +4 -0
  6. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/commit_range_documents.py +12 -9
  7. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/pyproject.toml +1 -1
  8. cycode-3.12.3.dev3/cycode/__init__.py +0 -1
  9. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/LICENCE +0 -0
  10. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/README.md +0 -0
  11. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/__main__.py +0 -0
  12. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/__init__.py +0 -0
  13. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/app.py +0 -0
  14. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/__init__.py +0 -0
  15. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/activation_manager.py +0 -0
  16. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/__init__.py +0 -0
  17. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/command_utils.py +0 -0
  18. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/consts.py +0 -0
  19. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/ensure_auth_command.py +0 -0
  20. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/hooks_manager.py +0 -0
  21. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/install_command.py +0 -0
  22. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/__init__.py +0 -0
  23. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/consts.py +0 -0
  24. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/handlers.py +0 -0
  25. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/policy.py +0 -0
  26. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/response_builders.py +0 -0
  27. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/scan_command.py +0 -0
  28. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/types.py +0 -0
  29. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/scan/utils.py +0 -0
  30. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/status_command.py +0 -0
  31. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_guardrails/uninstall_command.py +0 -0
  32. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_remediation/__init__.py +0 -0
  33. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_remediation/ai_remediation_command.py +0 -0
  34. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_remediation/apply_fix.py +0 -0
  35. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ai_remediation/print_remediation.py +0 -0
  36. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/auth/__init__.py +0 -0
  37. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/auth/auth_command.py +0 -0
  38. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/auth/auth_common.py +0 -0
  39. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/auth/auth_manager.py +0 -0
  40. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/auth/models.py +0 -0
  41. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/configure/__init__.py +0 -0
  42. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/configure/configure_command.py +0 -0
  43. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/configure/consts.py +0 -0
  44. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/configure/messages.py +0 -0
  45. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/configure/prompts.py +0 -0
  46. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ignore/__init__.py +0 -0
  47. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/ignore/ignore_command.py +0 -0
  48. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/mcp/__init__.py +0 -0
  49. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/mcp/mcp_command.py +0 -0
  50. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/__init__.py +0 -0
  51. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/report_command.py +0 -0
  52. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/sbom/__init__.py +0 -0
  53. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/sbom/common.py +0 -0
  54. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/sbom/path/__init__.py +0 -0
  55. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/sbom/path/path_command.py +0 -0
  56. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/sbom/repository_url/__init__.py +0 -0
  57. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py +0 -0
  58. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/sbom/sbom_command.py +0 -0
  59. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report/sbom/sbom_report_file.py +0 -0
  60. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report_import/__init__.py +0 -0
  61. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report_import/report_import_command.py +0 -0
  62. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report_import/sbom/__init__.py +0 -0
  63. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/report_import/sbom/sbom_command.py +0 -0
  64. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/sca_options.py +0 -0
  65. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/__init__.py +0 -0
  66. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/aggregation_report.py +0 -0
  67. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/code_scanner.py +0 -0
  68. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/commit_history/__init__.py +0 -0
  69. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/commit_history/commit_history_command.py +0 -0
  70. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/commit_range_scanner.py +0 -0
  71. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/detection_excluder.py +0 -0
  72. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/path/__init__.py +0 -0
  73. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/path/path_command.py +0 -0
  74. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/pre_commit/__init__.py +0 -0
  75. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +0 -0
  76. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/pre_push/__init__.py +0 -0
  77. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/pre_receive/__init__.py +0 -0
  78. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py +0 -0
  79. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/remote_url_resolver.py +0 -0
  80. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/repository/__init__.py +0 -0
  81. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/repository/repository_command.py +0 -0
  82. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/scan_ci/__init__.py +0 -0
  83. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/scan_ci/ci_integrations.py +0 -0
  84. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/scan_ci/scan_ci_command.py +0 -0
  85. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/scan_command.py +0 -0
  86. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/scan_parameters.py +0 -0
  87. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/scan/scan_result.py +0 -0
  88. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/status/__init__.py +0 -0
  89. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/status/get_cli_status.py +0 -0
  90. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/status/models.py +0 -0
  91. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/status/status_command.py +0 -0
  92. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/apps/status/version_command.py +0 -0
  93. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/cli_types.py +0 -0
  94. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/config.py +0 -0
  95. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/console.py +0 -0
  96. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/consts.py +0 -0
  97. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/exceptions/__init__.py +0 -0
  98. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/exceptions/custom_exceptions.py +0 -0
  99. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/exceptions/handle_ai_remediation_errors.py +0 -0
  100. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/exceptions/handle_auth_errors.py +0 -0
  101. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/exceptions/handle_errors.py +0 -0
  102. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/exceptions/handle_report_sbom_errors.py +0 -0
  103. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/exceptions/handle_scan_errors.py +0 -0
  104. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/__init__.py +0 -0
  105. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/documents_walk_ignore.py +0 -0
  106. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/file_excluder.py +0 -0
  107. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/iac/__init__.py +0 -0
  108. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
  109. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/models/__init__.py +0 -0
  110. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
  111. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/path_documents.py +0 -0
  112. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/repository_documents.py +0 -0
  113. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/__init__.py +0 -0
  114. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/base_restore_dependencies.py +0 -0
  115. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/go/__init__.py +0 -0
  116. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py +0 -0
  117. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
  118. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
  119. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
  120. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/npm/__init__.py +0 -0
  121. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/npm/restore_deno_dependencies.py +0 -0
  122. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/npm/restore_npm_dependencies.py +0 -0
  123. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/npm/restore_pnpm_dependencies.py +0 -0
  124. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/npm/restore_yarn_dependencies.py +0 -0
  125. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/nuget/__init__.py +0 -0
  126. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/nuget/restore_nuget_dependencies.py +0 -0
  127. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/php/__init__.py +0 -0
  128. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/php/restore_composer_dependencies.py +0 -0
  129. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/python/__init__.py +0 -0
  130. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/python/restore_pipenv_dependencies.py +0 -0
  131. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/python/restore_poetry_dependencies.py +0 -0
  132. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/ruby/__init__.py +0 -0
  133. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/ruby/restore_ruby_dependencies.py +0 -0
  134. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/sbt/__init__.py +0 -0
  135. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/sbt/restore_sbt_dependencies.py +0 -0
  136. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/sca/sca_file_collector.py +0 -0
  137. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/walk_ignore.py +0 -0
  138. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/files_collector/zip_documents.py +0 -0
  139. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/logger.py +0 -0
  140. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/main.py +0 -0
  141. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/models.py +0 -0
  142. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/__init__.py +0 -0
  143. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/console_printer.py +0 -0
  144. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/json_printer.py +0 -0
  145. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/printer_base.py +0 -0
  146. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/rich_printer.py +0 -0
  147. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/tables/__init__.py +0 -0
  148. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/tables/sca_table_printer.py +0 -0
  149. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/tables/table.py +0 -0
  150. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/tables/table_models.py +0 -0
  151. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/tables/table_printer.py +0 -0
  152. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/tables/table_printer_base.py +0 -0
  153. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/text_printer.py +0 -0
  154. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/utils/__init__.py +0 -0
  155. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/utils/code_snippet_syntax.py +0 -0
  156. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/utils/detection_data.py +0 -0
  157. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/utils/detection_ordering/__init__.py +0 -0
  158. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/utils/detection_ordering/common_ordering.py +0 -0
  159. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py +0 -0
  160. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/printers/utils/rich_helpers.py +0 -0
  161. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/user_settings/__init__.py +0 -0
  162. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/user_settings/base_file_manager.py +0 -0
  163. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/user_settings/config_file_manager.py +0 -0
  164. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/user_settings/configuration_manager.py +0 -0
  165. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/user_settings/credentials_manager.py +0 -0
  166. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/user_settings/jwt_creator.py +0 -0
  167. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/__init__.py +0 -0
  168. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/binary_utils.py +0 -0
  169. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/enum_utils.py +0 -0
  170. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/get_api_client.py +0 -0
  171. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/git_proxy.py +0 -0
  172. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/ignore_utils.py +0 -0
  173. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/jwt_utils.py +0 -0
  174. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/path_utils.py +0 -0
  175. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/progress_bar.py +0 -0
  176. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/scan_batch.py +0 -0
  177. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/scan_utils.py +0 -0
  178. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/shell_executor.py +0 -0
  179. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/string_utils.py +0 -0
  180. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/task_timer.py +0 -0
  181. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/url_utils.py +0 -0
  182. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/version_checker.py +0 -0
  183. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cli/utils/yaml_utils.py +0 -0
  184. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/config.py +0 -0
  185. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/__init__.py +0 -0
  186. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/ai_security_manager_client.py +0 -0
  187. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/ai_security_manager_service_config.py +0 -0
  188. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/auth_client.py +0 -0
  189. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/base_token_auth_client.py +0 -0
  190. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/cli_activation_client.py +0 -0
  191. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/client_creator.py +0 -0
  192. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/config.py +0 -0
  193. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/config_dev.py +0 -0
  194. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/cycode_client.py +0 -0
  195. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/cycode_client_base.py +0 -0
  196. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/cycode_dev_based_client.py +0 -0
  197. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/cycode_oidc_based_client.py +0 -0
  198. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/cycode_token_based_client.py +0 -0
  199. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/headers.py +0 -0
  200. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/import_sbom_client.py +0 -0
  201. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/logger.py +0 -0
  202. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/models.py +0 -0
  203. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/report_client.py +0 -0
  204. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/scan_client.py +0 -0
  205. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/cyclient/scan_config_base.py +0 -0
  206. {cycode-3.12.3.dev3 → cycode-3.12.3.dev5}/cycode/logger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cycode
3
- Version: 3.12.3.dev3
3
+ Version: 3.12.3.dev5
4
4
  Summary: Boost security in your dev lifecycle via SAST, SCA, Secrets & IaC scanning.
5
5
  License-Expression: MIT
6
6
  License-File: LICENCE
@@ -0,0 +1 @@
1
+ __version__ = '3.12.3.dev5' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
@@ -0,0 +1,44 @@
1
+ """Reader for ~/.claude.json configuration file.
2
+
3
+ Extracts user email from the Claude Code global config file
4
+ for use in AI guardrails scan enrichment.
5
+ """
6
+
7
+ import json
8
+ from pathlib import Path
9
+ from typing import Optional
10
+
11
+ from cycode.logger import get_logger
12
+
13
+ logger = get_logger('AI Guardrails Claude Config')
14
+
15
+ _CLAUDE_CONFIG_PATH = Path.home() / '.claude.json'
16
+
17
+
18
+ def load_claude_config(config_path: Optional[Path] = None) -> Optional[dict]:
19
+ """Load and parse ~/.claude.json.
20
+
21
+ Args:
22
+ config_path: Override path for testing. Defaults to ~/.claude.json.
23
+
24
+ Returns:
25
+ Parsed dict or None if file is missing or invalid.
26
+ """
27
+ path = config_path or _CLAUDE_CONFIG_PATH
28
+ if not path.exists():
29
+ logger.debug('Claude config file not found', extra={'path': str(path)})
30
+ return None
31
+ try:
32
+ content = path.read_text(encoding='utf-8')
33
+ return json.loads(content)
34
+ except Exception as e:
35
+ logger.debug('Failed to load Claude config file', exc_info=e)
36
+ return None
37
+
38
+
39
+ def get_user_email(config: dict) -> Optional[str]:
40
+ """Extract user email from Claude config.
41
+
42
+ Reads oauthAccount.emailAddress from the config dict.
43
+ """
44
+ return config.get('oauthAccount', {}).get('emailAddress')
@@ -7,6 +7,7 @@ from pathlib import Path
7
7
  from typing import Optional
8
8
 
9
9
  from cycode.cli.apps.ai_guardrails.consts import AIIDEType
10
+ from cycode.cli.apps.ai_guardrails.scan.claude_config import get_user_email, load_claude_config
10
11
  from cycode.cli.apps.ai_guardrails.scan.types import (
11
12
  CLAUDE_CODE_EVENT_MAPPING,
12
13
  CLAUDE_CODE_EVENT_NAMES,
@@ -207,11 +208,15 @@ class AIHookPayload:
207
208
  # Extract IDE version, model, and generation ID from transcript file
208
209
  ide_version, model, generation_id = _extract_from_claude_transcript(payload.get('transcript_path'))
209
210
 
211
+ # Extract user email from ~/.claude.json
212
+ claude_config = load_claude_config()
213
+ ide_user_email = get_user_email(claude_config) if claude_config else None
214
+
210
215
  return cls(
211
216
  event_name=canonical_event,
212
217
  conversation_id=payload.get('session_id'),
213
218
  generation_id=generation_id,
214
- ide_user_email=None, # Claude Code doesn't provide this in hook payload
219
+ ide_user_email=ide_user_email,
215
220
  model=model,
216
221
  ide_provider=AIIDEType.CLAUDE_CODE.value,
217
222
  ide_version=ide_version,
@@ -44,6 +44,10 @@ def pre_push_command(
44
44
  timeout = configuration_manager.get_pre_push_command_timeout(command_scan_type)
45
45
  with TimeoutAfter(timeout):
46
46
  push_update_details = parse_pre_push_input()
47
+ if not push_update_details:
48
+ logger.info('No pre-push input found, nothing to scan')
49
+ return
50
+
47
51
  commit_range = calculate_pre_push_commit_range(push_update_details)
48
52
  if not commit_range:
49
53
  logger.info(
@@ -228,7 +228,7 @@ def parse_pre_receive_input() -> str:
228
228
  return pre_receive_input.splitlines()[0]
229
229
 
230
230
 
231
- def parse_pre_push_input() -> str:
231
+ def parse_pre_push_input() -> Optional[str]:
232
232
  """Parse input to pre-push hook details.
233
233
 
234
234
  Example input:
@@ -237,13 +237,11 @@ def parse_pre_push_input() -> str:
237
237
  refs/heads/main 9cf90954ef26e7c58284f8ebf7dcd0fcf711152a refs/heads/main 973a96d3e925b65941f7c47fa16129f1577d499f
238
238
  refs/heads/feature-branch 3378e52dcfa47fb11ce3a4a520bea5f85d5d0bf3 refs/heads/feature-branch 59564ef68745bca38c42fc57a7822efd519a6bd9
239
239
 
240
- :return: First, push update details (input's first line)
240
+ :return: First push update details (input's first line), or None if no input was provided
241
241
  """ # noqa: E501
242
242
  pre_push_input = _read_hook_input_from_stdin()
243
243
  if not pre_push_input:
244
- raise ValueError(
245
- 'Pre push input was not found. Make sure that you are using this command only in pre-push hook'
246
- )
244
+ return None
247
245
 
248
246
  # each line represents a branch push request, handle the first one only
249
247
  return pre_push_input.splitlines()[0]
@@ -332,6 +330,15 @@ def calculate_pre_push_commit_range(push_update_details: str) -> Optional[str]:
332
330
  """
333
331
  local_ref, local_object_name, remote_ref, remote_object_name = push_update_details.split()
334
332
 
333
+ # Tag pushes don't contain file diffs that need scanning
334
+ if local_ref.startswith('refs/tags/') or remote_ref.startswith('refs/tags/'):
335
+ logger.info('Skipping scan for tag push: %s -> %s', local_ref, remote_ref)
336
+ return None
337
+
338
+ # If deleting a ref (local_object_name is all zeros), no need to scan
339
+ if local_object_name == consts.EMPTY_COMMIT_SHA:
340
+ return None
341
+
335
342
  if remote_object_name == consts.EMPTY_COMMIT_SHA:
336
343
  try:
337
344
  repo = git_proxy.get_repo(os.getcwd())
@@ -356,10 +363,6 @@ def calculate_pre_push_commit_range(push_update_details: str) -> Optional[str]:
356
363
  logger.debug('Failed to get repo for pre-push commit range calculation: %s', exc_info=e)
357
364
  return consts.COMMIT_RANGE_ALL_COMMITS
358
365
 
359
- # If deleting a branch (local_object_name is all zeros), no need to scan
360
- if local_object_name == consts.EMPTY_COMMIT_SHA:
361
- return None
362
-
363
366
  # For updates to existing branches, scan from remote to local
364
367
  return f'{remote_object_name}..{local_object_name}'
365
368
 
@@ -21,7 +21,7 @@ classifiers = [
21
21
  "Programming Language :: Python :: 3.14",
22
22
  ]
23
23
  dynamic = ["dependencies"]
24
- version = "3.12.3.dev3"
24
+ version = "3.12.3.dev5"
25
25
 
26
26
  [project.scripts]
27
27
  cycode = "cycode.cli.app:app"
@@ -1 +0,0 @@
1
- __version__ = '3.12.3.dev3' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
File without changes
File without changes