apisec-code-bolt 0.1.9__tar.gz → 0.1.10__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 (362) hide show
  1. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/PKG-INFO +65 -5
  2. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/README.md +60 -3
  3. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/pyproject.toml +10 -2
  4. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/analyzer.py +489 -44
  5. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/binding_tracker.py +25 -0
  6. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/boundary_detection.py +809 -0
  7. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/call_graph.py +94 -2
  8. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/call_resolver.py +14 -2
  9. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/config_scanner.py +781 -0
  10. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/data_flow.py +27 -11
  11. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/dependency_extractor.py +3539 -0
  12. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/integration_detector.py +95 -20
  13. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/js_gradle_locks.py +277 -0
  14. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/literal_scanner.py +579 -0
  15. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/manifest_partitioner.py +493 -0
  16. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/secret_patterns.py +404 -0
  17. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/secrets_policy.py +246 -0
  18. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/surface_enrichment.py +2 -1
  19. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/template_scanner.py +831 -0
  20. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/tree_resolver.py +195 -0
  21. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/url_prefix_resolver.py +343 -33
  22. apisec_code_bolt-0.1.10/src/apisec_code_bolt/analysis/version_resolver.py +356 -0
  23. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/cli/main.py +490 -134
  24. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/cloud/apisec_client.py +40 -12
  25. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/cloud/client.py +10 -10
  26. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/config.py +64 -7
  27. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/discovery.py +1 -0
  28. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/log_format.py +15 -1
  29. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/manifest.py +110 -1
  30. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/state.py +25 -9
  31. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/types.py +8 -0
  32. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/base.py +6 -0
  33. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/aspnet_plugin.py +278 -0
  34. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/dotnet/taint_scanner.py +1470 -0
  35. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/webforms_plugin.py +137 -13
  36. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/java/__init__.py +2 -1
  37. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/java/jaxrs_plugin.py +51 -3
  38. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/java/servlet_plugin.py +220 -0
  39. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/java/taint_scanner.py +2334 -0
  40. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/js/__init__.py +2 -1
  41. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/js/express_plugin.py +20 -2
  42. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/js/fastify_plugin.py +56 -2
  43. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/js/koa_plugin.py +283 -0
  44. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/js/taint_scanner.py +1562 -0
  45. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/django_plugin.py +76 -30
  46. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/fastapi/plugin.py +74 -10
  47. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/python/flask_plugin.py +748 -0
  48. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/python/taint_scanner.py +1445 -0
  49. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/ruby/__init__.py +24 -0
  50. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/ruby/action_cable_plugin.py +152 -0
  51. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/ruby/hanami_plugin.py +254 -0
  52. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/ruby/padrino_plugin.py +114 -0
  53. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/ruby/rails_plugin.py +121 -73
  54. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/ruby/roda_plugin.py +260 -0
  55. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/ruby/sidekiq_plugin.py +208 -0
  56. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/ruby/sinatra_plugin.py +22 -3
  57. apisec_code_bolt-0.1.10/src/apisec_code_bolt/frameworks/ruby/taint_scanner.py +2580 -0
  58. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/js/parser.py +61 -6
  59. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/cross_file_resolver.py +54 -2
  60. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/parameter_analyzer.py +52 -0
  61. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/router_registry.py +178 -20
  62. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/visitors.py +16 -0
  63. apisec_code_bolt-0.1.10/src/apisec_code_bolt/parsing/ruby/language_services.py +807 -0
  64. apisec_code_bolt-0.1.10/src/apisec_code_bolt/pkgindex/__init__.py +15 -0
  65. apisec_code_bolt-0.1.10/src/apisec_code_bolt/pkgindex/indexer.py +299 -0
  66. apisec_code_bolt-0.1.10/src/apisec_code_bolt/pkgindex/metadata.py +333 -0
  67. apisec_code_bolt-0.1.10/src/apisec_code_bolt/pkgindex/module_graph.py +291 -0
  68. apisec_code_bolt-0.1.10/src/apisec_code_bolt/pkgindex/package_source.py +447 -0
  69. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/query/executor.py +28 -12
  70. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/9.2.0/checksums/checksums.lock +0 -0
  71. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/9.2.0/checksums/md5-checksums.bin +0 -0
  72. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/9.2.0/checksums/sha1-checksums.bin +0 -0
  73. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  74. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  75. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  76. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  77. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/buildOutputCleanup/cache.properties +2 -0
  78. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/vcs-1/gc.properties +0 -0
  79. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/cyclonedx-agg-all.json +579 -0
  80. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/cyclonedx-agg-runtime.json +446 -0
  81. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/cyclonedx-bom-all.json +477 -0
  82. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/cyclonedx-bom-runtime.json +338 -0
  83. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/package-lock-v1.json +37 -0
  84. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/package-lock.json +52 -0
  85. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/packages.lock.json +46 -0
  86. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/pnpm-lock-v5.yaml +25 -0
  87. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/pnpm-lock-v6.yaml +39 -0
  88. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/pnpm-lock.yaml +35 -0
  89. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/yarn-berry.lock +31 -0
  90. apisec_code_bolt-0.1.10/tests/fixtures/dep_files/yarn.lock +25 -0
  91. apisec_code_bolt-0.1.10/tests/fixtures/sample_django_cbv_module_alias/urls.py +7 -0
  92. apisec_code_bolt-0.1.10/tests/fixtures/sample_django_cbv_module_alias/views.py +19 -0
  93. apisec_code_bolt-0.1.10/tests/fixtures/sample_flask_auth/app.py +64 -0
  94. apisec_code_bolt-0.1.10/tests/fixtures/sample_monorepo/apps/service-a/app.py +11 -0
  95. apisec_code_bolt-0.1.10/tests/fixtures/sample_monorepo/apps/service-a/pyproject.toml +6 -0
  96. apisec_code_bolt-0.1.10/tests/fixtures/sample_monorepo/apps/service-b/app.py +11 -0
  97. apisec_code_bolt-0.1.10/tests/fixtures/sample_monorepo/apps/service-b/pyproject.toml +6 -0
  98. apisec_code_bolt-0.1.10/tests/fixtures/sample_monorepo/shared_util.py +7 -0
  99. apisec_code_bolt-0.1.10/tests/fixtures/sample_polyglot_monorepo/services/api-js/index.js +14 -0
  100. apisec_code_bolt-0.1.10/tests/fixtures/sample_polyglot_monorepo/services/api-js/package.json +7 -0
  101. apisec_code_bolt-0.1.10/tests/fixtures/sample_polyglot_monorepo/services/api-py/main.py +26 -0
  102. apisec_code_bolt-0.1.10/tests/fixtures/sample_polyglot_monorepo/services/api-py/pyproject.toml +4 -0
  103. apisec_code_bolt-0.1.10/tests/fixtures/sample_spring_boot/apisec-code-bolt/state.yaml +1 -0
  104. apisec_code_bolt-0.1.10/tests/fixtures/vulnerable_app/target/classes/com/demo/DemoController.class +0 -0
  105. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/test_cli.py +53 -0
  106. apisec_code_bolt-0.1.10/tests/integration/test_django_cbv_decorator_auth.py +51 -0
  107. apisec_code_bolt-0.1.10/tests/integration/test_erb_template_data_flows.py +81 -0
  108. apisec_code_bolt-0.1.10/tests/integration/test_flask_auth_integration.py +74 -0
  109. apisec_code_bolt-0.1.10/tests/integration/test_jsx_tsx_manifest.py +66 -0
  110. apisec_code_bolt-0.1.10/tests/integration/test_monorepo_partitioning.py +71 -0
  111. apisec_code_bolt-0.1.10/tests/integration/test_monorepo_regression.py +76 -0
  112. apisec_code_bolt-0.1.10/tests/integration/test_polyglot_monorepo_auth_boundary.py +270 -0
  113. apisec_code_bolt-0.1.10/tests/integration/test_polyglot_python_prefix_maps.py +151 -0
  114. apisec_code_bolt-0.1.10/tests/integration/test_regression_flask_auth_and_deps.py +210 -0
  115. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/test_spring_boot_analysis.py +8 -2
  116. apisec_code_bolt-0.1.10/tests/test_query/__init__.py +0 -0
  117. apisec_code_bolt-0.1.10/tests/test_query/test_executor_connected.py +122 -0
  118. apisec_code_bolt-0.1.10/tests/unit/conftest.py +9 -0
  119. apisec_code_bolt-0.1.10/tests/unit/test_apisec_client_enrich.py +80 -0
  120. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_aspnet_plugin.py +199 -0
  121. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_benchmark_run.py +40 -0
  122. apisec_code_bolt-0.1.10/tests/unit/test_boundary_detection.py +594 -0
  123. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_call_graph.py +141 -0
  124. apisec_code_bolt-0.1.10/tests/unit/test_config_scanner_secret_values.py +467 -0
  125. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_cross_file_resolver.py +91 -0
  126. apisec_code_bolt-0.1.10/tests/unit/test_csharp_taint_scanner.py +1253 -0
  127. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_data_flow.py +93 -0
  128. apisec_code_bolt-0.1.10/tests/unit/test_dependency_parsing.py +3271 -0
  129. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_django_plugin.py +78 -2
  130. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_express_nestjs_plugin.py +68 -3
  131. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_fastapi_plugin.py +164 -0
  132. apisec_code_bolt-0.1.10/tests/unit/test_fastify_passport_auth.py +159 -0
  133. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_fastify_plugin.py +20 -2
  134. apisec_code_bolt-0.1.10/tests/unit/test_flask_auth_and_deps.py +451 -0
  135. apisec_code_bolt-0.1.10/tests/unit/test_flask_blueprint_prefix.py +420 -0
  136. apisec_code_bolt-0.1.10/tests/unit/test_flask_params.py +119 -0
  137. apisec_code_bolt-0.1.10/tests/unit/test_flask_surface_kind.py +97 -0
  138. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_integration_detection.py +35 -0
  139. apisec_code_bolt-0.1.10/tests/unit/test_java_taint_scanner.py +860 -0
  140. apisec_code_bolt-0.1.10/tests/unit/test_jaxrs_secured_auth.py +287 -0
  141. apisec_code_bolt-0.1.10/tests/unit/test_js_gradle_locks.py +300 -0
  142. apisec_code_bolt-0.1.10/tests/unit/test_js_parser.py +109 -0
  143. apisec_code_bolt-0.1.10/tests/unit/test_js_taint_scanner.py +1237 -0
  144. apisec_code_bolt-0.1.10/tests/unit/test_koa_plugin.py +211 -0
  145. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_legacy_aspnet_plugin.py +59 -0
  146. apisec_code_bolt-0.1.10/tests/unit/test_manifest_partitioner.py +555 -0
  147. apisec_code_bolt-0.1.10/tests/unit/test_monorepo_upload_cli.py +507 -0
  148. apisec_code_bolt-0.1.10/tests/unit/test_origin_type_contract.py +74 -0
  149. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_parameter_analyzer.py +75 -0
  150. apisec_code_bolt-0.1.10/tests/unit/test_pkgindex.py +1399 -0
  151. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_python_parser.py +42 -0
  152. apisec_code_bolt-0.1.10/tests/unit/test_python_taint_scanner.py +1481 -0
  153. apisec_code_bolt-0.1.10/tests/unit/test_rails_plugin.py +5231 -0
  154. apisec_code_bolt-0.1.10/tests/unit/test_router_registry.py +1069 -0
  155. apisec_code_bolt-0.1.10/tests/unit/test_ruby_language_services.py +590 -0
  156. apisec_code_bolt-0.1.10/tests/unit/test_ruby_p6_plugins.py +503 -0
  157. apisec_code_bolt-0.1.10/tests/unit/test_secret_detection_coverage.py +342 -0
  158. apisec_code_bolt-0.1.10/tests/unit/test_secret_value_presentation.py +209 -0
  159. apisec_code_bolt-0.1.10/tests/unit/test_secrets_policy.py +316 -0
  160. apisec_code_bolt-0.1.10/tests/unit/test_servlet_plugin.py +297 -0
  161. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_surface_extraction_client.py +11 -0
  162. apisec_code_bolt-0.1.10/tests/unit/test_template_scanner.py +714 -0
  163. apisec_code_bolt-0.1.10/tests/unit/test_tree_resolver.py +187 -0
  164. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_upload_verify_timeout.py +39 -6
  165. apisec_code_bolt-0.1.10/tests/unit/test_url_prefix_resolver.py +199 -0
  166. apisec_code_bolt-0.1.10/tests/unit/test_version_resolver.py +182 -0
  167. apisec_code_bolt-0.1.10/tests/unit/test_webforms_plugin.py +345 -0
  168. apisec_code_bolt-0.1.9/src/apisec_code_bolt/analysis/config_scanner.py +0 -363
  169. apisec_code_bolt-0.1.9/src/apisec_code_bolt/analysis/dependency_extractor.py +0 -1278
  170. apisec_code_bolt-0.1.9/src/apisec_code_bolt/analysis/literal_scanner.py +0 -300
  171. apisec_code_bolt-0.1.9/src/apisec_code_bolt/frameworks/python/flask_plugin.py +0 -230
  172. apisec_code_bolt-0.1.9/src/apisec_code_bolt/frameworks/ruby/__init__.py +0 -8
  173. apisec_code_bolt-0.1.9/src/apisec_code_bolt/frameworks/ruby/taint_scanner.py +0 -840
  174. apisec_code_bolt-0.1.9/src/apisec_code_bolt/parsing/ruby/language_services.py +0 -101
  175. apisec_code_bolt-0.1.9/tests/unit/test_dependency_parsing.py +0 -885
  176. apisec_code_bolt-0.1.9/tests/unit/test_rails_plugin.py +0 -1319
  177. apisec_code_bolt-0.1.9/tests/unit/test_router_registry.py +0 -566
  178. apisec_code_bolt-0.1.9/tests/unit/test_webforms_plugin.py +0 -83
  179. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/.gitignore +0 -0
  180. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/__init__.py +0 -0
  181. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/__main__.py +0 -0
  182. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/__init__.py +0 -0
  183. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/call_graph_types.py +0 -0
  184. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/capability_tagger.py +0 -0
  185. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/flow_analysis.py +0 -0
  186. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/hof_catalog.py +0 -0
  187. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/path_normalizer.py +0 -0
  188. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/read_site_detector.py +0 -0
  189. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/request_patterns.py +0 -0
  190. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/sensitivity_classifier.py +0 -0
  191. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/analysis/sink_evidence.py +0 -0
  192. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/cli/__init__.py +0 -0
  193. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/cli/exit_codes.py +0 -0
  194. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/cloud/__init__.py +0 -0
  195. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/__init__.py +0 -0
  196. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/credentials.py +0 -0
  197. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/repo.py +0 -0
  198. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/core/telemetry.py +0 -0
  199. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/fingerprinting/__init__.py +0 -0
  200. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/__init__.py +0 -0
  201. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/_graphql_common.py +0 -0
  202. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/_jwt_common.py +0 -0
  203. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/auth_helpers.py +0 -0
  204. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/__init__.py +0 -0
  205. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/_path_helpers.py +0 -0
  206. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/grpc_plugin.py +0 -0
  207. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/jwt_config_extractor.py +0 -0
  208. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/legacy_aspnet_plugin.py +0 -0
  209. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/refit_plugin.py +0 -0
  210. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/dotnet/wcf_plugin.py +0 -0
  211. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/java/_annotations.py +0 -0
  212. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/java/_constraints.py +0 -0
  213. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/java/graphql_plugin.py +0 -0
  214. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/java/jwt_config_extractor.py +0 -0
  215. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/java/micronaut_plugin.py +0 -0
  216. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/java/spring_plugin.py +0 -0
  217. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/js/_route_helpers.py +0 -0
  218. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/js/graphql_plugin.py +0 -0
  219. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/js/nestjs_plugin.py +0 -0
  220. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/__init__.py +0 -0
  221. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/celery_plugin.py +0 -0
  222. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/click_plugin.py +0 -0
  223. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/fastapi/__init__.py +0 -0
  224. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/graphql_plugin.py +0 -0
  225. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/prefect_plugin.py +0 -0
  226. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/python/webhook_plugin.py +0 -0
  227. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/ruby/_ts_helpers.py +0 -0
  228. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/ruby/grape_plugin.py +0 -0
  229. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/frameworks/ruby/graphql_plugin.py +0 -0
  230. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/__init__.py +0 -0
  231. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/base.py +0 -0
  232. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/csharp/__init__.py +0 -0
  233. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/csharp/language_services.py +0 -0
  234. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/csharp/literals.py +0 -0
  235. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/csharp/parser.py +0 -0
  236. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/csharp/type_resolver.py +0 -0
  237. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/js/__init__.py +0 -0
  238. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/js/language_services.py +0 -0
  239. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/jvm/__init__.py +0 -0
  240. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/jvm/language_services.py +0 -0
  241. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/jvm/parser.py +0 -0
  242. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/jvm/type_resolver.py +0 -0
  243. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/__init__.py +0 -0
  244. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/cbv_extractor.py +0 -0
  245. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/constant_resolver.py +0 -0
  246. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/dynamic_route_detector.py +0 -0
  247. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/expression_utils.py +0 -0
  248. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/extraction_types.py +0 -0
  249. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/language_services.py +0 -0
  250. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/parser.py +0 -0
  251. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/path_resolver.py +0 -0
  252. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/python/type_resolver.py +0 -0
  253. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/ruby/__init__.py +0 -0
  254. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/ruby/parser.py +0 -0
  255. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/parsing/services.py +0 -0
  256. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/query/__init__.py +0 -0
  257. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/query/ast_cache.py +0 -0
  258. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/query/handlers.py +0 -0
  259. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/src/apisec_code_bolt/query/manifest_context.py +0 -0
  260. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/conftest.py +0 -0
  261. /apisec_code_bolt-0.1.9/tests/test_query/__init__.py → /apisec_code_bolt-0.1.10/tests/fixtures/dep_files/.gradle/9.2.0/gc.properties +0 -0
  262. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/Cargo.toml +0 -0
  263. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/Gemfile.lock +0 -0
  264. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/Pipfile +0 -0
  265. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/build.gradle +0 -0
  266. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/build.gradle.kts +0 -0
  267. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/go.mod +0 -0
  268. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/package.json +0 -0
  269. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/pom.xml +0 -0
  270. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/pyproject_pep621.toml +0 -0
  271. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/pyproject_poetry.toml +0 -0
  272. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/requirements-dev.txt +0 -0
  273. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/requirements.txt +0 -0
  274. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/setup.cfg +0 -0
  275. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/dep_files/setup.py +0 -0
  276. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_django/urls.py +0 -0
  277. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_django/views.py +0 -0
  278. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_express/app.ts +0 -0
  279. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_express/middleware/authenticate.ts +0 -0
  280. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_express/routes/auth.ts +0 -0
  281. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_express/routes/users.ts +0 -0
  282. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_fastapi/main.py +0 -0
  283. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_fastapi/routes/__init__.py +0 -0
  284. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_fastapi/routes/users.py +0 -0
  285. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_fastapi/services/__init__.py +0 -0
  286. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_fastapi/services/user_service.py +0 -0
  287. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_flask/app.py +0 -0
  288. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_flask_pydantic/app.py +0 -0
  289. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_grape/api.rb +0 -0
  290. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_nestjs/auth.controller.ts +0 -0
  291. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_nestjs/roles.decorator.ts +0 -0
  292. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_nestjs/roles.guard.ts +0 -0
  293. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_nestjs/users.controller.ts +0 -0
  294. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_sinatra/app.rb +0 -0
  295. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_spring_boot/src/main/java/com/example/demo/config/SecurityConfig.java +0 -0
  296. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_spring_boot/src/main/java/com/example/demo/controller/UserController.java +0 -0
  297. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_spring_boot/src/main/java/com/example/demo/model/User.java +0 -0
  298. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_spring_boot/src/main/java/com/example/demo/service/UserService.java +0 -0
  299. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/sample_spring_boot/src/main/resources/application.properties +0 -0
  300. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/VULNERABILITIES.md +0 -0
  301. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/java/com/example/vulnapi/config/SecurityConfig.java +0 -0
  302. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/java/com/example/vulnapi/controller/AdminController.java +0 -0
  303. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/java/com/example/vulnapi/controller/OrderController.java +0 -0
  304. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/java/com/example/vulnapi/controller/UserController.java +0 -0
  305. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/java/com/example/vulnapi/model/Order.java +0 -0
  306. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/java/com/example/vulnapi/model/User.java +0 -0
  307. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/java/com/example/vulnapi/service/OrderService.java +0 -0
  308. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/java/com/example/vulnapi/service/UserService.java +0 -0
  309. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vuln_spring_boot/src/main/resources/application.properties +0 -0
  310. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vulnerable_app/pom.xml +0 -0
  311. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/fixtures/vulnerable_app/src/main/java/com/demo/DemoController.java +0 -0
  312. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/__init__.py +0 -0
  313. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/test_django_analysis.py +0 -0
  314. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/test_express_analysis.py +0 -0
  315. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/test_fastapi_analysis.py +0 -0
  316. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/test_flask_analysis.py +0 -0
  317. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/test_nestjs_analysis.py +0 -0
  318. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/integration/test_vulnerable_app_reachability_guard.py +0 -0
  319. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/test_query/fixtures/sample_app.py +0 -0
  320. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/test_query/test_auth_indicator_matching.py +0 -0
  321. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/test_query/test_executor.py +0 -0
  322. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/test_query/test_handlers.py +0 -0
  323. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/test_query/test_read_site_origin_types.py +0 -0
  324. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/__init__.py +0 -0
  325. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_apisec_client.py +0 -0
  326. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_benchmark_audit.py +0 -0
  327. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_cbv_extractor.py +0 -0
  328. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_cli_console_url.py +0 -0
  329. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_config.py +0 -0
  330. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_config_scanner_framework.py +0 -0
  331. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_constant_resolver.py +0 -0
  332. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_csharp_literals.py +0 -0
  333. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_csharp_type_resolver.py +0 -0
  334. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_discovery.py +0 -0
  335. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_dynamic_routes.py +0 -0
  336. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_entry_point_interface_resolution.py +0 -0
  337. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_flow_analysis.py +0 -0
  338. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_grape_plugin.py +0 -0
  339. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_graphql_plugin.py +0 -0
  340. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_grpc_plugin.py +0 -0
  341. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_instrumentation.py +0 -0
  342. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_java_parser.py +0 -0
  343. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_jaxrs_plugin.py +0 -0
  344. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_js_graphql_plugin.py +0 -0
  345. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_jwt_config_extraction.py +0 -0
  346. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_manifest_upload_gzip.py +0 -0
  347. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_micronaut_plugin.py +0 -0
  348. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_path_resolver.py +0 -0
  349. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_pydantic_body_inference.py +0 -0
  350. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_refit_plugin.py +0 -0
  351. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_repo_canonical.py +0 -0
  352. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_ruby_graphql_plugin.py +0 -0
  353. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_sensitivity_capability.py +0 -0
  354. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_sinatra_plugin.py +0 -0
  355. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_sink_evidence.py +0 -0
  356. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_spring_plugin.py +0 -0
  357. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_static_route_catchup.py +0 -0
  358. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_surface_enrichment.py +0 -0
  359. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_telemetry.py +0 -0
  360. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_transformation_tracking.py +0 -0
  361. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_types.py +0 -0
  362. {apisec_code_bolt-0.1.9 → apisec_code_bolt-0.1.10}/tests/unit/test_wcf_plugin.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: apisec-code-bolt
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: Static analysis probe for extracting architectural metadata from codebases
5
5
  Project-URL: Homepage, https://apisec.ai
