vsh-python 0.3.1__tar.gz → 0.5.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.
- {vsh_python-0.3.1 → vsh_python-0.5.0}/Cargo.lock +70 -44
- {vsh_python-0.3.1 → vsh_python-0.5.0}/Cargo.toml +15 -14
- {vsh_python-0.3.1 → vsh_python-0.5.0}/PKG-INFO +72 -17
- {vsh_python-0.3.1 → vsh_python-0.5.0}/README.md +68 -16
- {vsh_python-0.3.1 → vsh_python-0.5.0}/THIRD_PARTY_NOTICES.md +2 -2
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vbash/Cargo.toml +1 -0
- vsh_python-0.5.0/crates/vbash/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vbash/examples/native_benchmark.rs +29 -1
- vsh_python-0.5.0/crates/vbash/examples/staged_release.monty +11 -0
- vsh_python-0.5.0/crates/vbash/examples/staged_release.rs +79 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vbash/src/artifact.rs +296 -6
- vsh_python-0.5.0/crates/vbash/src/hook.rs +513 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vbash/src/lib.rs +13 -5
- vsh_python-0.5.0/crates/vbash/src/review.rs +98 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vbash/src/runtime.rs +951 -28
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh/Cargo.toml +2 -1
- vsh_python-0.5.0/crates/vsh/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-commit/Cargo.toml +1 -0
- vsh_python-0.5.0/crates/vsh-commit/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-commit/src/tests.rs +4 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-monty/Cargo.toml +4 -4
- vsh_python-0.5.0/crates/vsh-monty/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-monty/src/lib.rs +336 -37
- vsh_python-0.5.0/crates/vsh-monty/src/tools.rs +1085 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-monty/src/worker.rs +72 -28
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-policy/Cargo.toml +1 -0
- vsh_python-0.5.0/crates/vsh-policy/README.md +220 -0
- vsh_python-0.5.0/crates/vsh-policy/examples/policy_benchmark.rs +58 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-policy/src/lib.rs +203 -55
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-python/Cargo.toml +2 -1
- vsh_python-0.5.0/crates/vsh-python/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-python/src/lib.rs +545 -3
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-store/Cargo.toml +1 -0
- vsh_python-0.5.0/crates/vsh-store/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-store/src/lib.rs +1 -1
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-store/src/persistent.rs +2 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-types/Cargo.toml +1 -0
- vsh_python-0.5.0/crates/vsh-types/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-types/src/lib.rs +122 -3
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-vfs/Cargo.toml +1 -0
- vsh_python-0.5.0/crates/vsh-vfs/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-vfs/src/lib.rs +123 -20
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-worker/Cargo.toml +2 -1
- vsh_python-0.5.0/crates/vsh-worker/README.md +220 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-worker/src/child.rs +73 -17
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-worker/src/main.rs +1 -1
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-worker/tests/subprocess.rs +60 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/pyproject.toml +19 -53
- {vsh_python-0.3.1 → vsh_python-0.5.0}/scripts/vsh_build_backend.py +1 -1
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/__init__.py +24 -0
- vsh_python-0.5.0/src/vsh/_judge.py +347 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/_native.pyi +176 -0
- vsh_python-0.5.0/src/vsh/hooks.py +217 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/mcp/codemode_server.py +7 -15
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/mcp/prompts.py +4 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/mcp/surface.py +1 -6
- vsh_python-0.5.0/src/vsh/pydantic_ai.py +317 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/LICENSE +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh/src/lib.rs +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-commit/src/committer.rs +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-commit/src/host.rs +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-commit/src/journal.rs +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-commit/src/lib.rs +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-commit/src/plan.rs +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-store/src/directory.rs +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/crates/vsh-worker/src/lib.rs +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/rust-toolchain.toml +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/__main__.py +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/_version.py +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/cli.py +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/mcp/__init__.py +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/mcp/native_tools.py +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/mcp/server.py +0 -0
- {vsh_python-0.3.1 → vsh_python-0.5.0}/src/vsh/py.typed +0 -0
|
@@ -245,6 +245,18 @@ version = "1.0.4"
|
|
|
245
245
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
246
246
|
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
247
247
|
|
|
248
|
+
[[package]]
|
|
249
|
+
name = "char_str"
|
|
250
|
+
version = "0.0.2"
|
|
251
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
252
|
+
checksum = "576ba56f6ca18ebb069d0d07260407171712aff4dfe15ee3f8982dc16a455bcf"
|
|
253
|
+
dependencies = [
|
|
254
|
+
"castaway",
|
|
255
|
+
"get-size2",
|
|
256
|
+
"itoa",
|
|
257
|
+
"ryu",
|
|
258
|
+
]
|
|
259
|
+
|
|
248
260
|
[[package]]
|
|
249
261
|
name = "chrono"
|
|
250
262
|
version = "0.4.45"
|
|
@@ -276,16 +288,15 @@ checksum = "2550f75b8cfac212855f6b1885455df8eaee8fe8e246b647d69146142e016084"
|
|
|
276
288
|
|
|
277
289
|
[[package]]
|
|
278
290
|
name = "compact_str"
|
|
279
|
-
version = "0.
|
|
291
|
+
version = "0.10.0"
|
|
280
292
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
281
|
-
checksum = "
|
|
293
|
+
checksum = "79fcda08c33bb58b97008b2cdada6622500e949e060f5913361763121abd2416"
|
|
282
294
|
dependencies = [
|
|
283
295
|
"castaway",
|
|
284
296
|
"cfg-if",
|
|
285
297
|
"itoa",
|
|
286
|
-
"rustversion",
|
|
287
|
-
"ryu",
|
|
288
298
|
"static_assertions",
|
|
299
|
+
"zmij",
|
|
289
300
|
]
|
|
290
301
|
|
|
291
302
|
[[package]]
|
|
@@ -337,6 +348,12 @@ dependencies = [
|
|
|
337
348
|
"syn 3.0.4",
|
|
338
349
|
]
|
|
339
350
|
|
|
351
|
+
[[package]]
|
|
352
|
+
name = "drop_bomb"
|
|
353
|
+
version = "0.1.5"
|
|
354
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
355
|
+
checksum = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1"
|
|
356
|
+
|
|
340
357
|
[[package]]
|
|
341
358
|
name = "either"
|
|
342
359
|
version = "1.18.0"
|
|
@@ -448,9 +465,9 @@ dependencies = [
|
|
|
448
465
|
|
|
449
466
|
[[package]]
|
|
450
467
|
name = "get-size2"
|
|
451
|
-
version = "0.10.
|
|
468
|
+
version = "0.10.3"
|
|
452
469
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
453
|
-
checksum = "
|
|
470
|
+
checksum = "b411f34418305908ab15a82ff78958c2a9aee9a272b2a2e663836b20a4e4b9d3"
|
|
454
471
|
dependencies = [
|
|
455
472
|
"compact_str",
|
|
456
473
|
"get-size-derive2",
|
|
@@ -832,13 +849,14 @@ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
|
|
|
832
849
|
|
|
833
850
|
[[package]]
|
|
834
851
|
name = "monty"
|
|
835
|
-
version = "0.0.
|
|
852
|
+
version = "0.0.22"
|
|
836
853
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
837
|
-
checksum = "
|
|
854
|
+
checksum = "a7d13cc6e5bbcadffceadecd5cbe51a765a29451381d6ed760b23933fb714f37"
|
|
838
855
|
dependencies = [
|
|
839
856
|
"ahash",
|
|
840
857
|
"chrono",
|
|
841
858
|
"fancy-regex",
|
|
859
|
+
"getrandom 0.3.4",
|
|
842
860
|
"hashbrown 0.16.1",
|
|
843
861
|
"indexmap",
|
|
844
862
|
"itertools 0.14.0",
|
|
@@ -869,18 +887,18 @@ dependencies = [
|
|
|
869
887
|
|
|
870
888
|
[[package]]
|
|
871
889
|
name = "monty-alloc"
|
|
872
|
-
version = "0.0.
|
|
890
|
+
version = "0.0.22"
|
|
873
891
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
874
|
-
checksum = "
|
|
892
|
+
checksum = "a0caad99e04b35d032ebd8c51a2c157255035d0a6c106960420c35adb80a9827"
|
|
875
893
|
dependencies = [
|
|
876
894
|
"monty-types",
|
|
877
895
|
]
|
|
878
896
|
|
|
879
897
|
[[package]]
|
|
880
898
|
name = "monty-macros"
|
|
881
|
-
version = "0.0.
|
|
899
|
+
version = "0.0.22"
|
|
882
900
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
883
|
-
checksum = "
|
|
901
|
+
checksum = "017842a9c6539f60ced38edab5b75a3c35223e908e9221c3b5c1a08537e21d2b"
|
|
884
902
|
dependencies = [
|
|
885
903
|
"proc-macro2",
|
|
886
904
|
"quote",
|
|
@@ -889,9 +907,9 @@ dependencies = [
|
|
|
889
907
|
|
|
890
908
|
[[package]]
|
|
891
909
|
name = "monty-proto"
|
|
892
|
-
version = "0.0.
|
|
910
|
+
version = "0.0.22"
|
|
893
911
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
894
|
-
checksum = "
|
|
912
|
+
checksum = "f08c2cfd327e6fcb45f7e2c4dae9bbe9aa8a2cc99c292798a8a11531b30ebd90"
|
|
895
913
|
dependencies = [
|
|
896
914
|
"monty-types",
|
|
897
915
|
"num-bigint",
|
|
@@ -901,9 +919,9 @@ dependencies = [
|
|
|
901
919
|
|
|
902
920
|
[[package]]
|
|
903
921
|
name = "monty-types"
|
|
904
|
-
version = "0.0.
|
|
922
|
+
version = "0.0.22"
|
|
905
923
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
906
|
-
checksum = "
|
|
924
|
+
checksum = "7cde2e299aa36171838b74a67ef7d3fbd116174ccaf2cbdd537a42a9658c024d"
|
|
907
925
|
dependencies = [
|
|
908
926
|
"chrono",
|
|
909
927
|
"monty-macros",
|
|
@@ -1234,13 +1252,14 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
|
|
|
1234
1252
|
|
|
1235
1253
|
[[package]]
|
|
1236
1254
|
name = "ruff_python_ast"
|
|
1237
|
-
version = "0.0.
|
|
1255
|
+
version = "0.0.9"
|
|
1238
1256
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1239
|
-
checksum = "
|
|
1257
|
+
checksum = "2ca96e1ff7a76b0235df556968ae10e5f8a00a0efa3061f247ad18365f769c2d"
|
|
1240
1258
|
dependencies = [
|
|
1241
1259
|
"aho-corasick",
|
|
1242
1260
|
"arrayvec",
|
|
1243
1261
|
"bitflags",
|
|
1262
|
+
"char_str",
|
|
1244
1263
|
"compact_str",
|
|
1245
1264
|
"get-size2",
|
|
1246
1265
|
"is-macro",
|
|
@@ -1255,9 +1274,9 @@ dependencies = [
|
|
|
1255
1274
|
|
|
1256
1275
|
[[package]]
|
|
1257
1276
|
name = "ruff_python_codegen"
|
|
1258
|
-
version = "0.0.
|
|
1277
|
+
version = "0.0.9"
|
|
1259
1278
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1260
|
-
checksum = "
|
|
1279
|
+
checksum = "d160278f35f69e31610f068ecac420baaee14be8b1defadc4ea464b5c5523b78"
|
|
1261
1280
|
dependencies = [
|
|
1262
1281
|
"ruff_python_ast",
|
|
1263
1282
|
"ruff_python_literal",
|
|
@@ -1268,9 +1287,9 @@ dependencies = [
|
|
|
1268
1287
|
|
|
1269
1288
|
[[package]]
|
|
1270
1289
|
name = "ruff_python_literal"
|
|
1271
|
-
version = "0.0.
|
|
1290
|
+
version = "0.0.9"
|
|
1272
1291
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1273
|
-
checksum = "
|
|
1292
|
+
checksum = "66ef25a922a0345c97a9eda5896a8bc9313b937b828596c4c65016e206285663"
|
|
1274
1293
|
dependencies = [
|
|
1275
1294
|
"bitflags",
|
|
1276
1295
|
"icu_properties",
|
|
@@ -1280,13 +1299,13 @@ dependencies = [
|
|
|
1280
1299
|
|
|
1281
1300
|
[[package]]
|
|
1282
1301
|
name = "ruff_python_parser"
|
|
1283
|
-
version = "0.0.
|
|
1302
|
+
version = "0.0.9"
|
|
1284
1303
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1285
|
-
checksum = "
|
|
1304
|
+
checksum = "1cf63608d433331007574be9d7fa17f3d99fc4b9305abcd9cf47a8033690628d"
|
|
1286
1305
|
dependencies = [
|
|
1287
1306
|
"bitflags",
|
|
1288
1307
|
"bstr",
|
|
1289
|
-
"
|
|
1308
|
+
"drop_bomb",
|
|
1290
1309
|
"get-size2",
|
|
1291
1310
|
"memchr",
|
|
1292
1311
|
"ruff_python_ast",
|
|
@@ -1302,9 +1321,9 @@ dependencies = [
|
|
|
1302
1321
|
|
|
1303
1322
|
[[package]]
|
|
1304
1323
|
name = "ruff_python_stdlib"
|
|
1305
|
-
version = "0.0.
|
|
1324
|
+
version = "0.0.9"
|
|
1306
1325
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1307
|
-
checksum = "
|
|
1326
|
+
checksum = "cbd1e8d8e6d805f5a39a38ae2c7db3e885ef598fabeea36443f2a35c07f555bc"
|
|
1308
1327
|
dependencies = [
|
|
1309
1328
|
"bitflags",
|
|
1310
1329
|
"unicode-ident",
|
|
@@ -1312,21 +1331,22 @@ dependencies = [
|
|
|
1312
1331
|
|
|
1313
1332
|
[[package]]
|
|
1314
1333
|
name = "ruff_python_trivia"
|
|
1315
|
-
version = "0.0.
|
|
1334
|
+
version = "0.0.9"
|
|
1316
1335
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1317
|
-
checksum = "
|
|
1336
|
+
checksum = "cb21454ef368d9f4f55cc3d42cf262fa61cd4109e3f1c8aeb138d696b74d563d"
|
|
1318
1337
|
dependencies = [
|
|
1319
1338
|
"itertools 0.15.0",
|
|
1320
1339
|
"ruff_source_file",
|
|
1321
1340
|
"ruff_text_size",
|
|
1341
|
+
"rustc-hash",
|
|
1322
1342
|
"unicode-ident",
|
|
1323
1343
|
]
|
|
1324
1344
|
|
|
1325
1345
|
[[package]]
|
|
1326
1346
|
name = "ruff_source_file"
|
|
1327
|
-
version = "0.0.
|
|
1347
|
+
version = "0.0.9"
|
|
1328
1348
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1329
|
-
checksum = "
|
|
1349
|
+
checksum = "9d7b074f9b29744b641588c521c6943534ca6e7c161b2b1299c01d1cc1b860f3"
|
|
1330
1350
|
dependencies = [
|
|
1331
1351
|
"memchr",
|
|
1332
1352
|
"ruff_text_size",
|
|
@@ -1334,9 +1354,9 @@ dependencies = [
|
|
|
1334
1354
|
|
|
1335
1355
|
[[package]]
|
|
1336
1356
|
name = "ruff_text_size"
|
|
1337
|
-
version = "0.0.
|
|
1357
|
+
version = "0.0.9"
|
|
1338
1358
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1339
|
-
checksum = "
|
|
1359
|
+
checksum = "0944e5527042c3e1ef3e79bfed2655fe3ae66433f0112fa38d702e078f549d49"
|
|
1340
1360
|
dependencies = [
|
|
1341
1361
|
"get-size2",
|
|
1342
1362
|
]
|
|
@@ -1666,7 +1686,7 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
|
|
1666
1686
|
|
|
1667
1687
|
[[package]]
|
|
1668
1688
|
name = "vbash"
|
|
1669
|
-
version = "0.
|
|
1689
|
+
version = "0.5.0"
|
|
1670
1690
|
dependencies = [
|
|
1671
1691
|
"vsh",
|
|
1672
1692
|
]
|
|
@@ -1679,14 +1699,14 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
|
1679
1699
|
|
|
1680
1700
|
[[package]]
|
|
1681
1701
|
name = "vsh"
|
|
1682
|
-
version = "0.
|
|
1702
|
+
version = "0.5.0"
|
|
1683
1703
|
dependencies = [
|
|
1684
1704
|
"vsh-runtime",
|
|
1685
1705
|
]
|
|
1686
1706
|
|
|
1687
1707
|
[[package]]
|
|
1688
1708
|
name = "vsh-commit"
|
|
1689
|
-
version = "0.
|
|
1709
|
+
version = "0.5.0"
|
|
1690
1710
|
dependencies = [
|
|
1691
1711
|
"blake3",
|
|
1692
1712
|
"cap-fs-ext",
|
|
@@ -1699,7 +1719,7 @@ dependencies = [
|
|
|
1699
1719
|
|
|
1700
1720
|
[[package]]
|
|
1701
1721
|
name = "vsh-monty"
|
|
1702
|
-
version = "0.
|
|
1722
|
+
version = "0.5.0"
|
|
1703
1723
|
dependencies = [
|
|
1704
1724
|
"get-size2",
|
|
1705
1725
|
"monty",
|
|
@@ -1713,7 +1733,7 @@ dependencies = [
|
|
|
1713
1733
|
|
|
1714
1734
|
[[package]]
|
|
1715
1735
|
name = "vsh-monty-worker"
|
|
1716
|
-
version = "0.
|
|
1736
|
+
version = "0.5.0"
|
|
1717
1737
|
dependencies = [
|
|
1718
1738
|
"monty",
|
|
1719
1739
|
"monty-alloc",
|
|
@@ -1728,7 +1748,7 @@ dependencies = [
|
|
|
1728
1748
|
|
|
1729
1749
|
[[package]]
|
|
1730
1750
|
name = "vsh-policy"
|
|
1731
|
-
version = "0.
|
|
1751
|
+
version = "0.5.0"
|
|
1732
1752
|
dependencies = [
|
|
1733
1753
|
"vsh-store",
|
|
1734
1754
|
"vsh-types",
|
|
@@ -1737,7 +1757,7 @@ dependencies = [
|
|
|
1737
1757
|
|
|
1738
1758
|
[[package]]
|
|
1739
1759
|
name = "vsh-python"
|
|
1740
|
-
version = "0.
|
|
1760
|
+
version = "0.5.0"
|
|
1741
1761
|
dependencies = [
|
|
1742
1762
|
"monty-proto",
|
|
1743
1763
|
"pyo3",
|
|
@@ -1747,7 +1767,7 @@ dependencies = [
|
|
|
1747
1767
|
|
|
1748
1768
|
[[package]]
|
|
1749
1769
|
name = "vsh-runtime"
|
|
1750
|
-
version = "0.
|
|
1770
|
+
version = "0.5.0"
|
|
1751
1771
|
dependencies = [
|
|
1752
1772
|
"postcard",
|
|
1753
1773
|
"vsh-commit",
|
|
@@ -1760,7 +1780,7 @@ dependencies = [
|
|
|
1760
1780
|
|
|
1761
1781
|
[[package]]
|
|
1762
1782
|
name = "vsh-store"
|
|
1763
|
-
version = "0.
|
|
1783
|
+
version = "0.5.0"
|
|
1764
1784
|
dependencies = [
|
|
1765
1785
|
"blake3",
|
|
1766
1786
|
"cap-fs-ext",
|
|
@@ -1770,14 +1790,14 @@ dependencies = [
|
|
|
1770
1790
|
|
|
1771
1791
|
[[package]]
|
|
1772
1792
|
name = "vsh-types"
|
|
1773
|
-
version = "0.
|
|
1793
|
+
version = "0.5.0"
|
|
1774
1794
|
dependencies = [
|
|
1775
1795
|
"blake3",
|
|
1776
1796
|
]
|
|
1777
1797
|
|
|
1778
1798
|
[[package]]
|
|
1779
1799
|
name = "vsh-vfs"
|
|
1780
|
-
version = "0.
|
|
1800
|
+
version = "0.5.0"
|
|
1781
1801
|
dependencies = [
|
|
1782
1802
|
"vsh-store",
|
|
1783
1803
|
"vsh-types",
|
|
@@ -2195,3 +2215,9 @@ dependencies = [
|
|
|
2195
2215
|
"quote",
|
|
2196
2216
|
"syn 3.0.4",
|
|
2197
2217
|
]
|
|
2218
|
+
|
|
2219
|
+
[[package]]
|
|
2220
|
+
name = "zmij"
|
|
2221
|
+
version = "1.0.23"
|
|
2222
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2223
|
+
checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
|
|
@@ -3,11 +3,12 @@ resolver = "3"
|
|
|
3
3
|
members = ["crates/vsh-types", "crates/vsh-store", "crates/vsh-vfs", "crates/vsh-policy", "crates/vsh-monty", "crates/vsh-commit", "crates/vbash", "crates/vsh", "crates/vsh-python", "crates/vsh-worker"]
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "0.
|
|
6
|
+
version = "0.5.0"
|
|
7
7
|
edition = "2024"
|
|
8
8
|
rust-version = "1.95"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["Mert <62549656+fswair@users.noreply.github.com>"]
|
|
11
|
+
readme = "README.md"
|
|
11
12
|
repository = "https://github.com/fswair/vsh"
|
|
12
13
|
homepage = "https://github.com/fswair/vsh"
|
|
13
14
|
|
|
@@ -15,21 +16,21 @@ homepage = "https://github.com/fswair/vsh"
|
|
|
15
16
|
blake3 = { version = "=1.8.7", default-features = false, features = ["std"] }
|
|
16
17
|
cap-fs-ext = { version = "=4.0.3", default-features = false, features = ["std"] }
|
|
17
18
|
cap-std = { version = "=4.0.3", default-features = false }
|
|
18
|
-
get-size2 = { version = "=0.10.
|
|
19
|
-
monty = { version = "=0.0.
|
|
20
|
-
monty-alloc = { version = "=0.0.
|
|
21
|
-
monty-proto = { version = "=0.0.
|
|
22
|
-
monty-types = { version = "=0.0.
|
|
19
|
+
get-size2 = { version = "=0.10.3", default-features = false }
|
|
20
|
+
monty = { version = "=0.0.22", default-features = false }
|
|
21
|
+
monty-alloc = { version = "=0.0.22", default-features = false, features = ["exit-code"] }
|
|
22
|
+
monty-proto = { version = "=0.0.22", default-features = false }
|
|
23
|
+
monty-types = { version = "=0.0.22", default-features = false }
|
|
23
24
|
postcard = { version = "=1.1.3", default-features = false, features = ["alloc"] }
|
|
24
25
|
pyo3 = { version = "=0.29.2", default-features = false }
|
|
25
|
-
vsh-monty = { path = "crates/vsh-monty", version = "=0.
|
|
26
|
-
vsh-commit = { path = "crates/vsh-commit", version = "=0.
|
|
27
|
-
vsh-policy = { path = "crates/vsh-policy", version = "=0.
|
|
28
|
-
vsh-types = { path = "crates/vsh-types", version = "=0.
|
|
29
|
-
vsh-store = { path = "crates/vsh-store", version = "=0.
|
|
30
|
-
vsh-vfs = { path = "crates/vsh-vfs", version = "=0.
|
|
31
|
-
vsh-runtime = { path = "crates/vbash", version = "=0.
|
|
32
|
-
vsh = { path = "crates/vsh", version = "=0.
|
|
26
|
+
vsh-monty = { path = "crates/vsh-monty", version = "=0.5.0" }
|
|
27
|
+
vsh-commit = { path = "crates/vsh-commit", version = "=0.5.0" }
|
|
28
|
+
vsh-policy = { path = "crates/vsh-policy", version = "=0.5.0" }
|
|
29
|
+
vsh-types = { path = "crates/vsh-types", version = "=0.5.0" }
|
|
30
|
+
vsh-store = { path = "crates/vsh-store", version = "=0.5.0" }
|
|
31
|
+
vsh-vfs = { path = "crates/vsh-vfs", version = "=0.5.0" }
|
|
32
|
+
vsh-runtime = { path = "crates/vbash", version = "=0.5.0" }
|
|
33
|
+
vsh = { path = "crates/vsh", version = "=0.5.0" }
|
|
33
34
|
|
|
34
35
|
[workspace.lints.rust]
|
|
35
36
|
elided_lifetimes_in_paths = "deny"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vsh-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -11,6 +11,7 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
11
11
|
Classifier: Programming Language :: Rust
|
|
12
12
|
Requires-Dist: basedpyright ; extra == 'dev'
|
|
13
13
|
Requires-Dist: maturin==1.15.0 ; extra == 'dev'
|
|
14
|
+
Requires-Dist: pydantic-ai-slim==2.40.0 ; extra == 'dev'
|
|
14
15
|
Requires-Dist: pytest ; extra == 'dev'
|
|
15
16
|
Requires-Dist: pytest-cov ; extra == 'dev'
|
|
16
17
|
Requires-Dist: ruff ; extra == 'dev'
|
|
@@ -18,8 +19,10 @@ Requires-Dist: setuptools==84.0.0 ; extra == 'dev'
|
|
|
18
19
|
Requires-Dist: ty ; extra == 'dev'
|
|
19
20
|
Requires-Dist: zensical==0.0.57 ; extra == 'dev'
|
|
20
21
|
Requires-Dist: fastmcp==3.4.7 ; extra == 'mcp'
|
|
22
|
+
Requires-Dist: pydantic-ai-slim==2.40.0 ; extra == 'pydantic-ai'
|
|
21
23
|
Provides-Extra: dev
|
|
22
24
|
Provides-Extra: mcp
|
|
25
|
+
Provides-Extra: pydantic-ai
|
|
23
26
|
License-File: LICENSE
|
|
24
27
|
Summary: VSH is a low-latency transactional filesystem simulator backed by Rust.
|
|
25
28
|
Keywords: agents,commands,mcp,simulation,workspaces
|
|
@@ -38,6 +41,9 @@ VSH is one low-latency transactional filesystem simulator with two SDK surfaces:
|
|
|
38
41
|
Both surfaces execute the same Rust pipeline. Python is a thin PyO3 binding; it does
|
|
39
42
|
not contain a fallback simulator or committer.
|
|
40
43
|
|
|
44
|
+
Special thanks to [Artyom Pavlov](https://github.com/newpavlov) for generously
|
|
45
|
+
donating the `vsh` crate name to this project.
|
|
46
|
+
|
|
41
47
|
```text
|
|
42
48
|
Monty program → immutable snapshot → Rust VirtualFs → canonical diff → policy
|
|
43
49
|
→ dependency revalidation → recoverable commit → verified receipt
|
|
@@ -54,8 +60,9 @@ Install the wheel:
|
|
|
54
60
|
uv add vsh-python
|
|
55
61
|
```
|
|
56
62
|
|
|
57
|
-
Run one complete transaction. `PREVIEW`
|
|
58
|
-
|
|
63
|
+
Run one complete transaction. `PREVIEW` does not apply changes to user workspace files;
|
|
64
|
+
the host runtime may still persist bounded transaction/storage artifacts. `AUTO`
|
|
65
|
+
commits only a deterministic native auto-approval.
|
|
59
66
|
|
|
60
67
|
```python
|
|
61
68
|
from vsh import ReceiptDetail, RunMode, RunRequest, Runtime
|
|
@@ -80,11 +87,39 @@ print(receipt.state, receipt.result, receipt.changes)
|
|
|
80
87
|
The GIL is released while snapshotting, executing Monty, generating the diff,
|
|
81
88
|
evaluating policy, revalidating dependencies, and committing.
|
|
82
89
|
|
|
90
|
+
### Pydantic AI
|
|
91
|
+
|
|
92
|
+
Install the exact-pinned optional integration:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
uv add "vsh-python[pydantic-ai]"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from pydantic_ai import Agent
|
|
100
|
+
from vsh.pydantic_ai import VshCapability
|
|
101
|
+
|
|
102
|
+
capability = VshCapability("/path/to/workspace")
|
|
103
|
+
agent = Agent("openai:gpt-5", capabilities=[capability])
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The capability contributes the ten native `vsh_*` filesystem operations plus
|
|
107
|
+
`vsh_run` for atomic multi-step work. Every call executes in a virtual snapshot first.
|
|
108
|
+
Policy-controlled changes commit exactly once or return `pending_approval`; no internal
|
|
109
|
+
LLM judge is created implicitly.
|
|
110
|
+
|
|
111
|
+
For explicitly configured model review, attach a
|
|
112
|
+
[`CommitJudge`](https://fswair.github.io/vsh/python/commit-judge/) through
|
|
113
|
+
`hook_handler=judge.hook_handler`. It evaluates canonical changes, before/after
|
|
114
|
+
content, effects and intent together. A valid approval can directly commit pending
|
|
115
|
+
work; native hard-deny and stale checks remain enforced. Review returns actionable
|
|
116
|
+
feedback to the main agent.
|
|
117
|
+
|
|
83
118
|
## Rust
|
|
84
119
|
|
|
85
120
|
```toml
|
|
86
121
|
[dependencies]
|
|
87
|
-
vsh = "=0.
|
|
122
|
+
vsh = "=0.5.0"
|
|
88
123
|
```
|
|
89
124
|
|
|
90
125
|
```rust,no_run
|
|
@@ -108,6 +143,21 @@ Production execution expects the matching `vsh-monty-worker` executable. Python
|
|
|
108
143
|
wheels bundle it; native embedders configure its trusted path through
|
|
109
144
|
`RuntimeConfig::with_worker_path`.
|
|
110
145
|
|
|
146
|
+
## Active-snapshot filesystem functions
|
|
147
|
+
|
|
148
|
+
VSH injects ten bounded `vsh_*` functions into each Monty program: read, write,
|
|
149
|
+
list, make directory, remove, move, copy, glob, literal search and exact text patch.
|
|
150
|
+
They share the same copy-on-write snapshot as `pathlib`, so earlier virtual writes are
|
|
151
|
+
visible to later calls without creating a nested runtime or crossing MCP.
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
files = vsh_glob('**/*.toml', path='/workspace/services', max_results=101)
|
|
155
|
+
assert len(files) <= 100, 'split this migration into reviewed batches'
|
|
156
|
+
for path in files:
|
|
157
|
+
assert vsh_patch(path, 'timeout = 5', 'timeout = 15', count=1) == 1
|
|
158
|
+
{'updated': len(files)}
|
|
159
|
+
```
|
|
160
|
+
|
|
111
161
|
## MCP
|
|
112
162
|
|
|
113
163
|
Install the optional adapter and start the stdio server:
|
|
@@ -127,6 +177,14 @@ the same live `Runtime` (or MCP server process). The exact artifact is made dura
|
|
|
127
177
|
before reservation and commit. Transactions that require independent approval are
|
|
128
178
|
durable immediately and survive a runtime restart.
|
|
129
179
|
|
|
180
|
+
## Performance
|
|
181
|
+
|
|
182
|
+
On the dated macOS arm64 release-profile matrix, VSH 0.4.0 lowers median latency by
|
|
183
|
+
roughly 25–30% for 10,000-file discovery/glob and 5,050-entry removal workloads. The
|
|
184
|
+
whole benchmark harness reports about 19% less CPU time. Small-call variance remains,
|
|
185
|
+
and sampled process-tree RSS does not establish a repeatable memory reduction. See the
|
|
186
|
+
[protocol, complete results and caveats](https://fswair.github.io/vsh/performance/).
|
|
187
|
+
|
|
130
188
|
## Security and dependency policy
|
|
131
189
|
|
|
132
190
|
- External Rust crates are exact-pinned in the workspace manifest and lockfile.
|
|
@@ -141,19 +199,16 @@ durable immediately and survive a runtime restart.
|
|
|
141
199
|
- Process-local preview retention is fail-closed and bounded by both artifact count and
|
|
142
200
|
encoded bytes; it cannot become an unbounded parent-process cache.
|
|
143
201
|
|
|
144
|
-
See
|
|
145
|
-
[guarantees](
|
|
146
|
-
[dependency
|
|
147
|
-
|
|
148
|
-
[
|
|
149
|
-
are recorded in the [coverage contract](docs/rust-rewrite/COVERAGE.md). The cross-platform build,
|
|
150
|
-
validation, provenance, and dual-registry order are in the
|
|
151
|
-
[release guide](docs/rust-rewrite/RELEASE.md).
|
|
202
|
+
See the [threat model](https://fswair.github.io/vsh/threat-model/),
|
|
203
|
+
[guarantees](https://fswair.github.io/vsh/guarantees/),
|
|
204
|
+
[dependency policy](https://fswair.github.io/vsh/dependency-policy/), current
|
|
205
|
+
[performance report](https://fswair.github.io/vsh/performance/), and
|
|
206
|
+
[coverage contract](https://fswair.github.io/vsh/coverage/).
|
|
152
207
|
|
|
153
|
-
##
|
|
208
|
+
## Package names
|
|
154
209
|
|
|
155
|
-
Existing declarations may
|
|
156
|
-
`vbash = "=0.
|
|
210
|
+
Existing declarations may install `vbash==0.5.0` from PyPI or depend on
|
|
211
|
+
`vbash = "=0.5.0"` from crates.io. Both names are implementation-free mirrors of
|
|
157
212
|
the exact matching VSH release. New projects should use `vsh-python` and `vsh`
|
|
158
213
|
directly; Python code continues to write `import vsh` either way.
|
|
159
214
|
|
|
@@ -168,8 +223,8 @@ uv run zensical serve
|
|
|
168
223
|
uv run zensical build --clean --strict
|
|
169
224
|
```
|
|
170
225
|
|
|
171
|
-
Start at [
|
|
172
|
-
|
|
226
|
+
Start at the [VSH documentation](https://fswair.github.io/vsh/). The site includes a
|
|
227
|
+
Venus-inspired palette, automatic light/dark selection, and a **Copy as Markdown** action on
|
|
173
228
|
every page. It also publishes a compact LLM index at `/llms.txt` and the complete
|
|
174
229
|
Markdown source corpus at `/llms-full.txt`, with navigation pages first; CI verifies
|
|
175
230
|
both generated files are current.
|