@staff0rd/assist 0.92.1 → 0.92.3
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.
|
@@ -5,6 +5,7 @@ Never use `pip install` directly. All Python dependency management uses `uv`.
|
|
|
5
5
|
Every `uv` command that touches this project MUST set `UV_PROJECT_ENVIRONMENT` to point to the home dir venv. This includes `uv sync`, `uv run`, and any other uv command. There must be no `.venv/`, `__pycache__/`, `*.egg-info/`, or any other generated artifacts in this directory.
|
|
6
6
|
|
|
7
7
|
- Dependencies are declared in `pyproject.toml`
|
|
8
|
-
-
|
|
8
|
+
- Runtime deps (torch, nemo, etc.) are in the `runtime` optional group; dev tools (ruff, xenon, radon) are in `dev`
|
|
9
|
+
- Bootstrap uses `uv sync --project <dir> --extra runtime --no-install-project` with `UV_PROJECT_ENVIRONMENT=~/.assist/voice/.venv`
|
|
9
10
|
- To add a dependency: edit `pyproject.toml`, then run `UV_PROJECT_ENVIRONMENT=~/.assist/voice/.venv uv lock --project src/commands/voice/python`
|
|
10
11
|
- No build system — this is a virtual project, not an installable package
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
name = "assist-voice"
|
|
3
3
|
version = "0.1.0"
|
|
4
4
|
requires-python = ">=3.10"
|
|
5
|
-
dependencies = [
|
|
5
|
+
dependencies = []
|
|
6
|
+
|
|
7
|
+
[project.optional-dependencies]
|
|
8
|
+
runtime = [
|
|
6
9
|
"onnxruntime>=1.17",
|
|
7
10
|
"sounddevice>=0.4",
|
|
8
11
|
"numpy>=1.24",
|
|
@@ -10,8 +13,6 @@ dependencies = [
|
|
|
10
13
|
"silero-vad>=5.1",
|
|
11
14
|
"torch>=2.0",
|
|
12
15
|
]
|
|
13
|
-
|
|
14
|
-
[project.optional-dependencies]
|
|
15
16
|
dev = [
|
|
16
17
|
"radon>=6.0",
|
|
17
18
|
"ruff>=0.8",
|
|
@@ -240,7 +240,14 @@ wheels = [
|
|
|
240
240
|
name = "assist-voice"
|
|
241
241
|
version = "0.1.0"
|
|
242
242
|
source = { virtual = "." }
|
|
243
|
-
|
|
243
|
+
|
|
244
|
+
[package.optional-dependencies]
|
|
245
|
+
dev = [
|
|
246
|
+
{ name = "radon" },
|
|
247
|
+
{ name = "ruff" },
|
|
248
|
+
{ name = "xenon" },
|
|
249
|
+
]
|
|
250
|
+
runtime = [
|
|
244
251
|
{ name = "nemo-toolkit", extra = ["asr"] },
|
|
245
252
|
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
|
246
253
|
{ name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
|
@@ -250,26 +257,19 @@ dependencies = [
|
|
|
250
257
|
{ name = "torch" },
|
|
251
258
|
]
|
|
252
259
|
|
|
253
|
-
[package.optional-dependencies]
|
|
254
|
-
dev = [
|
|
255
|
-
{ name = "radon" },
|
|
256
|
-
{ name = "ruff" },
|
|
257
|
-
{ name = "xenon" },
|
|
258
|
-
]
|
|
259
|
-
|
|
260
260
|
[package.metadata]
|
|
261
261
|
requires-dist = [
|
|
262
|
-
{ name = "nemo-toolkit", extras = ["asr"], specifier = ">=1.22" },
|
|
263
|
-
{ name = "numpy", specifier = ">=1.24" },
|
|
264
|
-
{ name = "onnxruntime", specifier = ">=1.17" },
|
|
262
|
+
{ name = "nemo-toolkit", extras = ["asr"], marker = "extra == 'runtime'", specifier = ">=1.22" },
|
|
263
|
+
{ name = "numpy", marker = "extra == 'runtime'", specifier = ">=1.24" },
|
|
264
|
+
{ name = "onnxruntime", marker = "extra == 'runtime'", specifier = ">=1.17" },
|
|
265
265
|
{ name = "radon", marker = "extra == 'dev'", specifier = ">=6.0" },
|
|
266
266
|
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8" },
|
|
267
|
-
{ name = "silero-vad", specifier = ">=5.1" },
|
|
268
|
-
{ name = "sounddevice", specifier = ">=0.4" },
|
|
269
|
-
{ name = "torch", specifier = ">=2.0", index = "https://download.pytorch.org/whl/cu124" },
|
|
267
|
+
{ name = "silero-vad", marker = "extra == 'runtime'", specifier = ">=5.1" },
|
|
268
|
+
{ name = "sounddevice", marker = "extra == 'runtime'", specifier = ">=0.4" },
|
|
269
|
+
{ name = "torch", marker = "extra == 'runtime'", specifier = ">=2.0", index = "https://download.pytorch.org/whl/cu124" },
|
|
270
270
|
{ name = "xenon", marker = "extra == 'dev'", specifier = ">=0.9" },
|
|
271
271
|
]
|
|
272
|
-
provides-extras = ["dev"]
|
|
272
|
+
provides-extras = ["runtime", "dev"]
|
|
273
273
|
|
|
274
274
|
[[package]]
|
|
275
275
|
name = "asttokens"
|
|
@@ -1398,6 +1398,7 @@ wheels = [
|
|
|
1398
1398
|
{ url = "https://files.pythonhosted.org/packages/38/3f/9859f655d11901e7b2996c6e3d33e0caa9a1d4572c3bc61ed0faa64b2f4c/greenlet-3.3.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9bc885b89709d901859cf95179ec9f6bb67a3d2bb1f0e88456461bd4b7f8fd0d", size = 277747, upload-time = "2026-02-20T20:16:21.325Z" },
|
|
1399
1399
|
{ url = "https://files.pythonhosted.org/packages/fb/07/cb284a8b5c6498dbd7cba35d31380bb123d7dceaa7907f606c8ff5993cbf/greenlet-3.3.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b568183cf65b94919be4438dc28416b234b678c608cafac8874dfeeb2a9bbe13", size = 579202, upload-time = "2026-02-20T20:47:28.955Z" },
|
|
1400
1400
|
{ url = "https://files.pythonhosted.org/packages/ed/45/67922992b3a152f726163b19f890a85129a992f39607a2a53155de3448b8/greenlet-3.3.2-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:527fec58dc9f90efd594b9b700662ed3fb2493c2122067ac9c740d98080a620e", size = 590620, upload-time = "2026-02-20T20:55:55.581Z" },
|
|
1401
|
+
{ url = "https://files.pythonhosted.org/packages/03/5f/6e2a7d80c353587751ef3d44bb947f0565ec008a2e0927821c007e96d3a7/greenlet-3.3.2-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:508c7f01f1791fbc8e011bd508f6794cb95397fdb198a46cb6635eb5b78d85a7", size = 602132, upload-time = "2026-02-20T21:02:43.261Z" },
|
|
1401
1402
|
{ url = "https://files.pythonhosted.org/packages/ad/55/9f1ebb5a825215fadcc0f7d5073f6e79e3007e3282b14b22d6aba7ca6cb8/greenlet-3.3.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad0c8917dd42a819fe77e6bdfcb84e3379c0de956469301d9fd36427a1ca501f", size = 591729, upload-time = "2026-02-20T20:20:58.395Z" },
|
|
1402
1403
|
{ url = "https://files.pythonhosted.org/packages/24/b4/21f5455773d37f94b866eb3cf5caed88d6cea6dd2c6e1f9c34f463cba3ec/greenlet-3.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:97245cc10e5515dbc8c3104b2928f7f02b6813002770cfaffaf9a6e0fc2b94ef", size = 1551946, upload-time = "2026-02-20T20:49:31.102Z" },
|
|
1403
1404
|
{ url = "https://files.pythonhosted.org/packages/00/68/91f061a926abead128fe1a87f0b453ccf07368666bd59ffa46016627a930/greenlet-3.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8c1fdd7d1b309ff0da81d60a9688a8bd044ac4e18b250320a96fc68d31c209ca", size = 1618494, upload-time = "2026-02-20T20:21:06.541Z" },
|
|
@@ -1405,6 +1406,7 @@ wheels = [
|
|
|
1405
1406
|
{ url = "https://files.pythonhosted.org/packages/f3/47/16400cb42d18d7a6bb46f0626852c1718612e35dcb0dffa16bbaffdf5dd2/greenlet-3.3.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:c56692189a7d1c7606cb794be0a8381470d95c57ce5be03fb3d0ef57c7853b86", size = 278890, upload-time = "2026-02-20T20:19:39.263Z" },
|
|
1406
1407
|
{ url = "https://files.pythonhosted.org/packages/a3/90/42762b77a5b6aa96cd8c0e80612663d39211e8ae8a6cd47c7f1249a66262/greenlet-3.3.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ebd458fa8285960f382841da585e02201b53a5ec2bac6b156fc623b5ce4499f", size = 581120, upload-time = "2026-02-20T20:47:30.161Z" },
|
|
1407
1408
|
{ url = "https://files.pythonhosted.org/packages/bf/6f/f3d64f4fa0a9c7b5c5b3c810ff1df614540d5aa7d519261b53fba55d4df9/greenlet-3.3.2-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a443358b33c4ec7b05b79a7c8b466f5d275025e750298be7340f8fc63dff2a55", size = 594363, upload-time = "2026-02-20T20:55:56.965Z" },
|
|
1409
|
+
{ url = "https://files.pythonhosted.org/packages/9c/8b/1430a04657735a3f23116c2e0d5eb10220928846e4537a938a41b350bed6/greenlet-3.3.2-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4375a58e49522698d3e70cc0b801c19433021b5c37686f7ce9c65b0d5c8677d2", size = 605046, upload-time = "2026-02-20T21:02:45.234Z" },
|
|
1408
1410
|
{ url = "https://files.pythonhosted.org/packages/72/83/3e06a52aca8128bdd4dcd67e932b809e76a96ab8c232a8b025b2850264c5/greenlet-3.3.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e2cd90d413acbf5e77ae41e5d3c9b3ac1d011a756d7284d7f3f2b806bbd6358", size = 594156, upload-time = "2026-02-20T20:20:59.955Z" },
|
|
1409
1411
|
{ url = "https://files.pythonhosted.org/packages/70/79/0de5e62b873e08fe3cef7dbe84e5c4bc0e8ed0c7ff131bccb8405cd107c8/greenlet-3.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:442b6057453c8cb29b4fb36a2ac689382fc71112273726e2423f7f17dc73bf99", size = 1554649, upload-time = "2026-02-20T20:49:32.293Z" },
|
|
1410
1412
|
{ url = "https://files.pythonhosted.org/packages/5a/00/32d30dee8389dc36d42170a9c66217757289e2afb0de59a3565260f38373/greenlet-3.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:45abe8eb6339518180d5a7fa47fa01945414d7cca5ecb745346fc6a87d2750be", size = 1619472, upload-time = "2026-02-20T20:21:07.966Z" },
|
|
@@ -1413,6 +1415,7 @@ wheels = [
|
|
|
1413
1415
|
{ url = "https://files.pythonhosted.org/packages/ea/ab/1608e5a7578e62113506740b88066bf09888322a311cff602105e619bd87/greenlet-3.3.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ac8d61d4343b799d1e526db579833d72f23759c71e07181c2d2944e429eb09cd", size = 280358, upload-time = "2026-02-20T20:17:43.971Z" },
|
|
1414
1416
|
{ url = "https://files.pythonhosted.org/packages/a5/23/0eae412a4ade4e6623ff7626e38998cb9b11e9ff1ebacaa021e4e108ec15/greenlet-3.3.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ceec72030dae6ac0c8ed7591b96b70410a8be370b6a477b1dbc072856ad02bd", size = 601217, upload-time = "2026-02-20T20:47:31.462Z" },
|
|
1415
1417
|
{ url = "https://files.pythonhosted.org/packages/f8/16/5b1678a9c07098ecb9ab2dd159fafaf12e963293e61ee8d10ecb55273e5e/greenlet-3.3.2-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a2a5be83a45ce6188c045bcc44b0ee037d6a518978de9a5d97438548b953a1ac", size = 611792, upload-time = "2026-02-20T20:55:58.423Z" },
|
|
1418
|
+
{ url = "https://files.pythonhosted.org/packages/5c/c5/cc09412a29e43406eba18d61c70baa936e299bc27e074e2be3806ed29098/greenlet-3.3.2-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ae9e21c84035c490506c17002f5c8ab25f980205c3e61ddb3a2a2a2e6c411fcb", size = 626250, upload-time = "2026-02-20T21:02:46.596Z" },
|
|
1416
1419
|
{ url = "https://files.pythonhosted.org/packages/50/1f/5155f55bd71cabd03765a4aac9ac446be129895271f73872c36ebd4b04b6/greenlet-3.3.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43e99d1749147ac21dde49b99c9abffcbc1e2d55c67501465ef0930d6e78e070", size = 613875, upload-time = "2026-02-20T20:21:01.102Z" },
|
|
1417
1420
|
{ url = "https://files.pythonhosted.org/packages/fc/dd/845f249c3fcd69e32df80cdab059b4be8b766ef5830a3d0aa9d6cad55beb/greenlet-3.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4c956a19350e2c37f2c48b336a3afb4bff120b36076d9d7fb68cb44e05d95b79", size = 1571467, upload-time = "2026-02-20T20:49:33.495Z" },
|
|
1418
1421
|
{ url = "https://files.pythonhosted.org/packages/2a/50/2649fe21fcc2b56659a452868e695634722a6655ba245d9f77f5656010bf/greenlet-3.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6c6f8ba97d17a1e7d664151284cb3315fc5f8353e75221ed4324f84eb162b395", size = 1640001, upload-time = "2026-02-20T20:21:09.154Z" },
|
|
@@ -1421,6 +1424,7 @@ wheels = [
|
|
|
1421
1424
|
{ url = "https://files.pythonhosted.org/packages/ac/48/f8b875fa7dea7dd9b33245e37f065af59df6a25af2f9561efa8d822fde51/greenlet-3.3.2-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:aa6ac98bdfd716a749b84d4034486863fd81c3abde9aa3cf8eff9127981a4ae4", size = 279120, upload-time = "2026-02-20T20:19:01.9Z" },
|
|
1422
1425
|
{ url = "https://files.pythonhosted.org/packages/49/8d/9771d03e7a8b1ee456511961e1b97a6d77ae1dea4a34a5b98eee706689d3/greenlet-3.3.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab0c7e7901a00bc0a7284907273dc165b32e0d109a6713babd04471327ff7986", size = 603238, upload-time = "2026-02-20T20:47:32.873Z" },
|
|
1423
1426
|
{ url = "https://files.pythonhosted.org/packages/59/0e/4223c2bbb63cd5c97f28ffb2a8aee71bdfb30b323c35d409450f51b91e3e/greenlet-3.3.2-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d248d8c23c67d2291ffd47af766e2a3aa9fa1c6703155c099feb11f526c63a92", size = 614219, upload-time = "2026-02-20T20:55:59.817Z" },
|
|
1427
|
+
{ url = "https://files.pythonhosted.org/packages/94/2b/4d012a69759ac9d77210b8bfb128bc621125f5b20fc398bce3940d036b1c/greenlet-3.3.2-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ccd21bb86944ca9be6d967cf7691e658e43417782bce90b5d2faeda0ff78a7dd", size = 628268, upload-time = "2026-02-20T21:02:48.024Z" },
|
|
1424
1428
|
{ url = "https://files.pythonhosted.org/packages/7a/34/259b28ea7a2a0c904b11cd36c79b8cef8019b26ee5dbe24e73b469dea347/greenlet-3.3.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6997d360a4e6a4e936c0f9625b1c20416b8a0ea18a8e19cabbefc712e7397ab", size = 616774, upload-time = "2026-02-20T20:21:02.454Z" },
|
|
1425
1429
|
{ url = "https://files.pythonhosted.org/packages/0a/03/996c2d1689d486a6e199cb0f1cf9e4aa940c500e01bdf201299d7d61fa69/greenlet-3.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:64970c33a50551c7c50491671265d8954046cb6e8e2999aacdd60e439b70418a", size = 1571277, upload-time = "2026-02-20T20:49:34.795Z" },
|
|
1426
1430
|
{ url = "https://files.pythonhosted.org/packages/d9/c4/2570fc07f34a39f2caf0bf9f24b0a1a0a47bc2e8e465b2c2424821389dfc/greenlet-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1a9172f5bf6bd88e6ba5a84e0a68afeac9dc7b6b412b245dd64f52d83c81e55b", size = 1640455, upload-time = "2026-02-20T20:21:10.261Z" },
|
|
@@ -1429,6 +1433,7 @@ wheels = [
|
|
|
1429
1433
|
{ url = "https://files.pythonhosted.org/packages/3f/ae/8bffcbd373b57a5992cd077cbe8858fff39110480a9d50697091faea6f39/greenlet-3.3.2-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:8d1658d7291f9859beed69a776c10822a0a799bc4bfe1bd4272bb60e62507dab", size = 279650, upload-time = "2026-02-20T20:18:00.783Z" },
|
|
1430
1434
|
{ url = "https://files.pythonhosted.org/packages/d1/c0/45f93f348fa49abf32ac8439938726c480bd96b2a3c6f4d949ec0124b69f/greenlet-3.3.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18cb1b7337bca281915b3c5d5ae19f4e76d35e1df80f4ad3c1a7be91fadf1082", size = 650295, upload-time = "2026-02-20T20:47:34.036Z" },
|
|
1431
1435
|
{ url = "https://files.pythonhosted.org/packages/b3/de/dd7589b3f2b8372069ab3e4763ea5329940fc7ad9dcd3e272a37516d7c9b/greenlet-3.3.2-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2e47408e8ce1c6f1ceea0dffcdf6ebb85cc09e55c7af407c99f1112016e45e9", size = 662163, upload-time = "2026-02-20T20:56:01.295Z" },
|
|
1436
|
+
{ url = "https://files.pythonhosted.org/packages/cd/ac/85804f74f1ccea31ba518dcc8ee6f14c79f73fe36fa1beba38930806df09/greenlet-3.3.2-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e3cb43ce200f59483eb82949bf1835a99cf43d7571e900d7c8d5c62cdf25d2f9", size = 675371, upload-time = "2026-02-20T21:02:49.664Z" },
|
|
1432
1437
|
{ url = "https://files.pythonhosted.org/packages/d2/d8/09bfa816572a4d83bccd6750df1926f79158b1c36c5f73786e26dbe4ee38/greenlet-3.3.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63d10328839d1973e5ba35e98cccbca71b232b14051fd957b6f8b6e8e80d0506", size = 664160, upload-time = "2026-02-20T20:21:04.015Z" },
|
|
1433
1438
|
{ url = "https://files.pythonhosted.org/packages/48/cf/56832f0c8255d27f6c35d41b5ec91168d74ec721d85f01a12131eec6b93c/greenlet-3.3.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8e4ab3cfb02993c8cc248ea73d7dae6cec0253e9afa311c9b37e603ca9fad2ce", size = 1619181, upload-time = "2026-02-20T20:49:36.052Z" },
|
|
1434
1439
|
{ url = "https://files.pythonhosted.org/packages/0a/23/b90b60a4aabb4cec0796e55f25ffbfb579a907c3898cd2905c8918acaa16/greenlet-3.3.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94ad81f0fd3c0c0681a018a976e5c2bd2ca2d9d94895f23e7bb1af4e8af4e2d5", size = 1687713, upload-time = "2026-02-20T20:21:11.684Z" },
|
|
@@ -1437,6 +1442,7 @@ wheels = [
|
|
|
1437
1442
|
{ url = "https://files.pythonhosted.org/packages/98/6d/8f2ef704e614bcf58ed43cfb8d87afa1c285e98194ab2cfad351bf04f81e/greenlet-3.3.2-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:e26e72bec7ab387ac80caa7496e0f908ff954f31065b0ffc1f8ecb1338b11b54", size = 286617, upload-time = "2026-02-20T20:19:29.856Z" },
|
|
1438
1443
|
{ url = "https://files.pythonhosted.org/packages/5e/0d/93894161d307c6ea237a43988f27eba0947b360b99ac5239ad3fe09f0b47/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b466dff7a4ffda6ca975979bab80bdadde979e29fc947ac3be4451428d8b0e4", size = 655189, upload-time = "2026-02-20T20:47:35.742Z" },
|
|
1439
1444
|
{ url = "https://files.pythonhosted.org/packages/f5/2c/d2d506ebd8abcb57386ec4f7ba20f4030cbe56eae541bc6fd6ef399c0b41/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b8bddc5b73c9720bea487b3bffdb1840fe4e3656fba3bd40aa1489e9f37877ff", size = 658225, upload-time = "2026-02-20T20:56:02.527Z" },
|
|
1445
|
+
{ url = "https://files.pythonhosted.org/packages/d1/67/8197b7e7e602150938049d8e7f30de1660cfb87e4c8ee349b42b67bdb2e1/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:59b3e2c40f6706b05a9cd299c836c6aa2378cabe25d021acd80f13abf81181cf", size = 666581, upload-time = "2026-02-20T21:02:51.526Z" },
|
|
1440
1446
|
{ url = "https://files.pythonhosted.org/packages/8e/30/3a09155fbf728673a1dea713572d2d31159f824a37c22da82127056c44e4/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b26b0f4428b871a751968285a1ac9648944cea09807177ac639b030bddebcea4", size = 657907, upload-time = "2026-02-20T20:21:05.259Z" },
|
|
1441
1447
|
{ url = "https://files.pythonhosted.org/packages/f3/fd/d05a4b7acd0154ed758797f0a43b4c0962a843bedfe980115e842c5b2d08/greenlet-3.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1fb39a11ee2e4d94be9a76671482be9398560955c9e568550de0224e41104727", size = 1618857, upload-time = "2026-02-20T20:49:37.309Z" },
|
|
1442
1448
|
{ url = "https://files.pythonhosted.org/packages/6f/e1/50ee92a5db521de8f35075b5eff060dd43d39ebd46c2181a2042f7070385/greenlet-3.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:20154044d9085151bc309e7689d6f7ba10027f8f5a8c0676ad398b951913d89e", size = 1680010, upload-time = "2026-02-20T20:21:13.427Z" },
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Command } from "commander";
|
|
|
6
6
|
// package.json
|
|
7
7
|
var package_default = {
|
|
8
8
|
name: "@staff0rd/assist",
|
|
9
|
-
version: "0.92.
|
|
9
|
+
version: "0.92.3",
|
|
10
10
|
type: "module",
|
|
11
11
|
main: "dist/index.js",
|
|
12
12
|
bin: {
|
|
@@ -1424,7 +1424,10 @@ Total: ${lines.length} hardcoded color(s)`);
|
|
|
1424
1424
|
// src/commands/verify/run/resolveEntries.ts
|
|
1425
1425
|
import * as path13 from "path";
|
|
1426
1426
|
function quoteIfNeeded(arg) {
|
|
1427
|
-
|
|
1427
|
+
if (/[^a-zA-Z0-9_./:=@%^+,-]/.test(arg)) {
|
|
1428
|
+
return `'${arg.replace(/'/g, "'\\''")}'`;
|
|
1429
|
+
}
|
|
1430
|
+
return arg;
|
|
1428
1431
|
}
|
|
1429
1432
|
function buildFullCommand(command, args) {
|
|
1430
1433
|
return [quoteIfNeeded(command), ...(args ?? []).map(quoteIfNeeded)].join(" ");
|
|
@@ -1497,6 +1500,32 @@ Total: ${folders.length} venv folder(s)`);
|
|
|
1497
1500
|
}
|
|
1498
1501
|
}
|
|
1499
1502
|
|
|
1503
|
+
// src/commands/verify/run/filterByChangedFiles.ts
|
|
1504
|
+
import { minimatch as minimatch2 } from "minimatch";
|
|
1505
|
+
|
|
1506
|
+
// src/commands/verify/run/getChangedFiles.ts
|
|
1507
|
+
import { execSync as execSync7 } from "child_process";
|
|
1508
|
+
function getChangedFiles() {
|
|
1509
|
+
const output = execSync7("git diff --name-only HEAD", {
|
|
1510
|
+
encoding: "utf-8"
|
|
1511
|
+
}).trim();
|
|
1512
|
+
if (output === "") return [];
|
|
1513
|
+
return output.split("\n");
|
|
1514
|
+
}
|
|
1515
|
+
|
|
1516
|
+
// src/commands/verify/run/filterByChangedFiles.ts
|
|
1517
|
+
function filterByChangedFiles(entries) {
|
|
1518
|
+
const hasFilters = entries.some((e) => e.filter);
|
|
1519
|
+
if (!hasFilters) return entries;
|
|
1520
|
+
const changedFiles = getChangedFiles();
|
|
1521
|
+
return entries.filter((entry) => {
|
|
1522
|
+
const { filter } = entry;
|
|
1523
|
+
if (!filter) return true;
|
|
1524
|
+
if (changedFiles.length === 0) return false;
|
|
1525
|
+
return changedFiles.some((file) => minimatch2(file, filter));
|
|
1526
|
+
});
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1500
1529
|
// src/commands/verify/run/createTimerCallback/printTaskStatuses.ts
|
|
1501
1530
|
function formatDuration(ms) {
|
|
1502
1531
|
if (ms < 1e3) {
|
|
@@ -1539,32 +1568,6 @@ function initTaskStatuses(scripts) {
|
|
|
1539
1568
|
return scripts.map((script) => ({ script, startTime: Date.now() }));
|
|
1540
1569
|
}
|
|
1541
1570
|
|
|
1542
|
-
// src/commands/verify/run/filterByChangedFiles.ts
|
|
1543
|
-
import { minimatch as minimatch2 } from "minimatch";
|
|
1544
|
-
|
|
1545
|
-
// src/commands/verify/run/getChangedFiles.ts
|
|
1546
|
-
import { execSync as execSync7 } from "child_process";
|
|
1547
|
-
function getChangedFiles() {
|
|
1548
|
-
const output = execSync7("git diff --name-only HEAD", {
|
|
1549
|
-
encoding: "utf-8"
|
|
1550
|
-
}).trim();
|
|
1551
|
-
if (output === "") return [];
|
|
1552
|
-
return output.split("\n");
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
// src/commands/verify/run/filterByChangedFiles.ts
|
|
1556
|
-
function filterByChangedFiles(entries) {
|
|
1557
|
-
const hasFilters = entries.some((e) => e.filter);
|
|
1558
|
-
if (!hasFilters) return entries;
|
|
1559
|
-
const changedFiles = getChangedFiles();
|
|
1560
|
-
return entries.filter((entry) => {
|
|
1561
|
-
const { filter } = entry;
|
|
1562
|
-
if (!filter) return true;
|
|
1563
|
-
if (changedFiles.length === 0) return false;
|
|
1564
|
-
return changedFiles.some((file) => minimatch2(file, filter));
|
|
1565
|
-
});
|
|
1566
|
-
}
|
|
1567
|
-
|
|
1568
1571
|
// src/commands/verify/run/spawnCommand.ts
|
|
1569
1572
|
import { spawn } from "child_process";
|
|
1570
1573
|
|
|
@@ -1580,17 +1583,20 @@ function expandEnv(env) {
|
|
|
1580
1583
|
}
|
|
1581
1584
|
|
|
1582
1585
|
// src/commands/verify/run/spawnCommand.ts
|
|
1583
|
-
var
|
|
1586
|
+
var suppressOutput = !!process.env.CLAUDECODE;
|
|
1587
|
+
function setVerbose(verbose) {
|
|
1588
|
+
if (verbose) suppressOutput = false;
|
|
1589
|
+
}
|
|
1584
1590
|
function spawnCommand(fullCommand, cwd, env) {
|
|
1585
1591
|
return spawn(fullCommand, [], {
|
|
1586
|
-
stdio:
|
|
1592
|
+
stdio: suppressOutput ? "pipe" : "inherit",
|
|
1587
1593
|
shell: true,
|
|
1588
1594
|
cwd: cwd ?? process.cwd(),
|
|
1589
1595
|
env: env ? { ...process.env, ...expandEnv(env) } : void 0
|
|
1590
1596
|
});
|
|
1591
1597
|
}
|
|
1592
1598
|
function collectOutput(child) {
|
|
1593
|
-
if (!
|
|
1599
|
+
if (!suppressOutput) return [];
|
|
1594
1600
|
const chunks = [];
|
|
1595
1601
|
child.stdout?.on("data", (data) => chunks.push(data));
|
|
1596
1602
|
child.stderr?.on("data", (data) => chunks.push(data));
|
|
@@ -1602,7 +1608,7 @@ function flushIfFailed(exitCode, chunks) {
|
|
|
1602
1608
|
}
|
|
1603
1609
|
}
|
|
1604
1610
|
|
|
1605
|
-
// src/commands/verify/run/
|
|
1611
|
+
// src/commands/verify/run/runAllEntries.ts
|
|
1606
1612
|
function runEntry(entry, onComplete) {
|
|
1607
1613
|
return new Promise((resolve3) => {
|
|
1608
1614
|
const child = spawnCommand(entry.fullCommand, entry.cwd, entry.env);
|
|
@@ -1615,6 +1621,11 @@ function runEntry(entry, onComplete) {
|
|
|
1615
1621
|
});
|
|
1616
1622
|
});
|
|
1617
1623
|
}
|
|
1624
|
+
function exitIfFailed(failed) {
|
|
1625
|
+
if (failed.length === 0) return;
|
|
1626
|
+
logFailedScripts(failed);
|
|
1627
|
+
process.exit(1);
|
|
1628
|
+
}
|
|
1618
1629
|
function runAllEntries(entries, timer) {
|
|
1619
1630
|
const taskStatuses = initTaskStatuses(entries.map((e) => e.name));
|
|
1620
1631
|
return Promise.all(
|
|
@@ -1626,29 +1637,27 @@ function runAllEntries(entries, timer) {
|
|
|
1626
1637
|
)
|
|
1627
1638
|
);
|
|
1628
1639
|
}
|
|
1640
|
+
function handleResults(results, totalCount) {
|
|
1641
|
+
exitIfFailed(results.filter((r) => r.code !== 0));
|
|
1642
|
+
console.log(`
|
|
1643
|
+
All ${totalCount} verify command(s) passed`);
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
// src/commands/verify/run/index.ts
|
|
1629
1647
|
function printEntryList(entries) {
|
|
1630
1648
|
console.log(`Running ${entries.length} verify command(s) in parallel:`);
|
|
1631
1649
|
for (const entry of entries) {
|
|
1632
1650
|
console.log(` - ${entry.name}`);
|
|
1633
1651
|
}
|
|
1634
1652
|
}
|
|
1635
|
-
function exitIfFailed(failed) {
|
|
1636
|
-
if (failed.length === 0) return;
|
|
1637
|
-
logFailedScripts(failed);
|
|
1638
|
-
process.exit(1);
|
|
1639
|
-
}
|
|
1640
|
-
function handleResults(results, totalCount) {
|
|
1641
|
-
exitIfFailed(results.filter((r) => r.code !== 0));
|
|
1642
|
-
console.log(`
|
|
1643
|
-
All ${totalCount} verify command(s) passed`);
|
|
1644
|
-
}
|
|
1645
1653
|
async function run(options2 = {}) {
|
|
1654
|
+
setVerbose(!!options2.verbose);
|
|
1646
1655
|
const allEntries = resolveEntries();
|
|
1656
|
+
const entries = options2.all ? allEntries : filterByChangedFiles(allEntries);
|
|
1647
1657
|
if (allEntries.length === 0) {
|
|
1648
1658
|
console.log("No verify commands found");
|
|
1649
1659
|
return;
|
|
1650
1660
|
}
|
|
1651
|
-
const entries = options2.all ? allEntries : filterByChangedFiles(allEntries);
|
|
1652
1661
|
if (entries.length === 0) {
|
|
1653
1662
|
console.log("No verify commands matched changed files \u2014 skipping");
|
|
1654
1663
|
return;
|
|
@@ -3629,7 +3638,7 @@ import { join as join16 } from "path";
|
|
|
3629
3638
|
import { stringify } from "yaml";
|
|
3630
3639
|
|
|
3631
3640
|
// src/lib/isClaudeCode.ts
|
|
3632
|
-
function
|
|
3641
|
+
function isClaudeCode() {
|
|
3633
3642
|
return process.env.CLAUDECODE !== void 0;
|
|
3634
3643
|
}
|
|
3635
3644
|
|
|
@@ -3730,7 +3739,7 @@ function formatForHuman(comment2) {
|
|
|
3730
3739
|
|
|
3731
3740
|
// src/commands/prs/listComments/index.ts
|
|
3732
3741
|
function formatComment(comment2) {
|
|
3733
|
-
return
|
|
3742
|
+
return isClaudeCode() ? JSON.stringify(comment2) : formatForHuman(comment2);
|
|
3734
3743
|
}
|
|
3735
3744
|
function printComments(comments) {
|
|
3736
3745
|
if (comments.length === 0) {
|
|
@@ -5369,7 +5378,7 @@ function registerVerify(program2) {
|
|
|
5369
5378
|
const verifyCommand = program2.command("verify").description("Run all verify:* commands in parallel").argument(
|
|
5370
5379
|
"[scope]",
|
|
5371
5380
|
'Use "all" to run all checks, ignoring diff-based filters'
|
|
5372
|
-
).option("--timer", "Show timing information for each task as they complete").action((scope, options2) => {
|
|
5381
|
+
).option("--timer", "Show timing information for each task as they complete").option("--verbose", "Show all output (bypass CLAUDECODE suppression)").action((scope, options2) => {
|
|
5373
5382
|
if (scope && scope !== "all") {
|
|
5374
5383
|
console.error(
|
|
5375
5384
|
`Unknown scope: "${scope}". Use "all" to run all checks.`
|
|
@@ -5484,10 +5493,13 @@ function bootstrapVenv() {
|
|
|
5484
5493
|
if (existsSync24(getVenvPython())) return;
|
|
5485
5494
|
console.log("Setting up Python environment...");
|
|
5486
5495
|
const pythonDir = getPythonDir();
|
|
5487
|
-
execSync25(
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5496
|
+
execSync25(
|
|
5497
|
+
`uv sync --project "${pythonDir}" --extra runtime --no-install-project`,
|
|
5498
|
+
{
|
|
5499
|
+
stdio: "inherit",
|
|
5500
|
+
env: { ...process.env, UV_PROJECT_ENVIRONMENT: voicePaths.venv }
|
|
5501
|
+
}
|
|
5502
|
+
);
|
|
5491
5503
|
}
|
|
5492
5504
|
function writeLockFile(pid) {
|
|
5493
5505
|
const lockFile = getLockFile();
|
|
@@ -5934,7 +5946,10 @@ function add2() {
|
|
|
5934
5946
|
|
|
5935
5947
|
// src/commands/run/index.ts
|
|
5936
5948
|
function quoteIfNeeded2(arg) {
|
|
5937
|
-
|
|
5949
|
+
if (/[^a-zA-Z0-9_./:=@%^+,-]/.test(arg)) {
|
|
5950
|
+
return `'${arg.replace(/'/g, "'\\''")}'`;
|
|
5951
|
+
}
|
|
5952
|
+
return arg;
|
|
5938
5953
|
}
|
|
5939
5954
|
function buildCommand(command, configArgs, extraArgs) {
|
|
5940
5955
|
const allArgs = [...configArgs, ...extraArgs];
|