cycode 3.11.5.dev2__tar.gz → 3.11.6.dev1__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.
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/PKG-INFO +1 -1
- cycode-3.11.6.dev1/cycode/__init__.py +1 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/app.py +2 -0
- cycode-3.11.6.dev1/cycode/cli/apps/activation_manager.py +46 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/auth/auth_command.py +8 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/scan_command.py +6 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/status/get_cli_status.py +5 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/user_settings/config_file_manager.py +11 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/user_settings/configuration_manager.py +6 -0
- cycode-3.11.6.dev1/cycode/cyclient/cli_activation_client.py +14 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/pyproject.toml +1 -1
- cycode-3.11.5.dev2/cycode/__init__.py +0 -1
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/LICENCE +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/README.md +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/__main__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/command_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/consts.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/ensure_auth_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/hooks_manager.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/install_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/consts.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/handlers.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/payload.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/policy.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/response_builders.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/scan_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/types.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/status_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/uninstall_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_remediation/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_remediation/ai_remediation_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_remediation/apply_fix.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_remediation/print_remediation.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/auth/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/auth/auth_common.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/auth/auth_manager.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/auth/models.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/configure/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/configure/configure_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/configure/consts.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/configure/messages.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/configure/prompts.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ignore/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ignore/ignore_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/mcp/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/mcp/mcp_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/report_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/common.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/path/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/path/path_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/repository_url/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/sbom_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/sbom_report_file.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report_import/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report_import/report_import_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report_import/sbom/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report_import/sbom/sbom_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/sca_options.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/aggregation_report.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/code_scanner.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/commit_history/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/commit_history/commit_history_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/commit_range_scanner.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/detection_excluder.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/path/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/path/path_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/pre_commit/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/pre_commit/pre_commit_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/pre_push/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/pre_push/pre_push_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/pre_receive/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/remote_url_resolver.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/repository/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/repository/repository_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/scan_ci/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/scan_ci/ci_integrations.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/scan_ci/scan_ci_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/scan_parameters.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/scan_result.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/status/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/status/models.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/status/status_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/status/version_command.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/cli_types.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/config.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/console.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/consts.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/custom_exceptions.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/handle_ai_remediation_errors.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/handle_auth_errors.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/handle_errors.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/handle_report_sbom_errors.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/handle_scan_errors.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/commit_range_documents.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/documents_walk_ignore.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/file_excluder.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/iac/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/models/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/path_documents.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/repository_documents.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/base_restore_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/go/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/go/restore_go_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/npm/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/npm/restore_deno_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/npm/restore_npm_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/npm/restore_pnpm_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/npm/restore_yarn_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/nuget/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/nuget/restore_nuget_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/php/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/php/restore_composer_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/python/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/python/restore_pipenv_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/python/restore_poetry_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/ruby/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/ruby/restore_ruby_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/sbt/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/sbt/restore_sbt_dependencies.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/sca_file_collector.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/walk_ignore.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/zip_documents.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/logger.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/main.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/models.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/console_printer.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/json_printer.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/printer_base.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/rich_printer.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/tables/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/tables/sca_table_printer.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/tables/table.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/tables/table_models.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/tables/table_printer.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/tables/table_printer_base.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/text_printer.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/utils/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/utils/code_snippet_syntax.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/utils/detection_data.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/utils/detection_ordering/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/utils/detection_ordering/common_ordering.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/utils/detection_ordering/sca_ordering.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/utils/rich_helpers.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/user_settings/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/user_settings/base_file_manager.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/user_settings/credentials_manager.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/user_settings/jwt_creator.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/binary_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/enum_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/get_api_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/git_proxy.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/ignore_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/jwt_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/path_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/progress_bar.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/scan_batch.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/scan_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/shell_executor.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/string_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/task_timer.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/url_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/version_checker.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/utils/yaml_utils.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/config.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/__init__.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/ai_security_manager_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/ai_security_manager_service_config.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/auth_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/base_token_auth_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/client_creator.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/config.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/config_dev.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/cycode_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/cycode_client_base.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/cycode_dev_based_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/cycode_oidc_based_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/cycode_token_based_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/headers.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/import_sbom_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/logger.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/models.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/report_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/scan_client.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/scan_config_base.py +0 -0
- {cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/logger.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '3.11.6.dev1' # 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)
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/ensure_auth_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/response_builders.py
RENAMED
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/scan/scan_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_guardrails/uninstall_command.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_remediation/ai_remediation_command.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/ai_remediation/print_remediation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report/sbom/repository_url/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report_import/report_import_command.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/report_import/sbom/sbom_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/pre_commit/pre_commit_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/pre_receive/pre_receive_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/apps/scan/repository/repository_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/handle_ai_remediation_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/exceptions/handle_report_sbom_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/commit_range_documents.py
RENAMED
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/documents_walk_ignore.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/iac/tf_content_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/models/in_memory_zip.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/repository_documents.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/files_collector/sca/sca_file_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cli/printers/utils/detection_ordering/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-3.11.5.dev2 → cycode-3.11.6.dev1}/cycode/cyclient/ai_security_manager_service_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|