6
6
  Project-URL: Documentation, https://docs.apisec.ai/code-bolt
@@ -24,13 +24,16 @@ Requires-Dist: httpx>=0.26.0
24
24
  Requires-Dist: javalang>=0.13.0
25
25
  Requires-Dist: libcst>=1.1.0
26
26
  Requires-Dist: networkx>=3.2
27
+ Requires-Dist: packaging>=23.0
27
28
  Requires-Dist: pathspec>=0.12.0
28
29
  Requires-Dist: pydantic-settings>=2.1.0
29
30
  Requires-Dist: pydantic>=2.5.0
30
31
  Requires-Dist: pyyaml>=6.0
31
32
  Requires-Dist: rich>=13.7.0
32
33
  Requires-Dist: tree-sitter-c-sharp>=0.23
34
+ Requires-Dist: tree-sitter-java>=0.23
33
35
  Requires-Dist: tree-sitter-javascript>=0.23
36
+ Requires-Dist: tree-sitter-python>=0.23
34
37
  Requires-Dist: tree-sitter-ruby>=0.23
35
38
  Requires-Dist: tree-sitter-typescript>=0.23
36
39
  Requires-Dist: tree-sitter>=0.23
@@ -199,6 +202,7 @@ analysis:
199
202
  - "tests/**"
200
203
  - "**/migrations/**"
201
204
  max_files: 10000
205
+ detect_workspace_boundaries: true # see "Monorepo support" below
202
206
 
203
207
  data_flow:
204
208
  mode: inter_procedural
@@ -212,6 +216,59 @@ output:
212
216
  format: json
213
217
  ```
214
218
 
219
+ ## Monorepo support
220
+
221
+ When a scanned tree contains multiple independently-deployed sub-projects
222
+ (a pnpm/npm workspace, a Maven or Gradle multi-module build, a `.sln` with
223
+ several `.csproj`s, a `go.work`, or a uv/Poetry workspace — or, absent any of
224
+ those, any directory with its own recognised dependency manifest file),
225
+ `analyze` automatically detects each one as a separate boundary and uploads
226
+ its own manifest as its own Application, instead of one flat manifest mixing
227
+ every sub-project's routes, dependencies, and secrets together.
228
+
229
+ - **Activation is automatic and safe by default.** Detection only takes
230
+ effect when **2 or more** real boundaries are found; a single-project repo
231
+ is completely unaffected — same manifest, same canonical id, same
232
+ `state.yaml`. Disable it entirely with `--no-detect-monorepo` or
233
+ `detect_workspace_boundaries: false`.
234
+ - **Identity.** Each sub-project uploads under
235
+ `{repo_canonical_id}/{relative/path/to/sub-project}`; code that doesn't
236
+ belong to any detected sub-project (root-level config, CI files, a shared
237
+ library with no manifest of its own) uploads under
238
+ `{repo_canonical_id}/shared`.
239
+ - **Display name.** Each sub-project's Application is named
240
+ `{repo_name}/{relative/path/to/sub-project}` (and `{repo_name}/shared` for
241
+ the catch-all), so sibling services are distinguishable in the APIsec
242
+ console's Applications list instead of all showing up under the identical
243
+ bare repo name. A single-project repo is unaffected — same bare `repo_name`
244
+ as always.
245
+ - **Auth-middleware scoping rides on the same gate — and this one is
246
+ security-material.** A globally-registered auth middleware is attributed
247
+ only to routes inside its own boundary, so one service's middleware can no
248
+ longer mark a sibling service's routes as authenticated (which hides
249
+ genuinely-exposed endpoints). Because it is gated on the same "2 or more
250
+ boundaries" condition, a polyglot repo that presents only a **single**
251
+ boundary — e.g. one root manifest and no per-service marker file or
252
+ workspace config — falls back to the legacy path and gets repo-wide
253
+ attribution. If a repo mixes languages or services, give each one its own
254
+ dependency manifest (or declare a workspace) so boundary detection can see
255
+ them; otherwise auth attribution is repo-wide and may over-report routes as
256
+ protected.
257
+ Scoping covers every auth path that resolves by *name* rather than by file:
258
+ Spring Security filter chains, Rails `before_action` (including
259
+ `ApplicationController`-inherited callbacks), Django view classes and
260
+ decorators, and route-level auth dependencies — so two services that each
261
+ define, say, an `articles` controller no longer share each other's guards.
262
+ - **Known v1 limitations:**
263
+ - A response/request schema referenced by routes in more than one
264
+ sub-project is duplicated into each of them; only one level of nested
265
+ model references is followed.
266
+ - The `shared` partition does not get the LLM-based surface-enrichment
267
+ pass (it has no single directory to scope that scan to).
268
+ - A cross-partition reference (e.g. a route depending on an auth guard
269
+ defined in another sub-project) is preserved as-is and surfaced as a
270
+ warning in that partition's manifest, not silently dropped or rewritten.
271
+
215
272
  ## Commands
216
273
 
217
274
  Global options (before the subcommand): `--version`, `-v/--verbose`,
@@ -227,10 +284,8 @@ apisec-code-bolt analyze [PATH] [OPTIONS]
227
284
  Options:
228
285
  -o, --output FILE Save manifest to file instead of uploading
229
286
  --no-upload Skip uploading to cloud (implies --output if not set)
230
- --cloud-url TEXT Reasoning engine URL (legacy direct connection, local dev)
231
287
  --api-key TEXT Override stored API key
232
- --api-url TEXT Override stored API URL
233
- --reasoning-url TEXT Reasoning engine URL (if different from API URL)
288
+ --api-url TEXT Applicationsservice base URL (all analysis traffic is proxied here)
234
289
  --format [json|yaml] Output format
235
290
  --config FILE Path to configuration file
236
291
  --frameworks TEXT Comma-separated framework hints
@@ -239,6 +294,10 @@ Options:
239
294
  --timeout INTEGER Analysis timeout in seconds
240
295
  --dry-run Analyze and print a summary; write/upload nothing
241
296
  --stdout Write manifest JSON to stdout (for pipelines)
297
+ --detect-monorepo / --no-detect-monorepo
298
+ Detect monorepo sub-project boundaries and upload one
299
+ Application per sub-project (default: on; see
300
+ "Monorepo support" below)
242
301
  ```
243
302
 
244
303
  ### auth
@@ -403,3 +462,4 @@ apisec-code-bolt is designed with privacy as a core principle:
403
462
  ## License
404
463
 
405
464
  Proprietary. Copyright © APIsec.
465
+
@@ -152,6 +152,7 @@ analysis:
152
152
  - "tests/**"
153
153
  - "**/migrations/**"
154
154
  max_files: 10000
155
+ detect_workspace_boundaries: true # see "Monorepo support" below
155
156
 
156
157
  data_flow:
157
158
  mode: inter_procedural
@@ -165,6 +166,59 @@ output:
165
166
  format: json
166
167
  ```
167
168
 
169
+ ## Monorepo support
170
+
171
+ When a scanned tree contains multiple independently-deployed sub-projects
172
+ (a pnpm/npm workspace, a Maven or Gradle multi-module build, a `.sln` with
173
+ several `.csproj`s, a `go.work`, or a uv/Poetry workspace — or, absent any of
174
+ those, any directory with its own recognised dependency manifest file),
175
+ `analyze` automatically detects each one as a separate boundary and uploads
176
+ its own manifest as its own Application, instead of one flat manifest mixing
177
+ every sub-project's routes, dependencies, and secrets together.
178
+
179
+ - **Activation is automatic and safe by default.** Detection only takes
180
+ effect when **2 or more** real boundaries are found; a single-project repo
181
+ is completely unaffected — same manifest, same canonical id, same
182
+ `state.yaml`. Disable it entirely with `--no-detect-monorepo` or
183
+ `detect_workspace_boundaries: false`.
184
+ - **Identity.** Each sub-project uploads under
185
+ `{repo_canonical_id}/{relative/path/to/sub-project}`; code that doesn't
186
+ belong to any detected sub-project (root-level config, CI files, a shared
187
+ library with no manifest of its own) uploads under
188
+ `{repo_canonical_id}/shared`.
189
+ - **Display name.** Each sub-project's Application is named
190
+ `{repo_name}/{relative/path/to/sub-project}` (and `{repo_name}/shared` for
191
+ the catch-all), so sibling services are distinguishable in the APIsec
192
+ console's Applications list instead of all showing up under the identical
193
+ bare repo name. A single-project repo is unaffected — same bare `repo_name`
194
+ as always.
195
+ - **Auth-middleware scoping rides on the same gate — and this one is
196
+ security-material.** A globally-registered auth middleware is attributed
197
+ only to routes inside its own boundary, so one service's middleware can no
198
+ longer mark a sibling service's routes as authenticated (which hides
199
+ genuinely-exposed endpoints). Because it is gated on the same "2 or more
200
+ boundaries" condition, a polyglot repo that presents only a **single**
201
+ boundary — e.g. one root manifest and no per-service marker file or
202
+ workspace config — falls back to the legacy path and gets repo-wide
203
+ attribution. If a repo mixes languages or services, give each one its own
204
+ dependency manifest (or declare a workspace) so boundary detection can see
205
+ them; otherwise auth attribution is repo-wide and may over-report routes as
206
+ protected.
207
+ Scoping covers every auth path that resolves by *name* rather than by file:
208
+ Spring Security filter chains, Rails `before_action` (including
209
+ `ApplicationController`-inherited callbacks), Django view classes and
210
+ decorators, and route-level auth dependencies — so two services that each
211
+ define, say, an `articles` controller no longer share each other's guards.
212
+ - **Known v1 limitations:**
213
+ - A response/request schema referenced by routes in more than one
214
+ sub-project is duplicated into each of them; only one level of nested
215
+ model references is followed.
216
+ - The `shared` partition does not get the LLM-based surface-enrichment
217
+ pass (it has no single directory to scope that scan to).
218
+ - A cross-partition reference (e.g. a route depending on an auth guard
219
+ defined in another sub-project) is preserved as-is and surfaced as a
220
+ warning in that partition's manifest, not silently dropped or rewritten.
221
+
168
222
  ## Commands
169
223
 
170
224
  Global options (before the subcommand): `--version`, `-v/--verbose`,
@@ -180,10 +234,8 @@ apisec-code-bolt analyze [PATH] [OPTIONS]
180
234
  Options:
181
235
  -o, --output FILE Save manifest to file instead of uploading
182
236
  --no-upload Skip uploading to cloud (implies --output if not set)
183
- --cloud-url TEXT Reasoning engine URL (legacy direct connection, local dev)
184
237
  --api-key TEXT Override stored API key
185
- --api-url TEXT Override stored API URL
186
- --reasoning-url TEXT Reasoning engine URL (if different from API URL)
238
+ --api-url TEXT Applicationsservice base URL (all analysis traffic is proxied here)
187
239
  --format [json|yaml] Output format
188
240
  --config FILE Path to configuration file
189
241
  --frameworks TEXT Comma-separated framework hints
@@ -192,6 +244,10 @@ Options:
192
244
  --timeout INTEGER Analysis timeout in seconds
193
245
  --dry-run Analyze and print a summary; write/upload nothing
194
246
  --stdout Write manifest JSON to stdout (for pipelines)
247
+ --detect-monorepo / --no-detect-monorepo
248
+ Detect monorepo sub-project boundaries and upload one
249
+ Application per sub-project (default: on; see
250
+ "Monorepo support" below)
195
251
  ```
