codingest 0.2.32__tar.gz → 0.2.33__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 (111) hide show
  1. {codingest-0.2.32 → codingest-0.2.33}/Cargo.lock +8 -8
  2. {codingest-0.2.32 → codingest-0.2.33}/Cargo.toml +3 -3
  3. {codingest-0.2.32 → codingest-0.2.33}/PKG-INFO +5 -5
  4. {codingest-0.2.32 → codingest-0.2.33}/README.md +3 -3
  5. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/Cargo.toml +1 -1
  6. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/Cargo.toml +1 -1
  7. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/skills/codingest-code-review/SKILL.md +1 -1
  8. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/skills/codingest-code-review/references/mcp-upgrade.md +1 -1
  9. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-mcp/Cargo.toml +1 -1
  10. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-mcp/src/lib.rs +3 -22
  11. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-mcp/tests/response_contract.rs +17 -0
  12. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-py/Cargo.toml +3 -3
  13. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-py/src/lib.rs +1 -1
  14. {codingest-0.2.32 → codingest-0.2.33}/pyproject.toml +2 -2
  15. {codingest-0.2.32 → codingest-0.2.33}/LICENSE +0 -0
  16. {codingest-0.2.32 → codingest-0.2.33}/codingest/__init__.py +0 -0
  17. {codingest-0.2.32 → codingest-0.2.33}/codingest/__init__.pyi +0 -0
  18. {codingest-0.2.32 → codingest-0.2.33}/codingest/cli.py +0 -0
  19. {codingest-0.2.32 → codingest-0.2.33}/codingest/mcp_server.py +0 -0
  20. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/assets/code_review/recipes.json +0 -0
  21. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/assets/code_review/skill.md +0 -0
  22. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/bin/codingest_bench.rs +0 -0
  23. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/bin/codingest_stats.rs +0 -0
  24. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/call_edges.rs +0 -0
  25. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/js_workspace.rs +0 -0
  26. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/load/edge_frames.rs +0 -0
  27. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/load/entity_frames.rs +0 -0
  28. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/load.rs +0 -0
  29. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/mod.rs +0 -0
  30. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/other_edges.rs +0 -0
  31. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/routes/django.rs +0 -0
  32. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/routes/fastapi.rs +0 -0
  33. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/routes/flask.rs +0 -0
  34. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/routes/mod.rs +0 -0
  35. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/semantic_edges.rs +0 -0
  36. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/builder/type_edges.rs +0 -0
  37. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/cross_lang.rs +0 -0
  38. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/docs/mod.rs +0 -0
  39. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/docs/rst.rs +0 -0
  40. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/lib.rs +0 -0
  41. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/manifest/mod.rs +0 -0
  42. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/methodology.rs +0 -0
  43. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/models.rs +0 -0
  44. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/agc.rs +0 -0
  45. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/cpp.rs +0 -0
  46. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/csharp.rs +0 -0
  47. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/css.rs +0 -0
  48. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/dart.rs +0 -0
  49. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/go.rs +0 -0
  50. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/html.rs +0 -0
  51. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/java.rs +0 -0
  52. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/julia.rs +0 -0
  53. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/mod.rs +0 -0
  54. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/php.rs +0 -0
  55. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/python.rs +0 -0
  56. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/r.rs +0 -0
  57. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/registry.rs +0 -0
  58. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/rust_lang.rs +0 -0
  59. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/shared.rs +0 -0
  60. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/swift.rs +0 -0
  61. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/parsers/typescript.rs +0 -0
  62. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/repo.rs +0 -0
  63. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/src/rev.rs +0 -0
  64. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/agc_apollo.rs +0 -0
  65. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/README.md +0 -0
  66. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/agc_basic.sha256 +0 -0
  67. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/cpp_extern_c.sha256 +0 -0
  68. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/cpp_include.sha256 +0 -0
  69. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/cross_ts_py.sha256 +0 -0
  70. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/csharp_using_alias.sha256 +0 -0
  71. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/dart_import.sha256 +0 -0
  72. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/dart_part_of.sha256 +0 -0
  73. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/docs_ext_collide.sha256 +0 -0
  74. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/docs_mdx.sha256 +0 -0
  75. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/dup_minified_assets.sha256 +0 -0
  76. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/go_interface.sha256 +0 -0
  77. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/html_js_lang_group.sha256 +0 -0
  78. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/java_javadoc.sha256 +0 -0
  79. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/julia_basic.sha256 +0 -0
  80. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/php_group_use.sha256 +0 -0
  81. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/py_basic.sha256 +0 -0
  82. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/py_import.sha256 +0 -0
  83. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/py_inheritance.sha256 +0 -0
  84. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/py_nested_defs.sha256 +0 -0
  85. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/py_routes_dup.sha256 +0 -0
  86. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/py_src_layout.sha256 +0 -0
  87. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/r_basic.sha256 +0 -0
  88. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/rust_import.sha256 +0 -0
  89. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/rust_inline_mod.sha256 +0 -0
  90. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/rust_xfile.sha256 +0 -0
  91. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/swift_basic.sha256 +0 -0
  92. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/ts_callback.sha256 +0 -0
  93. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/ts_closure_scope.sha256 +0 -0
  94. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/ts_hof_binding.sha256 +0 -0
  95. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/ts_monorepo.sha256 +0 -0
  96. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/goldens/web_served_root.sha256 +0 -0
  97. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/grammar_kinds.rs +0 -0
  98. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/parity.rs +0 -0
  99. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest/tests/traversal_semantics.rs +0 -0
  100. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/skills/codingest-code-review/references/public-repositories.md +0 -0
  101. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/skills/codingest-code-review/references/queries.md +0 -0
  102. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/src/code_tree_cli.rs +0 -0
  103. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/src/lib.rs +0 -0
  104. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/src/main.rs +0 -0
  105. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/src/query.rs +0 -0
  106. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/src/skill.rs +0 -0
  107. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/src/skill_assets.rs +0 -0
  108. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/tests/embed_skills.rs +0 -0
  109. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/tests/exit_codes.rs +0 -0
  110. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-cli/tests/skill_recipes.rs +0 -0
  111. {codingest-0.2.32 → codingest-0.2.33}/crates/codingest-mcp/src/main.rs +0 -0
