tensor-grep 1.45.2__tar.gz → 1.45.3__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.

Potentially problematic release.


This version of tensor-grep might be problematic. Click here for more details.

Files changed (129) hide show
  1. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/PKG-INFO +1 -1
  2. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/pyproject.toml +2 -1
  3. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/Cargo.lock +1 -1
  4. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/Cargo.toml +2 -1
  5. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/repo_map.py +38 -22
  6. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/LICENSE +0 -0
  7. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/NOTICE +0 -0
  8. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/README.md +0 -0
  9. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/deny.toml +0 -0
  10. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/rust-toolchain.toml +0 -0
  11. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/backend_ast.rs +0 -0
  12. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/backend_ast_workflow.rs +0 -0
  13. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/backend_cpu.rs +0 -0
  14. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/backend_gpu.rs +0 -0
  15. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/bin/tg_search_fast.rs +0 -0
  16. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/cli.rs +0 -0
  17. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/crossover.rs +0 -0
  18. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/editor_plane.rs +0 -0
  19. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/gpu_native.rs +0 -0
  20. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/index.rs +0 -0
  21. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/lib.rs +0 -0
  22. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/main.rs +0 -0
  23. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/mmap_arrow.rs +0 -0
  24. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/native_search.rs +0 -0
  25. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/python_sidecar.rs +0 -0
  26. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/rg_passthrough.rs +0 -0
  27. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/routing.rs +0 -0
  28. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/src/runtime_paths.rs +0 -0
  29. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_ast_backend.rs +0 -0
  30. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_ast_cache.rs +0 -0
  31. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_ast_grep_embed.rs +0 -0
  32. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_ast_rewrite.rs +0 -0
  33. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_gpu_native.rs +0 -0
  34. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_gpu_native_error_handling.rs +0 -0
  35. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_gpu_native_graphs.rs +0 -0
  36. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_gpu_native_integration.rs +0 -0
  37. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_gpu_native_long_lines.rs +0 -0
  38. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_gpu_native_streams.rs +0 -0
  39. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_index.rs +0 -0
  40. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_mmap_arrow.rs +0 -0
  41. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_native_search.rs +0 -0
  42. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_output.rs +0 -0
  43. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_public_native_cli_parity.rs +0 -0
  44. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_python_bootstrap.rs +0 -0
  45. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_release_profile.rs +0 -0
  46. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_replace.rs +0 -0
  47. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_resident_worker.rs +0 -0
  48. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_routing.rs +0 -0
  49. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_runtime_path_resolution.rs +0 -0
  50. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_schema_compat.rs +0 -0
  51. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_search.rs +0 -0
  52. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_search_golden.rs +0 -0
  53. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_sidecar_ipc.rs +0 -0
  54. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/rust_core/tests/test_smart_routing.rs +0 -0
  55. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/__init__.py +0 -0
  56. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/__main__.py +0 -0
  57. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/__init__.py +0 -0
  58. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/ast_backend.py +0 -0
  59. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/ast_wrapper_backend.py +0 -0
  60. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/base.py +0 -0
  61. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/cpu_backend.py +0 -0
  62. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/cudf_backend.py +0 -0
  63. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/cybert_backend.py +0 -0
  64. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/ripgrep_backend.py +0 -0
  65. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/rust_backend.py +0 -0
  66. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/stringzilla_backend.py +0 -0
  67. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/backends/torch_backend.py +0 -0
  68. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/__init__.py +0 -0
  69. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/_index_lock.py +0 -0
  70. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/agent_capsule.py +0 -0
  71. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/apply_policy.py +0 -0
  72. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/ast_workflows.py +0 -0
  73. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/audit_manifest.py +0 -0
  74. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/bootstrap.py +0 -0
  75. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/checkpoint_store.py +0 -0
  76. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/commands.py +0 -0
  77. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/docs_coverage.py +0 -0
  78. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/dogfood.py +0 -0
  79. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/formatters/__init__.py +0 -0
  80. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/formatters/base.py +0 -0
  81. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/formatters/csv_fmt.py +0 -0
  82. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/formatters/json_fmt.py +0 -0
  83. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/formatters/ripgrep_fmt.py +0 -0
  84. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/formatters/table_fmt.py +0 -0
  85. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/inventory.py +0 -0
  86. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/lang_go.py +0 -0
  87. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/lang_registry.py +0 -0
  88. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/lsp_external_provider.py +0 -0
  89. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/lsp_provider_setup.py +0 -0
  90. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/lsp_server.py +0 -0
  91. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/main.py +0 -0
  92. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/mcp_server.py +0 -0
  93. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/orient_capsule.py +0 -0
  94. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/progress.py +0 -0
  95. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/rg_contract.py +0 -0
  96. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/rule_packs.py +0 -0
  97. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/runtime_paths.py +0 -0
  98. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/scan_guardrails.py +0 -0
  99. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/session_daemon.py +0 -0
  100. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/session_store.py +0 -0
  101. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/cli/subprocess_policy.py +0 -0
  102. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/__init__.py +0 -0
  103. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/config.py +0 -0
  104. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/hardware/__init__.py +0 -0
  105. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/hardware/device_detect.py +0 -0
  106. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/hardware/device_inventory.py +0 -0
  107. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/hardware/memory_manager.py +0 -0
  108. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/observability.py +0 -0
  109. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/pipeline.py +0 -0
  110. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/query_analyzer.py +0 -0
  111. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/registration_check.py +0 -0
  112. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/reranker.py +0 -0
  113. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/result.py +0 -0
  114. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/retrieval_bm25.py +0 -0
  115. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/retrieval_chunker.py +0 -0
  116. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/retrieval_dense.py +0 -0
  117. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/retrieval_fusion.py +0 -0
  118. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/retrieval_lexical.py +0 -0
  119. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/retrieval_scoring.py +0 -0
  120. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/core/semantic_index.py +0 -0
  121. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/io/__init__.py +0 -0
  122. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/io/base.py +0 -0
  123. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/io/directory_scanner.py +0 -0
  124. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/io/reader_cudf.py +0 -0
  125. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/io/reader_dstorage.py +0 -0
  126. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/io/reader_fallback.py +0 -0
  127. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/io/reader_kvikio.py +0 -0
  128. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/perf_guard.py +0 -0
  129. {tensor_grep-1.45.2 → tensor_grep-1.45.3}/src/tensor_grep/sidecar.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tensor-grep
