coderadar-rs 0.9.2__tar.gz → 0.9.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.
Files changed (179) hide show
  1. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/Cargo.lock +1 -1
  2. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/Cargo.toml +1 -1
  3. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/PKG-INFO +1 -1
  4. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/__init__.py +1 -1
  5. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/call_graph.py +35 -4
  6. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/graphviz_viz.py +10 -9
  7. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/mermaid.py +28 -28
  8. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/pyproject.toml +1 -1
  9. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/LICENSE +0 -0
  10. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/README.md +0 -0
  11. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/Cargo.toml +0 -0
  12. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/bash.scm +0 -0
  13. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/c.scm +0 -0
  14. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/clojure.scm +0 -0
  15. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/cmake.scm +0 -0
  16. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/cpp.scm +0 -0
  17. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/csharp.scm +0 -0
  18. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/dart.scm +0 -0
  19. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/dockerfile.scm +0 -0
  20. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/elisp.scm +0 -0
  21. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/elixir.scm +0 -0
  22. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/erlang.scm +0 -0
  23. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/fsharp.scm +0 -0
  24. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/go.scm +0 -0
  25. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/graphql.scm +0 -0
  26. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/groovy.scm +0 -0
  27. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/haskell.scm +0 -0
  28. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/hcl.scm +0 -0
  29. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/java.scm +0 -0
  30. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/javascript.scm +0 -0
  31. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/julia.scm +0 -0
  32. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/kotlin.scm +0 -0
  33. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/lua.scm +0 -0
  34. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/nix.scm +0 -0
  35. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/objc.scm +0 -0
  36. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/ocaml.scm +0 -0
  37. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/perl.scm +0 -0
  38. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/php.scm +0 -0
  39. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/powershell.scm +0 -0
  40. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/protobuf.scm +0 -0
  41. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/python.scm +0 -0
  42. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/r.scm +0 -0
  43. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/ruby.scm +0 -0
  44. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/rust.scm +0 -0
  45. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/scala.scm +0 -0
  46. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/shell.scm +0 -0
  47. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/sql.scm +0 -0
  48. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/swift.scm +0 -0
  49. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/systemverilog.scm +0 -0
  50. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/typescript.scm +0 -0
  51. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/verilog.scm +0 -0
  52. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/zig.scm +0 -0
  53. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/apted.rs +0 -0
  54. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/lsh_index.rs +0 -0
  55. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/minhash.rs +0 -0
  56. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/mod.rs +0 -0
  57. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/tokens.rs +0 -0
  58. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/decorators.rs +0 -0
  59. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/docstring.rs +0 -0
  60. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/mod.rs +0 -0
  61. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/single_pass.rs +0 -0
  62. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/spans.rs +0 -0
  63. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/tagger.rs +0 -0
  64. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/walker.rs +0 -0
  65. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/fs/git.rs +0 -0
  66. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/fs/mod.rs +0 -0
  67. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/fs/watcher.rs +0 -0
  68. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/call_graph.rs +0 -0
  69. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/centrality.rs +0 -0
  70. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/cfg.rs +0 -0
  71. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/cold_start.rs +0 -0
  72. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/config.rs +0 -0
  73. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/deadcode/entry_points.rs +0 -0
  74. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/deadcode/mod.rs +0 -0
  75. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/deadcode/reachability.rs +0 -0
  76. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/embeddings.rs +0 -0
  77. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/import_graph.rs +0 -0
  78. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/indexing.rs +0 -0
  79. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/inheritance.rs +0 -0
  80. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/mod.rs +0 -0
  81. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/module_resolution.rs +0 -0
  82. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/mro.rs +0 -0
  83. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/persistence.rs +0 -0
  84. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/projection_ops.rs +0 -0
  85. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/resolve_calls.rs +0 -0
  86. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/rta_lite.rs +0 -0
  87. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/call_graph_tests.rs +0 -0
  88. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/embedding_tests.rs +0 -0
  89. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/import_graph_tests.rs +0 -0
  90. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/indexing_tests.rs +0 -0
  91. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/inheritance_tests.rs +0 -0
  92. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/mod.rs +0 -0
  93. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/mro_tests.rs +0 -0
  94. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/persistence_tests.rs +0 -0
  95. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/projection_tests.rs +0 -0
  96. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/query_compile_tests.rs +0 -0
  97. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/traversal_tests.rs +0 -0
  98. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/traversal.rs +0 -0
  99. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/lib.rs +0 -0
  100. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/mutation/edit.rs +0 -0
  101. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/mutation/indent.rs +0 -0
  102. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/mutation/mod.rs +0 -0
  103. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/mutation/write_guard.rs +0 -0
  104. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/query/exec.rs +0 -0
  105. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/query/grammar.pest +0 -0
  106. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/query/grammar.rs +0 -0
  107. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/query/mod.rs +0 -0
  108. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/cache.rs +0 -0
  109. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/import_graph.rs +0 -0
  110. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/mod.rs +0 -0
  111. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/orchestrator.rs +0 -0
  112. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/signature.rs +0 -0
  113. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/scaffold/mod.rs +0 -0
  114. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/scaffold/secrets.rs +0 -0
  115. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/scoring/mod.rs +0 -0
  116. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/const_eval.rs +0 -0
  117. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/engine.rs +0 -0
  118. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/metrics.rs +0 -0
  119. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/mod.rs +0 -0
  120. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/profile.rs +0 -0
  121. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rule.rs +0 -0
  122. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/brain_method.rs +0 -0
  123. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/data_class.rs +0 -0
  124. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/dead_branch.rs +0 -0
  125. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/dead_code.rs +0 -0
  126. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/deep_nesting.rs +0 -0
  127. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/excessive_returns.rs +0 -0
  128. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/god_class.rs +0 -0
  129. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/high_cyclomatic_complexity.rs +0 -0
  130. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/intra_dead_statements.rs +0 -0
  131. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/long_method.rs +0 -0
  132. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/long_parameter_list.rs +0 -0
  133. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/mod.rs +0 -0
  134. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/too_many_fields.rs +0 -0
  135. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/types.rs +0 -0
  136. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/storage.rs +0 -0
  137. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/types.rs +0 -0
  138. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/update/wal.rs +0 -0
  139. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/agent/__init__.py +0 -0
  140. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/agent/graphrag.py +0 -0
  141. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/cli.py +0 -0
  142. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/coldstart.py +0 -0
  143. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/config.py +0 -0
  144. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/embedding/__init__.py +0 -0
  145. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/embedding/dedup.py +0 -0
  146. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/excludes.py +0 -0
  147. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/lsp/__init__.py +0 -0
  148. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/lsp/pool.py +0 -0
  149. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/__init__.py +0 -0
  150. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/lazy.py +0 -0
  151. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/lifecycle.py +0 -0
  152. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/roots.py +0 -0
  153. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/server.py +0 -0
  154. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/startup.py +0 -0
  155. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mutation/__init__.py +0 -0
  156. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mutation/tool_router.py +0 -0
  157. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/project_state.py +0 -0
  158. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/query/__init__.py +0 -0
  159. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/query/cache.py +0 -0
  160. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/query/executor.py +0 -0
  161. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/query/planner.py +0 -0
  162. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/__init__.py +0 -0
  163. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/actix.py +0 -0
  164. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/aspnet.py +0 -0
  165. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/base.py +0 -0
  166. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/django.py +0 -0
  167. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/exports.py +0 -0
  168. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/express.py +0 -0
  169. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/fastapi.py +0 -0
  170. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/flask.py +0 -0
  171. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/go.py +0 -0
  172. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/laravel.py +0 -0
  173. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/nestjs.py +0 -0
  174. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/rails.py +0 -0
  175. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/reactrouter.py +0 -0
  176. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/resolution.py +0 -0
  177. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/springboot.py +0 -0
  178. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/vuerouter.py +0 -0
  179. {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/__init__.py +0 -0
@@ -445,7 +445,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
445
445
 
446
446
  [[package]]
447
447
  name = "core_indexer"
448
- version = "0.9.2"
448
+ version = "0.9.3"
449
449
  dependencies = [
450
450
  "crossbeam-channel",
451
451
  "dashmap",
@@ -3,6 +3,6 @@ members = ["core_indexer"]
3
3
  resolver = "2"
4
4
 
5
5
  [workspace.package]
6
- version = "0.9.2"
6
+ version = "0.9.3"
7
7
  edition = "2021"
8
8
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coderadar-rs
3
- Version: 0.9.2
3
+ Version: 0.9.3
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -19,7 +19,7 @@ from __future__ import annotations
19
19
  #: installed wheel/sdist reports its own version) and falls back to the
20
20
  #: release constant below, which MUST be kept in sync with pyproject.toml
21
21
  #: and Cargo.toml [workspace.package] on every bump.
22
- _FALLBACK_VERSION = "0.9.2"
22
+ _FALLBACK_VERSION = "0.9.3"
23
23
 
24
24
 
25
25
  def _resolve_version() -> str:
@@ -22,7 +22,16 @@ def generate_call_graph(args: list, graph: Any | None = None) -> str:
22
22
  Returns:
23
23
  Mermaid flowchart source.
24
24
  """
25
- func_name = args[0] if args else "main"
25
+ if args:
26
+ func_name = args[0]
27
+ else:
28
+ # Bare `visualize call-graph` used to assume a function named
29
+ # `main` exists; projects without one got "No call edges from
30
+ # `main`", which reads as an empty index rather than a missing
31
+ # argument. Keep `main` when it is really there, otherwise say
32
+ # what to pass (with an id from this index so it can be retried
33
+ # verbatim).
34
+ func_name = _default_entry_point(graph)
26
35
  direction = args[1] if len(args) > 1 else "out"
27
36
  max_depth = int(args[2]) if len(args) > 2 else 5
28
37
  min_confidence = float(args[3]) if len(args) > 3 else 0.7
@@ -70,9 +79,31 @@ def generate_call_graph(args: list, graph: Any | None = None) -> str:
70
79
  "No graph was provided to the call-graph renderer.")
71
80
  raise NothingToVisualize(
72
81
  f"No call edges found {'from' if direction == 'out' else 'to'} "
73
- f"`{func_name}`. Either the index is empty (run `coderadar analyze` "
74
- f"in this process first — the CLI does not yet load a stored graph) "
75
- f"or that function neither calls nor is called by anything indexed."
82
+ f"`{func_name}`. Either the index is empty (run `coderadar init` "
83
+ f"or `coderadar analyze` in the project first) or that function "
84
+ f"neither calls nor is called by anything indexed."
85
+ )
86
+
87
+
88
+ def _default_entry_point(graph: Any | None) -> str:
89
+ """The no-argument root for `visualize call-graph`."""
90
+ from . import NothingToVisualize
91
+
92
+ if graph is not None:
93
+ try:
94
+ from coderadar._core import search_entities
95
+ for cand in search_entities("main", 10):
96
+ if cand.get("name", "") == "main":
97
+ return cand.get("id", "main")
98
+ first = search_entities("", 1, "function")
99
+ hint = first[0].get("id", "?") if first else "?"
100
+ except Exception: # noqa: BLE001 - a hint is nice-to-have, not load-bearing
101
+ hint = "?"
102
+ else:
103
+ hint = "?"
104
+ raise NothingToVisualize(
105
+ "No function given and no `main` in the index — pass a function "
106
+ f"name or entity id (e.g. `{hint}`)."
76
107
  )
77
108
 
78
109
 
@@ -113,9 +113,8 @@ def _dot_dependency_graph(args: list, graph: Any | None = None) -> str:
113
113
 
114
114
  if not edges:
115
115
  raise NothingToVisualize(
116
- "No module dependencies in the index. Run `coderadar analyze` "
117
- "in this process first — the CLI does not yet load a stored "
118
- "graph."
116
+ "No module dependencies in the index. Run `coderadar init` or "
117
+ "`coderadar analyze` in the project first."
119
118
  )
120
119
 
121
120
  # Find SCCs and highlight cycles
@@ -224,8 +223,8 @@ def _dot_class_hierarchy(args: list, graph: Any | None = None) -> str:
224
223
 
225
224
  if len(lines) == 4:
226
225
  raise NothingToVisualize(
227
- "No classes in the index. Run `coderadar analyze` in this "
228
- "process first — the CLI does not yet load a stored graph."
226
+ "No classes in the index. Run `coderadar init` or "
227
+ "`coderadar analyze` in the project first."
229
228
  )
230
229
 
231
230
  lines.append("}")
@@ -304,13 +303,15 @@ def _dot_call_graph(args: list, graph: Any | None = None) -> str:
304
303
  reuses that walk so the two formats cannot disagree about the edges,
305
304
  and only the rendering differs.
306
305
  """
307
- from .call_graph import _gather_fan_in, _gather_fan_out
306
+ from .call_graph import _default_entry_point, _gather_fan_in, _gather_fan_out
308
307
 
309
308
  if graph is None:
310
309
  raise NothingToVisualize(
311
310
  "No graph was provided to the call-graph renderer.")
312
311
 
313
- func_name = args[0] if args else ""
312
+ # No arg: resolve a real `main` when the index has one, else the same
313
+ # actionable error the Mermaid renderer raises (formats must agree).
314
+ func_name = args[0] if args else _default_entry_point(graph)
314
315
  direction = args[1] if len(args) > 1 else "out"
315
316
  max_depth = int(args[2]) if len(args) > 2 else 5
316
317
 
@@ -338,8 +339,8 @@ def _dot_call_graph(args: list, graph: Any | None = None) -> str:
338
339
  raise NothingToVisualize(
339
340
  f"No call edges found {'from' if direction == 'out' else 'to'} "
340
341
  f"`{func_name}`. Either the index is empty (run `coderadar "
341
- f"analyze` in this process first) or that function neither "
342
- f"calls nor is called by anything indexed."
342
+ f"init` or `coderadar analyze` in the project first) or that "
343
+ f"function neither calls nor is called by anything indexed."
343
344
  )
344
345
 
345
346
  lines = [
@@ -92,8 +92,8 @@ def _mermaid_class_hierarchy(args: list[str],
92
92
  f"Could not read the class hierarchy: {exc}") from exc
93
93
 
94
94
  raise NothingToVisualize(
95
- "No classes in the index. Run `coderadar analyze` in this process "
96
- "first — the CLI does not yet load a stored graph."
95
+ "No classes in the index. Run `coderadar init` or "
96
+ "`coderadar analyze` in the project first."
97
97
  )
98
98
 
99
99
 
@@ -128,8 +128,8 @@ def _mermaid_call_graph(args: list[str],
128
128
 
129
129
  raise NothingToVisualize(
130
130
  "No call edges found for that entity. Either the index is empty "
131
- "(run `coderadar analyze` in this process first) or nothing indexed "
132
- "calls it and it calls nothing indexed."
131
+ "(run `coderadar init` or `coderadar analyze` in the project "
132
+ "first) or nothing indexed calls it and it calls nothing indexed."
133
133
  )
134
134
 
135
135
 
@@ -166,28 +166,28 @@ def _mermaid_dependency_graph(args: list[str],
166
166
 
167
167
  if graph:
168
168
  try:
169
- from coderadar._core import callees_of, search_entities
170
- # Get all modules
171
- modules = search_entities("module", 100)
172
- module_names = {}
173
- for m in modules:
174
- module_names[m.get("id", "")] = m.get("name", m.get("id", "?"))
175
-
176
- for mod_id in list(module_names.keys())[:50]:
177
- safe = _safe_id(mod_id)
178
- label = _truncated_label(module_names.get(mod_id, mod_id))
179
- lines.append(f" {safe}[\"{label}\"]")
180
-
181
- # Show imports from this module
182
- callees = callees_of(mod_id)
183
- for callee in callees[:5]:
184
- callee_id = callee.get("id", "")
185
- if callee_id in module_names and callee_id != mod_id:
186
- lines.append(
187
- f" {_safe_id(mod_id)} --> {_safe_id(callee_id)}"
188
- )
189
-
190
- if len(module_names) > 0:
169
+ # Same resolved module→module edges the DOT renderer draws:
170
+ # `search_entities("module")` is a *text* search for the word
171
+ # "module", so it enumerated nothing unless a module was
172
+ # literally named that; and `callees_of(module)` follows CALLS,
173
+ # not IMPORTS. The shared helper reads the importer index via a
174
+ # depth-1 `imports` traversal instead.
175
+ from .graphviz_viz import _entities_of_kind, _extract_module_edges
176
+ modules = {m.get("id", ""): m.get("name", m.get("id", "?"))
177
+ for m in _entities_of_kind("module")}
178
+ edges = _extract_module_edges(graph)
179
+ seen: set[str] = set()
180
+ for src, dst in edges:
181
+ seen.add(src)
182
+ seen.add(dst)
183
+ for mod_id in sorted(seen):
184
+ label = _truncated_label(modules.get(mod_id, mod_id))
185
+ lines.append(f" {_safe_id(mod_id)}[\"{label}\"]")
186
+ for src, dst in edges:
187
+ lines.append(
188
+ f" {_safe_id(src)} --> {_safe_id(dst)}"
189
+ )
190
+ if seen:
191
191
  return "\n".join(lines)
192
192
  except NothingToVisualize:
193
193
  raise
@@ -195,8 +195,8 @@ def _mermaid_dependency_graph(args: list[str],
195
195
  raise NothingToVisualize(f"Could not read the graph: {exc}") from exc
196
196
 
197
197
  raise NothingToVisualize(
198
- "No module dependencies in the index. Run `coderadar analyze` in "
199
- "this process first — the CLI does not yet load a stored graph."
198
+ "No module dependencies in the index. Run `coderadar init` or "
199
+ "`coderadar analyze` in the project first."
200
200
  )
201
201
 
202
202
 
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "coderadar-rs"
7
- version = "0.9.2"
7
+ version = "0.9.3"
8
8
  description = "Live semantic graph of your codebase — incremental, queryable, LLM-writable"
9
9
 
10
10
  # The architecture is defined by spec v3.3 (see specs/CodeRadar v3.3 Consolidated.md).
File without changes
File without changes