cycode 3.11.5.dev2__tar.gz → 3.12.0__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 (205) hide show
  1. {cycode-3.11.5.dev2 → cycode-3.12.0}/PKG-INFO +1 -1
  2. cycode-3.12.0/cycode/__init__.py +1 -0
  3. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/app.py +2 -0
  4. cycode-3.12.0/cycode/cli/apps/activation_manager.py +46 -0
  5. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/auth/auth_command.py +8 -0
  6. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/scan_command.py +6 -0
  7. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/status/get_cli_status.py +5 -0
  8. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/user_settings/config_file_manager.py +11 -0
  9. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/user_settings/configuration_manager.py +6 -0
  10. cycode-3.12.0/cycode/cyclient/cli_activation_client.py +14 -0
  11. {cycode-3.11.5.dev2 → cycode-3.12.0}/pyproject.toml +1 -1
  12. cycode-3.11.5.dev2/cycode/__init__.py +0 -1
  13. {cycode-3.11.5.dev2 → cycode-3.12.0}/LICENCE +0 -0
  14. {cycode-3.11.5.dev2 → cycode-3.12.0}/README.md +0 -0
  15. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/__main__.py +0 -0
  16. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/__init__.py +0 -0
  17. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/__init__.py +0 -0
  18. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/__init__.py +0 -0
  19. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/command_utils.py +0 -0
  20. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/consts.py +0 -0
  21. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/ensure_auth_command.py +0 -0
  22. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/hooks_manager.py +0 -0
  23. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/install_command.py +0 -0
  24. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/__init__.py +0 -0
  25. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/consts.py +0 -0
  26. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/handlers.py +0 -0
  27. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/payload.py +0 -0
  28. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/policy.py +0 -0
  29. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/response_builders.py +0 -0
  30. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/scan_command.py +0 -0
  31. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/types.py +0 -0
  32. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/scan/utils.py +0 -0
  33. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/status_command.py +0 -0
  34. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_guardrails/uninstall_command.py +0 -0
  35. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_remediation/__init__.py +0 -0
  36. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_remediation/ai_remediation_command.py +0 -0
  37. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_remediation/apply_fix.py +0 -0
  38. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ai_remediation/print_remediation.py +0 -0
  39. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/auth/__init__.py +0 -0
  40. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/auth/auth_common.py +0 -0
  41. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/auth/auth_manager.py +0 -0
  42. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/auth/models.py +0 -0
  43. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/configure/__init__.py +0 -0
  44. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/configure/configure_command.py +0 -0
  45. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/configure/consts.py +0 -0
  46. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/configure/messages.py +0 -0
  47. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/configure/prompts.py +0 -0
  48. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ignore/__init__.py +0 -0
  49. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/ignore/ignore_command.py +0 -0
  50. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/mcp/__init__.py +0 -0
  51. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/mcp/mcp_command.py +0 -0
  52. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/__init__.py +0 -0
  53. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/report_command.py +0 -0
  54. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/sbom/__init__.py +0 -0
  55. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/sbom/common.py +0 -0
  56. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/sbom/path/__init__.py +0 -0
  57. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/sbom/path/path_command.py +0 -0
  58. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/sbom/repository_url/__init__.py +0 -0
  59. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py +0 -0
  60. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/sbom/sbom_command.py +0 -0
  61. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report/sbom/sbom_report_file.py +0 -0
  62. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report_import/__init__.py +0 -0
  63. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report_import/report_import_command.py +0 -0
  64. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report_import/sbom/__init__.py +0 -0
  65. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/report_import/sbom/sbom_command.py +0 -0
  66. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/sca_options.py +0 -0
  67. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/__init__.py +0 -0
  68. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/aggregation_report.py +0 -0
  69. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/code_scanner.py +0 -0
  70. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/commit_history/__init__.py +0 -0
  71. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/commit_history/commit_history_command.py +0 -0
  72. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/commit_range_scanner.py +0 -0
  73. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/detection_excluder.py +0 -0
  74. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/path/__init__.py +0 -0
  75. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/path/path_command.py +0 -0
  76. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/pre_commit/__init__.py +0 -0
  77. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +0 -0
  78. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/pre_push/__init__.py +0 -0
  79. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/pre_push/pre_push_command.py +0 -0
  80. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/pre_receive/__init__.py +0 -0
  81. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py +0 -0
  82. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/remote_url_resolver.py +0 -0
  83. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/repository/__init__.py +0 -0
  84. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/repository/repository_command.py +0 -0
  85. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/scan_ci/__init__.py +0 -0
  86. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/scan_ci/ci_integrations.py +0 -0
  87. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/scan_ci/scan_ci_command.py +0 -0
  88. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/scan_parameters.py +0 -0
  89. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/scan/scan_result.py +0 -0
  90. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/status/__init__.py +0 -0
  91. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/status/models.py +0 -0
  92. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/status/status_command.py +0 -0
  93. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/apps/status/version_command.py +0 -0
  94. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/cli_types.py +0 -0
  95. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/config.py +0 -0
  96. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/console.py +0 -0
  97. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/consts.py +0 -0
  98. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/exceptions/__init__.py +0 -0
  99. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/exceptions/custom_exceptions.py +0 -0
  100. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/exceptions/handle_ai_remediation_errors.py +0 -0
  101. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/exceptions/handle_auth_errors.py +0 -0
  102. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/exceptions/handle_errors.py +0 -0
  103. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/exceptions/handle_report_sbom_errors.py +0 -0
  104. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/exceptions/handle_scan_errors.py +0 -0
  105. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/__init__.py +0 -0
  106. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/commit_range_documents.py +0 -0
  107. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/documents_walk_ignore.py +0 -0
  108. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/file_excluder.py +0 -0
  109. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/iac/__init__.py +0 -0
  110. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
  111. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/models/__init__.py +0 -0
  112. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
  113. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/path_documents.py +0 -0
  114. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/repository_documents.py +0 -0
  115. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/__init__.py +0 -0
  116. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/base_restore_dependencies.py +0 -0
  117. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/go/__init__.py +0 -0
  118. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py +0 -0
  119. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
  120. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
  121. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
  122. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/npm/__init__.py +0 -0
  123. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/npm/restore_deno_dependencies.py +0 -0
  124. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/npm/restore_npm_dependencies.py +0 -0
  125. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/npm/restore_pnpm_dependencies.py +0 -0
  126. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/npm/restore_yarn_dependencies.py +0 -0
  127. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/nuget/__init__.py +0 -0
  128. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/nuget/restore_nuget_dependencies.py +0 -0
  129. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/php/__init__.py +0 -0
  130. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/php/restore_composer_dependencies.py +0 -0
  131. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/python/__init__.py +0 -0
  132. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/python/restore_pipenv_dependencies.py +0 -0
  133. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/python/restore_poetry_dependencies.py +0 -0
  134. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/ruby/__init__.py +0 -0
  135. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/ruby/restore_ruby_dependencies.py +0 -0
  136. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/sbt/__init__.py +0 -0
  137. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/sbt/restore_sbt_dependencies.py +0 -0
  138. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/sca/sca_file_collector.py +0 -0
  139. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/walk_ignore.py +0 -0
  140. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/files_collector/zip_documents.py +0 -0
  141. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/logger.py +0 -0
  142. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/main.py +0 -0
  143. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/models.py +0 -0
  144. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/__init__.py +0 -0
  145. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/console_printer.py +0 -0
  146. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/json_printer.py +0 -0
  147. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/printer_base.py +0 -0
  148. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/rich_printer.py +0 -0
  149. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/tables/__init__.py +0 -0
  150. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/tables/sca_table_printer.py +0 -0
  151. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/tables/table.py +0 -0
  152. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/tables/table_models.py +0 -0
  153. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/tables/table_printer.py +0 -0
  154. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/tables/table_printer_base.py +0 -0
  155. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/text_printer.py +0 -0
  156. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/utils/__init__.py +0 -0
  157. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/utils/code_snippet_syntax.py +0 -0
  158. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/utils/detection_data.py +0 -0
  159. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/utils/detection_ordering/__init__.py +0 -0
  160. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/utils/detection_ordering/common_ordering.py +0 -0
  161. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py +0 -0
  162. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/printers/utils/rich_helpers.py +0 -0
  163. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/user_settings/__init__.py +0 -0
  164. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/user_settings/base_file_manager.py +0 -0
  165. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/user_settings/credentials_manager.py +0 -0
  166. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/user_settings/jwt_creator.py +0 -0
  167. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/__init__.py +0 -0
  168. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/binary_utils.py +0 -0
  169. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/enum_utils.py +0 -0
  170. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/get_api_client.py +0 -0
  171. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/git_proxy.py +0 -0
  172. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/ignore_utils.py +0 -0
  173. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/jwt_utils.py +0 -0
  174. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/path_utils.py +0 -0
  175. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/progress_bar.py +0 -0
  176. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/scan_batch.py +0 -0
  177. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/scan_utils.py +0 -0
  178. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/shell_executor.py +0 -0
  179. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/string_utils.py +0 -0
  180. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/task_timer.py +0 -0
  181. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/url_utils.py +0 -0
  182. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/version_checker.py +0 -0
  183. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cli/utils/yaml_utils.py +0 -0
  184. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/config.py +0 -0
  185. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/__init__.py +0 -0
  186. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/ai_security_manager_client.py +0 -0
  187. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/ai_security_manager_service_config.py +0 -0
  188. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/auth_client.py +0 -0
  189. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/base_token_auth_client.py +0 -0
  190. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/client_creator.py +0 -0
  191. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/config.py +0 -0
  192. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/config_dev.py +0 -0
  193. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/cycode_client.py +0 -0
  194. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/cycode_client_base.py +0 -0
  195. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/cycode_dev_based_client.py +0 -0
  196. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/cycode_oidc_based_client.py +0 -0
  197. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/cycode_token_based_client.py +0 -0
  198. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/headers.py +0 -0
  199. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/import_sbom_client.py +0 -0
  200. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/logger.py +0 -0
  201. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/models.py +0 -0
  202. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/report_client.py +0 -0
  203. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/scan_client.py +0 -0
  204. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/cyclient/scan_config_base.py +0 -0
  205. {cycode-3.11.5.dev2 → cycode-3.12.0}/cycode/logger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cycode
