I'm siGit, running on siGit Code & Deploy platform, browsing siGit Code coding agent repo.
Remove unused dependencies and update onde to 1.0.0
Delay ACP model loading until first prompt for cleaner startup Lazily load the default model in ACP mode to keep initialize/session/new lightweight and avoid startup diagnostics on stdout. Add a guard to ensure the model loads only once. Remove unused Unix stdout redirection.
paydii committed
Apr 30, 2026 at 10:24 UTC
97a57847b10ddd79b4257658856a69119c470da4
3 files changed
+447
-694
Cargo.lock
+363
-668
@@ -78,24 +78,6 @@ version = "0.4.0"
78
source = "registry+https://github.com/rust-lang/crates.io-index"
79
checksum = "1763692fc1416554cf051efc56a3de5595eca47299d731cc5c2b583adf8b4d2f"
80
81
-[[package]]
82
-name = "aligned"
83
-version = "0.4.3"
84
-source = "registry+https://github.com/rust-lang/crates.io-index"
85
-checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685"
86
-dependencies = [
87
- "as-slice",
88
-]
89
-
90
-[[package]]
91
-name = "aligned-vec"
92
-version = "0.6.4"
93
-source = "registry+https://github.com/rust-lang/crates.io-index"
94
-checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b"
95
-dependencies = [
96
- "equator",
97
-]
98
-
81
[[package]]
82
name = "allocator-api2"
83
version = "0.2.21"
@@ -201,23 +183,6 @@ dependencies = [
183
"num-traits",
184
]
185
204
-[[package]]
205
-name = "arbitrary"
206
-version = "1.4.2"
207
-source = "registry+https://github.com/rust-lang/crates.io-index"
208
-checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
209
-
210
-[[package]]
211
-name = "arg_enum_proc_macro"
212
-version = "0.3.4"
213
-source = "registry+https://github.com/rust-lang/crates.io-index"
214
-checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
215
-dependencies = [
216
- "proc-macro2",
217
- "quote",
218
- "syn 2.0.117",
219
-]
220
-
186
[[package]]
187
name = "arraydeque"
188
version = "0.5.1"
@@ -236,15 +201,6 @@ version = "0.3.2"
201
source = "registry+https://github.com/rust-lang/crates.io-index"
202
checksum = "b0f477b951e452a0b6b4a10b53ccd569042d1d01729b519e02074a9c0958a063"
203
239
-[[package]]
240
-name = "as-slice"
241
-version = "0.2.1"
242
-source = "registry+https://github.com/rust-lang/crates.io-index"
243
-checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516"
244
-dependencies = [
245
- "stable_deref_trait",
246
-]
247
-
204
[[package]]
205
name = "askama"
206
version = "0.14.0"
@@ -346,49 +302,6 @@ version = "1.5.0"
302
source = "registry+https://github.com/rust-lang/crates.io-index"
303
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
304
349
-[[package]]
350
-name = "av-scenechange"
351
-version = "0.14.1"
352
-source = "registry+https://github.com/rust-lang/crates.io-index"
353
-checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394"
354
-dependencies = [
355
- "aligned",
356
- "anyhow",
357
- "arg_enum_proc_macro",
358
- "arrayvec",
359
- "log",
360
- "num-rational",
361
- "num-traits",
362
- "pastey",
363
- "rayon",
364
- "thiserror 2.0.18",
365
- "v_frame",
366
- "y4m",
367
-]
368
-
369
-[[package]]
370
-name = "av1-grain"
371
-version = "0.2.5"
372
-source = "registry+https://github.com/rust-lang/crates.io-index"
373
-checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8"
374
-dependencies = [
375
- "anyhow",
376
- "arrayvec",
377
- "log",
378
- "nom 8.0.0",
379
- "num-rational",
380
- "v_frame",
381
-]
382
-
383
-[[package]]
384
-name = "avif-serialize"
385
-version = "0.8.8"
386
-source = "registry+https://github.com/rust-lang/crates.io-index"
387
-checksum = "375082f007bd67184fb9c0374614b29f9aaa604ec301635f72338bb65386a53d"
388
-dependencies = [
389
- "arrayvec",
390
-]
391
-
305
[[package]]
306
name = "aws-lc-rs"
307
version = "1.16.3"
@@ -480,15 +393,6 @@ version = "2.11.1"
393
source = "registry+https://github.com/rust-lang/crates.io-index"
394
checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
395
483
-[[package]]
484
-name = "bitstream-io"
485
-version = "4.10.0"
486
-source = "registry+https://github.com/rust-lang/crates.io-index"
487
-checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f"
488
-dependencies = [
489
- "no_std_io2",
490
-]
491
-
396
[[package]]
397
name = "block"
398
version = "0.1.6"
@@ -538,12 +442,6 @@ dependencies = [
442
"serde",
443
]
444
541
-[[package]]
542
-name = "built"
543
-version = "0.8.0"
544
-source = "registry+https://github.com/rust-lang/crates.io-index"
545
-checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64"
546
-
445
[[package]]
446
name = "bumpalo"
447
version = "3.20.2"
@@ -1543,26 +1441,6 @@ dependencies = [
1441
"syn 2.0.117",
1442
]
1443
1546
-[[package]]
1547
-name = "equator"
1548
-version = "0.4.2"
1549
-source = "registry+https://github.com/rust-lang/crates.io-index"
1550
-checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc"
1551
-dependencies = [
1552
- "equator-macro",
1553
-]
1554
-
1555
-[[package]]
1556
-name = "equator-macro"
1557
-version = "0.4.2"
1558
-source = "registry+https://github.com/rust-lang/crates.io-index"
1559
-checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3"
1560
-dependencies = [
1561
- "proc-macro2",
1562
- "quote",
1563
- "syn 2.0.117",
1564
-]
1565
-
1444
[[package]]
1445
name = "equivalent"
1446
version = "1.0.2"
@@ -1616,7 +1494,6 @@ dependencies = [
1494
"half",
1495
"lebe",
1496
"miniz_oxide",
1619
- "rayon-core",
1497
"smallvec 1.15.1",
1498
"zune-inflate",
1499
]
@@ -2674,9 +2551,6 @@ dependencies = [
2551
"num-traits",
2552
"png",
2553
"qoi",
2677
- "ravif",
2678
- "rayon",
2679
- "rgb",
2554
"tiff",
2555
"zune-core",
2556
"zune-jpeg",
@@ -2692,12 +2566,6 @@ dependencies = [
2566
"quick-error",
2567
]
2568
2695
-[[package]]
2696
-name = "imgref"
2697
-version = "1.12.0"
2698
-source = "registry+https://github.com/rust-lang/crates.io-index"
2699
-checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8"
2700
-
2569
[[package]]
2570
name = "indexmap"
2571
version = "1.9.3"
@@ -2770,17 +2638,6 @@ dependencies = [
2638
"syn 2.0.117",
2639
]
2640
2773
-[[package]]
2774
-name = "interpolate_name"
2775
-version = "0.2.4"
2776
-source = "registry+https://github.com/rust-lang/crates.io-index"
2777
-checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
2778
-dependencies = [
2779
- "proc-macro2",
2780
- "quote",
2781
- "syn 2.0.117",
2782
-]
2783
-
2641
[[package]]
2642
name = "interprocess"
2643
version = "2.4.2"
@@ -2930,16 +2787,6 @@ version = "0.2.186"
2787
source = "registry+https://github.com/rust-lang/crates.io-index"
2788
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
2789
2933
-[[package]]
2934
-name = "libfuzzer-sys"
2935
-version = "0.4.12"
2936
-source = "registry+https://github.com/rust-lang/crates.io-index"
2937
-checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d"
2938
-dependencies = [
2939
- "arbitrary",
2940
- "cc",
2941
-]
2942
-
2790
[[package]]
2791
name = "libloading"
2792
version = "0.8.9"
@@ -3034,15 +2881,6 @@ dependencies = [
2881
"tracing-subscriber",
2882
]
2883
3037
-[[package]]
3038
-name = "loop9"
3039
-version = "0.1.5"
3040
-source = "registry+https://github.com/rust-lang/crates.io-index"
3041
-checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062"
3042
-dependencies = [
3043
- "imgref",
3044
-]
3045
-
2884
[[package]]
2885
name = "lrtable"
2886
version = "0.14.1"
@@ -3149,16 +2987,6 @@ dependencies = [
2987
"rawpointer",
2988
]
2989
3152
-[[package]]
3153
-name = "maybe-rayon"
3154
-version = "0.1.1"
3155
-source = "registry+https://github.com/rust-lang/crates.io-index"
3156
-checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
3157
-dependencies = [
3158
- "cfg-if",
3159
- "rayon",
3160
-]
3161
-
2990
[[package]]
2991
name = "memchr"
2992
version = "2.8.0"
@@ -3262,263 +3090,42 @@ dependencies = [
3090
]
3091
3092
[[package]]
3265
-name = "mistralrs"
3266
-version = "0.8.1"
3267
-source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#e53956bcd1b40c8221f79b919d78c1e496aba634"
3093
+name = "monostate"
3094
+version = "0.1.18"
3095
+source = "registry+https://github.com/rust-lang/crates.io-index"
3096
+checksum = "3341a273f6c9d5bef1908f17b7267bbab0e95c9bf69a0d4dcf8e9e1b2c76ef67"
3097
dependencies = [
3269
- "anyhow",
3270
- "candle-core",
3271
- "candle-nn",
3272
- "clap 4.6.1",
3273
- "either",
3274
- "futures",
3275
- "image",
3276
- "indexmap 2.14.0",
3277
- "mistralrs-core",
3278
- "mistralrs-macros",
3279
- "rand 0.9.4",
3280
- "reqwest 0.13.2",
3281
- "schemars 1.2.1",
3098
+ "monostate-impl",
3099
"serde",
3283
- "serde_json",
3284
- "thiserror 2.0.18",
3285
- "tokio",
3286
- "tracing",
3287
- "tracing-subscriber",
3288
- "walkdir",
3100
+ "serde_core",
3101
]
3102
3103
[[package]]
3292
-name = "mistralrs-audio"
3293
-version = "0.8.1"
3294
-source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#e53956bcd1b40c8221f79b919d78c1e496aba634"
3104
+name = "monostate-impl"
3105
+version = "0.1.18"
3106
+source = "registry+https://github.com/rust-lang/crates.io-index"
3107
+checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9"
3108
dependencies = [
3296
- "anyhow",
3297
- "apodize",
3298
- "hound",
3299
- "symphonia",
3109
+ "proc-macro2",
3110
+ "quote",
3111
+ "syn 2.0.117",
3112
]
3113
3114
[[package]]
3303
-name = "mistralrs-core"
3115
+name = "moxcms"
3116
version = "0.8.1"
3305
-source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#e53956bcd1b40c8221f79b919d78c1e496aba634"
3117
+source = "registry+https://github.com/rust-lang/crates.io-index"
3118
+checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
3119
dependencies = [
3307
- "ahash",
3308
- "akin",
3309
- "anyhow",
3310
- "apodize",
3311
- "as-any",
3312
- "async-trait",
3313
- "base64 0.22.1",
3314
- "bm25",
3315
- "bytemuck",
3316
- "bytemuck_derive",
3317
- "candle-core",
3318
- "candle-metal-kernels",
3319
- "candle-nn",
3320
- "cfgrammar",
3321
- "chrono",
3322
- "clap 4.6.1",
3323
- "csv",
3324
- "derive-new",
3325
- "derive_more",
3326
- "dirs",
3327
- "either",
3328
- "float8",
3329
- "futures",
3330
- "galil-seiferas",
3331
- "half",
3332
- "hashbrown 0.16.1",
3333
- "hf-hub",
3334
- "hound",
3335
- "html2text",
3336
- "http",
3337
- "image",
3338
- "indexmap 2.14.0",
3339
- "indicatif 0.18.4",
3340
- "interprocess",
3341
- "itertools 0.14.0",
3342
- "libc",
3343
- "llguidance",
3344
- "lrtable",
3345
- "minijinja",
3346
- "minijinja-contrib",
3347
- "mistralrs-audio",
3348
- "mistralrs-mcp",
3349
- "mistralrs-paged-attn",
3350
- "mistralrs-quant",
3351
- "mistralrs-vision",
3120
"num-traits",
3353
- "objc",
3354
- "objc2-metal",
3355
- "openai-harmony",
3356
- "ordered-float",
3357
- "parking_lot",
3358
- "radix_trie",
3359
- "rand 0.9.4",
3360
- "rand_distr 0.5.1",
3361
- "rand_isaac",
3362
- "rayon",
3363
- "regex",
3364
- "regex-automata",
3365
- "reqwest 0.13.2",
3366
- "rubato",
3367
- "rust-mcp-schema",
3368
- "rustc-hash 2.1.2",
3369
- "rustfft",
3370
- "safetensors 0.7.0",
3371
- "schemars 1.2.1",
3372
- "scraper",
3373
- "serde",
3374
- "serde-big-array",
3375
- "serde-saphyr",
3376
- "serde_json",
3377
- "serde_plain",
3378
- "statrs",
3379
- "strum 0.27.2",
3380
- "symphonia",
3381
- "sysinfo",
3382
- "thiserror 2.0.18",
3383
- "tokenizers 0.21.4",
3384
- "tokio",
3385
- "tokio-rayon",
3386
- "tokio-tungstenite",
3387
- "toktrie",
3388
- "toktrie_hf_tokenizers",
3389
- "toml",
3390
- "tqdm",
3391
- "tracing",
3392
- "tracing-subscriber",
3393
- "urlencoding",
3394
- "uuid 1.23.1",
3395
- "variantly",
3396
- "vob",
3397
-]
3398
-
3399
-[[package]]
3400
-name = "mistralrs-macros"
3401
-version = "0.8.1"
3402
-source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#e53956bcd1b40c8221f79b919d78c1e496aba634"
3403
-dependencies = [
3404
- "darling 0.23.0",
3405
- "proc-macro2",
3406
- "quote",
3407
- "syn 2.0.117",
3121
+ "pxfm",
3122
]
3123
3124
[[package]]
3411
-name = "mistralrs-mcp"
3412
-version = "0.8.1"
3413
-source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#e53956bcd1b40c8221f79b919d78c1e496aba634"
3414
-dependencies = [
3415
- "anyhow",
3416
- "async-trait",
3417
- "futures-util",
3418
- "http",
3419
- "reqwest 0.13.2",
3420
- "rust-mcp-schema",
3421
- "serde",
3422
- "serde_json",
3423
- "tokio",
3424
- "tokio-tungstenite",
3425
- "tracing",
3426
- "utoipa",
3427
- "uuid 1.23.1",
3428
-]
3429
-
3430
-[[package]]
3431
-name = "mistralrs-paged-attn"
3432
-version = "0.8.1"
3433
-source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#e53956bcd1b40c8221f79b919d78c1e496aba634"
3434
-dependencies = [
3435
- "anyhow",
3436
- "candle-core",
3437
- "candle-metal-kernels",
3438
- "dispatch2",
3439
- "float8",
3440
- "half",
3441
- "objc2-foundation",
3442
- "objc2-metal",
3443
- "thiserror 2.0.18",
3444
-]
3445
-
3446
-[[package]]
3447
-name = "mistralrs-quant"
3448
-version = "0.8.1"
3449
-source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#e53956bcd1b40c8221f79b919d78c1e496aba634"
3450
-dependencies = [
3451
- "byteorder",
3452
- "candle-core",
3453
- "candle-metal-kernels",
3454
- "candle-nn",
3455
- "dispatch2",
3456
- "float8",
3457
- "half",
3458
- "hf-hub",
3459
- "lazy_static",
3460
- "memmap2",
3461
- "objc2-foundation",
3462
- "objc2-metal",
3463
- "paste",
3464
- "rayon",
3465
- "regex",
3466
- "safetensors 0.7.0",
3467
- "serde",
3468
- "serde_json",
3469
- "thiserror 2.0.18",
3470
- "tokio",
3471
- "tracing",
3472
- "yoke 0.8.2",
3473
-]
3474
-
3475
-[[package]]
3476
-name = "mistralrs-vision"
3477
-version = "0.8.1"
3478
-source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#e53956bcd1b40c8221f79b919d78c1e496aba634"
3479
-dependencies = [
3480
- "candle-core",
3481
- "image",
3482
- "rayon",
3483
-]
3484
-
3485
-[[package]]
3486
-name = "monostate"
3487
-version = "0.1.18"
3488
-source = "registry+https://github.com/rust-lang/crates.io-index"
3489
-checksum = "3341a273f6c9d5bef1908f17b7267bbab0e95c9bf69a0d4dcf8e9e1b2c76ef67"
3490
-dependencies = [
3491
- "monostate-impl",
3492
- "serde",
3493
- "serde_core",
3494
-]
3495
-
3496
-[[package]]
3497
-name = "monostate-impl"
3498
-version = "0.1.18"
3499
-source = "registry+https://github.com/rust-lang/crates.io-index"
3500
-checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9"
3501
-dependencies = [
3502
- "proc-macro2",
3503
- "quote",
3504
- "syn 2.0.117",
3505
-]
3506
-
3507
-[[package]]
3508
-name = "moxcms"
3509
-version = "0.8.1"
3510
-source = "registry+https://github.com/rust-lang/crates.io-index"
3511
-checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
3512
-dependencies = [
3513
- "num-traits",
3514
- "pxfm",
3515
-]
3516
-
3517
-[[package]]
3518
-name = "nalgebra"
3519
-version = "0.33.3"
3520
-source = "registry+https://github.com/rust-lang/crates.io-index"
3521
-checksum = "9d43ddcacf343185dfd6de2ee786d9e8b1c2301622afab66b6c73baf9882abfd"
3125
+name = "nalgebra"
3126
+version = "0.33.3"
3127
+source = "registry+https://github.com/rust-lang/crates.io-index"
3128
+checksum = "9d43ddcacf343185dfd6de2ee786d9e8b1c2301622afab66b6c73baf9882abfd"
3129
dependencies = [
3130
"approx",
3131
"matrixmultiply",
@@ -3546,15 +3153,6 @@ dependencies = [
3153
"smallvec 1.15.1",
3154
]
3155
3549
-[[package]]
3550
-name = "no_std_io2"
3551
-version = "0.9.3"
3552
-source = "registry+https://github.com/rust-lang/crates.io-index"
3553
-checksum = "b51ed7824b6e07d354605f4abb3d9d300350701299da96642ee084f5ce631550"
3554
-dependencies = [
3555
- "memchr",
3556
-]
3557
-
3156
[[package]]
3157
name = "nohash-hasher"
3158
version = "0.2.0"
@@ -3571,21 +3169,6 @@ dependencies = [
3169
"minimal-lexical",
3170
]
3171
3574
-[[package]]
3575
-name = "nom"
3576
-version = "8.0.0"
3577
-source = "registry+https://github.com/rust-lang/crates.io-index"
3578
-checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
3579
-dependencies = [
3580
- "memchr",
3581
-]
3582
-
3583
-[[package]]
3584
-name = "noop_proc_macro"
3585
-version = "0.3.0"
3586
-source = "registry+https://github.com/rust-lang/crates.io-index"
3587
-checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
3588
-
3172
[[package]]
3173
name = "ntapi"
3174
version = "0.4.3"
@@ -3644,17 +3227,6 @@ version = "0.2.1"
3227
source = "registry+https://github.com/rust-lang/crates.io-index"
3228
checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967"
3229
3647
-[[package]]
3648
-name = "num-derive"
3649
-version = "0.4.2"
3650
-source = "registry+https://github.com/rust-lang/crates.io-index"
3651
-checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
3652
-dependencies = [
3653
- "proc-macro2",
3654
- "quote",
3655
- "syn 2.0.117",
3656
-]
3657
-
3230
[[package]]
3231
name = "num-integer"
3232
version = "0.1.46"
@@ -3707,116 +3279,380 @@ dependencies = [
3279
]
3280
3281
[[package]]
3710
-name = "number_prefix"
3711
-version = "0.4.0"
3712
-source = "registry+https://github.com/rust-lang/crates.io-index"
3713
-checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
3714
-
3715
-[[package]]
3716
-name = "objc"
3717
-version = "0.2.7"
3282
+name = "number_prefix"
3283
+version = "0.4.0"
3284
+source = "registry+https://github.com/rust-lang/crates.io-index"
3285
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
3286
+
3287
+[[package]]
3288
+name = "objc"
3289
+version = "0.2.7"
3290
+source = "registry+https://github.com/rust-lang/crates.io-index"
3291
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
3292
+dependencies = [
3293
+ "malloc_buf",
3294
+]
3295
+
3296
+[[package]]
3297
+name = "objc2"
3298
+version = "0.6.4"
3299
+source = "registry+https://github.com/rust-lang/crates.io-index"
3300
+checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
3301
+dependencies = [
3302
+ "objc2-encode",
3303
+]
3304
+
3305
+[[package]]
3306
+name = "objc2-core-foundation"
3307
+version = "0.3.2"
3308
+source = "registry+https://github.com/rust-lang/crates.io-index"
3309
+checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
3310
+dependencies = [
3311
+ "bitflags 2.11.1",
3312
+ "dispatch2",
3313
+ "objc2",
3314
+]
3315
+
3316
+[[package]]
3317
+name = "objc2-encode"
3318
+version = "4.1.0"
3319
+source = "registry+https://github.com/rust-lang/crates.io-index"
3320
+checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
3321
+
3322
+[[package]]
3323
+name = "objc2-foundation"
3324
+version = "0.3.2"
3325
+source = "registry+https://github.com/rust-lang/crates.io-index"
3326
+checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
3327
+dependencies = [
3328
+ "bitflags 2.11.1",
3329
+ "block2",
3330
+ "libc",
3331
+ "objc2",
3332
+ "objc2-core-foundation",
3333
+]
3334
+
3335
+[[package]]
3336
+name = "objc2-io-kit"
3337
+version = "0.3.2"
3338
+source = "registry+https://github.com/rust-lang/crates.io-index"
3339
+checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15"
3340
+dependencies = [
3341
+ "libc",
3342
+ "objc2-core-foundation",
3343
+]
3344
+
3345
+[[package]]
3346
+name = "objc2-metal"
3347
+version = "0.3.2"
3348
+source = "registry+https://github.com/rust-lang/crates.io-index"
3349
+checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794"
3350
+dependencies = [
3351
+ "bitflags 2.11.1",
3352
+ "block2",
3353
+ "dispatch2",
3354
+ "objc2",
3355
+ "objc2-core-foundation",
3356
+ "objc2-foundation",
3357
+]
3358
+
3359
+[[package]]
3360
+name = "once_cell"
3361
+version = "1.21.4"
3362
+source = "registry+https://github.com/rust-lang/crates.io-index"
3363
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
3364
+
3365
+[[package]]
3366
+name = "once_cell_polyfill"
3367
+version = "1.70.2"
3368
+source = "registry+https://github.com/rust-lang/crates.io-index"
3369
+checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
3370
+
3371
+[[package]]
3372
+name = "onde"
3373
+version = "1.0.0"
3374
+source = "registry+https://github.com/rust-lang/crates.io-index"
3375
+checksum = "33f675186adc948026c62e4e20efde5665ac11c7d44249d3d4afabc59a156c6f"
3376
+dependencies = [
3377
+ "anyhow",
3378
+ "cc",
3379
+ "dotenvy",
3380
+ "hf-hub",
3381
+ "home",
3382
+ "log",
3383
+ "onde-mistralrs",
3384
+ "onde-mistralrs-core",
3385
+ "reqwest 0.12.28",
3386
+ "serde",
3387
+ "serde_json",
3388
+ "smbcloud-gresiq-sdk",
3389
+ "thiserror 2.0.18",
3390
+ "tokio",
3391
+ "tsync",
3392
+ "uniffi",
3393
+]
3394
+
3395
+[[package]]
3396
+name = "onde-mistralrs"
3397
+version = "0.8.2"
3398
+source = "registry+https://github.com/rust-lang/crates.io-index"
3399
+checksum = "f4b5589da2ed82d3962ab4d8278cc8a93fea7c758eb1230894ffadb926c3c16c"
3400
+dependencies = [
3401
+ "anyhow",
3402
+ "candle-core",
3403
+ "candle-nn",
3404
+ "clap 4.6.1",
3405
+ "either",
3406
+ "futures",
3407
+ "image",
3408
+ "indexmap 2.14.0",
3409
+ "onde-mistralrs-core",
3410
+ "onde-mistralrs-macros",
3411
+ "rand 0.9.4",
3412
+ "reqwest 0.13.2",
3413
+ "schemars 1.2.1",
3414
+ "serde",
3415
+ "serde_json",
3416
+ "thiserror 2.0.18",
3417
+ "tokio",
3418
+ "tracing",
3419
+ "tracing-subscriber",
3420
+ "walkdir",
3421
+]
3422
+
3423
+[[package]]
3424
+name = "onde-mistralrs-audio"
3425
+version = "0.8.2"
3426
+source = "registry+https://github.com/rust-lang/crates.io-index"
3427
+checksum = "ed88aa277c613327f393ff5816fed55609a7a93b87ace505d70a6b3438b12dd2"
3428
+dependencies = [
3429
+ "anyhow",
3430
+ "apodize",
3431
+ "hound",
3432
+ "symphonia",
3433
+]
3434
+
3435
+[[package]]
3436
+name = "onde-mistralrs-core"
3437
+version = "0.8.2"
3438
+source = "registry+https://github.com/rust-lang/crates.io-index"
3439
+checksum = "7872456b7db2d8aaf39da83269dbf77e2503d6d398010f3b9a17eebec3da8dee"
3440
+dependencies = [
3441
+ "ahash",
3442
+ "akin",
3443
+ "anyhow",
3444
+ "apodize",
3445
+ "as-any",
3446
+ "async-trait",
3447
+ "base64 0.22.1",
3448
+ "bm25",
3449
+ "bytemuck",
3450
+ "bytemuck_derive",
3451
+ "candle-core",
3452
+ "candle-metal-kernels",
3453
+ "candle-nn",
3454
+ "cfgrammar",
3455
+ "chrono",
3456
+ "clap 4.6.1",
3457
+ "csv",
3458
+ "derive-new",
3459
+ "derive_more",
3460
+ "dirs",
3461
+ "either",
3462
+ "float8",
3463
+ "futures",
3464
+ "galil-seiferas",
3465
+ "half",
3466
+ "hashbrown 0.16.1",
3467
+ "hf-hub",
3468
+ "hound",
3469
+ "html2text",
3470
+ "http",
3471
+ "image",
3472
+ "indexmap 2.14.0",
3473
+ "indicatif 0.18.4",
3474
+ "interprocess",
3475
+ "itertools 0.14.0",
3476
+ "libc",
3477
+ "llguidance",
3478
+ "lrtable",
3479
+ "minijinja",
3480
+ "minijinja-contrib",
3481
+ "num-traits",
3482
+ "objc",
3483
+ "objc2-metal",
3484
+ "onde-mistralrs-audio",
3485
+ "onde-mistralrs-mcp",
3486
+ "onde-mistralrs-paged-attn",
3487
+ "onde-mistralrs-quant",
3488
+ "onde-mistralrs-vision",
3489
+ "onde-openai-harmony",
3490
+ "onde-tqdm",
3491
+ "ordered-float",
3492
+ "parking_lot",
3493
+ "radix_trie",
3494
+ "rand 0.9.4",
3495
+ "rand_distr 0.5.1",
3496
+ "rand_isaac",
3497
+ "rayon",
3498
+ "regex",
3499
+ "regex-automata",
3500
+ "reqwest 0.13.2",
3501
+ "rubato",
3502
+ "rust-mcp-schema",
3503
+ "rustc-hash 2.1.2",
3504
+ "rustfft",
3505
+ "safetensors 0.7.0",
3506
+ "schemars 1.2.1",
3507
+ "scraper",
3508
+ "serde",
3509
+ "serde-big-array",
3510
+ "serde-saphyr",
3511
+ "serde_json",
3512
+ "serde_plain",
3513
+ "statrs",
3514
+ "strum 0.27.2",
3515
+ "symphonia",
3516
+ "sysinfo",
3517
+ "thiserror 2.0.18",
3518
+ "tokenizers 0.21.4",
3519
+ "tokio",
3520
+ "tokio-rayon",
3521
+ "tokio-tungstenite",
3522
+ "toktrie",
3523
+ "toktrie_hf_tokenizers",
3524
+ "toml",
3525
+ "tracing",
3526
+ "tracing-subscriber",
3527
+ "urlencoding",
3528
+ "uuid 1.23.1",
3529
+ "variantly",
3530
+ "vob",
3531
+]
3532
+
3533
+[[package]]
3534
+name = "onde-mistralrs-macros"
3535
+version = "0.8.2"
3536
source = "registry+https://github.com/rust-lang/crates.io-index"
3719
-checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
3537
+checksum = "ed7a88fcf59377469c00a355065f3ad9723e00c1870c8b3717b0649f86c77bde"
3538
dependencies = [
3721
- "malloc_buf",
3539
+ "darling 0.23.0",
3540
+ "proc-macro2",
3541
+ "quote",
3542
+ "syn 2.0.117",
3543
]
3544
3545
[[package]]
3725
-name = "objc2"
3726
-version = "0.6.4"
3546
+name = "onde-mistralrs-mcp"
3547
+version = "0.8.2"
3548
source = "registry+https://github.com/rust-lang/crates.io-index"
3728
-checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
3549
+checksum = "f708829672943371b2a14cceaa8c09182d11c9049ec6d3a9c303a74ae65dfc1f"
3550
dependencies = [
3730
- "objc2-encode",
3551
+ "anyhow",
3552
+ "async-trait",
3553
+ "futures-util",
3554
+ "http",
3555
+ "reqwest 0.13.2",
3556
+ "rust-mcp-schema",
3557
+ "serde",
3558
+ "serde_json",
3559
+ "tokio",
3560
+ "tokio-tungstenite",
3561
+ "tracing",
3562
+ "utoipa",
3563
+ "uuid 1.23.1",
3564
]
3565
3566
[[package]]
3734
-name = "objc2-core-foundation"
3735
-version = "0.3.2"
3567
+name = "onde-mistralrs-paged-attn"
3568
+version = "0.8.2"
3569
source = "registry+https://github.com/rust-lang/crates.io-index"
3737
-checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
3570
+checksum = "bdd14bcbee553325d640609504117a2a49db166417bd7883329c6d39971b28c2"
3571
dependencies = [
3739
- "bitflags 2.11.1",
3572
+ "anyhow",
3573
+ "candle-core",
3574
+ "candle-metal-kernels",
3575
"dispatch2",
3741
- "objc2",
3576
+ "float8",
3577
+ "half",
3578
+ "objc2-foundation",
3579
+ "objc2-metal",
3580
+ "thiserror 2.0.18",
3581
]
3582
3583
[[package]]
3745
-name = "objc2-encode"
3746
-version = "4.1.0"
3747
-source = "registry+https://github.com/rust-lang/crates.io-index"
3748
-checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
3749
-
3750
-[[package]]
3751
-name = "objc2-foundation"
3752
-version = "0.3.2"
3584
+name = "onde-mistralrs-quant"
3585
+version = "0.8.2"
3586
source = "registry+https://github.com/rust-lang/crates.io-index"
3754
-checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
3587
+checksum = "36928bb1eec1138ca7b36ee1f4d370e4e374f0874f378915ff0ff34f927c4daf"
3588
dependencies = [
3756
- "bitflags 2.11.1",
3757
- "block2",
3758
- "libc",
3759
- "objc2",
3760
- "objc2-core-foundation",
3589
+ "byteorder",
3590
+ "candle-core",
3591
+ "candle-metal-kernels",
3592
+ "candle-nn",
3593
+ "dispatch2",
3594
+ "float8",
3595
+ "half",
3596
+ "hf-hub",
3597
+ "lazy_static",
3598
+ "memmap2",
3599
+ "objc2-foundation",
3600
+ "objc2-metal",
3601
+ "paste",
3602
+ "rayon",
3603
+ "regex",
3604
+ "safetensors 0.7.0",
3605
+ "serde",
3606
+ "serde_json",
3607
+ "thiserror 2.0.18",
3608
+ "tokio",
3609
+ "tracing",
3610
+ "yoke 0.8.2",
3611
]
3612
3613
[[package]]
3764
-name = "objc2-io-kit"
3765
-version = "0.3.2"
3614
+name = "onde-mistralrs-vision"
3615
+version = "0.8.2"
3616
source = "registry+https://github.com/rust-lang/crates.io-index"
3767
-checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15"
3617
+checksum = "2670a611890bfddc7964902f253626cd2b3fd0b7df13f84a779180f35e2a79e9"
3618
dependencies = [
3769
- "libc",
3770
- "objc2-core-foundation",
3619
+ "candle-core",
3620
+ "image",
3621
+ "rayon",
3622
]
3623
3624
[[package]]
3774
-name = "objc2-metal"
3775
-version = "0.3.2"
3625
+name = "onde-openai-harmony"
3626
+version = "0.0.9"
3627
source = "registry+https://github.com/rust-lang/crates.io-index"
3777
-checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794"
3628
+checksum = "f0f73e12b7378937cb8aaf832bed02b2afa1687581f73c3298c5af0cca9df5e6"
3629
dependencies = [
3779
- "bitflags 2.11.1",
3780
- "block2",
3781
- "dispatch2",
3782
- "objc2",
3783
- "objc2-core-foundation",
3784
- "objc2-foundation",
3630
+ "anyhow",
3631
+ "base64 0.22.1",
3632
+ "bstr",
3633
+ "clap 4.6.1",
3634
+ "fancy-regex 0.13.0",
3635
+ "futures",
3636
+ "regex",
3637
+ "reqwest 0.12.28",
3638
+ "rustc-hash 1.1.0",
3639
+ "serde",
3640
+ "serde_json",
3641
+ "serde_with",
3642
+ "sha1",
3643
+ "sha2",
3644
+ "thiserror 2.0.18",
3645
]
3646
3647
[[package]]
3788
-name = "once_cell"
3789
-version = "1.21.4"
3790
-source = "registry+https://github.com/rust-lang/crates.io-index"
3791
-checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
3792
-
3793
-[[package]]
3794
-name = "once_cell_polyfill"
3795
-version = "1.70.2"
3648
+name = "onde-tqdm"
3649
+version = "0.8.2"
3650
source = "registry+https://github.com/rust-lang/crates.io-index"
3797
-checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
3798
-
3799
-[[package]]
3800
-name = "onde"
3801
-version = "0.1.8"
3802
-source = "git+https://github.com/ondeinference/onde?branch=development#dfcc6ecfa74ac965af6c33ba0bd06d9cf241fc12"
3651
+checksum = "2d96f4fcb4af06959bf9c9b81ace0502e2be2d11d7e037c94f3f7851bde720ea"
3652
dependencies = [
3653
"anyhow",
3805
- "cc",
3806
- "dotenvy",
3807
- "hf-hub",
3808
- "home",
3809
- "log",
3810
- "mistralrs",
3811
- "mistralrs-core",
3812
- "reqwest 0.12.28",
3813
- "serde",
3814
- "serde_json",
3815
- "smbcloud-gresiq-sdk",
3816
- "thiserror 2.0.18",
3817
- "tokio",
3818
- "tsync",
3819
- "uniffi",
3654
+ "crossterm 0.29.0",
3655
+ "once_cell",
3656
]
3657
3658
[[package]]
@@ -3841,30 +3677,6 @@ dependencies = [
3677
"pkg-config",
3678
]
3679
3844
-[[package]]
3845
-name = "openai-harmony"
3846
-version = "0.0.8"
3847
-source = "registry+https://github.com/rust-lang/crates.io-index"
3848
-checksum = "e77e82af451fc95deeb728a40b84db8ee82d341e136c268de415123a560b9b72"
3849
-dependencies = [
3850
- "anyhow",
3851
- "base64 0.22.1",
3852
- "bstr",
3853
- "clap 4.6.1",
3854
- "fancy-regex 0.13.0",
3855
- "futures",
3856
- "image",
3857
- "regex",
3858
- "reqwest 0.12.28",
3859
- "rustc-hash 1.1.0",
3860
- "serde",
3861
- "serde_json",
3862
- "serde_with",
3863
- "sha1",
3864
- "sha2",
3865
- "thiserror 2.0.18",
3866
-]
3867
-
3680
[[package]]
3681
name = "openssl-probe"
3682
version = "0.2.1"
@@ -3930,12 +3742,6 @@ version = "1.0.15"
3742
source = "registry+https://github.com/rust-lang/crates.io-index"
3743
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
3744
3933
-[[package]]
3934
-name = "pastey"
3935
-version = "0.1.1"
3936
-source = "registry+https://github.com/rust-lang/crates.io-index"
3937
-checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec"
3938
-
3745
[[package]]
3746
name = "percent-encoding"
3747
version = "2.3.2"
@@ -4114,25 +3920,6 @@ dependencies = [
3920
"unicode-ident",
3921
]
3922
4117
-[[package]]
4118
-name = "profiling"
4119
-version = "1.0.17"
4120
-source = "registry+https://github.com/rust-lang/crates.io-index"
4121
-checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
4122
-dependencies = [
4123
- "profiling-procmacros",
4124
-]
4125
-
4126
-[[package]]
4127
-name = "profiling-procmacros"
4128
-version = "1.0.17"
4129
-source = "registry+https://github.com/rust-lang/crates.io-index"
4130
-checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
4131
-dependencies = [
4132
- "quote",
4133
- "syn 2.0.117",
4134
-]
4135
-
3923
[[package]]
3924
name = "pulp"
3925
version = "0.21.5"
@@ -4387,56 +4174,6 @@ dependencies = [
4174
"unicode-width 0.2.0",
4175
]
4176
4390
-[[package]]
4391
-name = "rav1e"
4392
-version = "0.8.1"
4393
-source = "registry+https://github.com/rust-lang/crates.io-index"
4394
-checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b"
4395
-dependencies = [
4396
- "aligned-vec",
4397
- "arbitrary",
4398
- "arg_enum_proc_macro",
4399
- "arrayvec",
4400
- "av-scenechange",
4401
- "av1-grain",
4402
- "bitstream-io",
4403
- "built",
4404
- "cfg-if",
4405
- "interpolate_name",
4406
- "itertools 0.14.0",
4407
- "libc",
4408
- "libfuzzer-sys",
4409
- "log",
4410
- "maybe-rayon",
4411
- "new_debug_unreachable",
4412
- "noop_proc_macro",
4413
- "num-derive",
4414
- "num-traits",
4415
- "paste",
4416
- "profiling",
4417
- "rand 0.9.4",
4418
- "rand_chacha 0.9.0",
4419
- "simd_helpers",
4420
- "thiserror 2.0.18",
4421
- "v_frame",
4422
- "wasm-bindgen",
4423
-]
4424
-
4425
-[[package]]
4426
-name = "ravif"
4427
-version = "0.13.0"
4428
-source = "registry+https://github.com/rust-lang/crates.io-index"
4429
-checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45"
4430
-dependencies = [
4431
- "avif-serialize",
4432
- "imgref",
4433
- "loop9",
4434
- "quick-error",
4435
- "rav1e",
4436
- "rayon",
4437
- "rgb",
4438
-]
4439
-
4177
[[package]]
4178
name = "raw-cpuid"
4179
version = "11.6.0"
@@ -4664,12 +4401,6 @@ dependencies = [
4401
"web-sys",
4402
]
4403
4667
-[[package]]
4668
-name = "rgb"
4669
-version = "0.8.53"
4670
-source = "registry+https://github.com/rust-lang/crates.io-index"
4671
-checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4"
4672
-
4404
[[package]]
4405
name = "ring"
4406
version = "0.17.14"
@@ -5341,15 +5072,6 @@ version = "0.3.9"
5072
source = "registry+https://github.com/rust-lang/crates.io-index"
5073
checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
5074
5344
-[[package]]
5345
-name = "simd_helpers"
5346
-version = "0.1.0"
5347
-source = "registry+https://github.com/rust-lang/crates.io-index"
5348
-checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6"
5349
-dependencies = [
5350
- "quote",
5351
-]
5352
-
5075
[[package]]
5076
name = "siphasher"
5077
version = "1.0.2"
@@ -5479,7 +5201,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
5201
checksum = "5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326"
5202
dependencies = [
5203
"base64 0.13.1",
5482
- "nom 7.1.3",
5204
+ "nom",
5205
"serde",
5206
"unicode-segmentation",
5207
]
@@ -6348,16 +6070,6 @@ version = "0.3.3"
6070
source = "registry+https://github.com/rust-lang/crates.io-index"
6071
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
6072
6351
-[[package]]
6352
-name = "tqdm"
6353
-version = "0.8.0"
6354
-source = "git+https://github.com/setoelkahfi/tqdm?branch=deps%2Fbump-crossterm#41e4182829136e6dadbdd1c36af824d19219147a"
6355
-dependencies = [
6356
- "anyhow",
6357
- "crossterm 0.29.0",
6358
- "once_cell",
6359
-]
6360
-
6073
[[package]]
6074
name = "tracing"
6075
version = "0.1.44"
@@ -6832,17 +6544,6 @@ dependencies = [
6544
"wasm-bindgen",
6545
]
6546
6835
-[[package]]
6836
-name = "v_frame"
6837
-version = "0.3.9"
6838
-source = "registry+https://github.com/rust-lang/crates.io-index"
6839
-checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2"
6840
-dependencies = [
6841
- "aligned-vec",
6842
- "num-traits",
6843
- "wasm-bindgen",
6844
-]
6845
-
6547
[[package]]
6548
name = "valuable"
6549
version = "0.1.1"
@@ -7107,7 +6808,7 @@ version = "5.0.0"
6808
source = "registry+https://github.com/rust-lang/crates.io-index"
6809
checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e"
6810
dependencies = [
7110
- "nom 7.1.3",
6811
+ "nom",
6812
]
6813
6814
[[package]]
@@ -7734,12 +7435,6 @@ version = "0.6.3"
7435
source = "registry+https://github.com/rust-lang/crates.io-index"
7436
checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
7437
7737
-[[package]]
7738
-name = "y4m"
7739
-version = "0.8.0"
7740
-source = "registry+https://github.com/rust-lang/crates.io-index"
7741
-checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448"
7742
-
7438
[[package]]
7439
name = "yoke"
7440
version = "0.7.5"
Cargo.toml
+1
-1
@@ -22,7 +22,7 @@ agent-client-protocol = { version = "0.10.4", features = ["unstable_session_fork
22
23
# Onde Inference engine (local LLM)
24
# onde = { path = "../onde" }
25
-onde = { version = "0.1.8", git = "https://github.com/ondeinference/onde", branch = "development" }
25
+onde = "1.0.0"
26
27
# Async runtime
28
async-trait = "0.1"
src/main.rs
+83
-25
@@ -273,6 +273,8 @@ struct SiGitAgent {
273
current_model: std::sync::Mutex<GgufModelConfig>,
274
/// flipped once the startup model finishes (success or failure)
275
model_ready: Arc<AtomicBool>,
276
+ /// guards the one-time lazy startup load for ACP mode
277
+ startup_model_load_started: Arc<AtomicBool>,
278
/// set if the startup load failed
279
model_load_error: Arc<std::sync::Mutex<Option<String>>>,
280
/// true when the startup model isn't cached yet
@@ -289,6 +291,7 @@ impl SiGitAgent {
291
notification_tx: mpsc::Sender<SessionNotification>,
292
initial_model: GgufModelConfig,
293
model_ready: Arc<AtomicBool>,
294
+ startup_model_load_started: Arc<AtomicBool>,
295
model_load_error: Arc<std::sync::Mutex<Option<String>>>,
296
startup_needs_download: bool,
297
) -> Self {
@@ -300,6 +303,7 @@ impl SiGitAgent {
303
session_cwd: std::sync::Mutex::new(None),
304
current_model: std::sync::Mutex::new(initial_model),
305
model_ready,
306
+ startup_model_load_started,
307
model_load_error,
308
startup_needs_download,
309
startup_model_name,
@@ -307,6 +311,66 @@ impl SiGitAgent {
311
}
312
}
313
314
+ fn start_startup_model_load_if_needed(&self) {
315
+ if self
316
+ .startup_model_load_started
317
+ .compare_exchange(false, true, Ordering::AcqRel, Ordering::Acquire)
318
+ .is_err()
319
+ {
320
+ return;
321
+ }
322
+
323
+ self.model_ready.store(false, Ordering::Release);
324
+ if let Ok(mut guard) = self.model_load_error.lock() {
325
+ *guard = None;
326
+ }
327
+
328
+ let startup_config = self.current_model.lock().unwrap().clone();
329
+ let (max_tokens, tool_calling) = models::build_model_picker_items()
330
+ .into_iter()
331
+ .find(|item| {
332
+ item.config.model_id == startup_config.model_id
333
+ && item
334
+ .config
335
+ .files
336
+ .first()
337
+ .zip(startup_config.files.first())
338
+ .map(|(left, right)| left == right)
339
+ .unwrap_or(false)
340
+ })
341
+ .map(|item| (item.max_tokens, item.tool_calling))
342
+ .unwrap_or((4096, false));
343
+
344
+ let sampling = SamplingConfig {
345
+ max_tokens: Some(max_tokens),
346
+ ..SamplingConfig::default()
347
+ };
348
+
349
+ let loader_engine = Arc::clone(&self.engine);
350
+ let loader_system_prompt = system_prompt_for_model(tool_calling).to_string();
351
+ let model_ready = Arc::clone(&self.model_ready);
352
+ let model_load_error = Arc::clone(&self.model_load_error);
353
+
354
+ std::thread::spawn(move || {
355
+ let result = tokio::runtime::Runtime::new()
356
+ .map_err(|error| error.to_string())
357
+ .and_then(|rt| {
358
+ rt.block_on(loader_engine.load_gguf_model(
359
+ startup_config,
360
+ Some(loader_system_prompt),
361
+ Some(sampling),
362
+ ))
363
+ .map(|_| ())
364
+ .map_err(|error| error.to_string())
365
+ });
366
+
367
+ if let Ok(mut guard) = model_load_error.lock() {
368
+ *guard = result.err();
369
+ }
370
+ model_ready.store(true, Ordering::Release);
371
+ });
372
+ }
373
+
374
/// block until the startup model is ready, showing progress in the session.
375
async fn await_model_ready(&self, session_id: &SessionId) -> agent_client_protocol::Result<()> {
376
if self.model_ready.load(Ordering::Acquire) {
@@ -544,6 +608,13 @@ impl SiGitAgent {
608
agent_client_protocol::Error::new(-32603, format!("model switch failed: {error}"))
609
})?;
610
611
+ self.startup_model_load_started
612
+ .store(true, Ordering::Release);
613
+ self.model_ready.store(true, Ordering::Release);
614
+ if let Ok(mut guard) = self.model_load_error.lock() {
615
+ *guard = None;
616
+ }
617
+
618
if let Some(item) = models::build_model_picker_items()
619
.iter()
620
.find(|item| item.config.model_id == new_config.model_id)
@@ -1193,7 +1264,9 @@ impl Agent for SiGitAgent {
1264
user_text.chars().take(80).collect::<String>()
1265
);
1266
1196
- // wait for the startup model if it's still loading/downloading
1267
+ // load the default ACP model lazily so initialize/session/new stay clean
1268
+ // for registry validation and editor startup.
1269
+ self.start_startup_model_load_if_needed();
1270
self.await_model_ready(&session_id).await?;
1271
1272
// ── tool-calling loop ────────────────────────────────────────────
@@ -1318,7 +1391,9 @@ impl Agent for SiGitAgent {
1391
1392
// can't switch while the startup model is still loading — the old
1393
// weights are in GPU memory and the new load gets "does not fit"
1321
- if !self.model_ready.load(Ordering::Acquire) {
1394
+ if self.startup_model_load_started.load(Ordering::Acquire)
1395
+ && !self.model_ready.load(Ordering::Acquire)
1396
+ {
1397
log::info!("set_session_config_option: waiting for startup model to finish loading");
1398
while !self.model_ready.load(Ordering::Acquire) {
1399
tokio::time::sleep(std::time::Duration::from_millis(200)).await;
@@ -1676,23 +1751,6 @@ fn init_logging(is_tty: bool) {
1751
.try_init();
1752
}
1753
1679
-#[cfg(unix)]
1680
-fn redirect_stdout_to_stderr() -> anyhow::Result<()> {
1681
- let stderr_dup = unsafe { libc::dup(libc::STDERR_FILENO) };
1682
- anyhow::ensure!(
1683
- stderr_dup >= 0,
1684
- "dup(stderr) failed: {}",
1685
- std::io::Error::last_os_error()
1686
- );
1687
-
1688
- unsafe {
1689
- libc::dup2(stderr_dup, libc::STDOUT_FILENO);
1690
- libc::close(stderr_dup);
1691
- }
1692
-
1693
- Ok(())
1694
-}
1695
-
1754
// ── Interactive TUI mode ──────────────────────────────────────────────────────
1755
1756
/// boot the TUI and load the model on a background thread.
@@ -1822,9 +1880,10 @@ async fn run_acp_server() -> anyhow::Result<()> {
1880
1881
let engine = Arc::new(ChatEngine::new());
1882
1825
- // Delay model loading until after initialize/auth so ACP stdout stays clean
1826
- // even if model libraries emit startup diagnostics.
1883
+ // Delay model loading until the first real prompt so initialize/session/new
1884
+ // stay lightweight and registry auth checks don't trip over model startup.
1885
let model_ready = Arc::new(AtomicBool::new(true));
1886
+ let startup_model_load_started = Arc::new(AtomicBool::new(false));
1887
let model_load_error: Arc<std::sync::Mutex<Option<String>>> =
1888
Arc::new(std::sync::Mutex::new(None));
1889
@@ -1834,6 +1893,7 @@ async fn run_acp_server() -> anyhow::Result<()> {
1893
notification_tx,
1894
config,
1895
model_ready,
1896
+ startup_model_load_started,
1897
model_load_error,
1898
needs_download,
1899
);
@@ -1894,10 +1954,8 @@ async fn main() -> anyhow::Result<()> {
1954
anyhow::bail!("interactive mode requires Unix (macOS / Linux)");
1955
}
1956
} else {
1897
- // ACP mode: stdout must contain only ACP JSON messages.
1898
- #[cfg(unix)]
1899
- redirect_stdout_to_stderr()?;
1900
-
1957
+ // ACP mode: keep stdout untouched for protocol JSON only.
1958
+ // Logs already go to stderr via `init_logging(false)`.
1959
init_logging(false);
1960
setup::setup_shared_model_cache();
1961
log::info!("siGit v{} starting (ACP mode)", env!("CARGO_PKG_VERSION"));