codingest 0.2.30__tar.gz → 0.2.32__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.30 → codingest-0.2.32}/Cargo.lock +180 -31
  2. {codingest-0.2.30 → codingest-0.2.32}/Cargo.toml +14 -5
  3. {codingest-0.2.30 → codingest-0.2.32}/PKG-INFO +5 -5
  4. {codingest-0.2.30 → codingest-0.2.32}/README.md +3 -3
  5. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/Cargo.toml +1 -1
  6. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/Cargo.toml +1 -1
  7. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/skills/codingest-code-review/SKILL.md +1 -1
  8. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/skills/codingest-code-review/references/mcp-upgrade.md +1 -1
  9. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-mcp/Cargo.toml +1 -1
  10. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-mcp/src/lib.rs +24 -0
  11. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-py/Cargo.toml +3 -3
  12. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-py/src/lib.rs +1 -1
  13. {codingest-0.2.30 → codingest-0.2.32}/pyproject.toml +2 -2
  14. {codingest-0.2.30 → codingest-0.2.32}/LICENSE +0 -0
  15. {codingest-0.2.30 → codingest-0.2.32}/codingest/__init__.py +0 -0
  16. {codingest-0.2.30 → codingest-0.2.32}/codingest/__init__.pyi +0 -0
  17. {codingest-0.2.30 → codingest-0.2.32}/codingest/cli.py +0 -0
  18. {codingest-0.2.30 → codingest-0.2.32}/codingest/mcp_server.py +0 -0
  19. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/assets/code_review/recipes.json +0 -0
  20. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/assets/code_review/skill.md +0 -0
  21. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/bin/codingest_bench.rs +0 -0
  22. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/bin/codingest_stats.rs +0 -0
  23. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/call_edges.rs +0 -0
  24. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/js_workspace.rs +0 -0
  25. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/load/edge_frames.rs +0 -0
  26. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/load/entity_frames.rs +0 -0
  27. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/load.rs +0 -0
  28. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/mod.rs +0 -0
  29. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/other_edges.rs +0 -0
  30. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/routes/django.rs +0 -0
  31. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/routes/fastapi.rs +0 -0
  32. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/routes/flask.rs +0 -0
  33. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/routes/mod.rs +0 -0
  34. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/semantic_edges.rs +0 -0
  35. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/builder/type_edges.rs +0 -0
  36. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/cross_lang.rs +0 -0
  37. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/docs/mod.rs +0 -0
  38. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/docs/rst.rs +0 -0
  39. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/lib.rs +0 -0
  40. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/manifest/mod.rs +0 -0
  41. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/methodology.rs +0 -0
  42. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/models.rs +0 -0
  43. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/agc.rs +0 -0
  44. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/cpp.rs +0 -0
  45. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/csharp.rs +0 -0
  46. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/css.rs +0 -0
  47. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/dart.rs +0 -0
  48. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/go.rs +0 -0
  49. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/html.rs +0 -0
  50. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/java.rs +0 -0
  51. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/julia.rs +0 -0
  52. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/mod.rs +0 -0
  53. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/php.rs +0 -0
  54. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/python.rs +0 -0
  55. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/r.rs +0 -0
  56. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/registry.rs +0 -0
  57. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/rust_lang.rs +0 -0
  58. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/shared.rs +0 -0
  59. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/swift.rs +0 -0
  60. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/parsers/typescript.rs +0 -0
  61. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/repo.rs +0 -0
  62. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/src/rev.rs +0 -0
  63. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/agc_apollo.rs +0 -0
  64. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/README.md +0 -0
  65. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/agc_basic.sha256 +0 -0
  66. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/cpp_extern_c.sha256 +0 -0
  67. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/cpp_include.sha256 +0 -0
  68. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/cross_ts_py.sha256 +0 -0
  69. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/csharp_using_alias.sha256 +0 -0
  70. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/dart_import.sha256 +0 -0
  71. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/dart_part_of.sha256 +0 -0
  72. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/docs_ext_collide.sha256 +0 -0
  73. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/docs_mdx.sha256 +0 -0
  74. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/dup_minified_assets.sha256 +0 -0
  75. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/go_interface.sha256 +0 -0
  76. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/html_js_lang_group.sha256 +0 -0
  77. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/java_javadoc.sha256 +0 -0
  78. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/julia_basic.sha256 +0 -0
  79. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/php_group_use.sha256 +0 -0
  80. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/py_basic.sha256 +0 -0
  81. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/py_import.sha256 +0 -0
  82. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/py_inheritance.sha256 +0 -0
  83. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/py_nested_defs.sha256 +0 -0
  84. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/py_routes_dup.sha256 +0 -0
  85. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/py_src_layout.sha256 +0 -0
  86. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/r_basic.sha256 +0 -0
  87. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/rust_import.sha256 +0 -0
  88. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/rust_inline_mod.sha256 +0 -0
  89. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/rust_xfile.sha256 +0 -0
  90. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/swift_basic.sha256 +0 -0
  91. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/ts_callback.sha256 +0 -0
  92. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/ts_closure_scope.sha256 +0 -0
  93. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/ts_hof_binding.sha256 +0 -0
  94. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/ts_monorepo.sha256 +0 -0
  95. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/goldens/web_served_root.sha256 +0 -0
  96. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/grammar_kinds.rs +0 -0
  97. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/parity.rs +0 -0
  98. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest/tests/traversal_semantics.rs +0 -0
  99. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/skills/codingest-code-review/references/public-repositories.md +0 -0
  100. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/skills/codingest-code-review/references/queries.md +0 -0
  101. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/src/code_tree_cli.rs +0 -0
  102. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/src/lib.rs +0 -0
  103. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/src/main.rs +0 -0
  104. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/src/query.rs +0 -0
  105. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/src/skill.rs +0 -0
  106. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/src/skill_assets.rs +0 -0
  107. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/tests/embed_skills.rs +0 -0
  108. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/tests/exit_codes.rs +0 -0
  109. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-cli/tests/skill_recipes.rs +0 -0
  110. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-mcp/src/main.rs +0 -0
  111. {codingest-0.2.30 → codingest-0.2.32}/crates/codingest-mcp/tests/response_contract.rs +0 -0
