10 files changed
+8784
.agents/AGENTS.md
.agents/resources.md
new
+22
@@ -0,0 +1,22 @@
1
+# siGit: ACP-compatible coding agent
2
+
3
+Coding agent example:
4
+
5
+- https://github.com/openai/codex
6
+- https://github.com/anthropics/claude-code
7
+
8
+## ACP Resources
9
+
10
+Official page:
11
+- https://zed.dev/acp
12
+- https://blog.jetbrains.com/ai/2025/10/jetbrains-zed-open-interoperability-for-ai-coding-agents-in-your-ide/
13
+
14
+## Community discussion
15
+
16
+- https://www.reddit.com/r/ZedEditor/comments/1nt27nv/acp_mcp_llm_tool_use_im_confused/
17
+
18
+## Example ACP implementation
19
+
20
+- https://github.com/zed-industries/codex-acp
21
+- https://opencode.ai/docs/acp/
22
+-
.agents/skills/agent-client-protocol/SKILL.md
new
+295
@@ -0,0 +1,295 @@
1
+# Skill: Agent Client Protocol (ACP) — Rust Implementation
2
+
3
+## Overview
4
+
5
+ACP is a JSON-RPC 2.0 protocol over **stdio** that lets AI coding agents integrate
6
+with editors (Zed, JetBrains, Neovim, etc.). The agent is a subprocess; the editor
7
+is the client. Communication is newline-delimited JSON on stdin/stdout.
8
+
9
+Crate: `agent-client-protocol = "0.10.4"` (latest as of 2025)
10
+Docs: https://docs.rs/agent-client-protocol
11
+Spec: https://agentclientprotocol.com
12
+
13
+---
14
+
15
+## Dependency setup
16
+
17
+```toml
18
+[dependencies]
19
+agent-client-protocol = "0.10.4"
20
+async-trait = "0.1"
21
+tokio = { version = "1", features = ["rt", "macros", "io-std", "io-util", "sync"] }
22
+tokio-util = { version = "0.7", features = ["compat"] }
23
+futures = "0.3"
24
+```
25
+
26
+---
27
+
28
+## The `Agent` trait
29
+
30
+Defined as `#[async_trait::async_trait(?Send)]` — futures are `!Send`.
31
+You **must** annotate your impl the same way:
32
+
33
+```rust
34
+#[async_trait::async_trait(?Send)]
35
+impl Agent for MyAgent {
36
+ async fn initialize(&self, args: InitializeRequest) -> Result<InitializeResponse> { ... }
37
+ async fn authenticate(&self, args: AuthenticateRequest) -> Result<AuthenticateResponse> { ... }
38
+ async fn new_session(&self, args: NewSessionRequest) -> Result<NewSessionResponse> { ... }
39
+ async fn prompt(&self, args: PromptRequest) -> Result<PromptResponse> { ... }
40
+ async fn cancel(&self, args: CancelNotification) -> Result<()> { ... }
41
+ // All other methods have default impls that return Error::method_not_found()
42
+}
43
+```
44
+
45
+**Mandatory** to implement: `initialize`, `authenticate`, `new_session`, `prompt`, `cancel`.
46
+All others (`load_session`, `set_session_mode`, etc.) have default `Err(method_not_found)` impls.
47
+
48
+---
49
+
50
+## Key types and their builders
51
+
52
+All `#[non_exhaustive]` structs must be constructed via their builder methods, NOT
53
+struct literal syntax.
54
+
55
+### `InitializeRequest` / `InitializeResponse`
56
+
57
+```rust
58
+// Request field you need:
59
+args.protocol_version // type: ProtocolVersion — echo it back
60
+
61
+// Response builder:
62
+InitializeResponse::new(args.protocol_version)
63
+ .agent_info(
64
+ Implementation::new("my-agent", env!("CARGO_PKG_VERSION"))
65
+ .title("My Agent — Description"),
66
+ )
67
+ .agent_capabilities(AgentCapabilities::default())
68
+```
69
+
70
+### `AuthenticateResponse`
71
+
72
+```rust
73
+Ok(AuthenticateResponse::default()) // No auth = just return default
74
+```
75
+
76
+### `NewSessionResponse`
77
+
78
+```rust
79
+let session_id = SessionId::new(uuid::Uuid::new_v4().to_string());
80
+Ok(NewSessionResponse::new(session_id))
81
+```
82
+
83
+`SessionId` is a newtype. It implements `Clone`, `PartialEq`, `Display`, `Into<String>`,
84
+and `AsRef<str>`. Store it directly (not as `String`) so `==` comparisons work.
85
+
86
+### `PromptRequest`
87
+
88
+```rust
89
+args.session_id // type: SessionId
90
+args.prompt // type: Vec<ContentBlock>
91
+```
92
+
93
+Extract user text from the prompt:
94
+```rust
95
+let user_text: String = args.prompt.iter()
96
+ .filter_map(|block| match block {
97
+ ContentBlock::Text(t) => Some(t.text.as_str()),
98
+ _ => None,
99
+ })
100
+ .collect::<Vec<_>>()
101
+ .join("\n");
102
+```
103
+
104
+### `PromptResponse`
105
+
106
+```rust
107
+Ok(PromptResponse::new(StopReason::EndTurn))
108
+// Other reasons: MaxTokens, Cancelled, MaxTurnRequests, Refusal
109
+```
110
+
111
+### `ContentBlock`
112
+
113
+```rust
114
+// Text block — use the From impl:
115
+ContentBlock::from("some text") // impl From<T: Into<String>> for ContentBlock
116
+
117
+// Pattern-match incoming blocks:
118
+match block {
119
+ ContentBlock::Text(t) => t.text.as_str(),
120
+ ContentBlock::ResourceLink(_) => ...,
121
+ ContentBlock::Resource(_) => ...,
122
+ _ => ..., // non_exhaustive — always need wildcard
123
+}
124
+```
125
+
126
+### `ContentChunk` + `SessionUpdate` — for streaming
127
+
128
+```rust
129
+let chunk = ContentChunk::new(ContentBlock::from(delta_text));
130
+let update = SessionUpdate::AgentMessageChunk(chunk);
131
+// Other variants: UserMessageChunk, AgentThoughtChunk, ToolCall, Plan, ...
132
+```
133
+
134
+### `SessionNotification` — send streaming content to client
135
+
136
+```rust
137
+let notification = SessionNotification::new(session_id.clone(), update);
138
+// Then deliver via AgentSideConnection::session_notification()
139
+```
140
+
141
+### `Error`
142
+
143
+```rust
144
+// There is NO Error::internal(msg) method — use:
145
+agent_client_protocol::Error::new(-32603, "your message here")
146
+
147
+// For invalid params:
148
+agent_client_protocol::Error::invalid_params()
149
+
150
+// For method not found (already the trait default):
151
+agent_client_protocol::Error::method_not_found()
152
+```
153
+
154
+---
155
+
156
+## Running the agent — `AgentSideConnection`
157
+
158
+The ACP connection wraps stdin/stdout with JSON-RPC machinery.
159
+
160
+```rust
161
+use futures::future::LocalBoxFuture;
162
+use tokio_util::compat::{TokioAsyncReadCompatExt, TokioAsyncWriteCompatExt};
163
+
164
+// Adapt tokio I/O to futures AsyncRead/AsyncWrite (required by the SDK)
165
+let stdin = tokio::io::stdin().compat();
166
+let stdout = tokio::io::stdout().compat_write();
167
+
168
+// MUST run inside a LocalSet because the spawn fn takes LocalBoxFuture (!Send)
169
+let local = tokio::task::LocalSet::new();
170
+local.run_until(async move {
171
+ let (conn, io_task) = AgentSideConnection::new(
172
+ agent,
173
+ stdout,
174
+ stdin,
175
+ |fut: LocalBoxFuture<'static, ()>| {
176
+ tokio::task::spawn_local(fut); // requires LocalSet context
177
+ },
178
+ );
179
+
180
+ // ... set up forwarder task using conn ...
181
+
182
+ io_task.await // drives JSON-RPC until client disconnects
183
+}).await;
184
+```
185
+
186
+**Key facts:**
187
+- `AgentSideConnection::new` returns `(conn, io_task)` — both are needed.
188
+- `io_task` drives the actual IO. `conn` is used to send notifications.
189
+- The `spawn` closure receives `LocalBoxFuture<'static, ()>` (not Send) — use
190
+ `tokio::task::spawn_local`, not `tokio::spawn`.
191
+- The whole thing must run inside `tokio::task::LocalSet::new().run_until(...)`.
192
+
193
+---
194
+
195
+## Streaming — circular dependency pattern
196
+
197
+`Agent::prompt()` needs to send `SessionNotification` via the connection, but the
198
+connection is created *from* the agent. Solve with an **mpsc channel forwarder**:
199
+
200
+```rust
201
+// 1. Create channel BEFORE the agent
202
+let (notification_tx, mut notification_rx) = mpsc::channel::<SessionNotification>(256);
203
+
204
+// 2. Pass sender into agent
205
+let agent = MyAgent { notification_tx, ... };
206
+
207
+// 3. Create connection
208
+let (conn, io_task) = AgentSideConnection::new(agent, stdout, stdin, |fut| {
209
+ tokio::task::spawn_local(fut);
210
+});
211
+
212
+// 4. Spawn forwarder that holds `conn`
213
+tokio::task::spawn_local(async move {
214
+ while let Some(notification) = notification_rx.recv().await {
215
+ conn.session_notification(notification).await.ok();
216
+ }
217
+});
218
+
219
+// 5. Run IO
220
+io_task.await;
221
+```
222
+
223
+Inside `prompt()`, send chunks through the channel:
224
+```rust
225
+self.notification_tx.send(SessionNotification::new(
226
+ session_id.clone(),
227
+ SessionUpdate::AgentMessageChunk(ContentChunk::new(ContentBlock::from(delta))),
228
+)).await.ok(); // ignore send errors (channel closed = client gone)
229
+```
230
+
231
+---
232
+
233
+## Logging
234
+
235
+Always log to **stderr** — stdout is reserved for ACP JSON-RPC:
236
+
237
+```rust
238
+env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
239
+ .target(env_logger::Target::Stderr)
240
+ .init();
241
+```
242
+
243
+---
244
+
245
+## Complete protocol flow
246
+
247
+```
248
+Editor siGit
249
+ │ │
250
+ │── initialize ────────────────►│ (negotiate version + capabilities)
251
+ │◄─ InitializeResponse ─────────│
252
+ │ │
253
+ │── session/new ───────────────►│ (create session, load model)
254
+ │◄─ NewSessionResponse ─────────│
255
+ │ │
256
+ │── session/prompt ────────────►│ (user message)
257
+ │◄─ session/update (N times) ───│ (streaming tokens via notification)
258
+ │◄─ PromptResponse ─────────────│ (stop_reason = EndTurn when done)
259
+ │ │
260
+ │── session/cancel (optional) ──►│
261
+ │ │
262
+ │── [disconnect] ───────────────►│ (io_task future resolves → shutdown)
263
+```
264
+
265
+---
266
+
267
+## Zed configuration
268
+
269
+```json
270
+{
271
+ "agent_servers": {
272
+ "MyAgent": {
273
+ "command": "/path/to/binary",
274
+ "args": []
275
+ }
276
+ }
277
+}
278
+```
279
+
280
+---
281
+
282
+## Gotchas
283
+
284
+1. **`Error::internal()` does NOT exist** — use `Error::new(-32603, msg)`.
285
+2. **All protocol structs are `#[non_exhaustive]`** — always use builder methods,
286
+ never struct literal syntax. Always add `_ => ...` wildcard when matching.
287
+3. **`LocalBoxFuture` is `!Send`** — `tokio::spawn` won't work; use
288
+ `tokio::task::spawn_local` inside a `LocalSet`.
289
+4. **`tokio::task::spawn_local` panics outside a `LocalSet`** — wrap everything
290
+ in `LocalSet::new().run_until(async { ... }).await`.
291
+5. **`SessionId` should be stored as `SessionId`**, not converted to `String`,
292
+ so `==` comparisons work directly.
293
+6. **One session per connection is the MVP norm** — reuse the model with
294
+ `clear_history()` rather than loading it again.
295
+7. **`AgentCapabilities::default()` exists** — returns all capabilities as None/false.
\ No newline at end of file
.agents/skills/ai-assisted-coding/SKILL.md
new
+361
@@ -0,0 +1,361 @@
1
+# Skill: AI-Assisted Coding Agents — Onde Inference Integration
2
+
3
+## Overview
4
+
5
+Building a local AI coding agent in Rust using Onde Inference as the LLM backend.
6
+Onde wraps mistral.rs with a clean API for model loading, history management, and
7
+streaming inference across macOS (Metal), iOS, Android, Linux, and Windows.
8
+
9
+Crate: `onde = { path = "../onde" }` or from crates.io when published
10
+Repo: https://github.com/ondeinference/onde
11
+Docs: https://ondeinference.com
12
+
13
+---
14
+
15
+## Onde `ChatEngine` API
16
+
17
+### Construction and lifecycle
18
+
19
+```rust
20
+use onde::inference::{ChatEngine, GgufModelConfig, SamplingConfig};
21
+
22
+let engine = ChatEngine::new(); // starts unloaded
23
+engine.is_loaded().await // -> bool
24
+engine.unload_model().await // -> ()
25
+```
26
+
27
+### Loading a model
28
+
29
+```rust
30
+// Platform-aware default (Qwen 2.5 3B on macOS, 1.5B on iOS/tvOS/Android)
31
+let config = GgufModelConfig::platform_default();
32
+
33
+// Load — blocks until model is in memory and on GPU
34
+engine
35
+ .load_gguf_model(
36
+ config,
37
+ Some("You are a helpful assistant.".to_string()), // system prompt
38
+ None, // sampling config (uses SamplingConfig::default() internally)
39
+ )
40
+ .await?;
41
+
42
+// AlreadyLoaded error if called twice — check first:
43
+if !engine.is_loaded().await {
44
+ engine.load_gguf_model(...).await?;
45
+}
46
+```
47
+
48
+**Model sizes (macOS/Windows/Linux default — Qwen 2.5 3B Q4_K_M):** ~1.93 GB
49
+**Model sizes (iOS/tvOS/Android default — Qwen 2.5 1.5B Q4_K_M):** ~941 MB
50
+First run downloads from HuggingFace Hub into `~/.cache/huggingface/`.
51
+
52
+### Blocking (non-streaming) inference
53
+
54
+```rust
55
+let result = engine.send_message("What is Rust's ownership model?").await?;
56
+// result: InferenceResult
57
+println!("{}", result.text);
58
+println!("took {}", result.duration_display); // e.g. "3.2s"
59
+```
60
+
61
+`send_message` appends both the user message and assistant reply to conversation
62
+history automatically.
63
+
64
+### Streaming inference
65
+
66
+```rust
67
+let mut rx: tokio::sync::mpsc::Receiver<StreamChunk> =
68
+ engine.stream_message("Tell me a story.").await?;
69
+
70
+while let Some(chunk) = rx.recv().await {
71
+ if !chunk.delta.is_empty() {
72
+ print!("{}", chunk.delta); // partial token text
73
+ }
74
+ if chunk.done {
75
+ // chunk.finish_reason: Option<String> — e.g. "stop", "length"
76
+ break;
77
+ }
78
+}
79
+```
80
+
81
+`StreamChunk` fields:
82
+- `delta: String` — the new token(s) in this chunk
83
+- `done: bool` — true on the last chunk
84
+- `finish_reason: Option<String>` — present on final chunk only
85
+
86
+History is updated automatically after the stream completes.
87
+
88
+### One-shot generation (no history side-effects)
89
+
90
+```rust
91
+use onde::inference::ChatMessage;
92
+
93
+let result = engine.generate(
94
+ vec![ChatMessage::user("Expand: a cat in space")],
95
+ Some(SamplingConfig::deterministic()),
96
+).await?;
97
+println!("{}", result.text);
98
+// Does NOT modify conversation history
99
+```
100
+
101
+### History management
102
+
103
+```rust
104
+let history: Vec<ChatMessage> = engine.history().await;
105
+let removed: usize = engine.clear_history().await; // returns count cleared
106
+engine.push_history(ChatMessage::user("context")).await;
107
+engine.set_system_prompt("new system prompt").await;
108
+engine.clear_system_prompt().await;
109
+```
110
+
111
+### Engine status
112
+
113
+```rust
114
+let info: EngineInfo = engine.info().await;
115
+// info.status: EngineStatus (Unloaded | Loading | Ready | Generating | Error)
116
+// info.model_name: Option<String>
117
+// info.approx_memory: Option<String> e.g. "~1.93 GB"
118
+// info.history_length: u64
119
+```
120
+
121
+---
122
+
123
+## `InferenceError` variants
124
+
125
+```rust
126
+match err {
127
+ InferenceError::NoModelLoaded => { /* load model first */ }
128
+ InferenceError::AlreadyLoaded { model_name } => { /* already loaded */ }
129
+ InferenceError::ModelBuild { reason } => { /* load failure */ }
130
+ InferenceError::Inference { reason } => { /* runtime inference error */ }
131
+ InferenceError::Cancelled => { /* was cancelled */ }
132
+ InferenceError::Other { reason } => { /* unexpected */ }
133
+}
134
+```
135
+
136
+Map to ACP errors:
137
+```rust
138
+.map_err(|e| agent_client_protocol::Error::new(-32603, e.to_string()))?
139
+```
140
+
141
+---
142
+
143
+## `SamplingConfig` presets
144
+
145
+| Preset | temp | top_p | max_tokens | Use case |
146
+|--------|------|-------|------------|----------|
147
+| `SamplingConfig::default()` | 0.7 | 0.95 | 512 | General chat |
148
+| `SamplingConfig::deterministic()` | 0.0 | — | 512 | Code / reproducible |
149
+| `SamplingConfig::mobile()` | 0.7 | 0.95 | 128 | Memory-constrained |
150
+| `SamplingConfig::coding()` | 0.0 | — | 512 | Code generation |
151
+| `SamplingConfig::coding_mobile()` | 0.0 | — | 128 | Code on mobile |
152
+
153
+---
154
+
155
+## `GgufModelConfig` constructors
156
+
157
+```rust
158
+GgufModelConfig::platform_default() // auto-selects based on target_os
159
+GgufModelConfig::qwen25_1_5b() // force 1.5B
160
+GgufModelConfig::qwen25_3b() // force 3B
161
+GgufModelConfig::qwen25_coder_1_5b() // coder variant 1.5B
162
+GgufModelConfig::qwen25_coder_3b() // coder variant 3B
163
+```
164
+
165
+---
166
+
167
+## Adding onde as a Rust library dependency
168
+
169
+```toml
170
+# In your crate's Cargo.toml — onde is a path dep since it's not on crates.io yet
171
+onde = { path = "../onde" }
172
+```
173
+
174
+**Important:** `onde` declares `crate-type = ["lib", "cdylib", "staticlib"]`.
175
+When used as a Rust library dep, only the `lib` target is compiled. The
176
+`cdylib`/`staticlib` targets (used for Swift/Kotlin FFI) are not built. The
177
+`uniffi::setup_scaffolding!()` macro generates `#[no_mangle] extern "C"` symbols
178
+but these are harmless in a binary context.
179
+
180
+**The `[patch.crates-io]` in onde's Cargo.toml does NOT propagate** to dependents
181
+unless they are in the same workspace. The `sysctl` patch is only needed for
182
+watchOS; macOS/iOS/Linux work without it.
183
+
184
+**GPU feature selection is automatic** via `target_os` cfg flags in onde's
185
+Cargo.toml — you get Metal on macOS/iOS without any extra features in your crate.
186
+
187
+---
188
+
189
+## Patterns for coding agents
190
+
191
+### Single-engine, multi-session via history reset
192
+
193
+For a simple MVP where one session is active at a time:
194
+
195
+```rust
196
+struct MyAgent {
197
+ engine: Arc<ChatEngine>,
198
+ active_session: Arc<Mutex<Option<SessionId>>>,
199
+}
200
+
201
+// new_session handler:
202
+if self.engine.is_loaded().await {
203
+ self.engine.clear_history().await; // reuse model, fresh conversation
204
+} else {
205
+ self.engine
206
+ .load_gguf_model(GgufModelConfig::platform_default(), Some(SYSTEM_PROMPT.into()), None)
207
+ .await?;
208
+}
209
+```
210
+
211
+**Why:** Loading the model is expensive (seconds + GB of RAM). Reloading for each
212
+session would make the agent feel broken. `clear_history()` resets context in
213
+microseconds.
214
+
215
+### Per-session engines (multiple concurrent sessions)
216
+
217
+When you need truly isolated parallel sessions:
218
+
219
+```rust
220
+use std::collections::HashMap;
221
+
222
+struct MultiSessionAgent {
223
+ sessions: Arc<Mutex<HashMap<String, Arc<ChatEngine>>>>,
224
+}
225
+
226
+// new_session: create and load a new engine per session
227
+// prompt: look up session engine, call send_message or stream_message
228
+// CAVEAT: each engine holds a separate model copy in GPU memory — expensive!
229
+```
230
+
231
+Better approach for shared GPU memory: use `engine.generate()` (no history
232
+side-effects) with an explicitly managed message vec per session.
233
+
234
+### System prompt design for coding agents
235
+
236
+```rust
237
+const SYSTEM_PROMPT: &str = "\
238
+You are <AgentName>, an expert AI coding agent integrated into your editor \
239
+via the Agent Client Protocol. You specialize in:
240
+
241
+- Code analysis, writing, and refactoring
242
+- Bug hunting and debugging
243
+- Git workflows and commit messages
244
+- Software architecture and design patterns
245
+- Code review and best practices
246
+
247
+Be concise, precise, and practical. Write clean, idiomatic code with brief \
248
+explanations. Identify root causes when debugging. Prefer correctness over brevity.";
249
+```
250
+
251
+Key principles:
252
+- State the agent's role and name clearly (models respond better to named personas)
253
+- List specializations explicitly (influences which parts of training are activated)
254
+- Set tone expectations: "concise", "practical", "idiomatic"
255
+- Avoid verbose instruction lists — they cost tokens on every turn
256
+
257
+### Streaming tokens to ACP (connecting onde → ACP)
258
+
259
+```rust
260
+// In Agent::prompt():
261
+let mut rx = self.engine.stream_message(user_text).await
262
+ .map_err(|e| Error::new(-32603, e.to_string()))?;
263
+
264
+while let Some(chunk) = rx.recv().await {
265
+ if !chunk.delta.is_empty() {
266
+ self.notification_tx.send(
267
+ SessionNotification::new(
268
+ session_id.clone(),
269
+ SessionUpdate::AgentMessageChunk(
270
+ ContentChunk::new(ContentBlock::from(chunk.delta)),
271
+ ),
272
+ )
273
+ ).await.ok(); // .ok() — ignore if forwarder is gone
274
+ }
275
+ if chunk.done { break; }
276
+}
277
+
278
+Ok(PromptResponse::new(StopReason::EndTurn))
279
+```
280
+
281
+The `PromptResponse` is returned AFTER the stream finishes. The client receives
282
+streaming tokens via `session/update` notifications while blocking on the
283
+`session/prompt` response.
284
+
285
+---
286
+
287
+## Extracting text from ACP `PromptRequest`
288
+
289
+ACP prompts can contain text, images, resource links, etc. For a text-only
290
+coding agent:
291
+
292
+```rust
293
+let user_text: String = args.prompt.iter()
294
+ .filter_map(|block| match block {
295
+ ContentBlock::Text(t) => Some(t.text.as_str()),
296
+ // Skip images, resource links, embedded resources for now
297
+ _ => None,
298
+ })
299
+ .collect::<Vec<_>>()
300
+ .join("\n");
301
+```
302
+
303
+For future resource context (e.g. open files provided by Zed):
304
+```rust
305
+ContentBlock::Resource(r) => match &r.resource {
306
+ EmbeddedResourceResource::Text(t) => Some(t.text.as_str()),
307
+ _ => None,
308
+},
309
+```
310
+
311
+---
312
+
313
+## `ChatEngine` threading model
314
+
315
+- Internally uses `Arc<tokio::sync::Mutex<Option<LoadedModel>>>` — `Send + Sync`.
316
+- Safe to wrap in `Arc<ChatEngine>` and share across tasks.
317
+- `stream_message()` spawns a `tokio::spawn` background task internally — the
318
+ mistralrs model must be `Send`, which it is on all supported platforms.
319
+- Calling `stream_message()` from a `!Send` future (e.g. inside a `LocalSet`) is
320
+ fine — the future itself doesn't hold a `!Send` value across `.await`.
321
+
322
+---
323
+
324
+## First-run model download
325
+
326
+On first use, onde downloads the GGUF model from HuggingFace Hub:
327
+- Requires internet connectivity
328
+- Cached at `~/.cache/huggingface/` (or `HF_HUB_CACHE` env var)
329
+- `HF_TOKEN` env var needed for gated models (public Qwen models don't need it)
330
+- Subsequent runs load from disk cache — fast
331
+
332
+For sandboxed environments (iOS, tvOS, Android):
333
+- Set `HF_HOME` and `HF_HUB_CACHE` to a path inside the app container
334
+- Do this BEFORE calling any ChatEngine method
335
+- See `onde/docs/swift-package.md` for `setupInferenceEnvironment()` pattern
336
+
337
+---
338
+
339
+## Common mistakes
340
+
341
+1. **Calling `load_gguf_model` twice** without checking `is_loaded()` first →
342
+ `InferenceError::AlreadyLoaded`. Always guard with `is_loaded().await`.
343
+
344
+2. **Blocking on the stream after the channel is closed** → the stream naturally
345
+ ends when the `done` flag is true. Don't `recv()` after `done`.
346
+
347
+3. **Losing `StreamChunk` deltas** when `delta` is empty (whitespace tokens) →
348
+ always check `!chunk.delta.is_empty()` before sending to avoid empty
349
+ notifications that waste bandwidth.
350
+
351
+4. **Sharing one `ChatEngine` across parallel prompts** without coordination →
352
+ the internal Mutex serializes inference, so concurrent prompts queue up.
353
+ Design for sequential access per engine instance.
354
+
355
+5. **Using `SamplingConfig::default()` for code generation** → prefer
356
+ `SamplingConfig::coding()` (deterministic, temp=0) for more reliable code output.
357
+
358
+6. **Forgetting that `generate()` doesn't update history** — use it for
359
+ one-shot enhancements (prompt expansion, code review) that shouldn't pollute
360
+ the main conversation. Use `send_message()` / `stream_message()` for the
361
+ primary turn loop.
\ No newline at end of file
.gitignore
new
+1
@@ -0,0 +1 @@
1
+/target
Cargo.lock
new
+7688
@@ -0,0 +1,7688 @@
1
+# This file is automatically @generated by Cargo.
2
+# It is not intended for manual editing.
3
+version = 4
4
+
5
+[[package]]
6
+name = "Inflector"
7
+version = "0.11.4"
8
+source = "registry+https://github.com/rust-lang/crates.io-index"
9
+checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
10
+dependencies = [
11
+ "lazy_static",
12
+ "regex",
13
+]
14
+
15
+[[package]]
16
+name = "adler2"
17
+version = "2.0.1"
18
+source = "registry+https://github.com/rust-lang/crates.io-index"
19
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
20
+
21
+[[package]]
22
+name = "agent-client-protocol"
23
+version = "0.10.4"
24
+source = "registry+https://github.com/rust-lang/crates.io-index"
25
+checksum = "10eeef5e80864f9c3c148a3f395c3e35a66d37ec7561c7845b2bffae8e841759"
26
+dependencies = [
27
+ "agent-client-protocol-schema",
28
+ "anyhow",
29
+ "async-broadcast",
30
+ "async-trait",
31
+ "derive_more",
32
+ "futures",
33
+ "log",
34
+ "serde",
35
+ "serde_json",
36
+]
37
+
38
+[[package]]
39
+name = "agent-client-protocol-schema"
40
+version = "0.11.4"
41
+source = "registry+https://github.com/rust-lang/crates.io-index"
42
+checksum = "ca68e7e55681ce56546c0cecc6bc8f20493d24b44c6d93ec46174f310730bba2"
43
+dependencies = [
44
+ "anyhow",
45
+ "derive_more",
46
+ "schemars 1.2.1",
47
+ "serde",
48
+ "serde_json",
49
+ "strum 0.28.0",
50
+]
51
+
52
+[[package]]
53
+name = "ahash"
54
+version = "0.8.12"
55
+source = "registry+https://github.com/rust-lang/crates.io-index"
56
+checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
57
+dependencies = [
58
+ "cfg-if",
59
+ "getrandom 0.3.4",
60
+ "once_cell",
61
+ "serde",
62
+ "version_check",
63
+ "zerocopy",
64
+]
65
+
66
+[[package]]
67
+name = "aho-corasick"
68
+version = "1.1.4"
69
+source = "registry+https://github.com/rust-lang/crates.io-index"
70
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
71
+dependencies = [
72
+ "memchr",
73
+]
74
+
75
+[[package]]
76
+name = "akin"
77
+version = "0.4.0"
78
+source = "registry+https://github.com/rust-lang/crates.io-index"
79
+checksum = "1763692fc1416554cf051efc56a3de5595eca47299d731cc5c2b583adf8b4d2f"
80
+
81
+[[package]]
82
+name = "aligned"
83
+version = "0.4.3"
84
+source = "registry+https://github.com/rust-lang/crates.io-index"
85
+checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685"
86
+dependencies = [
87
+ "as-slice",
88
+]
89
+
90
+[[package]]
91
+name = "aligned-vec"
92
+version = "0.6.4"
93
+source = "registry+https://github.com/rust-lang/crates.io-index"
94
+checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b"
95
+dependencies = [
96
+ "equator",
97
+]
98
+
99
+[[package]]
100
+name = "allocator-api2"
101
+version = "0.2.21"
102
+source = "registry+https://github.com/rust-lang/crates.io-index"
103
+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
104
+
105
+[[package]]
106
+name = "android_system_properties"
107
+version = "0.1.5"
108
+source = "registry+https://github.com/rust-lang/crates.io-index"
109
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
110
+dependencies = [
111
+ "libc",
112
+]
113
+
114
+[[package]]
115
+name = "annotate-snippets"
116
+version = "0.12.15"
117
+source = "registry+https://github.com/rust-lang/crates.io-index"
118
+checksum = "92570a3f9c98e7e84df84b71d0965ac99b1871fcd75a3773a3bd1bad13f64cf7"
119
+dependencies = [
120
+ "anstyle",
121
+ "memchr",
122
+ "unicode-width 0.2.2",
123
+]
124
+
125
+[[package]]
126
+name = "ansi_term"
127
+version = "0.12.1"
128
+source = "registry+https://github.com/rust-lang/crates.io-index"
129
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
130
+dependencies = [
131
+ "winapi",
132
+]
133
+
134
+[[package]]
135
+name = "anstream"
136
+version = "1.0.0"
137
+source = "registry+https://github.com/rust-lang/crates.io-index"
138
+checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
139
+dependencies = [
140
+ "anstyle",
141
+ "anstyle-parse",
142
+ "anstyle-query",
143
+ "anstyle-wincon",
144
+ "colorchoice",
145
+ "is_terminal_polyfill",
146
+ "utf8parse",
147
+]
148
+
149
+[[package]]
150
+name = "anstyle"
151
+version = "1.0.14"
152
+source = "registry+https://github.com/rust-lang/crates.io-index"
153
+checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
154
+
155
+[[package]]
156
+name = "anstyle-parse"
157
+version = "1.0.0"
158
+source = "registry+https://github.com/rust-lang/crates.io-index"
159
+checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
160
+dependencies = [
161
+ "utf8parse",
162
+]
163
+
164
+[[package]]
165
+name = "anstyle-query"
166
+version = "1.1.5"
167
+source = "registry+https://github.com/rust-lang/crates.io-index"
168
+checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
169
+dependencies = [
170
+ "windows-sys 0.61.2",
171
+]
172
+
173
+[[package]]
174
+name = "anstyle-wincon"
175
+version = "3.0.11"
176
+source = "registry+https://github.com/rust-lang/crates.io-index"
177
+checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
178
+dependencies = [
179
+ "anstyle",
180
+ "once_cell_polyfill",
181
+ "windows-sys 0.61.2",
182
+]
183
+
184
+[[package]]
185
+name = "anyhow"
186
+version = "1.0.102"
187
+source = "registry+https://github.com/rust-lang/crates.io-index"
188
+checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
189
+
190
+[[package]]
191
+name = "apodize"
192
+version = "1.0.0"
193
+source = "registry+https://github.com/rust-lang/crates.io-index"
194
+checksum = "fca387cdc0a1f9c7a7c26556d584aa2d07fc529843082e4861003cde4ab914ed"
195
+
196
+[[package]]
197
+name = "approx"
198
+version = "0.5.1"
199
+source = "registry+https://github.com/rust-lang/crates.io-index"
200
+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
201
+dependencies = [
202
+ "num-traits",
203
+]
204
+
205
+[[package]]
206
+name = "arbitrary"
207
+version = "1.4.2"
208
+source = "registry+https://github.com/rust-lang/crates.io-index"
209
+checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
210
+
211
+[[package]]
212
+name = "arg_enum_proc_macro"
213
+version = "0.3.4"
214
+source = "registry+https://github.com/rust-lang/crates.io-index"
215
+checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
216
+dependencies = [
217
+ "proc-macro2",
218
+ "quote",
219
+ "syn 2.0.117",
220
+]
221
+
222
+[[package]]
223
+name = "arraydeque"
224
+version = "0.5.1"
225
+source = "registry+https://github.com/rust-lang/crates.io-index"
226
+checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236"
227
+
228
+[[package]]
229
+name = "arrayvec"
230
+version = "0.7.6"
231
+source = "registry+https://github.com/rust-lang/crates.io-index"
232
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
233
+
234
+[[package]]
235
+name = "as-any"
236
+version = "0.3.2"
237
+source = "registry+https://github.com/rust-lang/crates.io-index"
238
+checksum = "b0f477b951e452a0b6b4a10b53ccd569042d1d01729b519e02074a9c0958a063"
239
+
240
+[[package]]
241
+name = "as-slice"
242
+version = "0.2.1"
243
+source = "registry+https://github.com/rust-lang/crates.io-index"
244
+checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516"
245
+dependencies = [
246
+ "stable_deref_trait",
247
+]
248
+
249
+[[package]]
250
+name = "askama"
251
+version = "0.14.0"
252
+source = "registry+https://github.com/rust-lang/crates.io-index"
253
+checksum = "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4"
254
+dependencies = [
255
+ "askama_derive",
256
+ "itoa",
257
+ "percent-encoding",
258
+ "serde",
259
+ "serde_json",
260
+]
261
+
262
+[[package]]
263
+name = "askama_derive"
264
+version = "0.14.0"
265
+source = "registry+https://github.com/rust-lang/crates.io-index"
266
+checksum = "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f"
267
+dependencies = [
268
+ "askama_parser",
269
+ "basic-toml",
270
+ "memchr",
271
+ "proc-macro2",
272
+ "quote",
273
+ "rustc-hash 2.1.2",
274
+ "serde",
275
+ "serde_derive",
276
+ "syn 2.0.117",
277
+]
278
+
279
+[[package]]
280
+name = "askama_parser"
281
+version = "0.14.0"
282
+source = "registry+https://github.com/rust-lang/crates.io-index"
283
+checksum = "d6ab5630b3d5eaf232620167977f95eb51f3432fc76852328774afbd242d4358"
284
+dependencies = [
285
+ "memchr",
286
+ "serde",
287
+ "serde_derive",
288
+ "winnow 0.7.15",
289
+]
290
+
291
+[[package]]
292
+name = "async-broadcast"
293
+version = "0.7.2"
294
+source = "registry+https://github.com/rust-lang/crates.io-index"
295
+checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
296
+dependencies = [
297
+ "event-listener",
298
+ "event-listener-strategy",
299
+ "futures-core",
300
+ "pin-project-lite",
301
+]
302
+
303
+[[package]]
304
+name = "async-compat"
305
+version = "0.2.5"
306
+source = "registry+https://github.com/rust-lang/crates.io-index"
307
+checksum = "a1ba85bc55464dcbf728b56d97e119d673f4cf9062be330a9a26f3acf504a590"
308
+dependencies = [
309
+ "futures-core",
310
+ "futures-io",
311
+ "once_cell",
312
+ "pin-project-lite",
313
+ "tokio",
314
+]
315
+
316
+[[package]]
317
+name = "async-trait"
318
+version = "0.1.89"
319
+source = "registry+https://github.com/rust-lang/crates.io-index"
320
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
321
+dependencies = [
322
+ "proc-macro2",
323
+ "quote",
324
+ "syn 2.0.117",
325
+]
326
+
327
+[[package]]
328
+name = "atomic-waker"
329
+version = "1.1.2"
330
+source = "registry+https://github.com/rust-lang/crates.io-index"
331
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
332
+
333
+[[package]]
334
+name = "atty"
335
+version = "0.2.14"
336
+source = "registry+https://github.com/rust-lang/crates.io-index"
337
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
338
+dependencies = [
339
+ "hermit-abi 0.1.19",
340
+ "libc",
341
+ "winapi",
342
+]
343
+
344
+[[package]]
345
+name = "autocfg"
346
+version = "1.5.0"
347
+source = "registry+https://github.com/rust-lang/crates.io-index"
348
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
349
+
350
+[[package]]
351
+name = "av-scenechange"
352
+version = "0.14.1"
353
+source = "registry+https://github.com/rust-lang/crates.io-index"
354
+checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394"
355
+dependencies = [
356
+ "aligned",
357
+ "anyhow",
358
+ "arg_enum_proc_macro",
359
+ "arrayvec",
360
+ "log",
361
+ "num-rational",
362
+ "num-traits",
363
+ "pastey",
364
+ "rayon",
365
+ "thiserror 2.0.18",
366
+ "v_frame",
367
+ "y4m",
368
+]
369
+
370
+[[package]]
371
+name = "av1-grain"
372
+version = "0.2.5"
373
+source = "registry+https://github.com/rust-lang/crates.io-index"
374
+checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8"
375
+dependencies = [
376
+ "anyhow",
377
+ "arrayvec",
378
+ "log",
379
+ "nom 8.0.0",
380
+ "num-rational",
381
+ "v_frame",
382
+]
383
+
384
+[[package]]
385
+name = "avif-serialize"
386
+version = "0.8.8"
387
+source = "registry+https://github.com/rust-lang/crates.io-index"
388
+checksum = "375082f007bd67184fb9c0374614b29f9aaa604ec301635f72338bb65386a53d"
389
+dependencies = [
390
+ "arrayvec",
391
+]
392
+
393
+[[package]]
394
+name = "aws-lc-rs"
395
+version = "1.16.2"
396
+source = "registry+https://github.com/rust-lang/crates.io-index"
397
+checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc"
398
+dependencies = [
399
+ "aws-lc-sys",
400
+ "zeroize",
401
+]
402
+
403
+[[package]]
404
+name = "aws-lc-sys"
405
+version = "0.39.1"
406
+source = "registry+https://github.com/rust-lang/crates.io-index"
407
+checksum = "83a25cf98105baa966497416dbd42565ce3a8cf8dbfd59803ec9ad46f3126399"
408
+dependencies = [
409
+ "cc",
410
+ "cmake",
411
+ "dunce",
412
+ "fs_extra",
413
+]
414
+
415
+[[package]]
416
+name = "base64"
417
+version = "0.13.1"
418
+source = "registry+https://github.com/rust-lang/crates.io-index"
419
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
420
+
421
+[[package]]
422
+name = "base64"
423
+version = "0.22.1"
424
+source = "registry+https://github.com/rust-lang/crates.io-index"
425
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
426
+
427
+[[package]]
428
+name = "basic-toml"
429
+version = "0.1.10"
430
+source = "registry+https://github.com/rust-lang/crates.io-index"
431
+checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a"
432
+dependencies = [
433
+ "serde",
434
+]
435
+
436
+[[package]]
437
+name = "bit-set"
438
+version = "0.5.3"
439
+source = "registry+https://github.com/rust-lang/crates.io-index"
440
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
441
+dependencies = [
442
+ "bit-vec 0.6.3",
443
+]
444
+
445
+[[package]]
446
+name = "bit-set"
447
+version = "0.8.0"
448
+source = "registry+https://github.com/rust-lang/crates.io-index"
449
+checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
450
+dependencies = [
451
+ "bit-vec 0.8.0",
452
+]
453
+
454
+[[package]]
455
+name = "bit-vec"
456
+version = "0.6.3"
457
+source = "registry+https://github.com/rust-lang/crates.io-index"
458
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
459
+
460
+[[package]]
461
+name = "bit-vec"
462
+version = "0.8.0"
463
+source = "registry+https://github.com/rust-lang/crates.io-index"
464
+checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
465
+
466
+[[package]]
467
+name = "bit_field"
468
+version = "0.10.3"
469
+source = "registry+https://github.com/rust-lang/crates.io-index"
470
+checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
471
+
472
+[[package]]
473
+name = "bitflags"
474
+version = "1.3.2"
475
+source = "registry+https://github.com/rust-lang/crates.io-index"
476
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
477
+
478
+[[package]]
479
+name = "bitflags"
480
+version = "2.11.0"
481
+source = "registry+https://github.com/rust-lang/crates.io-index"
482
+checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
483
+
484
+[[package]]
485
+name = "bitstream-io"
486
+version = "4.9.0"
487
+source = "registry+https://github.com/rust-lang/crates.io-index"
488
+checksum = "60d4bd9d1db2c6bdf285e223a7fa369d5ce98ec767dec949c6ca62863ce61757"
489
+dependencies = [
490
+ "core2",
491
+]
492
+
493
+[[package]]
494
+name = "block"
495
+version = "0.1.6"
496
+source = "registry+https://github.com/rust-lang/crates.io-index"
497
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
498
+
499
+[[package]]
500
+name = "block-buffer"
501
+version = "0.10.4"
502
+source = "registry+https://github.com/rust-lang/crates.io-index"
503
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
504
+dependencies = [
505
+ "generic-array",
506
+]
507
+
508
+[[package]]
509
+name = "block2"
510
+version = "0.6.2"
511
+source = "registry+https://github.com/rust-lang/crates.io-index"
512
+checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
513
+dependencies = [
514
+ "objc2",
515
+]
516
+
517
+[[package]]
518
+name = "bm25"
519
+version = "2.3.2"
520
+source = "registry+https://github.com/rust-lang/crates.io-index"
521
+checksum = "1cbd8ffdfb7b4c2ff038726178a780a94f90525ed0ad264c0afaa75dd8c18a64"
522
+dependencies = [
523
+ "cached",
524
+ "deunicode",
525
+ "fxhash",
526
+ "rust-stemmers",
527
+ "stop-words",
528
+ "unicode-segmentation",
529
+]
530
+
531
+[[package]]
532
+name = "bstr"
533
+version = "1.12.1"
534
+source = "registry+https://github.com/rust-lang/crates.io-index"
535
+checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"
536
+dependencies = [
537
+ "memchr",
538
+ "regex-automata",
539
+ "serde",
540
+]
541
+
542
+[[package]]
543
+name = "built"
544
+version = "0.8.0"
545
+source = "registry+https://github.com/rust-lang/crates.io-index"
546
+checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64"
547
+
548
+[[package]]
549
+name = "bumpalo"
550
+version = "3.20.2"
551
+source = "registry+https://github.com/rust-lang/crates.io-index"
552
+checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
553
+
554
+[[package]]
555
+name = "bytemuck"
556
+version = "1.25.0"
557
+source = "registry+https://github.com/rust-lang/crates.io-index"
558
+checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
559
+dependencies = [
560
+ "bytemuck_derive",
561
+]
562
+
563
+[[package]]
564
+name = "bytemuck_derive"
565
+version = "1.10.2"
566
+source = "registry+https://github.com/rust-lang/crates.io-index"
567
+checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
568
+dependencies = [
569
+ "proc-macro2",
570
+ "quote",
571
+ "syn 2.0.117",
572
+]
573
+
574
+[[package]]
575
+name = "byteorder"
576
+version = "1.5.0"
577
+source = "registry+https://github.com/rust-lang/crates.io-index"
578
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
579
+
580
+[[package]]
581
+name = "byteorder-lite"
582
+version = "0.1.0"
583
+source = "registry+https://github.com/rust-lang/crates.io-index"
584
+checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
585
+
586
+[[package]]
587
+name = "bytes"
588
+version = "1.11.1"
589
+source = "registry+https://github.com/rust-lang/crates.io-index"
590
+checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
591
+
592
+[[package]]
593
+name = "cached"
594
+version = "0.56.0"
595
+source = "registry+https://github.com/rust-lang/crates.io-index"
596
+checksum = "801927ee168e17809ab8901d9f01f700cd7d8d6a6527997fee44e4b0327a253c"
597
+dependencies = [
598
+ "ahash",
599
+ "cached_proc_macro",
600
+ "cached_proc_macro_types",
601
+ "hashbrown 0.15.5",
602
+ "once_cell",
603
+ "thiserror 2.0.18",
604
+ "web-time",
605
+]
606
+
607
+[[package]]
608
+name = "cached_proc_macro"
609
+version = "0.25.0"
610
+source = "registry+https://github.com/rust-lang/crates.io-index"
611
+checksum = "9225bdcf4e4a9a4c08bf16607908eb2fbf746828d5e0b5e019726dbf6571f201"
612
+dependencies = [
613
+ "darling 0.20.11",
614
+ "proc-macro2",
615
+ "quote",
616
+ "syn 2.0.117",
617
+]
618
+
619
+[[package]]
620
+name = "cached_proc_macro_types"
621
+version = "0.1.1"
622
+source = "registry+https://github.com/rust-lang/crates.io-index"
623
+checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0"
624
+
625
+[[package]]
626
+name = "camino"
627
+version = "1.2.2"
628
+source = "registry+https://github.com/rust-lang/crates.io-index"
629
+checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48"
630
+dependencies = [
631
+ "serde_core",
632
+]
633
+
634
+[[package]]
635
+name = "candle-core"
636
+version = "0.10.2"
637
+source = "registry+https://github.com/rust-lang/crates.io-index"
638
+checksum = "6bd9895436c1ba5dc1037a19935d084b838db066ff4e15ef7dded020b7c12a4a"
639
+dependencies = [
640
+ "byteorder",
641
+ "candle-metal-kernels",
642
+ "candle-ug",
643
+ "float8",
644
+ "gemm 0.19.0",
645
+ "half",
646
+ "libm",
647
+ "memmap2",
648
+ "num-traits",
649
+ "num_cpus",
650
+ "objc2-foundation",
651
+ "objc2-metal",
652
+ "rand 0.9.3",
653
+ "rand_distr 0.5.1",
654
+ "rayon",
655
+ "safetensors 0.7.0",
656
+ "thiserror 2.0.18",
657
+ "tokenizers 0.22.2",
658
+ "yoke 0.8.2",
659
+ "zip",
660
+]
661
+
662
+[[package]]
663
+name = "candle-metal-kernels"
664
+version = "0.10.2"
665
+source = "registry+https://github.com/rust-lang/crates.io-index"
666
+checksum = "4b6b5a4cae6b4e1ab0efcee4dc05272d11b374a3d1ba121b3a961e36be54ab60"
667
+dependencies = [
668
+ "half",
669
+ "objc2",
670
+ "objc2-foundation",
671
+ "objc2-metal",
672
+ "once_cell",
673
+ "thiserror 2.0.18",
674
+ "tracing",
675
+]
676
+
677
+[[package]]
678
+name = "candle-nn"
679
+version = "0.10.2"
680
+source = "registry+https://github.com/rust-lang/crates.io-index"
681
+checksum = "a9317a09d6530b758990ed7f625ac69ff43653bc9ee28b0464644ad1169ada87"
682
+dependencies = [
683
+ "candle-core",
684
+ "candle-metal-kernels",
685
+ "half",
686
+ "libc",
687
+ "num-traits",
688
+ "objc2-metal",
689
+ "rayon",
690
+ "safetensors 0.7.0",
691
+ "serde",
692
+ "thiserror 2.0.18",
693
+]
694
+
695
+[[package]]
696
+name = "candle-ug"
697
+version = "0.10.2"
698
+source = "registry+https://github.com/rust-lang/crates.io-index"
699
+checksum = "ca0fc3167cbc99c8ec1be618cb620aa21dca95038f118c3579a79370e3dc5f77"
700
+dependencies = [
701
+ "ug",
702
+ "ug-metal",
703
+]
704
+
705
+[[package]]
706
+name = "cargo-platform"
707
+version = "0.1.9"
708
+source = "registry+https://github.com/rust-lang/crates.io-index"
709
+checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"
710
+dependencies = [
711
+ "serde",
712
+]
713
+
714
+[[package]]
715
+name = "cargo_metadata"
716
+version = "0.19.2"
717
+source = "registry+https://github.com/rust-lang/crates.io-index"
718
+checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
719
+dependencies = [
720
+ "camino",
721
+ "cargo-platform",
722
+ "semver",
723
+ "serde",
724
+ "serde_json",
725
+ "thiserror 2.0.18",
726
+]
727
+
728
+[[package]]
729
+name = "castaway"
730
+version = "0.2.4"
731
+source = "registry+https://github.com/rust-lang/crates.io-index"
732
+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
733
+dependencies = [
734
+ "rustversion",
735
+]
736
+
737
+[[package]]
738
+name = "cc"
739
+version = "1.2.60"
740
+source = "registry+https://github.com/rust-lang/crates.io-index"
741
+checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20"
742
+dependencies = [
743
+ "find-msvc-tools",
744
+ "jobserver",
745
+ "libc",
746
+ "shlex",
747
+]
748
+
749
+[[package]]
750
+name = "cesu8"
751
+version = "1.1.0"
752
+source = "registry+https://github.com/rust-lang/crates.io-index"
753
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
754
+
755
+[[package]]
756
+name = "cfg-if"
757
+version = "1.0.4"
758
+source = "registry+https://github.com/rust-lang/crates.io-index"
759
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
760
+
761
+[[package]]
762
+name = "cfg_aliases"
763
+version = "0.2.1"
764
+source = "registry+https://github.com/rust-lang/crates.io-index"
765
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
766
+
767
+[[package]]
768
+name = "cfgrammar"
769
+version = "0.14.1"
770
+source = "registry+https://github.com/rust-lang/crates.io-index"
771
+checksum = "3efdd8f0bddcc9e33f4a664d0f28bc4e51cd5367c16284087a95313104371865"
772
+dependencies = [
773
+ "indexmap 2.14.0",
774
+ "num-traits",
775
+ "proc-macro2",
776
+ "quote",
777
+ "regex",
778
+ "vob",
779
+]
780
+
781
+[[package]]
782
+name = "chrono"
783
+version = "0.4.44"
784
+source = "registry+https://github.com/rust-lang/crates.io-index"
785
+checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0"
786
+dependencies = [
787
+ "iana-time-zone",
788
+ "js-sys",
789
+ "num-traits",
790
+ "serde",
791
+ "wasm-bindgen",
792
+ "windows-link 0.2.1",
793
+]
794
+
795
+[[package]]
796
+name = "clap"
797
+version = "2.34.0"
798
+source = "registry+https://github.com/rust-lang/crates.io-index"
799
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
800
+dependencies = [
801
+ "ansi_term",
802
+ "atty",
803
+ "bitflags 1.3.2",
804
+ "strsim 0.8.0",
805
+ "textwrap 0.11.0",
806
+ "unicode-width 0.1.14",
807
+ "vec_map",
808
+]
809
+
810
+[[package]]
811
+name = "clap"
812
+version = "4.6.0"
813
+source = "registry+https://github.com/rust-lang/crates.io-index"
814
+checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351"
815
+dependencies = [
816
+ "clap_builder",
817
+ "clap_derive",
818
+]
819
+
820
+[[package]]
821
+name = "clap_builder"
822
+version = "4.6.0"
823
+source = "registry+https://github.com/rust-lang/crates.io-index"
824
+checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
825
+dependencies = [
826
+ "anstream",
827
+ "anstyle",
828
+ "clap_lex",
829
+ "strsim 0.11.1",
830
+ "terminal_size",
831
+]
832
+
833
+[[package]]
834
+name = "clap_derive"
835
+version = "4.6.0"
836
+source = "registry+https://github.com/rust-lang/crates.io-index"
837
+checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a"
838
+dependencies = [
839
+ "heck 0.5.0",
840
+ "proc-macro2",
841
+ "quote",
842
+ "syn 2.0.117",
843
+]
844
+
845
+[[package]]
846
+name = "clap_lex"
847
+version = "1.1.0"
848
+source = "registry+https://github.com/rust-lang/crates.io-index"
849
+checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
850
+
851
+[[package]]
852
+name = "cmake"
853
+version = "0.1.58"
854
+source = "registry+https://github.com/rust-lang/crates.io-index"
855
+checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
856
+dependencies = [
857
+ "cc",
858
+]
859
+
860
+[[package]]
861
+name = "color_quant"
862
+version = "1.1.0"
863
+source = "registry+https://github.com/rust-lang/crates.io-index"
864
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
865
+
866
+[[package]]
867
+name = "colorchoice"
868
+version = "1.0.5"
869
+source = "registry+https://github.com/rust-lang/crates.io-index"
870
+checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
871
+
872
+[[package]]
873
+name = "combine"
874
+version = "4.6.7"
875
+source = "registry+https://github.com/rust-lang/crates.io-index"
876
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
877
+dependencies = [
878
+ "bytes",
879
+ "memchr",
880
+]
881
+
882
+[[package]]
883
+name = "compact_str"
884
+version = "0.9.0"
885
+source = "registry+https://github.com/rust-lang/crates.io-index"
886
+checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
887
+dependencies = [
888
+ "castaway",
889
+ "cfg-if",
890
+ "itoa",
891
+ "rustversion",
892
+ "ryu",
893
+ "serde",
894
+ "static_assertions",
895
+]
896
+
897
+[[package]]
898
+name = "concurrent-queue"
899
+version = "2.5.0"
900
+source = "registry+https://github.com/rust-lang/crates.io-index"
901
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
902
+dependencies = [
903
+ "crossbeam-utils",
904
+]
905
+
906
+[[package]]
907
+name = "console"
908
+version = "0.15.11"
909
+source = "registry+https://github.com/rust-lang/crates.io-index"
910
+checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
911
+dependencies = [
912
+ "encode_unicode",
913
+ "libc",
914
+ "once_cell",
915
+ "unicode-width 0.2.2",
916
+ "windows-sys 0.59.0",
917
+]
918
+
919
+[[package]]
920
+name = "console"
921
+version = "0.16.3"
922
+source = "registry+https://github.com/rust-lang/crates.io-index"
923
+checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87"
924
+dependencies = [
925
+ "encode_unicode",
926
+ "libc",
927
+ "unicode-width 0.2.2",
928
+ "windows-sys 0.61.2",
929
+]
930
+
931
+[[package]]
932
+name = "convert_case"
933
+version = "0.6.0"
934
+source = "registry+https://github.com/rust-lang/crates.io-index"
935
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
936
+dependencies = [
937
+ "unicode-segmentation",
938
+]
939
+
940
+[[package]]
941
+name = "convert_case"
942
+version = "0.10.0"
943
+source = "registry+https://github.com/rust-lang/crates.io-index"
944
+checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9"
945
+dependencies = [
946
+ "unicode-segmentation",
947
+]
948
+
949
+[[package]]
950
+name = "core-foundation"
951
+version = "0.9.4"
952
+source = "registry+https://github.com/rust-lang/crates.io-index"
953
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
954
+dependencies = [
955
+ "core-foundation-sys",
956
+ "libc",
957
+]
958
+
959
+[[package]]
960
+name = "core-foundation"
961
+version = "0.10.1"
962
+source = "registry+https://github.com/rust-lang/crates.io-index"
963
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
964
+dependencies = [
965
+ "core-foundation-sys",
966
+ "libc",
967
+]
968
+
969
+[[package]]
970
+name = "core-foundation-sys"
971
+version = "0.8.7"
972
+source = "registry+https://github.com/rust-lang/crates.io-index"
973
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
974
+
975
+[[package]]
976
+name = "core-graphics-types"
977
+version = "0.1.3"
978
+source = "registry+https://github.com/rust-lang/crates.io-index"
979
+checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
980
+dependencies = [
981
+ "bitflags 1.3.2",
982
+ "core-foundation 0.9.4",
983
+ "libc",
984
+]
985
+
986
+[[package]]
987
+name = "core2"
988
+version = "0.4.0"
989
+source = "registry+https://github.com/rust-lang/crates.io-index"
990
+checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
991
+dependencies = [
992
+ "memchr",
993
+]
994
+
995
+[[package]]
996
+name = "cpufeatures"
997
+version = "0.2.17"
998
+source = "registry+https://github.com/rust-lang/crates.io-index"
999
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
1000
+dependencies = [
1001
+ "libc",
1002
+]
1003
+
1004
+[[package]]
1005
+name = "crc32fast"
1006
+version = "1.5.0"
1007
+source = "registry+https://github.com/rust-lang/crates.io-index"
1008
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
1009
+dependencies = [
1010
+ "cfg-if",
1011
+]
1012
+
1013
+[[package]]
1014
+name = "crossbeam-deque"
1015
+version = "0.8.6"
1016
+source = "registry+https://github.com/rust-lang/crates.io-index"
1017
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
1018
+dependencies = [
1019
+ "crossbeam-epoch",
1020
+ "crossbeam-utils",
1021
+]
1022
+
1023
+[[package]]
1024
+name = "crossbeam-epoch"
1025
+version = "0.9.18"
1026
+source = "registry+https://github.com/rust-lang/crates.io-index"
1027
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
1028
+dependencies = [
1029
+ "crossbeam-utils",
1030
+]
1031
+
1032
+[[package]]
1033
+name = "crossbeam-utils"
1034
+version = "0.8.21"
1035
+source = "registry+https://github.com/rust-lang/crates.io-index"
1036
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
1037
+
1038
+[[package]]
1039
+name = "crossterm"
1040
+version = "0.29.0"
1041
+source = "registry+https://github.com/rust-lang/crates.io-index"
1042
+checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
1043
+dependencies = [
1044
+ "bitflags 2.11.0",
1045
+ "crossterm_winapi",
1046
+ "derive_more",
1047
+ "document-features",
1048
+ "mio",
1049
+ "parking_lot",
1050
+ "rustix",
1051
+ "signal-hook",
1052
+ "signal-hook-mio",
1053
+ "winapi",
1054
+]
1055
+
1056
+[[package]]
1057
+name = "crossterm_winapi"
1058
+version = "0.9.1"
1059
+source = "registry+https://github.com/rust-lang/crates.io-index"
1060
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
1061
+dependencies = [
1062
+ "winapi",
1063
+]
1064
+
1065
+[[package]]
1066
+name = "crunchy"
1067
+version = "0.2.4"
1068
+source = "registry+https://github.com/rust-lang/crates.io-index"
1069
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
1070
+
1071
+[[package]]
1072
+name = "crypto-common"
1073
+version = "0.1.7"
1074
+source = "registry+https://github.com/rust-lang/crates.io-index"
1075
+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
1076
+dependencies = [
1077
+ "generic-array",
1078
+ "typenum",
1079
+]
1080
+
1081
+[[package]]
1082
+name = "cssparser"
1083
+version = "0.36.0"
1084
+source = "registry+https://github.com/rust-lang/crates.io-index"
1085
+checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2"
1086
+dependencies = [
1087
+ "cssparser-macros",
1088
+ "dtoa-short",
1089
+ "itoa",
1090
+ "phf",
1091
+ "smallvec 1.15.1",
1092
+]
1093
+
1094
+[[package]]
1095
+name = "cssparser-macros"
1096
+version = "0.6.1"
1097
+source = "registry+https://github.com/rust-lang/crates.io-index"
1098
+checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
1099
+dependencies = [
1100
+ "quote",
1101
+ "syn 2.0.117",
1102
+]
1103
+
1104
+[[package]]
1105
+name = "csv"
1106
+version = "1.4.0"
1107
+source = "registry+https://github.com/rust-lang/crates.io-index"
1108
+checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938"
1109
+dependencies = [
1110
+ "csv-core",
1111
+ "itoa",
1112
+ "ryu",
1113
+ "serde_core",
1114
+]
1115
+
1116
+[[package]]
1117
+name = "csv-core"
1118
+version = "0.1.13"
1119
+source = "registry+https://github.com/rust-lang/crates.io-index"
1120
+checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782"
1121
+dependencies = [
1122
+ "memchr",
1123
+]
1124
+
1125
+[[package]]
1126
+name = "darling"
1127
+version = "0.11.0"
1128
+source = "registry+https://github.com/rust-lang/crates.io-index"
1129
+checksum = "dbffa8f8e38810422f320ca457a93cf1cd0056dc9c06c556b867558e0d471463"
1130
+dependencies = [
1131
+ "darling_core 0.11.0",
1132
+ "darling_macro 0.11.0",
1133
+]
1134
+
1135
+[[package]]
1136
+name = "darling"
1137
+version = "0.20.11"
1138
+source = "registry+https://github.com/rust-lang/crates.io-index"
1139
+checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
1140
+dependencies = [
1141
+ "darling_core 0.20.11",
1142
+ "darling_macro 0.20.11",
1143
+]
1144
+
1145
+[[package]]
1146
+name = "darling"
1147
+version = "0.23.0"
1148
+source = "registry+https://github.com/rust-lang/crates.io-index"
1149
+checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"
1150
+dependencies = [
1151
+ "darling_core 0.23.0",
1152
+ "darling_macro 0.23.0",
1153
+]
1154
+
1155
+[[package]]
1156
+name = "darling_core"
1157
+version = "0.11.0"
1158
+source = "registry+https://github.com/rust-lang/crates.io-index"
1159
+checksum = "06e172685d94b7b83800e3256a63261537b9d6129e10f21c8e13ddf9dba8c64d"
1160
+dependencies = [
1161
+ "fnv",
1162
+ "ident_case",
1163
+ "proc-macro2",
1164
+ "quote",
1165
+ "strsim 0.10.0",
1166
+ "syn 1.0.109",
1167
+]
1168
+
1169
+[[package]]
1170
+name = "darling_core"
1171
+version = "0.20.11"
1172
+source = "registry+https://github.com/rust-lang/crates.io-index"
1173
+checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
1174
+dependencies = [
1175
+ "fnv",
1176
+ "ident_case",
1177
+ "proc-macro2",
1178
+ "quote",
1179
+ "strsim 0.11.1",
1180
+ "syn 2.0.117",
1181
+]
1182
+
1183
+[[package]]
1184
+name = "darling_core"
1185
+version = "0.23.0"
1186
+source = "registry+https://github.com/rust-lang/crates.io-index"
1187
+checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
1188
+dependencies = [
1189
+ "ident_case",
1190
+ "proc-macro2",
1191
+ "quote",
1192
+ "strsim 0.11.1",
1193
+ "syn 2.0.117",
1194
+]
1195
+
1196
+[[package]]
1197
+name = "darling_macro"
1198
+version = "0.11.0"
1199
+source = "registry+https://github.com/rust-lang/crates.io-index"
1200
+checksum = "f0618ac802792cebd1918ac6042a6ea1eeab92db34b35656afaa577929820788"
1201
+dependencies = [
1202
+ "darling_core 0.11.0",
1203
+ "quote",
1204
+ "syn 1.0.109",
1205
+]
1206
+
1207
+[[package]]
1208
+name = "darling_macro"
1209
+version = "0.20.11"
1210
+source = "registry+https://github.com/rust-lang/crates.io-index"
1211
+checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
1212
+dependencies = [
1213
+ "darling_core 0.20.11",
1214
+ "quote",
1215
+ "syn 2.0.117",
1216
+]
1217
+
1218
+[[package]]
1219
+name = "darling_macro"
1220
+version = "0.23.0"
1221
+source = "registry+https://github.com/rust-lang/crates.io-index"
1222
+checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
1223
+dependencies = [
1224
+ "darling_core 0.23.0",
1225
+ "quote",
1226
+ "syn 2.0.117",
1227
+]
1228
+
1229
+[[package]]
1230
+name = "dary_heap"
1231
+version = "0.3.8"
1232
+source = "registry+https://github.com/rust-lang/crates.io-index"
1233
+checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04"
1234
+dependencies = [
1235
+ "serde",
1236
+]
1237
+
1238
+[[package]]
1239
+name = "data-encoding"
1240
+version = "2.10.0"
1241
+source = "registry+https://github.com/rust-lang/crates.io-index"
1242
+checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
1243
+
1244
+[[package]]
1245
+name = "defmac"
1246
+version = "0.1.3"
1247
+source = "registry+https://github.com/rust-lang/crates.io-index"
1248
+checksum = "aafbece59594ed57696a1a69e8bb3ca1683fbc9cdb41d5c02726070b2cd8f19d"
1249
+
1250
+[[package]]
1251
+name = "deranged"
1252
+version = "0.5.8"
1253
+source = "registry+https://github.com/rust-lang/crates.io-index"
1254
+checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
1255
+dependencies = [
1256
+ "powerfmt",
1257
+ "serde_core",
1258
+]
1259
+
1260
+[[package]]
1261
+name = "derive-new"
1262
+version = "0.7.0"
1263
+source = "registry+https://github.com/rust-lang/crates.io-index"
1264
+checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc"
1265
+dependencies = [
1266
+ "proc-macro2",
1267
+ "quote",
1268
+ "syn 2.0.117",
1269
+]
1270
+
1271
+[[package]]
1272
+name = "derive_builder"
1273
+version = "0.20.2"
1274
+source = "registry+https://github.com/rust-lang/crates.io-index"
1275
+checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"
1276
+dependencies = [
1277
+ "derive_builder_macro",
1278
+]
1279
+
1280
+[[package]]
1281
+name = "derive_builder_core"
1282
+version = "0.20.2"
1283
+source = "registry+https://github.com/rust-lang/crates.io-index"
1284
+checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
1285
+dependencies = [
1286
+ "darling 0.20.11",
1287
+ "proc-macro2",
1288
+ "quote",
1289
+ "syn 2.0.117",
1290
+]
1291
+
1292
+[[package]]
1293
+name = "derive_builder_macro"
1294
+version = "0.20.2"
1295
+source = "registry+https://github.com/rust-lang/crates.io-index"
1296
+checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
1297
+dependencies = [
1298
+ "derive_builder_core",
1299
+ "syn 2.0.117",
1300
+]
1301
+
1302
+[[package]]
1303
+name = "derive_more"
1304
+version = "2.1.1"
1305
+source = "registry+https://github.com/rust-lang/crates.io-index"
1306
+checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
1307
+dependencies = [
1308
+ "derive_more-impl",
1309
+]
1310
+
1311
+[[package]]
1312
+name = "derive_more-impl"
1313
+version = "2.1.1"
1314
+source = "registry+https://github.com/rust-lang/crates.io-index"
1315
+checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
1316
+dependencies = [
1317
+ "convert_case 0.10.0",
1318
+ "proc-macro2",
1319
+ "quote",
1320
+ "rustc_version",
1321
+ "syn 2.0.117",
1322
+ "unicode-xid",
1323
+]
1324
+
1325
+[[package]]
1326
+name = "derivre"
1327
+version = "0.3.9"
1328
+source = "registry+https://github.com/rust-lang/crates.io-index"
1329
+checksum = "0cc33bc6d9125f496c6f20a5630a1eb2c4bd435e2d5a735d39dd3232b5c14e6e"
1330
+dependencies = [
1331
+ "anyhow",
1332
+ "bytemuck",
1333
+ "bytemuck_derive",
1334
+ "hashbrown 0.15.5",
1335
+ "regex-syntax",
1336
+ "strum 0.27.2",
1337
+]
1338
+
1339
+[[package]]
1340
+name = "deunicode"
1341
+version = "1.6.2"
1342
+source = "registry+https://github.com/rust-lang/crates.io-index"
1343
+checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04"
1344
+
1345
+[[package]]
1346
+name = "digest"
1347
+version = "0.10.7"
1348
+source = "registry+https://github.com/rust-lang/crates.io-index"
1349
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
1350
+dependencies = [
1351
+ "block-buffer",
1352
+ "crypto-common",
1353
+]
1354
+
1355
+[[package]]
1356
+name = "dirs"
1357
+version = "6.0.0"
1358
+source = "registry+https://github.com/rust-lang/crates.io-index"
1359
+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
1360
+dependencies = [
1361
+ "dirs-sys",
1362
+]
1363
+
1364
+[[package]]
1365
+name = "dirs-sys"
1366
+version = "0.5.0"
1367
+source = "registry+https://github.com/rust-lang/crates.io-index"
1368
+checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
1369
+dependencies = [
1370
+ "libc",
1371
+ "option-ext",
1372
+ "redox_users",
1373
+ "windows-sys 0.61.2",
1374
+]
1375
+
1376
+[[package]]
1377
+name = "dispatch2"
1378
+version = "0.3.1"
1379
+source = "registry+https://github.com/rust-lang/crates.io-index"
1380
+checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
1381
+dependencies = [
1382
+ "bitflags 2.11.0",
1383
+ "block2",
1384
+ "objc2",
1385
+]
1386
+
1387
+[[package]]
1388
+name = "displaydoc"
1389
+version = "0.2.5"
1390
+source = "registry+https://github.com/rust-lang/crates.io-index"
1391
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
1392
+dependencies = [
1393
+ "proc-macro2",
1394
+ "quote",
1395
+ "syn 2.0.117",
1396
+]
1397
+
1398
+[[package]]
1399
+name = "doctest-file"
1400
+version = "1.1.1"
1401
+source = "registry+https://github.com/rust-lang/crates.io-index"
1402
+checksum = "c2db04e74f0a9a93103b50e90b96024c9b2bdca8bce6a632ec71b88736d3d359"
1403
+
1404
+[[package]]
1405
+name = "document-features"
1406
+version = "0.2.12"
1407
+source = "registry+https://github.com/rust-lang/crates.io-index"
1408
+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
1409
+dependencies = [
1410
+ "litrs",
1411
+]
1412
+
1413
+[[package]]
1414
+name = "dtoa"
1415
+version = "1.0.11"
1416
+source = "registry+https://github.com/rust-lang/crates.io-index"
1417
+checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590"
1418
+
1419
+[[package]]
1420
+name = "dtoa-short"
1421
+version = "0.3.5"
1422
+source = "registry+https://github.com/rust-lang/crates.io-index"
1423
+checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87"
1424
+dependencies = [
1425
+ "dtoa",
1426
+]
1427
+
1428
+[[package]]
1429
+name = "dunce"
1430
+version = "1.0.5"
1431
+source = "registry+https://github.com/rust-lang/crates.io-index"
1432
+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
1433
+
1434
+[[package]]
1435
+name = "dyn-clone"
1436
+version = "1.0.20"
1437
+source = "registry+https://github.com/rust-lang/crates.io-index"
1438
+checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
1439
+
1440
+[[package]]
1441
+name = "dyn-stack"
1442
+version = "0.13.2"
1443
+source = "registry+https://github.com/rust-lang/crates.io-index"
1444
+checksum = "1c4713e43e2886ba72b8271aa66c93d722116acf7a75555cce11dcde84388fe8"
1445
+dependencies = [
1446
+ "bytemuck",
1447
+ "dyn-stack-macros",
1448
+]
1449
+
1450
+[[package]]
1451
+name = "dyn-stack-macros"
1452
+version = "0.1.3"
1453
+source = "registry+https://github.com/rust-lang/crates.io-index"
1454
+checksum = "e1d926b4d407d372f141f93bb444696142c29d32962ccbd3531117cf3aa0bfa9"
1455
+
1456
+[[package]]
1457
+name = "ego-tree"
1458
+version = "0.10.0"
1459
+source = "registry+https://github.com/rust-lang/crates.io-index"
1460
+checksum = "b2972feb8dffe7bc8c5463b1dacda1b0dfbed3710e50f977d965429692d74cd8"
1461
+
1462
+[[package]]
1463
+name = "either"
1464
+version = "1.15.0"
1465
+source = "registry+https://github.com/rust-lang/crates.io-index"
1466
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
1467
+dependencies = [
1468
+ "serde",
1469
+]
1470
+
1471
+[[package]]
1472
+name = "encode_unicode"
1473
+version = "1.0.0"
1474
+source = "registry+https://github.com/rust-lang/crates.io-index"
1475
+checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
1476
+
1477
+[[package]]
1478
+name = "encoding_rs"
1479
+version = "0.8.35"
1480
+source = "registry+https://github.com/rust-lang/crates.io-index"
1481
+checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
1482
+dependencies = [
1483
+ "cfg-if",
1484
+]
1485
+
1486
+[[package]]
1487
+name = "encoding_rs_io"
1488
+version = "0.1.7"
1489
+source = "registry+https://github.com/rust-lang/crates.io-index"
1490
+checksum = "1cc3c5651fb62ab8aa3103998dade57efdd028544bd300516baa31840c252a83"
1491
+dependencies = [
1492
+ "encoding_rs",
1493
+]
1494
+
1495
+[[package]]
1496
+name = "endian-type"
1497
+version = "0.2.0"
1498
+source = "registry+https://github.com/rust-lang/crates.io-index"
1499
+checksum = "869b0adbda23651a9c5c0c3d270aac9fcb52e8622a8f2b17e57802d7791962f2"
1500
+
1501
+[[package]]
1502
+name = "enum-as-inner"
1503
+version = "0.6.1"
1504
+source = "registry+https://github.com/rust-lang/crates.io-index"
1505
+checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc"
1506
+dependencies = [
1507
+ "heck 0.5.0",
1508
+ "proc-macro2",
1509
+ "quote",
1510
+ "syn 2.0.117",
1511
+]
1512
+
1513
+[[package]]
1514
+name = "env_filter"
1515
+version = "1.0.1"
1516
+source = "registry+https://github.com/rust-lang/crates.io-index"
1517
+checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef"
1518
+dependencies = [
1519
+ "log",
1520
+ "regex",
1521
+]
1522
+
1523
+[[package]]
1524
+name = "env_logger"
1525
+version = "0.11.10"
1526
+source = "registry+https://github.com/rust-lang/crates.io-index"
1527
+checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a"
1528
+dependencies = [
1529
+ "anstream",
1530
+ "anstyle",
1531
+ "env_filter",
1532
+ "jiff",
1533
+ "log",
1534
+]
1535
+
1536
+[[package]]
1537
+name = "equator"
1538
+version = "0.4.2"
1539
+source = "registry+https://github.com/rust-lang/crates.io-index"
1540
+checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc"
1541
+dependencies = [
1542
+ "equator-macro",
1543
+]
1544
+
1545
+[[package]]
1546
+name = "equator-macro"
1547
+version = "0.4.2"
1548
+source = "registry+https://github.com/rust-lang/crates.io-index"
1549
+checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3"
1550
+dependencies = [
1551
+ "proc-macro2",
1552
+ "quote",
1553
+ "syn 2.0.117",
1554
+]
1555
+
1556
+[[package]]
1557
+name = "equivalent"
1558
+version = "1.0.2"
1559
+source = "registry+https://github.com/rust-lang/crates.io-index"
1560
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
1561
+
1562
+[[package]]
1563
+name = "errno"
1564
+version = "0.3.14"
1565
+source = "registry+https://github.com/rust-lang/crates.io-index"
1566
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1567
+dependencies = [
1568
+ "libc",
1569
+ "windows-sys 0.61.2",
1570
+]
1571
+
1572
+[[package]]
1573
+name = "esaxx-rs"
1574
+version = "0.1.10"
1575
+source = "registry+https://github.com/rust-lang/crates.io-index"
1576
+checksum = "d817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6"
1577
+
1578
+[[package]]
1579
+name = "event-listener"
1580
+version = "5.4.1"
1581
+source = "registry+https://github.com/rust-lang/crates.io-index"
1582
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
1583
+dependencies = [
1584
+ "concurrent-queue",
1585
+ "parking",
1586
+ "pin-project-lite",
1587
+]
1588
+
1589
+[[package]]
1590
+name = "event-listener-strategy"
1591
+version = "0.5.4"
1592
+source = "registry+https://github.com/rust-lang/crates.io-index"
1593
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
1594
+dependencies = [
1595
+ "event-listener",
1596
+ "pin-project-lite",
1597
+]
1598
+
1599
+[[package]]
1600
+name = "exr"
1601
+version = "1.74.0"
1602
+source = "registry+https://github.com/rust-lang/crates.io-index"
1603
+checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be"
1604
+dependencies = [
1605
+ "bit_field",
1606
+ "half",
1607
+ "lebe",
1608
+ "miniz_oxide",
1609
+ "rayon-core",
1610
+ "smallvec 1.15.1",
1611
+ "zune-inflate",
1612
+]
1613
+
1614
+[[package]]
1615
+name = "extended"
1616
+version = "0.1.0"
1617
+source = "registry+https://github.com/rust-lang/crates.io-index"
1618
+checksum = "af9673d8203fcb076b19dfd17e38b3d4ae9f44959416ea532ce72415a6020365"
1619
+
1620
+[[package]]
1621
+name = "fancy-regex"
1622
+version = "0.13.0"
1623
+source = "registry+https://github.com/rust-lang/crates.io-index"
1624
+checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2"
1625
+dependencies = [
1626
+ "bit-set 0.5.3",
1627
+ "regex-automata",
1628
+ "regex-syntax",
1629
+]
1630
+
1631
+[[package]]
1632
+name = "fancy-regex"
1633
+version = "0.14.0"
1634
+source = "registry+https://github.com/rust-lang/crates.io-index"
1635
+checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298"
1636
+dependencies = [
1637
+ "bit-set 0.8.0",
1638
+ "regex-automata",
1639
+ "regex-syntax",
1640
+]
1641
+
1642
+[[package]]
1643
+name = "fastrand"
1644
+version = "2.4.1"
1645
+source = "registry+https://github.com/rust-lang/crates.io-index"
1646
+checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
1647
+
1648
+[[package]]
1649
+name = "fax"
1650
+version = "0.2.6"
1651
+source = "registry+https://github.com/rust-lang/crates.io-index"
1652
+checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
1653
+dependencies = [
1654
+ "fax_derive",
1655
+]
1656
+
1657
+[[package]]
1658
+name = "fax_derive"
1659
+version = "0.2.0"
1660
+source = "registry+https://github.com/rust-lang/crates.io-index"
1661
+checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
1662
+dependencies = [
1663
+ "proc-macro2",
1664
+ "quote",
1665
+ "syn 2.0.117",
1666
+]
1667
+
1668
+[[package]]
1669
+name = "fdeflate"
1670
+version = "0.3.7"
1671
+source = "registry+https://github.com/rust-lang/crates.io-index"
1672
+checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
1673
+dependencies = [
1674
+ "simd-adler32",
1675
+]
1676
+
1677
+[[package]]
1678
+name = "find-msvc-tools"
1679
+version = "0.1.9"
1680
+source = "registry+https://github.com/rust-lang/crates.io-index"
1681
+checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
1682
+
1683
+[[package]]
1684
+name = "flate2"
1685
+version = "1.1.9"
1686
+source = "registry+https://github.com/rust-lang/crates.io-index"
1687
+checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
1688
+dependencies = [
1689
+ "crc32fast",
1690
+ "miniz_oxide",
1691
+]
1692
+
1693
+[[package]]
1694
+name = "float8"
1695
+version = "0.7.0"
1696
+source = "registry+https://github.com/rust-lang/crates.io-index"
1697
+checksum = "c2d1f04709a8ac06e8e8042875a3c466cc4832d3c1a18dbcb9dba3c6e83046bc"
1698
+dependencies = [
1699
+ "half",
1700
+ "num-traits",
1701
+ "rand 0.9.3",
1702
+ "rand_distr 0.5.1",
1703
+]
1704
+
1705
+[[package]]
1706
+name = "fnv"
1707
+version = "1.0.7"
1708
+source = "registry+https://github.com/rust-lang/crates.io-index"
1709
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
1710
+
1711
+[[package]]
1712
+name = "foldhash"
1713
+version = "0.1.5"
1714
+source = "registry+https://github.com/rust-lang/crates.io-index"
1715
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
1716
+
1717
+[[package]]
1718
+name = "foldhash"
1719
+version = "0.2.0"
1720
+source = "registry+https://github.com/rust-lang/crates.io-index"
1721
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
1722
+
1723
+[[package]]
1724
+name = "foreign-types"
1725
+version = "0.5.0"
1726
+source = "registry+https://github.com/rust-lang/crates.io-index"
1727
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
1728
+dependencies = [
1729
+ "foreign-types-macros",
1730
+ "foreign-types-shared",
1731
+]
1732
+
1733
+[[package]]
1734
+name = "foreign-types-macros"
1735
+version = "0.2.3"
1736
+source = "registry+https://github.com/rust-lang/crates.io-index"
1737
+checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
1738
+dependencies = [
1739
+ "proc-macro2",
1740
+ "quote",
1741
+ "syn 2.0.117",
1742
+]
1743
+
1744
+[[package]]
1745
+name = "foreign-types-shared"
1746
+version = "0.3.1"
1747
+source = "registry+https://github.com/rust-lang/crates.io-index"
1748
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
1749
+
1750
+[[package]]
1751
+name = "form_urlencoded"
1752
+version = "1.2.2"
1753
+source = "registry+https://github.com/rust-lang/crates.io-index"
1754
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
1755
+dependencies = [
1756
+ "percent-encoding",
1757
+]
1758
+
1759
+[[package]]
1760
+name = "fs-err"
1761
+version = "2.11.0"
1762
+source = "registry+https://github.com/rust-lang/crates.io-index"
1763
+checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41"
1764
+dependencies = [
1765
+ "autocfg",
1766
+]
1767
+
1768
+[[package]]
1769
+name = "fs_extra"
1770
+version = "1.3.0"
1771
+source = "registry+https://github.com/rust-lang/crates.io-index"
1772
+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
1773
+
1774
+[[package]]
1775
+name = "futf"
1776
+version = "0.1.5"
1777
+source = "registry+https://github.com/rust-lang/crates.io-index"
1778
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
1779
+dependencies = [
1780
+ "mac",
1781
+ "new_debug_unreachable",
1782
+]
1783
+
1784
+[[package]]
1785
+name = "futures"
1786
+version = "0.3.32"
1787
+source = "registry+https://github.com/rust-lang/crates.io-index"
1788
+checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
1789
+dependencies = [
1790
+ "futures-channel",
1791
+ "futures-core",
1792
+ "futures-executor",
1793
+ "futures-io",
1794
+ "futures-sink",
1795
+ "futures-task",
1796
+ "futures-util",
1797
+]
1798
+
1799
+[[package]]
1800
+name = "futures-channel"
1801
+version = "0.3.32"
1802
+source = "registry+https://github.com/rust-lang/crates.io-index"
1803
+checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
1804
+dependencies = [
1805
+ "futures-core",
1806
+ "futures-sink",
1807
+]
1808
+
1809
+[[package]]
1810
+name = "futures-core"
1811
+version = "0.3.32"
1812
+source = "registry+https://github.com/rust-lang/crates.io-index"
1813
+checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
1814
+
1815
+[[package]]
1816
+name = "futures-executor"
1817
+version = "0.3.32"
1818
+source = "registry+https://github.com/rust-lang/crates.io-index"
1819
+checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
1820
+dependencies = [
1821
+ "futures-core",
1822
+ "futures-task",
1823
+ "futures-util",
1824
+]
1825
+
1826
+[[package]]
1827
+name = "futures-io"
1828
+version = "0.3.32"
1829
+source = "registry+https://github.com/rust-lang/crates.io-index"
1830
+checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
1831
+
1832
+[[package]]
1833
+name = "futures-macro"
1834
+version = "0.3.32"
1835
+source = "registry+https://github.com/rust-lang/crates.io-index"
1836
+checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
1837
+dependencies = [
1838
+ "proc-macro2",
1839
+ "quote",
1840
+ "syn 2.0.117",
1841
+]
1842
+
1843
+[[package]]
1844
+name = "futures-sink"
1845
+version = "0.3.32"
1846
+source = "registry+https://github.com/rust-lang/crates.io-index"
1847
+checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
1848
+
1849
+[[package]]
1850
+name = "futures-task"
1851
+version = "0.3.32"
1852
+source = "registry+https://github.com/rust-lang/crates.io-index"
1853
+checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
1854
+
1855
+[[package]]
1856
+name = "futures-util"
1857
+version = "0.3.32"
1858
+source = "registry+https://github.com/rust-lang/crates.io-index"
1859
+checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
1860
+dependencies = [
1861
+ "futures-channel",
1862
+ "futures-core",
1863
+ "futures-io",
1864
+ "futures-macro",
1865
+ "futures-sink",
1866
+ "futures-task",
1867
+ "memchr",
1868
+ "pin-project-lite",
1869
+ "slab",
1870
+]
1871
+
1872
+[[package]]
1873
+name = "fxhash"
1874
+version = "0.2.1"
1875
+source = "registry+https://github.com/rust-lang/crates.io-index"
1876
+checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
1877
+dependencies = [
1878
+ "byteorder",
1879
+]
1880
+
1881
+[[package]]
1882
+name = "galil-seiferas"
1883
+version = "0.1.5"
1884
+source = "registry+https://github.com/rust-lang/crates.io-index"
1885
+checksum = "794ac25cfda3fa11d2b07ff8c65889c6c03411646df54e59e606878d899e1d5a"
1886
+dependencies = [
1887
+ "defmac",
1888
+ "unchecked-index",
1889
+]
1890
+
1891
+[[package]]
1892
+name = "gemm"
1893
+version = "0.18.2"
1894
+source = "registry+https://github.com/rust-lang/crates.io-index"
1895
+checksum = "ab96b703d31950f1aeddded248bc95543c9efc7ac9c4a21fda8703a83ee35451"
1896
+dependencies = [
1897
+ "dyn-stack",
1898
+ "gemm-c32 0.18.2",
1899
+ "gemm-c64 0.18.2",
1900
+ "gemm-common 0.18.2",
1901
+ "gemm-f16 0.18.2",
1902
+ "gemm-f32 0.18.2",
1903
+ "gemm-f64 0.18.2",
1904
+ "num-complex",
1905
+ "num-traits",
1906
+ "paste",
1907
+ "raw-cpuid",
1908
+ "seq-macro",
1909
+]
1910
+
1911
+[[package]]
1912
+name = "gemm"
1913
+version = "0.19.0"
1914
+source = "registry+https://github.com/rust-lang/crates.io-index"
1915
+checksum = "aa0673db364b12263d103b68337a68fbecc541d6f6b61ba72fe438654709eacb"
1916
+dependencies = [
1917
+ "dyn-stack",
1918
+ "gemm-c32 0.19.0",
1919
+ "gemm-c64 0.19.0",
1920
+ "gemm-common 0.19.0",
1921
+ "gemm-f16 0.19.0",
1922
+ "gemm-f32 0.19.0",
1923
+ "gemm-f64 0.19.0",
1924
+ "num-complex",
1925
+ "num-traits",
1926
+ "paste",
1927
+ "raw-cpuid",
1928
+ "seq-macro",
1929
+]
1930
+
1931
+[[package]]
1932
+name = "gemm-c32"
1933
+version = "0.18.2"
1934
+source = "registry+https://github.com/rust-lang/crates.io-index"
1935
+checksum = "f6db9fd9f40421d00eea9dd0770045a5603b8d684654816637732463f4073847"
1936
+dependencies = [
1937
+ "dyn-stack",
1938
+ "gemm-common 0.18.2",
1939
+ "num-complex",
1940
+ "num-traits",
1941
+ "paste",
1942
+ "raw-cpuid",
1943
+ "seq-macro",
1944
+]
1945
+
1946
+[[package]]
1947
+name = "gemm-c32"
1948
+version = "0.19.0"
1949
+source = "registry+https://github.com/rust-lang/crates.io-index"
1950
+checksum = "086936dbdcb99e37aad81d320f98f670e53c1e55a98bee70573e83f95beb128c"
1951
+dependencies = [
1952
+ "dyn-stack",
1953
+ "gemm-common 0.19.0",
1954
+ "num-complex",
1955
+ "num-traits",
1956
+ "paste",
1957
+ "raw-cpuid",
1958
+ "seq-macro",
1959
+]
1960
+
1961
+[[package]]
1962
+name = "gemm-c64"
1963
+version = "0.18.2"
1964
+source = "registry+https://github.com/rust-lang/crates.io-index"
1965
+checksum = "dfcad8a3d35a43758330b635d02edad980c1e143dc2f21e6fd25f9e4eada8edf"
1966
+dependencies = [
1967
+ "dyn-stack",
1968
+ "gemm-common 0.18.2",
1969
+ "num-complex",
1970
+ "num-traits",
1971
+ "paste",
1972
+ "raw-cpuid",
1973
+ "seq-macro",
1974
+]
1975
+
1976
+[[package]]
1977
+name = "gemm-c64"
1978
+version = "0.19.0"
1979
+source = "registry+https://github.com/rust-lang/crates.io-index"
1980
+checksum = "20c8aeeeec425959bda4d9827664029ba1501a90a0d1e6228e48bef741db3a3f"
1981
+dependencies = [
1982
+ "dyn-stack",
1983
+ "gemm-common 0.19.0",
1984
+ "num-complex",
1985
+ "num-traits",
1986
+ "paste",
1987
+ "raw-cpuid",
1988
+ "seq-macro",
1989
+]
1990
+
1991
+[[package]]
1992
+name = "gemm-common"
1993
+version = "0.18.2"
1994
+source = "registry+https://github.com/rust-lang/crates.io-index"
1995
+checksum = "a352d4a69cbe938b9e2a9cb7a3a63b7e72f9349174a2752a558a8a563510d0f3"
1996
+dependencies = [
1997
+ "bytemuck",
1998
+ "dyn-stack",
1999
+ "half",
2000
+ "libm",
2001
+ "num-complex",
2002
+ "num-traits",
2003
+ "once_cell",
2004
+ "paste",
2005
+ "pulp 0.21.5",
2006
+ "raw-cpuid",
2007
+ "rayon",
2008
+ "seq-macro",
2009
+ "sysctl",
2010
+]
2011
+
2012
+[[package]]
2013
+name = "gemm-common"
2014
+version = "0.19.0"
2015
+source = "registry+https://github.com/rust-lang/crates.io-index"
2016
+checksum = "88027625910cc9b1085aaaa1c4bc46bb3a36aad323452b33c25b5e4e7c8e2a3e"
2017
+dependencies = [
2018
+ "bytemuck",
2019
+ "dyn-stack",
2020
+ "half",
2021
+ "libm",
2022
+ "num-complex",
2023
+ "num-traits",
2024
+ "once_cell",
2025
+ "paste",
2026
+ "pulp 0.22.2",
2027
+ "raw-cpuid",
2028
+ "rayon",
2029
+ "seq-macro",
2030
+ "sysctl",
2031
+]
2032
+
2033
+[[package]]
2034
+name = "gemm-f16"
2035
+version = "0.18.2"
2036
+source = "registry+https://github.com/rust-lang/crates.io-index"
2037
+checksum = "cff95ae3259432f3c3410eaa919033cd03791d81cebd18018393dc147952e109"
2038
+dependencies = [
2039
+ "dyn-stack",
2040
+ "gemm-common 0.18.2",
2041
+ "gemm-f32 0.18.2",
2042
+ "half",
2043
+ "num-complex",
2044
+ "num-traits",
2045
+ "paste",
2046
+ "raw-cpuid",
2047
+ "rayon",
2048
+ "seq-macro",
2049
+]
2050
+
2051
+[[package]]
2052
+name = "gemm-f16"
2053
+version = "0.19.0"
2054
+source = "registry+https://github.com/rust-lang/crates.io-index"
2055
+checksum = "e3df7a55202e6cd6739d82ae3399c8e0c7e1402859b30e4cb780e61525d9486e"
2056
+dependencies = [
2057
+ "dyn-stack",
2058
+ "gemm-common 0.19.0",
2059
+ "gemm-f32 0.19.0",
2060
+ "half",
2061
+ "num-complex",
2062
+ "num-traits",
2063
+ "paste",
2064
+ "raw-cpuid",
2065
+ "rayon",
2066
+ "seq-macro",
2067
+]
2068
+
2069
+[[package]]
2070
+name = "gemm-f32"
2071
+version = "0.18.2"
2072
+source = "registry+https://github.com/rust-lang/crates.io-index"
2073
+checksum = "bc8d3d4385393304f407392f754cd2dc4b315d05063f62cf09f47b58de276864"
2074
+dependencies = [
2075
+ "dyn-stack",
2076
+ "gemm-common 0.18.2",
2077
+ "num-complex",
2078
+ "num-traits",
2079
+ "paste",
2080
+ "raw-cpuid",
2081
+ "seq-macro",
2082
+]
2083
+
2084
+[[package]]
2085
+name = "gemm-f32"
2086
+version = "0.19.0"
2087
+source = "registry+https://github.com/rust-lang/crates.io-index"
2088
+checksum = "02e0b8c9da1fbec6e3e3ab2ce6bc259ef18eb5f6f0d3e4edf54b75f9fd41a81c"
2089
+dependencies = [
2090
+ "dyn-stack",
2091
+ "gemm-common 0.19.0",
2092
+ "num-complex",
2093
+ "num-traits",
2094
+ "paste",
2095
+ "raw-cpuid",
2096
+ "seq-macro",
2097
+]
2098
+
2099
+[[package]]
2100
+name = "gemm-f64"
2101
+version = "0.18.2"
2102
+source = "registry+https://github.com/rust-lang/crates.io-index"
2103
+checksum = "35b2a4f76ce4b8b16eadc11ccf2e083252d8237c1b589558a49b0183545015bd"
2104
+dependencies = [
2105
+ "dyn-stack",
2106
+ "gemm-common 0.18.2",
2107
+ "num-complex",
2108
+ "num-traits",
2109
+ "paste",
2110
+ "raw-cpuid",
2111
+ "seq-macro",
2112
+]
2113
+
2114
+[[package]]
2115
+name = "gemm-f64"
2116
+version = "0.19.0"
2117
+source = "registry+https://github.com/rust-lang/crates.io-index"
2118
+checksum = "056131e8f2a521bfab322f804ccd652520c79700d81209e9d9275bbdecaadc6a"
2119
+dependencies = [
2120
+ "dyn-stack",
2121
+ "gemm-common 0.19.0",
2122
+ "num-complex",
2123
+ "num-traits",
2124
+ "paste",
2125
+ "raw-cpuid",
2126
+ "seq-macro",
2127
+]
2128
+
2129
+[[package]]
2130
+name = "generator"
2131
+version = "0.7.5"
2132
+source = "registry+https://github.com/rust-lang/crates.io-index"
2133
+checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e"
2134
+dependencies = [
2135
+ "cc",
2136
+ "libc",
2137
+ "log",
2138
+ "rustversion",
2139
+ "windows 0.48.0",
2140
+]
2141
+
2142
+[[package]]
2143
+name = "generic-array"
2144
+version = "0.14.7"
2145
+source = "registry+https://github.com/rust-lang/crates.io-index"
2146
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
2147
+dependencies = [
2148
+ "typenum",
2149
+ "version_check",
2150
+]
2151
+
2152
+[[package]]
2153
+name = "getopts"
2154
+version = "0.2.24"
2155
+source = "registry+https://github.com/rust-lang/crates.io-index"
2156
+checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df"
2157
+dependencies = [
2158
+ "unicode-width 0.2.2",
2159
+]
2160
+
2161
+[[package]]
2162
+name = "getrandom"
2163
+version = "0.2.17"
2164
+source = "registry+https://github.com/rust-lang/crates.io-index"
2165
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
2166
+dependencies = [
2167
+ "cfg-if",
2168
+ "js-sys",
2169
+ "libc",
2170
+ "wasi",
2171
+ "wasm-bindgen",
2172
+]
2173
+
2174
+[[package]]
2175
+name = "getrandom"
2176
+version = "0.3.4"
2177
+source = "registry+https://github.com/rust-lang/crates.io-index"
2178
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
2179
+dependencies = [
2180
+ "cfg-if",
2181
+ "js-sys",
2182
+ "libc",
2183
+ "r-efi 5.3.0",
2184
+ "wasip2",
2185
+ "wasm-bindgen",
2186
+]
2187
+
2188
+[[package]]
2189
+name = "getrandom"
2190
+version = "0.4.2"
2191
+source = "registry+https://github.com/rust-lang/crates.io-index"
2192
+checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
2193
+dependencies = [
2194
+ "cfg-if",
2195
+ "libc",
2196
+ "r-efi 6.0.0",
2197
+ "wasip2",
2198
+ "wasip3",
2199
+]
2200
+
2201
+[[package]]
2202
+name = "gif"
2203
+version = "0.14.2"
2204
+source = "registry+https://github.com/rust-lang/crates.io-index"
2205
+checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159"
2206
+dependencies = [
2207
+ "color_quant",
2208
+ "weezl",
2209
+]
2210
+
2211
+[[package]]
2212
+name = "glob"
2213
+version = "0.3.3"
2214
+source = "registry+https://github.com/rust-lang/crates.io-index"
2215
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
2216
+
2217
+[[package]]
2218
+name = "goblin"
2219
+version = "0.8.2"
2220
+source = "registry+https://github.com/rust-lang/crates.io-index"
2221
+checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47"
2222
+dependencies = [
2223
+ "log",
2224
+ "plain",
2225
+ "scroll",
2226
+]
2227
+
2228
+[[package]]
2229
+name = "h2"
2230
+version = "0.4.13"
2231
+source = "registry+https://github.com/rust-lang/crates.io-index"
2232
+checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54"
2233
+dependencies = [
2234
+ "atomic-waker",
2235
+ "bytes",
2236
+ "fnv",
2237
+ "futures-core",
2238
+ "futures-sink",
2239
+ "http",
2240
+ "indexmap 2.14.0",
2241
+ "slab",
2242
+ "tokio",
2243
+ "tokio-util",
2244
+ "tracing",
2245
+]
2246
+
2247
+[[package]]
2248
+name = "half"
2249
+version = "2.7.1"
2250
+source = "registry+https://github.com/rust-lang/crates.io-index"
2251
+checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
2252
+dependencies = [
2253
+ "bytemuck",
2254
+ "cfg-if",
2255
+ "crunchy",
2256
+ "num-traits",
2257
+ "rand 0.9.3",
2258
+ "rand_distr 0.5.1",
2259
+ "zerocopy",
2260
+]
2261
+
2262
+[[package]]
2263
+name = "hashbrown"
2264
+version = "0.12.3"
2265
+source = "registry+https://github.com/rust-lang/crates.io-index"
2266
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
2267
+
2268
+[[package]]
2269
+name = "hashbrown"
2270
+version = "0.15.5"
2271
+source = "registry+https://github.com/rust-lang/crates.io-index"
2272
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
2273
+dependencies = [
2274
+ "allocator-api2",
2275
+ "equivalent",
2276
+ "foldhash 0.1.5",
2277
+]
2278
+
2279
+[[package]]
2280
+name = "hashbrown"
2281
+version = "0.16.1"
2282
+source = "registry+https://github.com/rust-lang/crates.io-index"
2283
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
2284
+dependencies = [
2285
+ "allocator-api2",
2286
+ "equivalent",
2287
+ "foldhash 0.2.0",
2288
+ "serde",
2289
+ "serde_core",
2290
+]
2291
+
2292
+[[package]]
2293
+name = "hashbrown"
2294
+version = "0.17.0"
2295
+source = "registry+https://github.com/rust-lang/crates.io-index"
2296
+checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51"
2297
+
2298
+[[package]]
2299
+name = "heck"
2300
+version = "0.3.3"
2301
+source = "registry+https://github.com/rust-lang/crates.io-index"
2302
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
2303
+dependencies = [
2304
+ "unicode-segmentation",
2305
+]
2306
+
2307
+[[package]]
2308
+name = "heck"
2309
+version = "0.5.0"
2310
+source = "registry+https://github.com/rust-lang/crates.io-index"
2311
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
2312
+
2313
+[[package]]
2314
+name = "hermit-abi"
2315
+version = "0.1.19"
2316
+source = "registry+https://github.com/rust-lang/crates.io-index"
2317
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
2318
+dependencies = [
2319
+ "libc",
2320
+]
2321
+
2322
+[[package]]
2323
+name = "hermit-abi"
2324
+version = "0.5.2"
2325
+source = "registry+https://github.com/rust-lang/crates.io-index"
2326
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
2327
+
2328
+[[package]]
2329
+name = "hex"
2330
+version = "0.4.3"
2331
+source = "registry+https://github.com/rust-lang/crates.io-index"
2332
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
2333
+
2334
+[[package]]
2335
+name = "hf-hub"
2336
+version = "0.4.3"
2337
+source = "registry+https://github.com/rust-lang/crates.io-index"
2338
+checksum = "629d8f3bbeda9d148036d6b0de0a3ab947abd08ce90626327fc3547a49d59d97"
2339
+dependencies = [
2340
+ "dirs",
2341
+ "futures",
2342
+ "http",
2343
+ "indicatif 0.17.11",
2344
+ "libc",
2345
+ "log",
2346
+ "num_cpus",
2347
+ "rand 0.9.3",
2348
+ "reqwest 0.12.28",
2349
+ "serde",
2350
+ "serde_json",
2351
+ "thiserror 2.0.18",
2352
+ "tokio",
2353
+ "ureq",
2354
+ "windows-sys 0.60.2",
2355
+]
2356
+
2357
+[[package]]
2358
+name = "home"
2359
+version = "0.5.12"
2360
+source = "registry+https://github.com/rust-lang/crates.io-index"
2361
+checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
2362
+dependencies = [
2363
+ "windows-sys 0.61.2",
2364
+]
2365
+
2366
+[[package]]
2367
+name = "hound"
2368
+version = "3.5.1"
2369
+source = "registry+https://github.com/rust-lang/crates.io-index"
2370
+checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f"
2371
+
2372
+[[package]]
2373
+name = "html2text"
2374
+version = "0.16.7"
2375
+source = "registry+https://github.com/rust-lang/crates.io-index"
2376
+checksum = "12d23156ea4dbe6b37ad48fab2da56ff27b0f6192fb5db210c44eb07bfe6e787"
2377
+dependencies = [
2378
+ "html5ever 0.38.0",
2379
+ "tendril 0.5.0",
2380
+ "thiserror 2.0.18",
2381
+ "unicode-width 0.2.2",
2382
+]
2383
+
2384
+[[package]]
2385
+name = "html5ever"
2386
+version = "0.36.1"
2387
+source = "registry+https://github.com/rust-lang/crates.io-index"
2388
+checksum = "6452c4751a24e1b99c3260d505eaeee76a050573e61f30ac2c924ddc7236f01e"
2389
+dependencies = [
2390
+ "log",
2391
+ "markup5ever 0.36.1",
2392
+]
2393
+
2394
+[[package]]
2395
+name = "html5ever"
2396
+version = "0.38.0"
2397
+source = "registry+https://github.com/rust-lang/crates.io-index"
2398
+checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2"
2399
+dependencies = [
2400
+ "log",
2401
+ "markup5ever 0.38.0",
2402
+]
2403
+
2404
+[[package]]
2405
+name = "http"
2406
+version = "1.4.0"
2407
+source = "registry+https://github.com/rust-lang/crates.io-index"
2408
+checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
2409
+dependencies = [
2410
+ "bytes",
2411
+ "itoa",
2412
+]
2413
+
2414
+[[package]]
2415
+name = "http-body"
2416
+version = "1.0.1"
2417
+source = "registry+https://github.com/rust-lang/crates.io-index"
2418
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
2419
+dependencies = [
2420
+ "bytes",
2421
+ "http",
2422
+]
2423
+
2424
+[[package]]
2425
+name = "http-body-util"
2426
+version = "0.1.3"
2427
+source = "registry+https://github.com/rust-lang/crates.io-index"
2428
+checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
2429
+dependencies = [
2430
+ "bytes",
2431
+ "futures-core",
2432
+ "http",
2433
+ "http-body",
2434
+ "pin-project-lite",
2435
+]
2436
+
2437
+[[package]]
2438
+name = "httparse"
2439
+version = "1.10.1"
2440
+source = "registry+https://github.com/rust-lang/crates.io-index"
2441
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
2442
+
2443
+[[package]]
2444
+name = "hyper"
2445
+version = "1.9.0"
2446
+source = "registry+https://github.com/rust-lang/crates.io-index"
2447
+checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"
2448
+dependencies = [
2449
+ "atomic-waker",
2450
+ "bytes",
2451
+ "futures-channel",
2452
+ "futures-core",
2453
+ "h2",
2454
+ "http",
2455
+ "http-body",
2456
+ "httparse",
2457
+ "itoa",
2458
+ "pin-project-lite",
2459
+ "smallvec 1.15.1",
2460
+ "tokio",
2461
+ "want",
2462
+]
2463
+
2464
+[[package]]
2465
+name = "hyper-rustls"
2466
+version = "0.27.7"
2467
+source = "registry+https://github.com/rust-lang/crates.io-index"
2468
+checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
2469
+dependencies = [
2470
+ "http",
2471
+ "hyper",
2472
+ "hyper-util",
2473
+ "rustls",
2474
+ "rustls-pki-types",
2475
+ "tokio",
2476
+ "tokio-rustls",
2477
+ "tower-service",
2478
+ "webpki-roots 1.0.6",
2479
+]
2480
+
2481
+[[package]]
2482
+name = "hyper-util"
2483
+version = "0.1.20"
2484
+source = "registry+https://github.com/rust-lang/crates.io-index"
2485
+checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
2486
+dependencies = [
2487
+ "base64 0.22.1",
2488
+ "bytes",
2489
+ "futures-channel",
2490
+ "futures-util",
2491
+ "http",
2492
+ "http-body",
2493
+ "hyper",
2494
+ "ipnet",
2495
+ "libc",
2496
+ "percent-encoding",
2497
+ "pin-project-lite",
2498
+ "socket2",
2499
+ "system-configuration",
2500
+ "tokio",
2501
+ "tower-service",
2502
+ "tracing",
2503
+ "windows-registry",
2504
+]
2505
+
2506
+[[package]]
2507
+name = "iana-time-zone"
2508
+version = "0.1.65"
2509
+source = "registry+https://github.com/rust-lang/crates.io-index"
2510
+checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
2511
+dependencies = [
2512
+ "android_system_properties",
2513
+ "core-foundation-sys",
2514
+ "iana-time-zone-haiku",
2515
+ "js-sys",
2516
+ "log",
2517
+ "wasm-bindgen",
2518
+ "windows-core 0.62.2",
2519
+]
2520
+
2521
+[[package]]
2522
+name = "iana-time-zone-haiku"
2523
+version = "0.1.2"
2524
+source = "registry+https://github.com/rust-lang/crates.io-index"
2525
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
2526
+dependencies = [
2527
+ "cc",
2528
+]
2529
+
2530
+[[package]]
2531
+name = "icu_collections"
2532
+version = "2.2.0"
2533
+source = "registry+https://github.com/rust-lang/crates.io-index"
2534
+checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
2535
+dependencies = [
2536
+ "displaydoc",
2537
+ "potential_utf",
2538
+ "utf8_iter",
2539
+ "yoke 0.8.2",
2540
+ "zerofrom",
2541
+ "zerovec",
2542
+]
2543
+
2544
+[[package]]
2545
+name = "icu_locale_core"
2546
+version = "2.2.0"
2547
+source = "registry+https://github.com/rust-lang/crates.io-index"
2548
+checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
2549
+dependencies = [
2550
+ "displaydoc",
2551
+ "litemap",
2552
+ "tinystr",
2553
+ "writeable",
2554
+ "zerovec",
2555
+]
2556
+
2557
+[[package]]
2558
+name = "icu_normalizer"
2559
+version = "2.2.0"
2560
+source = "registry+https://github.com/rust-lang/crates.io-index"
2561
+checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
2562
+dependencies = [
2563
+ "icu_collections",
2564
+ "icu_normalizer_data",
2565
+ "icu_properties",
2566
+ "icu_provider",
2567
+ "smallvec 1.15.1",
2568
+ "zerovec",
2569
+]
2570
+
2571
+[[package]]
2572
+name = "icu_normalizer_data"
2573
+version = "2.2.0"
2574
+source = "registry+https://github.com/rust-lang/crates.io-index"
2575
+checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
2576
+
2577
+[[package]]
2578
+name = "icu_properties"
2579
+version = "2.2.0"
2580
+source = "registry+https://github.com/rust-lang/crates.io-index"
2581
+checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
2582
+dependencies = [
2583
+ "icu_collections",
2584
+ "icu_locale_core",
2585
+ "icu_properties_data",
2586
+ "icu_provider",
2587
+ "zerotrie",
2588
+ "zerovec",
2589
+]
2590
+
2591
+[[package]]
2592
+name = "icu_properties_data"
2593
+version = "2.2.0"
2594
+source = "registry+https://github.com/rust-lang/crates.io-index"
2595
+checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
2596
+
2597
+[[package]]
2598
+name = "icu_provider"
2599
+version = "2.2.0"
2600
+source = "registry+https://github.com/rust-lang/crates.io-index"
2601
+checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
2602
+dependencies = [
2603
+ "displaydoc",
2604
+ "icu_locale_core",
2605
+ "writeable",
2606
+ "yoke 0.8.2",
2607
+ "zerofrom",
2608
+ "zerotrie",
2609
+ "zerovec",
2610
+]
2611
+
2612
+[[package]]
2613
+name = "id-arena"
2614
+version = "2.3.0"
2615
+source = "registry+https://github.com/rust-lang/crates.io-index"
2616
+checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
2617
+
2618
+[[package]]
2619
+name = "ident_case"
2620
+version = "1.0.1"
2621
+source = "registry+https://github.com/rust-lang/crates.io-index"
2622
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
2623
+
2624
+[[package]]
2625
+name = "idna"
2626
+version = "1.1.0"
2627
+source = "registry+https://github.com/rust-lang/crates.io-index"
2628
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
2629
+dependencies = [
2630
+ "idna_adapter",
2631
+ "smallvec 1.15.1",
2632
+ "utf8_iter",
2633
+]
2634
+
2635
+[[package]]
2636
+name = "idna_adapter"
2637
+version = "1.2.1"
2638
+source = "registry+https://github.com/rust-lang/crates.io-index"
2639
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
2640
+dependencies = [
2641
+ "icu_normalizer",
2642
+ "icu_properties",
2643
+]
2644
+
2645
+[[package]]
2646
+name = "image"
2647
+version = "0.25.10"
2648
+source = "registry+https://github.com/rust-lang/crates.io-index"
2649
+checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
2650
+dependencies = [
2651
+ "bytemuck",
2652
+ "byteorder-lite",
2653
+ "color_quant",
2654
+ "exr",
2655
+ "gif",
2656
+ "image-webp",
2657
+ "moxcms",
2658
+ "num-traits",
2659
+ "png",
2660
+ "qoi",
2661
+ "ravif",
2662
+ "rayon",
2663
+ "rgb",
2664
+ "tiff",
2665
+ "zune-core",
2666
+ "zune-jpeg",
2667
+]
2668
+
2669
+[[package]]
2670
+name = "image-webp"
2671
+version = "0.2.4"
2672
+source = "registry+https://github.com/rust-lang/crates.io-index"
2673
+checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
2674
+dependencies = [
2675
+ "byteorder-lite",
2676
+ "quick-error",
2677
+]
2678
+
2679
+[[package]]
2680
+name = "imgref"
2681
+version = "1.12.0"
2682
+source = "registry+https://github.com/rust-lang/crates.io-index"
2683
+checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8"
2684
+
2685
+[[package]]
2686
+name = "indexmap"
2687
+version = "1.9.3"
2688
+source = "registry+https://github.com/rust-lang/crates.io-index"
2689
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
2690
+dependencies = [
2691
+ "autocfg",
2692
+ "hashbrown 0.12.3",
2693
+ "serde",
2694
+]
2695
+
2696
+[[package]]
2697
+name = "indexmap"
2698
+version = "2.14.0"
2699
+source = "registry+https://github.com/rust-lang/crates.io-index"
2700
+checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
2701
+dependencies = [
2702
+ "equivalent",
2703
+ "hashbrown 0.17.0",
2704
+ "serde",
2705
+ "serde_core",
2706
+]
2707
+
2708
+[[package]]
2709
+name = "indicatif"
2710
+version = "0.17.11"
2711
+source = "registry+https://github.com/rust-lang/crates.io-index"
2712
+checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235"
2713
+dependencies = [
2714
+ "console 0.15.11",
2715
+ "number_prefix",
2716
+ "portable-atomic",
2717
+ "unicode-width 0.2.2",
2718
+ "web-time",
2719
+]
2720
+
2721
+[[package]]
2722
+name = "indicatif"
2723
+version = "0.18.4"
2724
+source = "registry+https://github.com/rust-lang/crates.io-index"
2725
+checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb"
2726
+dependencies = [
2727
+ "console 0.16.3",
2728
+ "portable-atomic",
2729
+ "rayon",
2730
+ "unicode-width 0.2.2",
2731
+ "unit-prefix",
2732
+ "web-time",
2733
+]
2734
+
2735
+[[package]]
2736
+name = "interpolate_name"
2737
+version = "0.2.4"
2738
+source = "registry+https://github.com/rust-lang/crates.io-index"
2739
+checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
2740
+dependencies = [
2741
+ "proc-macro2",
2742
+ "quote",
2743
+ "syn 2.0.117",
2744
+]
2745
+
2746
+[[package]]
2747
+name = "interprocess"
2748
+version = "2.4.0"
2749
+source = "registry+https://github.com/rust-lang/crates.io-index"
2750
+checksum = "6be5e5c847dbdb44564bd85294740d031f4f8aeb3464e5375ef7141f7538db69"
2751
+dependencies = [
2752
+ "doctest-file",
2753
+ "libc",
2754
+ "recvmsg",
2755
+ "widestring",
2756
+ "windows-sys 0.52.0",
2757
+]
2758
+
2759
+[[package]]
2760
+name = "ipnet"
2761
+version = "2.12.0"
2762
+source = "registry+https://github.com/rust-lang/crates.io-index"
2763
+checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
2764
+
2765
+[[package]]
2766
+name = "iri-string"
2767
+version = "0.7.12"
2768
+source = "registry+https://github.com/rust-lang/crates.io-index"
2769
+checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20"
2770
+dependencies = [
2771
+ "memchr",
2772
+ "serde",
2773
+]
2774
+
2775
+[[package]]
2776
+name = "is_terminal_polyfill"
2777
+version = "1.70.2"
2778
+source = "registry+https://github.com/rust-lang/crates.io-index"
2779
+checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
2780
+
2781
+[[package]]
2782
+name = "itertools"
2783
+version = "0.14.0"
2784
+source = "registry+https://github.com/rust-lang/crates.io-index"
2785
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
2786
+dependencies = [
2787
+ "either",
2788
+]
2789
+
2790
+[[package]]
2791
+name = "itoa"
2792
+version = "1.0.18"
2793
+source = "registry+https://github.com/rust-lang/crates.io-index"
2794
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
2795
+
2796
+[[package]]
2797
+name = "jiff"
2798
+version = "0.2.23"
2799
+source = "registry+https://github.com/rust-lang/crates.io-index"
2800
+checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359"
2801
+dependencies = [
2802
+ "jiff-static",
2803
+ "log",
2804
+ "portable-atomic",
2805
+ "portable-atomic-util",
2806
+ "serde_core",
2807
+]
2808
+
2809
+[[package]]
2810
+name = "jiff-static"
2811
+version = "0.2.23"
2812
+source = "registry+https://github.com/rust-lang/crates.io-index"
2813
+checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4"
2814
+dependencies = [
2815
+ "proc-macro2",
2816
+ "quote",
2817
+ "syn 2.0.117",
2818
+]
2819
+
2820
+[[package]]
2821
+name = "jni"
2822
+version = "0.21.1"
2823
+source = "registry+https://github.com/rust-lang/crates.io-index"
2824
+checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
2825
+dependencies = [
2826
+ "cesu8",
2827
+ "cfg-if",
2828
+ "combine",
2829
+ "jni-sys 0.3.1",
2830
+ "log",
2831
+ "thiserror 1.0.69",
2832
+ "walkdir",
2833
+ "windows-sys 0.45.0",
2834
+]
2835
+
2836
+[[package]]
2837
+name = "jni-sys"
2838
+version = "0.3.1"
2839
+source = "registry+https://github.com/rust-lang/crates.io-index"
2840
+checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
2841
+dependencies = [
2842
+ "jni-sys 0.4.1",
2843
+]
2844
+
2845
+[[package]]
2846
+name = "jni-sys"
2847
+version = "0.4.1"
2848
+source = "registry+https://github.com/rust-lang/crates.io-index"
2849
+checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"
2850
+dependencies = [
2851
+ "jni-sys-macros",
2852
+]
2853
+
2854
+[[package]]
2855
+name = "jni-sys-macros"
2856
+version = "0.4.1"
2857
+source = "registry+https://github.com/rust-lang/crates.io-index"
2858
+checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
2859
+dependencies = [
2860
+ "quote",
2861
+ "syn 2.0.117",
2862
+]
2863
+
2864
+[[package]]
2865
+name = "jobserver"
2866
+version = "0.1.34"
2867
+source = "registry+https://github.com/rust-lang/crates.io-index"
2868
+checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
2869
+dependencies = [
2870
+ "getrandom 0.3.4",
2871
+ "libc",
2872
+]
2873
+
2874
+[[package]]
2875
+name = "js-sys"
2876
+version = "0.3.95"
2877
+source = "registry+https://github.com/rust-lang/crates.io-index"
2878
+checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca"
2879
+dependencies = [
2880
+ "cfg-if",
2881
+ "futures-util",
2882
+ "once_cell",
2883
+ "wasm-bindgen",
2884
+]
2885
+
2886
+[[package]]
2887
+name = "lazy_static"
2888
+version = "1.5.0"
2889
+source = "registry+https://github.com/rust-lang/crates.io-index"
2890
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
2891
+
2892
+[[package]]
2893
+name = "leb128fmt"
2894
+version = "0.1.0"
2895
+source = "registry+https://github.com/rust-lang/crates.io-index"
2896
+checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
2897
+
2898
+[[package]]
2899
+name = "lebe"
2900
+version = "0.5.3"
2901
+source = "registry+https://github.com/rust-lang/crates.io-index"
2902
+checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
2903
+
2904
+[[package]]
2905
+name = "libc"
2906
+version = "0.2.184"
2907
+source = "registry+https://github.com/rust-lang/crates.io-index"
2908
+checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af"
2909
+
2910
+[[package]]
2911
+name = "libfuzzer-sys"
2912
+version = "0.4.12"
2913
+source = "registry+https://github.com/rust-lang/crates.io-index"
2914
+checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d"
2915
+dependencies = [
2916
+ "arbitrary",
2917
+ "cc",
2918
+]
2919
+
2920
+[[package]]
2921
+name = "libloading"
2922
+version = "0.8.9"
2923
+source = "registry+https://github.com/rust-lang/crates.io-index"
2924
+checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
2925
+dependencies = [
2926
+ "cfg-if",
2927
+ "windows-link 0.2.1",
2928
+]
2929
+
2930
+[[package]]
2931
+name = "libm"
2932
+version = "0.2.16"
2933
+source = "registry+https://github.com/rust-lang/crates.io-index"
2934
+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
2935
+
2936
+[[package]]
2937
+name = "libredox"
2938
+version = "0.1.16"
2939
+source = "registry+https://github.com/rust-lang/crates.io-index"
2940
+checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c"
2941
+dependencies = [
2942
+ "libc",
2943
+]
2944
+
2945
+[[package]]
2946
+name = "linux-raw-sys"
2947
+version = "0.12.1"
2948
+source = "registry+https://github.com/rust-lang/crates.io-index"
2949
+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
2950
+
2951
+[[package]]
2952
+name = "litemap"
2953
+version = "0.8.2"
2954
+source = "registry+https://github.com/rust-lang/crates.io-index"
2955
+checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
2956
+
2957
+[[package]]
2958
+name = "litrs"
2959
+version = "1.0.0"
2960
+source = "registry+https://github.com/rust-lang/crates.io-index"
2961
+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
2962
+
2963
+[[package]]
2964
+name = "llguidance"
2965
+version = "1.7.2"
2966
+source = "registry+https://github.com/rust-lang/crates.io-index"
2967
+checksum = "b3b5dad652ff9a18c02c6598773553f0e57a33ee28f86de801b1fa8161b9e2af"
2968
+dependencies = [
2969
+ "anyhow",
2970
+ "derivre",
2971
+ "indexmap 2.14.0",
2972
+ "regex-syntax",
2973
+ "serde",
2974
+ "serde_json",
2975
+ "toktrie",
2976
+]
2977
+
2978
+[[package]]
2979
+name = "lock_api"
2980
+version = "0.4.14"
2981
+source = "registry+https://github.com/rust-lang/crates.io-index"
2982
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
2983
+dependencies = [
2984
+ "scopeguard",
2985
+]
2986
+
2987
+[[package]]
2988
+name = "log"
2989
+version = "0.4.29"
2990
+source = "registry+https://github.com/rust-lang/crates.io-index"
2991
+checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
2992
+
2993
+[[package]]
2994
+name = "loom"
2995
+version = "0.5.6"
2996
+source = "registry+https://github.com/rust-lang/crates.io-index"
2997
+checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5"
2998
+dependencies = [
2999
+ "cfg-if",
3000
+ "generator",
3001
+ "scoped-tls",
3002
+ "serde",
3003
+ "serde_json",
3004
+ "tracing",
3005
+ "tracing-subscriber",
3006
+]
3007
+
3008
+[[package]]
3009
+name = "loop9"
3010
+version = "0.1.5"
3011
+source = "registry+https://github.com/rust-lang/crates.io-index"
3012
+checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062"
3013
+dependencies = [
3014
+ "imgref",
3015
+]
3016
+
3017
+[[package]]
3018
+name = "lrtable"
3019
+version = "0.14.1"
3020
+source = "registry+https://github.com/rust-lang/crates.io-index"
3021
+checksum = "b15ad6a43e5cff4ac046d51281d2256a36d1440065eab53ccce9362b48db5b42"
3022
+dependencies = [
3023
+ "cfgrammar",
3024
+ "fnv",
3025
+ "num-traits",
3026
+ "sparsevec",
3027
+ "vob",
3028
+]
3029
+
3030
+[[package]]
3031
+name = "lru-slab"
3032
+version = "0.1.2"
3033
+source = "registry+https://github.com/rust-lang/crates.io-index"
3034
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
3035
+
3036
+[[package]]
3037
+name = "mac"
3038
+version = "0.1.1"
3039
+source = "registry+https://github.com/rust-lang/crates.io-index"
3040
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
3041
+
3042
+[[package]]
3043
+name = "macro_rules_attribute"
3044
+version = "0.2.2"
3045
+source = "registry+https://github.com/rust-lang/crates.io-index"
3046
+checksum = "65049d7923698040cd0b1ddcced9b0eb14dd22c5f86ae59c3740eab64a676520"
3047
+dependencies = [
3048
+ "macro_rules_attribute-proc_macro",
3049
+ "paste",
3050
+]
3051
+
3052
+[[package]]
3053
+name = "macro_rules_attribute-proc_macro"
3054
+version = "0.2.2"
3055
+source = "registry+https://github.com/rust-lang/crates.io-index"
3056
+checksum = "670fdfda89751bc4a84ac13eaa63e205cf0fd22b4c9a5fbfa085b63c1f1d3a30"
3057
+
3058
+[[package]]
3059
+name = "malloc_buf"
3060
+version = "0.0.6"
3061
+source = "registry+https://github.com/rust-lang/crates.io-index"
3062
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
3063
+dependencies = [
3064
+ "libc",
3065
+]
3066
+
3067
+[[package]]
3068
+name = "markup5ever"
3069
+version = "0.36.1"
3070
+source = "registry+https://github.com/rust-lang/crates.io-index"
3071
+checksum = "6c3294c4d74d0742910f8c7b466f44dda9eb2d5742c1e430138df290a1e8451c"
3072
+dependencies = [
3073
+ "log",
3074
+ "tendril 0.4.3",
3075
+ "web_atoms",
3076
+]
3077
+
3078
+[[package]]
3079
+name = "markup5ever"
3080
+version = "0.38.0"
3081
+source = "registry+https://github.com/rust-lang/crates.io-index"
3082
+checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862"
3083
+dependencies = [
3084
+ "log",
3085
+ "tendril 0.5.0",
3086
+ "web_atoms",
3087
+]
3088
+
3089
+[[package]]
3090
+name = "matchers"
3091
+version = "0.2.0"
3092
+source = "registry+https://github.com/rust-lang/crates.io-index"
3093
+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
3094
+dependencies = [
3095
+ "regex-automata",
3096
+]
3097
+
3098
+[[package]]
3099
+name = "matrixmultiply"
3100
+version = "0.3.10"
3101
+source = "registry+https://github.com/rust-lang/crates.io-index"
3102
+checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
3103
+dependencies = [
3104
+ "autocfg",
3105
+ "rawpointer",
3106
+]
3107
+
3108
+[[package]]
3109
+name = "maybe-rayon"
3110
+version = "0.1.1"
3111
+source = "registry+https://github.com/rust-lang/crates.io-index"
3112
+checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
3113
+dependencies = [
3114
+ "cfg-if",
3115
+ "rayon",
3116
+]
3117
+
3118
+[[package]]
3119
+name = "memchr"
3120
+version = "2.8.0"
3121
+source = "registry+https://github.com/rust-lang/crates.io-index"
3122
+checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
3123
+
3124
+[[package]]
3125
+name = "memmap2"
3126
+version = "0.9.10"
3127
+source = "registry+https://github.com/rust-lang/crates.io-index"
3128
+checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
3129
+dependencies = [
3130
+ "libc",
3131
+ "stable_deref_trait",
3132
+]
3133
+
3134
+[[package]]
3135
+name = "memo-map"
3136
+version = "0.3.3"
3137
+source = "registry+https://github.com/rust-lang/crates.io-index"
3138
+checksum = "38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b"
3139
+
3140
+[[package]]
3141
+name = "metal"
3142
+version = "0.29.0"
3143
+source = "registry+https://github.com/rust-lang/crates.io-index"
3144
+checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21"
3145
+dependencies = [
3146
+ "bitflags 2.11.0",
3147
+ "block",
3148
+ "core-graphics-types",
3149
+ "foreign-types",
3150
+ "log",
3151
+ "objc",
3152
+ "paste",
3153
+]
3154
+
3155
+[[package]]
3156
+name = "mime"
3157
+version = "0.3.17"
3158
+source = "registry+https://github.com/rust-lang/crates.io-index"
3159
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
3160
+
3161
+[[package]]
3162
+name = "mime_guess"
3163
+version = "2.0.5"
3164
+source = "registry+https://github.com/rust-lang/crates.io-index"
3165
+checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
3166
+dependencies = [
3167
+ "mime",
3168
+ "unicase",
3169
+]
3170
+
3171
+[[package]]
3172
+name = "minijinja"
3173
+version = "2.19.0"
3174
+source = "registry+https://github.com/rust-lang/crates.io-index"
3175
+checksum = "805bfd7352166bae857ee569628b52bcd85a1cecf7810861ebceb1686b72b75d"
3176
+dependencies = [
3177
+ "memo-map",
3178
+ "serde",
3179
+ "serde_json",
3180
+]
3181
+
3182
+[[package]]
3183
+name = "minijinja-contrib"
3184
+version = "2.19.0"
3185
+source = "registry+https://github.com/rust-lang/crates.io-index"
3186
+checksum = "45092d80391870622fcf3bd82f5d2af18f99533ea60debb4bc9db0c76f0e809a"
3187
+dependencies = [
3188
+ "minijinja",
3189
+ "serde",
3190
+]
3191
+
3192
+[[package]]
3193
+name = "minimal-lexical"
3194
+version = "0.2.1"
3195
+source = "registry+https://github.com/rust-lang/crates.io-index"
3196
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
3197
+
3198
+[[package]]
3199
+name = "miniz_oxide"
3200
+version = "0.8.9"
3201
+source = "registry+https://github.com/rust-lang/crates.io-index"
3202
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
3203
+dependencies = [
3204
+ "adler2",
3205
+ "simd-adler32",
3206
+]
3207
+
3208
+[[package]]
3209
+name = "mio"
3210
+version = "1.2.0"
3211
+source = "registry+https://github.com/rust-lang/crates.io-index"
3212
+checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
3213
+dependencies = [
3214
+ "libc",
3215
+ "log",
3216
+ "wasi",
3217
+ "windows-sys 0.61.2",
3218
+]
3219
+
3220
+[[package]]
3221
+name = "mistralrs"
3222
+version = "0.8.1"
3223
+source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006"
3224
+dependencies = [
3225
+ "anyhow",
3226
+ "candle-core",
3227
+ "candle-nn",
3228
+ "clap 4.6.0",
3229
+ "either",
3230
+ "futures",
3231
+ "image",
3232
+ "indexmap 2.14.0",
3233
+ "mistralrs-core",
3234
+ "mistralrs-macros",
3235
+ "rand 0.9.3",
3236
+ "reqwest 0.13.2",
3237
+ "schemars 1.2.1",
3238
+ "serde",
3239
+ "serde_json",
3240
+ "thiserror 2.0.18",
3241
+ "tokio",
3242
+ "tracing",
3243
+ "tracing-subscriber",
3244
+ "walkdir",
3245
+]
3246
+
3247
+[[package]]
3248
+name = "mistralrs-audio"
3249
+version = "0.8.1"
3250
+source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006"
3251
+dependencies = [
3252
+ "anyhow",
3253
+ "apodize",
3254
+ "hound",
3255
+ "symphonia",
3256
+]
3257
+
3258
+[[package]]
3259
+name = "mistralrs-core"
3260
+version = "0.8.1"
3261
+source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006"
3262
+dependencies = [
3263
+ "ahash",
3264
+ "akin",
3265
+ "anyhow",
3266
+ "apodize",
3267
+ "as-any",
3268
+ "async-trait",
3269
+ "base64 0.22.1",
3270
+ "bm25",
3271
+ "bytemuck",
3272
+ "bytemuck_derive",
3273
+ "candle-core",
3274
+ "candle-metal-kernels",
3275
+ "candle-nn",
3276
+ "cfgrammar",
3277
+ "chrono",
3278
+ "clap 4.6.0",
3279
+ "csv",
3280
+ "derive-new",
3281
+ "derive_more",
3282
+ "dirs",
3283
+ "either",
3284
+ "float8",
3285
+ "futures",
3286
+ "galil-seiferas",
3287
+ "half",
3288
+ "hashbrown 0.16.1",
3289
+ "hf-hub",
3290
+ "hound",
3291
+ "html2text",
3292
+ "http",
3293
+ "image",
3294
+ "indexmap 2.14.0",
3295
+ "indicatif 0.18.4",
3296
+ "interprocess",
3297
+ "itertools",
3298
+ "libc",
3299
+ "llguidance",
3300
+ "lrtable",
3301
+ "minijinja",
3302
+ "minijinja-contrib",
3303
+ "mistralrs-audio",
3304
+ "mistralrs-mcp",
3305
+ "mistralrs-paged-attn",
3306
+ "mistralrs-quant",
3307
+ "mistralrs-vision",
3308
+ "num-traits",
3309
+ "objc",
3310
+ "objc2-metal",
3311
+ "openai-harmony",
3312
+ "ordered-float",
3313
+ "parking_lot",
3314
+ "radix_trie",
3315
+ "rand 0.9.3",
3316
+ "rand_distr 0.5.1",
3317
+ "rand_isaac",
3318
+ "rayon",
3319
+ "regex",
3320
+ "regex-automata",
3321
+ "reqwest 0.13.2",
3322
+ "rubato",
3323
+ "rust-mcp-schema",
3324
+ "rustc-hash 2.1.2",
3325
+ "rustfft",
3326
+ "safetensors 0.7.0",
3327
+ "schemars 1.2.1",
3328
+ "scraper",
3329
+ "serde",
3330
+ "serde-big-array",
3331
+ "serde-saphyr",
3332
+ "serde_json",
3333
+ "serde_plain",
3334
+ "statrs",
3335
+ "strum 0.27.2",
3336
+ "symphonia",
3337
+ "sysinfo",
3338
+ "thiserror 2.0.18",
3339
+ "tokenizers 0.21.4",
3340
+ "tokio",
3341
+ "tokio-rayon",
3342
+ "tokio-tungstenite",
3343
+ "toktrie",
3344
+ "toktrie_hf_tokenizers",
3345
+ "toml",
3346
+ "tqdm",
3347
+ "tracing",
3348
+ "tracing-subscriber",
3349
+ "urlencoding",
3350
+ "uuid 1.23.0",
3351
+ "variantly",
3352
+ "vob",
3353
+]
3354
+
3355
+[[package]]
3356
+name = "mistralrs-macros"
3357
+version = "0.8.1"
3358
+source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006"
3359
+dependencies = [
3360
+ "darling 0.23.0",
3361
+ "proc-macro2",
3362
+ "quote",
3363
+ "syn 2.0.117",
3364
+]
3365
+
3366
+[[package]]
3367
+name = "mistralrs-mcp"
3368
+version = "0.8.1"
3369
+source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006"
3370
+dependencies = [
3371
+ "anyhow",
3372
+ "async-trait",
3373
+ "futures-util",
3374
+ "http",
3375
+ "reqwest 0.13.2",
3376
+ "rust-mcp-schema",
3377
+ "serde",
3378
+ "serde_json",
3379
+ "tokio",
3380
+ "tokio-tungstenite",
3381
+ "tracing",
3382
+ "utoipa",
3383
+ "uuid 1.23.0",
3384
+]
3385
+
3386
+[[package]]
3387
+name = "mistralrs-paged-attn"
3388
+version = "0.8.1"
3389
+source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006"
3390
+dependencies = [
3391
+ "anyhow",
3392
+ "candle-core",
3393
+ "candle-metal-kernels",
3394
+ "dispatch2",
3395
+ "float8",
3396
+ "half",
3397
+ "objc2-foundation",
3398
+ "objc2-metal",
3399
+ "thiserror 2.0.18",
3400
+]
3401
+
3402
+[[package]]
3403
+name = "mistralrs-quant"
3404
+version = "0.8.1"
3405
+source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006"
3406
+dependencies = [
3407
+ "byteorder",
3408
+ "candle-core",
3409
+ "candle-metal-kernels",
3410
+ "candle-nn",
3411
+ "dispatch2",
3412
+ "float8",
3413
+ "half",
3414
+ "hf-hub",
3415
+ "lazy_static",
3416
+ "memmap2",
3417
+ "objc2-foundation",
3418
+ "objc2-metal",
3419
+ "paste",
3420
+ "rayon",
3421
+ "regex",
3422
+ "safetensors 0.7.0",
3423
+ "serde",
3424
+ "serde_json",
3425
+ "thiserror 2.0.18",
3426
+ "tokio",
3427
+ "tracing",
3428
+ "yoke 0.8.2",
3429
+]
3430
+
3431
+[[package]]
3432
+name = "mistralrs-vision"
3433
+version = "0.8.1"
3434
+source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006"
3435
+dependencies = [
3436
+ "candle-core",
3437
+ "image",
3438
+ "rayon",
3439
+]
3440
+
3441
+[[package]]
3442
+name = "monostate"
3443
+version = "0.1.18"
3444
+source = "registry+https://github.com/rust-lang/crates.io-index"
3445
+checksum = "3341a273f6c9d5bef1908f17b7267bbab0e95c9bf69a0d4dcf8e9e1b2c76ef67"
3446
+dependencies = [
3447
+ "monostate-impl",
3448
+ "serde",
3449
+ "serde_core",
3450
+]
3451
+
3452
+[[package]]
3453
+name = "monostate-impl"
3454
+version = "0.1.18"
3455
+source = "registry+https://github.com/rust-lang/crates.io-index"
3456
+checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9"
3457
+dependencies = [
3458
+ "proc-macro2",
3459
+ "quote",
3460
+ "syn 2.0.117",
3461
+]
3462
+
3463
+[[package]]
3464
+name = "moxcms"
3465
+version = "0.8.1"
3466
+source = "registry+https://github.com/rust-lang/crates.io-index"
3467
+checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
3468
+dependencies = [
3469
+ "num-traits",
3470
+ "pxfm",
3471
+]
3472
+
3473
+[[package]]
3474
+name = "nalgebra"
3475
+version = "0.33.3"
3476
+source = "registry+https://github.com/rust-lang/crates.io-index"
3477
+checksum = "9d43ddcacf343185dfd6de2ee786d9e8b1c2301622afab66b6c73baf9882abfd"
3478
+dependencies = [
3479
+ "approx",
3480
+ "matrixmultiply",
3481
+ "num-complex",
3482
+ "num-rational",
3483
+ "num-traits",
3484
+ "rand 0.8.5",
3485
+ "rand_distr 0.4.3",
3486
+ "simba",
3487
+ "typenum",
3488
+]
3489
+
3490
+[[package]]
3491
+name = "new_debug_unreachable"
3492
+version = "1.0.6"
3493
+source = "registry+https://github.com/rust-lang/crates.io-index"
3494
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
3495
+
3496
+[[package]]
3497
+name = "nibble_vec"
3498
+version = "0.1.0"
3499
+source = "registry+https://github.com/rust-lang/crates.io-index"
3500
+checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
3501
+dependencies = [
3502
+ "smallvec 1.15.1",
3503
+]
3504
+
3505
+[[package]]
3506
+name = "nohash-hasher"
3507
+version = "0.2.0"
3508
+source = "registry+https://github.com/rust-lang/crates.io-index"
3509
+checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
3510
+
3511
+[[package]]
3512
+name = "nom"
3513
+version = "7.1.3"
3514
+source = "registry+https://github.com/rust-lang/crates.io-index"
3515
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
3516
+dependencies = [
3517
+ "memchr",
3518
+ "minimal-lexical",
3519
+]
3520
+
3521
+[[package]]
3522
+name = "nom"
3523
+version = "8.0.0"
3524
+source = "registry+https://github.com/rust-lang/crates.io-index"
3525
+checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
3526
+dependencies = [
3527
+ "memchr",
3528
+]
3529
+
3530
+[[package]]
3531
+name = "noop_proc_macro"
3532
+version = "0.3.0"
3533
+source = "registry+https://github.com/rust-lang/crates.io-index"
3534
+checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
3535
+
3536
+[[package]]
3537
+name = "ntapi"
3538
+version = "0.4.3"
3539
+source = "registry+https://github.com/rust-lang/crates.io-index"
3540
+checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae"
3541
+dependencies = [
3542
+ "winapi",
3543
+]
3544
+
3545
+[[package]]
3546
+name = "nu-ansi-term"
3547
+version = "0.50.3"
3548
+source = "registry+https://github.com/rust-lang/crates.io-index"
3549
+checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
3550
+dependencies = [
3551
+ "windows-sys 0.61.2",
3552
+]
3553
+
3554
+[[package]]
3555
+name = "num"
3556
+version = "0.4.3"
3557
+source = "registry+https://github.com/rust-lang/crates.io-index"
3558
+checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
3559
+dependencies = [
3560
+ "num-bigint",
3561
+ "num-complex",
3562
+ "num-integer",
3563
+ "num-iter",
3564
+ "num-rational",
3565
+ "num-traits",
3566
+]
3567
+
3568
+[[package]]
3569
+name = "num-bigint"
3570
+version = "0.4.6"
3571
+source = "registry+https://github.com/rust-lang/crates.io-index"
3572
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
3573
+dependencies = [
3574
+ "num-integer",
3575
+ "num-traits",
3576
+]
3577
+
3578
+[[package]]
3579
+name = "num-complex"
3580
+version = "0.4.6"
3581
+source = "registry+https://github.com/rust-lang/crates.io-index"
3582
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
3583
+dependencies = [
3584
+ "bytemuck",
3585
+ "num-traits",
3586
+]
3587
+
3588
+[[package]]
3589
+name = "num-conv"
3590
+version = "0.2.1"
3591
+source = "registry+https://github.com/rust-lang/crates.io-index"
3592
+checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967"
3593
+
3594
+[[package]]
3595
+name = "num-derive"
3596
+version = "0.4.2"
3597
+source = "registry+https://github.com/rust-lang/crates.io-index"
3598
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
3599
+dependencies = [
3600
+ "proc-macro2",
3601
+ "quote",
3602
+ "syn 2.0.117",
3603
+]
3604
+
3605
+[[package]]
3606
+name = "num-integer"
3607
+version = "0.1.46"
3608
+source = "registry+https://github.com/rust-lang/crates.io-index"
3609
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
3610
+dependencies = [
3611
+ "num-traits",
3612
+]
3613
+
3614
+[[package]]
3615
+name = "num-iter"
3616
+version = "0.1.45"
3617
+source = "registry+https://github.com/rust-lang/crates.io-index"
3618
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
3619
+dependencies = [
3620
+ "autocfg",
3621
+ "num-integer",
3622
+ "num-traits",
3623
+]
3624
+
3625
+[[package]]
3626
+name = "num-rational"
3627
+version = "0.4.2"
3628
+source = "registry+https://github.com/rust-lang/crates.io-index"
3629
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
3630
+dependencies = [
3631
+ "num-bigint",
3632
+ "num-integer",
3633
+ "num-traits",
3634
+]
3635
+
3636
+[[package]]
3637
+name = "num-traits"
3638
+version = "0.2.19"
3639
+source = "registry+https://github.com/rust-lang/crates.io-index"
3640
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
3641
+dependencies = [
3642
+ "autocfg",
3643
+ "libm",
3644
+]
3645
+
3646
+[[package]]
3647
+name = "num_cpus"
3648
+version = "1.17.0"
3649
+source = "registry+https://github.com/rust-lang/crates.io-index"
3650
+checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
3651
+dependencies = [
3652
+ "hermit-abi 0.5.2",
3653
+ "libc",
3654
+]
3655
+
3656
+[[package]]
3657
+name = "number_prefix"
3658
+version = "0.4.0"
3659
+source = "registry+https://github.com/rust-lang/crates.io-index"
3660
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
3661
+
3662
+[[package]]
3663
+name = "objc"
3664
+version = "0.2.7"
3665
+source = "registry+https://github.com/rust-lang/crates.io-index"
3666
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
3667
+dependencies = [
3668
+ "malloc_buf",
3669
+]
3670
+
3671
+[[package]]
3672
+name = "objc2"
3673
+version = "0.6.4"
3674
+source = "registry+https://github.com/rust-lang/crates.io-index"
3675
+checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
3676
+dependencies = [
3677
+ "objc2-encode",
3678
+]
3679
+
3680
+[[package]]
3681
+name = "objc2-core-foundation"
3682
+version = "0.3.2"
3683
+source = "registry+https://github.com/rust-lang/crates.io-index"
3684
+checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
3685
+dependencies = [
3686
+ "bitflags 2.11.0",
3687
+ "dispatch2",
3688
+ "objc2",
3689
+]
3690
+
3691
+[[package]]
3692
+name = "objc2-encode"
3693
+version = "4.1.0"
3694
+source = "registry+https://github.com/rust-lang/crates.io-index"
3695
+checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
3696
+
3697
+[[package]]
3698
+name = "objc2-foundation"
3699
+version = "0.3.2"
3700
+source = "registry+https://github.com/rust-lang/crates.io-index"
3701
+checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
3702
+dependencies = [
3703
+ "bitflags 2.11.0",
3704
+ "block2",
3705
+ "libc",
3706
+ "objc2",
3707
+ "objc2-core-foundation",
3708
+]
3709
+
3710
+[[package]]
3711
+name = "objc2-io-kit"
3712
+version = "0.3.2"
3713
+source = "registry+https://github.com/rust-lang/crates.io-index"
3714
+checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15"
3715
+dependencies = [
3716
+ "libc",
3717
+ "objc2-core-foundation",
3718
+]
3719
+
3720
+[[package]]
3721
+name = "objc2-metal"
3722
+version = "0.3.2"
3723
+source = "registry+https://github.com/rust-lang/crates.io-index"
3724
+checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794"
3725
+dependencies = [
3726
+ "bitflags 2.11.0",
3727
+ "block2",
3728
+ "dispatch2",
3729
+ "objc2",
3730
+ "objc2-core-foundation",
3731
+ "objc2-foundation",
3732
+]
3733
+
3734
+[[package]]
3735
+name = "once_cell"
3736
+version = "1.21.4"
3737
+source = "registry+https://github.com/rust-lang/crates.io-index"
3738
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
3739
+
3740
+[[package]]
3741
+name = "once_cell_polyfill"
3742
+version = "1.70.2"
3743
+source = "registry+https://github.com/rust-lang/crates.io-index"
3744
+checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
3745
+
3746
+[[package]]
3747
+name = "onde"
3748
+version = "0.1.3"
3749
+dependencies = [
3750
+ "anyhow",
3751
+ "cc",
3752
+ "hf-hub",
3753
+ "home",
3754
+ "log",
3755
+ "mistralrs",
3756
+ "mistralrs-core",
3757
+ "serde",
3758
+ "thiserror 2.0.18",
3759
+ "tokio",
3760
+ "tsync",
3761
+ "uniffi",
3762
+]
3763
+
3764
+[[package]]
3765
+name = "onig"
3766
+version = "6.5.1"
3767
+source = "registry+https://github.com/rust-lang/crates.io-index"
3768
+checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0"
3769
+dependencies = [
3770
+ "bitflags 2.11.0",
3771
+ "libc",
3772
+ "once_cell",
3773
+ "onig_sys",
3774
+]
3775
+
3776
+[[package]]
3777
+name = "onig_sys"
3778
+version = "69.9.1"
3779
+source = "registry+https://github.com/rust-lang/crates.io-index"
3780
+checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc"
3781
+dependencies = [
3782
+ "cc",
3783
+ "pkg-config",
3784
+]
3785
+
3786
+[[package]]
3787
+name = "openai-harmony"
3788
+version = "0.0.8"
3789
+source = "registry+https://github.com/rust-lang/crates.io-index"
3790
+checksum = "e77e82af451fc95deeb728a40b84db8ee82d341e136c268de415123a560b9b72"
3791
+dependencies = [
3792
+ "anyhow",
3793
+ "base64 0.22.1",
3794
+ "bstr",
3795
+ "clap 4.6.0",
3796
+ "fancy-regex 0.13.0",
3797
+ "futures",
3798
+ "image",
3799
+ "regex",
3800
+ "reqwest 0.12.28",
3801
+ "rustc-hash 1.1.0",
3802
+ "serde",
3803
+ "serde_json",
3804
+ "serde_with",
3805
+ "sha1",
3806
+ "sha2",
3807
+ "thiserror 2.0.18",
3808
+]
3809
+
3810
+[[package]]
3811
+name = "openssl-probe"
3812
+version = "0.2.1"
3813
+source = "registry+https://github.com/rust-lang/crates.io-index"
3814
+checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
3815
+
3816
+[[package]]
3817
+name = "option-ext"
3818
+version = "0.2.0"
3819
+source = "registry+https://github.com/rust-lang/crates.io-index"
3820
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
3821
+
3822
+[[package]]
3823
+name = "ordered-float"
3824
+version = "5.3.0"
3825
+source = "registry+https://github.com/rust-lang/crates.io-index"
3826
+checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e"
3827
+dependencies = [
3828
+ "num-traits",
3829
+]
3830
+
3831
+[[package]]
3832
+name = "packedvec"
3833
+version = "1.2.5"
3834
+source = "registry+https://github.com/rust-lang/crates.io-index"
3835
+checksum = "a69e0a534dd2e6aefce319af62a0aa0066a76bdfcec0201dfe02df226bc9ec70"
3836
+dependencies = [
3837
+ "num-traits",
3838
+]
3839
+
3840
+[[package]]
3841
+name = "parking"
3842
+version = "2.2.1"
3843
+source = "registry+https://github.com/rust-lang/crates.io-index"
3844
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
3845
+
3846
+[[package]]
3847
+name = "parking_lot"
3848
+version = "0.12.5"
3849
+source = "registry+https://github.com/rust-lang/crates.io-index"
3850
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
3851
+dependencies = [
3852
+ "lock_api",
3853
+ "parking_lot_core",
3854
+]
3855
+
3856
+[[package]]
3857
+name = "parking_lot_core"
3858
+version = "0.9.12"
3859
+source = "registry+https://github.com/rust-lang/crates.io-index"
3860
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
3861
+dependencies = [
3862
+ "cfg-if",
3863
+ "libc",
3864
+ "redox_syscall",
3865
+ "smallvec 1.15.1",
3866
+ "windows-link 0.2.1",
3867
+]
3868
+
3869
+[[package]]
3870
+name = "paste"
3871
+version = "1.0.15"
3872
+source = "registry+https://github.com/rust-lang/crates.io-index"
3873
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
3874
+
3875
+[[package]]
3876
+name = "pastey"
3877
+version = "0.1.1"
3878
+source = "registry+https://github.com/rust-lang/crates.io-index"
3879
+checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec"
3880
+
3881
+[[package]]
3882
+name = "percent-encoding"
3883
+version = "2.3.2"
3884
+source = "registry+https://github.com/rust-lang/crates.io-index"
3885
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
3886
+
3887
+[[package]]
3888
+name = "phf"
3889
+version = "0.13.1"
3890
+source = "registry+https://github.com/rust-lang/crates.io-index"
3891
+checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
3892
+dependencies = [
3893
+ "phf_macros",
3894
+ "phf_shared",
3895
+ "serde",
3896
+]
3897
+
3898
+[[package]]
3899
+name = "phf_codegen"
3900
+version = "0.13.1"
3901
+source = "registry+https://github.com/rust-lang/crates.io-index"
3902
+checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1"
3903
+dependencies = [
3904
+ "phf_generator",
3905
+ "phf_shared",
3906
+]
3907
+
3908
+[[package]]
3909
+name = "phf_generator"
3910
+version = "0.13.1"
3911
+source = "registry+https://github.com/rust-lang/crates.io-index"
3912
+checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
3913
+dependencies = [
3914
+ "fastrand",
3915
+ "phf_shared",
3916
+]
3917
+
3918
+[[package]]
3919
+name = "phf_macros"
3920
+version = "0.13.1"
3921
+source = "registry+https://github.com/rust-lang/crates.io-index"
3922
+checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef"
3923
+dependencies = [
3924
+ "phf_generator",
3925
+ "phf_shared",
3926
+ "proc-macro2",
3927
+ "quote",
3928
+ "syn 2.0.117",
3929
+]
3930
+
3931
+[[package]]
3932
+name = "phf_shared"
3933
+version = "0.13.1"
3934
+source = "registry+https://github.com/rust-lang/crates.io-index"
3935
+checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
3936
+dependencies = [
3937
+ "siphasher",
3938
+]
3939
+
3940
+[[package]]
3941
+name = "pin-project-lite"
3942
+version = "0.2.17"
3943
+source = "registry+https://github.com/rust-lang/crates.io-index"
3944
+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
3945
+
3946
+[[package]]
3947
+name = "pkg-config"
3948
+version = "0.3.32"
3949
+source = "registry+https://github.com/rust-lang/crates.io-index"
3950
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
3951
+
3952
+[[package]]
3953
+name = "plain"
3954
+version = "0.2.3"
3955
+source = "registry+https://github.com/rust-lang/crates.io-index"
3956
+checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
3957
+
3958
+[[package]]
3959
+name = "png"
3960
+version = "0.18.1"
3961
+source = "registry+https://github.com/rust-lang/crates.io-index"
3962
+checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
3963
+dependencies = [
3964
+ "bitflags 2.11.0",
3965
+ "crc32fast",
3966
+ "fdeflate",
3967
+ "flate2",
3968
+ "miniz_oxide",
3969
+]
3970
+
3971
+[[package]]
3972
+name = "portable-atomic"
3973
+version = "1.13.1"
3974
+source = "registry+https://github.com/rust-lang/crates.io-index"
3975
+checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
3976
+
3977
+[[package]]
3978
+name = "portable-atomic-util"
3979
+version = "0.2.6"
3980
+source = "registry+https://github.com/rust-lang/crates.io-index"
3981
+checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3"
3982
+dependencies = [
3983
+ "portable-atomic",
3984
+]
3985
+
3986
+[[package]]
3987
+name = "potential_utf"
3988
+version = "0.1.5"
3989
+source = "registry+https://github.com/rust-lang/crates.io-index"
3990
+checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
3991
+dependencies = [
3992
+ "zerovec",
3993
+]
3994
+
3995
+[[package]]
3996
+name = "powerfmt"
3997
+version = "0.2.0"
3998
+source = "registry+https://github.com/rust-lang/crates.io-index"
3999
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
4000
+
4001
+[[package]]
4002
+name = "ppv-lite86"
4003
+version = "0.2.21"
4004
+source = "registry+https://github.com/rust-lang/crates.io-index"
4005
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
4006
+dependencies = [
4007
+ "zerocopy",
4008
+]
4009
+
4010
+[[package]]
4011
+name = "precomputed-hash"
4012
+version = "0.1.1"
4013
+source = "registry+https://github.com/rust-lang/crates.io-index"
4014
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
4015
+
4016
+[[package]]
4017
+name = "prettyplease"
4018
+version = "0.2.37"
4019
+source = "registry+https://github.com/rust-lang/crates.io-index"
4020
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
4021
+dependencies = [
4022
+ "proc-macro2",
4023
+ "syn 2.0.117",
4024
+]
4025
+
4026
+[[package]]
4027
+name = "primal-check"
4028
+version = "0.3.4"
4029
+source = "registry+https://github.com/rust-lang/crates.io-index"
4030
+checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08"
4031
+dependencies = [
4032
+ "num-integer",
4033
+]
4034
+
4035
+[[package]]
4036
+name = "proc-macro-error"
4037
+version = "1.0.4"
4038
+source = "registry+https://github.com/rust-lang/crates.io-index"
4039
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
4040
+dependencies = [
4041
+ "proc-macro-error-attr",
4042
+ "proc-macro2",
4043
+ "quote",
4044
+ "syn 1.0.109",
4045
+ "version_check",
4046
+]
4047
+
4048
+[[package]]
4049
+name = "proc-macro-error-attr"
4050
+version = "1.0.4"
4051
+source = "registry+https://github.com/rust-lang/crates.io-index"
4052
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
4053
+dependencies = [
4054
+ "proc-macro2",
4055
+ "quote",
4056
+ "version_check",
4057
+]
4058
+
4059
+[[package]]
4060
+name = "proc-macro2"
4061
+version = "1.0.106"
4062
+source = "registry+https://github.com/rust-lang/crates.io-index"
4063
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
4064
+dependencies = [
4065
+ "unicode-ident",
4066
+]
4067
+
4068
+[[package]]
4069
+name = "profiling"
4070
+version = "1.0.17"
4071
+source = "registry+https://github.com/rust-lang/crates.io-index"
4072
+checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
4073
+dependencies = [
4074
+ "profiling-procmacros",
4075
+]
4076
+
4077
+[[package]]
4078
+name = "profiling-procmacros"
4079
+version = "1.0.17"
4080
+source = "registry+https://github.com/rust-lang/crates.io-index"
4081
+checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
4082
+dependencies = [
4083
+ "quote",
4084
+ "syn 2.0.117",
4085
+]
4086
+
4087
+[[package]]
4088
+name = "pulp"
4089
+version = "0.21.5"
4090
+source = "registry+https://github.com/rust-lang/crates.io-index"
4091
+checksum = "96b86df24f0a7ddd5e4b95c94fc9ed8a98f1ca94d3b01bdce2824097e7835907"
4092
+dependencies = [
4093
+ "bytemuck",
4094
+ "cfg-if",
4095
+ "libm",
4096
+ "num-complex",
4097
+ "reborrow",
4098
+ "version_check",
4099
+]
4100
+
4101
+[[package]]
4102
+name = "pulp"
4103
+version = "0.22.2"
4104
+source = "registry+https://github.com/rust-lang/crates.io-index"
4105
+checksum = "2e205bb30d5b916c55e584c22201771bcf2bad9aabd5d4127f38387140c38632"
4106
+dependencies = [
4107
+ "bytemuck",
4108
+ "cfg-if",
4109
+ "libm",
4110
+ "num-complex",
4111
+ "paste",
4112
+ "pulp-wasm-simd-flag",
4113
+ "raw-cpuid",
4114
+ "reborrow",
4115
+ "version_check",
4116
+]
4117
+
4118
+[[package]]
4119
+name = "pulp-wasm-simd-flag"
4120
+version = "0.1.0"
4121
+source = "registry+https://github.com/rust-lang/crates.io-index"
4122
+checksum = "40e24eee682d89fb193496edf918a7f407d30175b2e785fe057e4392dfd182e0"
4123
+
4124
+[[package]]
4125
+name = "pxfm"
4126
+version = "0.1.28"
4127
+source = "registry+https://github.com/rust-lang/crates.io-index"
4128
+checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d"
4129
+
4130
+[[package]]
4131
+name = "qoi"
4132
+version = "0.4.1"
4133
+source = "registry+https://github.com/rust-lang/crates.io-index"
4134
+checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
4135
+dependencies = [
4136
+ "bytemuck",
4137
+]
4138
+
4139
+[[package]]
4140
+name = "quick-error"
4141
+version = "2.0.1"
4142
+source = "registry+https://github.com/rust-lang/crates.io-index"
4143
+checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
4144
+
4145
+[[package]]
4146
+name = "quinn"
4147
+version = "0.11.9"
4148
+source = "registry+https://github.com/rust-lang/crates.io-index"
4149
+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
4150
+dependencies = [
4151
+ "bytes",
4152
+ "cfg_aliases",
4153
+ "pin-project-lite",
4154
+ "quinn-proto",
4155
+ "quinn-udp",
4156
+ "rustc-hash 2.1.2",
4157
+ "rustls",
4158
+ "socket2",
4159
+ "thiserror 2.0.18",
4160
+ "tokio",
4161
+ "tracing",
4162
+ "web-time",
4163
+]
4164
+
4165
+[[package]]
4166
+name = "quinn-proto"
4167
+version = "0.11.14"
4168
+source = "registry+https://github.com/rust-lang/crates.io-index"
4169
+checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
4170
+dependencies = [
4171
+ "aws-lc-rs",
4172
+ "bytes",
4173
+ "getrandom 0.3.4",
4174
+ "lru-slab",
4175
+ "rand 0.9.3",
4176
+ "ring",
4177
+ "rustc-hash 2.1.2",
4178
+ "rustls",
4179
+ "rustls-pki-types",
4180
+ "slab",
4181
+ "thiserror 2.0.18",
4182
+ "tinyvec",
4183
+ "tracing",
4184
+ "web-time",
4185
+]
4186
+
4187
+[[package]]
4188
+name = "quinn-udp"
4189
+version = "0.5.14"
4190
+source = "registry+https://github.com/rust-lang/crates.io-index"
4191
+checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
4192
+dependencies = [
4193
+ "cfg_aliases",
4194
+ "libc",
4195
+ "once_cell",
4196
+ "socket2",
4197
+ "tracing",
4198
+ "windows-sys 0.60.2",
4199
+]
4200
+
4201
+[[package]]
4202
+name = "quote"
4203
+version = "1.0.45"
4204
+source = "registry+https://github.com/rust-lang/crates.io-index"
4205
+checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
4206
+dependencies = [
4207
+ "proc-macro2",
4208
+]
4209
+
4210
+[[package]]
4211
+name = "r-efi"
4212
+version = "5.3.0"
4213
+source = "registry+https://github.com/rust-lang/crates.io-index"
4214
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
4215
+
4216
+[[package]]
4217
+name = "r-efi"
4218
+version = "6.0.0"
4219
+source = "registry+https://github.com/rust-lang/crates.io-index"
4220
+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
4221
+
4222
+[[package]]
4223
+name = "radix_trie"
4224
+version = "0.3.0"
4225
+source = "registry+https://github.com/rust-lang/crates.io-index"
4226
+checksum = "3b4431027dcd37fc2a73ef740b5f233aa805897935b8bce0195e41bbf9a3289a"
4227
+dependencies = [
4228
+ "endian-type",
4229
+ "nibble_vec",
4230
+]
4231
+
4232
+[[package]]
4233
+name = "rand"
4234
+version = "0.8.5"
4235
+source = "registry+https://github.com/rust-lang/crates.io-index"
4236
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
4237
+dependencies = [
4238
+ "libc",
4239
+ "rand_chacha 0.3.1",
4240
+ "rand_core 0.6.4",
4241
+]
4242
+
4243
+[[package]]
4244
+name = "rand"
4245
+version = "0.9.3"
4246
+source = "registry+https://github.com/rust-lang/crates.io-index"
4247
+checksum = "7ec095654a25171c2124e9e3393a930bddbffdc939556c914957a4c3e0a87166"
4248
+dependencies = [
4249
+ "rand_chacha 0.9.0",
4250
+ "rand_core 0.9.5",
4251
+]
4252
+
4253
+[[package]]
4254
+name = "rand_chacha"
4255
+version = "0.3.1"
4256
+source = "registry+https://github.com/rust-lang/crates.io-index"
4257
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
4258
+dependencies = [
4259
+ "ppv-lite86",
4260
+ "rand_core 0.6.4",
4261
+]
4262
+
4263
+[[package]]
4264
+name = "rand_chacha"
4265
+version = "0.9.0"
4266
+source = "registry+https://github.com/rust-lang/crates.io-index"
4267
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
4268
+dependencies = [
4269
+ "ppv-lite86",
4270
+ "rand_core 0.9.5",
4271
+]
4272
+
4273
+[[package]]
4274
+name = "rand_core"
4275
+version = "0.6.4"
4276
+source = "registry+https://github.com/rust-lang/crates.io-index"
4277
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
4278
+dependencies = [
4279
+ "getrandom 0.2.17",
4280
+]
4281
+
4282
+[[package]]
4283
+name = "rand_core"
4284
+version = "0.9.5"
4285
+source = "registry+https://github.com/rust-lang/crates.io-index"
4286
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
4287
+dependencies = [
4288
+ "getrandom 0.3.4",
4289
+]
4290
+
4291
+[[package]]
4292
+name = "rand_distr"
4293
+version = "0.4.3"
4294
+source = "registry+https://github.com/rust-lang/crates.io-index"
4295
+checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
4296
+dependencies = [
4297
+ "num-traits",
4298
+ "rand 0.8.5",
4299
+]
4300
+
4301
+[[package]]
4302
+name = "rand_distr"
4303
+version = "0.5.1"
4304
+source = "registry+https://github.com/rust-lang/crates.io-index"
4305
+checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463"
4306
+dependencies = [
4307
+ "num-traits",
4308
+ "rand 0.9.3",
4309
+]
4310
+
4311
+[[package]]
4312
+name = "rand_isaac"
4313
+version = "0.4.0"
4314
+source = "registry+https://github.com/rust-lang/crates.io-index"
4315
+checksum = "3382fc9f0aad4f2e2a56b53d9133c8c810b4dbf21e7e370e24346161a5b2c7bd"
4316
+dependencies = [
4317
+ "rand_core 0.9.5",
4318
+]
4319
+
4320
+[[package]]
4321
+name = "rav1e"
4322
+version = "0.8.1"
4323
+source = "registry+https://github.com/rust-lang/crates.io-index"
4324
+checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b"
4325
+dependencies = [
4326
+ "aligned-vec",
4327
+ "arbitrary",
4328
+ "arg_enum_proc_macro",
4329
+ "arrayvec",
4330
+ "av-scenechange",
4331
+ "av1-grain",
4332
+ "bitstream-io",
4333
+ "built",
4334
+ "cfg-if",
4335
+ "interpolate_name",
4336
+ "itertools",
4337
+ "libc",
4338
+ "libfuzzer-sys",
4339
+ "log",
4340
+ "maybe-rayon",
4341
+ "new_debug_unreachable",
4342
+ "noop_proc_macro",
4343
+ "num-derive",
4344
+ "num-traits",
4345
+ "paste",
4346
+ "profiling",
4347
+ "rand 0.9.3",
4348
+ "rand_chacha 0.9.0",
4349
+ "simd_helpers",
4350
+ "thiserror 2.0.18",
4351
+ "v_frame",
4352
+ "wasm-bindgen",
4353
+]
4354
+
4355
+[[package]]
4356
+name = "ravif"
4357
+version = "0.13.0"
4358
+source = "registry+https://github.com/rust-lang/crates.io-index"
4359
+checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45"
4360
+dependencies = [
4361
+ "avif-serialize",
4362
+ "imgref",
4363
+ "loop9",
4364
+ "quick-error",
4365
+ "rav1e",
4366
+ "rayon",
4367
+ "rgb",
4368
+]
4369
+
4370
+[[package]]
4371
+name = "raw-cpuid"
4372
+version = "11.6.0"
4373
+source = "registry+https://github.com/rust-lang/crates.io-index"
4374
+checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186"
4375
+dependencies = [
4376
+ "bitflags 2.11.0",
4377
+]
4378
+
4379
+[[package]]
4380
+name = "rawpointer"
4381
+version = "0.2.1"
4382
+source = "registry+https://github.com/rust-lang/crates.io-index"
4383
+checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
4384
+
4385
+[[package]]
4386
+name = "rayon"
4387
+version = "1.11.0"
4388
+source = "registry+https://github.com/rust-lang/crates.io-index"
4389
+checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
4390
+dependencies = [
4391
+ "either",
4392
+ "rayon-core",
4393
+]
4394
+
4395
+[[package]]
4396
+name = "rayon-cond"
4397
+version = "0.4.0"
4398
+source = "registry+https://github.com/rust-lang/crates.io-index"
4399
+checksum = "2964d0cf57a3e7a06e8183d14a8b527195c706b7983549cd5462d5aa3747438f"
4400
+dependencies = [
4401
+ "either",
4402
+ "itertools",
4403
+ "rayon",
4404
+]
4405
+
4406
+[[package]]
4407
+name = "rayon-core"
4408
+version = "1.13.0"
4409
+source = "registry+https://github.com/rust-lang/crates.io-index"
4410
+checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
4411
+dependencies = [
4412
+ "crossbeam-deque",
4413
+ "crossbeam-utils",
4414
+]
4415
+
4416
+[[package]]
4417
+name = "realfft"
4418
+version = "3.5.0"
4419
+source = "registry+https://github.com/rust-lang/crates.io-index"
4420
+checksum = "f821338fddb99d089116342c46e9f1fbf3828dba077674613e734e01d6ea8677"
4421
+dependencies = [
4422
+ "rustfft",
4423
+]
4424
+
4425
+[[package]]
4426
+name = "reborrow"
4427
+version = "0.5.5"
4428
+source = "registry+https://github.com/rust-lang/crates.io-index"
4429
+checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430"
4430
+
4431
+[[package]]
4432
+name = "recvmsg"
4433
+version = "1.0.0"
4434
+source = "registry+https://github.com/rust-lang/crates.io-index"
4435
+checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175"
4436
+
4437
+[[package]]
4438
+name = "redox_syscall"
4439
+version = "0.5.18"
4440
+source = "registry+https://github.com/rust-lang/crates.io-index"
4441
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
4442
+dependencies = [
4443
+ "bitflags 2.11.0",
4444
+]
4445
+
4446
+[[package]]
4447
+name = "redox_users"
4448
+version = "0.5.2"
4449
+source = "registry+https://github.com/rust-lang/crates.io-index"
4450
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
4451
+dependencies = [
4452
+ "getrandom 0.2.17",
4453
+ "libredox",
4454
+ "thiserror 2.0.18",
4455
+]
4456
+
4457
+[[package]]
4458
+name = "ref-cast"
4459
+version = "1.0.25"
4460
+source = "registry+https://github.com/rust-lang/crates.io-index"
4461
+checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
4462
+dependencies = [
4463
+ "ref-cast-impl",
4464
+]
4465
+
4466
+[[package]]
4467
+name = "ref-cast-impl"
4468
+version = "1.0.25"
4469
+source = "registry+https://github.com/rust-lang/crates.io-index"
4470
+checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
4471
+dependencies = [
4472
+ "proc-macro2",
4473
+ "quote",
4474
+ "syn 2.0.117",
4475
+]
4476
+
4477
+[[package]]
4478
+name = "regex"
4479
+version = "1.12.3"
4480
+source = "registry+https://github.com/rust-lang/crates.io-index"
4481
+checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
4482
+dependencies = [
4483
+ "aho-corasick",
4484
+ "memchr",
4485
+ "regex-automata",
4486
+ "regex-syntax",
4487
+]
4488
+
4489
+[[package]]
4490
+name = "regex-automata"
4491
+version = "0.4.14"
4492
+source = "registry+https://github.com/rust-lang/crates.io-index"
4493
+checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
4494
+dependencies = [
4495
+ "aho-corasick",
4496
+ "memchr",
4497
+ "regex-syntax",
4498
+]
4499
+
4500
+[[package]]
4501
+name = "regex-syntax"
4502
+version = "0.8.10"
4503
+source = "registry+https://github.com/rust-lang/crates.io-index"
4504
+checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
4505
+
4506
+[[package]]
4507
+name = "reqwest"
4508
+version = "0.12.28"
4509
+source = "registry+https://github.com/rust-lang/crates.io-index"
4510
+checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
4511
+dependencies = [
4512
+ "base64 0.22.1",
4513
+ "bytes",
4514
+ "encoding_rs",
4515
+ "futures-channel",
4516
+ "futures-core",
4517
+ "futures-util",
4518
+ "h2",
4519
+ "http",
4520
+ "http-body",
4521
+ "http-body-util",
4522
+ "hyper",
4523
+ "hyper-rustls",
4524
+ "hyper-util",
4525
+ "js-sys",
4526
+ "log",
4527
+ "mime",
4528
+ "mime_guess",
4529
+ "percent-encoding",
4530
+ "pin-project-lite",
4531
+ "quinn",
4532
+ "rustls",
4533
+ "rustls-pki-types",
4534
+ "serde",
4535
+ "serde_json",
4536
+ "serde_urlencoded",
4537
+ "sync_wrapper",
4538
+ "tokio",
4539
+ "tokio-rustls",
4540
+ "tokio-util",
4541
+ "tower",
4542
+ "tower-http",
4543
+ "tower-service",
4544
+ "url",
4545
+ "wasm-bindgen",
4546
+ "wasm-bindgen-futures",
4547
+ "wasm-streams 0.4.2",
4548
+ "web-sys",
4549
+ "webpki-roots 1.0.6",
4550
+]
4551
+
4552
+[[package]]
4553
+name = "reqwest"
4554
+version = "0.13.2"
4555
+source = "registry+https://github.com/rust-lang/crates.io-index"
4556
+checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"
4557
+dependencies = [
4558
+ "base64 0.22.1",
4559
+ "bytes",
4560
+ "encoding_rs",
4561
+ "futures-channel",
4562
+ "futures-core",
4563
+ "futures-util",
4564
+ "h2",
4565
+ "http",
4566
+ "http-body",
4567
+ "http-body-util",
4568
+ "hyper",
4569
+ "hyper-rustls",
4570
+ "hyper-util",
4571
+ "js-sys",
4572
+ "log",
4573
+ "mime",
4574
+ "percent-encoding",
4575
+ "pin-project-lite",
4576
+ "quinn",
4577
+ "rustls",
4578
+ "rustls-pki-types",
4579
+ "rustls-platform-verifier",
4580
+ "serde",
4581
+ "serde_json",
4582
+ "sync_wrapper",
4583
+ "tokio",
4584
+ "tokio-rustls",
4585
+ "tokio-util",
4586
+ "tower",
4587
+ "tower-http",
4588
+ "tower-service",
4589
+ "url",
4590
+ "wasm-bindgen",
4591
+ "wasm-bindgen-futures",
4592
+ "wasm-streams 0.5.0",
4593
+ "web-sys",
4594
+]
4595
+
4596
+[[package]]
4597
+name = "rgb"
4598
+version = "0.8.53"
4599
+source = "registry+https://github.com/rust-lang/crates.io-index"
4600
+checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4"
4601
+
4602
+[[package]]
4603
+name = "ring"
4604
+version = "0.17.14"
4605
+source = "registry+https://github.com/rust-lang/crates.io-index"
4606
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
4607
+dependencies = [
4608
+ "cc",
4609
+ "cfg-if",
4610
+ "getrandom 0.2.17",
4611
+ "libc",
4612
+ "untrusted",
4613
+ "windows-sys 0.52.0",
4614
+]
4615
+
4616
+[[package]]
4617
+name = "rubato"
4618
+version = "0.16.2"
4619
+source = "registry+https://github.com/rust-lang/crates.io-index"
4620
+checksum = "5258099699851cfd0082aeb645feb9c084d9a5e1f1b8d5372086b989fc5e56a1"
4621
+dependencies = [
4622
+ "num-complex",
4623
+ "num-integer",
4624
+ "num-traits",
4625
+ "realfft",
4626
+]
4627
+
4628
+[[package]]
4629
+name = "rust-mcp-schema"
4630
+version = "0.9.6"
4631
+source = "registry+https://github.com/rust-lang/crates.io-index"
4632
+checksum = "b1209aa7fb74fccafe6b2a649b15581fb328343427d85def865b0ad233fe1f74"
4633
+dependencies = [
4634
+ "serde",
4635
+ "serde_json",
4636
+]
4637
+
4638
+[[package]]
4639
+name = "rust-stemmers"
4640
+version = "1.2.0"
4641
+source = "registry+https://github.com/rust-lang/crates.io-index"
4642
+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
4643
+dependencies = [
4644
+ "serde",
4645
+ "serde_derive",
4646
+]
4647
+
4648
+[[package]]
4649
+name = "rustc-hash"
4650
+version = "1.1.0"
4651
+source = "registry+https://github.com/rust-lang/crates.io-index"
4652
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
4653
+
4654
+[[package]]
4655
+name = "rustc-hash"
4656
+version = "2.1.2"
4657
+source = "registry+https://github.com/rust-lang/crates.io-index"
4658
+checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
4659
+
4660
+[[package]]
4661
+name = "rustc_version"
4662
+version = "0.4.1"
4663
+source = "registry+https://github.com/rust-lang/crates.io-index"
4664
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
4665
+dependencies = [
4666
+ "semver",
4667
+]
4668
+
4669
+[[package]]
4670
+name = "rustfft"
4671
+version = "6.4.1"
4672
+source = "registry+https://github.com/rust-lang/crates.io-index"
4673
+checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89"
4674
+dependencies = [
4675
+ "num-complex",
4676
+ "num-integer",
4677
+ "num-traits",
4678
+ "primal-check",
4679
+ "strength_reduce",
4680
+ "transpose",
4681
+]
4682
+
4683
+[[package]]
4684
+name = "rustix"
4685
+version = "1.1.4"
4686
+source = "registry+https://github.com/rust-lang/crates.io-index"
4687
+checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
4688
+dependencies = [
4689
+ "bitflags 2.11.0",
4690
+ "errno",
4691
+ "libc",
4692
+ "linux-raw-sys",
4693
+ "windows-sys 0.61.2",
4694
+]
4695
+
4696
+[[package]]
4697
+name = "rustls"
4698
+version = "0.23.37"
4699
+source = "registry+https://github.com/rust-lang/crates.io-index"
4700
+checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
4701
+dependencies = [
4702
+ "aws-lc-rs",
4703
+ "log",
4704
+ "once_cell",
4705
+ "ring",
4706
+ "rustls-pki-types",
4707
+ "rustls-webpki",
4708
+ "subtle",
4709
+ "zeroize",
4710
+]
4711
+
4712
+[[package]]
4713
+name = "rustls-native-certs"
4714
+version = "0.8.3"
4715
+source = "registry+https://github.com/rust-lang/crates.io-index"
4716
+checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
4717
+dependencies = [
4718
+ "openssl-probe",
4719
+ "rustls-pki-types",
4720
+ "schannel",
4721
+ "security-framework",
4722
+]
4723
+
4724
+[[package]]
4725
+name = "rustls-pki-types"
4726
+version = "1.14.0"
4727
+source = "registry+https://github.com/rust-lang/crates.io-index"
4728
+checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
4729
+dependencies = [
4730
+ "web-time",
4731
+ "zeroize",
4732
+]
4733
+
4734
+[[package]]
4735
+name = "rustls-platform-verifier"
4736
+version = "0.6.2"
4737
+source = "registry+https://github.com/rust-lang/crates.io-index"
4738
+checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"
4739
+dependencies = [
4740
+ "core-foundation 0.10.1",
4741
+ "core-foundation-sys",
4742
+ "jni",
4743
+ "log",
4744
+ "once_cell",
4745
+ "rustls",
4746
+ "rustls-native-certs",
4747
+ "rustls-platform-verifier-android",
4748
+ "rustls-webpki",
4749
+ "security-framework",
4750
+ "security-framework-sys",
4751
+ "webpki-root-certs",
4752
+ "windows-sys 0.61.2",
4753
+]
4754
+
4755
+[[package]]
4756
+name = "rustls-platform-verifier-android"
4757
+version = "0.1.1"
4758
+source = "registry+https://github.com/rust-lang/crates.io-index"
4759
+checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
4760
+
4761
+[[package]]
4762
+name = "rustls-webpki"
4763
+version = "0.103.11"
4764
+source = "registry+https://github.com/rust-lang/crates.io-index"
4765
+checksum = "20a6af516fea4b20eccceaf166e8aa666ac996208e8a644ce3ef5aa783bc7cd4"
4766
+dependencies = [
4767
+ "aws-lc-rs",
4768
+ "ring",
4769
+ "rustls-pki-types",
4770
+ "untrusted",
4771
+]
4772
+
4773
+[[package]]
4774
+name = "rustversion"
4775
+version = "1.0.22"
4776
+source = "registry+https://github.com/rust-lang/crates.io-index"
4777
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
4778
+
4779
+[[package]]
4780
+name = "ryu"
4781
+version = "1.0.23"
4782
+source = "registry+https://github.com/rust-lang/crates.io-index"
4783
+checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
4784
+
4785
+[[package]]
4786
+name = "safe_arch"
4787
+version = "0.7.4"
4788
+source = "registry+https://github.com/rust-lang/crates.io-index"
4789
+checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323"
4790
+dependencies = [
4791
+ "bytemuck",
4792
+]
4793
+
4794
+[[package]]
4795
+name = "safetensors"
4796
+version = "0.4.5"
4797
+source = "registry+https://github.com/rust-lang/crates.io-index"
4798
+checksum = "44560c11236a6130a46ce36c836a62936dc81ebf8c36a37947423571be0e55b6"
4799
+dependencies = [
4800
+ "serde",
4801
+ "serde_json",
4802
+]
4803
+
4804
+[[package]]
4805
+name = "safetensors"
4806
+version = "0.7.0"
4807
+source = "registry+https://github.com/rust-lang/crates.io-index"
4808
+checksum = "675656c1eabb620b921efea4f9199f97fc86e36dd6ffd1fbbe48d0f59a4987f5"
4809
+dependencies = [
4810
+ "hashbrown 0.16.1",
4811
+ "serde",
4812
+ "serde_json",
4813
+]
4814
+
4815
+[[package]]
4816
+name = "same-file"
4817
+version = "1.0.6"
4818
+source = "registry+https://github.com/rust-lang/crates.io-index"
4819
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
4820
+dependencies = [
4821
+ "winapi-util",
4822
+]
4823
+
4824
+[[package]]
4825
+name = "saphyr-parser-bw"
4826
+version = "0.0.605"
4827
+source = "registry+https://github.com/rust-lang/crates.io-index"
4828
+checksum = "5e1aee7486406df3541b5a657204a11be97175a467d77bc98e6d94a66289fb80"
4829
+dependencies = [
4830
+ "arraydeque",
4831
+ "smallvec 2.0.0-alpha.12",
4832
+ "thiserror 2.0.18",
4833
+]
4834
+
4835
+[[package]]
4836
+name = "schannel"
4837
+version = "0.1.29"
4838
+source = "registry+https://github.com/rust-lang/crates.io-index"
4839
+checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
4840
+dependencies = [
4841
+ "windows-sys 0.61.2",
4842
+]
4843
+
4844
+[[package]]
4845
+name = "schemars"
4846
+version = "0.9.0"
4847
+source = "registry+https://github.com/rust-lang/crates.io-index"
4848
+checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
4849
+dependencies = [
4850
+ "dyn-clone",
4851
+ "ref-cast",
4852
+ "serde",
4853
+ "serde_json",
4854
+]
4855
+
4856
+[[package]]
4857
+name = "schemars"
4858
+version = "1.2.1"
4859
+source = "registry+https://github.com/rust-lang/crates.io-index"
4860
+checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc"
4861
+dependencies = [
4862
+ "dyn-clone",
4863
+ "ref-cast",
4864
+ "schemars_derive",
4865
+ "serde",
4866
+ "serde_json",
4867
+]
4868
+
4869
+[[package]]
4870
+name = "schemars_derive"
4871
+version = "1.2.1"
4872
+source = "registry+https://github.com/rust-lang/crates.io-index"
4873
+checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f"
4874
+dependencies = [
4875
+ "proc-macro2",
4876
+ "quote",
4877
+ "serde_derive_internals",
4878
+ "syn 2.0.117",
4879
+]
4880
+
4881
+[[package]]
4882
+name = "scoped-tls"
4883
+version = "1.0.1"
4884
+source = "registry+https://github.com/rust-lang/crates.io-index"
4885
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
4886
+
4887
+[[package]]
4888
+name = "scopeguard"
4889
+version = "1.2.0"
4890
+source = "registry+https://github.com/rust-lang/crates.io-index"
4891
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
4892
+
4893
+[[package]]
4894
+name = "scraper"
4895
+version = "0.25.0"
4896
+source = "registry+https://github.com/rust-lang/crates.io-index"
4897
+checksum = "93cecd86d6259499c844440546d02f55f3e17bd286e529e48d1f9f67e92315cb"
4898
+dependencies = [
4899
+ "cssparser",
4900
+ "ego-tree",
4901
+ "getopts",
4902
+ "html5ever 0.36.1",
4903
+ "precomputed-hash",
4904
+ "selectors",
4905
+ "tendril 0.4.3",
4906
+]
4907
+
4908
+[[package]]
4909
+name = "scroll"
4910
+version = "0.12.0"
4911
+source = "registry+https://github.com/rust-lang/crates.io-index"
4912
+checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6"
4913
+dependencies = [
4914
+ "scroll_derive",
4915
+]
4916
+
4917
+[[package]]
4918
+name = "scroll_derive"
4919
+version = "0.12.1"
4920
+source = "registry+https://github.com/rust-lang/crates.io-index"
4921
+checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d"
4922
+dependencies = [
4923
+ "proc-macro2",
4924
+ "quote",
4925
+ "syn 2.0.117",
4926
+]
4927
+
4928
+[[package]]
4929
+name = "security-framework"
4930
+version = "3.7.0"
4931
+source = "registry+https://github.com/rust-lang/crates.io-index"
4932
+checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
4933
+dependencies = [
4934
+ "bitflags 2.11.0",
4935
+ "core-foundation 0.10.1",
4936
+ "core-foundation-sys",
4937
+ "libc",
4938
+ "security-framework-sys",
4939
+]
4940
+
4941
+[[package]]
4942
+name = "security-framework-sys"
4943
+version = "2.17.0"
4944
+source = "registry+https://github.com/rust-lang/crates.io-index"
4945
+checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
4946
+dependencies = [
4947
+ "core-foundation-sys",
4948
+ "libc",
4949
+]
4950
+
4951
+[[package]]
4952
+name = "selectors"
4953
+version = "0.33.0"
4954
+source = "registry+https://github.com/rust-lang/crates.io-index"
4955
+checksum = "feef350c36147532e1b79ea5c1f3791373e61cbd9a6a2615413b3807bb164fb7"
4956
+dependencies = [
4957
+ "bitflags 2.11.0",
4958
+ "cssparser",
4959
+ "derive_more",
4960
+ "log",
4961
+ "new_debug_unreachable",
4962
+ "phf",
4963
+ "phf_codegen",
4964
+ "precomputed-hash",
4965
+ "rustc-hash 2.1.2",
4966
+ "servo_arc",
4967
+ "smallvec 1.15.1",
4968
+]
4969
+
4970
+[[package]]
4971
+name = "semver"
4972
+version = "1.0.28"
4973
+source = "registry+https://github.com/rust-lang/crates.io-index"
4974
+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
4975
+dependencies = [
4976
+ "serde",
4977
+ "serde_core",
4978
+]
4979
+
4980
+[[package]]
4981
+name = "seq-macro"
4982
+version = "0.3.6"
4983
+source = "registry+https://github.com/rust-lang/crates.io-index"
4984
+checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
4985
+
4986
+[[package]]
4987
+name = "serde"
4988
+version = "1.0.228"
4989
+source = "registry+https://github.com/rust-lang/crates.io-index"
4990
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
4991
+dependencies = [
4992
+ "serde_core",
4993
+ "serde_derive",
4994
+]
4995
+
4996
+[[package]]
4997
+name = "serde-big-array"
4998
+version = "0.5.1"
4999
+source = "registry+https://github.com/rust-lang/crates.io-index"
This file is too large to show in full.
Cargo.toml
new
+29
@@ -0,0 +1,29 @@
1
+[package]
2
+name = "sigit"
3
+version = "0.1.0"
4
+edition = "2024"
5
+description = "siGit Code — ACP-compatible AI coding agent for smbCloud platform."
6
+license = "MIT OR Apache-2.0"
7
+
8
+[[bin]]
9
+name = "sigit"
10
+path = "src/main.rs"
11
+
12
+[dependencies]
13
+# ACP protocol SDK
14
+agent-client-protocol = "0.10.4"
15
+
16
+# Onde Inference engine (local LLM)
17
+onde = { path = "../onde" }
18
+
19
+# Async runtime
20
+async-trait = "0.1"
21
+tokio = { version = "1", features = ["rt", "macros", "io-std", "io-util", "sync"] }
22
+tokio-util = { version = "0.7", features = ["compat"] }
23
+futures = "0.3"
24
+
25
+# Utilities
26
+anyhow = "1"
27
+log = "0.4"
28
+env_logger = "0.11"
29
+uuid = { version = "1", features = ["v4"] }
README.md
new
+7
@@ -0,0 +1,7 @@
1
+# siGit Code
2
+
3
+A simple ACP-compatible coding agent that uses local Llm by default. Currently tighlly coupled with [smbCloud](https://smbcloud.xyz/) services.
4
+
5
+## Copyright
6
+
7
+2026 Seto Elkahfi.
src/main.rs
new
+293
@@ -0,0 +1,293 @@
1
+//! siGit — AI coding agent that runs a local LLM via Onde Inference and
2
+//! speaks ACP over stdio so editors like Zed can talk to it.
3
+//!
4
+//! On macOS the model cache is shared with the siGit desktop app through an
5
+//! App Group container. See [`setup`].
6
+//!
7
+//! # Zed setup
8
+//!
9
+//! Add to `~/.config/zed/settings.json`:
10
+//! ```json
11
+//! {
12
+//! "agent_servers": {
13
+//! "siGit": {
14
+//! "command": "sigit",
15
+//! "args": []
16
+//! }
17
+//! }
18
+//! }
19
+//! ```
20
+
21
+mod setup;
22
+
23
+use std::sync::Arc;
24
+
25
+use agent_client_protocol::{
26
+ Agent, AgentCapabilities, AgentSideConnection, AuthenticateRequest, AuthenticateResponse,
27
+ CancelNotification, Client, ContentBlock, ContentChunk, Implementation, InitializeRequest,
28
+ InitializeResponse, NewSessionRequest, NewSessionResponse, PromptRequest, PromptResponse,
29
+ SessionId, SessionNotification, SessionUpdate, StopReason,
30
+};
31
+use futures::future::LocalBoxFuture;
32
+use onde::inference::{ChatEngine, GgufModelConfig};
33
+use tokio::sync::{Mutex, mpsc};
34
+use tokio_util::compat::{TokioAsyncReadCompatExt, TokioAsyncWriteCompatExt};
35
+
36
+const SYSTEM_PROMPT: &str = "\
37
+You are siGit, an expert AI coding agent integrated directly into your editor \
38
+via the Agent Client Protocol. You specialize in:
39
+
40
+- Code analysis, writing, and refactoring
41
+- Bug hunting and debugging
42
+- Git workflows and commit messages
43
+- Software architecture and design patterns
44
+- Code review and best practices
45
+
46
+Be concise, precise, and practical. Write clean, idiomatic code with brief \
47
+explanations. Identify root causes when debugging. Prefer correctness over brevity.";
48
+
49
+// ── Per-session state ────────────────────────────────────────────────────────
50
+
51
+/// One active session at a time. We store the `SessionId` directly (not as a
52
+/// `String`) so `==` just works.
53
+struct Session {
54
+ id: SessionId,
55
+}
56
+
57
+// ── Agent implementation ─────────────────────────────────────────────────────
58
+
59
+/// The actual agent. Holds one `ChatEngine` (loaded lazily on the first
60
+/// session) and talks ACP over stdio.
61
+struct SiGitAgent {
62
+ engine: Arc<ChatEngine>,
63
+ active_session: Arc<Mutex<Option<Session>>>,
64
+ /// Sends streaming chunks to the forwarder task, which writes them out.
65
+ notification_tx: mpsc::Sender<SessionNotification>,
66
+}
67
+
68
+impl SiGitAgent {
69
+ fn new(notification_tx: mpsc::Sender<SessionNotification>) -> Self {
70
+ Self {
71
+ engine: Arc::new(ChatEngine::new()),
72
+ active_session: Arc::new(Mutex::new(None)),
73
+ notification_tx,
74
+ }
75
+ }
76
+}
77
+
78
+#[async_trait::async_trait(?Send)]
79
+impl Agent for SiGitAgent {
80
+ async fn initialize(
81
+ &self,
82
+ args: InitializeRequest,
83
+ ) -> agent_client_protocol::Result<InitializeResponse> {
84
+ log::info!("initialize: protocol_version={}", args.protocol_version);
85
+
86
+ Ok(InitializeResponse::new(args.protocol_version)
87
+ .agent_info(
88
+ Implementation::new("sigit", env!("CARGO_PKG_VERSION"))
89
+ .title("siGit — AI Coding Agent"),
90
+ )
91
+ .agent_capabilities(AgentCapabilities::default()))
92
+ }
93
+
94
+ async fn authenticate(
95
+ &self,
96
+ _args: AuthenticateRequest,
97
+ ) -> agent_client_protocol::Result<AuthenticateResponse> {
98
+ // Local LLM, no credentials needed.
99
+ Ok(AuthenticateResponse::default())
100
+ }
101
+
102
+ async fn new_session(
103
+ &self,
104
+ _args: NewSessionRequest,
105
+ ) -> agent_client_protocol::Result<NewSessionResponse> {
106
+ let session_id = SessionId::new(uuid::Uuid::new_v4().to_string());
107
+ log::info!("new_session: id={session_id}");
108
+
109
+ if self.engine.is_loaded().await {
110
+ // Model is already warm — just wipe the conversation.
111
+ log::info!("model already loaded — clearing history for new session");
112
+ self.engine.clear_history().await;
113
+ } else {
114
+ // First session — pull the model (if needed) and load it.
115
+ log::info!("loading default model (this may take a minute on first run)...");
116
+ let config = GgufModelConfig::platform_default();
117
+ self.engine
118
+ .load_gguf_model(config, Some(SYSTEM_PROMPT.to_string()), None)
119
+ .await
120
+ .map_err(|e| {
121
+ log::error!("model load failed: {e}");
122
+ agent_client_protocol::Error::new(-32603, format!("model load failed: {e}"))
123
+ })?;
124
+ log::info!("model loaded and ready");
125
+ }
126
+
127
+ let mut active = self.active_session.lock().await;
128
+ *active = Some(Session {
129
+ id: session_id.clone(),
130
+ });
131
+
132
+ Ok(NewSessionResponse::new(session_id))
133
+ }
134
+
135
+ async fn prompt(&self, args: PromptRequest) -> agent_client_protocol::Result<PromptResponse> {
136
+ let session_id = args.session_id.clone();
137
+
138
+ // Make sure this session actually exists.
139
+ {
140
+ let active = self.active_session.lock().await;
141
+ match active.as_ref() {
142
+ Some(s) if s.id == session_id => {}
143
+ _ => {
144
+ return Err(agent_client_protocol::Error::invalid_params());
145
+ }
146
+ }
147
+ }
148
+
149
+ // Pull out the text blocks; ignore images/resources for now.
150
+ let user_text: String = args
151
+ .prompt
152
+ .iter()
153
+ .filter_map(|block| match block {
154
+ ContentBlock::Text(t) => Some(t.text.as_str()),
155
+ _ => None,
156
+ })
157
+ .collect::<Vec<_>>()
158
+ .join("\n");
159
+
160
+ if user_text.trim().is_empty() {
161
+ return Ok(PromptResponse::new(StopReason::EndTurn));
162
+ }
163
+
164
+ log::info!(
165
+ "prompt({}): \"{}\"",
166
+ session_id,
167
+ user_text.chars().take(80).collect::<String>()
168
+ );
169
+
170
+ // Stream tokens from the LLM and forward each one as an ACP update.
171
+ let mut rx = self
172
+ .engine
173
+ .stream_message(user_text)
174
+ .await
175
+ .map_err(|e| agent_client_protocol::Error::new(-32603, e.to_string()))?;
176
+
177
+ while let Some(chunk) = rx.recv().await {
178
+ if !chunk.delta.is_empty() {
179
+ let notification = SessionNotification::new(
180
+ session_id.clone(),
181
+ SessionUpdate::AgentMessageChunk(ContentChunk::new(ContentBlock::from(
182
+ chunk.delta,
183
+ ))),
184
+ );
185
+ // Forwarder gone (client disconnected?) — stop.
186
+ if self.notification_tx.send(notification).await.is_err() {
187
+ log::warn!("notification channel closed — stopping stream");
188
+ break;
189
+ }
190
+ }
191
+ if chunk.done {
192
+ break;
193
+ }
194
+ }
195
+
196
+ log::info!("prompt({}) complete", session_id);
197
+ Ok(PromptResponse::new(StopReason::EndTurn))
198
+ }
199
+
200
+ async fn cancel(&self, args: CancelNotification) -> agent_client_protocol::Result<()> {
201
+ // ChatEngine can't cancel mid-stream yet, so the stream just drains
202
+ // when the receiver drops. Good enough for now.
203
+ log::info!("cancel requested for session {}", args.session_id);
204
+ Ok(())
205
+ }
206
+}
207
+
208
+// ── Banner ───────────────────────────────────────────────────────────────────
209
+
210
+fn print_banner() {
211
+ const BANNER: &str = r#"
212
+77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
213
+77777777322222222222222222222222222222223777389969902208431358831999699051111177777777777777
214
+1111111125555555555555555555555511113222311159 5002 088 3081771691111111111111
215
+1111111111111111111111111111131136841 1482853332007 05 9043332891 400811111111111
216
+1111111111111111111111111111111201 109 304 40 00 79 100041111111111
217
+333333255555555555555555555552392 102 503 90 7000000005 903 0000023333333333
218
+333333245454545454545454545433381 7600000 302 61 780 109 20009533333333333
219
+3333333333333333333333333333333402 7001 08 761 202 902 90003333333333333
220
+2222255555555555555555555555250899901 49 304 403 08 108 300042222222222222
221
+2222222222222222222222222222269 106 03 901 06 505 402 000052222222222222
222
+2222255555555555555555555555299 708 1002 80 00 90852222222222222
223
+55555555555555555555555555555560953258000866660000051140866908666600008966900065555555555555
224
+88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
225
+
226
+ siGit Code v%VERSION%
227
+"#;
228
+
229
+ let art = BANNER.replace("%VERSION%", env!("CARGO_PKG_VERSION"));
230
+ eprintln!("{art}");
231
+}
232
+
233
+// ── Entry point ──────────────────────────────────────────────────────────────
234
+
235
+#[tokio::main]
236
+async fn main() -> anyhow::Result<()> {
237
+ // stdout is the ACP wire, so logs go to stderr.
238
+ env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
239
+ .target(env_logger::Target::Stderr)
240
+ .init();
241
+
242
+ print_banner();
243
+
244
+ log::info!("siGit v{} starting", env!("CARGO_PKG_VERSION"));
245
+
246
+ // Point HF_HOME at the shared App Group container (macOS) so we pick up
247
+ // models the desktop app already downloaded. Must happen before anything
248
+ // touches hf-hub.
249
+ setup::setup_shared_model_cache();
250
+
251
+ // Agent::prompt sends chunks here; the forwarder task writes them out.
252
+ let (notification_tx, mut notification_rx) = mpsc::channel::<SessionNotification>(256);
253
+
254
+ let agent = SiGitAgent::new(notification_tx);
255
+
256
+ // AgentSideConnection wants futures-io, not tokio-io.
257
+ let stdin = tokio::io::stdin().compat();
258
+ let stdout = tokio::io::stdout().compat_write();
259
+
260
+ // ACP futures are !Send, so we need a LocalSet.
261
+ let local = tokio::task::LocalSet::new();
262
+
263
+ local
264
+ .run_until(async move {
265
+ // Wire up the ACP connection. The closure spawns its internal IO tasks.
266
+ let (conn, io_task) = AgentSideConnection::new(
267
+ agent,
268
+ stdout,
269
+ stdin,
270
+ |fut: LocalBoxFuture<'static, ()>| {
271
+ tokio::task::spawn_local(fut);
272
+ },
273
+ );
274
+
275
+ // Forwarder: drains the mpsc channel and pushes chunks to the client.
276
+ tokio::task::spawn_local(async move {
277
+ while let Some(notification) = notification_rx.recv().await {
278
+ if let Err(err) = conn.session_notification(notification).await {
279
+ log::warn!("session_notification failed: {err}");
280
+ }
281
+ }
282
+ });
283
+
284
+ // Blocks until the editor disconnects.
285
+ if let Err(err) = io_task.await {
286
+ log::error!("ACP IO error: {err}");
287
+ }
288
+ })
289
+ .await;
290
+
291
+ log::info!("siGit shutting down");
292
+ Ok(())
293
+}
src/setup.rs
new
+88
@@ -0,0 +1,88 @@
1
+//! Shared model cache setup.
2
+//!
3
+//! On macOS, siGit desktop and other Onde apps keep their HuggingFace models
4
+//! in a shared App Group container at:
5
+//!
6
+//! `~/Library/Group Containers/group.com.ondeinference.apps/models/`
7
+//!
8
+//! This module points `HF_HOME` / `HF_HUB_CACHE` there so the CLI reuses
9
+//! whatever the desktop app already downloaded (and vice versa). On Linux
10
+//! and Windows the default `~/.cache/huggingface/` path is used.
11
+//!
12
+//! Call this before anything touches `ChatEngine` or `hf-hub` — they read
13
+//! the env vars once at init and never check again.
14
+
15
+use std::path::PathBuf;
16
+
17
+/// App Group ID shared across all Onde apps (siGit, Rumi, GT8, …).
18
+const APP_GROUP_IDENTIFIER: &str = "group.com.ondeinference.apps";
19
+
20
+/// Find the shared container and set `HF_HOME` / `HF_HUB_CACHE` to point
21
+/// there. Skips any var the user already set.
22
+pub fn setup_shared_model_cache() {
23
+ if let Some(shared_dir) = resolve_shared_container() {
24
+ let models_home = shared_dir.join("models");
25
+ let model_hub = models_home.join("hub");
26
+
27
+ // Make sure the dirs exist.
28
+ if let Err(error) = std::fs::create_dir_all(&model_hub) {
29
+ log::warn!(
30
+ "Failed to create shared model cache at {}: {error} — falling back to default",
31
+ model_hub.display()
32
+ );
33
+ return;
34
+ }
35
+
36
+ // hf-hub derives all its paths from HF_HOME.
37
+ if std::env::var("HF_HOME").is_err() {
38
+ // SAFETY: called once at startup before any threads are spawned.
39
+ unsafe { std::env::set_var("HF_HOME", &models_home) };
40
+ log::info!("HF_HOME → shared App Group: {}", models_home.display());
41
+ } else {
42
+ log::debug!(
43
+ "HF_HOME already set by user: {}",
44
+ std::env::var("HF_HOME").unwrap_or_default()
45
+ );
46
+ }
47
+
48
+ // Some mistral.rs code paths read HF_HUB_CACHE directly instead
49
+ // of deriving it from HF_HOME, so we set both.
50
+ if std::env::var("HF_HUB_CACHE").is_err() {
51
+ // SAFETY: called once at startup before any threads are spawned.
52
+ unsafe { std::env::set_var("HF_HUB_CACHE", &model_hub) };
53
+ log::info!("HF_HUB_CACHE → shared App Group: {}", model_hub.display());
54
+ }
55
+ } else {
56
+ log::debug!("Shared App Group container not available — using default HF cache");
57
+ }
58
+}
59
+
60
+/// Look for the App Group container on disk. macOS creates it the first time
61
+/// a signed app in the group accesses it, so it only exists if the user has
62
+/// launched siGit desktop (or another Onde app) at least once. A plain CLI
63
+/// binary can read/write there without extra entitlements.
64
+#[cfg(target_os = "macos")]
65
+fn resolve_shared_container() -> Option<PathBuf> {
66
+ let home = std::env::var("HOME").ok()?;
67
+ let container = PathBuf::from(home)
68
+ .join("Library")
69
+ .join("Group Containers")
70
+ .join(APP_GROUP_IDENTIFIER);
71
+
72
+ if container.is_dir() {
73
+ log::debug!("App Group container found: {}", container.display());
74
+ Some(container)
75
+ } else {
76
+ log::debug!(
77
+ "App Group container does not exist at {} — \
78
+ has siGit desktop been launched at least once?",
79
+ container.display()
80
+ );
81
+ None
82
+ }
83
+}
84
+
85
+#[cfg(not(target_os = "macos"))]
86
+fn resolve_shared_container() -> Option<PathBuf> {
87
+ None
88
+}