@hej / sigit / commits / dc70b69

siGit code initial commit

Seto Elkahfi committed Apr 12, 2026 at 10:55 UTC dc70b69ca72af7b9ab56b574245ac806ce6c0c70
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 +}