cycode 3.24.1.dev1__tar.gz → 3.24.1.dev2__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 (223) hide show
  1. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/PKG-INFO +1 -1
  2. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/__init__.py +1 -1
  3. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/handlers.py +3 -4
  4. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/utils.py +59 -1
  5. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/scan_utils.py +0 -23
  6. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/pyproject.toml +1 -1
  7. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/LICENCE +0 -0
  8. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/README.md +0 -0
  9. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/__main__.py +0 -0
  10. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/__init__.py +0 -0
  11. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/app.py +0 -0
  12. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/__init__.py +0 -0
  13. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/activation_manager.py +0 -0
  14. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/__init__.py +0 -0
  15. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/command_utils.py +0 -0
  16. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/consts.py +0 -0
  17. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/hooks_manager.py +0 -0
  18. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/ides/__init__.py +0 -0
  19. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/ides/_plugin_utils.py +0 -0
  20. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/ides/_skill_utils.py +0 -0
  21. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/ides/base.py +0 -0
  22. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/ides/claude_code.py +0 -0
  23. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/ides/codex.py +0 -0
  24. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/ides/copilot.py +0 -0
  25. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/ides/cursor.py +0 -0
  26. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/install_command.py +0 -0
  27. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/__init__.py +0 -0
  28. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/consts.py +0 -0
  29. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/detach.py +0 -0
  30. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/guardrail_config.py +0 -0
  31. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/payload.py +0 -0
  32. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/policy.py +0 -0
  33. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/scan_command.py +0 -0
  34. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/scan/types.py +0 -0
  35. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/session_start_command.py +0 -0
  36. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/status_command.py +0 -0
  37. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_guardrails/uninstall_command.py +0 -0
  38. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_remediation/__init__.py +0 -0
  39. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_remediation/ai_remediation_command.py +0 -0
  40. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_remediation/apply_fix.py +0 -0
  41. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ai_remediation/print_remediation.py +0 -0
  42. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/api/__init__.py +0 -0
  43. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/api/api_command.py +0 -0
  44. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/api/openapi_spec.py +0 -0
  45. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/auth/__init__.py +0 -0
  46. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/auth/auth_command.py +0 -0
  47. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/auth/auth_common.py +0 -0
  48. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/auth/auth_manager.py +0 -0
  49. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/auth/models.py +0 -0
  50. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/configure/__init__.py +0 -0
  51. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/configure/configure_command.py +0 -0
  52. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/configure/consts.py +0 -0
  53. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/configure/messages.py +0 -0
  54. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/configure/prompts.py +0 -0
  55. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ignore/__init__.py +0 -0
  56. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/ignore/ignore_command.py +0 -0
  57. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/mcp/__init__.py +0 -0
  58. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/mcp/mcp_command.py +0 -0
  59. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/__init__.py +0 -0
  60. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/report_command.py +0 -0
  61. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/sbom/__init__.py +0 -0
  62. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/sbom/common.py +0 -0
  63. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/sbom/path/__init__.py +0 -0
  64. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/sbom/path/path_command.py +0 -0
  65. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/sbom/repository_url/__init__.py +0 -0
  66. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py +0 -0
  67. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/sbom/sbom_command.py +0 -0
  68. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report/sbom/sbom_report_file.py +0 -0
  69. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report_import/__init__.py +0 -0
  70. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report_import/report_import_command.py +0 -0
  71. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report_import/sbom/__init__.py +0 -0
  72. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/report_import/sbom/sbom_command.py +0 -0
  73. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/sca_options.py +0 -0
  74. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/__init__.py +0 -0
  75. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/aggregation_report.py +0 -0
  76. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/code_scanner.py +0 -0
  77. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/commit_history/__init__.py +0 -0
  78. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/commit_history/commit_history_command.py +0 -0
  79. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/commit_range_scanner.py +0 -0
  80. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/detection_excluder.py +0 -0
  81. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/path/__init__.py +0 -0
  82. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/path/path_command.py +0 -0
  83. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/pre_commit/__init__.py +0 -0
  84. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +0 -0
  85. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/pre_push/__init__.py +0 -0
  86. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/pre_push/pre_push_command.py +0 -0
  87. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/pre_receive/__init__.py +0 -0
  88. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py +0 -0
  89. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/remote_url_resolver.py +0 -0
  90. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/repository/__init__.py +0 -0
  91. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/repository/repository_command.py +0 -0
  92. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/scan_ci/__init__.py +0 -0
  93. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/scan_ci/ci_integrations.py +0 -0
  94. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/scan_ci/scan_ci_command.py +0 -0
  95. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/scan_command.py +0 -0
  96. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/scan_parameters.py +0 -0
  97. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/scan/scan_result.py +0 -0
  98. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/status/__init__.py +0 -0
  99. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/status/get_cli_status.py +0 -0
  100. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/status/models.py +0 -0
  101. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/status/status_command.py +0 -0
  102. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/apps/status/version_command.py +0 -0
  103. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/cli_types.py +0 -0
  104. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/config.py +0 -0
  105. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/console.py +0 -0
  106. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/consts.py +0 -0
  107. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/exceptions/__init__.py +0 -0
  108. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/exceptions/custom_exceptions.py +0 -0
  109. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/exceptions/handle_ai_remediation_errors.py +0 -0
  110. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/exceptions/handle_auth_errors.py +0 -0
  111. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/exceptions/handle_errors.py +0 -0
  112. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/exceptions/handle_report_sbom_errors.py +0 -0
  113. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/exceptions/handle_scan_errors.py +0 -0
  114. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/__init__.py +0 -0
  115. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/commit_range_documents.py +0 -0
  116. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/documents_walk_ignore.py +0 -0
  117. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/file_excluder.py +0 -0
  118. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/iac/__init__.py +0 -0
  119. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
  120. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/models/__init__.py +0 -0
  121. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
  122. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/path_documents.py +0 -0
  123. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/repository_documents.py +0 -0
  124. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/__init__.py +0 -0
  125. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/base_restore_dependencies.py +0 -0
  126. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/go/__init__.py +0 -0
  127. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py +0 -0
  128. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
  129. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
  130. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
  131. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/npm/__init__.py +0 -0
  132. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/npm/restore_bun_dependencies.py +0 -0
  133. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/npm/restore_deno_dependencies.py +0 -0
  134. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/npm/restore_npm_dependencies.py +0 -0
  135. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/npm/restore_pnpm_dependencies.py +0 -0
  136. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/npm/restore_yarn_dependencies.py +0 -0
  137. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/nuget/__init__.py +0 -0
  138. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/nuget/restore_nuget_dependencies.py +0 -0
  139. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/php/__init__.py +0 -0
  140. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/php/restore_composer_dependencies.py +0 -0
  141. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/python/__init__.py +0 -0
  142. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/python/restore_pip_dependencies.py +0 -0
  143. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/python/restore_pipenv_dependencies.py +0 -0
  144. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/python/restore_poetry_dependencies.py +0 -0
  145. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/python/restore_uv_dependencies.py +0 -0
  146. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/ruby/__init__.py +0 -0
  147. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/ruby/restore_ruby_dependencies.py +0 -0
  148. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/sbt/__init__.py +0 -0
  149. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/sbt/restore_sbt_dependencies.py +0 -0
  150. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/sca/sca_file_collector.py +0 -0
  151. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/walk_ignore.py +0 -0
  152. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/files_collector/zip_documents.py +0 -0
  153. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/logger.py +0 -0
  154. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/main.py +0 -0
  155. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/models.py +0 -0
  156. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/__init__.py +0 -0
  157. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/console_printer.py +0 -0
  158. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/json_printer.py +0 -0
  159. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/printer_base.py +0 -0
  160. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/rich_printer.py +0 -0
  161. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/tables/__init__.py +0 -0
  162. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/tables/sca_table_printer.py +0 -0
  163. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/tables/table.py +0 -0
  164. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/tables/table_models.py +0 -0
  165. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/tables/table_printer.py +0 -0
  166. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/tables/table_printer_base.py +0 -0
  167. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/text_printer.py +0 -0
  168. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/__init__.py +0 -0
  169. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/code_snippet_syntax.py +0 -0
  170. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/detection_data.py +0 -0
  171. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/detection_ordering/__init__.py +0 -0
  172. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/detection_ordering/common_ordering.py +0 -0
  173. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py +0 -0
  174. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/rich_helpers.py +0 -0
  175. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/sca_ossf.py +0 -0
  176. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/printers/utils/sca_policy_details.py +0 -0
  177. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/user_settings/__init__.py +0 -0
  178. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/user_settings/base_file_manager.py +0 -0
  179. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/user_settings/config_file_manager.py +0 -0
  180. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/user_settings/configuration_manager.py +0 -0
  181. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/user_settings/credentials_manager.py +0 -0
  182. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/user_settings/jwt_creator.py +0 -0
  183. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/__init__.py +0 -0
  184. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/binary_utils.py +0 -0
  185. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/enum_utils.py +0 -0
  186. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/get_api_client.py +0 -0
  187. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/git_proxy.py +0 -0
  188. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/host_info.py +0 -0
  189. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/ignore_utils.py +0 -0
  190. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/jwt_utils.py +0 -0
  191. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/path_utils.py +0 -0
  192. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/progress_bar.py +0 -0
  193. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/scan_batch.py +0 -0
  194. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/shell_executor.py +0 -0
  195. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/string_utils.py +0 -0
  196. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/task_timer.py +0 -0
  197. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/trust_store.py +0 -0
  198. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/url_utils.py +0 -0
  199. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/version_checker.py +0 -0
  200. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cli/utils/yaml_utils.py +0 -0
  201. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/config.py +0 -0
  202. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/__init__.py +0 -0
  203. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/ai_security_manager_client.py +0 -0
  204. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/ai_security_manager_service_config.py +0 -0
  205. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/auth_client.py +0 -0
  206. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/base_token_auth_client.py +0 -0
  207. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/cli_activation_client.py +0 -0
  208. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/client_creator.py +0 -0
  209. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/config.py +0 -0
  210. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/config_dev.py +0 -0
  211. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/cycode_client.py +0 -0
  212. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/cycode_client_base.py +0 -0
  213. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/cycode_dev_based_client.py +0 -0
  214. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/cycode_oidc_based_client.py +0 -0
  215. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/cycode_token_based_client.py +0 -0
  216. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/headers.py +0 -0
  217. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/import_sbom_client.py +0 -0
  218. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/logger.py +0 -0
  219. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/models.py +0 -0
  220. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/report_client.py +0 -0
  221. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/scan_client.py +0 -0
  222. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/cyclient/scan_config_base.py +0 -0
  223. {cycode-3.24.1.dev1 → cycode-3.24.1.dev2}/cycode/logger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cycode
