cycode 3.25.1.dev4__tar.gz → 3.25.1.dev6__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 (229) hide show
  1. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/PKG-INFO +1 -1
  2. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/__init__.py +1 -1
  3. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/ides/codex.py +9 -12
  4. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/handlers.py +20 -12
  5. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/git_proxy.py +30 -16
  6. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/pyproject.toml +1 -1
  7. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/LICENCE +0 -0
  8. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/README.md +0 -0
  9. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/__main__.py +0 -0
  10. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/__init__.py +0 -0
  11. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/app.py +0 -0
  12. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/__init__.py +0 -0
  13. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/activation_manager.py +0 -0
  14. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/__init__.py +0 -0
  15. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/command_utils.py +0 -0
  16. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/consts.py +0 -0
  17. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/hooks_manager.py +0 -0
  18. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/ides/__init__.py +0 -0
  19. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/ides/_plugin_utils.py +0 -0
  20. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/ides/_skill_utils.py +0 -0
  21. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/ides/base.py +0 -0
  22. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/ides/claude_code.py +0 -0
  23. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/ides/copilot.py +0 -0
  24. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/ides/cursor.py +0 -0
  25. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/install_command.py +0 -0
  26. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/__init__.py +0 -0
  27. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/consts.py +0 -0
  28. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/detach.py +0 -0
  29. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/guardrail_config.py +0 -0
  30. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/payload.py +0 -0
  31. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/policy.py +0 -0
  32. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/scan_command.py +0 -0
  33. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/types.py +0 -0
  34. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/scan/utils.py +0 -0
  35. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/session_start_command.py +0 -0
  36. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/status_command.py +0 -0
  37. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_guardrails/uninstall_command.py +0 -0
  38. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_remediation/__init__.py +0 -0
  39. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_remediation/ai_remediation_command.py +0 -0
  40. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_remediation/apply_fix.py +0 -0
  41. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ai_remediation/print_remediation.py +0 -0
  42. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/api/__init__.py +0 -0
  43. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/api/api_command.py +0 -0
  44. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/api/openapi_spec.py +0 -0
  45. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/auth/__init__.py +0 -0
  46. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/auth/auth_command.py +0 -0
  47. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/auth/auth_common.py +0 -0
  48. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/auth/auth_manager.py +0 -0
  49. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/auth/models.py +0 -0
  50. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/configure/__init__.py +0 -0
  51. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/configure/configure_command.py +0 -0
  52. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/configure/consts.py +0 -0
  53. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/configure/messages.py +0 -0
  54. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/configure/prompts.py +0 -0
  55. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ignore/__init__.py +0 -0
  56. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/ignore/ignore_command.py +0 -0
  57. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/mcp/__init__.py +0 -0
  58. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/mcp/mcp_command.py +0 -0
  59. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/__init__.py +0 -0
  60. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/report_command.py +0 -0
  61. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/sbom/__init__.py +0 -0
  62. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/sbom/common.py +0 -0
  63. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/sbom/path/__init__.py +0 -0
  64. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/sbom/path/path_command.py +0 -0
  65. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/sbom/repository_url/__init__.py +0 -0
  66. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py +0 -0
  67. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/sbom/sbom_command.py +0 -0
  68. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report/sbom/sbom_report_file.py +0 -0
  69. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report_import/__init__.py +0 -0
  70. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report_import/report_import_command.py +0 -0
  71. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report_import/sbom/__init__.py +0 -0
  72. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/report_import/sbom/sbom_command.py +0 -0
  73. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/sca_options.py +0 -0
  74. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/__init__.py +0 -0
  75. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/aggregation_report.py +0 -0
  76. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/code_scanner.py +0 -0
  77. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/commit_history/__init__.py +0 -0
  78. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/commit_history/commit_history_command.py +0 -0
  79. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/commit_range_scanner.py +0 -0
  80. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/detection_excluder.py +0 -0
  81. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/path/__init__.py +0 -0
  82. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/path/path_command.py +0 -0
  83. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/pre_commit/__init__.py +0 -0
  84. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +0 -0
  85. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/pre_push/__init__.py +0 -0
  86. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/pre_push/pre_push_command.py +0 -0
  87. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/pre_receive/__init__.py +0 -0
  88. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py +0 -0
  89. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/remote_url_resolver.py +0 -0
  90. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/repository/__init__.py +0 -0
  91. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/repository/repository_command.py +0 -0
  92. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/scan_ci/__init__.py +0 -0
  93. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/scan_ci/ci_integrations.py +0 -0
  94. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/scan_ci/scan_ci_command.py +0 -0
  95. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/scan_command.py +0 -0
  96. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/scan_parameters.py +0 -0
  97. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/scan/scan_result.py +0 -0
  98. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/status/__init__.py +0 -0
  99. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/status/get_cli_status.py +0 -0
  100. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/status/models.py +0 -0
  101. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/status/status_command.py +0 -0
  102. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/apps/status/version_command.py +0 -0
  103. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/cli_types.py +0 -0
  104. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/config.py +0 -0
  105. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/console.py +0 -0
  106. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/consts.py +0 -0
  107. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/exceptions/__init__.py +0 -0
  108. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/exceptions/custom_exceptions.py +0 -0
  109. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/exceptions/handle_ai_remediation_errors.py +0 -0
  110. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/exceptions/handle_auth_errors.py +0 -0
  111. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/exceptions/handle_errors.py +0 -0
  112. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/exceptions/handle_report_sbom_errors.py +0 -0
  113. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/exceptions/handle_scan_errors.py +0 -0
  114. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/__init__.py +0 -0
  115. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/commit_range_documents.py +0 -0
  116. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/documents_walk_ignore.py +0 -0
  117. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/file_excluder.py +0 -0
  118. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/iac/__init__.py +0 -0
  119. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
  120. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/models/__init__.py +0 -0
  121. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
  122. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/path_documents.py +0 -0
  123. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/repository_documents.py +0 -0
  124. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/__init__.py +0 -0
  125. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/base_restore_dependencies.py +0 -0
  126. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/go/__init__.py +0 -0
  127. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py +0 -0
  128. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
  129. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
  130. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
  131. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/__init__.py +0 -0
  132. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/restore_bun_dependencies.py +0 -0
  133. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/restore_deno_dependencies.py +0 -0
  134. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/restore_npm_dependencies.py +0 -0
  135. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/restore_pnpm_dependencies.py +0 -0
  136. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/restore_yarn_dependencies.py +0 -0
  137. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/workspace/__init__.py +0 -0
  138. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/workspace/coverage.py +0 -0
  139. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/workspace/files.py +0 -0
  140. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/workspace/globs.py +0 -0
  141. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/workspace/names.py +0 -0
  142. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/npm/workspace/resolvers.py +0 -0
  143. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/nuget/__init__.py +0 -0
  144. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/nuget/restore_nuget_dependencies.py +0 -0
  145. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/php/__init__.py +0 -0
  146. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/php/restore_composer_dependencies.py +0 -0
  147. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/python/__init__.py +0 -0
  148. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/python/restore_pip_dependencies.py +0 -0
  149. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/python/restore_pipenv_dependencies.py +0 -0
  150. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/python/restore_poetry_dependencies.py +0 -0
  151. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/python/restore_uv_dependencies.py +0 -0
  152. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/ruby/__init__.py +0 -0
  153. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/ruby/restore_ruby_dependencies.py +0 -0
  154. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/sbt/__init__.py +0 -0
  155. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/sbt/restore_sbt_dependencies.py +0 -0
  156. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/sca/sca_file_collector.py +0 -0
  157. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/walk_ignore.py +0 -0
  158. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/files_collector/zip_documents.py +0 -0
  159. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/logger.py +0 -0
  160. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/main.py +0 -0
  161. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/models.py +0 -0
  162. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/__init__.py +0 -0
  163. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/console_printer.py +0 -0
  164. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/json_printer.py +0 -0
  165. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/printer_base.py +0 -0
  166. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/rich_printer.py +0 -0
  167. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/tables/__init__.py +0 -0
  168. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/tables/sca_table_printer.py +0 -0
  169. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/tables/table.py +0 -0
  170. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/tables/table_models.py +0 -0
  171. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/tables/table_printer.py +0 -0
  172. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/tables/table_printer_base.py +0 -0
  173. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/text_printer.py +0 -0
  174. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/__init__.py +0 -0
  175. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/code_snippet_syntax.py +0 -0
  176. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/detection_data.py +0 -0
  177. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/detection_ordering/__init__.py +0 -0
  178. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/detection_ordering/common_ordering.py +0 -0
  179. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py +0 -0
  180. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/rich_helpers.py +0 -0
  181. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/sca_ossf.py +0 -0
  182. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/printers/utils/sca_policy_details.py +0 -0
  183. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/user_settings/__init__.py +0 -0
  184. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/user_settings/base_file_manager.py +0 -0
  185. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/user_settings/config_file_manager.py +0 -0
  186. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/user_settings/configuration_manager.py +0 -0
  187. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/user_settings/credentials_manager.py +0 -0
  188. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/user_settings/jwt_creator.py +0 -0
  189. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/__init__.py +0 -0
  190. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/binary_utils.py +0 -0
  191. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/enum_utils.py +0 -0
  192. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/get_api_client.py +0 -0
  193. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/host_info.py +0 -0
  194. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/ignore_utils.py +0 -0
  195. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/jwt_utils.py +0 -0
  196. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/path_utils.py +0 -0
  197. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/progress_bar.py +0 -0
  198. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/scan_batch.py +0 -0
  199. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/scan_utils.py +0 -0
  200. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/shell_executor.py +0 -0
  201. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/string_utils.py +0 -0
  202. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/task_timer.py +0 -0
  203. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/trust_store.py +0 -0
  204. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/url_utils.py +0 -0
  205. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/version_checker.py +0 -0
  206. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cli/utils/yaml_utils.py +0 -0
  207. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/config.py +0 -0
  208. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/__init__.py +0 -0
  209. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/ai_security_manager_client.py +0 -0
  210. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/ai_security_manager_service_config.py +0 -0
  211. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/auth_client.py +0 -0
  212. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/base_token_auth_client.py +0 -0
  213. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/cli_activation_client.py +0 -0
  214. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/client_creator.py +0 -0
  215. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/config.py +0 -0
  216. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/config_dev.py +0 -0
  217. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/cycode_client.py +0 -0
  218. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/cycode_client_base.py +0 -0
  219. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/cycode_dev_based_client.py +0 -0
  220. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/cycode_oidc_based_client.py +0 -0
  221. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/cycode_token_based_client.py +0 -0
  222. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/headers.py +0 -0
  223. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/import_sbom_client.py +0 -0
  224. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/logger.py +0 -0
  225. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/models.py +0 -0
  226. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/report_client.py +0 -0
  227. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/scan_client.py +0 -0
  228. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/cyclient/scan_config_base.py +0 -0
  229. {cycode-3.25.1.dev4 → cycode-3.25.1.dev6}/cycode/logger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cycode