3
- Version: 3.11.5.dev2
3
+ Version: 3.12.0
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.0' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
@@ -166,6 +166,8 @@ def app_callback(
166
166
  if user_agent:
167
167
  user_agent_option = UserAgentOptionScheme().loads(user_agent)
168
168
  CycodeClientBase.enrich_user_agent(user_agent_option.user_agent_suffix)
169
+ ctx.obj['plugin_app_name'] = user_agent_option.app_name
170
+ ctx.obj['plugin_app_version'] = user_agent_option.app_version
169
171
 
170
172
  if not no_update_notifier:
171
173
  ctx.call_on_close(lambda: check_latest_version_on_close(ctx))
@@ -0,0 +1,46 @@
1
+ from typing import TYPE_CHECKING, Optional
2
+
3
+ from cycode import __version__
4
+ from cycode.cli.config import configuration_manager
5
+ from cycode.cyclient.cli_activation_client import CliActivationClient
6
+ from cycode.logger import get_logger
7
+
8
+ if TYPE_CHECKING:
9
+ from cycode.cyclient.cycode_client_base import CycodeClientBase
10
+
11
+ logger = get_logger('Activation Manager')
12
+
13
+ _CLI_CLIENT_NAME = 'cli'
14
+
15
+
16
+ def _get_client_and_version(plugin_app_name: Optional[str], plugin_app_version: Optional[str]) -> tuple[str, str]:
17
+ return plugin_app_name or _CLI_CLIENT_NAME, plugin_app_version or __version__
18
+
19
+
20
+ def should_report_cli_activation(
21
+ plugin_app_name: Optional[str] = None,
22
+ plugin_app_version: Optional[str] = None,
23
+ ) -> bool:
24
+ client, version = _get_client_and_version(plugin_app_name, plugin_app_version)
25
+ return configuration_manager.get_last_reported_activation_version(client) != version
26
+
27
+
28
+ def report_cli_activation(
29
+ cycode_client: 'CycodeClientBase',
30
+ plugin_app_name: Optional[str] = None,
31
+ plugin_app_version: Optional[str] = None,
32
+ ) -> None:
33
+ """Report CLI/IDE activation to the backend if the (client, version) pair is new.
34
+
35
+ Failures are swallowed — activation tracking is non-critical.
36
+ """
37
+ try:
38
+ client, version = _get_client_and_version(plugin_app_name, plugin_app_version)
39
+
40
+ if configuration_manager.get_last_reported_activation_version(client) == version:
41
+ return
42
+
43
+ CliActivationClient(cycode_client).report_activation()
44
+ configuration_manager.update_last_reported_activation_version(client, version)
45
+ except Exception:
46
+ logger.debug('Failed to report CLI activation', exc_info=True)
@@ -1,9 +1,11 @@
1
1
  import typer
2
2
 
3
+ from cycode.cli.apps.activation_manager import report_cli_activation, should_report_cli_activation
3
4
  from cycode.cli.apps.auth.auth_manager import AuthManager
4
5
  from cycode.cli.exceptions.handle_auth_errors import handle_auth_exception
5
6
  from cycode.cli.logger import logger
6
7
  from cycode.cli.models import CliResult
8
+ from cycode.cli.utils.get_api_client import get_scan_cycode_client
7
9
 
8
10
 
9
11
  def auth_command(ctx: typer.Context) -> None:
@@ -23,6 +25,12 @@ def auth_command(ctx: typer.Context) -> None:
23
25
  auth_manager = AuthManager()
24
26
  auth_manager.authenticate()
25
27
 
28
+ plugin_app_name = ctx.obj.get('plugin_app_name')
29
+ plugin_app_version = ctx.obj.get('plugin_app_version')
30
+ if should_report_cli_activation(plugin_app_name, plugin_app_version):
31
+ scan_client = get_scan_cycode_client(ctx)
32
+ report_cli_activation(scan_client.scan_cycode_client, plugin_app_name, plugin_app_version)
33
+
26
34
  result = CliResult(success=True, message='Successfully logged into cycode')
27
35
  printer.print_result(result)
28
36
  except Exception as err:
@@ -5,6 +5,7 @@ from typing import Annotated, Optional
5
5
  import click
6
6
  import typer
7
7
 
8
+ from cycode.cli.apps.activation_manager import report_cli_activation, should_report_cli_activation
8
9
  from cycode.cli.apps.sca_options import (
9
10
  GradleAllSubProjectsOption,
10
11
  MavenSettingsFileOption,
@@ -140,6 +141,11 @@ def scan_command(
140
141
  scan_client = get_scan_cycode_client(ctx)
141
142
  ctx.obj['client'] = scan_client
142
143
 
144
+ plugin_app_name = ctx.obj.get('plugin_app_name')
145
+ plugin_app_version = ctx.obj.get('plugin_app_version')
146
+ if should_report_cli_activation(plugin_app_name, plugin_app_version):
147
+ report_cli_activation(scan_client.scan_cycode_client, plugin_app_name, plugin_app_version)
148
+
143
149
  # Get remote URL from current working directory
144
150
  remote_url = _try_get_git_remote_url(os.getcwd())
145
151
 
@@ -2,6 +2,7 @@ import platform
2
2
  from typing import TYPE_CHECKING
3
3
 
4
4
  from cycode import __version__
5
+ from cycode.cli.apps.activation_manager import report_cli_activation, should_report_cli_activation
5
6
  from cycode.cli.apps.auth.auth_common import get_authorization_info
6
7
  from cycode.cli.apps.status.models import CliStatus, CliSupportedModulesStatus
7
8
  from cycode.cli.consts import PROGRAM_NAME
@@ -22,7 +23,11 @@ def get_cli_status(ctx: 'Context') -> CliStatus:
22
23
  supported_modules_status = CliSupportedModulesStatus()
23
24
  if is_authenticated:
24
25
  try:
26
+ plugin_app_name = ctx.obj.get('plugin_app_name')
27
+ plugin_app_version = ctx.obj.get('plugin_app_version')
25
28
  client = get_scan_cycode_client(ctx)
29
+ if should_report_cli_activation(plugin_app_name, plugin_app_version):
30
+ report_cli_activation(client.scan_cycode_client, plugin_app_name, plugin_app_version)
26
31
  supported_modules_preferences = client.get_supported_modules_preferences()
27
32
 
28
33
  supported_modules_status.secret_scanning = supported_modules_preferences.secret_scanning
@@ -18,6 +18,7 @@ class ConfigFileManager(BaseFileManager):
18
18
  SCAN_SECTION_NAME: str = 'scan'
19
19
 
20
20
  INSTALLATION_ID_FIELD_NAME: str = 'installation_id'
21
+ LAST_REPORTED_ACTIVATION_VERSIONS_FIELD_NAME: str = 'last_reported_activation_versions'
21
22
  API_URL_FIELD_NAME: str = 'cycode_api_url'
22
23
  APP_URL_FIELD_NAME: str = 'cycode_app_url'
23
24
  VERBOSE_FIELD_NAME: str = 'verbose'
@@ -68,6 +69,16 @@ class ConfigFileManager(BaseFileManager):
68
69
  update_data = {self.ENVIRONMENT_SECTION_NAME: {self.INSTALLATION_ID_FIELD_NAME: installation_id}}
69
70
  self.write_content_to_file(update_data)
70
71
 
72
+ def get_last_reported_activation_versions(self) -> dict[str, str]:
73
+ value = self._get_value_from_environment_section(self.LAST_REPORTED_ACTIVATION_VERSIONS_FIELD_NAME)
74
+ return value if isinstance(value, dict) else {}
75
+
76
+ def update_last_reported_activation_version(self, client: str, version: str) -> None:
77
+ versions = self.get_last_reported_activation_versions()
78
+ versions[client] = version
79
+ update_data = {self.ENVIRONMENT_SECTION_NAME: {self.LAST_REPORTED_ACTIVATION_VERSIONS_FIELD_NAME: versions}}
80
+ self.write_content_to_file(update_data)
81
+
71
82
  def add_exclusion(self, scan_type: str, exclusion_type: str, new_exclusion: str) -> None:
72
83
  exclusions = self._get_exclusions_by_exclusion_type(scan_type, exclusion_type)
73
84
  if new_exclusion in exclusions:
@@ -94,6 +94,12 @@ class ConfigurationManager:
94
94
 
95
95
  return installation_id
96
96
 
97
+ def get_last_reported_activation_version(self, client: str) -> Optional[str]:
98
+ return self.global_config_file_manager.get_last_reported_activation_versions().get(client)
99
+
100
+ def update_last_reported_activation_version(self, client: str, version: str) -> None:
101
+ self.global_config_file_manager.update_last_reported_activation_version(client, version)
102
+
97
103
  def get_config_file_manager(self, scope: Optional[str] = None) -> ConfigFileManager:
98
104
  if scope == 'local':
99
105
  return self.local_config_file_manager
@@ -0,0 +1,14 @@
1
+ from typing import TYPE_CHECKING
2
+
3
+ if TYPE_CHECKING:
4
+ from cycode.cyclient.cycode_client_base import CycodeClientBase
5
+
6
+ _CLI_ACTIVATION_PATH = 'scans/api/v4/cli-activation'
7
+
8
+
9
+ class CliActivationClient:
10
+ def __init__(self, cycode_client: 'CycodeClientBase') -> None:
11
+ self._cycode_client = cycode_client
12
+
13
+ def report_activation(self) -> None:
14
+ self._cycode_client.put(url_path=_CLI_ACTIVATION_PATH)
@@ -21,7 +21,7 @@ classifiers = [
21
21
  "Programming Language :: Python :: 3.14",
22
22
  ]
23
23
  dynamic = ["dependencies"]
24
- version = "3.11.5.dev2"
24
+ version = "3.12.0"
25
25
 
26
26
  [project.scripts]
27
27
  cycode = "cycode.cli.app:app"
@@ -1 +0,0 @@
1
- __version__ = '3.11.5.dev2' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes