sourcecode 1.33.8__py3-none-any.whl → 1.33.9__py3-none-any.whl

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.
sourcecode/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """sourcecode — Deterministic codebase context maps for AI coding agents."""
2
2
 
3
- __version__ = "1.33.8"
3
+ __version__ = "1.33.9"
@@ -445,10 +445,15 @@ def project_endpoint_surface(cir: CanonicalRepositoryIR) -> dict:
445
445
  # Backward compat: top-level required_permission for custom annotation
446
446
  if ep.security.policy == "custom_permission":
447
447
  entry["required_permission"] = ep.security.required_permission
448
+ else:
449
+ entry["security"] = {"policy": "none_detected"}
448
450
 
449
451
  endpoints.append(entry)
450
452
 
451
- no_security_signal = sum(1 for e in endpoints if "security" not in e)
453
+ no_security_signal = sum(
454
+ 1 for e in endpoints
455
+ if e.get("security", {}).get("policy") == "none_detected"
456
+ )
452
457
  return {
453
458
  "endpoints": endpoints,
454
459
  "total": len(endpoints),
sourcecode/mcp/server.py CHANGED
@@ -524,10 +524,10 @@ def get_endpoints(repo_path: str = ".") -> dict:
524
524
 
525
525
  Maps to: sourcecode endpoints <repo_path>
526
526
  Returns: endpoints list with method, path, controller, handler fields;
527
- security dict when authorization annotations are present
528
- (policy: roles_allowed|permit_all|deny_all|authenticated|...);
527
+ security dict always present (policy: roles_allowed|permit_all|deny_all|
528
+ authenticated|...|none_detected); none_detected = no auth annotation found.
529
529
  total (int), no_security_signal (int), and security_model (str) fields.
530
- no_security_signal counts endpoints with no recognized auth annotation.
530
+ no_security_signal counts endpoints where security.policy == "none_detected".
531
531
  security_model values: "filter_based" (centralized Spring Security config —
532
532
  high no_security_signal is expected and does NOT mean endpoints are unprotected),
533
533
  "annotation_based" (per-endpoint annotations only), "mixed" (both),
@@ -3015,7 +3015,10 @@ def extract_java_endpoints(root: Path) -> "dict[str, Any]":
3015
3015
  # "no_security_signal" = no recognized security annotation at method OR class level.
3016
3016
  # Note: repos may use framework-level security (e.g. Keycloak itself) with no
3017
3017
  # per-endpoint annotations — this count reflects annotation-based coverage only.
3018
- no_security_signal = sum(1 for e in endpoints if not e.get("security"))
3018
+ no_security_signal = sum(
3019
+ 1 for e in endpoints
3020
+ if e.get("security", {}).get("policy") == "none_detected"
3021
+ )
3019
3022
 
3020
3023
  # Detect filter-based security: centralized Spring Security config class.
3021
3024
  # When present, high no_security_signal is expected — security is enforced by
@@ -3034,7 +3037,10 @@ def extract_java_endpoints(root: Path) -> "dict[str, Any]":
3034
3037
  for sym in _class_syms
3035
3038
  )
3036
3039
  )
3037
- _has_annotation_security = any(e.get("security") for e in endpoints)
3040
+ _has_annotation_security = any(
3041
+ e.get("security", {}).get("policy") != "none_detected"
3042
+ for e in endpoints
3043
+ )
3038
3044
  if _filter_based and _has_annotation_security:
3039
3045
  security_model = "mixed"
3040
3046
  elif _filter_based:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 1.33.8
3
+ Version: 1.33.9
4
4
  Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
5
5
  License-File: LICENSE
6
6
  Keywords: agents,ai,codebase,context,developer-tools,llm
@@ -39,7 +39,7 @@ Description-Content-Type: text/markdown
39
39
 
40
40
  **Persistent structural context and ultra-fast repeated analysis for AI coding agents.**
41
41
 
42
- ![Version](https://img.shields.io/badge/version-1.33.8-blue)
42
+ ![Version](https://img.shields.io/badge/version-1.33.9-blue)
43
43
  ![Python](https://img.shields.io/badge/python-3.10%2B-green)
44
44
 
45
45
  ---
@@ -1,10 +1,10 @@
1
- sourcecode/__init__.py,sha256=SJW4lMtERwmQEJhDAPILv6kOW9drUsER1GikyiTHkbw,103
1
+ sourcecode/__init__.py,sha256=YeVDeT3Zo0JoWo2z6x5w3rWDOH33C_U0jEgkwVhF1I0,103
2
2
  sourcecode/adaptive_scanner.py,sha256=XffluXKzJUXrMtjEiAOnSNPZnztdIcts17T9ouHeID0,10521
3
3
  sourcecode/architecture_analyzer.py,sha256=qh749a7ykPtGmQI1MR9y6j8TtL_jBdVYFx9YRsLqOMw,44121
4
4
  sourcecode/architecture_summary.py,sha256=z34_6v7cSwy98cof2UVciGho7SCrZ93tiqMmq5WNzRQ,20405
5
5
  sourcecode/ast_extractor.py,sha256=_btmeOJIe3t-NicF94D5ZAesa2YIJ0_QNExGnbHxGFE,50578
6
6
  sourcecode/cache.py,sha256=wAyPrXN5DqiGivnMpeEuun2xHDKfBer2_oBsh6kj_vc,30447
7
- sourcecode/canonical_ir.py,sha256=_HM3AUmKSdna9u4dCoU6rpgSA6HdF8gzOKZykIUCNGY,23277
7
+ sourcecode/canonical_ir.py,sha256=GD0rMyaHFoBjgeJPa0L4ASG2EDr-BmvV8X0GO62cUQ8,23408
8
8
  sourcecode/classifier.py,sha256=2lYoSH3vOTkXZYPU7Go2WIet1-IuNzTWVhc-ULnXtgw,8024
9
9
  sourcecode/cli.py,sha256=RWuME0JHzo8j7ltKzFs4an8S55CI63nV-DzuMO22OwQ,184549
10
10
  sourcecode/code_notes_analyzer.py,sha256=EJemNCNc9Dn-1RZYu-aNbK0ELzmsyC4s6FdHi3XyNEI,9392
@@ -35,7 +35,7 @@ sourcecode/ranking_engine.py,sha256=ZAucq_YX2KkWUuAZf4P0lhtQ_38vEFnUhuGtSZd1S0E,
35
35
  sourcecode/redactor.py,sha256=SB4hwIvg8h-hvcqKcDWaZvA-aSyn-at-BIRwa0tUv5E,3227
36
36
  sourcecode/relevance_scorer.py,sha256=MYF4FFkveAQps9SmTeTlh6ODiBz2F--_hWNeHMLtUHQ,8405
37
37
  sourcecode/repo_classifier.py,sha256=FG1vaWKdWXsWdl-S8hjVMiTqcwgaRXkDyvK4rPcOGtQ,22681
38
- sourcecode/repository_ir.py,sha256=n3QYeCC4VjgVupjTxK3cJ6T6d0xcn-GOTR18tMhT0qg,155993
38
+ sourcecode/repository_ir.py,sha256=gsPOaIqXGVBaTr1bI4xSt2BBUWSQmr5TIK_YN2uwptI,156107
39
39
  sourcecode/ris.py,sha256=vkIe_v-jjceeb0Adhn-Kw5eFXE_nIkGHflOnQYPycTk,17411
40
40
  sourcecode/runtime_classifier.py,sha256=uTAD6BDCiBLUZEDRfqk718kM4RTT_vAbfkcOI2_Xx58,18432
41
41
  sourcecode/scanner.py,sha256=WdOQ78mMzjR1NjmKTlbxdgwinnCTfAhxCVLBEFQiFHU,8899
@@ -70,7 +70,7 @@ sourcecode/mcp/__init__.py,sha256=XU4HfRGbdid8wdUA0x_4f7uKZD1z3mv_XUY_WU_T9Mw,17
70
70
  sourcecode/mcp/orchestrator.py,sha256=BMi1D6liJHI3DXiaC8yeBLLP0wXajpCP3-vnRGqrvnw,26850
71
71
  sourcecode/mcp/registry.py,sha256=9SdXkwfc89_dkYFNeSbIgO5KDSMoI5sFoIBRX2PLt14,33248
72
72
  sourcecode/mcp/runner.py,sha256=Id9L2VEsiIMfIXW8uHANHUY7o4eA_t2I3TFoPWHqY8U,2437
73
- sourcecode/mcp/server.py,sha256=Slg16vn1Knpzyvl9K7TK_HlgAooc4z8xCLvEPLWMO5Y,43031
73
+ sourcecode/mcp/server.py,sha256=f2PRhZ8ElI3A_44UIB3bpuTHB0VEqgnypkhv_SYTKsM,43066
74
74
  sourcecode/mcp/onboarding/__init__.py,sha256=sj2PWqEBmMc4zBNkomg89WtL0M6S7A9yb7_wAuSWNP4,66
75
75
  sourcecode/mcp/onboarding/applier.py,sha256=B9CneieWTpaDSDIyW3S5nrlRlBpvfqUcgi93-mm_ApQ,2135
76
76
  sourcecode/mcp/onboarding/backup.py,sha256=ihqGOR8QTX8HASRSEDyfFyXr5bkXrygPHamv4p9KTmk,1452
@@ -82,8 +82,8 @@ sourcecode/telemetry/consent.py,sha256=wLMvGNJeSSyZoNkQXpoUioY6mMv4Qdvuw7S9jAEWn
82
82
  sourcecode/telemetry/events.py,sha256=oEvvulfsv5GIDWG2174gSS6tNB95w38AIYiYeifGKlE,2294
83
83
  sourcecode/telemetry/filters.py,sha256=Asa71oRl7q3Wt_FMwuufIZJFzSYdgRNKS8LHCIyFeYE,4805
84
84
  sourcecode/telemetry/transport.py,sha256=KJeIPCPWMdmbCP3ySGs2iUlia34U6vWne2dZsUezesw,1560
85
- sourcecode-1.33.8.dist-info/METADATA,sha256=ryYYDTR9iiBIsHWNXO0arDn-Rrx0qgnX8uupPlha7Rk,16440
86
- sourcecode-1.33.8.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
87
- sourcecode-1.33.8.dist-info/entry_points.txt,sha256=ex3F9rmbXeyDIoFQHtkEqTsKSaJow8F0LrVu8XfIktQ,57
88
- sourcecode-1.33.8.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
89
- sourcecode-1.33.8.dist-info/RECORD,,
85
+ sourcecode-1.33.9.dist-info/METADATA,sha256=y4HnD_ipqBHlJGQ3VWsfi9RXQqz88mDklYU-uDJDn8c,16440
86
+ sourcecode-1.33.9.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
87
+ sourcecode-1.33.9.dist-info/entry_points.txt,sha256=ex3F9rmbXeyDIoFQHtkEqTsKSaJow8F0LrVu8XfIktQ,57
88
+ sourcecode-1.33.9.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
89
+ sourcecode-1.33.9.dist-info/RECORD,,