3
- Version: 3.25.1.dev4
3
+ Version: 3.25.1.dev6
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.25.1.dev4' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
8
+ __version__ = '3.25.1.dev6' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
@@ -269,21 +269,18 @@ class Codex(IDE):
269
269
  )
270
270
 
271
271
  def build_hook_response(self, decision: HookDecision) -> dict:
272
- # Codex accepts the same hook response shapes as Claude Code:
273
- # - PROMPT: empty for allow, {"decision": "block", "reason": ...} for deny
274
- # - PreToolUse: hookSpecificOutput.permissionDecision
272
+ # Codex hook response shapes:
273
+ # - allow: empty (no objection). Older Codex runtimes reject an explicit
274
+ # PreToolUse permissionDecision "allow" as unsupported and report a
275
+ # failed hook on every call, so never send it.
276
+ # - PROMPT deny: {"decision": "block", "reason": ...}
277
+ # - PreToolUse deny: hookSpecificOutput.permissionDecision
278
+ if decision.action == DecisionAction.ALLOW:
279
+ return {}
280
+
275
281
  if decision.event_type == AiHookEventType.PROMPT:
276
- if decision.action == DecisionAction.ALLOW:
277
- return {}
278
282
  return {'decision': 'block', 'reason': decision.user_message or ''}
