forge
login
or
join now
ptr.pet
/
klbr
star
0
fork
atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
ive harnessed the harness
star
0
fork
atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
overview
issues
pulls
pipelines
init
dawn
3 weeks ago
510f04d6
+4851
17 changed files
expand all
collapse all
unified
split
.cargo
config.toml
.envrc
.gitignore
Cargo.lock
Cargo.toml
flake.lock
flake.nix
src
agent.rs
config.rs
context.rs
daemon.rs
interrupt.rs
ipc.rs
llm.rs
main.rs
memory.rs
tui.rs
+3
.cargo/config.toml
reviewed
···
1
1
+
[target.x86_64-unknown-linux-gnu]
2
2
+
linker = "clang"
3
3
+
rustflags = ["-Clink-arg=--ld-path=wild"]
+1
.envrc
reviewed
···
1
1
+
use flake
+3
.gitignore
reviewed
···
1
1
+
/target
2
2
+
/.direnv
3
3
+
+3476
Cargo.lock
reviewed
···
1
1
+
# This file is automatically @generated by Cargo.
2
2
+
# It is not intended for manual editing.
3
3
+
version = 4
4
4
+
5
5
+
[[package]]
6
6
+
name = "KLBR"
7
7
+
version = "0.0.0"
8
8
+
dependencies = [
9
9
+
"anyhow",
10
10
+
"crossterm",
11
11
+
"dirs",
12
12
+
"futures",
13
13
+
"ratatui",
14
14
+
"reqwest",
15
15
+
"rusqlite",
16
16
+
"serde",
17
17
+
"serde_json",
18
18
+
"tokio",
19
19
+
"tracing",
20
20
+
"tracing-subscriber",
21
21
+
]
22
22
+
23
23
+
[[package]]
24
24
+
name = "aho-corasick"
25
25
+
version = "1.1.4"
26
26
+
source = "registry+https://github.com/rust-lang/crates.io-index"
27
27
+
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
28
28
+
dependencies = [
29
29
+
"memchr",
30
30
+
]
31
31
+
32
32
+
[[package]]
33
33
+
name = "allocator-api2"
34
34
+
version = "0.2.21"
35
35
+
source = "registry+https://github.com/rust-lang/crates.io-index"
36
36
+
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
37
37
+
38
38
+
[[package]]
39
39
+
name = "anyhow"
40
40
+
version = "1.0.102"
41
41
+
source = "registry+https://github.com/rust-lang/crates.io-index"
42
42
+
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
43
43
+
44
44
+
[[package]]
45
45
+
name = "atomic"
46
46
+
version = "0.6.1"
47
47
+
source = "registry+https://github.com/rust-lang/crates.io-index"
48
48
+
checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340"
49
49
+
dependencies = [
50
50
+
"bytemuck",
51
51
+
]
52
52
+
53
53
+
[[package]]
54
54
+
name = "atomic-waker"
55
55
+
version = "1.1.2"
56
56
+
source = "registry+https://github.com/rust-lang/crates.io-index"
57
57
+
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
58
58
+
59
59
+
[[package]]
60
60
+
name = "autocfg"
61
61
+
version = "1.5.0"
62
62
+
source = "registry+https://github.com/rust-lang/crates.io-index"
63
63
+
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
64
64
+
65
65
+
[[package]]
66
66
+
name = "aws-lc-rs"
67
67
+
version = "1.16.2"
68
68
+
source = "registry+https://github.com/rust-lang/crates.io-index"
69
69
+
checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc"
70
70
+
dependencies = [
71
71
+
"aws-lc-sys",
72
72
+
"zeroize",
73
73
+
]
74
74
+
75
75
+
[[package]]
76
76
+
name = "aws-lc-sys"
77
77
+
version = "0.39.1"
78
78
+
source = "registry+https://github.com/rust-lang/crates.io-index"
79
79
+
checksum = "83a25cf98105baa966497416dbd42565ce3a8cf8dbfd59803ec9ad46f3126399"
80
80
+
dependencies = [
81
81
+
"cc",
82
82
+
"cmake",
83
83
+
"dunce",
84
84
+
"fs_extra",
85
85
+
]
86
86
+
87
87
+
[[package]]
88
88
+
name = "base64"
89
89
+
version = "0.22.1"
90
90
+
source = "registry+https://github.com/rust-lang/crates.io-index"
91
91
+
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
92
92
+
93
93
+
[[package]]
94
94
+
name = "bit-set"
95
95
+
version = "0.5.3"
96
96
+
source = "registry+https://github.com/rust-lang/crates.io-index"
97
97
+
checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
98
98
+
dependencies = [
99
99
+
"bit-vec",
100
100
+
]
101
101
+
102
102
+
[[package]]
103
103
+
name = "bit-vec"
104
104
+
version = "0.6.3"
105
105
+
source = "registry+https://github.com/rust-lang/crates.io-index"
106
106
+
checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
107
107
+
108
108
+
[[package]]
109
109
+
name = "bitflags"
110
110
+
version = "1.3.2"
111
111
+
source = "registry+https://github.com/rust-lang/crates.io-index"
112
112
+
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
113
113
+
114
114
+
[[package]]
115
115
+
name = "bitflags"
116
116
+
version = "2.11.0"
117
117
+
source = "registry+https://github.com/rust-lang/crates.io-index"
118
118
+
checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
119
119
+
120
120
+
[[package]]
121
121
+
name = "block-buffer"
122
122
+
version = "0.10.4"
123
123
+
source = "registry+https://github.com/rust-lang/crates.io-index"
124
124
+
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
125
125
+
dependencies = [
126
126
+
"generic-array",
127
127
+
]
128
128
+
129
129
+
[[package]]
130
130
+
name = "bumpalo"
131
131
+
version = "3.20.2"
132
132
+
source = "registry+https://github.com/rust-lang/crates.io-index"
133
133
+
checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
134
134
+
135
135
+
[[package]]
136
136
+
name = "bytemuck"
137
137
+
version = "1.25.0"
138
138
+
source = "registry+https://github.com/rust-lang/crates.io-index"
139
139
+
checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
140
140
+
141
141
+
[[package]]
142
142
+
name = "bytes"
143
143
+
version = "1.11.1"
144
144
+
source = "registry+https://github.com/rust-lang/crates.io-index"
145
145
+
checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
146
146
+
147
147
+
[[package]]
148
148
+
name = "castaway"
149
149
+
version = "0.2.4"
150
150
+
source = "registry+https://github.com/rust-lang/crates.io-index"
151
151
+
checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
152
152
+
dependencies = [
153
153
+
"rustversion",
154
154
+
]
155
155
+
156
156
+
[[package]]
157
157
+
name = "cc"
158
158
+
version = "1.2.59"
159
159
+
source = "registry+https://github.com/rust-lang/crates.io-index"
160
160
+
checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283"
161
161
+
dependencies = [
162
162
+
"find-msvc-tools",
163
163
+
"jobserver",
164
164
+
"libc",
165
165
+
"shlex",
166
166
+
]
167
167
+
168
168
+
[[package]]
169
169
+
name = "cesu8"
170
170
+
version = "1.1.0"
171
171
+
source = "registry+https://github.com/rust-lang/crates.io-index"
172
172
+
checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
173
173
+
174
174
+
[[package]]
175
175
+
name = "cfg-if"
176
176
+
version = "1.0.4"
177
177
+
source = "registry+https://github.com/rust-lang/crates.io-index"
178
178
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
179
179
+
180
180
+
[[package]]
181
181
+
name = "cfg_aliases"
182
182
+
version = "0.2.1"
183
183
+
source = "registry+https://github.com/rust-lang/crates.io-index"
184
184
+
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
185
185
+
186
186
+
[[package]]
187
187
+
name = "cmake"
188
188
+
version = "0.1.58"
189
189
+
source = "registry+https://github.com/rust-lang/crates.io-index"
190
190
+
checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
191
191
+
dependencies = [
192
192
+
"cc",
193
193
+
]
194
194
+
195
195
+
[[package]]
196
196
+
name = "combine"
197
197
+
version = "4.6.7"
198
198
+
source = "registry+https://github.com/rust-lang/crates.io-index"
199
199
+
checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
200
200
+
dependencies = [
201
201
+
"bytes",
202
202
+
"memchr",
203
203
+
]
204
204
+
205
205
+
[[package]]
206
206
+
name = "compact_str"
207
207
+
version = "0.9.0"
208
208
+
source = "registry+https://github.com/rust-lang/crates.io-index"
209
209
+
checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
210
210
+
dependencies = [
211
211
+
"castaway",
212
212
+
"cfg-if",
213
213
+
"itoa",
214
214
+
"rustversion",
215
215
+
"ryu",
216
216
+
"static_assertions",
217
217
+
]
218
218
+
219
219
+
[[package]]
220
220
+
name = "convert_case"
221
221
+
version = "0.10.0"
222
222
+
source = "registry+https://github.com/rust-lang/crates.io-index"
223
223
+
checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9"
224
224
+
dependencies = [
225
225
+
"unicode-segmentation",
226
226
+
]
227
227
+
228
228
+
[[package]]
229
229
+
name = "core-foundation"
230
230
+
version = "0.9.4"
231
231
+
source = "registry+https://github.com/rust-lang/crates.io-index"
232
232
+
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
233
233
+
dependencies = [
234
234
+
"core-foundation-sys",
235
235
+
"libc",
236
236
+
]
237
237
+
238
238
+
[[package]]
239
239
+
name = "core-foundation"
240
240
+
version = "0.10.1"
241
241
+
source = "registry+https://github.com/rust-lang/crates.io-index"
242
242
+
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
243
243
+
dependencies = [
244
244
+
"core-foundation-sys",
245
245
+
"libc",
246
246
+
]
247
247
+
248
248
+
[[package]]
249
249
+
name = "core-foundation-sys"
250
250
+
version = "0.8.7"
251
251
+
source = "registry+https://github.com/rust-lang/crates.io-index"
252
252
+
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
253
253
+
254
254
+
[[package]]
255
255
+
name = "cpufeatures"
256
256
+
version = "0.2.17"
257
257
+
source = "registry+https://github.com/rust-lang/crates.io-index"
258
258
+
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
259
259
+
dependencies = [
260
260
+
"libc",
261
261
+
]
262
262
+
263
263
+
[[package]]
264
264
+
name = "crossterm"
265
265
+
version = "0.29.0"
266
266
+
source = "registry+https://github.com/rust-lang/crates.io-index"
267
267
+
checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
268
268
+
dependencies = [
269
269
+
"bitflags 2.11.0",
270
270
+
"crossterm_winapi",
271
271
+
"derive_more",
272
272
+
"document-features",
273
273
+
"futures-core",
274
274
+
"mio",
275
275
+
"parking_lot",
276
276
+
"rustix",
277
277
+
"signal-hook",
278
278
+
"signal-hook-mio",
279
279
+
"winapi",
280
280
+
]
281
281
+
282
282
+
[[package]]
283
283
+
name = "crossterm_winapi"
284
284
+
version = "0.9.1"
285
285
+
source = "registry+https://github.com/rust-lang/crates.io-index"
286
286
+
checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
287
287
+
dependencies = [
288
288
+
"winapi",
289
289
+
]
290
290
+
291
291
+
[[package]]
292
292
+
name = "crypto-common"
293
293
+
version = "0.1.7"
294
294
+
source = "registry+https://github.com/rust-lang/crates.io-index"
295
295
+
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
296
296
+
dependencies = [
297
297
+
"generic-array",
298
298
+
"typenum",
299
299
+
]
300
300
+
301
301
+
[[package]]
302
302
+
name = "csscolorparser"
303
303
+
version = "0.6.2"
304
304
+
source = "registry+https://github.com/rust-lang/crates.io-index"
305
305
+
checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf"
306
306
+
dependencies = [
307
307
+
"lab",
308
308
+
"phf",
309
309
+
]
310
310
+
311
311
+
[[package]]
312
312
+
name = "darling"
313
313
+
version = "0.23.0"
314
314
+
source = "registry+https://github.com/rust-lang/crates.io-index"
315
315
+
checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"
316
316
+
dependencies = [
317
317
+
"darling_core",
318
318
+
"darling_macro",
319
319
+
]
320
320
+
321
321
+
[[package]]
322
322
+
name = "darling_core"
323
323
+
version = "0.23.0"
324
324
+
source = "registry+https://github.com/rust-lang/crates.io-index"
325
325
+
checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
326
326
+
dependencies = [
327
327
+
"ident_case",
328
328
+
"proc-macro2",
329
329
+
"quote",
330
330
+
"strsim",
331
331
+
"syn 2.0.117",
332
332
+
]
333
333
+
334
334
+
[[package]]
335
335
+
name = "darling_macro"
336
336
+
version = "0.23.0"
337
337
+
source = "registry+https://github.com/rust-lang/crates.io-index"
338
338
+
checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
339
339
+
dependencies = [
340
340
+
"darling_core",
341
341
+
"quote",
342
342
+
"syn 2.0.117",
343
343
+
]
344
344
+
345
345
+
[[package]]
346
346
+
name = "deltae"
347
347
+
version = "0.3.2"
348
348
+
source = "registry+https://github.com/rust-lang/crates.io-index"
349
349
+
checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4"
350
350
+
351
351
+
[[package]]
352
352
+
name = "deranged"
353
353
+
version = "0.5.8"
354
354
+
source = "registry+https://github.com/rust-lang/crates.io-index"
355
355
+
checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
356
356
+
dependencies = [
357
357
+
"powerfmt",
358
358
+
]
359
359
+
360
360
+
[[package]]
361
361
+
name = "derive_more"
362
362
+
version = "2.1.1"
363
363
+
source = "registry+https://github.com/rust-lang/crates.io-index"
364
364
+
checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
365
365
+
dependencies = [
366
366
+
"derive_more-impl",
367
367
+
]
368
368
+
369
369
+
[[package]]
370
370
+
name = "derive_more-impl"
371
371
+
version = "2.1.1"
372
372
+
source = "registry+https://github.com/rust-lang/crates.io-index"
373
373
+
checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
374
374
+
dependencies = [
375
375
+
"convert_case",
376
376
+
"proc-macro2",
377
377
+
"quote",
378
378
+
"rustc_version",
379
379
+
"syn 2.0.117",
380
380
+
]
381
381
+
382
382
+
[[package]]
383
383
+
name = "digest"
384
384
+
version = "0.10.7"
385
385
+
source = "registry+https://github.com/rust-lang/crates.io-index"
386
386
+
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
387
387
+
dependencies = [
388
388
+
"block-buffer",
389
389
+
"crypto-common",
390
390
+
]
391
391
+
392
392
+
[[package]]
393
393
+
name = "dirs"
394
394
+
version = "5.0.1"
395
395
+
source = "registry+https://github.com/rust-lang/crates.io-index"
396
396
+
checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
397
397
+
dependencies = [
398
398
+
"dirs-sys",
399
399
+
]
400
400
+
401
401
+
[[package]]
402
402
+
name = "dirs-sys"
403
403
+
version = "0.4.1"
404
404
+
source = "registry+https://github.com/rust-lang/crates.io-index"
405
405
+
checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
406
406
+
dependencies = [
407
407
+
"libc",
408
408
+
"option-ext",
409
409
+
"redox_users",
410
410
+
"windows-sys 0.48.0",
411
411
+
]
412
412
+
413
413
+
[[package]]
414
414
+
name = "displaydoc"
415
415
+
version = "0.2.5"
416
416
+
source = "registry+https://github.com/rust-lang/crates.io-index"
417
417
+
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
418
418
+
dependencies = [
419
419
+
"proc-macro2",
420
420
+
"quote",
421
421
+
"syn 2.0.117",
422
422
+
]
423
423
+
424
424
+
[[package]]
425
425
+
name = "document-features"
426
426
+
version = "0.2.12"
427
427
+
source = "registry+https://github.com/rust-lang/crates.io-index"
428
428
+
checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
429
429
+
dependencies = [
430
430
+
"litrs",
431
431
+
]
432
432
+
433
433
+
[[package]]
434
434
+
name = "dunce"
435
435
+
version = "1.0.5"
436
436
+
source = "registry+https://github.com/rust-lang/crates.io-index"
437
437
+
checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
438
438
+
439
439
+
[[package]]
440
440
+
name = "either"
441
441
+
version = "1.15.0"
442
442
+
source = "registry+https://github.com/rust-lang/crates.io-index"
443
443
+
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
444
444
+
445
445
+
[[package]]
446
446
+
name = "encoding_rs"
447
447
+
version = "0.8.35"
448
448
+
source = "registry+https://github.com/rust-lang/crates.io-index"
449
449
+
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
450
450
+
dependencies = [
451
451
+
"cfg-if",
452
452
+
]
453
453
+
454
454
+
[[package]]
455
455
+
name = "equivalent"
456
456
+
version = "1.0.2"
457
457
+
source = "registry+https://github.com/rust-lang/crates.io-index"
458
458
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
459
459
+
460
460
+
[[package]]
461
461
+
name = "errno"
462
462
+
version = "0.3.14"
463
463
+
source = "registry+https://github.com/rust-lang/crates.io-index"
464
464
+
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
465
465
+
dependencies = [
466
466
+
"libc",
467
467
+
"windows-sys 0.61.2",
468
468
+
]
469
469
+
470
470
+
[[package]]
471
471
+
name = "euclid"
472
472
+
version = "0.22.14"
473
473
+
source = "registry+https://github.com/rust-lang/crates.io-index"
474
474
+
checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
475
475
+
dependencies = [
476
476
+
"num-traits",
477
477
+
]
478
478
+
479
479
+
[[package]]
480
480
+
name = "fallible-iterator"
481
481
+
version = "0.3.0"
482
482
+
source = "registry+https://github.com/rust-lang/crates.io-index"
483
483
+
checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
484
484
+
485
485
+
[[package]]
486
486
+
name = "fallible-streaming-iterator"
487
487
+
version = "0.1.9"
488
488
+
source = "registry+https://github.com/rust-lang/crates.io-index"
489
489
+
checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
490
490
+
491
491
+
[[package]]
492
492
+
name = "fancy-regex"
493
493
+
version = "0.11.0"
494
494
+
source = "registry+https://github.com/rust-lang/crates.io-index"
495
495
+
checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"
496
496
+
dependencies = [
497
497
+
"bit-set",
498
498
+
"regex",
499
499
+
]
500
500
+
501
501
+
[[package]]
502
502
+
name = "filedescriptor"
503
503
+
version = "0.8.3"
504
504
+
source = "registry+https://github.com/rust-lang/crates.io-index"
505
505
+
checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d"
506
506
+
dependencies = [
507
507
+
"libc",
508
508
+
"thiserror 1.0.69",
509
509
+
"winapi",
510
510
+
]
511
511
+
512
512
+
[[package]]
513
513
+
name = "find-msvc-tools"
514
514
+
version = "0.1.9"
515
515
+
source = "registry+https://github.com/rust-lang/crates.io-index"
516
516
+
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
517
517
+
518
518
+
[[package]]
519
519
+
name = "finl_unicode"
520
520
+
version = "1.4.0"
521
521
+
source = "registry+https://github.com/rust-lang/crates.io-index"
522
522
+
checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5"
523
523
+
524
524
+
[[package]]
525
525
+
name = "fixedbitset"
526
526
+
version = "0.4.2"
527
527
+
source = "registry+https://github.com/rust-lang/crates.io-index"
528
528
+
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
529
529
+
530
530
+
[[package]]
531
531
+
name = "fnv"
532
532
+
version = "1.0.7"
533
533
+
source = "registry+https://github.com/rust-lang/crates.io-index"
534
534
+
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
535
535
+
536
536
+
[[package]]
537
537
+
name = "foldhash"
538
538
+
version = "0.1.5"
539
539
+
source = "registry+https://github.com/rust-lang/crates.io-index"
540
540
+
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
541
541
+
542
542
+
[[package]]
543
543
+
name = "foldhash"
544
544
+
version = "0.2.0"
545
545
+
source = "registry+https://github.com/rust-lang/crates.io-index"
546
546
+
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
547
547
+
548
548
+
[[package]]
549
549
+
name = "form_urlencoded"
550
550
+
version = "1.2.2"
551
551
+
source = "registry+https://github.com/rust-lang/crates.io-index"
552
552
+
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
553
553
+
dependencies = [
554
554
+
"percent-encoding",
555
555
+
]
556
556
+
557
557
+
[[package]]
558
558
+
name = "fs_extra"
559
559
+
version = "1.3.0"
560
560
+
source = "registry+https://github.com/rust-lang/crates.io-index"
561
561
+
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
562
562
+
563
563
+
[[package]]
564
564
+
name = "futures"
565
565
+
version = "0.3.32"
566
566
+
source = "registry+https://github.com/rust-lang/crates.io-index"
567
567
+
checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
568
568
+
dependencies = [
569
569
+
"futures-channel",
570
570
+
"futures-core",
571
571
+
"futures-executor",
572
572
+
"futures-io",
573
573
+
"futures-sink",
574
574
+
"futures-task",
575
575
+
"futures-util",
576
576
+
]
577
577
+
578
578
+
[[package]]
579
579
+
name = "futures-channel"
580
580
+
version = "0.3.32"
581
581
+
source = "registry+https://github.com/rust-lang/crates.io-index"
582
582
+
checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
583
583
+
dependencies = [
584
584
+
"futures-core",
585
585
+
"futures-sink",
586
586
+
]
587
587
+
588
588
+
[[package]]
589
589
+
name = "futures-core"
590
590
+
version = "0.3.32"
591
591
+
source = "registry+https://github.com/rust-lang/crates.io-index"
592
592
+
checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
593
593
+
594
594
+
[[package]]
595
595
+
name = "futures-executor"
596
596
+
version = "0.3.32"
597
597
+
source = "registry+https://github.com/rust-lang/crates.io-index"
598
598
+
checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
599
599
+
dependencies = [
600
600
+
"futures-core",
601
601
+
"futures-task",
602
602
+
"futures-util",
603
603
+
]
604
604
+
605
605
+
[[package]]
606
606
+
name = "futures-io"
607
607
+
version = "0.3.32"
608
608
+
source = "registry+https://github.com/rust-lang/crates.io-index"
609
609
+
checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
610
610
+
611
611
+
[[package]]
612
612
+
name = "futures-macro"
613
613
+
version = "0.3.32"
614
614
+
source = "registry+https://github.com/rust-lang/crates.io-index"
615
615
+
checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
616
616
+
dependencies = [
617
617
+
"proc-macro2",
618
618
+
"quote",
619
619
+
"syn 2.0.117",
620
620
+
]
621
621
+
622
622
+
[[package]]
623
623
+
name = "futures-sink"
624
624
+
version = "0.3.32"
625
625
+
source = "registry+https://github.com/rust-lang/crates.io-index"
626
626
+
checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
627
627
+
628
628
+
[[package]]
629
629
+
name = "futures-task"
630
630
+
version = "0.3.32"
631
631
+
source = "registry+https://github.com/rust-lang/crates.io-index"
632
632
+
checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
633
633
+
634
634
+
[[package]]
635
635
+
name = "futures-util"
636
636
+
version = "0.3.32"
637
637
+
source = "registry+https://github.com/rust-lang/crates.io-index"
638
638
+
checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
639
639
+
dependencies = [
640
640
+
"futures-channel",
641
641
+
"futures-core",
642
642
+
"futures-io",
643
643
+
"futures-macro",
644
644
+
"futures-sink",
645
645
+
"futures-task",
646
646
+
"memchr",
647
647
+
"pin-project-lite",
648
648
+
"slab",
649
649
+
]
650
650
+
651
651
+
[[package]]
652
652
+
name = "generic-array"
653
653
+
version = "0.14.7"
654
654
+
source = "registry+https://github.com/rust-lang/crates.io-index"
655
655
+
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
656
656
+
dependencies = [
657
657
+
"typenum",
658
658
+
"version_check",
659
659
+
]
660
660
+
661
661
+
[[package]]
662
662
+
name = "getrandom"
663
663
+
version = "0.2.17"
664
664
+
source = "registry+https://github.com/rust-lang/crates.io-index"
665
665
+
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
666
666
+
dependencies = [
667
667
+
"cfg-if",
668
668
+
"js-sys",
669
669
+
"libc",
670
670
+
"wasi",
671
671
+
"wasm-bindgen",
672
672
+
]
673
673
+
674
674
+
[[package]]
675
675
+
name = "getrandom"
676
676
+
version = "0.3.4"
677
677
+
source = "registry+https://github.com/rust-lang/crates.io-index"
678
678
+
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
679
679
+
dependencies = [
680
680
+
"cfg-if",
681
681
+
"js-sys",
682
682
+
"libc",
683
683
+
"r-efi 5.3.0",
684
684
+
"wasip2",
685
685
+
"wasm-bindgen",
686
686
+
]
687
687
+
688
688
+
[[package]]
689
689
+
name = "getrandom"
690
690
+
version = "0.4.2"
691
691
+
source = "registry+https://github.com/rust-lang/crates.io-index"
692
692
+
checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
693
693
+
dependencies = [
694
694
+
"cfg-if",
695
695
+
"libc",
696
696
+
"r-efi 6.0.0",
697
697
+
"wasip2",
698
698
+
"wasip3",
699
699
+
]
700
700
+
701
701
+
[[package]]
702
702
+
name = "h2"
703
703
+
version = "0.4.13"
704
704
+
source = "registry+https://github.com/rust-lang/crates.io-index"
705
705
+
checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54"
706
706
+
dependencies = [
707
707
+
"atomic-waker",
708
708
+
"bytes",
709
709
+
"fnv",
710
710
+
"futures-core",
711
711
+
"futures-sink",
712
712
+
"http",
713
713
+
"indexmap",
714
714
+
"slab",
715
715
+
"tokio",
716
716
+
"tokio-util",
717
717
+
"tracing",
718
718
+
]
719
719
+
720
720
+
[[package]]
721
721
+
name = "hashbrown"
722
722
+
version = "0.15.5"
723
723
+
source = "registry+https://github.com/rust-lang/crates.io-index"
724
724
+
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
725
725
+
dependencies = [
726
726
+
"foldhash 0.1.5",
727
727
+
]
728
728
+
729
729
+
[[package]]
730
730
+
name = "hashbrown"
731
731
+
version = "0.16.1"
732
732
+
source = "registry+https://github.com/rust-lang/crates.io-index"
733
733
+
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
734
734
+
dependencies = [
735
735
+
"allocator-api2",
736
736
+
"equivalent",
737
737
+
"foldhash 0.2.0",
738
738
+
]
739
739
+
740
740
+
[[package]]
741
741
+
name = "hashlink"
742
742
+
version = "0.11.0"
743
743
+
source = "registry+https://github.com/rust-lang/crates.io-index"
744
744
+
checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230"
745
745
+
dependencies = [
746
746
+
"hashbrown 0.16.1",
747
747
+
]
748
748
+
749
749
+
[[package]]
750
750
+
name = "heck"
751
751
+
version = "0.5.0"
752
752
+
source = "registry+https://github.com/rust-lang/crates.io-index"
753
753
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
754
754
+
755
755
+
[[package]]
756
756
+
name = "hex"
757
757
+
version = "0.4.3"
758
758
+
source = "registry+https://github.com/rust-lang/crates.io-index"
759
759
+
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
760
760
+
761
761
+
[[package]]
762
762
+
name = "http"
763
763
+
version = "1.4.0"
764
764
+
source = "registry+https://github.com/rust-lang/crates.io-index"
765
765
+
checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
766
766
+
dependencies = [
767
767
+
"bytes",
768
768
+
"itoa",
769
769
+
]
770
770
+
771
771
+
[[package]]
772
772
+
name = "http-body"
773
773
+
version = "1.0.1"
774
774
+
source = "registry+https://github.com/rust-lang/crates.io-index"
775
775
+
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
776
776
+
dependencies = [
777
777
+
"bytes",
778
778
+
"http",
779
779
+
]
780
780
+
781
781
+
[[package]]
782
782
+
name = "http-body-util"
783
783
+
version = "0.1.3"
784
784
+
source = "registry+https://github.com/rust-lang/crates.io-index"
785
785
+
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
786
786
+
dependencies = [
787
787
+
"bytes",
788
788
+
"futures-core",
789
789
+
"http",
790
790
+
"http-body",
791
791
+
"pin-project-lite",
792
792
+
]
793
793
+
794
794
+
[[package]]
795
795
+
name = "httparse"
796
796
+
version = "1.10.1"
797
797
+
source = "registry+https://github.com/rust-lang/crates.io-index"
798
798
+
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
799
799
+
800
800
+
[[package]]
801
801
+
name = "hyper"
802
802
+
version = "1.9.0"
803
803
+
source = "registry+https://github.com/rust-lang/crates.io-index"
804
804
+
checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"
805
805
+
dependencies = [
806
806
+
"atomic-waker",
807
807
+
"bytes",
808
808
+
"futures-channel",
809
809
+
"futures-core",
810
810
+
"h2",
811
811
+
"http",
812
812
+
"http-body",
813
813
+
"httparse",
814
814
+
"itoa",
815
815
+
"pin-project-lite",
816
816
+
"smallvec",
817
817
+
"tokio",
818
818
+
"want",
819
819
+
]
820
820
+
821
821
+
[[package]]
822
822
+
name = "hyper-rustls"
823
823
+
version = "0.27.7"
824
824
+
source = "registry+https://github.com/rust-lang/crates.io-index"
825
825
+
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
826
826
+
dependencies = [
827
827
+
"http",
828
828
+
"hyper",
829
829
+
"hyper-util",
830
830
+
"rustls",
831
831
+
"rustls-pki-types",
832
832
+
"tokio",
833
833
+
"tokio-rustls",
834
834
+
"tower-service",
835
835
+
]
836
836
+
837
837
+
[[package]]
838
838
+
name = "hyper-util"
839
839
+
version = "0.1.20"
840
840
+
source = "registry+https://github.com/rust-lang/crates.io-index"
841
841
+
checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
842
842
+
dependencies = [
843
843
+
"base64",
844
844
+
"bytes",
845
845
+
"futures-channel",
846
846
+
"futures-util",
847
847
+
"http",
848
848
+
"http-body",
849
849
+
"hyper",
850
850
+
"ipnet",
851
851
+
"libc",
852
852
+
"percent-encoding",
853
853
+
"pin-project-lite",
854
854
+
"socket2",
855
855
+
"system-configuration",
856
856
+
"tokio",
857
857
+
"tower-service",
858
858
+
"tracing",
859
859
+
"windows-registry",
860
860
+
]
861
861
+
862
862
+
[[package]]
863
863
+
name = "icu_collections"
864
864
+
version = "2.2.0"
865
865
+
source = "registry+https://github.com/rust-lang/crates.io-index"
866
866
+
checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
867
867
+
dependencies = [
868
868
+
"displaydoc",
869
869
+
"potential_utf",
870
870
+
"utf8_iter",
871
871
+
"yoke",
872
872
+
"zerofrom",
873
873
+
"zerovec",
874
874
+
]
875
875
+
876
876
+
[[package]]
877
877
+
name = "icu_locale_core"
878
878
+
version = "2.2.0"
879
879
+
source = "registry+https://github.com/rust-lang/crates.io-index"
880
880
+
checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
881
881
+
dependencies = [
882
882
+
"displaydoc",
883
883
+
"litemap",
884
884
+
"tinystr",
885
885
+
"writeable",
886
886
+
"zerovec",
887
887
+
]
888
888
+
889
889
+
[[package]]
890
890
+
name = "icu_normalizer"
891
891
+
version = "2.2.0"
892
892
+
source = "registry+https://github.com/rust-lang/crates.io-index"
893
893
+
checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
894
894
+
dependencies = [
895
895
+
"icu_collections",
896
896
+
"icu_normalizer_data",
897
897
+
"icu_properties",
898
898
+
"icu_provider",
899
899
+
"smallvec",
900
900
+
"zerovec",
901
901
+
]
902
902
+
903
903
+
[[package]]
904
904
+
name = "icu_normalizer_data"
905
905
+
version = "2.2.0"
906
906
+
source = "registry+https://github.com/rust-lang/crates.io-index"
907
907
+
checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
908
908
+
909
909
+
[[package]]
910
910
+
name = "icu_properties"
911
911
+
version = "2.2.0"
912
912
+
source = "registry+https://github.com/rust-lang/crates.io-index"
913
913
+
checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
914
914
+
dependencies = [
915
915
+
"icu_collections",
916
916
+
"icu_locale_core",
917
917
+
"icu_properties_data",
918
918
+
"icu_provider",
919
919
+
"zerotrie",
920
920
+
"zerovec",
921
921
+
]
922
922
+
923
923
+
[[package]]
924
924
+
name = "icu_properties_data"
925
925
+
version = "2.2.0"
926
926
+
source = "registry+https://github.com/rust-lang/crates.io-index"
927
927
+
checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
928
928
+
929
929
+
[[package]]
930
930
+
name = "icu_provider"
931
931
+
version = "2.2.0"
932
932
+
source = "registry+https://github.com/rust-lang/crates.io-index"
933
933
+
checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
934
934
+
dependencies = [
935
935
+
"displaydoc",
936
936
+
"icu_locale_core",
937
937
+
"writeable",
938
938
+
"yoke",
939
939
+
"zerofrom",
940
940
+
"zerotrie",
941
941
+
"zerovec",
942
942
+
]
943
943
+
944
944
+
[[package]]
945
945
+
name = "id-arena"
946
946
+
version = "2.3.0"
947
947
+
source = "registry+https://github.com/rust-lang/crates.io-index"
948
948
+
checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
949
949
+
950
950
+
[[package]]
951
951
+
name = "ident_case"
952
952
+
version = "1.0.1"
953
953
+
source = "registry+https://github.com/rust-lang/crates.io-index"
954
954
+
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
955
955
+
956
956
+
[[package]]
957
957
+
name = "idna"
958
958
+
version = "1.1.0"
959
959
+
source = "registry+https://github.com/rust-lang/crates.io-index"
960
960
+
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
961
961
+
dependencies = [
962
962
+
"idna_adapter",
963
963
+
"smallvec",
964
964
+
"utf8_iter",
965
965
+
]
966
966
+
967
967
+
[[package]]
968
968
+
name = "idna_adapter"
969
969
+
version = "1.2.1"
970
970
+
source = "registry+https://github.com/rust-lang/crates.io-index"
971
971
+
checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
972
972
+
dependencies = [
973
973
+
"icu_normalizer",
974
974
+
"icu_properties",
975
975
+
]
976
976
+
977
977
+
[[package]]
978
978
+
name = "indexmap"
979
979
+
version = "2.13.1"
980
980
+
source = "registry+https://github.com/rust-lang/crates.io-index"
981
981
+
checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff"
982
982
+
dependencies = [
983
983
+
"equivalent",
984
984
+
"hashbrown 0.16.1",
985
985
+
"serde",
986
986
+
"serde_core",
987
987
+
]
988
988
+
989
989
+
[[package]]
990
990
+
name = "indoc"
991
991
+
version = "2.0.7"
992
992
+
source = "registry+https://github.com/rust-lang/crates.io-index"
993
993
+
checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
994
994
+
dependencies = [
995
995
+
"rustversion",
996
996
+
]
997
997
+
998
998
+
[[package]]
999
999
+
name = "instability"
1000
1000
+
version = "0.3.12"
1001
1001
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1002
1002
+
checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971"
1003
1003
+
dependencies = [
1004
1004
+
"darling",
1005
1005
+
"indoc",
1006
1006
+
"proc-macro2",
1007
1007
+
"quote",
1008
1008
+
"syn 2.0.117",
1009
1009
+
]
1010
1010
+
1011
1011
+
[[package]]
1012
1012
+
name = "ipnet"
1013
1013
+
version = "2.12.0"
1014
1014
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1015
1015
+
checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
1016
1016
+
1017
1017
+
[[package]]
1018
1018
+
name = "iri-string"
1019
1019
+
version = "0.7.12"
1020
1020
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1021
1021
+
checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20"
1022
1022
+
dependencies = [
1023
1023
+
"memchr",
1024
1024
+
"serde",
1025
1025
+
]
1026
1026
+
1027
1027
+
[[package]]
1028
1028
+
name = "itertools"
1029
1029
+
version = "0.14.0"
1030
1030
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1031
1031
+
checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
1032
1032
+
dependencies = [
1033
1033
+
"either",
1034
1034
+
]
1035
1035
+
1036
1036
+
[[package]]
1037
1037
+
name = "itoa"
1038
1038
+
version = "1.0.18"
1039
1039
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1040
1040
+
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
1041
1041
+
1042
1042
+
[[package]]
1043
1043
+
name = "jni"
1044
1044
+
version = "0.21.1"
1045
1045
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1046
1046
+
checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
1047
1047
+
dependencies = [
1048
1048
+
"cesu8",
1049
1049
+
"cfg-if",
1050
1050
+
"combine",
1051
1051
+
"jni-sys 0.3.1",
1052
1052
+
"log",
1053
1053
+
"thiserror 1.0.69",
1054
1054
+
"walkdir",
1055
1055
+
"windows-sys 0.45.0",
1056
1056
+
]
1057
1057
+
1058
1058
+
[[package]]
1059
1059
+
name = "jni-sys"
1060
1060
+
version = "0.3.1"
1061
1061
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1062
1062
+
checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
1063
1063
+
dependencies = [
1064
1064
+
"jni-sys 0.4.1",
1065
1065
+
]
1066
1066
+
1067
1067
+
[[package]]
1068
1068
+
name = "jni-sys"
1069
1069
+
version = "0.4.1"
1070
1070
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1071
1071
+
checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"
1072
1072
+
dependencies = [
1073
1073
+
"jni-sys-macros",
1074
1074
+
]
1075
1075
+
1076
1076
+
[[package]]
1077
1077
+
name = "jni-sys-macros"
1078
1078
+
version = "0.4.1"
1079
1079
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1080
1080
+
checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
1081
1081
+
dependencies = [
1082
1082
+
"quote",
1083
1083
+
"syn 2.0.117",
1084
1084
+
]
1085
1085
+
1086
1086
+
[[package]]
1087
1087
+
name = "jobserver"
1088
1088
+
version = "0.1.34"
1089
1089
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1090
1090
+
checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
1091
1091
+
dependencies = [
1092
1092
+
"getrandom 0.3.4",
1093
1093
+
"libc",
1094
1094
+
]
1095
1095
+
1096
1096
+
[[package]]
1097
1097
+
name = "js-sys"
1098
1098
+
version = "0.3.94"
1099
1099
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1100
1100
+
checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9"
1101
1101
+
dependencies = [
1102
1102
+
"cfg-if",
1103
1103
+
"futures-util",
1104
1104
+
"once_cell",
1105
1105
+
"wasm-bindgen",
1106
1106
+
]
1107
1107
+
1108
1108
+
[[package]]
1109
1109
+
name = "kasuari"
1110
1110
+
version = "0.4.12"
1111
1111
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1112
1112
+
checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899"
1113
1113
+
dependencies = [
1114
1114
+
"hashbrown 0.16.1",
1115
1115
+
"portable-atomic",
1116
1116
+
"thiserror 2.0.18",
1117
1117
+
]
1118
1118
+
1119
1119
+
[[package]]
1120
1120
+
name = "lab"
1121
1121
+
version = "0.11.0"
1122
1122
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1123
1123
+
checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f"
1124
1124
+
1125
1125
+
[[package]]
1126
1126
+
name = "lazy_static"
1127
1127
+
version = "1.5.0"
1128
1128
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1129
1129
+
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
1130
1130
+
1131
1131
+
[[package]]
1132
1132
+
name = "leb128fmt"
1133
1133
+
version = "0.1.0"
1134
1134
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1135
1135
+
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
1136
1136
+
1137
1137
+
[[package]]
1138
1138
+
name = "libc"
1139
1139
+
version = "0.2.184"
1140
1140
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1141
1141
+
checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af"
1142
1142
+
1143
1143
+
[[package]]
1144
1144
+
name = "libredox"
1145
1145
+
version = "0.1.15"
1146
1146
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1147
1147
+
checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08"
1148
1148
+
dependencies = [
1149
1149
+
"libc",
1150
1150
+
]
1151
1151
+
1152
1152
+
[[package]]
1153
1153
+
name = "libsqlite3-sys"
1154
1154
+
version = "0.37.0"
1155
1155
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1156
1156
+
checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1"
1157
1157
+
dependencies = [
1158
1158
+
"cc",
1159
1159
+
"pkg-config",
1160
1160
+
"vcpkg",
1161
1161
+
]
1162
1162
+
1163
1163
+
[[package]]
1164
1164
+
name = "line-clipping"
1165
1165
+
version = "0.3.7"
1166
1166
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1167
1167
+
checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8"
1168
1168
+
dependencies = [
1169
1169
+
"bitflags 2.11.0",
1170
1170
+
]
1171
1171
+
1172
1172
+
[[package]]
1173
1173
+
name = "linux-raw-sys"
1174
1174
+
version = "0.12.1"
1175
1175
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1176
1176
+
checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
1177
1177
+
1178
1178
+
[[package]]
1179
1179
+
name = "litemap"
1180
1180
+
version = "0.8.2"
1181
1181
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1182
1182
+
checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
1183
1183
+
1184
1184
+
[[package]]
1185
1185
+
name = "litrs"
1186
1186
+
version = "1.0.0"
1187
1187
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1188
1188
+
checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
1189
1189
+
1190
1190
+
[[package]]
1191
1191
+
name = "lock_api"
1192
1192
+
version = "0.4.14"
1193
1193
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1194
1194
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
1195
1195
+
dependencies = [
1196
1196
+
"scopeguard",
1197
1197
+
]
1198
1198
+
1199
1199
+
[[package]]
1200
1200
+
name = "log"
1201
1201
+
version = "0.4.29"
1202
1202
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1203
1203
+
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
1204
1204
+
1205
1205
+
[[package]]
1206
1206
+
name = "lru"
1207
1207
+
version = "0.16.3"
1208
1208
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1209
1209
+
checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593"
1210
1210
+
dependencies = [
1211
1211
+
"hashbrown 0.16.1",
1212
1212
+
]
1213
1213
+
1214
1214
+
[[package]]
1215
1215
+
name = "lru-slab"
1216
1216
+
version = "0.1.2"
1217
1217
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1218
1218
+
checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
1219
1219
+
1220
1220
+
[[package]]
1221
1221
+
name = "mac_address"
1222
1222
+
version = "1.1.8"
1223
1223
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1224
1224
+
checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303"
1225
1225
+
dependencies = [
1226
1226
+
"nix",
1227
1227
+
"winapi",
1228
1228
+
]
1229
1229
+
1230
1230
+
[[package]]
1231
1231
+
name = "memchr"
1232
1232
+
version = "2.8.0"
1233
1233
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1234
1234
+
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
1235
1235
+
1236
1236
+
[[package]]
1237
1237
+
name = "memmem"
1238
1238
+
version = "0.1.1"
1239
1239
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1240
1240
+
checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15"
1241
1241
+
1242
1242
+
[[package]]
1243
1243
+
name = "memoffset"
1244
1244
+
version = "0.9.1"
1245
1245
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1246
1246
+
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
1247
1247
+
dependencies = [
1248
1248
+
"autocfg",
1249
1249
+
]
1250
1250
+
1251
1251
+
[[package]]
1252
1252
+
name = "mime"
1253
1253
+
version = "0.3.17"
1254
1254
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1255
1255
+
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
1256
1256
+
1257
1257
+
[[package]]
1258
1258
+
name = "minimal-lexical"
1259
1259
+
version = "0.2.1"
1260
1260
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1261
1261
+
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
1262
1262
+
1263
1263
+
[[package]]
1264
1264
+
name = "mio"
1265
1265
+
version = "1.2.0"
1266
1266
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1267
1267
+
checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
1268
1268
+
dependencies = [
1269
1269
+
"libc",
1270
1270
+
"log",
1271
1271
+
"wasi",
1272
1272
+
"windows-sys 0.61.2",
1273
1273
+
]
1274
1274
+
1275
1275
+
[[package]]
1276
1276
+
name = "nix"
1277
1277
+
version = "0.29.0"
1278
1278
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1279
1279
+
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
1280
1280
+
dependencies = [
1281
1281
+
"bitflags 2.11.0",
1282
1282
+
"cfg-if",
1283
1283
+
"cfg_aliases",
1284
1284
+
"libc",
1285
1285
+
"memoffset",
1286
1286
+
]
1287
1287
+
1288
1288
+
[[package]]
1289
1289
+
name = "nom"
1290
1290
+
version = "7.1.3"
1291
1291
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1292
1292
+
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
1293
1293
+
dependencies = [
1294
1294
+
"memchr",
1295
1295
+
"minimal-lexical",
1296
1296
+
]
1297
1297
+
1298
1298
+
[[package]]
1299
1299
+
name = "nu-ansi-term"
1300
1300
+
version = "0.50.3"
1301
1301
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1302
1302
+
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
1303
1303
+
dependencies = [
1304
1304
+
"windows-sys 0.61.2",
1305
1305
+
]
1306
1306
+
1307
1307
+
[[package]]
1308
1308
+
name = "num-conv"
1309
1309
+
version = "0.2.1"
1310
1310
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1311
1311
+
checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967"
1312
1312
+
1313
1313
+
[[package]]
1314
1314
+
name = "num-derive"
1315
1315
+
version = "0.4.2"
1316
1316
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1317
1317
+
checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
1318
1318
+
dependencies = [
1319
1319
+
"proc-macro2",
1320
1320
+
"quote",
1321
1321
+
"syn 2.0.117",
1322
1322
+
]
1323
1323
+
1324
1324
+
[[package]]
1325
1325
+
name = "num-traits"
1326
1326
+
version = "0.2.19"
1327
1327
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1328
1328
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
1329
1329
+
dependencies = [
1330
1330
+
"autocfg",
1331
1331
+
]
1332
1332
+
1333
1333
+
[[package]]
1334
1334
+
name = "num_threads"
1335
1335
+
version = "0.1.7"
1336
1336
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1337
1337
+
checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
1338
1338
+
dependencies = [
1339
1339
+
"libc",
1340
1340
+
]
1341
1341
+
1342
1342
+
[[package]]
1343
1343
+
name = "once_cell"
1344
1344
+
version = "1.21.4"
1345
1345
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1346
1346
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
1347
1347
+
1348
1348
+
[[package]]
1349
1349
+
name = "openssl-probe"
1350
1350
+
version = "0.2.1"
1351
1351
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1352
1352
+
checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
1353
1353
+
1354
1354
+
[[package]]
1355
1355
+
name = "option-ext"
1356
1356
+
version = "0.2.0"
1357
1357
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1358
1358
+
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
1359
1359
+
1360
1360
+
[[package]]
1361
1361
+
name = "ordered-float"
1362
1362
+
version = "4.6.0"
1363
1363
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1364
1364
+
checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"
1365
1365
+
dependencies = [
1366
1366
+
"num-traits",
1367
1367
+
]
1368
1368
+
1369
1369
+
[[package]]
1370
1370
+
name = "parking_lot"
1371
1371
+
version = "0.12.5"
1372
1372
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1373
1373
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
1374
1374
+
dependencies = [
1375
1375
+
"lock_api",
1376
1376
+
"parking_lot_core",
1377
1377
+
]
1378
1378
+
1379
1379
+
[[package]]
1380
1380
+
name = "parking_lot_core"
1381
1381
+
version = "0.9.12"
1382
1382
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1383
1383
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
1384
1384
+
dependencies = [
1385
1385
+
"cfg-if",
1386
1386
+
"libc",
1387
1387
+
"redox_syscall",
1388
1388
+
"smallvec",
1389
1389
+
"windows-link",
1390
1390
+
]
1391
1391
+
1392
1392
+
[[package]]
1393
1393
+
name = "percent-encoding"
1394
1394
+
version = "2.3.2"
1395
1395
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1396
1396
+
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
1397
1397
+
1398
1398
+
[[package]]
1399
1399
+
name = "pest"
1400
1400
+
version = "2.8.6"
1401
1401
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1402
1402
+
checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662"
1403
1403
+
dependencies = [
1404
1404
+
"memchr",
1405
1405
+
"ucd-trie",
1406
1406
+
]
1407
1407
+
1408
1408
+
[[package]]
1409
1409
+
name = "pest_derive"
1410
1410
+
version = "2.8.6"
1411
1411
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1412
1412
+
checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77"
1413
1413
+
dependencies = [
1414
1414
+
"pest",
1415
1415
+
"pest_generator",
1416
1416
+
]
1417
1417
+
1418
1418
+
[[package]]
1419
1419
+
name = "pest_generator"
1420
1420
+
version = "2.8.6"
1421
1421
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1422
1422
+
checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f"
1423
1423
+
dependencies = [
1424
1424
+
"pest",
1425
1425
+
"pest_meta",
1426
1426
+
"proc-macro2",
1427
1427
+
"quote",
1428
1428
+
"syn 2.0.117",
1429
1429
+
]
1430
1430
+
1431
1431
+
[[package]]
1432
1432
+
name = "pest_meta"
1433
1433
+
version = "2.8.6"
1434
1434
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1435
1435
+
checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220"
1436
1436
+
dependencies = [
1437
1437
+
"pest",
1438
1438
+
"sha2",
1439
1439
+
]
1440
1440
+
1441
1441
+
[[package]]
1442
1442
+
name = "phf"
1443
1443
+
version = "0.11.3"
1444
1444
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1445
1445
+
checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
1446
1446
+
dependencies = [
1447
1447
+
"phf_macros",
1448
1448
+
"phf_shared",
1449
1449
+
]
1450
1450
+
1451
1451
+
[[package]]
1452
1452
+
name = "phf_codegen"
1453
1453
+
version = "0.11.3"
1454
1454
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1455
1455
+
checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
1456
1456
+
dependencies = [
1457
1457
+
"phf_generator",
1458
1458
+
"phf_shared",
1459
1459
+
]
1460
1460
+
1461
1461
+
[[package]]
1462
1462
+
name = "phf_generator"
1463
1463
+
version = "0.11.3"
1464
1464
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1465
1465
+
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
1466
1466
+
dependencies = [
1467
1467
+
"phf_shared",
1468
1468
+
"rand 0.8.5",
1469
1469
+
]
1470
1470
+
1471
1471
+
[[package]]
1472
1472
+
name = "phf_macros"
1473
1473
+
version = "0.11.3"
1474
1474
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1475
1475
+
checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
1476
1476
+
dependencies = [
1477
1477
+
"phf_generator",
1478
1478
+
"phf_shared",
1479
1479
+
"proc-macro2",
1480
1480
+
"quote",
1481
1481
+
"syn 2.0.117",
1482
1482
+
]
1483
1483
+
1484
1484
+
[[package]]
1485
1485
+
name = "phf_shared"
1486
1486
+
version = "0.11.3"
1487
1487
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1488
1488
+
checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
1489
1489
+
dependencies = [
1490
1490
+
"siphasher",
1491
1491
+
]
1492
1492
+
1493
1493
+
[[package]]
1494
1494
+
name = "pin-project-lite"
1495
1495
+
version = "0.2.17"
1496
1496
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1497
1497
+
checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
1498
1498
+
1499
1499
+
[[package]]
1500
1500
+
name = "pkg-config"
1501
1501
+
version = "0.3.32"
1502
1502
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1503
1503
+
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
1504
1504
+
1505
1505
+
[[package]]
1506
1506
+
name = "portable-atomic"
1507
1507
+
version = "1.13.1"
1508
1508
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1509
1509
+
checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
1510
1510
+
1511
1511
+
[[package]]
1512
1512
+
name = "potential_utf"
1513
1513
+
version = "0.1.5"
1514
1514
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1515
1515
+
checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
1516
1516
+
dependencies = [
1517
1517
+
"zerovec",
1518
1518
+
]
1519
1519
+
1520
1520
+
[[package]]
1521
1521
+
name = "powerfmt"
1522
1522
+
version = "0.2.0"
1523
1523
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1524
1524
+
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
1525
1525
+
1526
1526
+
[[package]]
1527
1527
+
name = "ppv-lite86"
1528
1528
+
version = "0.2.21"
1529
1529
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1530
1530
+
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
1531
1531
+
dependencies = [
1532
1532
+
"zerocopy",
1533
1533
+
]
1534
1534
+
1535
1535
+
[[package]]
1536
1536
+
name = "prettyplease"
1537
1537
+
version = "0.2.37"
1538
1538
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1539
1539
+
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
1540
1540
+
dependencies = [
1541
1541
+
"proc-macro2",
1542
1542
+
"syn 2.0.117",
1543
1543
+
]
1544
1544
+
1545
1545
+
[[package]]
1546
1546
+
name = "proc-macro2"
1547
1547
+
version = "1.0.106"
1548
1548
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1549
1549
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
1550
1550
+
dependencies = [
1551
1551
+
"unicode-ident",
1552
1552
+
]
1553
1553
+
1554
1554
+
[[package]]
1555
1555
+
name = "quinn"
1556
1556
+
version = "0.11.9"
1557
1557
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1558
1558
+
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
1559
1559
+
dependencies = [
1560
1560
+
"bytes",
1561
1561
+
"cfg_aliases",
1562
1562
+
"pin-project-lite",
1563
1563
+
"quinn-proto",
1564
1564
+
"quinn-udp",
1565
1565
+
"rustc-hash",
1566
1566
+
"rustls",
1567
1567
+
"socket2",
1568
1568
+
"thiserror 2.0.18",
1569
1569
+
"tokio",
1570
1570
+
"tracing",
1571
1571
+
"web-time",
1572
1572
+
]
1573
1573
+
1574
1574
+
[[package]]
1575
1575
+
name = "quinn-proto"
1576
1576
+
version = "0.11.14"
1577
1577
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1578
1578
+
checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
1579
1579
+
dependencies = [
1580
1580
+
"aws-lc-rs",
1581
1581
+
"bytes",
1582
1582
+
"getrandom 0.3.4",
1583
1583
+
"lru-slab",
1584
1584
+
"rand 0.9.2",
1585
1585
+
"ring",
1586
1586
+
"rustc-hash",
1587
1587
+
"rustls",
1588
1588
+
"rustls-pki-types",
1589
1589
+
"slab",
1590
1590
+
"thiserror 2.0.18",
1591
1591
+
"tinyvec",
1592
1592
+
"tracing",
1593
1593
+
"web-time",
1594
1594
+
]
1595
1595
+
1596
1596
+
[[package]]
1597
1597
+
name = "quinn-udp"
1598
1598
+
version = "0.5.14"
1599
1599
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1600
1600
+
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
1601
1601
+
dependencies = [
1602
1602
+
"cfg_aliases",
1603
1603
+
"libc",
1604
1604
+
"once_cell",
1605
1605
+
"socket2",
1606
1606
+
"tracing",
1607
1607
+
"windows-sys 0.59.0",
1608
1608
+
]
1609
1609
+
1610
1610
+
[[package]]
1611
1611
+
name = "quote"
1612
1612
+
version = "1.0.45"
1613
1613
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1614
1614
+
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
1615
1615
+
dependencies = [
1616
1616
+
"proc-macro2",
1617
1617
+
]
1618
1618
+
1619
1619
+
[[package]]
1620
1620
+
name = "r-efi"
1621
1621
+
version = "5.3.0"
1622
1622
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1623
1623
+
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
1624
1624
+
1625
1625
+
[[package]]
1626
1626
+
name = "r-efi"
1627
1627
+
version = "6.0.0"
1628
1628
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1629
1629
+
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
1630
1630
+
1631
1631
+
[[package]]
1632
1632
+
name = "rand"
1633
1633
+
version = "0.8.5"
1634
1634
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1635
1635
+
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
1636
1636
+
dependencies = [
1637
1637
+
"rand_core 0.6.4",
1638
1638
+
]
1639
1639
+
1640
1640
+
[[package]]
1641
1641
+
name = "rand"
1642
1642
+
version = "0.9.2"
1643
1643
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1644
1644
+
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
1645
1645
+
dependencies = [
1646
1646
+
"rand_chacha",
1647
1647
+
"rand_core 0.9.5",
1648
1648
+
]
1649
1649
+
1650
1650
+
[[package]]
1651
1651
+
name = "rand_chacha"
1652
1652
+
version = "0.9.0"
1653
1653
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1654
1654
+
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
1655
1655
+
dependencies = [
1656
1656
+
"ppv-lite86",
1657
1657
+
"rand_core 0.9.5",
1658
1658
+
]
1659
1659
+
1660
1660
+
[[package]]
1661
1661
+
name = "rand_core"
1662
1662
+
version = "0.6.4"
1663
1663
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1664
1664
+
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
1665
1665
+
1666
1666
+
[[package]]
1667
1667
+
name = "rand_core"
1668
1668
+
version = "0.9.5"
1669
1669
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1670
1670
+
checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
1671
1671
+
dependencies = [
1672
1672
+
"getrandom 0.3.4",
1673
1673
+
]
1674
1674
+
1675
1675
+
[[package]]
1676
1676
+
name = "ratatui"
1677
1677
+
version = "0.30.0"
1678
1678
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1679
1679
+
checksum = "d1ce67fb8ba4446454d1c8dbaeda0557ff5e94d39d5e5ed7f10a65eb4c8266bc"
1680
1680
+
dependencies = [
1681
1681
+
"instability",
1682
1682
+
"ratatui-core",
1683
1683
+
"ratatui-crossterm",
1684
1684
+
"ratatui-macros",
1685
1685
+
"ratatui-termwiz",
1686
1686
+
"ratatui-widgets",
1687
1687
+
]
1688
1688
+
1689
1689
+
[[package]]
1690
1690
+
name = "ratatui-core"
1691
1691
+
version = "0.1.0"
1692
1692
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1693
1693
+
checksum = "5ef8dea09a92caaf73bff7adb70b76162e5937524058a7e5bff37869cbbec293"
1694
1694
+
dependencies = [
1695
1695
+
"bitflags 2.11.0",
1696
1696
+
"compact_str",
1697
1697
+
"hashbrown 0.16.1",
1698
1698
+
"indoc",
1699
1699
+
"itertools",
1700
1700
+
"kasuari",
1701
1701
+
"lru",
1702
1702
+
"strum",
1703
1703
+
"thiserror 2.0.18",
1704
1704
+
"unicode-segmentation",
1705
1705
+
"unicode-truncate",
1706
1706
+
"unicode-width",
1707
1707
+
]
1708
1708
+
1709
1709
+
[[package]]
1710
1710
+
name = "ratatui-crossterm"
1711
1711
+
version = "0.1.0"
1712
1712
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1713
1713
+
checksum = "577c9b9f652b4c121fb25c6a391dd06406d3b092ba68827e6d2f09550edc54b3"
1714
1714
+
dependencies = [
1715
1715
+
"cfg-if",
1716
1716
+
"crossterm",
1717
1717
+
"instability",
1718
1718
+
"ratatui-core",
1719
1719
+
]
1720
1720
+
1721
1721
+
[[package]]
1722
1722
+
name = "ratatui-macros"
1723
1723
+
version = "0.7.0"
1724
1724
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1725
1725
+
checksum = "a7f1342a13e83e4bb9d0b793d0ea762be633f9582048c892ae9041ef39c936f4"
1726
1726
+
dependencies = [
1727
1727
+
"ratatui-core",
1728
1728
+
"ratatui-widgets",
1729
1729
+
]
1730
1730
+
1731
1731
+
[[package]]
1732
1732
+
name = "ratatui-termwiz"
1733
1733
+
version = "0.1.0"
1734
1734
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1735
1735
+
checksum = "0f76fe0bd0ed4295f0321b1676732e2454024c15a35d01904ddb315afd3d545c"
1736
1736
+
dependencies = [
1737
1737
+
"ratatui-core",
1738
1738
+
"termwiz",
1739
1739
+
]
1740
1740
+
1741
1741
+
[[package]]
1742
1742
+
name = "ratatui-widgets"
1743
1743
+
version = "0.3.0"
1744
1744
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1745
1745
+
checksum = "d7dbfa023cd4e604c2553483820c5fe8aa9d71a42eea5aa77c6e7f35756612db"
1746
1746
+
dependencies = [
1747
1747
+
"bitflags 2.11.0",
1748
1748
+
"hashbrown 0.16.1",
1749
1749
+
"indoc",
1750
1750
+
"instability",
1751
1751
+
"itertools",
1752
1752
+
"line-clipping",
1753
1753
+
"ratatui-core",
1754
1754
+
"strum",
1755
1755
+
"time",
1756
1756
+
"unicode-segmentation",
1757
1757
+
"unicode-width",
1758
1758
+
]
1759
1759
+
1760
1760
+
[[package]]
1761
1761
+
name = "redox_syscall"
1762
1762
+
version = "0.5.18"
1763
1763
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1764
1764
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
1765
1765
+
dependencies = [
1766
1766
+
"bitflags 2.11.0",
1767
1767
+
]
1768
1768
+
1769
1769
+
[[package]]
1770
1770
+
name = "redox_users"
1771
1771
+
version = "0.4.6"
1772
1772
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1773
1773
+
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
1774
1774
+
dependencies = [
1775
1775
+
"getrandom 0.2.17",
1776
1776
+
"libredox",
1777
1777
+
"thiserror 1.0.69",
1778
1778
+
]
1779
1779
+
1780
1780
+
[[package]]
1781
1781
+
name = "regex"
1782
1782
+
version = "1.12.3"
1783
1783
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1784
1784
+
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
1785
1785
+
dependencies = [
1786
1786
+
"aho-corasick",
1787
1787
+
"memchr",
1788
1788
+
"regex-automata",
1789
1789
+
"regex-syntax",
1790
1790
+
]
1791
1791
+
1792
1792
+
[[package]]
1793
1793
+
name = "regex-automata"
1794
1794
+
version = "0.4.14"
1795
1795
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1796
1796
+
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
1797
1797
+
dependencies = [
1798
1798
+
"aho-corasick",
1799
1799
+
"memchr",
1800
1800
+
"regex-syntax",
1801
1801
+
]
1802
1802
+
1803
1803
+
[[package]]
1804
1804
+
name = "regex-syntax"
1805
1805
+
version = "0.8.10"
1806
1806
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1807
1807
+
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
1808
1808
+
1809
1809
+
[[package]]
1810
1810
+
name = "reqwest"
1811
1811
+
version = "0.13.2"
1812
1812
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1813
1813
+
checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"
1814
1814
+
dependencies = [
1815
1815
+
"base64",
1816
1816
+
"bytes",
1817
1817
+
"encoding_rs",
1818
1818
+
"futures-core",
1819
1819
+
"futures-util",
1820
1820
+
"h2",
1821
1821
+
"http",
1822
1822
+
"http-body",
1823
1823
+
"http-body-util",
1824
1824
+
"hyper",
1825
1825
+
"hyper-rustls",
1826
1826
+
"hyper-util",
1827
1827
+
"js-sys",
1828
1828
+
"log",
1829
1829
+
"mime",
1830
1830
+
"percent-encoding",
1831
1831
+
"pin-project-lite",
1832
1832
+
"quinn",
1833
1833
+
"rustls",
1834
1834
+
"rustls-pki-types",
1835
1835
+
"rustls-platform-verifier",
1836
1836
+
"serde",
1837
1837
+
"serde_json",
1838
1838
+
"sync_wrapper",
1839
1839
+
"tokio",
1840
1840
+
"tokio-rustls",
1841
1841
+
"tokio-util",
1842
1842
+
"tower",
1843
1843
+
"tower-http",
1844
1844
+
"tower-service",
1845
1845
+
"url",
1846
1846
+
"wasm-bindgen",
1847
1847
+
"wasm-bindgen-futures",
1848
1848
+
"wasm-streams",
1849
1849
+
"web-sys",
1850
1850
+
]
1851
1851
+
1852
1852
+
[[package]]
1853
1853
+
name = "ring"
1854
1854
+
version = "0.17.14"
1855
1855
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1856
1856
+
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
1857
1857
+
dependencies = [
1858
1858
+
"cc",
1859
1859
+
"cfg-if",
1860
1860
+
"getrandom 0.2.17",
1861
1861
+
"libc",
1862
1862
+
"untrusted",
1863
1863
+
"windows-sys 0.52.0",
1864
1864
+
]
1865
1865
+
1866
1866
+
[[package]]
1867
1867
+
name = "rsqlite-vfs"
1868
1868
+
version = "0.1.0"
1869
1869
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1870
1870
+
checksum = "a8a1f2315036ef6b1fbacd1972e8ee7688030b0a2121edfc2a6550febd41574d"
1871
1871
+
dependencies = [
1872
1872
+
"hashbrown 0.16.1",
1873
1873
+
"thiserror 2.0.18",
1874
1874
+
]
1875
1875
+
1876
1876
+
[[package]]
1877
1877
+
name = "rusqlite"
1878
1878
+
version = "0.39.0"
1879
1879
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1880
1880
+
checksum = "a0d2b0146dd9661bf67bb107c0bb2a55064d556eeb3fc314151b957f313bcd4e"
1881
1881
+
dependencies = [
1882
1882
+
"bitflags 2.11.0",
1883
1883
+
"fallible-iterator",
1884
1884
+
"fallible-streaming-iterator",
1885
1885
+
"hashlink",
1886
1886
+
"libsqlite3-sys",
1887
1887
+
"smallvec",
1888
1888
+
"sqlite-wasm-rs",
1889
1889
+
]
1890
1890
+
1891
1891
+
[[package]]
1892
1892
+
name = "rustc-hash"
1893
1893
+
version = "2.1.2"
1894
1894
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1895
1895
+
checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
1896
1896
+
1897
1897
+
[[package]]
1898
1898
+
name = "rustc_version"
1899
1899
+
version = "0.4.1"
1900
1900
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1901
1901
+
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
1902
1902
+
dependencies = [
1903
1903
+
"semver",
1904
1904
+
]
1905
1905
+
1906
1906
+
[[package]]
1907
1907
+
name = "rustix"
1908
1908
+
version = "1.1.4"
1909
1909
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1910
1910
+
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
1911
1911
+
dependencies = [
1912
1912
+
"bitflags 2.11.0",
1913
1913
+
"errno",
1914
1914
+
"libc",
1915
1915
+
"linux-raw-sys",
1916
1916
+
"windows-sys 0.61.2",
1917
1917
+
]
1918
1918
+
1919
1919
+
[[package]]
1920
1920
+
name = "rustls"
1921
1921
+
version = "0.23.37"
1922
1922
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1923
1923
+
checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
1924
1924
+
dependencies = [
1925
1925
+
"aws-lc-rs",
1926
1926
+
"once_cell",
1927
1927
+
"rustls-pki-types",
1928
1928
+
"rustls-webpki",
1929
1929
+
"subtle",
1930
1930
+
"zeroize",
1931
1931
+
]
1932
1932
+
1933
1933
+
[[package]]
1934
1934
+
name = "rustls-native-certs"
1935
1935
+
version = "0.8.3"
1936
1936
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1937
1937
+
checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
1938
1938
+
dependencies = [
1939
1939
+
"openssl-probe",
1940
1940
+
"rustls-pki-types",
1941
1941
+
"schannel",
1942
1942
+
"security-framework",
1943
1943
+
]
1944
1944
+
1945
1945
+
[[package]]
1946
1946
+
name = "rustls-pki-types"
1947
1947
+
version = "1.14.0"
1948
1948
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1949
1949
+
checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
1950
1950
+
dependencies = [
1951
1951
+
"web-time",
1952
1952
+
"zeroize",
1953
1953
+
]
1954
1954
+
1955
1955
+
[[package]]
1956
1956
+
name = "rustls-platform-verifier"
1957
1957
+
version = "0.6.2"
1958
1958
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1959
1959
+
checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"
1960
1960
+
dependencies = [
1961
1961
+
"core-foundation 0.10.1",
1962
1962
+
"core-foundation-sys",
1963
1963
+
"jni",
1964
1964
+
"log",
1965
1965
+
"once_cell",
1966
1966
+
"rustls",
1967
1967
+
"rustls-native-certs",
1968
1968
+
"rustls-platform-verifier-android",
1969
1969
+
"rustls-webpki",
1970
1970
+
"security-framework",
1971
1971
+
"security-framework-sys",
1972
1972
+
"webpki-root-certs",
1973
1973
+
"windows-sys 0.61.2",
1974
1974
+
]
1975
1975
+
1976
1976
+
[[package]]
1977
1977
+
name = "rustls-platform-verifier-android"
1978
1978
+
version = "0.1.1"
1979
1979
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1980
1980
+
checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
1981
1981
+
1982
1982
+
[[package]]
1983
1983
+
name = "rustls-webpki"
1984
1984
+
version = "0.103.10"
1985
1985
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1986
1986
+
checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
1987
1987
+
dependencies = [
1988
1988
+
"aws-lc-rs",
1989
1989
+
"ring",
1990
1990
+
"rustls-pki-types",
1991
1991
+
"untrusted",
1992
1992
+
]
1993
1993
+
1994
1994
+
[[package]]
1995
1995
+
name = "rustversion"
1996
1996
+
version = "1.0.22"
1997
1997
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1998
1998
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
1999
1999
+
2000
2000
+
[[package]]
2001
2001
+
name = "ryu"
2002
2002
+
version = "1.0.23"
2003
2003
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2004
2004
+
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
2005
2005
+
2006
2006
+
[[package]]
2007
2007
+
name = "same-file"
2008
2008
+
version = "1.0.6"
2009
2009
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2010
2010
+
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
2011
2011
+
dependencies = [
2012
2012
+
"winapi-util",
2013
2013
+
]
2014
2014
+
2015
2015
+
[[package]]
2016
2016
+
name = "schannel"
2017
2017
+
version = "0.1.29"
2018
2018
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2019
2019
+
checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
2020
2020
+
dependencies = [
2021
2021
+
"windows-sys 0.61.2",
2022
2022
+
]
2023
2023
+
2024
2024
+
[[package]]
2025
2025
+
name = "scopeguard"
2026
2026
+
version = "1.2.0"
2027
2027
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2028
2028
+
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
2029
2029
+
2030
2030
+
[[package]]
2031
2031
+
name = "security-framework"
2032
2032
+
version = "3.7.0"
2033
2033
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2034
2034
+
checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
2035
2035
+
dependencies = [
2036
2036
+
"bitflags 2.11.0",
2037
2037
+
"core-foundation 0.10.1",
2038
2038
+
"core-foundation-sys",
2039
2039
+
"libc",
2040
2040
+
"security-framework-sys",
2041
2041
+
]
2042
2042
+
2043
2043
+
[[package]]
2044
2044
+
name = "security-framework-sys"
2045
2045
+
version = "2.17.0"
2046
2046
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2047
2047
+
checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
2048
2048
+
dependencies = [
2049
2049
+
"core-foundation-sys",
2050
2050
+
"libc",
2051
2051
+
]
2052
2052
+
2053
2053
+
[[package]]
2054
2054
+
name = "semver"
2055
2055
+
version = "1.0.28"
2056
2056
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2057
2057
+
checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
2058
2058
+
2059
2059
+
[[package]]
2060
2060
+
name = "serde"
2061
2061
+
version = "1.0.228"
2062
2062
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2063
2063
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
2064
2064
+
dependencies = [
2065
2065
+
"serde_core",
2066
2066
+
"serde_derive",
2067
2067
+
]
2068
2068
+
2069
2069
+
[[package]]
2070
2070
+
name = "serde_core"
2071
2071
+
version = "1.0.228"
2072
2072
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2073
2073
+
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
2074
2074
+
dependencies = [
2075
2075
+
"serde_derive",
2076
2076
+
]
2077
2077
+
2078
2078
+
[[package]]
2079
2079
+
name = "serde_derive"
2080
2080
+
version = "1.0.228"
2081
2081
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2082
2082
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
2083
2083
+
dependencies = [
2084
2084
+
"proc-macro2",
2085
2085
+
"quote",
2086
2086
+
"syn 2.0.117",
2087
2087
+
]
2088
2088
+
2089
2089
+
[[package]]
2090
2090
+
name = "serde_json"
2091
2091
+
version = "1.0.149"
2092
2092
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2093
2093
+
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
2094
2094
+
dependencies = [
2095
2095
+
"itoa",
2096
2096
+
"memchr",
2097
2097
+
"serde",
2098
2098
+
"serde_core",
2099
2099
+
"zmij",
2100
2100
+
]
2101
2101
+
2102
2102
+
[[package]]
2103
2103
+
name = "sha2"
2104
2104
+
version = "0.10.9"
2105
2105
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2106
2106
+
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
2107
2107
+
dependencies = [
2108
2108
+
"cfg-if",
2109
2109
+
"cpufeatures",
2110
2110
+
"digest",
2111
2111
+
]
2112
2112
+
2113
2113
+
[[package]]
2114
2114
+
name = "sharded-slab"
2115
2115
+
version = "0.1.7"
2116
2116
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2117
2117
+
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
2118
2118
+
dependencies = [
2119
2119
+
"lazy_static",
2120
2120
+
]
2121
2121
+
2122
2122
+
[[package]]
2123
2123
+
name = "shlex"
2124
2124
+
version = "1.3.0"
2125
2125
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2126
2126
+
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
2127
2127
+
2128
2128
+
[[package]]
2129
2129
+
name = "signal-hook"
2130
2130
+
version = "0.3.18"
2131
2131
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2132
2132
+
checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
2133
2133
+
dependencies = [
2134
2134
+
"libc",
2135
2135
+
"signal-hook-registry",
2136
2136
+
]
2137
2137
+
2138
2138
+
[[package]]
2139
2139
+
name = "signal-hook-mio"
2140
2140
+
version = "0.2.5"
2141
2141
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2142
2142
+
checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"
2143
2143
+
dependencies = [
2144
2144
+
"libc",
2145
2145
+
"mio",
2146
2146
+
"signal-hook",
2147
2147
+
]
2148
2148
+
2149
2149
+
[[package]]
2150
2150
+
name = "signal-hook-registry"
2151
2151
+
version = "1.4.8"
2152
2152
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2153
2153
+
checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
2154
2154
+
dependencies = [
2155
2155
+
"errno",
2156
2156
+
"libc",
2157
2157
+
]
2158
2158
+
2159
2159
+
[[package]]
2160
2160
+
name = "siphasher"
2161
2161
+
version = "1.0.2"
2162
2162
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2163
2163
+
checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e"
2164
2164
+
2165
2165
+
[[package]]
2166
2166
+
name = "slab"
2167
2167
+
version = "0.4.12"
2168
2168
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2169
2169
+
checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
2170
2170
+
2171
2171
+
[[package]]
2172
2172
+
name = "smallvec"
2173
2173
+
version = "1.15.1"
2174
2174
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2175
2175
+
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
2176
2176
+
2177
2177
+
[[package]]
2178
2178
+
name = "socket2"
2179
2179
+
version = "0.6.3"
2180
2180
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2181
2181
+
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
2182
2182
+
dependencies = [
2183
2183
+
"libc",
2184
2184
+
"windows-sys 0.61.2",
2185
2185
+
]
2186
2186
+
2187
2187
+
[[package]]
2188
2188
+
name = "sqlite-wasm-rs"
2189
2189
+
version = "0.5.2"
2190
2190
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2191
2191
+
checksum = "2f4206ed3a67690b9c29b77d728f6acc3ce78f16bf846d83c94f76400320181b"
2192
2192
+
dependencies = [
2193
2193
+
"cc",
2194
2194
+
"js-sys",
2195
2195
+
"rsqlite-vfs",
2196
2196
+
"wasm-bindgen",
2197
2197
+
]
2198
2198
+
2199
2199
+
[[package]]
2200
2200
+
name = "stable_deref_trait"
2201
2201
+
version = "1.2.1"
2202
2202
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2203
2203
+
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
2204
2204
+
2205
2205
+
[[package]]
2206
2206
+
name = "static_assertions"
2207
2207
+
version = "1.1.0"
2208
2208
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2209
2209
+
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
2210
2210
+
2211
2211
+
[[package]]
2212
2212
+
name = "strsim"
2213
2213
+
version = "0.11.1"
2214
2214
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2215
2215
+
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
2216
2216
+
2217
2217
+
[[package]]
2218
2218
+
name = "strum"
2219
2219
+
version = "0.27.2"
2220
2220
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2221
2221
+
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
2222
2222
+
dependencies = [
2223
2223
+
"strum_macros",
2224
2224
+
]
2225
2225
+
2226
2226
+
[[package]]
2227
2227
+
name = "strum_macros"
2228
2228
+
version = "0.27.2"
2229
2229
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2230
2230
+
checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
2231
2231
+
dependencies = [
2232
2232
+
"heck",
2233
2233
+
"proc-macro2",
2234
2234
+
"quote",
2235
2235
+
"syn 2.0.117",
2236
2236
+
]
2237
2237
+
2238
2238
+
[[package]]
2239
2239
+
name = "subtle"
2240
2240
+
version = "2.6.1"
2241
2241
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2242
2242
+
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
2243
2243
+
2244
2244
+
[[package]]
2245
2245
+
name = "syn"
2246
2246
+
version = "1.0.109"
2247
2247
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2248
2248
+
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
2249
2249
+
dependencies = [
2250
2250
+
"proc-macro2",
2251
2251
+
"quote",
2252
2252
+
"unicode-ident",
2253
2253
+
]
2254
2254
+
2255
2255
+
[[package]]
2256
2256
+
name = "syn"
2257
2257
+
version = "2.0.117"
2258
2258
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2259
2259
+
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
2260
2260
+
dependencies = [
2261
2261
+
"proc-macro2",
2262
2262
+
"quote",
2263
2263
+
"unicode-ident",
2264
2264
+
]
2265
2265
+
2266
2266
+
[[package]]
2267
2267
+
name = "sync_wrapper"
2268
2268
+
version = "1.0.2"
2269
2269
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2270
2270
+
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
2271
2271
+
dependencies = [
2272
2272
+
"futures-core",
2273
2273
+
]
2274
2274
+
2275
2275
+
[[package]]
2276
2276
+
name = "synstructure"
2277
2277
+
version = "0.13.2"
2278
2278
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2279
2279
+
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
2280
2280
+
dependencies = [
2281
2281
+
"proc-macro2",
2282
2282
+
"quote",
2283
2283
+
"syn 2.0.117",
2284
2284
+
]
2285
2285
+
2286
2286
+
[[package]]
2287
2287
+
name = "system-configuration"
2288
2288
+
version = "0.7.0"
2289
2289
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2290
2290
+
checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b"
2291
2291
+
dependencies = [
2292
2292
+
"bitflags 2.11.0",
2293
2293
+
"core-foundation 0.9.4",
2294
2294
+
"system-configuration-sys",
2295
2295
+
]
2296
2296
+
2297
2297
+
[[package]]
2298
2298
+
name = "system-configuration-sys"
2299
2299
+
version = "0.6.0"
2300
2300
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2301
2301
+
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
2302
2302
+
dependencies = [
2303
2303
+
"core-foundation-sys",
2304
2304
+
"libc",
2305
2305
+
]
2306
2306
+
2307
2307
+
[[package]]
2308
2308
+
name = "terminfo"
2309
2309
+
version = "0.9.0"
2310
2310
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2311
2311
+
checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662"
2312
2312
+
dependencies = [
2313
2313
+
"fnv",
2314
2314
+
"nom",
2315
2315
+
"phf",
2316
2316
+
"phf_codegen",
2317
2317
+
]
2318
2318
+
2319
2319
+
[[package]]
2320
2320
+
name = "termios"
2321
2321
+
version = "0.3.3"
2322
2322
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2323
2323
+
checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b"
2324
2324
+
dependencies = [
2325
2325
+
"libc",
2326
2326
+
]
2327
2327
+
2328
2328
+
[[package]]
2329
2329
+
name = "termwiz"
2330
2330
+
version = "0.23.3"
2331
2331
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2332
2332
+
checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7"
2333
2333
+
dependencies = [
2334
2334
+
"anyhow",
2335
2335
+
"base64",
2336
2336
+
"bitflags 2.11.0",
2337
2337
+
"fancy-regex",
2338
2338
+
"filedescriptor",
2339
2339
+
"finl_unicode",
2340
2340
+
"fixedbitset",
2341
2341
+
"hex",
2342
2342
+
"lazy_static",
2343
2343
+
"libc",
2344
2344
+
"log",
2345
2345
+
"memmem",
2346
2346
+
"nix",
2347
2347
+
"num-derive",
2348
2348
+
"num-traits",
2349
2349
+
"ordered-float",
2350
2350
+
"pest",
2351
2351
+
"pest_derive",
2352
2352
+
"phf",
2353
2353
+
"sha2",
2354
2354
+
"signal-hook",
2355
2355
+
"siphasher",
2356
2356
+
"terminfo",
2357
2357
+
"termios",
2358
2358
+
"thiserror 1.0.69",
2359
2359
+
"ucd-trie",
2360
2360
+
"unicode-segmentation",
2361
2361
+
"vtparse",
2362
2362
+
"wezterm-bidi",
2363
2363
+
"wezterm-blob-leases",
2364
2364
+
"wezterm-color-types",
2365
2365
+
"wezterm-dynamic",
2366
2366
+
"wezterm-input-types",
2367
2367
+
"winapi",
2368
2368
+
]
2369
2369
+
2370
2370
+
[[package]]
2371
2371
+
name = "thiserror"
2372
2372
+
version = "1.0.69"
2373
2373
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2374
2374
+
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
2375
2375
+
dependencies = [
2376
2376
+
"thiserror-impl 1.0.69",
2377
2377
+
]
2378
2378
+
2379
2379
+
[[package]]
2380
2380
+
name = "thiserror"
2381
2381
+
version = "2.0.18"
2382
2382
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2383
2383
+
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
2384
2384
+
dependencies = [
2385
2385
+
"thiserror-impl 2.0.18",
2386
2386
+
]
2387
2387
+
2388
2388
+
[[package]]
2389
2389
+
name = "thiserror-impl"
2390
2390
+
version = "1.0.69"
2391
2391
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2392
2392
+
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
2393
2393
+
dependencies = [
2394
2394
+
"proc-macro2",
2395
2395
+
"quote",
2396
2396
+
"syn 2.0.117",
2397
2397
+
]
2398
2398
+
2399
2399
+
[[package]]
2400
2400
+
name = "thiserror-impl"
2401
2401
+
version = "2.0.18"
2402
2402
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2403
2403
+
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
2404
2404
+
dependencies = [
2405
2405
+
"proc-macro2",
2406
2406
+
"quote",
2407
2407
+
"syn 2.0.117",
2408
2408
+
]
2409
2409
+
2410
2410
+
[[package]]
2411
2411
+
name = "thread_local"
2412
2412
+
version = "1.1.9"
2413
2413
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2414
2414
+
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
2415
2415
+
dependencies = [
2416
2416
+
"cfg-if",
2417
2417
+
]
2418
2418
+
2419
2419
+
[[package]]
2420
2420
+
name = "time"
2421
2421
+
version = "0.3.47"
2422
2422
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2423
2423
+
checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
2424
2424
+
dependencies = [
2425
2425
+
"deranged",
2426
2426
+
"libc",
2427
2427
+
"num-conv",
2428
2428
+
"num_threads",
2429
2429
+
"powerfmt",
2430
2430
+
"serde_core",
2431
2431
+
"time-core",
2432
2432
+
]
2433
2433
+
2434
2434
+
[[package]]
2435
2435
+
name = "time-core"
2436
2436
+
version = "0.1.8"
2437
2437
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2438
2438
+
checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
2439
2439
+
2440
2440
+
[[package]]
2441
2441
+
name = "tinystr"
2442
2442
+
version = "0.8.3"
2443
2443
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2444
2444
+
checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
2445
2445
+
dependencies = [
2446
2446
+
"displaydoc",
2447
2447
+
"zerovec",
2448
2448
+
]
2449
2449
+
2450
2450
+
[[package]]
2451
2451
+
name = "tinyvec"
2452
2452
+
version = "1.11.0"
2453
2453
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2454
2454
+
checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
2455
2455
+
dependencies = [
2456
2456
+
"tinyvec_macros",
2457
2457
+
]
2458
2458
+
2459
2459
+
[[package]]
2460
2460
+
name = "tinyvec_macros"
2461
2461
+
version = "0.1.1"
2462
2462
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2463
2463
+
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
2464
2464
+
2465
2465
+
[[package]]
2466
2466
+
name = "tokio"
2467
2467
+
version = "1.51.0"
2468
2468
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2469
2469
+
checksum = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd"
2470
2470
+
dependencies = [
2471
2471
+
"bytes",
2472
2472
+
"libc",
2473
2473
+
"mio",
2474
2474
+
"parking_lot",
2475
2475
+
"pin-project-lite",
2476
2476
+
"signal-hook-registry",
2477
2477
+
"socket2",
2478
2478
+
"tokio-macros",
2479
2479
+
"windows-sys 0.61.2",
2480
2480
+
]
2481
2481
+
2482
2482
+
[[package]]
2483
2483
+
name = "tokio-macros"
2484
2484
+
version = "2.7.0"
2485
2485
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2486
2486
+
checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
2487
2487
+
dependencies = [
2488
2488
+
"proc-macro2",
2489
2489
+
"quote",
2490
2490
+
"syn 2.0.117",
2491
2491
+
]
2492
2492
+
2493
2493
+
[[package]]
2494
2494
+
name = "tokio-rustls"
2495
2495
+
version = "0.26.4"
2496
2496
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2497
2497
+
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
2498
2498
+
dependencies = [
2499
2499
+
"rustls",
2500
2500
+
"tokio",
2501
2501
+
]
2502
2502
+
2503
2503
+
[[package]]
2504
2504
+
name = "tokio-util"
2505
2505
+
version = "0.7.18"
2506
2506
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2507
2507
+
checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
2508
2508
+
dependencies = [
2509
2509
+
"bytes",
2510
2510
+
"futures-core",
2511
2511
+
"futures-sink",
2512
2512
+
"pin-project-lite",
2513
2513
+
"tokio",
2514
2514
+
]
2515
2515
+
2516
2516
+
[[package]]
2517
2517
+
name = "tower"
2518
2518
+
version = "0.5.3"
2519
2519
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2520
2520
+
checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
2521
2521
+
dependencies = [
2522
2522
+
"futures-core",
2523
2523
+
"futures-util",
2524
2524
+
"pin-project-lite",
2525
2525
+
"sync_wrapper",
2526
2526
+
"tokio",
2527
2527
+
"tower-layer",
2528
2528
+
"tower-service",
2529
2529
+
]
2530
2530
+
2531
2531
+
[[package]]
2532
2532
+
name = "tower-http"
2533
2533
+
version = "0.6.8"
2534
2534
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2535
2535
+
checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
2536
2536
+
dependencies = [
2537
2537
+
"bitflags 2.11.0",
2538
2538
+
"bytes",
2539
2539
+
"futures-util",
2540
2540
+
"http",
2541
2541
+
"http-body",
2542
2542
+
"iri-string",
2543
2543
+
"pin-project-lite",
2544
2544
+
"tower",
2545
2545
+
"tower-layer",
2546
2546
+
"tower-service",
2547
2547
+
]
2548
2548
+
2549
2549
+
[[package]]
2550
2550
+
name = "tower-layer"
2551
2551
+
version = "0.3.3"
2552
2552
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2553
2553
+
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
2554
2554
+
2555
2555
+
[[package]]
2556
2556
+
name = "tower-service"
2557
2557
+
version = "0.3.3"
2558
2558
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2559
2559
+
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
2560
2560
+
2561
2561
+
[[package]]
2562
2562
+
name = "tracing"
2563
2563
+
version = "0.1.44"
2564
2564
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2565
2565
+
checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
2566
2566
+
dependencies = [
2567
2567
+
"pin-project-lite",
2568
2568
+
"tracing-attributes",
2569
2569
+
"tracing-core",
2570
2570
+
]
2571
2571
+
2572
2572
+
[[package]]
2573
2573
+
name = "tracing-attributes"
2574
2574
+
version = "0.1.31"
2575
2575
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2576
2576
+
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
2577
2577
+
dependencies = [
2578
2578
+
"proc-macro2",
2579
2579
+
"quote",
2580
2580
+
"syn 2.0.117",
2581
2581
+
]
2582
2582
+
2583
2583
+
[[package]]
2584
2584
+
name = "tracing-core"
2585
2585
+
version = "0.1.36"
2586
2586
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2587
2587
+
checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
2588
2588
+
dependencies = [
2589
2589
+
"once_cell",
2590
2590
+
"valuable",
2591
2591
+
]
2592
2592
+
2593
2593
+
[[package]]
2594
2594
+
name = "tracing-log"
2595
2595
+
version = "0.2.0"
2596
2596
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2597
2597
+
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
2598
2598
+
dependencies = [
2599
2599
+
"log",
2600
2600
+
"once_cell",
2601
2601
+
"tracing-core",
2602
2602
+
]
2603
2603
+
2604
2604
+
[[package]]
2605
2605
+
name = "tracing-subscriber"
2606
2606
+
version = "0.3.23"
2607
2607
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2608
2608
+
checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
2609
2609
+
dependencies = [
2610
2610
+
"nu-ansi-term",
2611
2611
+
"sharded-slab",
2612
2612
+
"smallvec",
2613
2613
+
"thread_local",
2614
2614
+
"tracing-core",
2615
2615
+
"tracing-log",
2616
2616
+
]
2617
2617
+
2618
2618
+
[[package]]
2619
2619
+
name = "try-lock"
2620
2620
+
version = "0.2.5"
2621
2621
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2622
2622
+
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
2623
2623
+
2624
2624
+
[[package]]
2625
2625
+
name = "typenum"
2626
2626
+
version = "1.19.0"
2627
2627
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2628
2628
+
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
2629
2629
+
2630
2630
+
[[package]]
2631
2631
+
name = "ucd-trie"
2632
2632
+
version = "0.1.7"
2633
2633
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2634
2634
+
checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
2635
2635
+
2636
2636
+
[[package]]
2637
2637
+
name = "unicode-ident"
2638
2638
+
version = "1.0.24"
2639
2639
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2640
2640
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
2641
2641
+
2642
2642
+
[[package]]
2643
2643
+
name = "unicode-segmentation"
2644
2644
+
version = "1.13.2"
2645
2645
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2646
2646
+
checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c"
2647
2647
+
2648
2648
+
[[package]]
2649
2649
+
name = "unicode-truncate"
2650
2650
+
version = "2.0.1"
2651
2651
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2652
2652
+
checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5"
2653
2653
+
dependencies = [
2654
2654
+
"itertools",
2655
2655
+
"unicode-segmentation",
2656
2656
+
"unicode-width",
2657
2657
+
]
2658
2658
+
2659
2659
+
[[package]]
2660
2660
+
name = "unicode-width"
2661
2661
+
version = "0.2.2"
2662
2662
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2663
2663
+
checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
2664
2664
+
2665
2665
+
[[package]]
2666
2666
+
name = "unicode-xid"
2667
2667
+
version = "0.2.6"
2668
2668
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2669
2669
+
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
2670
2670
+
2671
2671
+
[[package]]
2672
2672
+
name = "untrusted"
2673
2673
+
version = "0.9.0"
2674
2674
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2675
2675
+
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
2676
2676
+
2677
2677
+
[[package]]
2678
2678
+
name = "url"
2679
2679
+
version = "2.5.8"
2680
2680
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2681
2681
+
checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
2682
2682
+
dependencies = [
2683
2683
+
"form_urlencoded",
2684
2684
+
"idna",
2685
2685
+
"percent-encoding",
2686
2686
+
"serde",
2687
2687
+
]
2688
2688
+
2689
2689
+
[[package]]
2690
2690
+
name = "utf8_iter"
2691
2691
+
version = "1.0.4"
2692
2692
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2693
2693
+
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
2694
2694
+
2695
2695
+
[[package]]
2696
2696
+
name = "utf8parse"
2697
2697
+
version = "0.2.2"
2698
2698
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2699
2699
+
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
2700
2700
+
2701
2701
+
[[package]]
2702
2702
+
name = "uuid"
2703
2703
+
version = "1.23.0"
2704
2704
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2705
2705
+
checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9"
2706
2706
+
dependencies = [
2707
2707
+
"atomic",
2708
2708
+
"getrandom 0.4.2",
2709
2709
+
"js-sys",
2710
2710
+
"wasm-bindgen",
2711
2711
+
]
2712
2712
+
2713
2713
+
[[package]]
2714
2714
+
name = "valuable"
2715
2715
+
version = "0.1.1"
2716
2716
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2717
2717
+
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
2718
2718
+
2719
2719
+
[[package]]
2720
2720
+
name = "vcpkg"
2721
2721
+
version = "0.2.15"
2722
2722
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2723
2723
+
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
2724
2724
+
2725
2725
+
[[package]]
2726
2726
+
name = "version_check"
2727
2727
+
version = "0.9.5"
2728
2728
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2729
2729
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
2730
2730
+
2731
2731
+
[[package]]
2732
2732
+
name = "vtparse"
2733
2733
+
version = "0.6.2"
2734
2734
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2735
2735
+
checksum = "6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0"
2736
2736
+
dependencies = [
2737
2737
+
"utf8parse",
2738
2738
+
]
2739
2739
+
2740
2740
+
[[package]]
2741
2741
+
name = "walkdir"
2742
2742
+
version = "2.5.0"
2743
2743
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2744
2744
+
checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
2745
2745
+
dependencies = [
2746
2746
+
"same-file",
2747
2747
+
"winapi-util",
2748
2748
+
]
2749
2749
+
2750
2750
+
[[package]]
2751
2751
+
name = "want"
2752
2752
+
version = "0.3.1"
2753
2753
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2754
2754
+
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
2755
2755
+
dependencies = [
2756
2756
+
"try-lock",
2757
2757
+
]
2758
2758
+
2759
2759
+
[[package]]
2760
2760
+
name = "wasi"
2761
2761
+
version = "0.11.1+wasi-snapshot-preview1"
2762
2762
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2763
2763
+
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
2764
2764
+
2765
2765
+
[[package]]
2766
2766
+
name = "wasip2"
2767
2767
+
version = "1.0.2+wasi-0.2.9"
2768
2768
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2769
2769
+
checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
2770
2770
+
dependencies = [
2771
2771
+
"wit-bindgen",
2772
2772
+
]
2773
2773
+
2774
2774
+
[[package]]
2775
2775
+
name = "wasip3"
2776
2776
+
version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
2777
2777
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2778
2778
+
checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
2779
2779
+
dependencies = [
2780
2780
+
"wit-bindgen",
2781
2781
+
]
2782
2782
+
2783
2783
+
[[package]]
2784
2784
+
name = "wasm-bindgen"
2785
2785
+
version = "0.2.117"
2786
2786
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2787
2787
+
checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0"
2788
2788
+
dependencies = [
2789
2789
+
"cfg-if",
2790
2790
+
"once_cell",
2791
2791
+
"rustversion",
2792
2792
+
"wasm-bindgen-macro",
2793
2793
+
"wasm-bindgen-shared",
2794
2794
+
]
2795
2795
+
2796
2796
+
[[package]]
2797
2797
+
name = "wasm-bindgen-futures"
2798
2798
+
version = "0.4.67"
2799
2799
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2800
2800
+
checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e"
2801
2801
+
dependencies = [
2802
2802
+
"js-sys",
2803
2803
+
"wasm-bindgen",
2804
2804
+
]
2805
2805
+
2806
2806
+
[[package]]
2807
2807
+
name = "wasm-bindgen-macro"
2808
2808
+
version = "0.2.117"
2809
2809
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2810
2810
+
checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be"
2811
2811
+
dependencies = [
2812
2812
+
"quote",
2813
2813
+
"wasm-bindgen-macro-support",
2814
2814
+
]
2815
2815
+
2816
2816
+
[[package]]
2817
2817
+
name = "wasm-bindgen-macro-support"
2818
2818
+
version = "0.2.117"
2819
2819
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2820
2820
+
checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2"
2821
2821
+
dependencies = [
2822
2822
+
"bumpalo",
2823
2823
+
"proc-macro2",
2824
2824
+
"quote",
2825
2825
+
"syn 2.0.117",
2826
2826
+
"wasm-bindgen-shared",
2827
2827
+
]
2828
2828
+
2829
2829
+
[[package]]
2830
2830
+
name = "wasm-bindgen-shared"
2831
2831
+
version = "0.2.117"
2832
2832
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2833
2833
+
checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b"
2834
2834
+
dependencies = [
2835
2835
+
"unicode-ident",
2836
2836
+
]
2837
2837
+
2838
2838
+
[[package]]
2839
2839
+
name = "wasm-encoder"
2840
2840
+
version = "0.244.0"
2841
2841
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2842
2842
+
checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
2843
2843
+
dependencies = [
2844
2844
+
"leb128fmt",
2845
2845
+
"wasmparser",
2846
2846
+
]
2847
2847
+
2848
2848
+
[[package]]
2849
2849
+
name = "wasm-metadata"
2850
2850
+
version = "0.244.0"
2851
2851
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2852
2852
+
checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
2853
2853
+
dependencies = [
2854
2854
+
"anyhow",
2855
2855
+
"indexmap",
2856
2856
+
"wasm-encoder",
2857
2857
+
"wasmparser",
2858
2858
+
]
2859
2859
+
2860
2860
+
[[package]]
2861
2861
+
name = "wasm-streams"
2862
2862
+
version = "0.5.0"
2863
2863
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2864
2864
+
checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb"
2865
2865
+
dependencies = [
2866
2866
+
"futures-util",
2867
2867
+
"js-sys",
2868
2868
+
"wasm-bindgen",
2869
2869
+
"wasm-bindgen-futures",
2870
2870
+
"web-sys",
2871
2871
+
]
2872
2872
+
2873
2873
+
[[package]]
2874
2874
+
name = "wasmparser"
2875
2875
+
version = "0.244.0"
2876
2876
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2877
2877
+
checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
2878
2878
+
dependencies = [
2879
2879
+
"bitflags 2.11.0",
2880
2880
+
"hashbrown 0.15.5",
2881
2881
+
"indexmap",
2882
2882
+
"semver",
2883
2883
+
]
2884
2884
+
2885
2885
+
[[package]]
2886
2886
+
name = "web-sys"
2887
2887
+
version = "0.3.94"
2888
2888
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2889
2889
+
checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a"
2890
2890
+
dependencies = [
2891
2891
+
"js-sys",
2892
2892
+
"wasm-bindgen",
2893
2893
+
]
2894
2894
+
2895
2895
+
[[package]]
2896
2896
+
name = "web-time"
2897
2897
+
version = "1.1.0"
2898
2898
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2899
2899
+
checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
2900
2900
+
dependencies = [
2901
2901
+
"js-sys",
2902
2902
+
"wasm-bindgen",
2903
2903
+
]
2904
2904
+
2905
2905
+
[[package]]
2906
2906
+
name = "webpki-root-certs"
2907
2907
+
version = "1.0.6"
2908
2908
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2909
2909
+
checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca"
2910
2910
+
dependencies = [
2911
2911
+
"rustls-pki-types",
2912
2912
+
]
2913
2913
+
2914
2914
+
[[package]]
2915
2915
+
name = "wezterm-bidi"
2916
2916
+
version = "0.2.3"
2917
2917
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2918
2918
+
checksum = "0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec"
2919
2919
+
dependencies = [
2920
2920
+
"log",
2921
2921
+
"wezterm-dynamic",
2922
2922
+
]
2923
2923
+
2924
2924
+
[[package]]
2925
2925
+
name = "wezterm-blob-leases"
2926
2926
+
version = "0.1.1"
2927
2927
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2928
2928
+
checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7"
2929
2929
+
dependencies = [
2930
2930
+
"getrandom 0.3.4",
2931
2931
+
"mac_address",
2932
2932
+
"sha2",
2933
2933
+
"thiserror 1.0.69",
2934
2934
+
"uuid",
2935
2935
+
]
2936
2936
+
2937
2937
+
[[package]]
2938
2938
+
name = "wezterm-color-types"
2939
2939
+
version = "0.3.0"
2940
2940
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2941
2941
+
checksum = "7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296"
2942
2942
+
dependencies = [
2943
2943
+
"csscolorparser",
2944
2944
+
"deltae",
2945
2945
+
"lazy_static",
2946
2946
+
"wezterm-dynamic",
2947
2947
+
]
2948
2948
+
2949
2949
+
[[package]]
2950
2950
+
name = "wezterm-dynamic"
2951
2951
+
version = "0.2.1"
2952
2952
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2953
2953
+
checksum = "5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac"
2954
2954
+
dependencies = [
2955
2955
+
"log",
2956
2956
+
"ordered-float",
2957
2957
+
"strsim",
2958
2958
+
"thiserror 1.0.69",
2959
2959
+
"wezterm-dynamic-derive",
2960
2960
+
]
2961
2961
+
2962
2962
+
[[package]]
2963
2963
+
name = "wezterm-dynamic-derive"
2964
2964
+
version = "0.1.1"
2965
2965
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2966
2966
+
checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b"
2967
2967
+
dependencies = [
2968
2968
+
"proc-macro2",
2969
2969
+
"quote",
2970
2970
+
"syn 1.0.109",
2971
2971
+
]
2972
2972
+
2973
2973
+
[[package]]
2974
2974
+
name = "wezterm-input-types"
2975
2975
+
version = "0.1.0"
2976
2976
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2977
2977
+
checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e"
2978
2978
+
dependencies = [
2979
2979
+
"bitflags 1.3.2",
2980
2980
+
"euclid",
2981
2981
+
"lazy_static",
2982
2982
+
"serde",
2983
2983
+
"wezterm-dynamic",
2984
2984
+
]
2985
2985
+
2986
2986
+
[[package]]
2987
2987
+
name = "winapi"
2988
2988
+
version = "0.3.9"
2989
2989
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2990
2990
+
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
2991
2991
+
dependencies = [
2992
2992
+
"winapi-i686-pc-windows-gnu",
2993
2993
+
"winapi-x86_64-pc-windows-gnu",
2994
2994
+
]
2995
2995
+
2996
2996
+
[[package]]
2997
2997
+
name = "winapi-i686-pc-windows-gnu"
2998
2998
+
version = "0.4.0"
2999
2999
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3000
3000
+
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
3001
3001
+
3002
3002
+
[[package]]
3003
3003
+
name = "winapi-util"
3004
3004
+
version = "0.1.11"
3005
3005
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3006
3006
+
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
3007
3007
+
dependencies = [
3008
3008
+
"windows-sys 0.61.2",
3009
3009
+
]
3010
3010
+
3011
3011
+
[[package]]
3012
3012
+
name = "winapi-x86_64-pc-windows-gnu"
3013
3013
+
version = "0.4.0"
3014
3014
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3015
3015
+
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
3016
3016
+
3017
3017
+
[[package]]
3018
3018
+
name = "windows-link"
3019
3019
+
version = "0.2.1"
3020
3020
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3021
3021
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
3022
3022
+
3023
3023
+
[[package]]
3024
3024
+
name = "windows-registry"
3025
3025
+
version = "0.6.1"
3026
3026
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3027
3027
+
checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
3028
3028
+
dependencies = [
3029
3029
+
"windows-link",
3030
3030
+
"windows-result",
3031
3031
+
"windows-strings",
3032
3032
+
]
3033
3033
+
3034
3034
+
[[package]]
3035
3035
+
name = "windows-result"
3036
3036
+
version = "0.4.1"
3037
3037
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3038
3038
+
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
3039
3039
+
dependencies = [
3040
3040
+
"windows-link",
3041
3041
+
]
3042
3042
+
3043
3043
+
[[package]]
3044
3044
+
name = "windows-strings"
3045
3045
+
version = "0.5.1"
3046
3046
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3047
3047
+
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
3048
3048
+
dependencies = [
3049
3049
+
"windows-link",
3050
3050
+
]
3051
3051
+
3052
3052
+
[[package]]
3053
3053
+
name = "windows-sys"
3054
3054
+
version = "0.45.0"
3055
3055
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3056
3056
+
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
3057
3057
+
dependencies = [
3058
3058
+
"windows-targets 0.42.2",
3059
3059
+
]
3060
3060
+
3061
3061
+
[[package]]
3062
3062
+
name = "windows-sys"
3063
3063
+
version = "0.48.0"
3064
3064
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3065
3065
+
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
3066
3066
+
dependencies = [
3067
3067
+
"windows-targets 0.48.5",
3068
3068
+
]
3069
3069
+
3070
3070
+
[[package]]
3071
3071
+
name = "windows-sys"
3072
3072
+
version = "0.52.0"
3073
3073
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3074
3074
+
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
3075
3075
+
dependencies = [
3076
3076
+
"windows-targets 0.52.6",
3077
3077
+
]
3078
3078
+
3079
3079
+
[[package]]
3080
3080
+
name = "windows-sys"
3081
3081
+
version = "0.59.0"
3082
3082
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3083
3083
+
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
3084
3084
+
dependencies = [
3085
3085
+
"windows-targets 0.52.6",
3086
3086
+
]
3087
3087
+
3088
3088
+
[[package]]
3089
3089
+
name = "windows-sys"
3090
3090
+
version = "0.61.2"
3091
3091
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3092
3092
+
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
3093
3093
+
dependencies = [
3094
3094
+
"windows-link",
3095
3095
+
]
3096
3096
+
3097
3097
+
[[package]]
3098
3098
+
name = "windows-targets"
3099
3099
+
version = "0.42.2"
3100
3100
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3101
3101
+
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
3102
3102
+
dependencies = [
3103
3103
+
"windows_aarch64_gnullvm 0.42.2",
3104
3104
+
"windows_aarch64_msvc 0.42.2",
3105
3105
+
"windows_i686_gnu 0.42.2",
3106
3106
+
"windows_i686_msvc 0.42.2",
3107
3107
+
"windows_x86_64_gnu 0.42.2",
3108
3108
+
"windows_x86_64_gnullvm 0.42.2",
3109
3109
+
"windows_x86_64_msvc 0.42.2",
3110
3110
+
]
3111
3111
+
3112
3112
+
[[package]]
3113
3113
+
name = "windows-targets"
3114
3114
+
version = "0.48.5"
3115
3115
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3116
3116
+
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
3117
3117
+
dependencies = [
3118
3118
+
"windows_aarch64_gnullvm 0.48.5",
3119
3119
+
"windows_aarch64_msvc 0.48.5",
3120
3120
+
"windows_i686_gnu 0.48.5",
3121
3121
+
"windows_i686_msvc 0.48.5",
3122
3122
+
"windows_x86_64_gnu 0.48.5",
3123
3123
+
"windows_x86_64_gnullvm 0.48.5",
3124
3124
+
"windows_x86_64_msvc 0.48.5",
3125
3125
+
]
3126
3126
+
3127
3127
+
[[package]]
3128
3128
+
name = "windows-targets"
3129
3129
+
version = "0.52.6"
3130
3130
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3131
3131
+
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
3132
3132
+
dependencies = [
3133
3133
+
"windows_aarch64_gnullvm 0.52.6",
3134
3134
+
"windows_aarch64_msvc 0.52.6",
3135
3135
+
"windows_i686_gnu 0.52.6",
3136
3136
+
"windows_i686_gnullvm",
3137
3137
+
"windows_i686_msvc 0.52.6",
3138
3138
+
"windows_x86_64_gnu 0.52.6",
3139
3139
+
"windows_x86_64_gnullvm 0.52.6",
3140
3140
+
"windows_x86_64_msvc 0.52.6",
3141
3141
+
]
3142
3142
+
3143
3143
+
[[package]]
3144
3144
+
name = "windows_aarch64_gnullvm"
3145
3145
+
version = "0.42.2"
3146
3146
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3147
3147
+
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
3148
3148
+
3149
3149
+
[[package]]
3150
3150
+
name = "windows_aarch64_gnullvm"
3151
3151
+
version = "0.48.5"
3152
3152
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3153
3153
+
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
3154
3154
+
3155
3155
+
[[package]]
3156
3156
+
name = "windows_aarch64_gnullvm"
3157
3157
+
version = "0.52.6"
3158
3158
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3159
3159
+
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
3160
3160
+
3161
3161
+
[[package]]
3162
3162
+
name = "windows_aarch64_msvc"
3163
3163
+
version = "0.42.2"
3164
3164
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3165
3165
+
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
3166
3166
+
3167
3167
+
[[package]]
3168
3168
+
name = "windows_aarch64_msvc"
3169
3169
+
version = "0.48.5"
3170
3170
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3171
3171
+
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
3172
3172
+
3173
3173
+
[[package]]
3174
3174
+
name = "windows_aarch64_msvc"
3175
3175
+
version = "0.52.6"
3176
3176
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3177
3177
+
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
3178
3178
+
3179
3179
+
[[package]]
3180
3180
+
name = "windows_i686_gnu"
3181
3181
+
version = "0.42.2"
3182
3182
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3183
3183
+
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
3184
3184
+
3185
3185
+
[[package]]
3186
3186
+
name = "windows_i686_gnu"
3187
3187
+
version = "0.48.5"
3188
3188
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3189
3189
+
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
3190
3190
+
3191
3191
+
[[package]]
3192
3192
+
name = "windows_i686_gnu"
3193
3193
+
version = "0.52.6"
3194
3194
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3195
3195
+
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
3196
3196
+
3197
3197
+
[[package]]
3198
3198
+
name = "windows_i686_gnullvm"
3199
3199
+
version = "0.52.6"
3200
3200
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3201
3201
+
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
3202
3202
+
3203
3203
+
[[package]]
3204
3204
+
name = "windows_i686_msvc"
3205
3205
+
version = "0.42.2"
3206
3206
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3207
3207
+
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
3208
3208
+
3209
3209
+
[[package]]
3210
3210
+
name = "windows_i686_msvc"
3211
3211
+
version = "0.48.5"
3212
3212
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3213
3213
+
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
3214
3214
+
3215
3215
+
[[package]]
3216
3216
+
name = "windows_i686_msvc"
3217
3217
+
version = "0.52.6"
3218
3218
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3219
3219
+
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
3220
3220
+
3221
3221
+
[[package]]
3222
3222
+
name = "windows_x86_64_gnu"
3223
3223
+
version = "0.42.2"
3224
3224
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3225
3225
+
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
3226
3226
+
3227
3227
+
[[package]]
3228
3228
+
name = "windows_x86_64_gnu"
3229
3229
+
version = "0.48.5"
3230
3230
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3231
3231
+
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
3232
3232
+
3233
3233
+
[[package]]
3234
3234
+
name = "windows_x86_64_gnu"
3235
3235
+
version = "0.52.6"
3236
3236
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3237
3237
+
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
3238
3238
+
3239
3239
+
[[package]]
3240
3240
+
name = "windows_x86_64_gnullvm"
3241
3241
+
version = "0.42.2"
3242
3242
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3243
3243
+
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
3244
3244
+
3245
3245
+
[[package]]
3246
3246
+
name = "windows_x86_64_gnullvm"
3247
3247
+
version = "0.48.5"
3248
3248
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3249
3249
+
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
3250
3250
+
3251
3251
+
[[package]]
3252
3252
+
name = "windows_x86_64_gnullvm"
3253
3253
+
version = "0.52.6"
3254
3254
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3255
3255
+
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
3256
3256
+
3257
3257
+
[[package]]
3258
3258
+
name = "windows_x86_64_msvc"
3259
3259
+
version = "0.42.2"
3260
3260
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3261
3261
+
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
3262
3262
+
3263
3263
+
[[package]]
3264
3264
+
name = "windows_x86_64_msvc"
3265
3265
+
version = "0.48.5"
3266
3266
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3267
3267
+
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
3268
3268
+
3269
3269
+
[[package]]
3270
3270
+
name = "windows_x86_64_msvc"
3271
3271
+
version = "0.52.6"
3272
3272
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3273
3273
+
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
3274
3274
+
3275
3275
+
[[package]]
3276
3276
+
name = "wit-bindgen"
3277
3277
+
version = "0.51.0"
3278
3278
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3279
3279
+
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
3280
3280
+
dependencies = [
3281
3281
+
"wit-bindgen-rust-macro",
3282
3282
+
]
3283
3283
+
3284
3284
+
[[package]]
3285
3285
+
name = "wit-bindgen-core"
3286
3286
+
version = "0.51.0"
3287
3287
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3288
3288
+
checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
3289
3289
+
dependencies = [
3290
3290
+
"anyhow",
3291
3291
+
"heck",
3292
3292
+
"wit-parser",
3293
3293
+
]
3294
3294
+
3295
3295
+
[[package]]
3296
3296
+
name = "wit-bindgen-rust"
3297
3297
+
version = "0.51.0"
3298
3298
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3299
3299
+
checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
3300
3300
+
dependencies = [
3301
3301
+
"anyhow",
3302
3302
+
"heck",
3303
3303
+
"indexmap",
3304
3304
+
"prettyplease",
3305
3305
+
"syn 2.0.117",
3306
3306
+
"wasm-metadata",
3307
3307
+
"wit-bindgen-core",
3308
3308
+
"wit-component",
3309
3309
+
]
3310
3310
+
3311
3311
+
[[package]]
3312
3312
+
name = "wit-bindgen-rust-macro"
3313
3313
+
version = "0.51.0"
3314
3314
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3315
3315
+
checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
3316
3316
+
dependencies = [
3317
3317
+
"anyhow",
3318
3318
+
"prettyplease",
3319
3319
+
"proc-macro2",
3320
3320
+
"quote",
3321
3321
+
"syn 2.0.117",
3322
3322
+
"wit-bindgen-core",
3323
3323
+
"wit-bindgen-rust",
3324
3324
+
]
3325
3325
+
3326
3326
+
[[package]]
3327
3327
+
name = "wit-component"
3328
3328
+
version = "0.244.0"
3329
3329
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3330
3330
+
checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
3331
3331
+
dependencies = [
3332
3332
+
"anyhow",
3333
3333
+
"bitflags 2.11.0",
3334
3334
+
"indexmap",
3335
3335
+
"log",
3336
3336
+
"serde",
3337
3337
+
"serde_derive",
3338
3338
+
"serde_json",
3339
3339
+
"wasm-encoder",
3340
3340
+
"wasm-metadata",
3341
3341
+
"wasmparser",
3342
3342
+
"wit-parser",
3343
3343
+
]
3344
3344
+
3345
3345
+
[[package]]
3346
3346
+
name = "wit-parser"
3347
3347
+
version = "0.244.0"
3348
3348
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3349
3349
+
checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
3350
3350
+
dependencies = [
3351
3351
+
"anyhow",
3352
3352
+
"id-arena",
3353
3353
+
"indexmap",
3354
3354
+
"log",
3355
3355
+
"semver",
3356
3356
+
"serde",
3357
3357
+
"serde_derive",
3358
3358
+
"serde_json",
3359
3359
+
"unicode-xid",
3360
3360
+
"wasmparser",
3361
3361
+
]
3362
3362
+
3363
3363
+
[[package]]
3364
3364
+
name = "writeable"
3365
3365
+
version = "0.6.3"
3366
3366
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3367
3367
+
checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
3368
3368
+
3369
3369
+
[[package]]
3370
3370
+
name = "yoke"
3371
3371
+
version = "0.8.2"
3372
3372
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3373
3373
+
checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca"
3374
3374
+
dependencies = [
3375
3375
+
"stable_deref_trait",
3376
3376
+
"yoke-derive",
3377
3377
+
"zerofrom",
3378
3378
+
]
3379
3379
+
3380
3380
+
[[package]]
3381
3381
+
name = "yoke-derive"
3382
3382
+
version = "0.8.2"
3383
3383
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3384
3384
+
checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
3385
3385
+
dependencies = [
3386
3386
+
"proc-macro2",
3387
3387
+
"quote",
3388
3388
+
"syn 2.0.117",
3389
3389
+
"synstructure",
3390
3390
+
]
3391
3391
+
3392
3392
+
[[package]]
3393
3393
+
name = "zerocopy"
3394
3394
+
version = "0.8.48"
3395
3395
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3396
3396
+
checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
3397
3397
+
dependencies = [
3398
3398
+
"zerocopy-derive",
3399
3399
+
]
3400
3400
+
3401
3401
+
[[package]]
3402
3402
+
name = "zerocopy-derive"
3403
3403
+
version = "0.8.48"
3404
3404
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3405
3405
+
checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
3406
3406
+
dependencies = [
3407
3407
+
"proc-macro2",
3408
3408
+
"quote",
3409
3409
+
"syn 2.0.117",
3410
3410
+
]
3411
3411
+
3412
3412
+
[[package]]
3413
3413
+
name = "zerofrom"
3414
3414
+
version = "0.1.7"
3415
3415
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3416
3416
+
checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df"
3417
3417
+
dependencies = [
3418
3418
+
"zerofrom-derive",
3419
3419
+
]
3420
3420
+
3421
3421
+
[[package]]
3422
3422
+
name = "zerofrom-derive"
3423
3423
+
version = "0.1.7"
3424
3424
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3425
3425
+
checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
3426
3426
+
dependencies = [
3427
3427
+
"proc-macro2",
3428
3428
+
"quote",
3429
3429
+
"syn 2.0.117",
3430
3430
+
"synstructure",
3431
3431
+
]
3432
3432
+
3433
3433
+
[[package]]
3434
3434
+
name = "zeroize"
3435
3435
+
version = "1.8.2"
3436
3436
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3437
3437
+
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
3438
3438
+
3439
3439
+
[[package]]
3440
3440
+
name = "zerotrie"
3441
3441
+
version = "0.2.4"
3442
3442
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3443
3443
+
checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
3444
3444
+
dependencies = [
3445
3445
+
"displaydoc",
3446
3446
+
"yoke",
3447
3447
+
"zerofrom",
3448
3448
+
]
3449
3449
+
3450
3450
+
[[package]]
3451
3451
+
name = "zerovec"
3452
3452
+
version = "0.11.6"
3453
3453
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3454
3454
+
checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
3455
3455
+
dependencies = [
3456
3456
+
"yoke",
3457
3457
+
"zerofrom",
3458
3458
+
"zerovec-derive",
3459
3459
+
]
3460
3460
+
3461
3461
+
[[package]]
3462
3462
+
name = "zerovec-derive"
3463
3463
+
version = "0.11.3"
3464
3464
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3465
3465
+
checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
3466
3466
+
dependencies = [
3467
3467
+
"proc-macro2",
3468
3468
+
"quote",
3469
3469
+
"syn 2.0.117",
3470
3470
+
]
3471
3471
+
3472
3472
+
[[package]]
3473
3473
+
name = "zmij"
3474
3474
+
version = "1.0.21"
3475
3475
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3476
3476
+
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+18
Cargo.toml
reviewed
···
1
1
+
[package]
2
2
+
name = "KLBR"
3
3
+
# version = "C0001"
4
4
+
edition = "2021"
5
5
+
6
6
+
[dependencies]
7
7
+
tokio = { version = "1", features = ["full"] }
8
8
+
rusqlite = { version = "0.39", features = ["bundled"] }
9
9
+
reqwest = { version = "0.13", features = ["json", "stream", "rustls"] }
10
10
+
serde = { version = "1", features = ["derive"] }
11
11
+
serde_json = "1"
12
12
+
anyhow = "1"
13
13
+
ratatui = "0.30"
14
14
+
crossterm = { version = "0.29", features = ["event-stream"] }
15
15
+
futures = "0.3"
16
16
+
dirs = "5"
17
17
+
tracing = "0.1.44"
18
18
+
tracing-subscriber = "0.3.23"
+61
flake.lock
reviewed
···
1
1
+
{
2
2
+
"nodes": {
3
3
+
"nixpkgs": {
4
4
+
"locked": {
5
5
+
"lastModified": 1775403759,
6
6
+
"narHash": "sha256-cGyKiTspHEUx3QwAnV3RfyT+VOXhHLs+NEr17HU34Wo=",
7
7
+
"owner": "nixos",
8
8
+
"repo": "nixpkgs",
9
9
+
"rev": "5e11f7acce6c3469bef9df154d78534fa7ae8b6c",
10
10
+
"type": "github"
11
11
+
},
12
12
+
"original": {
13
13
+
"owner": "nixos",
14
14
+
"ref": "nixpkgs-unstable",
15
15
+
"repo": "nixpkgs",
16
16
+
"type": "github"
17
17
+
}
18
18
+
},
19
19
+
"nixpkgs-lib": {
20
20
+
"locked": {
21
21
+
"lastModified": 1774748309,
22
22
+
"narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=",
23
23
+
"owner": "nix-community",
24
24
+
"repo": "nixpkgs.lib",
25
25
+
"rev": "333c4e0545a6da976206c74db8773a1645b5870a",
26
26
+
"type": "github"
27
27
+
},
28
28
+
"original": {
29
29
+
"owner": "nix-community",
30
30
+
"repo": "nixpkgs.lib",
31
31
+
"type": "github"
32
32
+
}
33
33
+
},
34
34
+
"parts": {
35
35
+
"inputs": {
36
36
+
"nixpkgs-lib": "nixpkgs-lib"
37
37
+
},
38
38
+
"locked": {
39
39
+
"lastModified": 1775087534,
40
40
+
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
41
41
+
"owner": "hercules-ci",
42
42
+
"repo": "flake-parts",
43
43
+
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
44
44
+
"type": "github"
45
45
+
},
46
46
+
"original": {
47
47
+
"owner": "hercules-ci",
48
48
+
"repo": "flake-parts",
49
49
+
"type": "github"
50
50
+
}
51
51
+
},
52
52
+
"root": {
53
53
+
"inputs": {
54
54
+
"nixpkgs": "nixpkgs",
55
55
+
"parts": "parts"
56
56
+
}
57
57
+
}
58
58
+
},
59
59
+
"root": "root",
60
60
+
"version": 7
61
61
+
}
+33
flake.nix
reviewed
···
1
1
+
{
2
2
+
inputs.parts.url = "github:hercules-ci/flake-parts";
3
3
+
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
4
4
+
5
5
+
outputs =
6
6
+
inp:
7
7
+
inp.parts.lib.mkFlake { inputs = inp; } {
8
8
+
systems = [ "x86_64-linux" ];
9
9
+
perSystem =
10
10
+
{
11
11
+
pkgs,
12
12
+
config,
13
13
+
...
14
14
+
}:
15
15
+
{
16
16
+
packages.default = pkgs.callPackage ./default.nix {};
17
17
+
devShells = {
18
18
+
default = pkgs.mkShell {
19
19
+
packages = with pkgs; [
20
20
+
rustPlatform.rustLibSrc
21
21
+
rust-analyzer
22
22
+
cargo
23
23
+
cargo-outdated
24
24
+
rustc
25
25
+
rustfmt
26
26
+
clang
27
27
+
wild
28
28
+
];
29
29
+
};
30
30
+
};
31
31
+
};
32
32
+
};
33
33
+
}
+120
src/agent.rs
reviewed
···
1
1
+
use anyhow::Result;
2
2
+
use std::sync::Arc;
3
3
+
use tokio::sync::{broadcast, mpsc, RwLock};
4
4
+
5
5
+
pub type MetricsSnapshot = Arc<RwLock<Option<crate::ipc::ServerMsg>>>;
6
6
+
7
7
+
use crate::{
8
8
+
config::Config,
9
9
+
context::Context,
10
10
+
interrupt::Interrupt,
11
11
+
ipc::ServerMsg,
12
12
+
llm::{LlmClient, Message},
13
13
+
memory::MemoryStore,
14
14
+
};
15
15
+
16
16
+
pub async fn run(
17
17
+
config: Config,
18
18
+
llm: LlmClient,
19
19
+
memory: MemoryStore,
20
20
+
mut rx: mpsc::Receiver<Interrupt>,
21
21
+
output: broadcast::Sender<ServerMsg>,
22
22
+
snapshot: MetricsSnapshot,
23
23
+
) -> Result<()> {
24
24
+
let mut ctx = Context::new(&config.anchor);
25
25
+
let mut turn_count = 0usize;
26
26
+
27
27
+
while let Some(interrupt) = rx.recv().await {
28
28
+
let text = interrupt.to_text().to_string();
29
29
+
let source = interrupt.source_tag().to_string();
30
30
+
31
31
+
let memories: Vec<String> = llm
32
32
+
.embed(&text)
33
33
+
.await
34
34
+
.ok()
35
35
+
.and_then(|emb| memory.retrieve(&emb, config.memory_top_k).ok())
36
36
+
.unwrap_or_default()
37
37
+
.into_iter()
38
38
+
.map(|m| m.content)
39
39
+
.collect();
40
40
+
41
41
+
if !memories.is_empty() {
42
42
+
let _ = output.send(ServerMsg::Status {
43
43
+
content: format!(
44
44
+
"recalled {} memor{}",
45
45
+
memories.len(),
46
46
+
if memories.len() == 1 { "y" } else { "ies" }
47
47
+
),
48
48
+
});
49
49
+
}
50
50
+
51
51
+
ctx.push_user(&source, &text, &memories);
52
52
+
turn_count += 1;
53
53
+
54
54
+
let (tok_tx, mut tok_rx) = mpsc::channel(256);
55
55
+
let llm2 = llm.clone();
56
56
+
let msgs = ctx.as_messages();
57
57
+
tokio::spawn(async move {
58
58
+
let _ = llm2.stream(&msgs, tok_tx).await;
59
59
+
});
60
60
+
61
61
+
let mut response = String::new();
62
62
+
63
63
+
while let Some((is_think, tok)) = tok_rx.recv().await {
64
64
+
if is_think {
65
65
+
let _ = output.send(ServerMsg::ThinkToken { content: tok });
66
66
+
} else {
67
67
+
response.push_str(&tok);
68
68
+
let _ = output.send(ServerMsg::Token { content: tok });
69
69
+
}
70
70
+
}
71
71
+
72
72
+
ctx.push_assistant(&response);
73
73
+
turn_count += 1;
74
74
+
75
75
+
let _ = output.send(ServerMsg::Done);
76
76
+
let metrics = ServerMsg::Metrics {
77
77
+
turn_count,
78
78
+
context_chars: ctx.char_count(),
79
79
+
watermark: config.watermark_chars,
80
80
+
};
81
81
+
*snapshot.write().await = Some(metrics.clone());
82
82
+
let _ = output.send(metrics);
83
83
+
84
84
+
if ctx.char_count() > config.watermark_chars {
85
85
+
let _ = output.send(ServerMsg::Status {
86
86
+
content: "compacting...".into(),
87
87
+
});
88
88
+
compact(&config, &llm, &memory, &mut ctx).await;
89
89
+
// reset turn count after compaction since context was partially evicted
90
90
+
turn_count = ctx.turn_count();
91
91
+
}
92
92
+
}
93
93
+
94
94
+
Ok(())
95
95
+
}
96
96
+
97
97
+
async fn compact(config: &Config, llm: &LlmClient, memory: &MemoryStore, ctx: &mut Context) {
98
98
+
let drained = ctx.drain_oldest(config.compaction_keep);
99
99
+
if drained.is_empty() {
100
100
+
return;
101
101
+
}
102
102
+
103
103
+
let turns_text = drained
104
104
+
.iter()
105
105
+
.map(|m| format!("{}: {}", m.role, m.content))
106
106
+
.collect::<Vec<_>>()
107
107
+
.join("\n");
108
108
+
109
109
+
let prompt = vec![Message::user(format!(
110
110
+
"summarize these conversation turns concisely, preserving key facts and topics:\n\n{turns_text}"
111
111
+
))];
112
112
+
113
113
+
let Ok(summary) = llm.complete(&prompt).await else {
114
114
+
return;
115
115
+
};
116
116
+
let Ok(emb) = llm.embed(&summary).await else {
117
117
+
return;
118
118
+
};
119
119
+
let _ = memory.store(&summary, &emb);
120
120
+
}
+35
src/config.rs
reviewed
···
1
1
+
#[derive(Clone)]
2
2
+
pub struct Config {
3
3
+
/// llama-server base url
4
4
+
pub llm_url: String,
5
5
+
/// embedding server base url
6
6
+
pub embed_url: String,
7
7
+
pub llm_model: String,
8
8
+
pub embed_model: String,
9
9
+
/// char count before context compaction fires
10
10
+
pub watermark_chars: usize,
11
11
+
/// how many recent turns to preserve during compaction
12
12
+
pub compaction_keep: usize,
13
13
+
/// memories to inject per turn
14
14
+
pub memory_top_k: usize,
15
15
+
pub db_path: String,
16
16
+
pub anchor: String,
17
17
+
}
18
18
+
19
19
+
impl Default for Config {
20
20
+
fn default() -> Self {
21
21
+
Self {
22
22
+
llm_url: "http://localhost:1234".into(),
23
23
+
embed_url: "http://localhost:1234".into(),
24
24
+
llm_model: "google/gemma-4-26b-a4b".into(),
25
25
+
embed_model: "nomic-embed-text-v1.5".into(),
26
26
+
watermark_chars: 48_000,
27
27
+
compaction_keep: 10,
28
28
+
memory_top_k: 3,
29
29
+
db_path: "agent.db".into(),
30
30
+
anchor: "you are a curious, direct presence running as a persistent daemon. \
31
31
+
you observe what the user is doing and engage naturally."
32
32
+
.into(),
33
33
+
}
34
34
+
}
35
35
+
}
+54
src/context.rs
reviewed
···
1
1
+
use crate::llm::Message;
2
2
+
3
3
+
pub struct Context {
4
4
+
/// never evicted - system prompt etc.
5
5
+
anchor: Vec<Message>,
6
6
+
/// rolling conversation turns
7
7
+
pub turns: Vec<Message>,
8
8
+
}
9
9
+
10
10
+
impl Context {
11
11
+
pub fn new(anchor: &str) -> Self {
12
12
+
Self {
13
13
+
anchor: vec![Message::system(anchor)],
14
14
+
turns: vec![],
15
15
+
}
16
16
+
}
17
17
+
18
18
+
/// push a user turn, optionally prepending recalled memories
19
19
+
pub fn push_user(&mut self, source: &str, content: &str, memories: &[String]) {
20
20
+
let text = if memories.is_empty() {
21
21
+
content.to_string()
22
22
+
} else {
23
23
+
format!(
24
24
+
"[recalled context]\n{}\n\n[{source}] {content}",
25
25
+
memories.join("\n---\n")
26
26
+
)
27
27
+
};
28
28
+
self.turns.push(Message::user(text));
29
29
+
}
30
30
+
31
31
+
pub fn push_assistant(&mut self, content: &str) {
32
32
+
self.turns.push(Message::assistant(content.to_string()));
33
33
+
}
34
34
+
35
35
+
pub fn as_messages(&self) -> Vec<Message> {
36
36
+
self.anchor.iter().chain(&self.turns).cloned().collect()
37
37
+
}
38
38
+
39
39
+
pub fn char_count(&self) -> usize {
40
40
+
self.turns.iter().map(|m| m.content.len()).sum()
41
41
+
}
42
42
+
43
43
+
pub fn turn_count(&self) -> usize {
44
44
+
self.turns.len()
45
45
+
}
46
46
+
47
47
+
/// drains oldest turns for compaction, preserving the `keep` most recent
48
48
+
pub fn drain_oldest(&mut self, keep: usize) -> Vec<Message> {
49
49
+
if self.turns.len() <= keep {
50
50
+
return vec![];
51
51
+
}
52
52
+
self.turns.drain(..self.turns.len() - keep).collect()
53
53
+
}
54
54
+
}
+87
src/daemon.rs
reviewed
···
1
1
+
use anyhow::Result;
2
2
+
use std::sync::Arc;
3
3
+
use tokio::{
4
4
+
io::{AsyncBufReadExt, AsyncWriteExt, BufReader},
5
5
+
net::UnixListener,
6
6
+
sync::{broadcast, mpsc, RwLock},
7
7
+
};
8
8
+
9
9
+
use crate::{
10
10
+
interrupt::Interrupt,
11
11
+
ipc::{sock_path, ClientMsg, ServerMsg},
12
12
+
};
13
13
+
14
14
+
/// last known metrics snapshot, updated by agent, read on new client connect
15
15
+
pub type MetricsSnapshot = Arc<RwLock<Option<ServerMsg>>>;
16
16
+
17
17
+
pub async fn serve(
18
18
+
interrupt_tx: mpsc::Sender<Interrupt>,
19
19
+
output: broadcast::Sender<ServerMsg>,
20
20
+
snapshot: MetricsSnapshot,
21
21
+
) -> Result<()> {
22
22
+
let path = sock_path();
23
23
+
if path.exists() {
24
24
+
let _ = std::fs::remove_file(&path);
25
25
+
}
26
26
+
27
27
+
let listener = UnixListener::bind(&path)?;
28
28
+
tracing::info!(sock = ?path, "daemon listening");
29
29
+
30
30
+
loop {
31
31
+
let (stream, _) = listener.accept().await?;
32
32
+
let tx = interrupt_tx.clone();
33
33
+
let bcast = output.clone();
34
34
+
let snapshot = snapshot.clone();
35
35
+
36
36
+
tokio::spawn(async move {
37
37
+
if let Err(e) = handle(stream, tx, bcast, snapshot).await {
38
38
+
tracing::error!(err = %e, "client error");
39
39
+
}
40
40
+
});
41
41
+
}
42
42
+
}
43
43
+
44
44
+
async fn handle(
45
45
+
sock: tokio::net::UnixStream,
46
46
+
interrupt_tx: mpsc::Sender<Interrupt>,
47
47
+
output: broadcast::Sender<ServerMsg>,
48
48
+
snapshot: MetricsSnapshot,
49
49
+
) -> Result<()> {
50
50
+
let mut rx = output.subscribe();
51
51
+
let (sock_rx, mut sock_tx) = sock.into_split();
52
52
+
let mut sock_rx = BufReader::new(sock_rx).lines();
53
53
+
54
54
+
// send current metrics immediately so tui doesn't start blank
55
55
+
if let Some(metrics) = snapshot.read().await.clone() {
56
56
+
let mut line = serde_json::to_string(&metrics)?;
57
57
+
line.push('\n');
58
58
+
sock_tx.write_all(line.as_bytes()).await?;
59
59
+
}
60
60
+
61
61
+
loop {
62
62
+
tokio::select! {
63
63
+
line = sock_rx.next_line() => {
64
64
+
let Some(line) = line? else { break };
65
65
+
let msg: ClientMsg = serde_json::from_str(&line)?;
66
66
+
match msg {
67
67
+
ClientMsg::Message { source, content } => {
68
68
+
let int = match source.as_str() {
69
69
+
"user" => Interrupt::UserMessage(content),
70
70
+
other => Interrupt::UserMessage(format!("[{other}] {content}")),
71
71
+
};
72
72
+
interrupt_tx.send(int).await?;
73
73
+
}
74
74
+
}
75
75
+
}
76
76
+
msg = rx.recv() => {
77
77
+
let msg = msg?;
78
78
+
tracing::info!(msg = ?msg, "received message from agent");
79
79
+
let mut line = serde_json::to_string(&msg)?;
80
80
+
line.push('\n');
81
81
+
sock_tx.write_all(line.as_bytes()).await?;
82
82
+
}
83
83
+
}
84
84
+
}
85
85
+
86
86
+
Ok(())
87
87
+
}
+52
src/interrupt.rs
reviewed
···
1
1
+
use tokio::sync::mpsc;
2
2
+
3
3
+
#[derive(Debug, Clone)]
4
4
+
pub enum Interrupt {
5
5
+
UserMessage(String),
6
6
+
// add new sources here, e.g.:
7
7
+
// BskyPost { author: String, content: String },
8
8
+
// FileChanged(std::path::PathBuf),
9
9
+
// ShellCommand(String),
10
10
+
}
11
11
+
12
12
+
impl Interrupt {
13
13
+
pub fn to_text(&self) -> &str {
14
14
+
match self {
15
15
+
Interrupt::UserMessage(s) => s,
16
16
+
// Interrupt::BskyPost { author, content } => content,
17
17
+
}
18
18
+
}
19
19
+
20
20
+
/// source tag shown in context, lets the model know where input came from
21
21
+
pub fn source_tag(&self) -> &str {
22
22
+
match self {
23
23
+
Interrupt::UserMessage(_) => "user",
24
24
+
// Interrupt::BskyPost { .. } => "bsky",
25
25
+
}
26
26
+
}
27
27
+
}
28
28
+
29
29
+
/// spawn an interrupt source as a background task.
30
30
+
/// source just needs to send Interrupts to the shared channel.
31
31
+
///
32
32
+
/// example usage:
33
33
+
/// ```
34
34
+
/// spawn_source(tx.clone(), |tx| async move {
35
35
+
/// loop {
36
36
+
/// let post = bsky_client.next_notification().await?;
37
37
+
/// tx.send(Interrupt::BskyPost { ... }).await?;
38
38
+
/// }
39
39
+
/// Ok(())
40
40
+
/// });
41
41
+
/// ```
42
42
+
pub fn spawn_source<F, Fut>(tx: mpsc::Sender<Interrupt>, f: F)
43
43
+
where
44
44
+
F: FnOnce(mpsc::Sender<Interrupt>) -> Fut + Send + 'static,
45
45
+
Fut: std::future::Future<Output = anyhow::Result<()>> + Send,
46
46
+
{
47
47
+
tokio::spawn(async move {
48
48
+
if let Err(e) = f(tx).await {
49
49
+
eprintln!("interrupt source died: {e}");
50
50
+
}
51
51
+
});
52
52
+
}
+38
src/ipc.rs
reviewed
···
1
1
+
use serde::{Deserialize, Serialize};
2
2
+
use std::path::PathBuf;
3
3
+
4
4
+
/// client → daemon
5
5
+
#[derive(Debug, Serialize, Deserialize)]
6
6
+
#[serde(tag = "type", rename_all = "snake_case")]
7
7
+
pub enum ClientMsg {
8
8
+
Message { source: String, content: String },
9
9
+
}
10
10
+
11
11
+
/// daemon → client
12
12
+
#[derive(Debug, Serialize, Deserialize, Clone)]
13
13
+
#[serde(tag = "type", rename_all = "snake_case")]
14
14
+
pub enum ServerMsg {
15
15
+
Token {
16
16
+
content: String,
17
17
+
},
18
18
+
ThinkToken {
19
19
+
content: String,
20
20
+
},
21
21
+
Done,
22
22
+
Status {
23
23
+
content: String,
24
24
+
},
25
25
+
/// sent after each Done with current agent stats
26
26
+
Metrics {
27
27
+
turn_count: usize,
28
28
+
context_chars: usize,
29
29
+
watermark: usize,
30
30
+
},
31
31
+
}
32
32
+
33
33
+
pub fn sock_path() -> PathBuf {
34
34
+
dirs::runtime_dir()
35
35
+
.or_else(|| dirs::home_dir().map(|h| h.join(".local/share")))
36
36
+
.unwrap_or_else(|| PathBuf::from("/tmp"))
37
37
+
.join("agent.sock")
38
38
+
}
+148
src/llm.rs
reviewed
···
1
1
+
use anyhow::Result;
2
2
+
use futures::StreamExt;
3
3
+
use reqwest::Client;
4
4
+
use serde::{Deserialize, Serialize};
5
5
+
use serde_json::{json, Value};
6
6
+
use tokio::sync::mpsc;
7
7
+
8
8
+
use crate::config::Config;
9
9
+
10
10
+
#[derive(Clone, Debug, Serialize, Deserialize)]
11
11
+
pub struct Message {
12
12
+
pub role: String,
13
13
+
pub content: String,
14
14
+
}
15
15
+
16
16
+
impl Message {
17
17
+
pub fn system(s: impl Into<String>) -> Self {
18
18
+
Self {
19
19
+
role: "system".into(),
20
20
+
content: s.into(),
21
21
+
}
22
22
+
}
23
23
+
pub fn user(s: impl Into<String>) -> Self {
24
24
+
Self {
25
25
+
role: "user".into(),
26
26
+
content: s.into(),
27
27
+
}
28
28
+
}
29
29
+
pub fn assistant(s: impl Into<String>) -> Self {
30
30
+
Self {
31
31
+
role: "assistant".into(),
32
32
+
content: s.into(),
33
33
+
}
34
34
+
}
35
35
+
}
36
36
+
37
37
+
/// (is_think, token) - is_think=true means reasoning_content (thinking trace)
38
38
+
pub type StreamChunk = (bool, String);
39
39
+
40
40
+
#[derive(Clone)]
41
41
+
pub struct LlmClient {
42
42
+
client: Client,
43
43
+
pub config: Config,
44
44
+
}
45
45
+
46
46
+
impl LlmClient {
47
47
+
pub fn new(config: Config) -> Self {
48
48
+
Self {
49
49
+
client: Client::new(),
50
50
+
config,
51
51
+
}
52
52
+
}
53
53
+
54
54
+
pub async fn stream(
55
55
+
&self,
56
56
+
messages: &[Message],
57
57
+
tok_tx: mpsc::Sender<StreamChunk>,
58
58
+
) -> Result<()> {
59
59
+
let body = json!({
60
60
+
"model": self.config.llm_model,
61
61
+
"messages": messages,
62
62
+
"stream": true,
63
63
+
});
64
64
+
65
65
+
let mut res = self
66
66
+
.client
67
67
+
.post(format!("{}/v1/chat/completions", self.config.llm_url))
68
68
+
.json(&body)
69
69
+
.send()
70
70
+
.await?
71
71
+
.bytes_stream();
72
72
+
73
73
+
let mut buf = String::new();
74
74
+
75
75
+
while let Some(chunk) = res.next().await {
76
76
+
buf.push_str(std::str::from_utf8(&chunk?).unwrap_or(""));
77
77
+
while let Some(nl) = buf.find('\n') {
78
78
+
let line = buf[..nl].trim().to_string();
79
79
+
buf = buf[nl + 1..].to_string();
80
80
+
81
81
+
let Some(data) = line.strip_prefix("data: ") else {
82
82
+
continue;
83
83
+
};
84
84
+
if data == "[DONE]" {
85
85
+
return Ok(());
86
86
+
}
87
87
+
88
88
+
let Ok(v) = serde_json::from_str::<Value>(data) else {
89
89
+
continue;
90
90
+
};
91
91
+
let delta = &v["choices"][0]["delta"];
92
92
+
93
93
+
// reasoning_content comes before content during thinking
94
94
+
if let Some(t) = delta["reasoning_content"].as_str() {
95
95
+
if !t.is_empty() && tok_tx.send((true, t.to_string())).await.is_err() {
96
96
+
return Ok(());
97
97
+
}
98
98
+
}
99
99
+
if let Some(t) = delta["content"].as_str() {
100
100
+
if !t.is_empty() && tok_tx.send((false, t.to_string())).await.is_err() {
101
101
+
return Ok(());
102
102
+
}
103
103
+
}
104
104
+
}
105
105
+
}
106
106
+
107
107
+
Ok(())
108
108
+
}
109
109
+
110
110
+
/// non-streaming, used for compaction summaries
111
111
+
pub async fn complete(&self, messages: &[Message]) -> Result<String> {
112
112
+
let body = json!({
113
113
+
"model": self.config.llm_model,
114
114
+
"messages": messages,
115
115
+
"stream": false,
116
116
+
});
117
117
+
let v = self
118
118
+
.client
119
119
+
.post(format!("{}/v1/chat/completions", self.config.llm_url))
120
120
+
.json(&body)
121
121
+
.send()
122
122
+
.await?
123
123
+
.json::<Value>()
124
124
+
.await?;
125
125
+
Ok(v["choices"][0]["message"]["content"]
126
126
+
.as_str()
127
127
+
.unwrap_or("")
128
128
+
.to_string())
129
129
+
}
130
130
+
131
131
+
pub async fn embed(&self, text: &str) -> Result<Vec<f32>> {
132
132
+
let body = json!({ "model": self.config.embed_model, "input": text });
133
133
+
let v = self
134
134
+
.client
135
135
+
.post(format!("{}/v1/embeddings", self.config.embed_url))
136
136
+
.json(&body)
137
137
+
.send()
138
138
+
.await?
139
139
+
.json::<Value>()
140
140
+
.await?;
141
141
+
v["data"][0]["embedding"]
142
142
+
.as_array()
143
143
+
.ok_or_else(|| anyhow::anyhow!("no embedding in response"))?
144
144
+
.iter()
145
145
+
.map(|x| Ok(x.as_f64().unwrap_or(0.0) as f32))
146
146
+
.collect()
147
147
+
}
148
148
+
}
+60
src/main.rs
reviewed
···
1
1
+
mod agent;
2
2
+
mod config;
3
3
+
mod context;
4
4
+
mod daemon;
5
5
+
mod interrupt;
6
6
+
mod ipc;
7
7
+
mod llm;
8
8
+
mod memory;
9
9
+
mod tui;
10
10
+
11
11
+
use anyhow::Result;
12
12
+
use std::sync::Arc;
13
13
+
use tokio::sync::{broadcast, mpsc, RwLock};
14
14
+
15
15
+
use config::Config;
16
16
+
17
17
+
#[tokio::main]
18
18
+
async fn main() -> Result<()> {
19
19
+
match std::env::args().nth(1).as_deref() {
20
20
+
Some("daemon") => run_daemon().await,
21
21
+
Some(other) => {
22
22
+
eprintln!("unknown subcommand: {other}\nusage: agent [daemon]");
23
23
+
std::process::exit(1);
24
24
+
}
25
25
+
None => tui::run().await,
26
26
+
}
27
27
+
}
28
28
+
29
29
+
async fn run_daemon() -> Result<()> {
30
30
+
tracing_subscriber::fmt().init();
31
31
+
32
32
+
let config = Config::default();
33
33
+
let memory = memory::MemoryStore::open(&config.db_path)?;
34
34
+
let llm = llm::LlmClient::new(config.clone());
35
35
+
let snapshot = Arc::new(RwLock::new(None));
36
36
+
37
37
+
let (interrupt_tx, interrupt_rx) = mpsc::channel::<interrupt::Interrupt>(32);
38
38
+
let (output_tx, _) = broadcast::channel::<ipc::ServerMsg>(256);
39
39
+
40
40
+
// --- register extra interrupt sources here ---
41
41
+
// interrupt::spawn_source(interrupt_tx.clone(), |tx| async move {
42
42
+
// bsky::run(tx).await
43
43
+
// });
44
44
+
45
45
+
let agent = tokio::spawn(agent::run(
46
46
+
config,
47
47
+
llm,
48
48
+
memory,
49
49
+
interrupt_rx,
50
50
+
output_tx.clone(),
51
51
+
snapshot.clone(),
52
52
+
));
53
53
+
let sock = tokio::spawn(daemon::serve(interrupt_tx, output_tx, snapshot));
54
54
+
55
55
+
tokio::select! {
56
56
+
r = agent => { r??; }
57
57
+
r = sock => { r??; }
58
58
+
}
59
59
+
Ok(())
60
60
+
}
+104
src/memory.rs
reviewed
···
1
1
+
use anyhow::Result;
2
2
+
use rusqlite::{params, Connection};
3
3
+
use std::sync::{Arc, Mutex};
4
4
+
5
5
+
pub struct Memory {
6
6
+
pub content: String,
7
7
+
}
8
8
+
9
9
+
/// sqlite-backed episodic memory store.
10
10
+
/// embeddings stored as raw little-endian f32 blobs,
11
11
+
/// retrieval does brute force cosine similarity (fast enough at personal scale).
12
12
+
#[derive(Clone)]
13
13
+
pub struct MemoryStore(Arc<Mutex<Connection>>);
14
14
+
15
15
+
impl MemoryStore {
16
16
+
pub fn open(path: &str) -> Result<Self> {
17
17
+
let conn = Connection::open(path)?;
18
18
+
conn.execute_batch(
19
19
+
"
20
20
+
CREATE TABLE IF NOT EXISTS memories (
21
21
+
id INTEGER PRIMARY KEY,
22
22
+
content TEXT NOT NULL,
23
23
+
emb BLOB NOT NULL,
24
24
+
ts INTEGER NOT NULL DEFAULT (unixepoch()),
25
25
+
hits INTEGER NOT NULL DEFAULT 0
26
26
+
);
27
27
+
",
28
28
+
)?;
29
29
+
Ok(Self(Arc::new(Mutex::new(conn))))
30
30
+
}
31
31
+
32
32
+
pub fn store(&self, content: &str, emb: &[f32]) -> Result<()> {
33
33
+
let blob = f32s_to_bytes(emb);
34
34
+
self.0.lock().unwrap().execute(
35
35
+
"INSERT INTO memories (content, emb) VALUES (?1, ?2)",
36
36
+
params![content, blob],
37
37
+
)?;
38
38
+
Ok(())
39
39
+
}
40
40
+
41
41
+
pub fn retrieve(&self, query: &[f32], k: usize) -> Result<Vec<Memory>> {
42
42
+
let conn = self.0.lock().unwrap();
43
43
+
44
44
+
// load recent candidates (cap at 1000 to bound brute force cost)
45
45
+
let mut stmt =
46
46
+
conn.prepare("SELECT id, content, emb FROM memories ORDER BY ts DESC LIMIT 1000")?;
47
47
+
48
48
+
let mut scored: Vec<(f32, i64, String)> = stmt
49
49
+
.query_map([], |row| {
50
50
+
Ok((
51
51
+
row.get::<_, i64>(0)?,
52
52
+
row.get::<_, String>(1)?,
53
53
+
row.get::<_, Vec<u8>>(2)?,
54
54
+
))
55
55
+
})?
56
56
+
.filter_map(|r| r.ok())
57
57
+
.map(|(id, content, blob)| {
58
58
+
let score = cosine(query, &bytes_to_f32s(&blob));
59
59
+
(score, id, content)
60
60
+
})
61
61
+
.collect();
62
62
+
63
63
+
scored.sort_by(|a, b| b.0.partial_cmp(&a.0).unwrap_or(std::cmp::Ordering::Equal));
64
64
+
65
65
+
let results: Vec<Memory> = scored
66
66
+
.into_iter()
67
67
+
.take(k)
68
68
+
.map(|(_, id, content)| {
69
69
+
// bump hit count + recency for recalled memories
70
70
+
let _ = conn.execute(
71
71
+
"UPDATE memories SET hits = hits + 1, ts = unixepoch() WHERE id = ?1",
72
72
+
params![id],
73
73
+
);
74
74
+
Memory { content }
75
75
+
})
76
76
+
.collect();
77
77
+
78
78
+
Ok(results)
79
79
+
}
80
80
+
}
81
81
+
82
82
+
fn f32s_to_bytes(v: &[f32]) -> Vec<u8> {
83
83
+
v.iter().flat_map(|f| f.to_le_bytes()).collect()
84
84
+
}
85
85
+
86
86
+
fn bytes_to_f32s(b: &[u8]) -> Vec<f32> {
87
87
+
b.chunks_exact(4)
88
88
+
.map(|c| f32::from_le_bytes(c.try_into().unwrap()))
89
89
+
.collect()
90
90
+
}
91
91
+
92
92
+
fn cosine(a: &[f32], b: &[f32]) -> f32 {
93
93
+
if a.len() != b.len() || a.is_empty() {
94
94
+
return 0.0;
95
95
+
}
96
96
+
let dot: f32 = a.iter().zip(b).map(|(x, y)| x * y).sum();
97
97
+
let na: f32 = a.iter().map(|x| x * x).sum::<f32>().sqrt();
98
98
+
let nb: f32 = b.iter().map(|x| x * x).sum::<f32>().sqrt();
99
99
+
if na == 0.0 || nb == 0.0 {
100
100
+
0.0
101
101
+
} else {
102
102
+
dot / (na * nb)
103
103
+
}
104
104
+
}
+558
src/tui.rs
reviewed
···
1
1
+
use anyhow::Result;
2
2
+
use crossterm::{
3
3
+
event::{
4
4
+
DisableMouseCapture, EnableMouseCapture, Event, EventStream, KeyCode, KeyEventKind,
5
5
+
KeyModifiers, MouseEventKind,
6
6
+
},
7
7
+
execute,
8
8
+
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
9
9
+
};
10
10
+
use futures::{FutureExt, StreamExt};
11
11
+
use ratatui::{
12
12
+
backend::CrosstermBackend,
13
13
+
layout::{Constraint, Direction, Layout},
14
14
+
style::{Color, Modifier, Style},
15
15
+
text::{Line, Span},
16
16
+
widgets::{Block, Borders, Paragraph, Wrap},
17
17
+
Terminal,
18
18
+
};
19
19
+
use std::{io, ops::Not, time::Instant};
20
20
+
use tokio::{
21
21
+
io::{AsyncBufReadExt, AsyncWrite, AsyncWriteExt, BufReader},
22
22
+
net::UnixStream,
23
23
+
};
24
24
+
25
25
+
use crate::ipc::{sock_path, ClientMsg, ServerMsg};
26
26
+
27
27
+
// ── message model ────────────────────────────────────────────────────────────
28
28
+
29
29
+
#[derive(Default, Clone)]
30
30
+
struct Reason {
31
31
+
content: String,
32
32
+
expanded: bool,
33
33
+
done: bool,
34
34
+
}
35
35
+
36
36
+
#[derive(Clone)]
37
37
+
enum Role {
38
38
+
System,
39
39
+
User,
40
40
+
Assistant { reason: Option<Reason>, done: bool },
41
41
+
}
42
42
+
43
43
+
impl Role {
44
44
+
fn is_assistant(&self) -> bool {
45
45
+
matches!(self, Self::Assistant { .. })
46
46
+
}
47
47
+
48
48
+
fn if_assistant<F, T>(&mut self, f: F) -> Option<T>
49
49
+
where
50
50
+
F: FnOnce(&mut Option<Reason>, &mut bool) -> T,
51
51
+
{
52
52
+
match self {
53
53
+
Role::Assistant { reason, done } => Some(f(reason, done)),
54
54
+
_ => None,
55
55
+
}
56
56
+
}
57
57
+
}
58
58
+
59
59
+
#[derive(Clone)]
60
60
+
struct ChatMsg {
61
61
+
role: Role,
62
62
+
content: String,
63
63
+
expanded: bool,
64
64
+
}
65
65
+
66
66
+
impl ChatMsg {
67
67
+
fn user(content: String) -> Self {
68
68
+
Self {
69
69
+
role: Role::User,
70
70
+
content,
71
71
+
expanded: true,
72
72
+
}
73
73
+
}
74
74
+
75
75
+
fn system(content: String) -> Self {
76
76
+
Self {
77
77
+
role: Role::System,
78
78
+
content,
79
79
+
expanded: true,
80
80
+
}
81
81
+
}
82
82
+
83
83
+
fn assistant() -> Self {
84
84
+
Self {
85
85
+
role: Role::Assistant {
86
86
+
done: false,
87
87
+
reason: None,
88
88
+
},
89
89
+
content: String::new(),
90
90
+
expanded: false,
91
91
+
}
92
92
+
}
93
93
+
}
94
94
+
95
95
+
// ── app state ────────────────────────────────────────────────────────────────
96
96
+
97
97
+
struct App {
98
98
+
history: Vec<ChatMsg>,
99
99
+
scroll: usize,
100
100
+
input: String,
101
101
+
cursor: usize,
102
102
+
status: String,
103
103
+
cmd_mode: bool,
104
104
+
viewport_h: usize,
105
105
+
106
106
+
// metrics
107
107
+
turn_count: usize,
108
108
+
context_chars: usize,
109
109
+
watermark: usize,
110
110
+
stream_start: Option<Instant>,
111
111
+
stream_tokens: usize,
112
112
+
last_tps: f64,
113
113
+
}
114
114
+
115
115
+
impl App {
116
116
+
fn new() -> Self {
117
117
+
Self {
118
118
+
history: vec![],
119
119
+
scroll: 0,
120
120
+
input: String::new(),
121
121
+
cursor: 0,
122
122
+
status: String::new(),
123
123
+
cmd_mode: false,
124
124
+
viewport_h: 0,
125
125
+
turn_count: 0,
126
126
+
context_chars: 0,
127
127
+
watermark: 0,
128
128
+
stream_start: None,
129
129
+
stream_tokens: 0,
130
130
+
last_tps: 0.0,
131
131
+
}
132
132
+
}
133
133
+
134
134
+
fn push_char(&mut self, c: char) {
135
135
+
self.input.insert(self.cursor, c);
136
136
+
self.cursor += c.len_utf8();
137
137
+
self.cmd_mode = self.input.starts_with('/');
138
138
+
}
139
139
+
140
140
+
fn pop_char(&mut self) {
141
141
+
if self.cursor == 0 {
142
142
+
return;
143
143
+
}
144
144
+
let mut i = self.cursor - 1;
145
145
+
while !self.input.is_char_boundary(i) {
146
146
+
i -= 1;
147
147
+
}
148
148
+
self.input.remove(i);
149
149
+
self.cursor = i;
150
150
+
self.cmd_mode = self.input.starts_with('/');
151
151
+
}
152
152
+
153
153
+
fn take_input(&mut self) -> String {
154
154
+
self.cursor = 0;
155
155
+
self.cmd_mode = false;
156
156
+
std::mem::take(&mut self.input)
157
157
+
}
158
158
+
159
159
+
fn scroll_down(&mut self, lines: usize) {
160
160
+
self.scroll = self.scroll.saturating_sub(lines);
161
161
+
}
162
162
+
163
163
+
fn scroll_up(&mut self, lines: usize) {
164
164
+
self.scroll += lines;
165
165
+
}
166
166
+
167
167
+
// gets the last assistant message
168
168
+
fn streaming_mut(&mut self) -> Option<&mut ChatMsg> {
169
169
+
self.history
170
170
+
.last_mut()
171
171
+
.filter(|m| matches!(m.role, Role::Assistant { done: false, .. }))
172
172
+
}
173
173
+
174
174
+
fn toggle_last_think(&mut self) {
175
175
+
let Some(m) = self
176
176
+
.history
177
177
+
.iter_mut()
178
178
+
.rev()
179
179
+
.find(|m| m.role.is_assistant())
180
180
+
else {
181
181
+
return;
182
182
+
};
183
183
+
184
184
+
m.role.if_assistant(|r, _| {
185
185
+
if let Some(r) = r {
186
186
+
r.expanded = !r.expanded;
187
187
+
}
188
188
+
});
189
189
+
}
190
190
+
191
191
+
fn get_assistant_entry(&mut self) -> &mut ChatMsg {
192
192
+
if self.streaming_mut().is_none() {
193
193
+
self.history.push(ChatMsg::assistant());
194
194
+
self.stream_start = Some(Instant::now());
195
195
+
self.stream_tokens = 0;
196
196
+
}
197
197
+
self.stream_tokens += 1;
198
198
+
if let Some(start) = self.stream_start {
199
199
+
let secs = start.elapsed().as_secs_f64();
200
200
+
if secs > 0.1 {
201
201
+
self.last_tps = self.stream_tokens as f64 / secs;
202
202
+
}
203
203
+
}
204
204
+
self.streaming_mut()
205
205
+
.expect("we inserted assistant message above")
206
206
+
}
207
207
+
}
208
208
+
209
209
+
// ── command handling ─────────────────────────────────────────────────────────
210
210
+
211
211
+
enum Cmd {
212
212
+
Send(String),
213
213
+
Clear,
214
214
+
ToggleThink,
215
215
+
Help,
216
216
+
Unknown(String),
217
217
+
}
218
218
+
219
219
+
fn parse_cmd(raw: &str) -> Cmd {
220
220
+
if !raw.starts_with('/') {
221
221
+
return Cmd::Send(raw.to_string());
222
222
+
}
223
223
+
match raw[1..].splitn(2, ' ').next().unwrap_or("") {
224
224
+
"clear" | "c" => Cmd::Clear,
225
225
+
"think" | "t" => Cmd::ToggleThink,
226
226
+
"help" | "h" => Cmd::Help,
227
227
+
other => Cmd::Unknown(other.to_string()),
228
228
+
}
229
229
+
}
230
230
+
231
231
+
fn help_lines() -> &'static str {
232
232
+
"/clear (/c) clear chat history\n\
233
233
+
/think (/t) toggle last reasoning trace\n\
234
234
+
/help (/h) show this help\n\
235
235
+
pgup/dn scroll history\n\
236
236
+
ctrl+c quit"
237
237
+
}
238
238
+
239
239
+
// ── rendering ────────────────────────────────────────────────────────────────
240
240
+
241
241
+
fn render_history<'a>(history: &'a [ChatMsg]) -> Vec<Line<'a>> {
242
242
+
let mut lines: Vec<Line<'a>> = vec![];
243
243
+
let mut was_assistant = false;
244
244
+
for msg in history {
245
245
+
match &msg.role {
246
246
+
Role::System => {
247
247
+
for line in msg.content.lines() {
248
248
+
lines.push(Line::from(vec![Span::styled(
249
249
+
line,
250
250
+
Style::default()
251
251
+
.fg(Color::DarkGray)
252
252
+
.add_modifier(Modifier::DIM),
253
253
+
)]));
254
254
+
}
255
255
+
was_assistant = false;
256
256
+
}
257
257
+
Role::User => {
258
258
+
if was_assistant {
259
259
+
lines.push(Line::raw(""));
260
260
+
}
261
261
+
for (i, line) in msg.content.lines().enumerate() {
262
262
+
let prefix = if i == 0 { "you " } else { "" };
263
263
+
lines.push(Line::from(vec![
264
264
+
Span::styled(prefix, Style::default().fg(Color::Cyan)),
265
265
+
Span::raw(line),
266
266
+
]));
267
267
+
}
268
268
+
was_assistant = false;
269
269
+
}
270
270
+
Role::Assistant { reason, done } => {
271
271
+
let think_expanded = if let Some(think) = reason {
272
272
+
let think_token = think
273
273
+
.done
274
274
+
.then_some("has reasoned")
275
275
+
.unwrap_or("is reasoning...");
276
276
+
let klbr_span = Span::styled(
277
277
+
"klbr",
278
278
+
Style::default()
279
279
+
.fg(Color::Green)
280
280
+
.add_modifier(Modifier::DIM),
281
281
+
);
282
282
+
if think.expanded {
283
283
+
lines.push(Line::from(vec![
284
284
+
klbr_span,
285
285
+
Span::styled(
286
286
+
format!(" {think_token} ▾"),
287
287
+
Style::default()
288
288
+
.fg(Color::DarkGray)
289
289
+
.add_modifier(Modifier::DIM),
290
290
+
),
291
291
+
]));
292
292
+
for line in think.content.lines() {
293
293
+
lines.push(Line::from(vec![Span::styled(
294
294
+
line,
295
295
+
Style::default().fg(Color::DarkGray),
296
296
+
)]));
297
297
+
}
298
298
+
} else {
299
299
+
lines.push(Line::from(vec![
300
300
+
klbr_span,
301
301
+
Span::styled(
302
302
+
format!(" {think_token}"),
303
303
+
Style::default()
304
304
+
.fg(Color::DarkGray)
305
305
+
.add_modifier(Modifier::DIM),
306
306
+
),
307
307
+
]));
308
308
+
}
309
309
+
think.expanded
310
310
+
} else {
311
311
+
false
312
312
+
};
313
313
+
if think_expanded {
314
314
+
lines.push(Line::default());
315
315
+
}
316
316
+
for (i, line) in msg.content.lines().enumerate() {
317
317
+
let prefix = if i == 0 { "klbr " } else { "" };
318
318
+
lines.push(Line::from(vec![
319
319
+
Span::styled(prefix, Style::default().fg(Color::Green)),
320
320
+
Span::raw(line),
321
321
+
]));
322
322
+
}
323
323
+
was_assistant = true;
324
324
+
}
325
325
+
}
326
326
+
}
327
327
+
lines
328
328
+
}
329
329
+
330
330
+
// ── main ─────────────────────────────────────────────────────────────────────
331
331
+
332
332
+
pub async fn run() -> Result<()> {
333
333
+
let path = sock_path();
334
334
+
if !path.exists() {
335
335
+
tracing::error!("daemon not running, start it with `agent daemon`");
336
336
+
std::process::exit(1);
337
337
+
}
338
338
+
339
339
+
let sock = UnixStream::connect(&path)
340
340
+
.await
341
341
+
.map_err(|e| anyhow::anyhow!("could not connect: {e}"))?;
342
342
+
let (sock_rx, mut sock_tx) = sock.into_split();
343
343
+
let mut srv_lines = BufReader::new(sock_rx).lines();
344
344
+
345
345
+
enable_raw_mode()?;
346
346
+
let mut stdout = io::stdout();
347
347
+
execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
348
348
+
let mut term = Terminal::new(CrosstermBackend::new(stdout))?;
349
349
+
let mut app = App::new();
350
350
+
let mut events = EventStream::new();
351
351
+
352
352
+
let draw = |term: &mut Terminal<CrosstermBackend<io::Stdout>>, app: &mut App| -> Result<()> {
353
353
+
term.draw(|f| {
354
354
+
let area = f.area();
355
355
+
let chunks = Layout::default()
356
356
+
.direction(Direction::Vertical)
357
357
+
.constraints([
358
358
+
Constraint::Min(3),
359
359
+
Constraint::Length(3),
360
360
+
Constraint::Length(1),
361
361
+
])
362
362
+
.split(area);
363
363
+
364
364
+
let all_lines = render_history(&app.history);
365
365
+
let chat_h = chunks[0].height.saturating_sub(2) as usize;
366
366
+
app.viewport_h = chat_h;
367
367
+
let total = all_lines.len();
368
368
+
let max_scroll = total.saturating_sub(chat_h);
369
369
+
app.scroll = app.scroll.min(max_scroll);
370
370
+
let scroll_top = max_scroll.saturating_sub(app.scroll) as u16;
371
371
+
372
372
+
f.render_widget(
373
373
+
Paragraph::new(all_lines)
374
374
+
.block(Block::default().borders(Borders::ALL))
375
375
+
.wrap(Wrap { trim: false })
376
376
+
.scroll((scroll_top, 0)),
377
377
+
chunks[0],
378
378
+
);
379
379
+
380
380
+
let input_style = app
381
381
+
.cmd_mode
382
382
+
.then(|| Style::default().fg(Color::Yellow))
383
383
+
.unwrap_or_default();
384
384
+
f.render_widget(
385
385
+
Paragraph::new(app.input.as_str()).style(input_style).block(
386
386
+
Block::default()
387
387
+
.borders(Borders::ALL)
388
388
+
.title("message (/help)"),
389
389
+
),
390
390
+
chunks[1],
391
391
+
);
392
392
+
393
393
+
// status bar: left = agent status, right = metrics
394
394
+
let tps_str = (app.last_tps > 0.0)
395
395
+
.then(|| format!("{:.1} tok/s", app.last_tps))
396
396
+
.unwrap_or_default();
397
397
+
398
398
+
let ctx_pct = (app.watermark > 0)
399
399
+
.then(|| (app.context_chars as f64 / app.watermark as f64 * 100.0) as usize)
400
400
+
.unwrap_or(0);
401
401
+
402
402
+
let context_str = if app.watermark > 0 {
403
403
+
let remaining = app.watermark.saturating_sub(app.context_chars);
404
404
+
// rough estimate: ~4 chars per token average
405
405
+
// todo: fix this
406
406
+
let tokens_left = remaining / 4;
407
407
+
format!("ctx {ctx_pct}% (~{tokens_left} tok until compact)")
408
408
+
} else {
409
409
+
String::new()
410
410
+
};
411
411
+
412
412
+
let metrics = format!(
413
413
+
"{}{}(turns: {}){}",
414
414
+
tps_str
415
415
+
.is_empty()
416
416
+
.not()
417
417
+
.then(|| format!("{tps_str} "))
418
418
+
.unwrap_or_default(),
419
419
+
context_str
420
420
+
.is_empty()
421
421
+
.not()
422
422
+
.then(|| format!("{context_str} "))
423
423
+
.unwrap_or_default(),
424
424
+
app.turn_count,
425
425
+
app.status
426
426
+
.is_empty()
427
427
+
.not()
428
428
+
.then(|| format!(" {}", app.status))
429
429
+
.unwrap_or_default(),
430
430
+
);
431
431
+
432
432
+
f.render_widget(
433
433
+
Paragraph::new(metrics.as_str()).style(Style::default().fg(Color::DarkGray)),
434
434
+
chunks[2],
435
435
+
);
436
436
+
})?;
437
437
+
Ok(())
438
438
+
};
439
439
+
440
440
+
draw(&mut term, &mut app)?;
441
441
+
442
442
+
loop {
443
443
+
tokio::select! {
444
444
+
Some(ev) = events.next() => {
445
445
+
if handle_event(&mut app, ev?, &mut sock_tx).await? {
446
446
+
break;
447
447
+
}
448
448
+
},
449
449
+
Some(line) = srv_lines.next_line().map(|r| r.transpose())
450
450
+
=> handle_message(&mut app, line?)?,
451
451
+
}
452
452
+
draw(&mut term, &mut app)?;
453
453
+
}
454
454
+
455
455
+
disable_raw_mode()?;
456
456
+
execute!(
457
457
+
term.backend_mut(),
458
458
+
LeaveAlternateScreen,
459
459
+
DisableMouseCapture
460
460
+
)?;
461
461
+
Ok(())
462
462
+
}
463
463
+
464
464
+
async fn handle_event<Sock: AsyncWrite + Unpin>(
465
465
+
app: &mut App,
466
466
+
event: Event,
467
467
+
sock_tx: &mut Sock,
468
468
+
) -> Result<bool> {
469
469
+
match event {
470
470
+
Event::Key(k) if k.kind == KeyEventKind::Press => match (k.code, k.modifiers) {
471
471
+
(KeyCode::Char('c'), KeyModifiers::CONTROL) => return Ok(true),
472
472
+
(KeyCode::PageUp, _) => app.scroll_up(app.viewport_h.saturating_sub(2)),
473
473
+
(KeyCode::PageDown, _) => app.scroll_down(app.viewport_h.saturating_sub(2)),
474
474
+
(KeyCode::Enter, _) => {
475
475
+
let raw = app.take_input();
476
476
+
if raw.is_empty() {
477
477
+
return Ok(false);
478
478
+
}
479
479
+
match parse_cmd(&raw) {
480
480
+
Cmd::Clear => {
481
481
+
app.history.clear();
482
482
+
app.scroll = 0;
483
483
+
}
484
484
+
Cmd::ToggleThink => app.toggle_last_think(),
485
485
+
Cmd::Help => {
486
486
+
app.history.push(ChatMsg::system(help_lines().to_string()));
487
487
+
}
488
488
+
Cmd::Unknown(c) => {
489
489
+
app.status = format!("unknown command: /{c}");
490
490
+
}
491
491
+
Cmd::Send(msg) => {
492
492
+
app.history.push(ChatMsg::user(msg.clone()));
493
493
+
app.scroll = 0;
494
494
+
let payload = serde_json::to_string(&ClientMsg::Message {
495
495
+
source: "user".into(),
496
496
+
content: msg,
497
497
+
})? + "\n";
498
498
+
sock_tx.write_all(payload.as_bytes()).await?;
499
499
+
}
500
500
+
}
501
501
+
}
502
502
+
(KeyCode::Backspace, _) => app.pop_char(),
503
503
+
(KeyCode::Char(c), _) => app.push_char(c),
504
504
+
_ => {}
505
505
+
},
506
506
+
Event::Mouse(m) => match m.kind {
507
507
+
MouseEventKind::ScrollUp => app.scroll_up(1),
508
508
+
MouseEventKind::ScrollDown => app.scroll_down(1),
509
509
+
_ => {}
510
510
+
},
511
511
+
_ => {}
512
512
+
}
513
513
+
Ok(false)
514
514
+
}
515
515
+
516
516
+
fn handle_message(app: &mut App, line: String) -> Result<()> {
517
517
+
let msg: ServerMsg = serde_json::from_str(&line)?;
518
518
+
match msg {
519
519
+
ServerMsg::Token { content } => {
520
520
+
let entry = app.get_assistant_entry();
521
521
+
entry.content.push_str(&content);
522
522
+
// mark reasoning as done
523
523
+
entry.role.if_assistant(|r, _| {
524
524
+
if let Some(r) = r {
525
525
+
r.done = true;
526
526
+
}
527
527
+
});
528
528
+
}
529
529
+
ServerMsg::ThinkToken { content } => {
530
530
+
app.get_assistant_entry().role.if_assistant(|r, _| {
531
531
+
r.get_or_insert_with(Reason::default)
532
532
+
.content
533
533
+
.push_str(&content)
534
534
+
});
535
535
+
}
536
536
+
ServerMsg::Done => {
537
537
+
// mark assistant message as done
538
538
+
app.get_assistant_entry()
539
539
+
.role
540
540
+
.if_assistant(|_, done| *done = true);
541
541
+
app.status.clear();
542
542
+
app.stream_start = None;
543
543
+
}
544
544
+
ServerMsg::Status { content } => {
545
545
+
app.status = content;
546
546
+
}
547
547
+
ServerMsg::Metrics {
548
548
+
turn_count,
549
549
+
context_chars,
550
550
+
watermark,
551
551
+
} => {
552
552
+
app.turn_count = turn_count;
553
553
+
app.context_chars = context_chars;
554
554
+
app.watermark = watermark;
555
555
+
}
556
556
+
}
557
557
+
Ok(())
558
558
+
}