196
252
 
197
253
  ### auth
@@ -356,3 +412,4 @@ apisec-code-bolt is designed with privacy as a core principle:
356
412
  ## License
357
413
 
358
414
  Proprietary. Copyright © APIsec.
415
+
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "apisec-code-bolt"
7
- version = "0.1.9"
7
+ version = "0.1.10"
8
8
  description = "Static analysis probe for extracting architectural metadata from codebases"
9
9
  readme = "README.md"
10
10
  license = {text = "Proprietary"}
@@ -44,9 +44,17 @@ dependencies = [
44
44
  # Ruby parsing
45
45
  "tree-sitter-ruby>=0.23", # Ruby grammar for tree-sitter
46
46
 
47
+ # Python taint analysis
48
+ "tree-sitter-python>=0.23", # Python grammar for tree-sitter
49
+ "tree-sitter-java>=0.23", # Java grammar for tree-sitter
50
+
47
51
  # Graph operations
48
52
  "networkx>=3.2", # Call graph, data flow graphs
49
-
53
+
54
+ # Dependency version/marker parsing (tree_resolver, version_resolver, pkgindex)
55
+ "packaging>=23.0",
56
+
57
+
50
58
  # Data validation and serialization
51
59
  "pydantic>=2.5.0", # Schema validation, settings
52
60
  "pydantic-settings>=2.1.0", # Configuration from env