3
- Version: 3.24.1.dev1
3
+ Version: 3.24.1.dev2
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
@@ -5,4 +5,4 @@ import time as _time
5
5
  # end-to-end scan duration from the moment the user actually triggered it.
6
6
  _BOOT_WALL: float = _time.time()
7
7
 
8
- __version__ = '3.24.1.dev1' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
8
+ __version__ = '3.24.1.dev2' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
@@ -30,7 +30,7 @@ from cycode.cli.apps.ai_guardrails.scan.types import (
30
30
  AIHookOutcome,
31
31
  BlockReason,
32
32
  )
33
- from cycode.cli.apps.ai_guardrails.scan.utils import is_denied_path, truncate_utf8
33
+ from cycode.cli.apps.ai_guardrails.scan.utils import build_violation_summary, is_denied_path, truncate_utf8
34
34
  from cycode.cli.apps.scan.code_scanner import _get_scan_documents_thread_func
35
35
  from cycode.cli.apps.scan.scan_parameters import get_scan_parameters
36
36
  from cycode.cli.cli_types import ScanTypeOption, SeverityOption
@@ -38,7 +38,6 @@ from cycode.cli.files_collector.file_excluder import is_path_configured_in_exclu
38
38
  from cycode.cli.models import Document
39
39
  from cycode.cli.utils.host_info import get_hostname, get_serial_number