3
- Version: 1.45.2
3
+ Version: 1.45.3
4
4
  Requires-Dist: typer>=0.12,<0.26
5
5
  Requires-Dist: rich>=13.0
6
6
  Requires-Dist: mcp>=1.2.0
@@ -400,11 +400,12 @@ version_variables = [
400
400
 
401
401
 
402
402
 
403
+
403
404
 
404
405
 
405
406
  [project]
406
407
  name = "tensor-grep"
407
- version = "1.45.2"
408
+ version = "1.45.3"
408
409
  description = "High-performance grep-compatible CLI with Rust, GPU, and AST/NLP routing"
409
410
  readme = { file = "rust_core/README.md", content-type = "text/markdown" }
410
411
  requires-python = ">=3.11"
@@ -1541,7 +1541,7 @@ dependencies = [
1541
1541
 
1542
1542
  [[package]]
1543
1543
  name = "tensor_grep_rs"
1544
- version = "1.45.2"
1544
+ version = "1.45.3"
1545
1545
  dependencies = [
1546
1546
  "aho-corasick",
1547
1547
  "anyhow",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "tensor_grep_rs"
3
- version = "1.45.2"
3
+ version = "1.45.3"
4
4
  edition = "2021"
5
5
  description = "Rust core engine for tensor-grep"
6
6
  license = "Apache-2.0"
@@ -307,6 +307,7 @@ path = "src/bin/tg_search_fast.rs"
307
307
 
308
308
 
309
309
 
310
+
310
311
 
311
312
 
312
313
  [dev-dependencies]
@@ -13715,6 +13715,10 @@ def build_symbol_callers_from_map(
13715
13715
  normalized_provider = _normalize_semantic_provider(semantic_provider)
13716
13716
  external_calls: list[dict[str, Any]] = []
13717
13717
  fallback_used = False
13718
+ # Native call count captured BEFORE any lsp/hybrid merge -> the divergence signal for
13719
+ # provider_agreement (a partial LSP result must surface as diverged, not a clean lsp-only
13720
+ # proof). Mirrors build_symbol_refs_from_map's native_reference_count (H1 fix).
13721
+ native_call_count = len(calls)
13718
13722
  if normalized_provider != "native":
13719
13723
  external_refs = [
13720
13724
  dict(current)
@@ -13849,28 +13853,40 @@ def build_symbol_callers_from_map(
13849
13853
  **dict(alias_call),
13850
13854
  "provenance": f"lsp-{_language_for_path(Path(rust_file))}-fallback",
13851
13855
  })
13852
- if normalized_provider == "lsp":
13853
- calls = external_calls or calls
13854
- else:
13855
- merged_calls: dict[tuple[str, int, int], dict[str, Any]] = {}
13856
- for current_call_entry in [*external_calls, *calls]:
13857
- key = (
13858
- str(current_call_entry["file"]),
13859
- int(current_call_entry["line"]),
13860
- int(current_call_entry.get("end_line", current_call_entry["line"])),
13861
- )
13862
- if key in merged_calls:
13863
- merged_calls[key] = _merge_navigation_duplicate(
13864
- merged_calls[key],
13865
- dict(current_call_entry),
13866
- )
13867
- else:
13868
- merged_calls[key] = dict(current_call_entry)
13869
- calls = list(merged_calls.values())
13870
- calls.sort(
13871
- key=lambda item: (str(item["file"]), int(item["line"]), str(item.get("text", "")))
13856
+ # Merge (union) native + external calls for BOTH lsp and hybrid modes. A partial /
13857
+ # under-indexed LSP result must NEVER discard the correct native answer: the old
13858
+ # `calls = external_calls or calls` REPLACED the native call list with the (possibly
13859
+ # partial) LSP list in lsp mode, then native_count was recomputed from the REPLACED list
13860
+ # (=0) -> _merge_agreement_status always returned "lsp-only" + stamped lsp_proof: True,
13861
+ # silently dropping native-found call sites beyond a partial LSP index (H1: native finds
13862
+ # create_invoice() in a.py + b.py; a partial LSP index proves only a.py -> b.py is
13863
+ # silently dropped and the result stamped authoritative). Union keeps the native truth;
13864
+ # the provider_agreement + lsp_proof below are then stamped honestly (native>lsp ->
13865
+ # diverged). Mirrors build_symbol_refs_from_map's ref merge exactly.
13866
+ proof_calls = [current for current in external_calls if _is_lsp_proof_row(current)]
13867
+ merged_calls: dict[tuple[str, int, int], dict[str, Any]] = {}
13868
+ for current_call_entry in [*external_calls, *calls]:
13869
+ key = (
13870
+ str(current_call_entry["file"]),
13871
+ int(current_call_entry["line"]),
13872
+ int(current_call_entry.get("end_line", current_call_entry["line"])),
13872
13873
  )
13873
- calls = _dedupe_symbol_references(calls)
13874
+ if key in merged_calls:
13875
+ merged_calls[key] = _merge_navigation_duplicate(
13876
+ merged_calls[key],
13877
+ dict(current_call_entry),
13878
+ )
13879
+ else:
13880
+ merged_calls[key] = dict(current_call_entry)
13881
+ calls = list(merged_calls.values())
13882
+ calls.sort(
13883
+ key=lambda item: (str(item["file"]), int(item["line"]), str(item.get("text", "")))
13884
+ )
13885
+ calls = _dedupe_symbol_references(calls)
13886
+ if normalized_provider == "lsp" and len(proof_calls) < native_call_count:
13887
+ # LSP proved fewer calls than the native scan -> its index is incomplete for this
13888
+ # symbol; flag a fallback so the partial is not mis-reported as a clean lsp-only proof.
13889
+ fallback_used = True
13874
13890
 
13875
13891
  definition_locations = {
13876
13892
  (
@@ -13963,7 +13979,7 @@ def build_symbol_callers_from_map(
13963
13979
  fallback_used = True
13964
13980
  payload["provider_agreement"] = _merge_agreement_status(
13965
13981
  semantic_provider=normalized_provider,
13966
- native_count=len([current for current in calls if not _is_lsp_proof_row(current)]),
13982
+ native_count=native_call_count,
13967
13983
  lsp_count=lsp_proof_count,
13968
13984
  merged_count=len(calls),
13969
13985
  fallback_used=fallback_used,
File without changes
File without changes