codecortex 0.24.1__tar.gz → 0.26.0__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.
- {codecortex-0.24.1/src/codecortex.egg-info → codecortex-0.26.0}/PKG-INFO +3 -2
- {codecortex-0.24.1 → codecortex-0.26.0}/README.md +2 -1
- {codecortex-0.24.1 → codecortex-0.26.0/src/codecortex.egg-info}/PKG-INFO +3 -2
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codecortex.egg-info/SOURCES.txt +10 -0
- codecortex-0.26.0/src/codeintel/__init__.py +1 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/__main__.py +15 -9
- codecortex-0.26.0/src/codeintel/changed_range.py +481 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/status.py +10 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/doctor.py +48 -2
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/graph_answer.py +241 -19
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/graph_backend.py +191 -25
- codecortex-0.26.0/src/codeintel/graph_changed.py +944 -0
- codecortex-0.26.0/src/codeintel/graph_confidence.py +375 -0
- codecortex-0.26.0/src/codeintel/graph_dispatch.py +1195 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/graph_edges.py +59 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/graph_ops.py +229 -53
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/graph_render.py +5 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/provider.py +4 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/providers/graph.py +146 -102
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/reindexer.py +7 -2
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/server.py +32 -9
- codecortex-0.26.0/src/codeintel/symbol_diff.py +518 -0
- codecortex-0.26.0/tests/test_backend_failure_detail.py +449 -0
- codecortex-0.26.0/tests/test_bench_graphify.py +268 -0
- codecortex-0.26.0/tests/test_changed_range.py +1352 -0
- codecortex-0.26.0/tests/test_dispatch_callers.py +1695 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_docs_trust_claims.py +13 -1
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_doctor.py +179 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_edge_confidence.py +370 -0
- codecortex-0.26.0/tests/test_edge_endpoint_cap.py +253 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_graph_failure_population.py +5 -1
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_graph_real.py +6 -2
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_reindexer.py +3 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_summary_integrity.py +78 -0
- codecortex-0.26.0/tests/test_symbol_diff.py +335 -0
- codecortex-0.24.1/src/codeintel/__init__.py +0 -1
- codecortex-0.24.1/src/codeintel/graph_confidence.py +0 -155
- {codecortex-0.24.1 → codecortex-0.26.0}/LICENSE +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/pyproject.toml +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/setup.cfg +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codecortex.egg-info/dependency_links.txt +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codecortex.egg-info/entry_points.txt +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codecortex.egg-info/requires.txt +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codecortex.egg-info/top_level.txt +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/agent_prompt.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/auth.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/c4.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/c4_check.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/c4_layers.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/cache.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/__init__.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/_common.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/c4.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/doctor.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/gen_token.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/graph.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/index.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/install.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/map.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/prompt.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/query.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/reset.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/serve.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/serve_http.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/setup.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/commands/uninstall.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/config.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/containment.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/filelock.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/gateway.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/graph_resolution.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/graph_targets.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/grapher.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/http_server.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/indexer.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/injector.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/installer.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/lang_config.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/loc.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/logconfig.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/mapper.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/metrics.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/onboarding.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/outcome.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/paths.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/per_thread.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/policy.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/progress.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/providers/__init__.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/providers/lsp.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/providers/none.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/providers/semantic.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/py.typed +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/query_ops.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/redact.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/reset.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/searcher.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/semantic_db.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/source_kind.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/term.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/verify.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/viewer/__init__.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/viewer/graph_template.html +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/src/codeintel/wire_text.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_agent_prompt.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_backend_reaper.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_background_index_failure.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_bench_corpus_typed.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_bench_gate.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_bench_oracle.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_bench_oracle_ts.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_c4.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_c4_check.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_c4_layers.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_c4_model.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_c4_output.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_cache.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_chunking.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_cli_commands.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_cli_help.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_cli_install_dry_run.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_cli_install_offer_injection.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_cold_process.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_config.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_corpus.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_could_not_ask_semantic.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_docs_ci_claims.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_docs_deadcode_withdrawal.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_e2e.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_engine_adoption.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_enterprise.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_gateway.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_graph_provider.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_graph_stdin.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_grapher.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_hard_exit.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_hardening.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_http_auth.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_http_server.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_incompleteness.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_index_failure_reason.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_index_incompleteness.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_index_progress.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_indexer_binary.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_installer.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_integration.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_lang_config.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_loc_census.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_lsp_language_coverage.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_lsp_provider.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_lsp_real.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_mapper.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_mcp_handshake.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_mcp_server.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_missing_target.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_model_dimension.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_never_raise.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_null_reason_and_ripple.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_onboarding.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_per_thread.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_query_budget.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_rbac.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_redaction_boundary.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_reindex_lock.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_rerank.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_reset.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_semantic_provider.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_source_kind.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_staleness.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_symbol_context.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_term.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_treesitter.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_uninstall.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_upgrade_path.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_verify.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_verify_call.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_version_skew.py +0 -0
- {codecortex-0.24.1 → codecortex-0.26.0}/tests/test_wire_text.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codecortex
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.26.0
|
|
4
4
|
Summary: Local-first, MCP-native code-intelligence server — graph, LSP, and semantic search behind one safe code.query tool for coding agents.
|
|
5
5
|
Author: Shammai Hamilton
|
|
6
6
|
License-Expression: MIT
|
|
@@ -247,6 +247,7 @@ It's one call: `code.query(op, target, engine="auto")`. In `auto` mode (the defa
|
|
|
247
247
|
| Project shape at a glance | `overview` | graph → lsp | modules, node/edge counts, languages |
|
|
248
248
|
| Everything about one symbol | `context` | graph + lsp | both views merged |
|
|
249
249
|
| **Impact of your uncommitted edits** | `changed` | graph | changed files → impacted symbols |
|
|
250
|
+
| **What a branch changes, and who still calls it** | `changed` with `target="main"` | graph + git | each removed / re-signed / rewritten function → callers the branch did not touch |
|
|
250
251
|
| Refactor-risk hotspots | `hotspots` | graph | highest complexity / fan-in symbols |
|
|
251
252
|
| Unreferenced (dead) code | `deadcode` | graph | **withdrawn and now retired** — a labelled corpus measured its precision at 25%; safe-nulls with `reason: "op-withdrawn"`, and no flag brings it back — [the measurement, and what to use instead](#deadcode-is-retired) |
|
|
252
253
|
|
|
@@ -539,7 +540,7 @@ Register codeintel as an MCP server (`codeintel install`) and the agent gets fou
|
|
|
539
540
|
| MCP tool | HTTP equivalent | Purpose |
|
|
540
541
|
|---|---|---|
|
|
541
542
|
| `code.query` | `POST /code/query` | The main call — search, trace, understand (the `op` table above) |
|
|
542
|
-
| `code.status` | `GET /code/status` | Per-engine `installed` / `runnable` / `repo_indexed` (plus `model_cached` for semantic), probed against the live engines a query actually hits |
|
|
543
|
+
| `code.status` | `GET /code/status` | Per-engine `installed` / `runnable` / `repo_indexed` (plus `model_cached` for semantic), probed against the live engines a query actually hits, plus `degraded`: engines that are installed but not working — see [docs/doctor.md](docs/doctor.md) |
|
|
543
544
|
| `code.doctor` | `POST /code/doctor` | Per-engine health + repo index status, with a fix for each gap |
|
|
544
545
|
| `code.map` | — | Generate/refresh `CODE_INTEL.md`, a static orientation file for hosts without MCP |
|
|
545
546
|
|
|
@@ -206,6 +206,7 @@ It's one call: `code.query(op, target, engine="auto")`. In `auto` mode (the defa
|
|
|
206
206
|
| Project shape at a glance | `overview` | graph → lsp | modules, node/edge counts, languages |
|
|
207
207
|
| Everything about one symbol | `context` | graph + lsp | both views merged |
|
|
208
208
|
| **Impact of your uncommitted edits** | `changed` | graph | changed files → impacted symbols |
|
|
209
|
+
| **What a branch changes, and who still calls it** | `changed` with `target="main"` | graph + git | each removed / re-signed / rewritten function → callers the branch did not touch |
|
|
209
210
|
| Refactor-risk hotspots | `hotspots` | graph | highest complexity / fan-in symbols |
|
|
210
211
|
| Unreferenced (dead) code | `deadcode` | graph | **withdrawn and now retired** — a labelled corpus measured its precision at 25%; safe-nulls with `reason: "op-withdrawn"`, and no flag brings it back — [the measurement, and what to use instead](#deadcode-is-retired) |
|
|
211
212
|
|
|
@@ -498,7 +499,7 @@ Register codeintel as an MCP server (`codeintel install`) and the agent gets fou
|
|
|
498
499
|
| MCP tool | HTTP equivalent | Purpose |
|
|
499
500
|
|---|---|---|
|
|
500
501
|
| `code.query` | `POST /code/query` | The main call — search, trace, understand (the `op` table above) |
|
|
501
|
-
| `code.status` | `GET /code/status` | Per-engine `installed` / `runnable` / `repo_indexed` (plus `model_cached` for semantic), probed against the live engines a query actually hits |
|
|
502
|
+
| `code.status` | `GET /code/status` | Per-engine `installed` / `runnable` / `repo_indexed` (plus `model_cached` for semantic), probed against the live engines a query actually hits, plus `degraded`: engines that are installed but not working — see [docs/doctor.md](docs/doctor.md) |
|
|
502
503
|
| `code.doctor` | `POST /code/doctor` | Per-engine health + repo index status, with a fix for each gap |
|
|
503
504
|
| `code.map` | — | Generate/refresh `CODE_INTEL.md`, a static orientation file for hosts without MCP |
|
|
504
505
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codecortex
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.26.0
|
|
4
4
|
Summary: Local-first, MCP-native code-intelligence server — graph, LSP, and semantic search behind one safe code.query tool for coding agents.
|
|
5
5
|
Author: Shammai Hamilton
|
|
6
6
|
License-Expression: MIT
|
|
@@ -247,6 +247,7 @@ It's one call: `code.query(op, target, engine="auto")`. In `auto` mode (the defa
|
|
|
247
247
|
| Project shape at a glance | `overview` | graph → lsp | modules, node/edge counts, languages |
|
|
248
248
|
| Everything about one symbol | `context` | graph + lsp | both views merged |
|
|
249
249
|
| **Impact of your uncommitted edits** | `changed` | graph | changed files → impacted symbols |
|
|
250
|
+
| **What a branch changes, and who still calls it** | `changed` with `target="main"` | graph + git | each removed / re-signed / rewritten function → callers the branch did not touch |
|
|
250
251
|
| Refactor-risk hotspots | `hotspots` | graph | highest complexity / fan-in symbols |
|
|
251
252
|
| Unreferenced (dead) code | `deadcode` | graph | **withdrawn and now retired** — a labelled corpus measured its precision at 25%; safe-nulls with `reason: "op-withdrawn"`, and no flag brings it back — [the measurement, and what to use instead](#deadcode-is-retired) |
|
|
252
253
|
|
|
@@ -539,7 +540,7 @@ Register codeintel as an MCP server (`codeintel install`) and the agent gets fou
|
|
|
539
540
|
| MCP tool | HTTP equivalent | Purpose |
|
|
540
541
|
|---|---|---|
|
|
541
542
|
| `code.query` | `POST /code/query` | The main call — search, trace, understand (the `op` table above) |
|
|
542
|
-
| `code.status` | `GET /code/status` | Per-engine `installed` / `runnable` / `repo_indexed` (plus `model_cached` for semantic), probed against the live engines a query actually hits |
|
|
543
|
+
| `code.status` | `GET /code/status` | Per-engine `installed` / `runnable` / `repo_indexed` (plus `model_cached` for semantic), probed against the live engines a query actually hits, plus `degraded`: engines that are installed but not working — see [docs/doctor.md](docs/doctor.md) |
|
|
543
544
|
| `code.doctor` | `POST /code/doctor` | Per-engine health + repo index status, with a fix for each gap |
|
|
544
545
|
| `code.map` | — | Generate/refresh `CODE_INTEL.md`, a static orientation file for hosts without MCP |
|
|
545
546
|
|
|
@@ -15,6 +15,7 @@ src/codeintel/c4.py
|
|
|
15
15
|
src/codeintel/c4_check.py
|
|
16
16
|
src/codeintel/c4_layers.py
|
|
17
17
|
src/codeintel/cache.py
|
|
18
|
+
src/codeintel/changed_range.py
|
|
18
19
|
src/codeintel/config.py
|
|
19
20
|
src/codeintel/containment.py
|
|
20
21
|
src/codeintel/doctor.py
|
|
@@ -22,7 +23,9 @@ src/codeintel/filelock.py
|
|
|
22
23
|
src/codeintel/gateway.py
|
|
23
24
|
src/codeintel/graph_answer.py
|
|
24
25
|
src/codeintel/graph_backend.py
|
|
26
|
+
src/codeintel/graph_changed.py
|
|
25
27
|
src/codeintel/graph_confidence.py
|
|
28
|
+
src/codeintel/graph_dispatch.py
|
|
26
29
|
src/codeintel/graph_edges.py
|
|
27
30
|
src/codeintel/graph_ops.py
|
|
28
31
|
src/codeintel/graph_render.py
|
|
@@ -54,6 +57,7 @@ src/codeintel/searcher.py
|
|
|
54
57
|
src/codeintel/semantic_db.py
|
|
55
58
|
src/codeintel/server.py
|
|
56
59
|
src/codeintel/source_kind.py
|
|
60
|
+
src/codeintel/symbol_diff.py
|
|
57
61
|
src/codeintel/term.py
|
|
58
62
|
src/codeintel/verify.py
|
|
59
63
|
src/codeintel/wire_text.py
|
|
@@ -82,10 +86,12 @@ src/codeintel/providers/semantic.py
|
|
|
82
86
|
src/codeintel/viewer/__init__.py
|
|
83
87
|
src/codeintel/viewer/graph_template.html
|
|
84
88
|
tests/test_agent_prompt.py
|
|
89
|
+
tests/test_backend_failure_detail.py
|
|
85
90
|
tests/test_backend_reaper.py
|
|
86
91
|
tests/test_background_index_failure.py
|
|
87
92
|
tests/test_bench_corpus_typed.py
|
|
88
93
|
tests/test_bench_gate.py
|
|
94
|
+
tests/test_bench_graphify.py
|
|
89
95
|
tests/test_bench_oracle.py
|
|
90
96
|
tests/test_bench_oracle_ts.py
|
|
91
97
|
tests/test_c4.py
|
|
@@ -94,6 +100,7 @@ tests/test_c4_layers.py
|
|
|
94
100
|
tests/test_c4_model.py
|
|
95
101
|
tests/test_c4_output.py
|
|
96
102
|
tests/test_cache.py
|
|
103
|
+
tests/test_changed_range.py
|
|
97
104
|
tests/test_chunking.py
|
|
98
105
|
tests/test_cli_commands.py
|
|
99
106
|
tests/test_cli_help.py
|
|
@@ -103,12 +110,14 @@ tests/test_cold_process.py
|
|
|
103
110
|
tests/test_config.py
|
|
104
111
|
tests/test_corpus.py
|
|
105
112
|
tests/test_could_not_ask_semantic.py
|
|
113
|
+
tests/test_dispatch_callers.py
|
|
106
114
|
tests/test_docs_ci_claims.py
|
|
107
115
|
tests/test_docs_deadcode_withdrawal.py
|
|
108
116
|
tests/test_docs_trust_claims.py
|
|
109
117
|
tests/test_doctor.py
|
|
110
118
|
tests/test_e2e.py
|
|
111
119
|
tests/test_edge_confidence.py
|
|
120
|
+
tests/test_edge_endpoint_cap.py
|
|
112
121
|
tests/test_engine_adoption.py
|
|
113
122
|
tests/test_enterprise.py
|
|
114
123
|
tests/test_gateway.py
|
|
@@ -154,6 +163,7 @@ tests/test_source_kind.py
|
|
|
154
163
|
tests/test_staleness.py
|
|
155
164
|
tests/test_summary_integrity.py
|
|
156
165
|
tests/test_symbol_context.py
|
|
166
|
+
tests/test_symbol_diff.py
|
|
157
167
|
tests/test_term.py
|
|
158
168
|
tests/test_treesitter.py
|
|
159
169
|
tests/test_uninstall.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.26.0"
|
|
@@ -96,7 +96,7 @@ _MODULES = {
|
|
|
96
96
|
# here?" list end to end produced a working CLI and an agent that still greps. README's quickstart
|
|
97
97
|
# is `setup --all` -> `install` -> `query`; `_START_HERE` now matches it.
|
|
98
98
|
_EXAMPLES = [
|
|
99
|
-
(
|
|
99
|
+
("codeintel query --op changed --target main", "what does this branch break?"),
|
|
100
100
|
("codeintel query --op callers --target foo", "who calls it?"),
|
|
101
101
|
("codeintel graph . --html", "open the call graph"),
|
|
102
102
|
("codeintel doctor", "why is a query empty?"),
|
|
@@ -263,12 +263,16 @@ Run this first, and again after big changes. `codeintel status` shows index
|
|
|
263
263
|
age.""",
|
|
264
264
|
"query": """examples:
|
|
265
265
|
codeintel query --op changed
|
|
266
|
+
codeintel query --op changed --target main
|
|
266
267
|
codeintel query --op callers --target build_parser
|
|
267
268
|
codeintel query --op impact --target Gateway.query
|
|
268
269
|
codeintel query --op search --target "where do we validate tokens"
|
|
269
270
|
codeintel query --op hotspots --json
|
|
270
271
|
|
|
271
|
-
`overview
|
|
272
|
+
`overview` and `hotspots` ignore --target — omit it, or pass "".
|
|
273
|
+
`changed` reads it as a base ref: omit it for your uncommitted edits, or pass
|
|
274
|
+
a ref (`main`, `HEAD~3`, a SHA) to see what a whole branch removed or
|
|
275
|
+
rewrote, and who still uses it.
|
|
272
276
|
Prefer this over grep: results are ranked by graph importance, not by match
|
|
273
277
|
order.
|
|
274
278
|
|
|
@@ -281,7 +285,7 @@ operations:
|
|
|
281
285
|
chain how one symbol reaches another
|
|
282
286
|
context search + symbol together
|
|
283
287
|
pattern structural pattern match over the graph
|
|
284
|
-
changed what your
|
|
288
|
+
changed what your edits break --target: optional base ref
|
|
285
289
|
hotspots highest fan-in / complexity symbols --target ignored
|
|
286
290
|
overview ranked architecture summary --target ignored
|
|
287
291
|
|
|
@@ -433,14 +437,16 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
433
437
|
"--op", choices=QUERY_OPS, required=True,
|
|
434
438
|
help="Which question to ask; see \"operations\" below",
|
|
435
439
|
)
|
|
436
|
-
# NOT required — `overview`/`changed`/`hotspots`
|
|
437
|
-
# ops used to show `--op changed` etc. with no
|
|
438
|
-
# (`required=True` disagreeing with its own
|
|
439
|
-
# exactly as documented, while `--target` stays
|
|
440
|
+
# NOT required — `overview`/`changed`/`hotspots` need none (`changed` takes an optional base
|
|
441
|
+
# ref), and every epilog example for those ops used to show `--op changed` etc. with no
|
|
442
|
+
# `--target` at all, which the parser rejected (`required=True` disagreeing with its own
|
|
443
|
+
# prose). A blank default lets those ops be run exactly as documented, while `--target` stays
|
|
444
|
+
# available for the ops that read it.
|
|
440
445
|
query_parser.add_argument(
|
|
441
446
|
"--target", default="",
|
|
442
|
-
help="Symbol name, or a natural-language query for `search
|
|
443
|
-
"
|
|
447
|
+
help="Symbol name, or a natural-language query for `search`; for `changed`, an optional "
|
|
448
|
+
"base ref (`main`, `HEAD~3`) — empty means uncommitted edits only. Ignored (and "
|
|
449
|
+
"safe to omit) by `overview`/`hotspots`.",
|
|
444
450
|
)
|
|
445
451
|
query_parser.add_argument(
|
|
446
452
|
"--engine", choices=QUERY_ENGINES, default="auto",
|