279
283
 
280
- if decision.action == DecisionAction.ALLOW:
281
- return {
282
- 'hookSpecificOutput': {
283
- 'hookEventName': 'PreToolUse',
284
- 'permissionDecision': 'allow',
285
- }
286
- }
287
284
  return {
288
285
  'hookSpecificOutput': {
289
286
  'hookEventName': 'PreToolUse',
@@ -10,10 +10,9 @@ touching any handler in this module.
10
10
 
11
11
  import json
12
12
  import os
13
+ import threading
13
14
  from dataclasses import dataclass
14
- from multiprocessing.pool import ThreadPool
15
- from multiprocessing.pool import TimeoutError as PoolTimeoutError
16
- from typing import TYPE_CHECKING, Callable, NamedTuple, Optional
15
+ from typing import TYPE_CHECKING, Any, Callable, NamedTuple, Optional
17
16
 
18
17
  import typer
19
18
 
@@ -370,6 +369,13 @@ def _setup_scan_context(ctx: typer.Context) -> typer.Context:
370
369
  return ctx
371
370
 
372
371
 
372
+ def _run_scan(scan_func: Callable, documents: list[Document], scan_result: dict[str, Any]) -> None:
373
+ try:
374
+ scan_result['value'] = scan_func(documents)
375
+ except BaseException as e:
376
+ scan_result['error'] = e
377
+
378
+
373
379
  def _perform_scan(
374
380
  ctx: typer.Context, documents: list[Document], scan_parameters: dict, timeout_seconds: float
375
381
  ) -> ScanOutcome:
@@ -384,15 +390,17 @@ def _perform_scan(
384
390
  ctx, is_git_diff=False, is_commit_range=False, scan_parameters=scan_parameters
385
391
  )
386
392
 
387
- # Use ThreadPool.apply_async with timeout to abort if scan takes too long
388
- # This uses the same ThreadPool mechanism as run_parallel_batched_scan but with timeout support
389
- with ThreadPool(processes=1) as pool:
390
- result = pool.apply_async(scan_batch_thread_func, (documents,))
391
- try:
392
- _, error, local_scan_result = result.get(timeout=timeout_seconds)
393
- except PoolTimeoutError:
394
- logger.debug('Scan timed out after %s seconds', timeout_seconds)
395
- raise RuntimeError(f'Scan timed out after {timeout_seconds} seconds') from None
393
+ scan_result: dict[str, Any] = {}
394
+ scan_thread = threading.Thread(target=_run_scan, args=(scan_batch_thread_func, documents, scan_result), daemon=True)
395
+ scan_thread.start()
396
+ scan_thread.join(timeout_seconds)
397
+ if scan_thread.is_alive():
398
+ logger.debug('Scan timed out after %s seconds', timeout_seconds)
399
+ raise RuntimeError(f'Scan timed out after {timeout_seconds} seconds')
400
+ if 'error' in scan_result:
401
+ raise scan_result['error']
402
+
403
+ _, error, local_scan_result = scan_result['value']
396
404
 
397
405
  # Check if scan failed - raise exception to trigger fail_open policy
398
406
  if error:
@@ -1,5 +1,6 @@
1
1
  import types
2
2
  from abc import ABC, abstractmethod
3
+ from functools import cache
3
4
  from typing import TYPE_CHECKING, Optional
4
5
 
5
6
  _GIT_ERROR_MESSAGE = """
@@ -10,11 +11,6 @@ You can help Cycode CLI to locate the Git executable
10
11
  by setting the GIT_PYTHON_GIT_EXECUTABLE=<path/to/git> environment variable.
11
12
  """.strip().replace('\n', ' ')
12
13
 
13
- try:
14
- import git
15
- except ImportError:
16
- git = None
17
-
18
14
  if TYPE_CHECKING:
19
15
  from git import PathLike, Repo
20
16
 
@@ -23,6 +19,16 @@ class GitProxyError(Exception):
23
19
  pass
24
20
 
25
21
 
22
+ # GitPython runs `git version` on import, so it is imported on first use rather than at CLI startup
23
+ @cache
24
+ def _import_git() -> Optional[types.ModuleType]:
25
+ try:
26
+ import git
27
+ except ImportError:
28
+ return None
29
+ return git
30
+
31
+
26
32
  class _AbstractGitProxy(ABC):
27
33
  @abstractmethod
28
34
  def get_repo(self, path: Optional['PathLike'] = None, *args, **kwargs) -> 'Repo': ...
@@ -52,46 +58,54 @@ class _DummyGitProxy(_AbstractGitProxy):
52
58
 
53
59
 
54
60
  class _GitProxy(_AbstractGitProxy):
61
+ def __init__(self, git_module: types.ModuleType) -> None:
62
+ self._git = git_module
63
+
55
64
  def get_repo(self, path: Optional['PathLike'] = None, *args, **kwargs) -> 'Repo':
56
- return git.Repo(path, *args, **kwargs)
65
+ return self._git.Repo(path, *args, **kwargs)
57
66
 
58
67
  def get_null_tree(self) -> object:
59
- return git.NULL_TREE
68
+ return self._git.NULL_TREE
60
69
 
61
70
  def get_invalid_git_repository_error(self) -> type[BaseException]:
62
- return git.InvalidGitRepositoryError
71
+ return self._git.InvalidGitRepositoryError
63
72
 
64
73
  def get_git_command_error(self) -> type[BaseException]:
65
- return git.GitCommandError
74
+ return self._git.GitCommandError
66
75
 
67
76
 
68
77
  def get_git_proxy(git_module: Optional[types.ModuleType]) -> _AbstractGitProxy:
69
- return _GitProxy() if git_module else _DummyGitProxy()
78
+ return _GitProxy(git_module) if git_module else _DummyGitProxy()
70
79
 
71
80
 
72
81
  class GitProxyManager(_AbstractGitProxy):
73
82
  """We are using this manager for easy unit testing and mocking of the git module."""
74
83
 
75
84
  def __init__(self) -> None:
76
- self._git_proxy = get_git_proxy(git)
85
+ self._git_proxy: Optional[_AbstractGitProxy] = None
86
+
87
+ def _get_git_proxy(self) -> _AbstractGitProxy:
88
+ if self._git_proxy is None:
89
+ self._git_proxy = get_git_proxy(_import_git())
90
+ return self._git_proxy
77
91
 
78
92
  def _set_dummy_git_proxy(self) -> None:
79
93
  self._git_proxy = _DummyGitProxy()
80
94
 
81
95
  def _set_git_proxy(self) -> None:
82
- self._git_proxy = _GitProxy()
96
+ self._git_proxy = _GitProxy(_import_git())
83
97
 
84
98
  def get_repo(self, path: Optional['PathLike'] = None, *args, **kwargs) -> 'Repo':
85
- return self._git_proxy.get_repo(path, *args, **kwargs)
99
+ return self._get_git_proxy().get_repo(path, *args, **kwargs)
86
100
 
87
101
  def get_null_tree(self) -> object:
88
- return self._git_proxy.get_null_tree()
102
+ return self._get_git_proxy().get_null_tree()
89
103
 
90
104
  def get_invalid_git_repository_error(self) -> type[BaseException]:
91
- return self._git_proxy.get_invalid_git_repository_error()
105
+ return self._get_git_proxy().get_invalid_git_repository_error()
92
106
 
93
107
  def get_git_command_error(self) -> type[BaseException]:
94
- return self._git_proxy.get_git_command_error()
108
+ return self._get_git_proxy().get_git_command_error()
95
109
 
96
110
 
97
111
  git_proxy = GitProxyManager()
@@ -21,7 +21,7 @@ classifiers = [
21
21
  "Programming Language :: Python :: 3.14",
22
22
  ]
23
23
  dynamic = ["dependencies"]
24
- version = "3.25.1.dev4"
24
+ version = "3.25.1.dev6"
25
25
 
26
26
  [project.scripts]
27
27
  cycode = "cycode.cli.app:app"
File without changes
File without changes