@@ -312,7 +312,7 @@ dependencies = [
312
312
 
313
313
  [[package]]
314
314
  name = "codingest"
315
- version = "0.2.32"
315
+ version = "0.2.33"
316
316
  dependencies = [
317
317
  "aho-corasick",
318
318
  "base64 0.22.1",
@@ -348,7 +348,7 @@ dependencies = [
348
348
 
349
349
  [[package]]
350
350
  name = "codingest-cli"
351
- version = "0.2.32"
351
+ version = "0.2.33"
352
352
  dependencies = [
353
353
  "anyhow",
354
354
  "clap",
@@ -360,7 +360,7 @@ dependencies = [
360
360
 
361
361
  [[package]]
362
362
  name = "codingest-mcp"
363
- version = "0.2.32"
363
+ version = "0.2.33"
364
364
  dependencies = [
365
365
  "anyhow",
366
366
  "codingest",
@@ -371,7 +371,7 @@ dependencies = [
371
371
 
372
372
  [[package]]
373
373
  name = "codingest-py"
374
- version = "0.2.32"
374
+ version = "0.2.33"
375
375
  dependencies = [
376
376
  "codingest",
377
377
  "codingest-cli",
@@ -1422,9 +1422,9 @@ dependencies = [
1422
1422
 
1423
1423
  [[package]]
1424
1424
  name = "kglite"
1425
- version = "0.21.1"
1425
+ version = "0.21.2"
1426
1426
  source = "registry+https://github.com/rust-lang/crates.io-index"
1427
- checksum = "8fd362f0e83b6c70f9dd5bb315694f86540a78e4efc3946e7852e5babb514e07"
1427
+ checksum = "ff3505273db83181b8f2c1dab936bd32921545dbbf72e163244facd476644f08"
1428
1428
  dependencies = [
1429
1429
  "bzip2",
1430
1430
  "chrono",
@@ -1462,9 +1462,9 @@ dependencies = [
1462
1462
 
1463
1463
  [[package]]
1464
1464
  name = "kglite-mcp-server"
1465
- version = "0.21.1"
1465
+ version = "0.21.2"
1466
1466
  source = "registry+https://github.com/rust-lang/crates.io-index"
1467
- checksum = "088af789bff7cb30e9ad4b47a4b69903dc3481e2176b5e07d2989db172e381aa"
1467
+ checksum = "13be34c5bb2ac3f9b37590c53d81893d938de438320b159e9e6a919edbfd0002"
1468
1468
  dependencies = [
1469
1469
  "anyhow",
1470
1470
  "base64 0.23.1",
@@ -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.32"
6
+ version = "0.2.33"
7
7
  edition = "2021"
8
8
  rust-version = "1.88"
9
9
  license = "MIT"
@@ -657,8 +657,8 @@ sha2 = "0.11"
657
657
  # and no disk storage. Neither 0.15.7 nor 0.15.8 changes the `kglite::api` we
658
658
  # call, graph output, property encoding, or `.kgl` serialization.
659
659
  # Keep both libraries aligned so the graph and server share one engine release.
660
- kglite = { version = "0.21.1", default-features = false }
661
- kglite-mcp-server = { version = "0.21.1", default-features = false }
660
+ kglite = { version = "0.21.2", default-features = false }
661
+ kglite-mcp-server = { version = "0.21.2", default-features = false }
662
662
 
663
663
  # Dependency debuginfo capped at line tables (kglite coordination, 2026-08-31,
664
664
  # 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.32
3
+ Version: 0.2.33
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.21.1,<0.22
15
+ Requires-Dist: kglite>=0.21.2,<0.22
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
@@ -194,7 +194,7 @@ codingest skill install # code-review Agent Skill
194
194
  ```
195
195
 
196
196
  The wheel bundles every grammar plus the `codingest` and `codingest-mcp`
197
- commands. KGLite ≥0.21.1 is installed automatically as the query/storage
197
+ commands. KGLite ≥0.21.2 is installed automatically as the query/storage
198
198
  engine; its MCP server and the transitive `mcp-methods` framework power the
199
199
  builder-aware Codingest server. Nothing else needs to be installed.
200
200
 
@@ -207,7 +207,7 @@ Python prerequisites.
207
207
  ```toml
208
208
  [dependencies]
209
209
  codingest = "0.2"
210
- kglite = "0.21.1"
210
+ kglite = "0.21.2"
211
211
  ```
212
212
 
213
213
  ```rust
@@ -279,7 +279,7 @@ diagnostic.
279
279
  ## Dependency policy
280
280
 
281
281
  `kglite` and `kglite-mcp-server` use matching crates.io requirements with a
282
- 0.21.1 minimum and a shared lockfile. This keeps the builder, persistence
282
+ 0.21.2 minimum and a shared lockfile. This keeps the builder, persistence
283
283
  handoff, and embedded MCP server on one compatible engine patch line.
284
284
 
285
285
  ## Parity with the (now-removed) in-tree component
@@ -167,7 +167,7 @@ codingest skill install # code-review Agent Skill
167
167
  ```
168
168
 
169
169
  The wheel bundles every grammar plus the `codingest` and `codingest-mcp`
170
- commands. KGLite ≥0.21.1 is installed automatically as the query/storage
170
+ commands. KGLite ≥0.21.2 is installed automatically as the query/storage
171
171
  engine; its MCP server and the transitive `mcp-methods` framework power the
172
172
  builder-aware Codingest server. Nothing else needs to be installed.
173
173
 
@@ -180,7 +180,7 @@ Python prerequisites.
180
180
  ```toml
181
181
  [dependencies]
182
182
  codingest = "0.2"
183
- kglite = "0.21.1"
183
+ kglite = "0.21.2"
184
184
  ```
185
185
 
186
186
  ```rust
@@ -252,7 +252,7 @@ diagnostic.
252
252
  ## Dependency policy
253
253
 
254
254
  `kglite` and `kglite-mcp-server` use matching crates.io requirements with a
255
- 0.21.1 minimum and a shared lockfile. This keeps the builder, persistence
255
+ 0.21.2 minimum and a shared lockfile. This keeps the builder, persistence
256
256
  handoff, and embedded MCP server on one compatible engine patch line.
257
257
 
258
258
  ## 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.21.1).
13
+ # workspace pins the current engine floor (0.21.2).
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.32", path = "../codingest" }
17
+ codingest = { version = "0.2.33", path = "../codingest" }
18
18
  kglite = { workspace = true }
19
19
  anyhow = "1.0.104"
20
20
  clap = { version = "4.6.4", features = ["derive"] }
@@ -14,7 +14,7 @@ git diff, source reading, and literal-text search; it does not replace them.
14
14
  > codingest` also provides the builder-aware `codingest-mcp` server and a
15
15
  > compatible graph engine. Rust-only environments can alternatively use Cargo.
16
16
  > Examples that invoke the external `kglite` CLI require a compatible
17
- > `kglite>=0.21.1,<0.22`; verify `kglite --version` before using its
17
+ > `kglite>=0.21.2,<0.22`; verify `kglite --version` before using its
18
18
  > agent-response features.
19
19
 
20
20
  Inspect the diff and repository guidance first. Identify changed symbols and
@@ -54,7 +54,7 @@ preconditions are still current.
54
54
  ## External CLI agent output is optional
55
55
 
56
56
  The examples below require an external `kglite` CLI satisfying
57
- `>=0.21.1,<0.22`:
57
+ `>=0.21.2,<0.22`:
58
58
 
59
59
  ```console
60
60
  kglite --version
@@ -14,7 +14,7 @@ name = "codingest-mcp"
14
14
  path = "src/main.rs"
15
15
 
16
16
  [dependencies]
17
- codingest = { version = "0.2.32", path = "../codingest" }
17
+ codingest = { version = "0.2.33", path = "../codingest" }
18
18
  kglite-mcp-server = { workspace = true }
19
19
  anyhow = "1.0.104"
20
20
 
@@ -81,10 +81,9 @@ fn server_extensions() -> anyhow::Result<ServerExtensions> {
81
81
  let recipes = codingest::methodology::recipe_catalog()
82
82
  .map_err(|error| anyhow::anyhow!("codingest recipe catalogue is invalid: {error}"))?;
83
83
  Ok(ServerExtensions::default()
84
- // Names this package in the stale-build notice; a reload then
85
- // compares codingest's version, not kglite's. kglite learns the
86
- // installed version by running `<binary> --version`, so `run` must
87
- // answer that line itself (`version_line`).
84
+ // Names this package in the stale-build notice and in the
85
+ // `--version` / `-V` line (`codingest <version>`); a reload then
86
+ // compares codingest's version, not kglite's.
88
87
  .with_identity("codingest", env!("CARGO_PKG_VERSION"))
89
88
  .with_workspace_graph(hooks)
90
89
  .with_skills([codingest::methodology::skill_record()])
@@ -102,31 +101,13 @@ where
102
101
  T: Into<std::ffi::OsString> + Clone,
103
102
  {
104
103
  let args: Vec<std::ffi::OsString> = args.into_iter().map(Into::into).collect();
105
- if args.len() == 2 && (args[1] == "--version" || args[1] == "-V") {
106
- println!("{}", version_line());
107
- return Ok(());
108
- }
109
104
  kglite_mcp_server::run_with_extensions(args, server_extensions()?)
110
105
  }
111
106
 
112
- /// The line `--version` / `-V` prints; must match the identity declared in
113
- /// `server_extensions` so the stale-build probe sees one name and version.
114
- fn version_line() -> String {
115
- format!("codingest {}", env!("CARGO_PKG_VERSION"))
116
- }
117
-
118
107
  #[cfg(test)]
119
108
  mod tests {
120
109
  use super::*;
121
110
 
122
- #[test]
123
- fn version_line_names_codingest_and_its_package_version() {
124
- assert_eq!(
125
- version_line(),
126
- format!("codingest {}", env!("CARGO_PKG_VERSION"))
127
- );
128
- }
129
-
130
111
  #[test]
131
112
  fn graph_source_predicate_includes_code_and_docs_only() {
132
113
  assert!(is_graph_source(Path::new("src/lib.rs")));
@@ -921,3 +921,20 @@ fn selftest_reports_the_producer_layer() {
921
921
  assert!(stderr.contains("producer skills: 1 served"), "{stderr}");
922
922
  assert!(stderr.contains("producer recipes: 7 served"), "{stderr}");
923
923
  }
924
+
925
+ #[test]
926
+ fn version_flags_print_the_package_identity() {
927
+ let expected = format!("codingest {}\n", env!("CARGO_PKG_VERSION"));
928
+ for flag in ["--version", "-V"] {
929
+ let output = std::process::Command::new(env!("CARGO_BIN_EXE_codingest-mcp"))
930
+ .arg(flag)
931
+ .output()
932
+ .expect("spawn codingest-mcp --version");
933
+ assert!(
934
+ output.status.success(),
935
+ "{flag} exited {:?}",
936
+ output.status.code()
937
+ );
938
+ assert_eq!(String::from_utf8_lossy(&output.stdout), expected, "{flag}");
939
+ }
940
+ }
@@ -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.32", path = "../codingest", default-features = false }
45
+ codingest = { version = "0.2.33", 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.32", path = "../codingest-cli" }
56
+ codingest-cli = { version = "0.2.33", 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.32", path = "../codingest-mcp" }
61
+ codingest-mcp = { version = "0.2.33", path = "../codingest-mcp" }
@@ -86,7 +86,7 @@ fn load_via_kglite(py: Python<'_>, path: &Path) -> PyResult<Py<PyAny>> {
86
86
  PyRuntimeError::new_err(format!(
87
87
  "codingest.build() returns a kglite.KnowledgeGraph, but importing \
88
88
  `kglite` failed ({e}). Install it: `pip install \
89
- 'kglite>=0.21.1,<0.22'`."
89
+ 'kglite>=0.21.2,<0.22'`."
90
90
  ))
91
91
  })?;
92
92
  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.21.1"` == `>=0.21.1,<0.22.0`) exactly — bump both together.
45
+ # (`version = "0.21.2"` == `>=0.21.2,<0.22.0`) exactly — bump both together.
46
46
  dependencies = [
47
- "kglite>=0.21.1,<0.22",
47
+ "kglite>=0.21.2,<0.22",
48
48
  ]
49
49
 
50
50
  [project.urls]
File without changes
File without changes