codingest 0.2.17__tar.gz → 0.2.19__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.
- {codingest-0.2.17 → codingest-0.2.19}/Cargo.lock +8 -8
- {codingest-0.2.17 → codingest-0.2.19}/Cargo.toml +18 -5
- {codingest-0.2.17 → codingest-0.2.19}/PKG-INFO +5 -5
- {codingest-0.2.17 → codingest-0.2.19}/README.md +3 -3
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/Cargo.toml +1 -1
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/Cargo.toml +1 -1
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/skills/codingest-code-review/SKILL.md +56 -38
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/skills/codingest-code-review/references/public-repositories.md +10 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/skills/codingest-code-review/references/queries.md +4 -2
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-mcp/Cargo.toml +1 -1
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-py/Cargo.toml +3 -3
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-py/src/lib.rs +1 -1
- {codingest-0.2.17 → codingest-0.2.19}/pyproject.toml +2 -2
- {codingest-0.2.17 → codingest-0.2.19}/LICENSE +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/codingest/__init__.py +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/codingest/__init__.pyi +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/codingest/cli.py +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/codingest/mcp_server.py +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/bin/codingest_bench.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/bin/codingest_stats.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/call_edges.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/js_workspace.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/load/edge_frames.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/load/entity_frames.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/load.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/mod.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/other_edges.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/routes/django.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/routes/fastapi.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/routes/flask.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/routes/mod.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/semantic_edges.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/builder/type_edges.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/cross_lang.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/docs/mod.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/docs/rst.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/lib.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/manifest/mod.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/models.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/agc.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/cpp.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/csharp.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/css.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/dart.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/go.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/html.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/java.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/julia.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/mod.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/php.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/python.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/r.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/registry.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/rust_lang.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/shared.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/swift.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/parsers/typescript.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/repo.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/src/rev.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/agc_apollo.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/README.md +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/agc_basic.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/cpp_extern_c.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/cpp_include.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/cross_ts_py.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/csharp_using_alias.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/dart_import.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/dart_part_of.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/docs_ext_collide.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/docs_mdx.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/dup_minified_assets.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/go_interface.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/html_js_lang_group.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/java_javadoc.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/julia_basic.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/php_group_use.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/py_basic.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/py_import.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/py_inheritance.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/py_nested_defs.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/py_routes_dup.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/py_src_layout.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/r_basic.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/rust_import.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/rust_inline_mod.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/rust_xfile.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/swift_basic.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/ts_callback.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/ts_closure_scope.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/ts_hof_binding.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/ts_monorepo.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/web_served_root.sha256 +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/grammar_kinds.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/parity.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/traversal_semantics.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/skills/codingest-code-review/references/mcp-upgrade.md +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/src/code_tree_cli.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/src/lib.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/src/main.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/src/query.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/src/skill.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/src/skill_assets.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/tests/exit_codes.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-mcp/src/lib.rs +0 -0
- {codingest-0.2.17 → codingest-0.2.19}/crates/codingest-mcp/src/main.rs +0 -0
|
@@ -302,7 +302,7 @@ dependencies = [
|
|
|
302
302
|
|
|
303
303
|
[[package]]
|
|
304
304
|
name = "codingest"
|
|
305
|
-
version = "0.2.
|
|
305
|
+
version = "0.2.19"
|
|
306
306
|
dependencies = [
|
|
307
307
|
"aho-corasick",
|
|
308
308
|
"base64 0.22.1",
|
|
@@ -338,7 +338,7 @@ dependencies = [
|
|
|
338
338
|
|
|
339
339
|
[[package]]
|
|
340
340
|
name = "codingest-cli"
|
|
341
|
-
version = "0.2.
|
|
341
|
+
version = "0.2.19"
|
|
342
342
|
dependencies = [
|
|
343
343
|
"anyhow",
|
|
344
344
|
"clap",
|
|
@@ -350,7 +350,7 @@ dependencies = [
|
|
|
350
350
|
|
|
351
351
|
[[package]]
|
|
352
352
|
name = "codingest-mcp"
|
|
353
|
-
version = "0.2.
|
|
353
|
+
version = "0.2.19"
|
|
354
354
|
dependencies = [
|
|
355
355
|
"anyhow",
|
|
356
356
|
"codingest",
|
|
@@ -359,7 +359,7 @@ dependencies = [
|
|
|
359
359
|
|
|
360
360
|
[[package]]
|
|
361
361
|
name = "codingest-py"
|
|
362
|
-
version = "0.2.
|
|
362
|
+
version = "0.2.19"
|
|
363
363
|
dependencies = [
|
|
364
364
|
"codingest",
|
|
365
365
|
"codingest-cli",
|
|
@@ -1366,9 +1366,9 @@ dependencies = [
|
|
|
1366
1366
|
|
|
1367
1367
|
[[package]]
|
|
1368
1368
|
name = "kglite"
|
|
1369
|
-
version = "0.17.
|
|
1369
|
+
version = "0.17.3"
|
|
1370
1370
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1371
|
-
checksum = "
|
|
1371
|
+
checksum = "c414d1f4ae2d7d0af3ce088b843fbc3622cac2c29467cc81bc2dc639006136e0"
|
|
1372
1372
|
dependencies = [
|
|
1373
1373
|
"bzip2",
|
|
1374
1374
|
"chrono",
|
|
@@ -1402,9 +1402,9 @@ dependencies = [
|
|
|
1402
1402
|
|
|
1403
1403
|
[[package]]
|
|
1404
1404
|
name = "kglite-mcp-server"
|
|
1405
|
-
version = "0.17.
|
|
1405
|
+
version = "0.17.3"
|
|
1406
1406
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1407
|
-
checksum = "
|
|
1407
|
+
checksum = "764efb5d817e481d9c96302c185a71bceba6ed09a79b3c6ad2f131688c7384c9"
|
|
1408
1408
|
dependencies = [
|
|
1409
1409
|
"anyhow",
|
|
1410
1410
|
"bytes",
|
|
@@ -3,7 +3,7 @@ members = ["crates/codingest", "crates/codingest-cli", "crates/codingest-mcp", "
|
|
|
3
3
|
resolver = "2"
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "0.2.
|
|
6
|
+
version = "0.2.19"
|
|
7
7
|
edition = "2021"
|
|
8
8
|
rust-version = "1.88"
|
|
9
9
|
license = "MIT"
|
|
@@ -12,8 +12,21 @@ repository = "https://github.com/kkollsga/codingest"
|
|
|
12
12
|
[workspace.dependencies]
|
|
13
13
|
base64 = "0.22"
|
|
14
14
|
sha2 = "0.11"
|
|
15
|
-
# kglite engine + MCP server — imported as crates.io libraries. The 0.17.
|
|
16
|
-
# floor spans
|
|
15
|
+
# kglite engine + MCP server — imported as crates.io libraries. The 0.17.3
|
|
16
|
+
# floor spans the 0.17.2 and 0.17.3 query releases. Nothing in codingest's
|
|
17
|
+
# builder source moved for either release; the changes reach users through
|
|
18
|
+
# `codingest query` and the embedded `codingest-mcp` server:
|
|
19
|
+
# * read `CALL` subqueries gain modern scope clauses plus UNION / INTERSECT /
|
|
20
|
+
# EXCEPT composition, and Cypher 25 adds FILTER, OFFSET, NODETACH DELETE,
|
|
21
|
+
# FINISH and INSERT. Procedure calls now execute per incoming row instead
|
|
22
|
+
# of reviving an empty pipeline. `PassCtx`'s new private fields are a Rust
|
|
23
|
+
# break for struct-literal callers, but codingest never constructs one.
|
|
24
|
+
# * typed and undirected relationship counts, correlated EXISTS patterns,
|
|
25
|
+
# and fused OPTIONAL MATCH / two-MATCH aggregates are faster or corrected.
|
|
26
|
+
# Those are engine query paths only. The builder's `prepare_kgl_write`,
|
|
27
|
+
# `write_kgl` and `save_graph` persistence entries are unchanged.
|
|
28
|
+
# The preceding 0.17.1 floor spanned four upstream releases: codingest took
|
|
29
|
+
# none of 0.16.23, 0.16.24
|
|
17
30
|
# or 0.17.0, so all four land here together. Nothing in our source moved for
|
|
18
31
|
# it — the workspace builds, clippys and tests clean against 0.17.1 with zero
|
|
19
32
|
# edits, and every corpus golden is byte-identical across the move. Where they
|
|
@@ -486,8 +499,8 @@ sha2 = "0.11"
|
|
|
486
499
|
# and no disk storage. Neither 0.15.7 nor 0.15.8 changes the `kglite::api` we
|
|
487
500
|
# call, graph output, property encoding, or `.kgl` serialization.
|
|
488
501
|
# Keep both libraries aligned so the graph and server share one engine release.
|
|
489
|
-
kglite = { version = "0.17.
|
|
490
|
-
kglite-mcp-server = { version = "0.17.
|
|
502
|
+
kglite = { version = "0.17.3", default-features = false }
|
|
503
|
+
kglite-mcp-server = { version = "0.17.3", default-features = false }
|
|
491
504
|
|
|
492
505
|
# Dependency debuginfo capped at line tables (kglite coordination, 2026-08-31,
|
|
493
506
|
# after unbounded debug trees filled the build-cache disk to zero): a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codingest
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.19
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
12
12
|
Classifier: Programming Language :: Rust
|
|
13
13
|
Classifier: Topic :: Software Development
|
|
14
14
|
Classifier: Topic :: Software Development :: Libraries
|
|
15
|
-
Requires-Dist: kglite>=0.17.
|
|
15
|
+
Requires-Dist: kglite>=0.17.3,<0.18
|
|
16
16
|
License-File: LICENSE
|
|
17
17
|
Summary: Build fast, queryable code graphs for AI agents, MCP code review, and local or GitHub repository analysis.
|
|
18
18
|
Keywords: ai-agents,mcp,code-review,knowledge-graph,code-analysis,github,tree-sitter,cypher
|
|
@@ -192,7 +192,7 @@ codingest skill install # code-review Agent Skill
|
|
|
192
192
|
```
|
|
193
193
|
|
|
194
194
|
The wheel bundles every grammar plus the `codingest` and `codingest-mcp`
|
|
195
|
-
commands. KGLite ≥0.17.
|
|
195
|
+
commands. KGLite ≥0.17.3 is installed automatically as the query/storage
|
|
196
196
|
engine; its MCP server and the transitive `mcp-methods` framework power the
|
|
197
197
|
builder-aware Codingest server. Nothing else needs to be installed.
|
|
198
198
|
|
|
@@ -205,7 +205,7 @@ Python prerequisites.
|
|
|
205
205
|
```toml
|
|
206
206
|
[dependencies]
|
|
207
207
|
codingest = "0.2"
|
|
208
|
-
kglite = "0.17.
|
|
208
|
+
kglite = "0.17.3"
|
|
209
209
|
```
|
|
210
210
|
|
|
211
211
|
```rust
|
|
@@ -277,7 +277,7 @@ diagnostic.
|
|
|
277
277
|
## Dependency policy
|
|
278
278
|
|
|
279
279
|
`kglite` and `kglite-mcp-server` use matching crates.io requirements with a
|
|
280
|
-
0.17.
|
|
280
|
+
0.17.3 minimum and a shared lockfile. This keeps the builder, persistence
|
|
281
281
|
handoff, and embedded MCP server on one compatible engine patch line.
|
|
282
282
|
|
|
283
283
|
## Parity with the (now-removed) in-tree component
|
|
@@ -165,7 +165,7 @@ codingest skill install # code-review Agent Skill
|
|
|
165
165
|
```
|
|
166
166
|
|
|
167
167
|
The wheel bundles every grammar plus the `codingest` and `codingest-mcp`
|
|
168
|
-
commands. KGLite ≥0.17.
|
|
168
|
+
commands. KGLite ≥0.17.3 is installed automatically as the query/storage
|
|
169
169
|
engine; its MCP server and the transitive `mcp-methods` framework power the
|
|
170
170
|
builder-aware Codingest server. Nothing else needs to be installed.
|
|
171
171
|
|
|
@@ -178,7 +178,7 @@ Python prerequisites.
|
|
|
178
178
|
```toml
|
|
179
179
|
[dependencies]
|
|
180
180
|
codingest = "0.2"
|
|
181
|
-
kglite = "0.17.
|
|
181
|
+
kglite = "0.17.3"
|
|
182
182
|
```
|
|
183
183
|
|
|
184
184
|
```rust
|
|
@@ -250,7 +250,7 @@ diagnostic.
|
|
|
250
250
|
## Dependency policy
|
|
251
251
|
|
|
252
252
|
`kglite` and `kglite-mcp-server` use matching crates.io requirements with a
|
|
253
|
-
0.17.
|
|
253
|
+
0.17.3 minimum and a shared lockfile. This keeps the builder, persistence
|
|
254
254
|
handoff, and embedded MCP server on one compatible engine patch line.
|
|
255
255
|
|
|
256
256
|
## Parity with the (now-removed) in-tree component
|
|
@@ -10,7 +10,7 @@ keywords = ["knowledge-graph", "code-analysis", "tree-sitter", "cypher", "kglite
|
|
|
10
10
|
categories = ["development-tools", "parser-implementations"]
|
|
11
11
|
|
|
12
12
|
# Requires the kglite 0.15 engine API (`kglite::api::code_entities`); the
|
|
13
|
-
# workspace pins the current engine floor (0.17.
|
|
13
|
+
# workspace pins the current engine floor (0.17.3).
|
|
14
14
|
|
|
15
15
|
[lib]
|
|
16
16
|
name = "codingest"
|
|
@@ -14,7 +14,7 @@ name = "codingest"
|
|
|
14
14
|
path = "src/main.rs"
|
|
15
15
|
|
|
16
16
|
[dependencies]
|
|
17
|
-
codingest = { version = "0.2.
|
|
17
|
+
codingest = { version = "0.2.19", path = "../codingest" }
|
|
18
18
|
kglite = { workspace = true }
|
|
19
19
|
anyhow = "1.0.104"
|
|
20
20
|
clap = { version = "4.6.4", features = ["derive"] }
|
{codingest-0.2.17 → codingest-0.2.19}/crates/codingest-cli/skills/codingest-code-review/SKILL.md
RENAMED
|
@@ -14,43 +14,60 @@ git diff, source reading, and literal-text search; it does not replace them.
|
|
|
14
14
|
> `pip install codingest` provides both plus the builder-aware
|
|
15
15
|
> `codingest-mcp` server. Rust-only environments can alternatively use Cargo.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
17
|
+
Inspect the diff and repository guidance first. Identify changed symbols and
|
|
18
|
+
the base/head revisions, then build or refresh the graph without executing
|
|
19
|
+
repository code:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
codingest build . --output .kglite/code-review.kgl --format json
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
For a committed comparison, use one graph spanning both revisions:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
codingest build . --revs '<base>' '<head>' \
|
|
29
|
+
--output .kglite/code-review.kgl --format json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Before reusing an artifact, check freshness:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
codingest status --output .kglite/code-review.kgl --format json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Retrieve only what answers the question
|
|
39
|
+
|
|
40
|
+
Choose the narrowest route for the uncertainty in front of you; these are
|
|
41
|
+
alternatives, not a compulsory sequence. Reuse tool signatures already known
|
|
42
|
+
in the current session; if a needed tool is not visible, discover that tool
|
|
43
|
+
rather than loading a broad catalog.
|
|
44
|
+
|
|
45
|
+
- **Known symbol or location:** read it directly. With MCP, use
|
|
46
|
+
`read_code_source` for a qualified name or `read_source` for a path, applying
|
|
47
|
+
`start_line`, `end_line`, and `max_chars` when a full body or file is not
|
|
48
|
+
needed.
|
|
49
|
+
- **Exact structural question:** use `cypher_query`, or `kglite query` at the
|
|
50
|
+
CLI. Reuse a schema already observed for the same unchanged graph. Otherwise
|
|
51
|
+
inspect only the needed node or connection shape with `graph_overview` or
|
|
52
|
+
`kglite describe`; do not retrieve the whole schema by habit.
|
|
53
|
+
- **Broad explanation or unfamiliar subsystem:** use bounded `explore`, starting
|
|
54
|
+
with a short topic, a few `max_entities`, shallow `max_depth`, and
|
|
55
|
+
`include_source: false` unless bodies are needed. Narrow to selected symbols
|
|
56
|
+
before reading source.
|
|
57
|
+
- **Literal text:** use grep/ripgrep for error strings, comments, and config
|
|
58
|
+
keys, then open only the relevant matches.
|
|
59
|
+
|
|
60
|
+
Every additional read should resolve a concrete uncertainty needed for the
|
|
61
|
+
answer. Project only useful Cypher properties, return a few relevant candidates,
|
|
62
|
+
and exclude unrelated fixtures, generated code, vendors, or examples when the
|
|
63
|
+
question does not cover them. If output truncates, narrow the query or source
|
|
64
|
+
range instead of repeatedly increasing output. Reuse evidence already seen
|
|
65
|
+
unless its source or active graph changed.
|
|
66
|
+
|
|
67
|
+
Open implicated code at exact lines before claiming behavior; an edge alone is
|
|
68
|
+
not runtime proof. Stop when the requested conclusions are supported. Expand
|
|
69
|
+
only for a contradiction, missing evidence, or a correctness risk that could
|
|
70
|
+
change the answer.
|
|
54
71
|
|
|
55
72
|
See [queries.md](references/queries.md) for query patterns,
|
|
56
73
|
[public-repositories.md](references/public-repositories.md) for safe public-repo
|
|
@@ -88,7 +105,8 @@ prior question — what is eligible to be a finding at all.
|
|
|
88
105
|
|
|
89
106
|
## Honesty rules
|
|
90
107
|
|
|
91
|
-
- Never invent labels, properties, or connection types
|
|
108
|
+
- Never invent labels, properties, or connection types. Discover an unfamiliar
|
|
109
|
+
shape before querying it; reuse a known shape while the graph is unchanged.
|
|
92
110
|
- Treat unresolved or missing graph edges as absence of evidence, not proof.
|
|
93
111
|
- Quote paths and revisions passed through the shell.
|
|
94
112
|
- Never build, import, or execute code from a repository merely to review it.
|
|
@@ -18,3 +18,13 @@ For an existing cache, fetch only the explicit refs needed. The revision build
|
|
|
18
18
|
uses `git archive` and never checks out or runs the repository. Do not silently
|
|
19
19
|
switch a user's working checkout. Verify GitHub claims against the resolved
|
|
20
20
|
commit and cite stable source links when reporting findings.
|
|
21
|
+
|
|
22
|
+
## Keep repository investigations bounded
|
|
23
|
+
|
|
24
|
+
When using the open-source MCP, activate the requested repository and revision,
|
|
25
|
+
then follow the routing policy in the parent skill. Reuse tool signatures and
|
|
26
|
+
schema shapes already observed for the same active graph. If a tool or shape is
|
|
27
|
+
unknown, discover only that tool or the node/connection types needed for the
|
|
28
|
+
next query; broad tool catalogs and full schemas are not prerequisites. Start
|
|
29
|
+
from the named symbol or subsystem, and exclude fixtures, generated sources,
|
|
30
|
+
vendored trees, and examples unless they bear on the question.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# Code-review query patterns
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Adapt these patterns to the labels and properties already known for the active
|
|
4
|
+
graph. If the needed node or connection shape is unfamiliar, inspect that shape
|
|
5
|
+
with `graph_overview` or `kglite describe <graph> --connections --cypher` before
|
|
6
|
+
querying it.
|
|
5
7
|
|
|
6
8
|
Find a symbol before asking about its relationships:
|
|
7
9
|
|
|
@@ -42,7 +42,7 @@ doctest = false
|
|
|
42
42
|
pyo3 = { version = "0.29" }
|
|
43
43
|
# The engine-free builder (parsers, call/type/route edges, rev merge, repo
|
|
44
44
|
# clone, manifest reader). Docs pass gated by this crate's `docs` feature.
|
|
45
|
-
codingest = { version = "0.2.
|
|
45
|
+
codingest = { version = "0.2.19", path = "../codingest", default-features = false }
|
|
46
46
|
# `.kgl` persistence (`kglite::api::io::save_graph`) for the serialize half of
|
|
47
47
|
# the build-then-load handoff, plus the `DirGraph` type the builder returns.
|
|
48
48
|
kglite = { workspace = true }
|
|
@@ -53,9 +53,9 @@ tempfile = "3.27.0"
|
|
|
53
53
|
# through `_run_cli`, so `pip install codingest` also installs the `codingest`
|
|
54
54
|
# command without a second wheel or a duplicated builder build. Mirrors
|
|
55
55
|
# kglite-py's `kglite-cli` bundling.
|
|
56
|
-
codingest-cli = { version = "0.2.
|
|
56
|
+
codingest-cli = { version = "0.2.19", path = "../codingest-cli" }
|
|
57
57
|
# Source-building MCP composition. The graph server and generic MCP lifecycle
|
|
58
58
|
# remain owned by its existing kglite-mcp-server -> mcp-methods Rust dependency
|
|
59
59
|
# chain; linking this thin library into the extension gives pip users the same
|
|
60
60
|
# builder-aware server as the standalone `codingest-mcp` binary.
|
|
61
|
-
codingest-mcp = { version = "0.2.
|
|
61
|
+
codingest-mcp = { version = "0.2.19", path = "../codingest-mcp" }
|
|
@@ -74,7 +74,7 @@ fn load_via_kglite(py: Python<'_>, path: &Path) -> PyResult<Py<PyAny>> {
|
|
|
74
74
|
PyRuntimeError::new_err(format!(
|
|
75
75
|
"codingest.build() returns a kglite.KnowledgeGraph, but importing \
|
|
76
76
|
`kglite` failed ({e}). Install it: `pip install \
|
|
77
|
-
'kglite>=0.17.
|
|
77
|
+
'kglite>=0.17.3,<0.18'`."
|
|
78
78
|
))
|
|
79
79
|
})?;
|
|
80
80
|
let graph = kglite.call_method1("load", (path.to_string_lossy().as_ref(),))?;
|
|
@@ -42,9 +42,9 @@ dynamic = ["version"]
|
|
|
42
42
|
# minor releases (e.g. the v3->v4 break, which refuses old files outright), so
|
|
43
43
|
# pip must never be free to pair our writer with a reader from a different
|
|
44
44
|
# minor. This range therefore mirrors the Cargo semver range for the pin above
|
|
45
|
-
# (`version = "0.17.
|
|
45
|
+
# (`version = "0.17.3"` == `>=0.17.3,<0.18.0`) exactly — bump both together.
|
|
46
46
|
dependencies = [
|
|
47
|
-
"kglite>=0.17.
|
|
47
|
+
"kglite>=0.17.3,<0.18",
|
|
48
48
|
]
|
|
49
49
|
|
|
50
50
|
[project.urls]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/csharp_using_alias.sha256
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/docs_ext_collide.sha256
RENAMED
|
File without changes
|
|
File without changes
|
{codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/dup_minified_assets.sha256
RENAMED
|
File without changes
|
|
File without changes
|
{codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/html_js_lang_group.sha256
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codingest-0.2.17 → codingest-0.2.19}/crates/codingest/tests/goldens/ts_closure_scope.sha256
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|