@@ -251,6 +251,16 @@ dependencies = [
251
251
  "windows-link",
252
252
  ]
253
253
 
254
+ [[package]]
255
+ name = "chrono-tz"
256
+ version = "0.10.4"
257
+ source = "registry+https://github.com/rust-lang/crates.io-index"
258
+ checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3"
259
+ dependencies = [
260
+ "chrono",
261
+ "phf",
262
+ ]
263
+
254
264
  [[package]]
255
265
  name = "clap"
256
266
  version = "4.6.4"
@@ -302,7 +312,7 @@ dependencies = [
302
312
 
303
313
  [[package]]
304
314
  name = "codingest"
305
- version = "0.2.30"
315
+ version = "0.2.32"
306
316
  dependencies = [
307
317
  "aho-corasick",
308
318
  "base64 0.22.1",
@@ -338,7 +348,7 @@ dependencies = [
338
348
 
339
349
  [[package]]
340
350
  name = "codingest-cli"
341
- version = "0.2.30"
351
+ version = "0.2.32"
342
352
  dependencies = [
343
353
  "anyhow",
344
354
  "clap",
@@ -350,7 +360,7 @@ dependencies = [
350
360
 
351
361
  [[package]]
352
362
  name = "codingest-mcp"
353
- version = "0.2.30"
363
+ version = "0.2.32"
354
364
  dependencies = [
355
365
  "anyhow",
356
366
  "codingest",
@@ -361,7 +371,7 @@ dependencies = [
361
371
 
362
372
  [[package]]
363
373
  name = "codingest-py"
364
- version = "0.2.30"
374
+ version = "0.2.32"
365
375
  dependencies = [
366
376
  "codingest",
367
377
  "codingest-cli",
@@ -383,6 +393,35 @@ version = "0.10.2"
383
393
  source = "registry+https://github.com/rust-lang/crates.io-index"
384
394
  checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
385
395
 
396
+ [[package]]
397
+ name = "cookie"
398
+ version = "0.18.2"
399
+ source = "registry+https://github.com/rust-lang/crates.io-index"
400
+ checksum = "1a373e3602691c3cdea496d2f0ee5935151e6168fe87739483c463db1b2f2f87"
401
+ dependencies = [
402
+ "percent-encoding",
403
+ "time",
404
+ "version_check",
405
+ ]
406
+
407
+ [[package]]
408
+ name = "cookie_store"
409
+ version = "0.22.1"
410
+ source = "registry+https://github.com/rust-lang/crates.io-index"
411
+ checksum = "15b2c103cf610ec6cae3da84a766285b42fd16aad564758459e6ecf128c75206"
412
+ dependencies = [
413
+ "cookie",
414
+ "document-features",
415
+ "idna",
416
+ "indexmap",
417
+ "log",
418
+ "serde",
419
+ "serde_derive",
420
+ "serde_json",
421
+ "time",
422
+ "url",
423
+ ]
424
+
386
425
  [[package]]
387
426
  name = "core-foundation-sys"
388
427
  version = "0.8.7"
@@ -502,6 +541,12 @@ dependencies = [
502
541
  "syn 3.0.3",
503
542
  ]
504
543
 
544
+ [[package]]
545
+ name = "deranged"
546
+ version = "0.5.9"
547
+ source = "registry+https://github.com/rust-lang/crates.io-index"
548
+ checksum = "9e9de72ce2ad1f90dc62fa25f0f430ef85eb4b0d8fa0be4f30373bc40a21d28e"
549
+
505
550
  [[package]]
506
551
  name = "digest"
507
552
  version = "0.11.3"
@@ -524,6 +569,15 @@ dependencies = [
524
569
  "syn 2.0.119",
525
570
  ]
526
571
 
572
+ [[package]]
573
+ name = "document-features"
574
+ version = "0.2.12"
575
+ source = "registry+https://github.com/rust-lang/crates.io-index"
576
+ checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
577
+ dependencies = [
578
+ "litrs",
579
+ ]
580
+
527
581
  [[package]]
528
582
  name = "dyn-clone"
529
583
  version = "1.0.20"
@@ -1368,12 +1422,13 @@ dependencies = [
1368
1422
 
1369
1423
  [[package]]
1370
1424
  name = "kglite"
1371
- version = "0.19.6"
1425
+ version = "0.21.1"
1372
1426
  source = "registry+https://github.com/rust-lang/crates.io-index"
1373
- checksum = "bf7c5edd6e027b57ee1e24170dd74069556ae03fc66c2cfa98ed65f094c821e7"
1427
+ checksum = "8fd362f0e83b6c70f9dd5bb315694f86540a78e4efc3946e7852e5babb514e07"
1374
1428
  dependencies = [
1375
1429
  "bzip2",
1376
1430
  "chrono",
1431
+ "chrono-tz",
1377
1432
  "crc32fast",
1378
1433
  "csv",
1379
1434
  "fixedbitset",
@@ -1398,6 +1453,7 @@ dependencies = [
1398
1453
  "sha2",
1399
1454
  "stacker",
1400
1455
  "tempfile",
1456
+ "thin-vec",
1401
1457
  "walkdir",
1402
1458
  "wkt",
1403
1459
  "yaml-rust2",
@@ -1406,9 +1462,9 @@ dependencies = [
1406
1462
 
1407
1463
  [[package]]
1408
1464
  name = "kglite-mcp-server"
1409
- version = "0.19.6"
1465
+ version = "0.21.1"
1410
1466
  source = "registry+https://github.com/rust-lang/crates.io-index"
1411
- checksum = "f6005dd382c592ed3df23cbd14d8a0f53f3a251781dfa9285bd0734d73746907"
1467
+ checksum = "088af789bff7cb30e9ad4b47a4b69903dc3481e2176b5e07d2989db172e381aa"
1412
1468
  dependencies = [
1413
1469
  "anyhow",
1414
1470
  "base64 0.23.1",
@@ -1420,6 +1476,7 @@ dependencies = [
1420
1476
  "hyper",
1421
1477
  "hyper-util",
1422
1478
  "kglite",
1479
+ "libc",
1423
1480
  "mcp-methods",
1424
1481
  "regex",
1425
1482
  "rmcp",
@@ -1488,6 +1545,12 @@ version = "0.8.2"
1488
1545
  source = "registry+https://github.com/rust-lang/crates.io-index"
1489
1546
  checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
1490
1547
 
1548
+ [[package]]
1549
+ name = "litrs"
1550
+ version = "1.0.1"
1551
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1552
+ checksum = "4744e383959f0db86ede514b809b1c53251889093803c05267acc7d4e7030d70"
1553
+
1491
1554
  [[package]]
1492
1555
  name = "lock_api"
1493
1556
  version = "0.4.14"
@@ -1514,18 +1577,20 @@ dependencies = [
1514
1577
 
1515
1578
  [[package]]
1516
1579
  name = "mcp-methods"
1517
- version = "0.4.12"
1580
+ version = "0.5.1"
1518
1581
  source = "registry+https://github.com/rust-lang/crates.io-index"
1519
- checksum = "5bcc5fdac2ffd82893fbc640b569785bdc63ead7f3c6c3d695685b692ddf2d1a"
1582
+ checksum = "ca0ab1aa62a995ac646cd85b1cbeb5fbf37293aa87f77cd20378af36acb1a5d7"
1520
1583
  dependencies = [
1521
1584
  "anyhow",
1522
1585
  "clap",
1523
1586
  "fancy-regex",
1587
+ "futures",
1524
1588
  "globset",
1525
1589
  "grep-matcher",
1526
1590
  "grep-regex",
1527
1591
  "grep-searcher",
1528
1592
  "ignore",
1593
+ "libc",
1529
1594
  "notify",
1530
1595
  "notify-debouncer-mini",
1531
1596
  "regex",
@@ -1536,6 +1601,7 @@ dependencies = [
1536
1601
  "serde_yaml",
1537
1602
  "thiserror 2.0.19",
1538
1603
  "tokio",
1604
+ "tokio-util",
1539
1605
  "tracing",
1540
1606
  "tracing-subscriber",
1541
1607
  "ureq",
@@ -1626,6 +1692,12 @@ dependencies = [
1626
1692
  "windows-sys 0.61.2",
1627
1693
  ]
1628
1694
 
1695
+ [[package]]
1696
+ name = "num-conv"
1697
+ version = "0.2.2"
1698
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1699
+ checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
1700
+
1629
1701
  [[package]]
1630
1702
  name = "num-traits"
1631
1703
  version = "0.2.19"
@@ -1688,6 +1760,24 @@ dependencies = [
1688
1760
  "serde_derive",
1689
1761
  ]
1690
1762
 
1763
+ [[package]]
1764
+ name = "phf"
1765
+ version = "0.12.1"
1766
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1767
+ checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7"
1768
+ dependencies = [
1769
+ "phf_shared",
1770
+ ]
1771
+
1772
+ [[package]]
1773
+ name = "phf_shared"
1774
+ version = "0.12.1"
1775
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1776
+ checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981"
1777
+ dependencies = [
1778
+ "siphasher",
1779
+ ]
1780
+
1691
1781
  [[package]]
1692
1782
  name = "pin-project-lite"
1693
1783
  version = "0.2.17"
@@ -1727,6 +1817,12 @@ dependencies = [
1727
1817
  "zerovec",
1728
1818
  ]
1729
1819
 
1820
+ [[package]]
1821
+ name = "powerfmt"
1822
+ version = "0.2.1"
1823
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1824
+ checksum = "4a6394b9e965e73d0a289ee54f589087e2c676aedf60885baf52c76b771e4958"
1825
+
1730
1826
  [[package]]
1731
1827
  name = "proc-macro2"
1732
1828
  version = "1.0.107"
@@ -2079,9 +2175,9 @@ dependencies = [
2079
2175
 
2080
2176
  [[package]]
2081
2177
  name = "rustls"
2082
- version = "0.23.42"
2178
+ version = "0.23.46"
2083
2179
  source = "registry+https://github.com/rust-lang/crates.io-index"
2084
- checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138"
2180
+ checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf"
2085
2181
  dependencies = [
2086
2182
  "log",
2087
2183
  "once_cell",
@@ -2103,9 +2199,9 @@ dependencies = [
2103
2199
 
2104
2200
  [[package]]
2105
2201
  name = "rustls-webpki"
2106
- version = "0.103.13"
2202
+ version = "0.103.16"
2107
2203
  source = "registry+https://github.com/rust-lang/crates.io-index"
2108
- checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
2204
+ checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281"
2109
2205
  dependencies = [
2110
2206
  "ring",
2111
2207
  "rustls-pki-types",
@@ -2286,6 +2382,12 @@ version = "0.3.10"
2286
2382
  source = "registry+https://github.com/rust-lang/crates.io-index"
2287
2383
  checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
2288
2384
 
2385
+ [[package]]
2386
+ name = "siphasher"
2387
+ version = "1.0.4"
2388
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2389
+ checksum = "33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256"
2390
+
2289
2391
  [[package]]
2290
2392
  name = "slab"
2291
2393
  version = "0.4.12"
@@ -2406,6 +2508,12 @@ dependencies = [
2406
2508
  "windows-sys 0.61.2",
2407
2509
  ]
2408
2510
 
2511
+ [[package]]
2512
+ name = "thin-vec"
2513
+ version = "0.2.21"
2514
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2515
+ checksum = "d6a4b9ba8738cb4a4f399d37e266becfd475e75eb73425b87a05a2f2039ba63e"
2516
+
2409
2517
  [[package]]
2410
2518
  name = "thiserror"
2411
2519
  version = "1.0.69"
@@ -2455,6 +2563,36 @@ dependencies = [
2455
2563
  "cfg-if",
2456
2564
  ]
2457
2565
 
2566
+ [[package]]
2567
+ name = "time"
2568
+ version = "0.3.55"
2569
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2570
+ checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"
2571
+ dependencies = [
2572
+ "deranged",
2573
+ "num-conv",
2574
+ "powerfmt",
2575
+ "serde_core",
2576
+ "time-core",
2577
+ "time-macros",
2578
+ ]
2579
+
2580
+ [[package]]
2581
+ name = "time-core"
2582
+ version = "0.1.9"
2583
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2584
+ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
2585
+
2586
+ [[package]]
2587
+ name = "time-macros"
2588
+ version = "0.2.32"
2589
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2590
+ checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85"
2591
+ dependencies = [
2592
+ "num-conv",
2593
+ "time-core",
2594
+ ]
2595
+
2458
2596
  [[package]]
2459
2597
  name = "tinystr"
2460
2598
  version = "0.8.3"
@@ -2833,20 +2971,34 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
2833
2971
 
2834
2972
  [[package]]
2835
2973
  name = "ureq"
2836
- version = "2.12.1"
2974
+ version = "3.5.0"
2837
2975
  source = "registry+https://github.com/rust-lang/crates.io-index"
2838
- checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d"
2976
+ checksum = "cde93ff05758a36a851a398a772b0b79a82fbe3c186a46f2696baaeaf84c966b"
2839
2977
  dependencies = [
2840
- "base64 0.22.1",
2978
+ "base64 0.23.1",
2979
+ "cookie_store",
2841
2980
  "flate2",
2842
2981
  "log",
2843
- "once_cell",
2982
+ "percent-encoding",
2844
2983
  "rustls",
2845
2984
  "rustls-pki-types",
2846
2985
  "serde",
2847
2986
  "serde_json",
2848
- "url",
2849
- "webpki-roots 0.26.11",
2987
+ "ureq-proto",
2988
+ "utf8-zero",
2989
+ "webpki-roots",
2990
+ ]
2991
+
2992
+ [[package]]
2993
+ name = "ureq-proto"
2994
+ version = "0.6.5"
2995
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2996
+ checksum = "841583fc36089d7d59419568ae157f43a5a03a2e5a81ba87c77d1596ef46e922"
2997
+ dependencies = [
2998
+ "base64 0.23.1",
2999
+ "http",
3000
+ "httparse",
3001
+ "log",
2850
3002
  ]
2851
3003
 
2852
3004
  [[package]]
@@ -2861,6 +3013,12 @@ dependencies = [
2861
3013
  "serde",
2862
3014
  ]
2863
3015
 
3016
+ [[package]]
3017
+ name = "utf8-zero"
3018
+ version = "0.8.1"
3019
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3020
+ checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e"
3021
+
2864
3022
  [[package]]
2865
3023
  name = "utf8_iter"
2866
3024
  version = "1.0.4"
@@ -2959,18 +3117,9 @@ dependencies = [
2959
3117
 
2960
3118
  [[package]]
2961
3119
  name = "webpki-roots"
2962
- version = "0.26.11"
2963
- source = "registry+https://github.com/rust-lang/crates.io-index"
2964
- checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
2965
- dependencies = [
2966
- "webpki-roots 1.0.9",
2967
- ]
2968
-
2969
- [[package]]
2970
- name = "webpki-roots"
2971
- version = "1.0.9"
3120
+ version = "1.0.11"
2972
3121
  source = "registry+https://github.com/rust-lang/crates.io-index"
2973
- checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a"
3122
+ checksum = "f5f280bbb2b287bc8e7de7e3852945a0ff50d1bbcb5ed42b6c7a568c546df171"
2974
3123
  dependencies = [
2975
3124
  "rustls-pki-types",
2976
3125
  ]
@@ -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.30"
6
+ version = "0.2.32"
7
7
  edition = "2021"
8
8
  rust-version = "1.88"
9
9
  license = "MIT"
@@ -12,8 +12,17 @@ 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.19.6
16
- # floor is a patch step within 0.19 (0.19.4 -> 0.19.6, taking 0.19.5 with it).
15
+ # kglite engine + MCP server — imported as crates.io libraries. The 0.21.1
16
+ # floor is an engine minor (0.20.0 -> 0.21.1, taking 0.21.0 with it): graphs of
17
+ # 65,536 nodes or more save as `.kgl` v9, which kglite before 0.21.0 refuses, so
18
+ # the Python pin moves in lockstep. Its Rust API breaks (`LoadOptions`
19
+ # non-exhaustive, `KgError`/`GraphBackend` variants, `GraphInfo` fields) reach
20
+ # nothing here. The earlier 0.20.0
21
+ # floor is an engine minor (0.19.6 -> 0.20.0, taking 0.19.7 with it): `.kgl` v8
22
+ # files are unreadable by 0.19.x, so the Python pin moves in lockstep. Its new
23
+ # `Value` variants break exhaustive matches, but codingest matches `Value` only
24
+ # with wildcard arms; the builder writes no temporal values. The 0.19.6
25
+ # floor was a patch step within 0.19 (0.19.4 -> 0.19.6, taking 0.19.5 with it).
17
26
  # Its Rust API changes do not reach codingest: `KgError` / `KgErrorCode` gained
18
27
  # variants but codingest only boxes a `KgError` and never matches it,
19
28
  # `OntologyStore` gained `closed_labels` / `enforcement` but codingest declares
@@ -648,8 +657,8 @@ sha2 = "0.11"
648
657
  # and no disk storage. Neither 0.15.7 nor 0.15.8 changes the `kglite::api` we
649
658
  # call, graph output, property encoding, or `.kgl` serialization.
650
659
  # Keep both libraries aligned so the graph and server share one engine release.
651
- kglite = { version = "0.19.6", default-features = false }
652
- kglite-mcp-server = { version = "0.19.6", default-features = false }
660
+ kglite = { version = "0.21.1", default-features = false }
661
+ kglite-mcp-server = { version = "0.21.1", default-features = false }
653
662
 
654
663
  # Dependency debuginfo capped at line tables (kglite coordination, 2026-08-31,
655
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.30
3
+ Version: 0.2.32
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.19.6,<0.20
15
+ Requires-Dist: kglite>=0.21.1,<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.19.6 is installed automatically as the query/storage
197
+ commands. KGLite ≥0.21.1 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.19.6"
210
+ kglite = "0.21.1"
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.19.6 minimum and a shared lockfile. This keeps the builder, persistence
282
+ 0.21.1 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.19.6 is installed automatically as the query/storage
170
+ commands. KGLite ≥0.21.1 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.19.6"
183
+ kglite = "0.21.1"
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.19.6 minimum and a shared lockfile. This keeps the builder, persistence
255
+ 0.21.1 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.19.6).
13
+ # workspace pins the current engine floor (0.21.1).
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.30", path = "../codingest" }
17
+ codingest = { version = "0.2.32", 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.19.6,<0.20`; verify `kglite --version` before using its
17
+ > `kglite>=0.21.1,<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.19.6,<0.20`:
57
+ `>=0.21.1,<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.30", path = "../codingest" }
17
+ codingest = { version = "0.2.32", path = "../codingest" }
18
18
  kglite-mcp-server = { workspace = true }
19
19
  anyhow = "1.0.104"
20
20
 
@@ -81,6 +81,11 @@ 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`).
88
+ .with_identity("codingest", env!("CARGO_PKG_VERSION"))
84
89
  .with_workspace_graph(hooks)
85
90
  .with_skills([codingest::methodology::skill_record()])
86
91
  .with_recipes(recipes))
@@ -96,13 +101,32 @@ where
96
101
  I: IntoIterator<Item = T>,
97
102
  T: Into<std::ffi::OsString> + Clone,
98
103
  {
104
+ 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
+ }
99
109
  kglite_mcp_server::run_with_extensions(args, server_extensions()?)
100
110
  }
101
111
 
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
+
102
118
  #[cfg(test)]
103
119
  mod tests {
104
120
  use super::*;
105
121
 
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
+
106
130
  #[test]
107
131
  fn graph_source_predicate_includes_code_and_docs_only() {
108
132
  assert!(is_graph_source(Path::new("src/lib.rs")));
@@ -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.30", path = "../codingest", default-features = false }
45
+ codingest = { version = "0.2.32", 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.30", path = "../codingest-cli" }
56
+ codingest-cli = { version = "0.2.32", 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.30", path = "../codingest-mcp" }
61
+ codingest-mcp = { version = "0.2.32", 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.19.6,<0.20'`."
89
+ 'kglite>=0.21.1,<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.19.6"` == `>=0.19.6,<0.20.0`) exactly — bump both together.
45
+ # (`version = "0.21.1"` == `>=0.21.1,<0.22.0`) exactly — bump both together.
46
46
  dependencies = [
47
- "kglite>=0.19.6,<0.20",
47
+ "kglite>=0.21.1,<0.22",
48
48
  ]
49
49
 
50
50
  [project.urls]
File without changes
File without changes