40
40
  from cycode.cli.utils.progress_bar import DummyProgressBar, ScanProgressBarSection
41
- from cycode.cli.utils.scan_utils import build_violation_summary
42
41
  from cycode.logger import get_logger
43
42
 
44
43
  logger = get_logger('AI Guardrails')
@@ -76,7 +75,7 @@ def handle_before_submit_prompt(ctx: typer.Context, payload: AIHookPayload, poli
76
75
  block_reason = SECRETS_BLOCK_REASON_BY_EVENT_TYPE[AiHookEventType.PROMPT]
77
76
  if effective_mode == GuardrailsMode.BLOCK:
78
77
  outcome = AIHookOutcome.BLOCKED
79
- user_message = f'{violation_summary}. Remove secrets before sending.'
78
+ user_message = f'Remove secrets before sending. {violation_summary}'
80
79
  return HookDecision.deny(AiHookEventType.PROMPT, user_message)
81
80
  outcome = AIHookOutcome.WARNED
82
81
  return HookDecision.allow(AiHookEventType.PROMPT)
@@ -283,7 +282,7 @@ def handle_before_mcp_execution(ctx: typer.Context, payload: AIHookPayload, poli
283
282
  event_type=AiHookEventType.MCP_EXECUTION,
284
283
  deny_message=lambda v: f'Cycode blocked MCP tool call "{tool}". {v}',
285
284
  deny_agent_message='Do not pass secrets to tools. Use secret references (name/id) instead.',
286
- ask_message=lambda v: f'{v} in MCP tool call "{tool}". Allow execution?',
285
+ ask_message=lambda v: f'Allow MCP tool call "{tool}"? {v}',
287
286
  ask_agent_message='Possible secrets detected in tool arguments; proceed with caution.',
288
287
  ),
289
288
  scan_text=args_text,
@@ -1,15 +1,24 @@
1
1
  """
2
2
  Utility functions for AI guardrails.
3
3
 
4
- Includes JSON parsing, path matching, and text handling utilities.
4
+ Includes JSON parsing, path matching, text handling and hook-message utilities.
5
5
  """
6
6
 
7
7
  import json
8
8
  import os
9
9
  import sys
10
+ from collections import defaultdict
10
11
  from pathlib import Path
12
+ from typing import TYPE_CHECKING
11
13
 
12
14
  from cycode.cli.apps.ai_guardrails.scan.policy import get_policy_value
15
+ from cycode.cli.cli_types import SeverityOption
16
+
17
+ if TYPE_CHECKING:
18
+ from cycode.cli.models import LocalScanResult
19
+
20
+ # Keeps the hook message readable when a single file trips dozens of detections
21
+ MAX_VIOLATION_DETAIL_LINES = 5
13
22
 
14
23
 
15
24
  def read_stdin_text() -> str:
@@ -87,3 +96,52 @@ def is_denied_path(file_path: str, policy: dict) -> bool:
87
96
  def output_json(obj: dict) -> None:
88
97
  """Write JSON response to stdout (for IDE to read)."""
89
98
  print(json.dumps(obj), end='') # noqa: T201
99
+
100
+
101
+ def _build_detection_lines(
102
+ local_scan_results: list['LocalScanResult'], max_lines: int = MAX_VIOLATION_DETAIL_LINES
103
+ ) -> str:
104
+ """One line per distinct finding: what it is, and the value hash identifying it.
105
+
106
+ The value hash is safe to display; the value itself is not. Detections excluded by an existing
107
+ ignore rule are already gone from `document_detections`, so only what actually blocked is listed.
108
+ """
109
+ type_by_sha = {}
110
+ for local_scan_result in local_scan_results:
111
+ for document_detections in local_scan_result.document_detections:
112
+ for detection in document_detections.detections:
113
+ sha = detection.detection_details.get('sha512')
114
+ if sha and sha not in type_by_sha:
115
+ type_by_sha[sha] = detection.type or detection.message
116
+
117
+ if not type_by_sha:
118
+ return ''
119
+
120
+ lines = [f' - {detection_type}: {sha}' for sha, detection_type in list(type_by_sha.items())[:max_lines]]
121
+ remaining = len(type_by_sha) - len(lines)
122
+ if remaining:
123
+ lines.append(f' - ...and {remaining} more')
124
+
125
+ return '\n' + '\n'.join(lines)
126
+
127
+
128
+ def build_violation_summary(local_scan_results: list['LocalScanResult']) -> str:
129
+ """Build violation summary string with severity breakdown and emojis."""
130
+ detections_count = 0
131
+ severity_counts = defaultdict(int)
132
+
133
+ for local_scan_result in local_scan_results:
134
+ for document_detections in local_scan_result.document_detections:
135
+ for detection in document_detections.detections:
136
+ if detection.severity:
137
+ detections_count += 1
138
+ severity_counts[SeverityOption(detection.severity)] += 1
139
+
140
+ severity_parts = []
141
+ for severity in reversed(SeverityOption):
142
+ emoji = SeverityOption.get_member_unicode_emoji(severity)
143
+ count = severity_counts[severity]
144
+ severity_parts.append(f'{emoji} {severity.upper()} - {count}')
145
+
146
+ summary = f'Cycode found {detections_count} violations: {" | ".join(severity_parts)}'
147
+ return summary + _build_detection_lines(local_scan_results)
@@ -1,12 +1,10 @@
1
1
  import os
2
- from collections import defaultdict
3
2
  from typing import TYPE_CHECKING, Optional
4
3
  from uuid import UUID, uuid4
5
4
 
6
5
  import typer
7
6
 
8
7
  from cycode.cli import consts
9
- from cycode.cli.cli_types import SeverityOption
10
8
 
11
9
  if TYPE_CHECKING:
12
10
  from cycode.cli.models import LocalScanResult
@@ -41,24 +39,3 @@ def generate_unique_scan_id() -> UUID:
41
39
  return UUID(os.environ['PYTEST_TEST_UNIQUE_ID'])
42
40
 
43
41
  return uuid4()
44
-
45
-
46
- def build_violation_summary(local_scan_results: list['LocalScanResult']) -> str:
47
- """Build violation summary string with severity breakdown and emojis."""
48
- detections_count = 0
49
- severity_counts = defaultdict(int)
50
-
51
- for local_scan_result in local_scan_results:
52
- for document_detections in local_scan_result.document_detections:
53
- for detection in document_detections.detections:
54
- if detection.severity:
55
- detections_count += 1
56
- severity_counts[SeverityOption(detection.severity)] += 1
57
-
58
- severity_parts = []
59
- for severity in reversed(SeverityOption):
60
- emoji = SeverityOption.get_member_unicode_emoji(severity)
61
- count = severity_counts[severity]
62
- severity_parts.append(f'{emoji} {severity.upper()} - {count}')
63
-
64
- return f'Cycode found {detections_count} violations: {" | ".join(severity_parts)}'
@@ -21,7 +21,7 @@ classifiers = [
21
21
  "Programming Language :: Python :: 3.14",
22
22
  ]
23
23
  dynamic = ["dependencies"]
24
- version = "3.24.1.dev1"
24
+ version = "3.24.1.dev2"
25
25
 
26
26
  [project.scripts]
27
27
  cycode = "cycode.cli.app:app"
File without changes
File without changes