feat(code-mode): select and bundle the Python backend per model
diff --git a/Cargo.lock b/Cargo.lock
index 4a654dc..4f27e08 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -8380,7 +8380,6 @@
  "maka-capabilities",
  "maka-code-runtime",
  "maka-event-log",
- "maka-js-runtime",
  "maka-model",
  "maka-plugin-core",
  "maka-presentation",
@@ -9318,11 +9317,14 @@
  "futures-util",
  "maka-agent-facts",
  "maka-code-runtime",
+ "maka-event-log",
+ "maka-tools",
  "monty",
  "monty-alloc",
  "monty-types",
  "serde",
  "serde_json",
+ "tempfile",
  "tokio",
  "tokio-util",
  "uuid",
@@ -9612,6 +9614,7 @@
  "maka-code-runtime",
  "maka-event-log",
  "maka-js-runtime",
+ "maka-python-runtime",
  "maka-tool-catalog",
  "schemars 1.2.2",
  "serde",
diff --git a/Cargo.toml b/Cargo.toml
index a12e993..053c065 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,7 +17,7 @@
 
 [workspace]
 exclude = ["third-party/nsh", "third-party/gpui-fast", "third-party/async-io", "third-party/gix-index", "third-party/sqlx-sqlite", "third-party/image-webp", "third-party/llrt-crypto", "third-party/termina"]
-default-members = ["products/maka/cli"]
+default-members = ["products/maka/cli", "platform/python-runtime"]
 members = [
     "plugins/agent/facts",
     "platform/packages",
diff --git a/SECURITY.md b/SECURITY.md
index 83ddbe0..14818ad 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -27,7 +27,7 @@
 
 Native tools enforce filesystem, process and network restrictions through the relevant operating-system mechanisms. Approval grants a specific capability; it does not validate untrusted text or make a stale observation executable.
 
-Code Mode executes JavaScript in an embedded V8 isolate with explicit host bindings. Installed Host plugins are trusted extensions. Computer Use has a separate session and observation lifecycle, and requires the corresponding platform permissions.
+Code Mode defaults to JavaScript in an embedded V8 isolate with explicit host bindings. Models can opt into Python through a bundled Monty worker process. Each Python cell has fresh interpreter state, bounded allocation and execution time, and no direct filesystem, network or subprocess access. Both languages call the same authorized Host tools and wait for admitted effects to settle after cancellation. Installed Host plugins are trusted extensions. Computer Use has a separate session and observation lifecycle, and requires the corresponding platform permissions.
 
 Configuration and event data remain under the selected state root. Secrets are handled through credential capabilities; plugin state, tool output and application UI must not be treated as secret stores.
 
diff --git a/packages/plugin-sdk/src/contracts.ts b/packages/plugin-sdk/src/contracts.ts
index b48b082..5f9de0d 100644
--- a/packages/plugin-sdk/src/contracts.ts
+++ b/packages/plugin-sdk/src/contracts.ts
@@ -41540,6 +41540,10 @@
                       'Omitted means model-specific defaults; false is an explicit opt-out.',
                     type: 'boolean',
                   },
+                  codeModeLanguage: {
+                    description: 'Code Mode interpreter; omitted selects JavaScript.',
+                    $ref: '#/$defs/CodeLanguage',
+                  },
                   applyPatch: {
                     description:
                       'Independent of Code Mode: select patch editing or structured Edit/Write.',
@@ -41609,6 +41613,11 @@
                 },
                 additionalProperties: false,
               },
+              CodeLanguage: {
+                description: 'Interpreter used only for model-facing Code Mode cells.',
+                type: 'string',
+                enum: ['javascript', 'python'],
+              },
               ThinkingLevel: {
                 type: 'string',
                 enum: ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'],
@@ -41963,6 +41972,10 @@
                       'Omitted means model-specific defaults; false is an explicit opt-out.',
                     type: 'boolean',
                   },
+                  codeModeLanguage: {
+                    description: 'Code Mode interpreter; omitted selects JavaScript.',
+                    $ref: '#/$defs/CodeLanguage',
+                  },
                   applyPatch: {
                     description:
                       'Independent of Code Mode: select patch editing or structured Edit/Write.',
@@ -42032,6 +42045,11 @@
                 },
                 additionalProperties: false,
               },
+              CodeLanguage: {
+                description: 'Interpreter used only for model-facing Code Mode cells.',
+                type: 'string',
+                enum: ['javascript', 'python'],
+              },
               ThinkingLevel: {
                 type: 'string',
                 enum: ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'],
@@ -42952,12 +42970,27 @@
                   codeMode: {
                     type: ['boolean', 'null'],
                   },
+                  codeModeLanguage: {
+                    anyOf: [
+                      {
+                        $ref: '#/$defs/CodeLanguage',
+                      },
+                      {
+                        type: 'null',
+                      },
+                    ],
+                  },
                   applyPatch: {
                     type: ['boolean', 'null'],
                   },
                 },
                 additionalProperties: false,
-                required: ['codeMode', 'applyPatch'],
+                required: ['codeMode', 'codeModeLanguage', 'applyPatch'],
+              },
+              CodeLanguage: {
+                description: 'Interpreter used only for model-facing Code Mode cells.',
+                type: 'string',
+                enum: ['javascript', 'python'],
               },
               SettingsModelLimitSettings: {
                 type: 'object',
@@ -43867,12 +43900,27 @@
                   codeMode: {
                     type: ['boolean', 'null'],
                   },
+                  codeModeLanguage: {
+                    anyOf: [
+                      {
+                        $ref: '#/$defs/CodeLanguage',
+                      },
+                      {
+                        type: 'null',
+                      },
+                    ],
+                  },
                   applyPatch: {
                     type: ['boolean', 'null'],
                   },
                 },
                 additionalProperties: false,
-                required: ['codeMode', 'applyPatch'],
+                required: ['codeMode', 'codeModeLanguage', 'applyPatch'],
+              },
+              CodeLanguage: {
+                description: 'Interpreter used only for model-facing Code Mode cells.',
+                type: 'string',
+                enum: ['javascript', 'python'],
               },
               SettingsModelLimitSettings: {
                 type: 'object',
@@ -44463,6 +44511,10 @@
                       'Omitted means model-specific defaults; false is an explicit opt-out.',
                     type: 'boolean',
                   },
+                  codeModeLanguage: {
+                    description: 'Code Mode interpreter; omitted selects JavaScript.',
+                    $ref: '#/$defs/CodeLanguage',
+                  },
                   applyPatch: {
                     description:
                       'Independent of Code Mode: select patch editing or structured Edit/Write.',
@@ -44532,6 +44584,11 @@
                 },
                 additionalProperties: false,
               },
+              CodeLanguage: {
+                description: 'Interpreter used only for model-facing Code Mode cells.',
+                type: 'string',
+                enum: ['javascript', 'python'],
+              },
               ThinkingLevel: {
                 type: 'string',
                 enum: ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'],
@@ -44970,12 +45027,27 @@
                   codeMode: {
                     type: ['boolean', 'null'],
                   },
+                  codeModeLanguage: {
+                    anyOf: [
+                      {
+                        $ref: '#/$defs/CodeLanguage',
+                      },
+                      {
+                        type: 'null',
+                      },
+                    ],
+                  },
                   applyPatch: {
                     type: ['boolean', 'null'],
                   },
                 },
                 additionalProperties: false,
-                required: ['codeMode', 'applyPatch'],
+                required: ['codeMode', 'codeModeLanguage', 'applyPatch'],
+              },
+              CodeLanguage: {
+                description: 'Interpreter used only for model-facing Code Mode cells.',
+                type: 'string',
+                enum: ['javascript', 'python'],
               },
               SettingsModelLimits: {
                 type: 'object',
diff --git a/packages/plugin-sdk/src/generated/methods.ts b/packages/plugin-sdk/src/generated/methods.ts
index 1c3461d..a77e223 100644
--- a/packages/plugin-sdk/src/generated/methods.ts
+++ b/packages/plugin-sdk/src/generated/methods.ts
@@ -102,6 +102,10 @@
 export type SettingsUpdateInput_Nullable_MapOf_ModelOverride = {
   [k: string]: SettingsUpdateInput_ModelOverride | undefined;
 } | null;
+/**
+ * Interpreter used only for model-facing Code Mode cells.
+ */
+export type SettingsUpdateInput_CodeLanguage = 'javascript' | 'python';
 export type SettingsUpdateInput_ThinkingLevel =
   | 'off'
   | 'minimal'
@@ -1156,6 +1160,10 @@
    */
   codeMode?: boolean;
   /**
+   * Code Mode interpreter; omitted selects JavaScript.
+   */
+  codeModeLanguage?: SettingsUpdateInput_CodeLanguage;
+  /**
    * Independent of Code Mode: select patch editing or structured Edit/Write.
    */
   applyPatch?: boolean;
diff --git a/packages/plugin-sdk/src/generated/runtime.ts b/packages/plugin-sdk/src/generated/runtime.ts
index 8bd35bb..567c324 100644
--- a/packages/plugin-sdk/src/generated/runtime.ts
+++ b/packages/plugin-sdk/src/generated/runtime.ts
@@ -2364,6 +2364,10 @@
       next: SettingsModelCursor | null;
       kind: 'ready';
     };
+/**
+ * Interpreter used only for model-facing Code Mode cells.
+ */
+export type CodeLanguage = 'javascript' | 'python';
 export type SettingsDefaultModel =
   | {
       kind: 'none';
@@ -7871,6 +7875,7 @@
 }
 export interface SettingsModelToolPreferences {
   codeMode: boolean | null;
+  codeModeLanguage: CodeLanguage | null;
   applyPatch: boolean | null;
 }
 export interface SettingsModelLimitSettings {
@@ -7944,6 +7949,10 @@
    */
   codeMode?: boolean;
   /**
+   * Code Mode interpreter; omitted selects JavaScript.
+   */
+  codeModeLanguage?: CodeLanguage;
+  /**
    * Independent of Code Mode: select patch editing or structured Edit/Write.
    */
   applyPatch?: boolean;
diff --git a/platform/event-log/tests/auxiliary_usage.rs b/platform/event-log/tests/auxiliary_usage.rs
index fe785af..fc01f70 100644
--- a/platform/event-log/tests/auxiliary_usage.rs
+++ b/platform/event-log/tests/auxiliary_usage.rs
@@ -245,6 +245,7 @@
         collaboration_mode: CollaborationMode::Agent,
         orchestration_mode: BehaviorId::default(),
         tool_mode: ToolMode::Direct,
+        code_language: Default::default(),
     };
     let opening = Fact::InvocationOpened {
         configuration: Some(Box::new(configuration)),
diff --git a/platform/event-log/tests/continuation/fixtures.rs b/platform/event-log/tests/continuation/fixtures.rs
index ba8c43e..97a2148 100644
--- a/platform/event-log/tests/continuation/fixtures.rs
+++ b/platform/event-log/tests/continuation/fixtures.rs
@@ -47,6 +47,7 @@
                 collaboration_mode: CollaborationMode::Agent,
                 orchestration_mode: BehaviorId::default(),
                 tool_mode: ToolMode::Direct,
+                code_language: Default::default(),
                 model: None,
                 thinking_level: None,
             })),
diff --git a/platform/event-log/tests/diagnostics.rs b/platform/event-log/tests/diagnostics.rs
index 9da5c0d..c17c5ff 100644
--- a/platform/event-log/tests/diagnostics.rs
+++ b/platform/event-log/tests/diagnostics.rs
@@ -68,6 +68,7 @@
                 collaboration_mode: CollaborationMode::Agent,
                 orchestration_mode: BehaviorId::default(),
                 tool_mode: ToolMode::Direct,
+                code_language: Default::default(),
             })),
             input: InvocationInput::Message {
                 source_messages: vec![],
diff --git a/platform/event-log/tests/executor.rs b/platform/event-log/tests/executor.rs
index 587c938..14a48d2 100644
--- a/platform/event-log/tests/executor.rs
+++ b/platform/event-log/tests/executor.rs
@@ -73,6 +73,7 @@
             collaboration_mode: CollaborationMode::Agent,
             orchestration_mode: BehaviorId::default(),
             tool_mode: ToolMode::Direct,
+            code_language: Default::default(),
         })),
     }))
     .await
diff --git a/platform/event-log/tests/executor_identity/mod.rs b/platform/event-log/tests/executor_identity/mod.rs
index fb873a3..7eb197b 100644
--- a/platform/event-log/tests/executor_identity/mod.rs
+++ b/platform/event-log/tests/executor_identity/mod.rs
@@ -80,6 +80,7 @@
                 collaboration_mode: CollaborationMode::Agent,
                 orchestration_mode: BehaviorId::default(),
                 tool_mode: ToolMode::Direct,
+                code_language: Default::default(),
             })
         }),
     }
diff --git a/platform/event-log/tests/transcript_index/performance_executor.rs b/platform/event-log/tests/transcript_index/performance_executor.rs
index 69df735..f6640f0 100644
--- a/platform/event-log/tests/transcript_index/performance_executor.rs
+++ b/platform/event-log/tests/transcript_index/performance_executor.rs
@@ -65,6 +65,7 @@
             collaboration_mode: CollaborationMode::Agent,
             orchestration_mode: BehaviorId::default(),
             tool_mode: ToolMode::Direct,
+            code_language: Default::default(),
         }));
         log.append(&event("a", opening)).await.unwrap();
         log.append(&event(
diff --git a/platform/python-runtime/Cargo.toml b/platform/python-runtime/Cargo.toml
index c73625d..e4ae2ae 100644
--- a/platform/python-runtime/Cargo.toml
+++ b/platform/python-runtime/Cargo.toml
@@ -34,7 +34,12 @@
 monty-types = "=1.3.0"
 monty-alloc = { version = "=1.3.0", features = ["exit-code"] }
 serde.workspace = true
-serde_json.workspace = true
+serde_json = { workspace = true, features = ["unbounded_depth"] }
 tokio = { workspace = true, features = ["process"] }
 tokio-util.workspace = true
 uuid.workspace = true
+
+[dev-dependencies]
+maka-tools.workspace = true
+maka-event-log.workspace = true
+tempfile.workspace = true
diff --git a/platform/python-runtime/README.md b/platform/python-runtime/README.md
new file mode 100644
index 0000000..516ae5e
--- /dev/null
+++ b/platform/python-runtime/README.md
@@ -0,0 +1,34 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+# maka-python-runtime
+
+[简体中文](README.zh-CN.md)
+
+Optional Python Code Mode backend, implemented with pinned Monty 1.3.0 Rust crates. No system Python, pip packages or native extensions are needed. Enable Code Mode and select Python in connection model settings (`codeModeLanguage: "python"`). JavaScript remains the default.
+
+Each cell starts a fresh `maka-python-worker` process beside the Host executable. Build it with `cargo build -p maka-python-runtime`; the development runner and native release packages include it automatically. Embeddings can supply an explicit worker path with `CodeExecutor::with_worker`.
+
+The worker supports top-level await and JSON tool calls through `await tools.name(input)` or keyword arguments. `asyncio.gather` supports concurrent tools; catch errors inside each coroutine for partial results. The interpreter does not provide the full CPython standard library, `asyncio.create_task`, `TaskGroup`, or `gather(return_exceptions=True)`. Filesystem, network and process operations go through authorized Host tools.
+
+The shared cell runtime owns tool effects, output and the session JSON store. Both backends wait for physical cleanup before reporting completion, including cancellation and dropped observers. Python globals never persist; `store`/`load` values do and can cross language boundaries. Only lossless JSON values cross the worker boundary, with a 128-level nesting bound.
+
+The default limits are 64 MiB interpreter allocation and 30 seconds cumulative execution. The process allocator adds bounded headroom for protocol and interpreter overhead. Worker startup and Host waits do not consume execution time; compilation does. Cancellation kills and reaps the worker and settles admitted tool work. The allocator is installed only in the worker binary, never in the Host.
+
+[Source](src/lib.rs) · [Cell instructions](../../plugins/agent/tools/src/cell/python.md)
diff --git a/platform/python-runtime/README.zh-CN.md b/platform/python-runtime/README.zh-CN.md
new file mode 100644
index 0000000..fb650b8
--- /dev/null
+++ b/platform/python-runtime/README.zh-CN.md
@@ -0,0 +1,34 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+# maka-python-runtime
+
+[English](README.md)
+
+可选的 Python Code Mode 后端,使用固定版本 Monty 1.3.0 Rust crate,不依赖系统 Python、pip 包或原生扩展。在连接的模型设置中启用 Code Mode 并选择 Python(`codeModeLanguage: "python"`);默认语言仍为 JavaScript。
+
+每个 cell 启动独立的 `maka-python-worker`,默认位于 Host 可执行文件旁。使用 `cargo build -p maka-python-runtime` 构建;开发运行脚本和原生发行包自动包含它。嵌入方可通过 `CodeExecutor::with_worker` 提供明确路径。
+
+支持顶层 await,以及 `await tools.name(input)` 或关键字参数形式的 JSON 工具调用。使用 `asyncio.gather` 并发调用;若需保留部分成功结果,在各协程内部捕获异常。Monty 不提供完整 CPython 标准库,也不支持 `asyncio.create_task`、`TaskGroup` 或 `gather(return_exceptions=True)`。文件、网络和进程操作必须通过已授权 Host 工具。
+
+共用 cell 运行时管理工具效果、输出和会话 JSON 存储。取消或丢弃观察者后,仍须等待实际清理才完成。Python 全局变量不跨 cell 保留;`store`/`load` 值可跨 cell 和语言共享。worker 边界只接受无损 JSON,嵌套上限为 128 层。
+
+默认限制为解释器分配 64 MiB、累计执行 30 秒;进程分配器为协议和解释器开销保留有界余量。启动和等待 Host 不计入执行时间,编译计入。取消会终止并回收 worker,再等待已接收的工具效果清理。全局分配器只安装于 worker 二进制,不影响 Host。
+
+[源码](src/lib.rs) · [Cell 指令](../../plugins/agent/tools/src/cell/python.md)
diff --git a/platform/python-runtime/src/helpers.rs b/platform/python-runtime/src/helpers.rs
index 8bce8ae..5140eca 100644
--- a/platform/python-runtime/src/helpers.rs
+++ b/platform/python-runtime/src/helpers.rs
@@ -26,6 +26,9 @@
     mut kwargs: serde_json::Map<String, Value>,
     context: &CellContext,
 ) -> Result<Value, CellDiagnostic> {
+    for value in args.iter().chain(kwargs.values()) {
+        crate::protocol::validate_json(value)?;
+    }
     let fields: &[&str] = match name {
         "text" | "notify" | "audio" | "generated_image" => &["value"],
         "image" => &["value", "detail"],
diff --git a/platform/python-runtime/src/lib.rs b/platform/python-runtime/src/lib.rs
index 0deb74c..acf6554 100644
--- a/platform/python-runtime/src/lib.rs
+++ b/platform/python-runtime/src/lib.rs
@@ -123,7 +123,10 @@
             cancellation.child_token(),
             Handle::current(),
         );
-        let mut child = tokio::process::Command::new(&self.worker)
+        let mut command = tokio::process::Command::new(&self.worker);
+        #[cfg(windows)]
+        command.creation_flags(0x0800_0000); // CREATE_NO_WINDOW: worker only uses pipes.
+        let mut child = command
             .args([
                 self.limits.heap_bytes.to_string(),
                 self.limits.timeout.as_millis().to_string(),
@@ -191,6 +194,15 @@
     limits: &CellLimits,
 ) -> Result<Result<Value, CellDiagnostic>, CellAbort> {
     send(input, &start).await?;
+    // Loading the trusted executable and initializing transport precede user
+    // execution, just as V8 construction precedes its execution clock. The
+    // owning cancellation token remains active through this handshake.
+    if !matches!(
+        receive(output, limits.heap_bytes.saturating_add(4 * 1024 * 1024)).await?,
+        Request::Ready
+    ) {
+        return Err(internal("Python worker omitted its ready frame"));
+    }
     let mut remaining = limits.timeout;
     let mut pending = Pending::new();
     let mut ready = BTreeMap::new();
@@ -212,6 +224,7 @@
             }
         };
         let reply = match request {
+            Request::Ready => return Err(internal("duplicate Python worker ready frame")),
             Request::Complete { error } => {
                 return Ok(match error {
                     Some(error) => Err(error),
@@ -233,7 +246,10 @@
                             "tool expects one JSON argument or keyword arguments",
                         )),
                     };
-                    match input.and_then(|input| scope.start(name.into(), input)) {
+                    match input.and_then(|input| {
+                        protocol::validate_json(&input)?;
+                        scope.start(name.into(), input)
+                    }) {
                         Ok(receiver) => {
                             if !admitted.insert(id) {
                                 return Err(internal("duplicate Python call identity"));
@@ -241,9 +257,15 @@
                             pending.push(Box::pin(async move {
                                 (
                                     id,
-                                    receiver.await.unwrap_or_else(|_| {
-                                        Err(helpers::error("tool outcome unavailable"))
-                                    }),
+                                    receiver
+                                        .await
+                                        .unwrap_or_else(|_| {
+                                            Err(helpers::error("tool outcome unavailable"))
+                                        })
+                                        .and_then(|value| {
+                                            protocol::validate_json(&value)?;
+                                            Ok(value)
+                                        }),
                                 )
                             }));
                             Reply::Pending
@@ -251,7 +273,10 @@
                         Err(error) => Reply::Error { error },
                     }
                 } else if let Some(name) = name.strip_prefix("helper:") {
-                    match helpers::invoke(name, args, kwargs, context) {
+                    match helpers::invoke(name, args, kwargs, context).and_then(|value| {
+                        protocol::validate_json(&value)?;
+                        Ok(value)
+                    }) {
                         Ok(_) if name == "exit" => return Ok(Ok(Value::Null)),
                         Ok(_) if name == "yield_control" => {
                             admitted.insert(id);
@@ -344,7 +369,7 @@
         line.extend_from_slice(&bytes[..count]);
         output.consume(count);
         if end.is_some() {
-            return serde_json::from_slice(&line).map_err(internal);
+            return protocol::decode(&line).map_err(internal);
         }
     }
 }
diff --git a/platform/python-runtime/src/main.rs b/platform/python-runtime/src/main.rs
index a398891..a9f085b 100644
--- a/platform/python-runtime/src/main.rs
+++ b/platform/python-runtime/src/main.rs
@@ -21,6 +21,10 @@
 static ALLOCATOR: monty_alloc::LimitedAllocator = monty_alloc::LimitedAllocator;
 
 fn main() {
+    if std::env::args().nth(1).as_deref() == Some("--version") {
+        println!("maka-python-worker {}", env!("CARGO_PKG_VERSION"));
+        return;
+    }
     if let Err(error) = maka_python_runtime::worker::run_stdio() {
         eprintln!("Python worker: {error}");
         std::process::exit(1);
diff --git a/platform/python-runtime/src/protocol.rs b/platform/python-runtime/src/protocol.rs
index 35634b9..9da59a2 100644
--- a/platform/python-runtime/src/protocol.rs
+++ b/platform/python-runtime/src/protocol.rs
@@ -32,6 +32,7 @@
 #[derive(Serialize, Deserialize)]
 #[serde(tag = "kind", rename_all = "snake_case")]
 pub(crate) enum Request {
+    Ready,
     Call {
         id: u32,
         name: String,
@@ -65,3 +66,86 @@
         results: Vec<(u32, Result<Value, CellDiagnostic>)>,
     },
 }
+
+// Payloads are bounded separately so private framing cannot change which JSON
+// values a Python cell can send or receive.
+pub(crate) const MAX_JSON_DEPTH: usize = 128;
+pub(crate) fn validate_json(value: &Value) -> Result<(), CellDiagnostic> {
+    let mut stack = vec![(value, 0)];
+    while let Some((value, depth)) = stack.pop() {
+        if depth >= MAX_JSON_DEPTH {
+            return Err(crate::helpers::error(
+                "JSON value exceeds the transport nesting limit",
+            ));
+        }
+        match value {
+            Value::Array(values) => stack.extend(values.iter().map(|value| (value, depth + 1))),
+            Value::Object(values) => stack.extend(values.values().map(|value| (value, depth + 1))),
+            _ => {}
+        }
+    }
+    Ok(())
+}
+pub(crate) fn decode<T: serde::de::DeserializeOwned>(bytes: &[u8]) -> Result<T, serde_json::Error> {
+    // Resolved { results: [(id, Result<Value, Diagnostic>)] } adds four
+    // containers around a payload. Check framing before recursive serde code
+    // runs: a corrupted worker must not exhaust the Host stack.
+    let mut depth = 0usize;
+    let mut quoted = false;
+    let mut escaped = false;
+    for byte in bytes {
+        if quoted {
+            if escaped {
+                escaped = false;
+            } else if *byte == b'\\' {
+                escaped = true;
+            } else if *byte == b'"' {
+                quoted = false;
+            }
+        } else {
+            match byte {
+                b'"' => quoted = true,
+                b'[' | b'{' => {
+                    depth += 1;
+                    if depth > MAX_JSON_DEPTH + 4 {
+                        return Err(serde_json::Error::io(std::io::Error::new(
+                            std::io::ErrorKind::InvalidData,
+                            "worker frame nesting limit exceeded",
+                        )));
+                    }
+                }
+                b']' | b'}' => depth = depth.saturating_sub(1),
+                _ => {}
+            }
+        }
+    }
+    let mut decoder = serde_json::Deserializer::from_slice(bytes);
+    decoder.disable_recursion_limit();
+    let value = T::deserialize(&mut decoder)?;
+    decoder.end()?;
+    Ok(value)
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    #[test]
+    fn frames_are_bounded_before_recursive_decoding_and_strings_are_not_structure() {
+        let frame = format!(
+            "{}0{}",
+            "[".repeat(MAX_JSON_DEPTH + 5),
+            "]".repeat(MAX_JSON_DEPTH + 5)
+        );
+        assert!(
+            decode::<Value>(frame.as_bytes())
+                .unwrap_err()
+                .to_string()
+                .contains("nesting limit")
+        );
+        let text = format!("{}\\\"{}", "[".repeat(1000), "}".repeat(1000));
+        assert_eq!(
+            decode::<Value>(&serde_json::to_vec(&text).unwrap()).unwrap(),
+            Value::String(text)
+        );
+    }
+}
diff --git a/platform/python-runtime/src/value.rs b/platform/python-runtime/src/value.rs
index bdae781..b903ffb 100644
--- a/platform/python-runtime/src/value.rs
+++ b/platform/python-runtime/src/value.rs
@@ -48,9 +48,9 @@
 }
 
 fn convert(value: ObjectRef<'_>, depth: usize) -> Result<Value, String> {
-    // The JSON transport uses serde_json's default recursion boundary (128).
+    // Business JSON values have one depth bound, independent of protocol framing.
     // Cycles also terminate here; they can never silently become repr strings.
-    if depth >= 128 {
+    if depth >= crate::protocol::MAX_JSON_DEPTH {
         return Err("JSON value is cyclic or exceeds the transport nesting limit".into());
     }
     Ok(match value.type_name() {
diff --git a/platform/python-runtime/src/worker.rs b/platform/python-runtime/src/worker.rs
index 2c4ff4a..d95feae 100644
--- a/platform/python-runtime/src/worker.rs
+++ b/platform/python-runtime/src/worker.rs
@@ -57,6 +57,7 @@
     let mut input = stdin.lock();
     let mut output = stdout.lock();
     let start: Start = read(&mut input)?;
+    write(&mut output, &Request::Ready)?;
     let result = execute(
         start,
         ResourceLimits {
@@ -267,7 +268,7 @@
     if input.read_line(&mut line)? == 0 {
         return Err("Host closed the worker protocol".into());
     }
-    Ok(serde_json::from_str(&line)?)
+    Ok(crate::protocol::decode(line.as_bytes())?)
 }
 fn write(
     output: &mut impl Write,
diff --git a/platform/python-runtime/tests/code_mode.rs b/platform/python-runtime/tests/code_mode.rs
new file mode 100644
index 0000000..61a5160
--- /dev/null
+++ b/platform/python-runtime/tests/code_mode.rs
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use maka_agent_facts::{
+    event::{EventWrite, Fact, Invocation, InvocationInput, LogScope, RuntimeEvent},
+    execution::{CodeLanguage, ToolMode},
+    language::Language,
+    model::{ModelFinishReason, ModelPart, ModelStep, ModelToolCall},
+    tool_call::ToolOrigin,
+    tools::{ToolExecutor, ToolFuture},
+};
+use maka_code_runtime::{CellLimits, CellStore};
+use maka_event_log::EventLog;
+use maka_tools::{
+    CodeExecutor, RunTools, ToolCatalog, ToolDefinition, ToolHandler, ToolNesting,
+    ToolRegistration, ToolSemantics,
+};
+use serde_json::{Value, json};
+use std::sync::Arc;
+use tokio_util::sync::CancellationToken;
+
+struct Echo;
+impl ToolExecutor for Echo {
+    fn names(&self) -> Vec<String> {
+        vec!["echo-tool".into()]
+    }
+    fn invoke(&self, _: String, input: Value, _: CancellationToken) -> ToolFuture {
+        Box::pin(async move { Ok(input) })
+    }
+}
+
+#[tokio::test]
+async fn selected_python_runs_through_exec_grammar_catalog_and_durable_journal() {
+    tokio::time::timeout(std::time::Duration::from_secs(15),async {
+        let directory=tempfile::tempdir().unwrap();
+        let log=Arc::new(EventLog::open(&directory.path().join("events.sqlite")).await.unwrap());
+        let invocation=Invocation {session_id:"python-session".into(),turn_id:"turn".into(),run_id:"run".into(),invocation_id:"invocation".into()};
+        log.create_session(&invocation.session_id,"create",&json!({}),1).await.unwrap();
+        log.append(&EventWrite::plain(RuntimeEvent::new(invocation.clone(),Fact::InvocationOpened {
+            configuration:None,input:InvocationInput::Message {source_messages:vec![],content:"test".into(),request_fingerprint:None}
+        })).unwrap()).await.unwrap();
+        let catalog=ToolCatalog::new([ToolRegistration {
+            definition:ToolDefinition {freeform:None,output_schema:None,provider:None,name:"echo-tool".into(),description:"Echo an integer".into(),input_schema:json!({"type":"object","properties":{"n":{"type":"integer"}},"required":["n"],"additionalProperties":false})},
+            handler:ToolHandler::Immediate(Arc::new(Echo)),nesting:ToolNesting::Nestable,semantics:ToolSemantics::Parallel,
+        }]).unwrap();
+        let executor=CodeExecutor::new(CellLimits::default()).unwrap().with_python_worker(env!("CARGO_BIN_EXE_maka-python-worker").into()).unwrap();
+        let store=CellStore::default();
+        for (step,language,source,expected) in [
+            ("python",CodeLanguage::Python,"# @exec: {\"yield_time_ms\": 10000, \"max_output_tokens\": 1000}\nresult=await tools.echo_tool(n=7)\nstore('receipt',result)\ntext(result)",json!([{"kind":"text","text":"{\"n\":7}"}])),
+            ("javascript",CodeLanguage::JavaScript,"text(load('receipt'));",json!([{"kind":"text","text":"{\"n\":7}"}])),
+        ] {
+            let run=RunTools::new(Language::En,log.clone(),invocation.clone(),catalog.clone(),ToolMode::CodeMode,executor.clone().with_language(language),Default::default()).with_store(store.clone());
+            let request=run.capture(".",CancellationToken::new()).await.unwrap();
+            let definitions=request.definitions();let definition=definitions.iter().find(|tool|tool.name=="exec").unwrap();
+            if language==CodeLanguage::Python {
+                assert!(definition.description.contains("Input JSON Schema"));
+                assert!(definition.description.contains("await tools.echo_tool(input)"));
+                let grammar=serde_json::to_value(&definition.freeform).unwrap().to_string();
+                assert!(grammar.contains("# @exec:"));
+                assert!(!definition.description.contains("declare const tools"));
+            }
+            let call=ModelToolCall {id:step.into(),name:"exec".into(),input:json!(source).into(),provider_options:None,provider_executed:false};
+            let facts=[
+                Fact::ModelRequested {context_breakdown:None,item_acceptance:false,step_id:step.into(),model_id:"fixture".into(),source_scope:LogScope::Root,source_high_water:0,source_digest:String::new(),effective_source_digest:None,input_digest:String::new(),route_identity:String::new(),checkpoint_event_id:None,purpose:maka_agent_facts::context::ModelPurpose::Main,context:None},
+                Fact::ModelCompleted {step_id:step.into(),output:ModelStep {parts:vec![ModelPart::ToolCall {call:call.clone()}],finish_reason:ModelFinishReason::ToolCalls,usage:Default::default(),provider_options:None,response_id:None,model:None,timestamp:None}},
+            ];
+            log.append_batch(&facts.map(|fact|EventWrite::plain(RuntimeEvent::new(invocation.clone(),fact)).unwrap())).await.unwrap();
+            let result=request.into_step(step).invoke(&call,CancellationToken::new()).await.unwrap();
+            assert_eq!(result["state"],"completed","{result}");
+            assert_eq!(result["result"]["ok"],true,"{result}");
+            assert_eq!(result["content"],expected);
+            run.shutdown().await.unwrap();
+        }
+        let prefix=log.prefix(100,1024*1024).await.unwrap();
+        assert_eq!(prefix.events.iter().filter(|event|matches!(&event.event.fact,Fact::ToolDispatched {name,call,..} if name=="echo-tool" && matches!(call.origin,ToolOrigin::CodeMode {..}))).count(),1);
+        assert!(log.invocation_recovery(&invocation,100,1024*1024).await.unwrap().uncertain_operations.is_empty());
+        Arc::try_unwrap(log).ok().unwrap().close().await.unwrap();
+    }).await.unwrap();
+}
diff --git a/platform/python-runtime/tests/runtime.rs b/platform/python-runtime/tests/runtime.rs
index f91c361..9cdbb57 100644
--- a/platform/python-runtime/tests/runtime.rs
+++ b/platform/python-runtime/tests/runtime.rs
@@ -411,3 +411,109 @@
         Err(CellAbort::Tool(ToolError::Persistence(_)))
     ));
 }
+
+#[tokio::test]
+async fn json_depth_is_independent_of_request_and_reply_framing() {
+    for depth in [123, 124, 125, 126, 127, 128] {
+        for host_value in [false, true] {
+            let tools = Arc::new(Tools(move |_, input, _| -> ToolFuture {
+                Box::pin(async move {
+                    Ok(if host_value {
+                        (0..depth).fold(json!("leaf"), |value, _| json!([value]))
+                    } else {
+                        input
+                    })
+                })
+            }));
+            let context = context();
+            let source = format!(
+                "v='leaf'\nfor _ in range({depth}):\n    v=[v]\ntry:\n    v=await tools.echo({})\n    for _ in range({depth}):\n        v=v[0]\n    text(v)\nexcept Exception:\n    text('rejected')",
+                if host_value { "None" } else { "v" }
+            );
+            success(
+                executor(CellLimits::default())
+                    .execute_module(source, tools, CancellationToken::new(), context.clone())
+                    .await
+                    .unwrap(),
+            );
+            let expected = if depth < 128 { "leaf" } else { "rejected" };
+            assert!(
+                matches!(&context.take_output()[0], CellOutput::Text { text } if text == expected),
+                "depth {depth}, host value {host_value}"
+            );
+        }
+    }
+}
+
+#[tokio::test]
+async fn parent_cell_can_await_child_without_a_worker_pool_deadlock() {
+    let child = executor(CellLimits::default());
+    let tools = Arc::new(Tools(move |_, _, cancel| -> ToolFuture {
+        let child = child.clone();
+        Box::pin(async move {
+            success(
+                child
+                    .execute_module("text('child')".into(), echo(), cancel, context())
+                    .await
+                    .unwrap(),
+            );
+            Ok(json!("child settled"))
+        })
+    }));
+    let result = tokio::time::timeout(
+        Duration::from_secs(5),
+        executor(CellLimits::default()).execute_module(
+            "text(await tools.echo({}))".into(),
+            tools,
+            CancellationToken::new(),
+            context(),
+        ),
+    )
+    .await
+    .unwrap()
+    .unwrap();
+    assert_eq!(success(result), 1);
+}
+
+#[tokio::test]
+async fn execution_budget_accumulates_across_host_resumes() {
+    let result = tokio::time::timeout(
+        Duration::from_secs(5),
+        executor(CellLimits {
+            timeout: Duration::from_millis(150),
+            ..Default::default()
+        })
+        .execute_module(
+            "while True:\n    await tools.echo({})".into(),
+            echo(),
+            CancellationToken::new(),
+            context(),
+        ),
+    )
+    .await
+    .unwrap()
+    .unwrap();
+    assert!(
+        matches!(result,CellResult::Failure{error,tool_calls} if error.kind==CellDiagnosticKind::LimitExceeded && tool_calls.len()>1)
+    );
+}
+
+#[tokio::test]
+async fn loading_deep_host_or_javascript_store_values_is_catchable() {
+    let context = context();
+    context
+        .store(
+            "deep".into(),
+            (0..132).fold(json!(0), |value, _| json!([value])),
+        )
+        .unwrap();
+    success(
+        run(
+            "try:\n    load('deep')\nexcept Exception:\n    text('rejected')",
+            context.clone(),
+        )
+        .await
+        .unwrap(),
+    );
+    assert!(matches!(&context.take_output()[0],CellOutput::Text{text} if text=="rejected"));
+}
diff --git a/plugins/agent/engine/Cargo.toml b/plugins/agent/engine/Cargo.toml
index 1eafca3..82f6afe 100644
--- a/plugins/agent/engine/Cargo.toml
+++ b/plugins/agent/engine/Cargo.toml
@@ -32,7 +32,6 @@
 base64 = "0.22.1"
 maka-event-log.workspace = true
 maka-model.workspace = true
-maka-js-runtime.workspace = true
 maka-tools.workspace = true
 serde.workspace = true
 serde_json.workspace = true
diff --git a/plugins/agent/engine/src/continuation.rs b/plugins/agent/engine/src/continuation.rs
index 2a2c16d..412215e 100644
--- a/plugins/agent/engine/src/continuation.rs
+++ b/plugins/agent/engine/src/continuation.rs
@@ -160,7 +160,10 @@
         input.invocation.clone(),
         catalog.clone(),
         input.configuration.tool_mode,
-        inner.cells.clone(),
+        inner
+            .cells
+            .clone()
+            .with_language(input.configuration.code_language),
         loaded_basis.clone().into(),
     )
     .with_model(input.provider.tool_context());
diff --git a/plugins/agent/engine/src/lib.rs b/plugins/agent/engine/src/lib.rs
index 2c9a84e..bb8d7f6 100644
--- a/plugins/agent/engine/src/lib.rs
+++ b/plugins/agent/engine/src/lib.rs
@@ -53,8 +53,8 @@
 use maka_agent_facts::input::MessageInput;
 use maka_agent_facts::tools::ToolError;
 use maka_event_log::{EventLog, StoreError};
-use maka_js_runtime::CodeExecutor;
 use maka_model::{ModelError, ModelExecutor, ProviderConfig};
+use maka_tools::CodeExecutor;
 use maka_tools::ToolCatalog;
 use serde_json::Value;
 use tokio_util::sync::CancellationToken;
diff --git a/plugins/agent/engine/src/steps.rs b/plugins/agent/engine/src/steps.rs
index 86634ce..c7178c6 100644
--- a/plugins/agent/engine/src/steps.rs
+++ b/plugins/agent/engine/src/steps.rs
@@ -46,7 +46,10 @@
         input.invocation.clone(),
         catalog,
         input.configuration.tool_mode,
-        inner.cells.clone(),
+        inner
+            .cells
+            .clone()
+            .with_language(input.configuration.code_language),
         session.loaded,
     )
     .with_model(input.provider.tool_context())
diff --git a/plugins/agent/engine/tests/integration/agent_loop.rs b/plugins/agent/engine/tests/integration/agent_loop.rs
index 94fd378..996842f 100644
--- a/plugins/agent/engine/tests/integration/agent_loop.rs
+++ b/plugins/agent/engine/tests/integration/agent_loop.rs
@@ -26,8 +26,8 @@
 use maka_agent_facts::event::TerminalStatus;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::ModelExecutor;
+use maka_tools::CodeExecutor;
 use serde_json::{Value, json};
 use tokio::net::TcpListener;
 use tokio::sync::Notify;
diff --git a/plugins/agent/engine/tests/integration/auto_context/background.rs b/plugins/agent/engine/tests/integration/auto_context/background.rs
index 52eda31..f67ff74 100644
--- a/plugins/agent/engine/tests/integration/auto_context/background.rs
+++ b/plugins/agent/engine/tests/integration/auto_context/background.rs
@@ -27,7 +27,7 @@
     Engine::new(
         log,
         maka_model::ModelExecutor::new(Duration::from_secs(10)).unwrap(),
-        maka_js_runtime::CodeExecutor::new(Default::default()).unwrap(),
+        maka_tools::CodeExecutor::new(Default::default()).unwrap(),
     )
 }
 
diff --git a/plugins/agent/engine/tests/integration/code_mode.rs b/plugins/agent/engine/tests/integration/code_mode.rs
index 979416b..14feded 100644
--- a/plugins/agent/engine/tests/integration/code_mode.rs
+++ b/plugins/agent/engine/tests/integration/code_mode.rs
@@ -31,8 +31,8 @@
 use maka_agent_facts::tool_call::ToolOrigin;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::ModelExecutor;
+use maka_tools::CodeExecutor;
 use serde_json::{Value, json};
 use tokio::net::TcpListener;
 use tokio::sync::Barrier;
diff --git a/plugins/agent/engine/tests/integration/code_mode_lifetime.rs b/plugins/agent/engine/tests/integration/code_mode_lifetime.rs
index f093cb8..9b78ba6 100644
--- a/plugins/agent/engine/tests/integration/code_mode_lifetime.rs
+++ b/plugins/agent/engine/tests/integration/code_mode_lifetime.rs
@@ -32,8 +32,8 @@
 use maka_agent_facts::event::ToolOutcome;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::{ModelExecutor, ProviderConfig, ProviderKind};
+use maka_tools::CodeExecutor;
 use maka_tools::{
     ToolCatalog, ToolDefinition, ToolHandler, ToolMode, ToolNesting, ToolRegistration,
     ToolSemantics,
@@ -161,7 +161,8 @@
                     .await,
                 Err(RunError::Busy)
             ));
-            let next = cells.execute("return 7;".into(), effect.clone(), CancellationToken::new());
+            let output = maka_code_runtime::CellContext::new(Default::default(), vec![]);
+            let next = cells.execute_module("text(7);".into(), effect.clone(), CancellationToken::new(), output.clone());
             tokio::pin!(next);
             // Explicitly poll the contender while the cancelled effect remains
             // blocked on release. Cancellation must not free the shared permit.
@@ -171,8 +172,9 @@
             effect.release.notify_one();
             assert_eq!(
                 serde_json::to_value(next.await.unwrap()).unwrap(),
-                json!({"ok":true,"value":7,"toolCalls":[]})
+                json!({"ok":true,"value":null,"toolCalls":[]})
             );
+            assert!(matches!(&output.take_output()[0], maka_code_runtime::CellOutput::Text { text } if text == "7"));
             engine.drain().await;
             let settled = log.prefix(100, 128 * 1024).await.unwrap();
             let state = settled.project_invocation("invocation-aborted");
diff --git a/plugins/agent/engine/tests/integration/code_mode_media.rs b/plugins/agent/engine/tests/integration/code_mode_media.rs
index eca7463..4280c69 100644
--- a/plugins/agent/engine/tests/integration/code_mode_media.rs
+++ b/plugins/agent/engine/tests/integration/code_mode_media.rs
@@ -26,8 +26,8 @@
 use maka_agent_facts::tools::ToolFuture;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::{ModelExecutor, ProviderKind};
+use maka_tools::CodeExecutor;
 use maka_tools::{
     ToolCatalog, ToolDefinition, ToolHandler, ToolNesting, ToolRegistration, ToolSemantics,
 };
diff --git a/plugins/agent/engine/tests/integration/context_compaction.rs b/plugins/agent/engine/tests/integration/context_compaction.rs
index b8342b5..d385910 100644
--- a/plugins/agent/engine/tests/integration/context_compaction.rs
+++ b/plugins/agent/engine/tests/integration/context_compaction.rs
@@ -34,7 +34,7 @@
         maka_agent_engine::Engine::new(
             log,
             model,
-            maka_js_runtime::CodeExecutor::new(Default::default()).unwrap(),
+            maka_tools::CodeExecutor::new(Default::default()).unwrap(),
         )
     };
     let input = |base: &str, id: &str, compact| {
diff --git a/plugins/agent/engine/tests/integration/handoff.rs b/plugins/agent/engine/tests/integration/handoff.rs
index bab83db..405d84b 100644
--- a/plugins/agent/engine/tests/integration/handoff.rs
+++ b/plugins/agent/engine/tests/integration/handoff.rs
@@ -31,8 +31,8 @@
 use maka_agent_facts::handoff::HandoffIntent;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::ModelExecutor;
+use maka_tools::CodeExecutor;
 use std::{
     sync::{
         Arc,
diff --git a/plugins/agent/engine/tests/integration/lifetime.rs b/plugins/agent/engine/tests/integration/lifetime.rs
index 2a490cb..0a942e9 100644
--- a/plugins/agent/engine/tests/integration/lifetime.rs
+++ b/plugins/agent/engine/tests/integration/lifetime.rs
@@ -36,8 +36,8 @@
 use maka_agent_facts::tools::ToolFuture;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::{ModelExecutor, ProviderConfig, ProviderKind};
+use maka_tools::CodeExecutor;
 use maka_tools::{
     ToolCatalog, ToolDefinition, ToolHandler, ToolMode, ToolNesting, ToolRegistration,
     ToolSemantics,
diff --git a/plugins/agent/engine/tests/integration/model_interruption.rs b/plugins/agent/engine/tests/integration/model_interruption.rs
index 7a562a7..9cc5e19 100644
--- a/plugins/agent/engine/tests/integration/model_interruption.rs
+++ b/plugins/agent/engine/tests/integration/model_interruption.rs
@@ -35,8 +35,8 @@
 use maka_agent_facts::model::error::ModelFailureCause;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::{ModelError, ModelExecutor, ProviderConfig, ProviderKind};
+use maka_tools::CodeExecutor;
 use maka_tools::ToolMode;
 use serde_json::json;
 use sha2::{Digest, Sha256};
diff --git a/plugins/agent/engine/tests/integration/startup_recovery.rs b/plugins/agent/engine/tests/integration/startup_recovery.rs
index 0601707..2af08e7 100644
--- a/plugins/agent/engine/tests/integration/startup_recovery.rs
+++ b/plugins/agent/engine/tests/integration/startup_recovery.rs
@@ -43,8 +43,8 @@
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
 use maka_event_log::recovery::recover_invocations as recover;
-use maka_js_runtime::CodeExecutor;
 use maka_model::{ModelExecutor, ProviderConfig, ProviderKind};
+use maka_tools::CodeExecutor;
 use maka_tools::ToolMode;
 use serde_json::json;
 use tokio::io::AsyncWriteExt;
diff --git a/plugins/agent/engine/tests/integration/support/context.rs b/plugins/agent/engine/tests/integration/support/context.rs
index c290ac9..690acad 100644
--- a/plugins/agent/engine/tests/integration/support/context.rs
+++ b/plugins/agent/engine/tests/integration/support/context.rs
@@ -26,8 +26,8 @@
 use maka_agent_facts::execution::ToolMode;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::{ModelExecutor, ProviderConfig, ProviderKind};
+use maka_tools::CodeExecutor;
 use serde_json::json;
 use std::{collections::BTreeMap, sync::Arc, time::Duration};
 use tokio::{io::AsyncWriteExt, net::TcpStream};
diff --git a/plugins/agent/engine/tests/integration/support/image_projection.rs b/plugins/agent/engine/tests/integration/support/image_projection.rs
index 8e5682c..bae38e5 100644
--- a/plugins/agent/engine/tests/integration/support/image_projection.rs
+++ b/plugins/agent/engine/tests/integration/support/image_projection.rs
@@ -25,8 +25,8 @@
 use maka_agent_facts::event::Invocation;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::{ModelExecutor, ProviderConfig, ProviderKind};
+use maka_tools::CodeExecutor;
 use maka_tools::ToolCatalog;
 use serde_json::{Value, json};
 use std::{collections::BTreeMap, sync::Arc, time::Duration};
diff --git a/plugins/agent/engine/tests/integration/support/invocation.rs b/plugins/agent/engine/tests/integration/support/invocation.rs
index ee96802..4748bb8 100644
--- a/plugins/agent/engine/tests/integration/support/invocation.rs
+++ b/plugins/agent/engine/tests/integration/support/invocation.rs
@@ -44,6 +44,7 @@
         collaboration_mode: CollaborationMode::Agent,
         orchestration_mode: BehaviorId::default(),
         tool_mode,
+        code_language: Default::default(),
         model: None,
         thinking_level: None,
     }
diff --git a/plugins/agent/engine/tests/integration/tool_arguments.rs b/plugins/agent/engine/tests/integration/tool_arguments.rs
index 7258362..6d3a5c2 100644
--- a/plugins/agent/engine/tests/integration/tool_arguments.rs
+++ b/plugins/agent/engine/tests/integration/tool_arguments.rs
@@ -28,8 +28,8 @@
 use maka_agent_facts::tool_call::ToolRejection;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
 use maka_model::ModelExecutor;
+use maka_tools::CodeExecutor;
 use maka_tools::ToolMode;
 use serde_json::json;
 use tokio::net::TcpListener;
diff --git a/plugins/agent/facts/src/configuration/model_override.rs b/plugins/agent/facts/src/configuration/model_override.rs
index 2e488c3..f1534d6 100644
--- a/plugins/agent/facts/src/configuration/model_override.rs
+++ b/plugins/agent/facts/src/configuration/model_override.rs
@@ -60,6 +60,14 @@
     )]
     #[schemars(with = "bool")]
     pub code_mode: Option<bool>,
+    /// Code Mode interpreter; omitted selects JavaScript.
+    #[serde(
+        default,
+        skip_serializing_if = "Option::is_none",
+        deserialize_with = "present"
+    )]
+    #[schemars(with = "crate::execution::CodeLanguage")]
+    pub code_mode_language: Option<crate::execution::CodeLanguage>,
     /// Independent of Code Mode: select patch editing or structured Edit/Write.
     #[serde(
         default,
diff --git a/plugins/agent/facts/src/execution.rs b/plugins/agent/facts/src/execution.rs
index f8ab175..e8d09a2 100644
--- a/plugins/agent/facts/src/execution.rs
+++ b/plugins/agent/facts/src/execution.rs
@@ -40,7 +40,7 @@
 mod behavior;
 pub use behavior::BehaviorId;
 mod tool_policy;
-pub use tool_policy::EditingTools;
+pub use tool_policy::{CodeLanguage, EditingTools};
 
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
 #[serde(rename_all = "snake_case")]
@@ -136,6 +136,9 @@
     pub collaboration_mode: CollaborationMode,
     pub orchestration_mode: BehaviorId,
     pub tool_mode: ToolMode,
+    /// Frozen Code Mode interpreter. Historical invocations used JavaScript.
+    #[serde(default, skip_serializing_if = "CodeLanguage::is_javascript")]
+    pub code_language: CodeLanguage,
     /// None means there was no Session-owned model binding (e.g. local Code).
     pub model: Option<ModelBinding>,
     pub thinking_level: Option<ThinkingLevel>,
diff --git a/plugins/agent/facts/src/execution/tool_policy.rs b/plugins/agent/facts/src/execution/tool_policy.rs
index 43bf635..834a979 100644
--- a/plugins/agent/facts/src/execution/tool_policy.rs
+++ b/plugins/agent/facts/src/execution/tool_policy.rs
@@ -20,6 +20,23 @@
 use super::ToolMode;
 use serde::{Deserialize, Serialize};
 
+/// Interpreter used only for model-facing Code Mode cells.
+#[derive(
+    Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema,
+)]
+#[serde(rename_all = "snake_case")]
+pub enum CodeLanguage {
+    #[default]
+    #[serde(rename = "javascript")]
+    JavaScript,
+    Python,
+}
+impl CodeLanguage {
+    pub fn is_javascript(&self) -> bool {
+        *self == Self::JavaScript
+    }
+}
+
 impl ToolMode {
     /// Product default, not capability detection. A model override always wins.
     pub fn for_model(model_id: &str, request_url: &str, enabled: Option<bool>) -> Self {
diff --git a/plugins/agent/native/README.md b/plugins/agent/native/README.md
index 32fd99b..8b3b7c9 100644
--- a/plugins/agent/native/README.md
+++ b/plugins/agent/native/README.md
@@ -41,6 +41,8 @@
 
 The Agent captures the model's Code Mode default or explicit `codeMode` override when it accepts a message. Queued work and resumed runs retain their original mode. A service tool can opt into Code Mode with `nestable: true`; nested calls use the same permissions, operation receipts and cleanup as direct calls. JavaScript receives the declared business result; the durable journal retains the original native receipt. Omitted `nestable` keeps the tool callable only directly. The Maka default composition enables nesting for files, processes, Web and Skills.
 
+The model settings select `codeModeLanguage: "javascript" | "python"` independently of `codeMode`. JavaScript remains the default. Python uses the bundled Monty interpreter, with top-level await, `asyncio.gather`, JSON tool arguments and the same output/store helpers. The language is frozen when a message is accepted, including queued work and continuations; changing it applies to newly submitted messages. This does not change `maka code`, plugin JavaScript or Computer Use REPLs.
+
 The default Maka composition enables `toolDiscovery`: optional tool schemas load through `tool_search`, with loaded schemas retained across turns in the same active Host session. Code Mode can still call authorized nested tools before their descriptions are loaded. Discovery policy is captured when a message is accepted and retained on continuation. Loaded schemas and Code Mode `store`/`load` values are session-local, in-memory state; restarting the Host clears them. Committed context compaction resets the loaded schema set.
 
 The independent `applyPatch` model override selects either patch editing or structured Write/Edit tools. Like Code Mode, it defaults on for GPT and DeepSeek models and the DeepSeek endpoint, and is frozen for queued work and continuations. Selection follows the bound Files contract and method even when a composition renames its tools. Read tools remain available, and all file operations retain their live permission checks. The connection settings model-overrides JSON accepts `codeMode` and `applyPatch` separately.
diff --git a/plugins/agent/native/README.zh-CN.md b/plugins/agent/native/README.zh-CN.md
index 3f9c270..fea1540 100644
--- a/plugins/agent/native/README.zh-CN.md
+++ b/plugins/agent/native/README.zh-CN.md
@@ -41,6 +41,8 @@
 
 Agent 接收消息时保存模型的 Code Mode 默认值或显式 `codeMode` 覆盖设置;排队消息和恢复运行保留原模式。服务工具可以通过 `nestable: true` 允许代码内调用,仍执行与直接调用相同的权限检查、操作回执和清理流程。JavaScript 收到声明的业务结果,持久日志保留原生操作的原始回执。省略该字段时仅允许直接调用。Maka 默认组合为文件、进程、Web 和 Skills 工具启用嵌套调用。
 
+模型设置通过 `codeModeLanguage: "javascript" | "python"` 独立选择语言,`codeMode` 控制是否启用,默认语言仍为 JavaScript。Python 使用随包提供的 Monty 解释器,支持顶层 await、`asyncio.gather`、JSON 工具参数和相同的输出/存储辅助函数。消息接收时固定语言,排队和恢复运行沿用原选择;修改只影响新提交的消息。该设置不改变 `maka code`、插件 JavaScript 或 Computer Use REPL。
+
 Maka 默认组合启用 `toolDiscovery`:可选工具通过 `tool_search` 加载说明,并在同一 Host 会话内跨轮保留。Code Mode 在说明尚未加载时仍可调用已授权的嵌套工具。消息接收时保存发现策略,恢复运行时沿用原策略。已加载工具说明和 Code Mode 的 `store`/`load` 值按会话隔离、保存在内存中,Host 重启后清空;上下文压缩成功提交后重置已加载的工具说明。
 
 独立的模型覆盖项 `applyPatch` 选择补丁编辑或 Write/Edit 结构化编辑。与 Code Mode 一样,GPT、DeepSeek 模型及 DeepSeek 端点默认启用;排队消息和恢复运行保留接收时的选择。筛选依据是实际绑定的 Files 契约和方法,工具改名不影响策略。读取工具保留,文件操作仍检查实时权限。连接设置的模型覆盖 JSON 可分别设置 `codeMode` 与 `applyPatch`。
diff --git a/plugins/agent/native/src/model.rs b/plugins/agent/native/src/model.rs
index 821f843..3429989 100644
--- a/plugins/agent/native/src/model.rs
+++ b/plugins/agent/native/src/model.rs
@@ -77,6 +77,11 @@
     /// Execution policy is captured at message admission. Later model settings
     /// do not reinterpret queued work.
     pub tool_mode: ToolMode,
+    #[serde(
+        default,
+        skip_serializing_if = "maka_agent_facts::execution::CodeLanguage::is_javascript"
+    )]
+    pub code_language: maka_agent_facts::execution::CodeLanguage,
     /// None captures an unfiltered tool selection.
     #[serde(deserialize_with = "Option::deserialize")]
     pub editing_tools: Option<EditingTools>,
@@ -153,6 +158,10 @@
                             .and_then(|models| models.get(&selection.model_id))
                             .and_then(|overrides| overrides.code_mode),
                     ),
+                    code_language: row.model_overrides.as_ref()
+                        .and_then(|models| models.get(&selection.model_id))
+                        .and_then(|overrides| overrides.code_mode_language)
+                        .unwrap_or_default(),
                     binding: ModelBinding {
                         connection_id: row.connection_id.clone(),
                         connection_slug: row.slug.clone(),
diff --git a/plugins/agent/native/src/owner.rs b/plugins/agent/native/src/owner.rs
index 0be1a8e..e5c1dc4 100644
--- a/plugins/agent/native/src/owner.rs
+++ b/plugins/agent/native/src/owner.rs
@@ -271,7 +271,7 @@
         } else {
             workspace::open(settings.import_roots.clone(), root.canonical_path())?
         };
-        let cells = maka_js_runtime::CodeExecutor::new(maka_code_runtime::CellLimits::default())
+        let cells = maka_tools::CodeExecutor::new(maka_code_runtime::CellLimits::default())
             .map_err(|_| "agent_executor_unavailable")?;
         let workers = TaskTracker::new();
         let stop = CancellationToken::new();
diff --git a/plugins/agent/native/src/owner/compaction.rs b/plugins/agent/native/src/owner/compaction.rs
index 8c43202..bcb11ac 100644
--- a/plugins/agent/native/src/owner/compaction.rs
+++ b/plugins/agent/native/src/owner/compaction.rs
@@ -160,6 +160,7 @@
             collaboration_mode: session.configuration.collaboration_mode,
             orchestration_mode: BehaviorId::default(),
             tool_mode: source.accepted.tool_mode,
+            code_language: source.accepted.code_language,
             model: Some(source.accepted.binding.clone()),
             thinking_level: source.accepted.thinking_level,
             system_prompt: None,
diff --git a/plugins/agent/native/src/owner/execution.rs b/plugins/agent/native/src/owner/execution.rs
index bf9e8d9..2e23a35 100644
--- a/plugins/agent/native/src/owner/execution.rs
+++ b/plugins/agent/native/src/owner/execution.rs
@@ -268,6 +268,7 @@
         // A continuation retains the original tool protocol even when the
         // user selects a model whose default differs from the original Run.
         source.accepted.tool_mode = configuration.tool_mode;
+        source.accepted.code_language = configuration.code_language;
         source.accepted.editing_tools = configuration.editing_tools;
         let graph = match self
             .resume_graph(&input.session_id, &configuration.orchestration_mode)
diff --git a/plugins/agent/native/src/owner/queue.rs b/plugins/agent/native/src/owner/queue.rs
index b551c2c..f3e9988 100644
--- a/plugins/agent/native/src/owner/queue.rs
+++ b/plugins/agent/native/src/owner/queue.rs
@@ -391,6 +391,7 @@
                 BehaviorId::default()
             },
             tool_mode: ToolMode::Direct,
+            code_language: Default::default(),
             model: None,
             thinking_level: None,
             system_prompt,
@@ -402,6 +403,7 @@
                 configuration.model = Some(source.accepted.binding.clone());
                 configuration.thinking_level = source.accepted.thinking_level;
                 configuration.tool_mode = source.accepted.tool_mode;
+                configuration.code_language = source.accepted.code_language;
                 configuration.editing_tools = source.accepted.editing_tools;
                 let tools =
                     self.selected_tools(&basis, basis.tool_discovery, configuration.editing_tools);
diff --git a/plugins/agent/native/src/owner/tests.rs b/plugins/agent/native/src/owner/tests.rs
index b512535..07fd057 100644
--- a/plugins/agent/native/src/owner/tests.rs
+++ b/plugins/agent/native/src/owner/tests.rs
@@ -678,7 +678,7 @@
                             Arc::get_mut(&mut owner).unwrap().engine = Engine::new(
                                 store,
                                 model,
-                                maka_js_runtime::CodeExecutor::new(Default::default()).unwrap(),
+                                maka_tools::CodeExecutor::new(Default::default()).unwrap(),
                             );
                         }
                         *capture.lock().unwrap() = Some((owner.clone(), services));
diff --git a/plugins/agent/native/src/owner/tests/selection.rs b/plugins/agent/native/src/owner/tests/selection.rs
index 416d8d4..047923a 100644
--- a/plugins/agent/native/src/owner/tests/selection.rs
+++ b/plugins/agent/native/src/owner/tests/selection.rs
@@ -958,6 +958,7 @@
             "fixture-model".into(),
             ModelOverride {
                 code_mode: Some(true),
+                code_mode_language: Some(maka_agent_facts::execution::CodeLanguage::Python),
                 apply_patch: Some(false),
                 context_window: Some(1_000_000),
                 input_limit: Some(900_000),
@@ -980,6 +981,10 @@
     .unwrap();
     assert_eq!(source.accepted.tool_mode, ToolMode::CodeMode);
     assert_eq!(
+        source.accepted.code_language,
+        maka_agent_facts::execution::CodeLanguage::Python
+    );
+    assert_eq!(
         source.accepted.editing_tools,
         Some(maka_agent_facts::execution::EditingTools::Structured)
     );
@@ -1025,6 +1030,10 @@
     assert_eq!(restored.capture().await.unwrap().context, Some(context));
     assert_eq!(restored.accepted.tool_mode, ToolMode::CodeMode);
     assert_eq!(
+        restored.accepted.code_language,
+        maka_agent_facts::execution::CodeLanguage::Python
+    );
+    assert_eq!(
         restored.accepted.editing_tools,
         Some(maka_agent_facts::execution::EditingTools::Structured)
     );
@@ -1046,6 +1055,10 @@
     assert_eq!(context.declared_window, Some(81_600));
     assert_eq!(next.accepted.tool_mode, ToolMode::Direct);
     assert_eq!(
+        next.accepted.code_language,
+        maka_agent_facts::execution::CodeLanguage::JavaScript
+    );
+    assert_eq!(
         next.accepted.editing_tools,
         Some(maka_agent_facts::execution::EditingTools::ApplyPatch)
     );
diff --git a/plugins/agent/native/src/owner/tests/settings.rs b/plugins/agent/native/src/owner/tests/settings.rs
index c9ee059..cd0c30a 100644
--- a/plugins/agent/native/src/owner/tests/settings.rs
+++ b/plugins/agent/native/src/owner/tests/settings.rs
@@ -752,13 +752,13 @@
             ("other-model".into(), ModelOverride { code_mode: Some(true), ..Default::default() }),
         ]))).await;
         let current = query(&f, "resolveModel", target.clone()).await;
-        let update = json!({"selection":current["choice"]["selection"],"tools":{"codeMode":false,"applyPatch":true},"limits":{"contextWindow":100000,"inputLimit":90000,"maxOutputTokens":4000,"compactionThreshold":80000}});
+        let update = json!({"selection":current["choice"]["selection"],"tools":{"codeMode":false,"codeModeLanguage":"python","applyPatch":true},"limits":{"contextWindow":100000,"inputLimit":90000,"maxOutputTokens":4000,"compactionThreshold":80000}});
         let (saved, _) = mutate(&f, "updateModelSettings", update.clone(), None).await;
         assert_eq!(saved["kind"], "committed");
         assert_eq!(mutate(&f, "updateModelSettings", update, None).await.0["kind"], "connection_stale");
         todo_tests::reopen(&mut f).await;
         let current = query(&f, "resolveModel", target.clone()).await;
-        assert_eq!(current["choice"]["tools"], json!({"codeMode":false,"applyPatch":true}));
+        assert_eq!(current["choice"]["tools"], json!({"codeMode":false,"codeModeLanguage":"python","applyPatch":true}));
         let overrides = f.config.catalog().await.unwrap().connections.remove(0).model_overrides.unwrap();
         assert_eq!(current["choice"]["limits"]["overrides"], json!({"contextWindow":100000,"inputLimit":90000,"maxOutputTokens":4000,"compactionThreshold":80000}));
         assert_eq!(current["choice"]["limits"]["contextWindow"], 100000);
@@ -774,10 +774,10 @@
         assert_eq!(context.declared_window, Some(80000));
         assert_eq!(overrides["other-model"].code_mode, Some(true));
         assert_eq!(overrides["fixture-model"].thinking_levels, Some(vec![maka_agent_facts::execution::ThinkingLevel::High]));
-        let (reset, _) = mutate(&f, "updateModelSettings", json!({"selection":current["choice"]["selection"],"tools":{"codeMode":null,"applyPatch":null},"limits":{"contextWindow":null,"inputLimit":null,"maxOutputTokens":null,"compactionThreshold":null}}), None).await;
+        let (reset, _) = mutate(&f, "updateModelSettings", json!({"selection":current["choice"]["selection"],"tools":{"codeMode":null,"codeModeLanguage":null,"applyPatch":null},"limits":{"contextWindow":null,"inputLimit":null,"maxOutputTokens":null,"compactionThreshold":null}}), None).await;
         assert_eq!(reset["kind"], "committed");
         let current = query(&f, "resolveModel", target.clone()).await;
-        assert_eq!(current["choice"]["tools"], json!({"codeMode":null,"applyPatch":null}));
+        assert_eq!(current["choice"]["tools"], json!({"codeMode":null,"codeModeLanguage":null,"applyPatch":null}));
         selection::edit(&f, |changes| changes.enabled = Some(false)).await;
         assert_eq!(query(&f, "resolveModel", target).await["kind"], "unavailable");
         assert!(tokio::time::timeout(Duration::from_millis(50), listener.accept()).await.is_err(), "restore must not contact the provider");
diff --git a/plugins/agent/tools/Cargo.toml b/plugins/agent/tools/Cargo.toml
index 365ce12..63c3c23 100644
--- a/plugins/agent/tools/Cargo.toml
+++ b/plugins/agent/tools/Cargo.toml
@@ -23,6 +23,7 @@
 publish.workspace = true
 
 [dependencies]
+maka-python-runtime.workspace = true
 maka-code-runtime.workspace = true
 maka-agent-facts.workspace = true
 futures-util.workspace = true
diff --git a/plugins/agent/tools/README.md b/plugins/agent/tools/README.md
index 692e9f2..565dc44 100644
--- a/plugins/agent/tools/README.md
+++ b/plugins/agent/tools/README.md
@@ -21,6 +21,6 @@
 
 [简体中文](README.zh-CN.md)
 
-Dispatches journaled tool calls and provides Code Mode. `RequestTools`, `RunTools` and `StepTools` retain the tool selection at their respective execution scopes. Code Mode uses the shared JavaScript runtime and forwards through the same authorized tool path. Tool results, cancellation and physical cleanup remain separate outcomes.
+Dispatches journaled tool calls and provides Code Mode. `RequestTools`, `RunTools` and `StepTools` retain the tool selection at their respective execution scopes. Code Mode defaults to the shared JavaScript runtime; a model can opt into the bundled Monty Python worker with `codeModeLanguage: "python"`. Both forward through the same authorized tool path and share the session JSON store. Tool results, cancellation and physical cleanup remain separate outcomes.
 
 [Source](src/lib.rs) · [Cargo manifest](Cargo.toml)
diff --git a/plugins/agent/tools/README.zh-CN.md b/plugins/agent/tools/README.zh-CN.md
index 4480bbc..89e820f 100644
--- a/plugins/agent/tools/README.zh-CN.md
+++ b/plugins/agent/tools/README.zh-CN.md
@@ -21,6 +21,6 @@
 
 [English](README.md)
 
-分发带日志记录的工具调用,并提供 Code Mode。`RequestTools`、`RunTools` 和 `StepTools` 在各自执行作用域内保留工具选择。Code Mode 使用共用 JavaScript 运行时,沿相同的授权工具路径转发。工具结果、取消和实际清理是不同的结果。
+分发带日志记录的工具调用,并提供 Code Mode。`RequestTools`、`RunTools` 和 `StepTools` 在各自执行作用域内保留工具选择。Code Mode 默认使用共用 JavaScript 运行时,也可通过模型设置 `codeModeLanguage: "python"` 选择随包提供的 Monty Python worker。两种语言沿相同的授权工具路径转发,共享会话 JSON 存储。工具结果、取消和实际清理是不同的结果。
 
 [源码](src/lib.rs) · [Cargo 配置](Cargo.toml)
diff --git a/plugins/agent/tools/src/cell.rs b/plugins/agent/tools/src/cell.rs
index 390913d..c41568d 100644
--- a/plugins/agent/tools/src/cell.rs
+++ b/plugins/agent/tools/src/cell.rs
@@ -20,17 +20,21 @@
 mod declarations;
 mod session;
 pub(crate) use session::Cells;
-pub(super) fn declarations(definitions: &[ToolDefinition]) -> String {
-    declarations::render(definitions)
+pub(super) fn declarations(definitions: &[ToolDefinition], language: CodeLanguage) -> String {
+    match language {
+        CodeLanguage::JavaScript => declarations::render(definitions),
+        CodeLanguage::Python => declarations::python(definitions),
+    }
 }
 
+use crate::CodeExecutor;
+use maka_agent_facts::execution::CodeLanguage;
 use maka_agent_facts::tool_call::ToolCallIdentity;
 use maka_agent_facts::tool_call::ToolOrigin;
 use maka_agent_facts::tool_call::ToolRejection;
 use maka_agent_facts::tools::ToolExecutor;
 use maka_agent_facts::tools::ToolFuture;
 use maka_agent_facts::tools::ToolJournal;
-use maka_js_runtime::CodeExecutor;
 use serde::Deserialize;
 use serde_json::Value;
 use std::sync::Arc;
@@ -51,7 +55,19 @@
     10_000
 }
 
-pub(super) fn definition() -> ToolDefinition {
+pub(super) fn definition(language: CodeLanguage) -> ToolDefinition {
+    if language == CodeLanguage::Python {
+        return ToolDefinition {
+            freeform: Some(maka_agent_facts::tools::FreeformGrammar::Lark {
+                definition: EXEC_GRAMMAR.replace(r"\/\/", "#"),
+            }),
+            output_schema: None,
+            provider: None,
+            name: "exec".into(),
+            description: include_str!("cell/python.md").into(),
+            input_schema: schemars::schema_for!(CodeInput).into(),
+        };
+    }
     ToolDefinition {
         freeform: Some(maka_agent_facts::tools::FreeformGrammar::Lark { definition: EXEC_GRAMMAR.into() }), output_schema: None, provider: None,
         name: "exec".into(),
@@ -78,7 +94,7 @@
 #[derive(Deserialize, schemars::JsonSchema)]
 #[serde(deny_unknown_fields)]
 pub(super) struct CodeInput {
-    /// Async JavaScript module. Emit content using helpers.
+    /// Source in the selected Code Mode language. Emit content using helpers.
     code: String,
     /// Observation wait in milliseconds (0..60000), not an execution timeout.
     #[serde(default = "default_yield")]
@@ -139,7 +155,11 @@
     Ok(())
 }
 
-pub(super) fn source(input: &Value) -> Result<CodeInput, ToolRejection> {
+pub(super) fn source(input: &Value, language: CodeLanguage) -> Result<CodeInput, ToolRejection> {
+    let prefix = match language {
+        CodeLanguage::JavaScript => "// @exec:",
+        CodeLanguage::Python => "# @exec:",
+    };
     let mut value = if let Some(code) = input.as_str() {
         serde_json::json!({"code":code})
     } else {
@@ -149,7 +169,7 @@
         && let Some(pragma) = code
             .lines()
             .next()
-            .and_then(|line| line.trim_start().strip_prefix("// @exec:"))
+            .and_then(|line| line.trim_start().strip_prefix(prefix))
     {
         let options: serde_json::Map<String, Value> = serde_json::from_str(pragma)
             .map_err(|error| invalid(format!("invalid exec pragma: {error}")))?;
diff --git a/plugins/agent/tools/src/cell/declarations.rs b/plugins/agent/tools/src/cell/declarations.rs
index 5bbc5c0..7276806 100644
--- a/plugins/agent/tools/src/cell/declarations.rs
+++ b/plugins/agent/tools/src/cell/declarations.rs
@@ -56,6 +56,28 @@
     output
 }
 
+/// Python callers consume the same authoritative JSON schemas, including
+/// references and constraints that Python type annotations cannot express.
+pub(super) fn python(definitions: &[ToolDefinition]) -> String {
+    let mut output = String::new();
+    for tool in definitions {
+        for line in tool.description.lines() {
+            output.push_str("# ");
+            output.push_str(line);
+            output.push('\n');
+        }
+        output.push_str(&format!(
+            "# await tools.{}(input)\n# Input JSON Schema: {}\n",
+            maka_python_runtime::tool_identifier(&tool.name),
+            tool.input_schema
+        ));
+        if let Some(schema) = &tool.output_schema {
+            output.push_str(&format!("# Output JSON Schema: {schema}\n"));
+        }
+    }
+    output
+}
+
 struct Renderer<'a> {
     root: &'a Value,
     remaining: usize,
diff --git a/plugins/agent/tools/src/cell/python.md b/plugins/agent/tools/src/cell/python.md
new file mode 100644
index 0000000..ddeef38
--- /dev/null
+++ b/plugins/agent/tools/src/cell/python.md
@@ -0,0 +1,16 @@
+Orchestrate tool calls in a fresh Monty Python interpreter. Use Python source with top-level await. Supported standard-library modules include asyncio, json, re, math and collections; installing packages, native extensions, direct filesystem/network access and subprocesses are unavailable. Use authorized Host tools for external work.
+Pass raw Python on freeform transports; on JSON-only transports put the same source in code. Optional first line: # @exec: {"yield_time_ms": 30000, "max_output_tokens": 10000}
+Call await tools.name(input), with a JSON-compatible value, or await tools.name(**kwargs) for an object input. Names are normalized Python identifiers. Await every intended operation. Use import asyncio and await asyncio.gather(...) for parallel calls. To collect partial failures, wrap each awaited call in try/except and return an explicit success/error value. Monty supports asyncio.run/gather/sleep; create_task, wait_for, TaskGroup and gather(return_exceptions=True) are unavailable. When source finishes, unawaited operations are cancelled; admitted Host effects still settle before completion.
+Helpers:
+- text(value): emit a string or JSON value. Final expressions and print() do not publish output.
+- image(value, detail=None): emit a Host image, MCP image block or base64 data URL; image_url objects are accepted. detail is auto/low/high/original; an explicit argument overrides embedded detail.
+- audio(value): emit an MCP audio block, audio_url object or base64 data URL. Audio is delivered as native model input when supported; unsupported adapters receive an explicit notice.
+- generated_image({"image_url": ..., "output_hint": ...}): emit an image and optional hint.
+- store(key, value), load(key): retain JSON between exec calls in this live session, including across turns and compaction. Missing keys return None. No Python globals survive. Writes publish after settlement. Host restart/session retirement clears the store.
+- notify(value): inject output into model history without wait, yielding or finishing the cell. Notifications during a model request arrive on the next step.
+- await yield_control(): return accumulated output while the cell continues.
+- exit(): end the script successfully.
+- ALL_TOOLS: tuple of immutable name/description records for all authorized nested tools, including deferred tools omitted from this description. Find a tool here and call it in the same cell.
+Only JSON values cross the Host boundary: object keys must be strings; bytes, sets, cycles, non-finite floats and integers outside the JSON integer range are rejected. Convert intentionally inside Python before calling tools or output/store helpers.
+Use wait only after exec returns a running cell_id. Tool permissions and schemas stay frozen for the cell. Calls to other advertised tools must be made directly. Do not invoke exec in parallel with other model tools.
+Host execution: 64 MiB interpreter allocation budget in an isolated worker with allocator headroom, 30 seconds cumulative execution (Host waits and sleeps excluded), 4 uncollected cells per Run. Tool work remains owned until cleanup; use wait to collect running cells.
diff --git a/plugins/agent/tools/src/cell/session.rs b/plugins/agent/tools/src/cell/session.rs
index cf51f94..0aedd5b 100644
--- a/plugins/agent/tools/src/cell/session.rs
+++ b/plugins/agent/tools/src/cell/session.rs
@@ -166,8 +166,11 @@
             .catalog
             .definitions()
             .map(|definition| ToolMetadata {
-                name: maka_js_runtime::tool_identifier(&definition.name),
-                description: super::declarations(std::slice::from_ref(definition)),
+                name: tool.cells.tool_identifier(&definition.name),
+                description: super::declarations(
+                    std::slice::from_ref(definition),
+                    tool.cells.language(),
+                ),
             })
             .collect();
         let context = CellContext::with_notification_gate(
@@ -353,7 +356,7 @@
             return Err(error);
         }
         // Fatal failures always escape before consuming output or permitting a
-        // new model step, even if JS caught its own nested exception.
+        // new model step, even if user code caught its own nested exception.
         self.check()?;
         let content = cell.context.take_output();
         let observation = match result {
diff --git a/plugins/agent/tools/src/code_executor.rs b/plugins/agent/tools/src/code_executor.rs
new file mode 100644
index 0000000..d5ad642
--- /dev/null
+++ b/plugins/agent/tools/src/code_executor.rs
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use maka_agent_facts::{execution::CodeLanguage, tools::ToolExecutor};
+use maka_code_runtime::{CellAbort, CellContext, CellLimits, CellResult};
+use std::{path::PathBuf, sync::Arc};
+use tokio_util::sync::CancellationToken;
+
+/// Code Mode policy selects one concrete interpreter for each accepted Run.
+/// Construction is cheap: neither backend starts a VM or child process here.
+#[derive(Clone)]
+pub struct CodeExecutor {
+    javascript: maka_js_runtime::CodeExecutor,
+    python: maka_python_runtime::CodeExecutor,
+    language: CodeLanguage,
+}
+impl CodeExecutor {
+    pub fn new(limits: CellLimits) -> Result<Self, CellAbort> {
+        Ok(Self {
+            javascript: maka_js_runtime::CodeExecutor::new(limits.clone())?,
+            python: maka_python_runtime::CodeExecutor::new(limits)?,
+            language: CodeLanguage::default(),
+        })
+    }
+    pub fn with_language(mut self, language: CodeLanguage) -> Self {
+        self.language = language;
+        self
+    }
+    /// Explicit packaged worker location for an embedding or integration fixture.
+    pub fn with_python_worker(mut self, path: PathBuf) -> Result<Self, CellAbort> {
+        self.python = maka_python_runtime::CodeExecutor::with_worker(self.limits().clone(), path)?;
+        Ok(self)
+    }
+    pub fn language(&self) -> CodeLanguage {
+        self.language
+    }
+    pub fn limits(&self) -> &CellLimits {
+        self.javascript.limits()
+    }
+    pub fn tool_identifier(&self, name: &str) -> String {
+        match self.language {
+            CodeLanguage::JavaScript => maka_js_runtime::tool_identifier(name),
+            CodeLanguage::Python => maka_python_runtime::tool_identifier(name),
+        }
+    }
+    pub async fn execute_module(
+        &self,
+        source: String,
+        tools: Arc<dyn ToolExecutor>,
+        cancellation: CancellationToken,
+        context: CellContext,
+    ) -> Result<CellResult, CellAbort> {
+        match self.language {
+            CodeLanguage::JavaScript => {
+                self.javascript
+                    .execute_module(source, tools, cancellation, context)
+                    .await
+            }
+            CodeLanguage::Python => {
+                self.python
+                    .execute_module(source, tools, cancellation, context)
+                    .await
+            }
+        }
+    }
+}
diff --git a/plugins/agent/tools/src/dispatch.rs b/plugins/agent/tools/src/dispatch.rs
index 3227861..5f15c6d 100644
--- a/plugins/agent/tools/src/dispatch.rs
+++ b/plugins/agent/tools/src/dispatch.rs
@@ -23,6 +23,7 @@
     atomic::{AtomicBool, Ordering},
 };
 
+use crate::CodeExecutor;
 use maka_agent_facts::event::EventSink;
 use maka_agent_facts::event::Invocation;
 use maka_agent_facts::language::Language;
@@ -31,7 +32,6 @@
 use maka_agent_facts::tool_call::ToolRejection;
 use maka_agent_facts::tools::ToolError;
 use maka_agent_facts::tools::ToolJournal;
-use maka_js_runtime::CodeExecutor;
 use serde_json::Value;
 use tokio_util::sync::CancellationToken;
 
@@ -198,10 +198,11 @@
 
     pub fn definitions(&self) -> Vec<ToolDefinition> {
         if self.run.mode == ToolMode::CodeMode {
-            let mut exec = cell::definition();
+            let mut exec = cell::definition(self.run.cells.language());
             let definitions: Vec<_> = self.described.definitions().cloned().collect();
             exec.description.push('\n');
-            exec.description.push_str(&cell::declarations(&definitions));
+            exec.description
+                .push_str(&cell::declarations(&definitions, self.run.cells.language()));
             std::iter::once(exec)
                 .chain(std::iter::once(cell::wait_definition()))
                 .chain(self.direct.definitions().cloned())
@@ -319,7 +320,7 @@
                 let effect = if call.name == "exec" && run.mode == ToolMode::CodeMode {
                     let executor = cell::CellTool::new(
                         run.cells.clone(),
-                        cell::source(input)?,
+                        cell::source(input, run.cells.language())?,
                         request.catalog.clone(),
                         run.journal.clone(),
                         operation_id.clone(),
diff --git a/plugins/agent/tools/src/lib.rs b/plugins/agent/tools/src/lib.rs
index 6b22f4f..feaac44 100644
--- a/plugins/agent/tools/src/lib.rs
+++ b/plugins/agent/tools/src/lib.rs
@@ -19,6 +19,8 @@
 
 //! Journaled tool execution and Code Mode.
 mod cell;
+mod code_executor;
+pub use code_executor::CodeExecutor;
 mod dispatch;
 pub use dispatch::{RequestTools, RunTools, StepTools};
 pub use maka_tool_catalog::*;
diff --git a/plugins/agent/tools/tests/integration/catalog.rs b/plugins/agent/tools/tests/integration/catalog.rs
index bfe2dc7..7f9d38c 100644
--- a/plugins/agent/tools/tests/integration/catalog.rs
+++ b/plugins/agent/tools/tests/integration/catalog.rs
@@ -187,7 +187,7 @@
     use crate::support::preflight;
     use maka_code_runtime::CellLimits;
     use maka_event_log::EventLog;
-    use maka_js_runtime::CodeExecutor;
+    use maka_tools::CodeExecutor;
     use maka_tools::{RunTools, ToolMode};
     for oversized in [false, true] {
         let directory = tempfile::tempdir().unwrap();
diff --git a/plugins/agent/tools/tests/integration/cells.rs b/plugins/agent/tools/tests/integration/cells.rs
index 06986b4..1cc8668 100644
--- a/plugins/agent/tools/tests/integration/cells.rs
+++ b/plugins/agent/tools/tests/integration/cells.rs
@@ -30,7 +30,7 @@
 use maka_agent_facts::tools::ToolFuture;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
+use maka_tools::CodeExecutor;
 use maka_tools::{
     RunTools, ToolCatalog, ToolDefinition, ToolHandler, ToolMode, ToolNesting, ToolRegistration,
     ToolSemantics,
diff --git a/plugins/agent/tools/tests/integration/child_image.rs b/plugins/agent/tools/tests/integration/child_image.rs
index 7db146c..729a50a 100644
--- a/plugins/agent/tools/tests/integration/child_image.rs
+++ b/plugins/agent/tools/tests/integration/child_image.rs
@@ -27,7 +27,7 @@
 use maka_agent_facts::tool_output::ToolSuccess;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
+use maka_tools::CodeExecutor;
 use maka_tools::{
     PreparationFuture, PreparedEffect, RunTools, ToolCallContext, ToolCatalog, ToolDefinition,
     ToolHandler, ToolMode, ToolNesting, ToolPreparer, ToolRegistration, ToolSemantics,
diff --git a/plugins/agent/tools/tests/integration/commit_faults.rs b/plugins/agent/tools/tests/integration/commit_faults.rs
index 4607fa3..5af11f2 100644
--- a/plugins/agent/tools/tests/integration/commit_faults.rs
+++ b/plugins/agent/tools/tests/integration/commit_faults.rs
@@ -41,7 +41,7 @@
 use maka_agent_facts::tools::ToolFuture;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
+use maka_tools::CodeExecutor;
 use maka_tools::{
     RunTools, ToolCatalog, ToolDefinition, ToolHandler, ToolMode, ToolNesting, ToolRegistration,
     ToolSemantics,
diff --git a/plugins/agent/tools/tests/integration/large_child_output.rs b/plugins/agent/tools/tests/integration/large_child_output.rs
index 6d13eaa..7b40f4d 100644
--- a/plugins/agent/tools/tests/integration/large_child_output.rs
+++ b/plugins/agent/tools/tests/integration/large_child_output.rs
@@ -25,7 +25,7 @@
 use maka_agent_facts::tools::ToolFuture;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
+use maka_tools::CodeExecutor;
 use maka_tools::{
     RunTools, ToolCatalog, ToolDefinition, ToolHandler, ToolMode, ToolNesting, ToolRegistration,
     ToolSemantics,
diff --git a/plugins/agent/tools/tests/integration/preflight.rs b/plugins/agent/tools/tests/integration/preflight.rs
index 256fc50..6337876 100644
--- a/plugins/agent/tools/tests/integration/preflight.rs
+++ b/plugins/agent/tools/tests/integration/preflight.rs
@@ -26,7 +26,7 @@
 use maka_agent_facts::tools::ToolError;
 use maka_code_runtime::CellLimits;
 use maka_event_log::EventLog;
-use maka_js_runtime::CodeExecutor;
+use maka_tools::CodeExecutor;
 use maka_tools::{RunTools, ToolMode};
 use serde_json::json;
 use std::sync::{Arc, atomic::Ordering};
diff --git a/plugins/settings/native/src/contract.rs b/plugins/settings/native/src/contract.rs
index 99b8a7f..21033fb 100644
--- a/plugins/settings/native/src/contract.rs
+++ b/plugins/settings/native/src/contract.rs
@@ -71,6 +71,10 @@
 pub struct ModelToolPreferences {
     #[schemars(with = "maka_plugin_core::wire_schema::RequiredNullable<bool>")]
     pub code_mode: Option<bool>,
+    #[schemars(
+        with = "maka_plugin_core::wire_schema::RequiredNullable<maka_agent_facts::execution::CodeLanguage>"
+    )]
+    pub code_mode_language: Option<maka_agent_facts::execution::CodeLanguage>,
     #[schemars(with = "maka_plugin_core::wire_schema::RequiredNullable<bool>")]
     pub apply_patch: Option<bool>,
 }
diff --git a/plugins/settings/native/src/service.rs b/plugins/settings/native/src/service.rs
index 182d92d..c8a52af 100644
--- a/plugins/settings/native/src/service.rs
+++ b/plugins/settings/native/src/service.rs
@@ -135,6 +135,7 @@
         }),
         tools: Some(ModelToolPreferences {
             code_mode: overrides.and_then(|value| value.code_mode),
+            code_mode_language: overrides.and_then(|value| value.code_mode_language),
             apply_patch: overrides.and_then(|value| value.apply_patch),
         }),
         selection: ModelSelection {
@@ -383,6 +384,7 @@
                         .entry(input.selection.model_id.clone())
                         .or_default();
                     model.code_mode = input.tools.code_mode;
+                    model.code_mode_language = input.tools.code_mode_language;
                     model.apply_patch = input.tools.apply_patch;
                     model.context_window = input.limits.context_window;
                     model.input_limit = input.limits.input_limit;
diff --git a/products/maka/cli/THIRD_PARTY_NOTICES.txt b/products/maka/cli/THIRD_PARTY_NOTICES.txt
index bb11c90..eddd282 100644
--- a/products/maka/cli/THIRD_PARTY_NOTICES.txt
+++ b/products/maka/cli/THIRD_PARTY_NOTICES.txt
@@ -77,6 +77,7 @@
 concurrent-queue@2.5.0 (Apache-2.0 OR MIT); authors declared by package: Stjepan Glavina <stjepang@gmail.com>, Taiki Endo <te316e89@gmail.com>, John Nunley <dev@notgull.net>
 curve25519-dalek-derive@0.1.1 (MIT/Apache-2.0)
 displaydoc@0.2.7 (MIT OR Apache-2.0); authors declared by package: Jane Lusby <jlusby@yaah.dev>
+drop_bomb@0.1.5 (MIT OR Apache-2.0); authors declared by package: Aleksey Kladov <aleksey.kladov@gmail.com>
 dtoa@1.0.11 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 dyn-clone@1.0.20 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 endi@1.1.1 (MIT); authors declared by package: Zeeshan Ali Khan <zeenix@gmail.com>
@@ -100,6 +101,9 @@
 io-lifetimes@3.0.1 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman <dev@sunfishcode.online>
 itoa@1.0.18 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 khronos-egl@6.0.0 (MIT/Apache-2.0); authors declared by package: Timothée Haudebourg <author@haudebourg.net>, Sean Kerr <sean@metatomic.io>
+lexical-parse-float@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
+lexical-parse-integer@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
+lexical-util@1.0.7 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
 linux-raw-sys@0.12.1 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman <dev@sunfishcode.online>
 linux-raw-sys@0.4.15 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman <dev@sunfishcode.online>
 minimal-lexical@0.2.1 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
@@ -145,6 +149,7 @@
 smol_str@0.3.6 (MIT OR Apache-2.0); authors declared by package: Aleksey Kladov <aleksey.kladov@gmail.com>, Lukas Wirth <lukastw97@gmail.com>
 syn@2.0.119 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 syn@3.0.5 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
+thin-vec@0.2.21 (MIT OR Apache-2.0); authors declared by package: Aria Beingessner <a.beingessner@gmail.com>
 thiserror-impl@1.0.69 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 thiserror-impl@2.0.20 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 thiserror@1.0.69 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
@@ -191,6 +196,7 @@
 https://crates.io/api/v1/crates/concurrent-queue/2.5.0/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/curve25519-dalek-derive/0.1.1/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/displaydoc/0.2.7/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/drop_bomb/0.1.5/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/dtoa/1.0.11/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/dyn-clone/1.0.20/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/endi/1.1.1/download :: LICENSE-MIT
@@ -214,6 +220,9 @@
 https://crates.io/api/v1/crates/io-lifetimes/3.0.1/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/itoa/1.0.18/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/khronos-egl/6.0.0/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/lexical-parse-float/1.0.6/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/lexical-parse-integer/1.0.6/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/lexical-util/1.0.7/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/linux-raw-sys/0.12.1/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/linux-raw-sys/0.4.15/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/minimal-lexical/0.2.1/download :: LICENSE-MIT
@@ -259,6 +268,7 @@
 https://crates.io/api/v1/crates/smol_str/0.3.6/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/syn/2.0.119/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/syn/3.0.5/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/thin-vec/0.2.21/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/thiserror-impl/1.0.69/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/thiserror-impl/2.0.20/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/thiserror/1.0.69/download :: LICENSE-MIT
@@ -355,6 +365,7 @@
 serde_yaml@0.9.34+deprecated (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 syn@2.0.119 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 syn@3.0.5 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
+thin-vec@0.2.21 (MIT OR Apache-2.0); authors declared by package: Aria Beingessner <a.beingessner@gmail.com>
 thiserror-impl@1.0.69 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 thiserror-impl@2.0.20 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
 thiserror@1.0.69 (MIT OR Apache-2.0); authors declared by package: David Tolnay <dtolnay@gmail.com>
@@ -411,6 +422,7 @@
 https://crates.io/api/v1/crates/serde_yaml/0.9.34+deprecated/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/syn/2.0.119/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/syn/3.0.5/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/thin-vec/0.2.21/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/thiserror-impl/1.0.69/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/thiserror-impl/2.0.20/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/thiserror/1.0.69/download :: LICENSE-APACHE
@@ -701,6 +713,7 @@
 data-url@0.3.1 (MIT OR Apache-2.0); authors declared by package: Simon Sapin <simon.sapin@exyr.org>
 debugid@0.8.0 (Apache-2.0); authors declared by package: Sentry <hello@sentry.io>
 displaydoc@0.2.7 (MIT OR Apache-2.0); authors declared by package: Jane Lusby <jlusby@yaah.dev>
+drop_bomb@0.1.5 (MIT OR Apache-2.0); authors declared by package: Aleksey Kladov <aleksey.kladov@gmail.com>
 either@1.18.0 (MIT OR Apache-2.0)
 embedded-io@0.4.0 (MIT OR Apache-2.0)
 embedded-io@0.6.1 (MIT OR Apache-2.0)
@@ -726,6 +739,7 @@
 futf@0.1.5 (MIT / Apache-2.0); authors declared by package: Keegan McAllister <kmcallister@mozilla.com>
 futures-lite@2.6.1 (Apache-2.0 OR MIT); authors declared by package: Stjepan Glavina <stjepang@gmail.com>, Contributors to futures-rs
 gethostname@1.1.0 (Apache-2.0); authors declared by package: Sebastian Wiesner <sebastian@swsnr.de>
+getopts@0.2.24 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers
 gif@0.13.3 (MIT OR Apache-2.0); authors declared by package: The image-rs Developers
 gif@0.14.2 (MIT OR Apache-2.0); authors declared by package: The image-rs Developers
 gimli@0.31.1 (MIT OR Apache-2.0)
@@ -794,6 +808,7 @@
 once_cell@1.21.4 (MIT OR Apache-2.0); authors declared by package: Aleksey Kladov <aleksey.kladov@gmail.com>
 openssl-probe@0.2.1 (MIT OR Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>
 ordered-stream@0.2.0 (MIT OR Apache-2.0); authors declared by package: Daniel De Graaf <code@danieldg.net>, Zeeshan Ali Khan <zeeshanak@gnome.org>
+ordermap@1.2.2 (Apache-2.0 OR MIT)
 palette@0.7.7 (MIT OR Apache-2.0); authors declared by package: Erik Hedvall <hello@erikhedvall.nu>
 palette_derive@0.7.7 (MIT OR Apache-2.0); authors declared by package: Erik Hedvall <hello@erikhedvall.nu>
 palette_math@0.7.7 (MIT OR Apache-2.0); authors declared by package: Erik Hedvall <hello@erikhedvall.nu>
@@ -856,9 +871,9 @@
 smallvec@1.16.0 (MIT OR Apache-2.0); authors declared by package: The Servo Project Developers
 smol@2.0.2 (Apache-2.0 OR MIT); authors declared by package: Stjepan Glavina <stjepang@gmail.com>
 smol_str@0.3.6 (MIT OR Apache-2.0); authors declared by package: Aleksey Kladov <aleksey.kladov@gmail.com>, Lukas Wirth <lukastw97@gmail.com>
-socket2@0.5.10 (MIT OR Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>, Thomas de Zeeuw <thomasdezeeuw@gmail.com>
 socket2@0.6.5 (MIT OR Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>, Thomas de Zeeuw <thomasdezeeuw@gmail.com>
 stable_deref_trait@1.2.1 (MIT OR Apache-2.0); authors declared by package: Robert Grosse <n210241048576@gmail.com>
+stacker@0.1.25 (MIT OR Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>, Simonas Kazlauskas <stacker@kazlauskas.me>
 string_cache@0.8.9 (MIT OR Apache-2.0); authors declared by package: The Servo Project Developers
 string_cache@0.9.0 (MIT OR Apache-2.0); authors declared by package: The Servo Project Developers
 string_cache_codegen@0.5.4 (MIT OR Apache-2.0); authors declared by package: The Servo Project Developers
@@ -890,6 +905,8 @@
 unicode-vo@0.1.0 (MIT/Apache-2.0); authors declared by package: Evgeniy Reizner <razrfalcon@gmail.com>
 unicode-width@0.2.2 (MIT OR Apache-2.0); authors declared by package: kwantam <kwantam@gmail.com>, Manish Goregaokar <manishsmail@gmail.com>
 unicode-xid@0.2.6 (MIT OR Apache-2.0); authors declared by package: erick.tryzelaar <erick.tryzelaar@gmail.com>, kwantam <kwantam@gmail.com>, Manish Goregaokar <manishsmail@gmail.com>
+unicode_names2@1.3.0 ((MIT OR Apache-2.0) AND Unicode-DFS-2016); authors declared by package: Huon Wilson <dbau.pp@gmail.com>, Kang Seonghoon <public+rust@mearie.org>, Valentin Lorentz <progval+git@progval.net>, Jeong YunWon <jeong@youknowone.org>
+unicode_names2_generator@1.3.0 (MIT OR Apache-2.0); authors declared by package: Huon Wilson <dbau.pp@gmail.com>
 url@2.5.8 (MIT OR Apache-2.0); authors declared by package: The rust-url developers
 uuid@1.27.0 (Apache-2.0 OR MIT); authors declared by package: Ashley Mannix<ashleymannix@live.com.au>, Dylan DPC<dylan.dpc@gmail.com>, Hunar Roop Kahlon<hunar.roop@gmail.com>
 vcpkg@0.2.15 (MIT/Apache-2.0); authors declared by package: Jim McGrath <jimmc2@gmail.com>
@@ -971,6 +988,7 @@
 https://crates.io/api/v1/crates/data-url/0.3.1/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/debugid/0.8.0/download :: LICENSE
 https://crates.io/api/v1/crates/displaydoc/0.2.7/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/drop_bomb/0.1.5/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/either/1.18.0/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/embedded-io/0.4.0/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/embedded-io/0.6.1/download :: LICENSE-APACHE
@@ -996,6 +1014,7 @@
 https://crates.io/api/v1/crates/futf/0.1.5/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/futures-lite/2.6.1/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/gethostname/1.1.0/download :: LICENSE
+https://crates.io/api/v1/crates/getopts/0.2.24/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/gif/0.13.3/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/gif/0.14.2/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/gimli/0.31.1/download :: LICENSE-APACHE
@@ -1064,6 +1083,7 @@
 https://crates.io/api/v1/crates/once_cell/1.21.4/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/openssl-probe/0.2.1/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/ordered-stream/0.2.0/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/ordermap/1.2.2/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/palette/0.7.7/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/palette_derive/0.7.7/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/palette_math/0.7.7/download :: LICENSE-APACHE
@@ -1123,9 +1143,9 @@
 https://crates.io/api/v1/crates/smallvec/1.16.0/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/smol/2.0.2/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/smol_str/0.3.6/download :: LICENSE-APACHE
-https://crates.io/api/v1/crates/socket2/0.5.10/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/socket2/0.6.5/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/stable_deref_trait/1.2.1/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/stacker/0.1.25/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/string_cache/0.8.9/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/string_cache/0.9.0/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/string_cache_codegen/0.5.4/download :: LICENSE-APACHE
@@ -1157,6 +1177,8 @@
 https://crates.io/api/v1/crates/unicode-vo/0.1.0/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/unicode-width/0.2.2/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/unicode-xid/0.2.6/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/unicode_names2/1.3.0/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/unicode_names2_generator/1.3.0/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/url/2.5.8/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/uuid/1.27.0/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/vcpkg/0.2.15/download :: LICENSE-APACHE
@@ -3512,6 +3534,7 @@
 gl_generator@0.14.0 (Apache-2.0); authors declared by package: Brendan Zabarauskas <bjzaba@yahoo.com.au>, Corey Richardson, Arseny Kapoulkine
 halfbrown@0.4.0 (Apache-2.0/MIT); authors declared by package: Heinz N. Gies <heinz@licenser.net>
 imgref@1.12.3 (CC0-1.0 OR Apache-2.0); authors declared by package: Kornel Lesiński <kornel@geekhood.net>
+is-macro@0.3.8 (Apache-2.0); authors declared by package: 강동윤 <kdy1997.dev@gmail.com>
 json-strip-comments@3.1.2 (Apache-2.0)
 khronos_api@3.1.0 (Apache-2.0); authors declared by package: Brendan Zabarauskas <bjzaba@yahoo.com.au>, Corey Richardson, Arseny Kapoulkine, Pierre Krieger <pierre.krieger1708@gmail.com>
 kurbo@0.11.3 (Apache-2.0 OR MIT); authors declared by package: Raph Levien <raph.levien@gmail.com>
@@ -3597,6 +3620,7 @@
 https://crates.io/api/v1/crates/fontdue/0.9.4/download :: licenses/xi-editor/xi-unicode
 https://crates.io/api/v1/crates/halfbrown/0.4.0/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/imgref/1.12.3/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/is-macro/0.3.8/download :: LICENSE
 https://crates.io/api/v1/crates/json-strip-comments/3.1.2/download :: LICENSE
 https://crates.io/api/v1/crates/kurbo/0.11.3/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/kurbo/0.13.1/download :: LICENSE-APACHE
@@ -3876,6 +3900,231 @@
 
 ================================================================================
 
+ar_archive_writer@0.5.1 (Apache-2.0 WITH LLVM-exception)
+
+https://crates.io/api/v1/crates/ar_archive_writer/0.5.1/download :: LICENSE.txt
+
+Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+    1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+    2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+    3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+    4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+    5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+    6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+    7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+    8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+    9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+    END OF TERMS AND CONDITIONS
+
+    APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+    Copyright [yyyy] [name of copyright owner]
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+================================================================================
+
 arbitrary@1.4.2 (MIT OR Apache-2.0); authors declared by package: The Rust-Fuzz Project Developers, Nick Fitzgerald <fitzgen@gmail.com>, Manish Goregaokar <manishsmail@gmail.com>, Simonas Kazlauskas <arbitrary@kazlauskas.me>, Brian L. Troutwine <brian@troutwine.us>, Corey Farwell <coreyf@rwell.org>
 triomphe@0.1.17 (MIT OR Apache-2.0); authors declared by package: Manish Goregaokar <manishsmail@gmail.com>, The Servo Project Developers
 unicode-script@0.5.8 (MIT OR Apache-2.0); authors declared by package: Manish Goregaokar <manishsmail@gmail.com>
@@ -5288,6 +5537,278 @@
 
 ================================================================================
 
+attribute-derive-macro@0.11.0 (MIT)
+manyhow-macros@0.14.1 (MIT OR Apache-2.0)
+
+https://crates.io/api/v1/crates/attribute-derive-macro/0.11.0/download :: LICENSE
+https://crates.io/api/v1/crates/manyhow-macros/0.14.1/download :: LICENSE
+
+MIT License
+
+Copyright (c) 2022 Roland Fredenhagen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
+attribute-derive@0.11.0 (MIT OR Apache-2.0)
+
+https://crates.io/api/v1/crates/attribute-derive/0.11.0/download :: LICENSE-MIT
+
+MIT License
+
+Copyright (c) 2024 Roland Fredenhagen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
+attribute-derive@0.11.0 (MIT OR Apache-2.0)
+interpolator@0.5.0 (MIT OR Apache-2.0)
+manyhow@0.14.1 (MIT OR Apache-2.0)
+proc-macro-utils@0.10.0 (MIT OR Apache-2.0)
+
+https://crates.io/api/v1/crates/attribute-derive/0.11.0/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/interpolator/0.5.0/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/manyhow/0.14.1/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/proc-macro-utils/0.10.0/download :: LICENSE-APACHE
+
+Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a peretual,
+      worldwide, non-exclusive, no-cpharge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+     agreed to in writing, Licensor provides the Work (and each
+      Contributor provides it s Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+================================================================================
+
 autocfg@1.5.1 (Apache-2.0 OR MIT); authors declared by package: Josh Stone <cuviper@gmail.com>
 
 https://crates.io/api/v1/crates/autocfg/1.5.1/download :: LICENSE-MIT
@@ -5991,8 +6512,8 @@
 pkg-config@0.3.34 (MIT OR Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>
 rustc-demangle@0.1.28 (MIT/Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>
 scoped-tls@1.0.1 (MIT/Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>
-socket2@0.5.10 (MIT OR Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>, Thomas de Zeeuw <thomasdezeeuw@gmail.com>
 socket2@0.6.5 (MIT OR Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>, Thomas de Zeeuw <thomasdezeeuw@gmail.com>
+stacker@0.1.25 (MIT OR Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>, Simonas Kazlauskas <stacker@kazlauskas.me>
 wait-timeout@0.2.1 (MIT/Apache-2.0); authors declared by package: Alex Crichton <alex@alexcrichton.com>
 wasm-bindgen-macro-support@0.2.128 (MIT OR Apache-2.0); authors declared by package: The wasm-bindgen Developers
 wasm-bindgen-macro@0.2.128 (MIT OR Apache-2.0); authors declared by package: The wasm-bindgen Developers
@@ -6012,8 +6533,8 @@
 https://crates.io/api/v1/crates/pkg-config/0.3.34/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/rustc-demangle/0.1.28/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/scoped-tls/1.0.1/download :: LICENSE-MIT
-https://crates.io/api/v1/crates/socket2/0.5.10/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/socket2/0.6.5/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/stacker/0.1.25/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/wait-timeout/0.2.1/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/wasm-bindgen-macro-support/0.2.128/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/wasm-bindgen-macro/0.2.128/download :: LICENSE-MIT
@@ -6304,6 +6825,9 @@
 downcast-rs@1.2.1 (MIT/Apache-2.0); authors declared by package: Ashish Myles <marcianx@gmail.com>, Runji Wang <wangrunji0408@163.com>
 hashlink@0.11.1 (MIT OR Apache-2.0)
 hashlink@0.12.2 (MIT OR Apache-2.0)
+lexical-parse-float@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
+lexical-parse-integer@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
+lexical-util@1.0.7 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
 minimal-lexical@0.2.1 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
 presser@0.3.1 (MIT OR Apache-2.0); authors declared by package: Embark <opensource@embark-studios.com>, Gray Olson <gray@grayolson.com
 qoi@0.4.1 (MIT/Apache-2.0); authors declared by package: Ivan Smirnov <rust@ivan.smirnov.ie>
@@ -6318,6 +6842,9 @@
 https://crates.io/api/v1/crates/downcast-rs/1.2.1/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/hashlink/0.11.1/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/hashlink/0.12.2/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/lexical-parse-float/1.0.6/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/lexical-parse-integer/1.0.6/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/lexical-util/1.0.7/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/minimal-lexical/0.2.1/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/presser/0.3.1/download :: LICENSE-APACHE
 https://crates.io/api/v1/crates/qoi/0.4.1/download :: LICENSE-APACHE
@@ -6629,6 +7156,7 @@
 bitflags@2.13.2 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers
 fraction@0.15.4 (MIT OR Apache-2.0); authors declared by package: dnsl48 <dnsl48@gmail.com>
 fraction@0.17.0 (MIT OR Apache-2.0); authors declared by package: dnsl48 <dnsl48@gmail.com>
+getopts@0.2.24 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers
 glob@0.3.4 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers
 log@0.4.34 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers
 num-bigint-dig@0.9.1 (MIT/Apache-2.0); authors declared by package: dignifiedquire <dignifiedquire@gmail.com>, The Rust Project Developers
@@ -6650,6 +7178,7 @@
 https://crates.io/api/v1/crates/bitflags/2.13.2/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/fraction/0.15.4/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/fraction/0.17.0/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/getopts/0.2.24/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/glob/0.3.4/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/log/0.4.34/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/num-bigint-dig/0.9.1/download :: LICENSE-MIT
@@ -8789,6 +9318,34 @@
 
 ================================================================================
 
+char_str@0.0.4 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>, ryota2357
+
+https://crates.io/api/v1/crates/char_str/0.0.4/download :: LICENSE
+
+MIT License
+
+Copyright (c) 2024 ryota2357
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
 chrono-tz@0.10.4 (MIT OR Apache-2.0)
 
 https://crates.io/api/v1/crates/chrono-tz/0.10.4/download :: LICENSE
@@ -9578,6 +10135,38 @@
 
 ================================================================================
 
+collection_literals@1.0.3 (MIT)
+
+https://crates.io/api/v1/crates/collection_literals/1.0.3/download :: LICENSE
+
+Copyright (c) The collection_literals Contributors
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+================================================================================
+
 color_quant@1.1.0 (MIT); authors declared by package: nwin <nwin@users.noreply.github.com>
 
 https://crates.io/api/v1/crates/color_quant/1.1.0/download :: LICENSE
@@ -15880,10 +16469,12 @@
 ================================================================================
 
 fancy-regex@0.16.2 (MIT); authors declared by package: Raph Levien <raph@google.com>, Robin Stocker <robin@nibor.org>, Keith Hall <keith.hall@available.systems>
+fancy-regex@0.17.0 (MIT); authors declared by package: Raph Levien <raph@google.com>, Robin Stocker <robin@nibor.org>, Keith Hall <keith.hall@available.systems>
 fancy-regex@0.18.0 (MIT); authors declared by package: Raph Levien <raph@google.com>, Robin Stocker <robin@nibor.org>, Keith Hall <keith.hall@available.systems>
 fancy-regex@0.19.1 (MIT); authors declared by package: Raph Levien <raph@google.com>, Robin Stocker <robin@nibor.org>, Keith Hall <keith.hall@available.systems>
 
 https://crates.io/api/v1/crates/fancy-regex/0.16.2/download :: LICENSE
+https://crates.io/api/v1/crates/fancy-regex/0.17.0/download :: LICENSE
 https://crates.io/api/v1/crates/fancy-regex/0.18.0/download :: LICENSE
 https://crates.io/api/v1/crates/fancy-regex/0.19.1/download :: LICENSE
 
@@ -17997,6 +18588,62 @@
 
 ================================================================================
 
+get-size-derive2@0.11.1 (MIT OR Apache-2.0); authors declared by package: Denis Kerp, Nicolas
+
+https://crates.io/api/v1/crates/get-size-derive2/0.11.1/download :: LICENSE
+
+MIT License
+
+Copyright (c) 2022 Denis Kerp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
+get-size2@0.11.1 (MIT OR Apache-2.0); authors declared by package: Denis Kerp, Nicolas
+
+https://crates.io/api/v1/crates/get-size2/0.11.1/download :: LICENSE
+
+MIT License
+
+Copyright (c) 2022 Denis Kerp & 2025 Nicolas
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
 getrandom@0.2.17 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers
 
 https://crates.io/api/v1/crates/getrandom/0.2.17/download :: LICENSE-MIT
@@ -22134,9 +22781,11 @@
 
 indexmap@1.9.3 (Apache-2.0 OR MIT)
 indexmap@2.14.2 (Apache-2.0 OR MIT)
+ordermap@1.2.2 (Apache-2.0 OR MIT)
 
 https://crates.io/api/v1/crates/indexmap/1.9.3/download :: LICENSE-MIT
 https://crates.io/api/v1/crates/indexmap/2.14.2/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/ordermap/1.2.2/download :: LICENSE-MIT
 
 Copyright (c) 2016--2017
 
@@ -22345,6 +22994,38 @@
 
 ================================================================================
 
+interpolator@0.5.0 (MIT OR Apache-2.0)
+manyhow@0.14.1 (MIT OR Apache-2.0)
+proc-macro-utils@0.10.0 (MIT OR Apache-2.0)
+
+https://crates.io/api/v1/crates/interpolator/0.5.0/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/manyhow/0.14.1/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/proc-macro-utils/0.10.0/download :: LICENSE-MIT
+
+MIT License
+
+Copyright (c) 2023 Roland Fredenhagen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
 io-close@0.3.7 (MIT OR Apache-2.0); authors declared by package: wufz
 
 https://crates.io/api/v1/crates/io-close/0.3.7/download :: LICENSE
@@ -22680,6 +23361,34 @@
 
 ================================================================================
 
+jiter@0.17.0 (MIT); authors declared by package: Samuel Colvin <samuel@pydantic.dev>
+
+https://crates.io/api/v1/crates/jiter/0.17.0/download :: LICENSE
+
+The MIT License (MIT)
+
+Copyright (c) 2022 to present Samuel Colvin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
 jsonschema-regex@0.46.10 (MIT); authors declared by package: Dmitry Dygalo <dmitry@dygalo.dev>
 jsonschema-regex@0.56.0 (MIT); authors declared by package: Dmitry Dygalo <dmitry@dygalo.dev>
 jsonschema-value@0.56.0 (MIT); authors declared by package: Dmitry Dygalo <dmitry@dygalo.dev>
@@ -23173,6 +23882,352 @@
 
 ================================================================================
 
+lexical-parse-float@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
+lexical-parse-integer@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
+
+https://crates.io/api/v1/crates/lexical-parse-float/1.0.6/download :: LICENSE.md
+https://crates.io/api/v1/crates/lexical-parse-integer/1.0.6/download :: LICENSE.md
+
+# Licensing
+
+Lexical is dual licensed under the Apache 2.0 license as well as the MIT
+license. See the LICENCE-MIT and the LICENCE-APACHE files for the licenses.
+
+Other licensing terms may apply, as described in depth below for various features and functionality. All assume use of `lexical` or `lexical-core`.
+
+## `write-floats, not(compact)`
+
+`lexical-write-float/src/algorithm.rs` is a direct port of the reference C++ implementation of Dragonbox, found [here](https://github.com/jk-jeon/dragonbox/).
+This code (used if the `write-floats` feature is enabled and the `compact` feature is disabled) is subject to a [Boost Software License](https://github.com/jk-jeon/dragonbox/blob/71993f55067a89f4b4e27591605e21521f5c61be/LICENSE-Boost) and a modified [Apache2 license](https://github.com/jk-jeon/dragonbox/blob/71993f55067a89f4b4e27591605e21521f5c61be/LICENSE-Apache2-LLVM), shown in the [Boost Software License](#boost-software-license) and [Apache2 With LLVM Exceptions](#apache2-with-llvm-exceptions) sections below.
+
+## `write-floats, compact`
+
+`lexical-write-float/src/compact.rs` is a direct port of a C++ implementation of the Grisu algorithm, found [here](https://github.com/night-shift/fpconv/).
+This code (used if both the `write-floats` and `compact` features are enabled) is subject to a [MIT License](https://github.com/night-shift/fpconv/blob/dfeb7e938fb85fb5eca130b84f856705ced75012/license), shown in the [fpconv License](#fpconv-license) section below.
+
+## `write-floats, radix`
+
+`lexical-write-float/src/radix.rs` is adapted from the V8 implementation found [here](). This code (used if both the `parse-floats` and `radix` features are enabled) is subject to a [3-clause BSD license](https://github.com/v8/v8/blob/f80bfeaf0792652bfbc1f174d5a7b8ab8bc0cbbd/LICENSE.v8), shown in the [V8 License](#v8-license) section below.
+
+## `parse-floats, compact`
+
+`lexical-parse-float/src/bellerophon.rs` is loosely based off the Golang implementation,
+found [here](https://github.com/golang/go/blob/b10849fbb97a2244c086991b4623ae9f32c212d0/src/strconv/extfloat.go). This code (used if both the `parse-floats` and `compact` features are enabled) is subject to a [3-clause BSD license](https://github.com/golang/go/blob/b10849fbb97a2244c086991b4623ae9f32c212d0/LICENSE), shown in the [Go License](#go-license) section below.
+
+# License Terms
+
+This contains complete copies of the licensing terms for the feature-dependent code described above.
+
+## Go License
+
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+* Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+## Boost Software License
+
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+## Apache2 With LLVM Exceptions
+
+_Version 2.0, January 2004_
+_&lt;<http://www.apache.org/licenses/>&gt;_
+
+### Terms and Conditions for use, reproduction, and distribution
+
+#### 1. Definitions
+
+“License” shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+“Licensor” shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+“Legal Entity” shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, “control” means **(i)** the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
+outstanding shares, or **(iii)** beneficial ownership of such entity.
+
+“You” (or “Your”) shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+“Source” form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+“Object” form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+“Work” shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+“Derivative Works” shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+“Contribution” shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+“submitted” means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as “Not a Contribution.”
+
+“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+#### 2. Grant of Copyright License
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+#### 3. Grant of Patent License
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+#### 4. Redistribution
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+* **(b)** You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+#### 5. Submission of Contributions
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+#### 6. Trademarks
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+#### 7. Disclaimer of Warranty
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+#### 8. Limitation of Liability
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+#### 9. Accepting Warranty or Additional Liability
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+_END OF TERMS AND CONDITIONS_
+
+### APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets `[]` replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same “printed page” as the copyright notice for easier identification within
+third-party archives.
+
+    Copyright [yyyy] [name of copyright owner]
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+### LLVM Exceptions to the Apache 2.0 License
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+## V8 License
+
+Copyright 2014, the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+* Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+## fpconv License
+
+The MIT License
+
+Copyright (c) 2013 Andreas Samoljuk
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+================================================================================
+
 libc@0.2.189 (MIT OR Apache-2.0)
 
 https://crates.io/api/v1/crates/libc/0.2.189/download :: LICENSE-MIT
@@ -24916,6 +25971,70 @@
 
 ================================================================================
 
+minicbor-serde@0.7.2 (BlueOak-1.0.0); authors declared by package: Toralf Wittner <tw@dtex.org>
+minicbor@2.3.1 (BlueOak-1.0.0); authors declared by package: Toralf Wittner <tw@dtex.org>
+
+https://crates.io/api/v1/crates/minicbor-serde/0.7.2/download :: LICENSE.md
+https://crates.io/api/v1/crates/minicbor/2.3.1/download :: LICENSE.md
+
+# Blue Oak Model License
+
+Version 1.0.0
+
+## Purpose
+
+This license gives everyone as much permission to work with
+this software as possible, while protecting contributors
+from liability.
+
+## Acceptance
+
+In order to receive this license, you must agree to its
+rules.  The rules of this license are both obligations
+under that agreement and conditions to your license.
+You must not do anything with this software that triggers
+a rule that you cannot or will not follow.
+
+## Copyright
+
+Each contributor licenses you to do everything with this
+software that would otherwise infringe that contributor's
+copyright in it.
+
+## Notices
+
+You must ensure that everyone who gets a copy of
+any part of this software from you, with or without
+changes, also gets the text of this license or a link to
+<https://blueoakcouncil.org/license/1.0.0>.
+
+## Excuse
+
+If anyone notifies you in writing that you have not
+complied with [Notices](#notices), you can keep your
+license by taking all practical steps to comply within 30
+days after the notice.  If you do not do so, your license
+ends immediately.
+
+## Patent
+
+Each contributor licenses you to do everything with this
+software that would otherwise infringe any patent claims
+they can license or become able to license.
+
+## Reliability
+
+No contributor can revoke this license.
+
+## No Liability
+
+***As far as the law allows, this software comes as is,
+without any warranty or condition, and no contributor
+will be liable to anyone for any damages related to this
+software or this license, under any kind of legal claim.***
+
+================================================================================
+
 minimal-lexical@0.2.1 (MIT/Apache-2.0); authors declared by package: Alex Huszagh <ahuszagh@gmail.com>
 
 https://crates.io/api/v1/crates/minimal-lexical/0.2.1/download :: LICENSE.md
@@ -25076,6 +26195,37 @@
 
 ================================================================================
 
+monty-alloc@1.3.0 (MIT); authors declared by package: Samuel Colvin <samuel@pydantic.dev>
+monty-macros@1.3.0 (MIT); authors declared by package: Samuel Colvin <samuel@pydantic.dev>
+monty-types@1.3.0 (MIT); authors declared by package: Samuel Colvin <samuel@pydantic.dev>
+monty@1.3.0 (MIT); authors declared by package: Samuel Colvin <samuel@pydantic.dev>
+
+https://raw.githubusercontent.com/pydantic/monty/9ccbaffdd2cfd5839e0a0ff1248ab901de51eb4c/LICENSE
+
+The MIT License (MIT)
+
+Copyright (c) Pydantic Services Inc. 2026 to present
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
 moxcms@0.8.1 (BSD-3-Clause OR Apache-2.0); authors declared by package: Radzivon Bartoshyk
 pxfm@0.1.30 (BSD-3-Clause OR Apache-2.0); authors declared by package: Radzivon Bartoshyk
 
@@ -25354,7 +26504,6 @@
 windows-strings@0.4.2 (MIT OR Apache-2.0); authors declared by package: Microsoft
 windows-strings@0.5.1 (MIT OR Apache-2.0)
 windows-sys@0.48.0 (MIT OR Apache-2.0); authors declared by package: Microsoft
-windows-sys@0.52.0 (MIT OR Apache-2.0); authors declared by package: Microsoft
 windows-sys@0.59.0 (MIT OR Apache-2.0); authors declared by package: Microsoft
 windows-sys@0.60.2 (MIT OR Apache-2.0); authors declared by package: Microsoft
 windows-sys@0.61.2 (MIT OR Apache-2.0)
@@ -25405,7 +26554,6 @@
 https://crates.io/api/v1/crates/windows-strings/0.4.2/download :: license-mit
 https://crates.io/api/v1/crates/windows-strings/0.5.1/download :: license-mit
 https://crates.io/api/v1/crates/windows-sys/0.48.0/download :: license-mit
-https://crates.io/api/v1/crates/windows-sys/0.52.0/download :: license-mit
 https://crates.io/api/v1/crates/windows-sys/0.59.0/download :: license-mit
 https://crates.io/api/v1/crates/windows-sys/0.60.2/download :: license-mit
 https://crates.io/api/v1/crates/windows-sys/0.61.2/download :: license-mit
@@ -30675,6 +31823,237 @@
 
 ================================================================================
 
+psm@0.1.31 (MIT OR Apache-2.0); authors declared by package: Simonas Kazlauskas <psm@kazlauskas.me>
+
+https://crates.io/api/v1/crates/psm/0.1.31/download :: LICENSE-APACHE
+
+Apache License
+                       Version 2.0, January 2004
+                    http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+  "License" shall mean the terms and conditions for use, reproduction,
+  and distribution as defined by Sections 1 through 9 of this document.
+
+  "Licensor" shall mean the copyright owner or entity authorized by
+  the copyright owner that is granting the License.
+
+  "Legal Entity" shall mean the union of the acting entity and all
+  other entities that control, are controlled by, or are under common
+  control with that entity. For the purposes of this definition,
+  "control" means (i) the power, direct or indirect, to cause the
+  direction or management of such entity, whether by contract or
+  otherwise, or (ii) ownership of fifty percent (50%) or more of the
+  outstanding shares, or (iii) beneficial ownership of such entity.
+
+  "You" (or "Your") shall mean an individual or Legal Entity
+  exercising permissions granted by this License.
+
+  "Source" form shall mean the preferred form for making modifications,
+  including but not limited to software source code, documentation
+  source, and configuration files.
+
+  "Object" form shall mean any form resulting from mechanical
+  transformation or translation of a Source form, including but
+  not limited to compiled object code, generated documentation,
+  and conversions to other media types.
+
+  "Work" shall mean the work of authorship, whether in Source or
+  Object form, made available under the License, as indicated by a
+  copyright notice that is included in or attached to the work
+  (an example is provided in the Appendix below).
+
+  "Derivative Works" shall mean any work, whether in Source or Object
+  form, that is based on (or derived from) the Work and for which the
+  editorial revisions, annotations, elaborations, or other modifications
+  represent, as a whole, an original work of authorship. For the purposes
+  of this License, Derivative Works shall not include works that remain
+  separable from, or merely link (or bind by name) to the interfaces of,
+  the Work and Derivative Works thereof.
+
+  "Contribution" shall mean any work of authorship, including
+  the original version of the Work and any modifications or additions
+  to that Work or Derivative Works thereof, that is intentionally
+  submitted to Licensor for inclusion in the Work by the copyright owner
+  or by an individual or Legal Entity authorized to submit on behalf of
+  the copyright owner. For the purposes of this definition, "submitted"
+  means any form of electronic, verbal, or written communication sent
+  to the Licensor or its representatives, including but not limited to
+  communication on electronic mailing lists, source code control systems,
+  and issue tracking systems that are managed by, or on behalf of, the
+  Licensor for the purpose of discussing and improving the Work, but
+  excluding communication that is conspicuously marked or otherwise
+  designated in writing by the copyright owner as "Not a Contribution."
+
+  "Contributor" shall mean Licensor and any individual or Legal Entity
+  on behalf of whom a Contribution has been received by Licensor and
+  subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+  this License, each Contributor hereby grants to You a perpetual,
+  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+  copyright license to reproduce, prepare Derivative Works of,
+  publicly display, publicly perform, sublicense, and distribute the
+  Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+  this License, each Contributor hereby grants to You a perpetual,
+  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+  (except as stated in this section) patent license to make, have made,
+  use, offer to sell, sell, import, and otherwise transfer the Work,
+  where such license applies only to those patent claims licensable
+  by such Contributor that are necessarily infringed by their
+  Contribution(s) alone or by combination of their Contribution(s)
+  with the Work to which such Contribution(s) was submitted. If You
+  institute patent litigation against any entity (including a
+  cross-claim or counterclaim in a lawsuit) alleging that the Work
+  or a Contribution incorporated within the Work constitutes direct
+  or contributory patent infringement, then any patent licenses
+  granted to You under this License for that Work shall terminate
+  as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+  Work or Derivative Works thereof in any medium, with or without
+  modifications, and in Source or Object form, provided that You
+  meet the following conditions:
+
+  (a) You must give any other recipients of the Work or
+      Derivative Works a copy of this License; and
+
+  (b) You must cause any modified files to carry prominent notices
+      stating that You changed the files; and
+
+  (c) You must retain, in the Source form of any Derivative Works
+      that You distribute, all copyright, patent, trademark, and
+      attribution notices from the Source form of the Work,
+      excluding those notices that do not pertain to any part of
+      the Derivative Works; and
+
+  (d) If the Work includes a "NOTICE" text file as part of its
+      distribution, then any Derivative Works that You distribute must
+      include a readable copy of the attribution notices contained
+      within such NOTICE file, excluding those notices that do not
+      pertain to any part of the Derivative Works, in at least one
+      of the following places: within a NOTICE text file distributed
+      as part of the Derivative Works; within the Source form or
+      documentation, if provided along with the Derivative Works; or,
+      within a display generated by the Derivative Works, if and
+      wherever such third-party notices normally appear. The contents
+      of the NOTICE file are for informational purposes only and
+      do not modify the License. You may add Your own attribution
+      notices within Derivative Works that You distribute, alongside
+      or as an addendum to the NOTICE text from the Work, provided
+      that such additional attribution notices cannot be construed
+      as modifying the License.
+
+  You may add Your own copyright statement to Your modifications and
+  may provide additional or different license terms and conditions
+  for use, reproduction, or distribution of Your modifications, or
+  for any such Derivative Works as a whole, provided Your use,
+  reproduction, and distribution of the Work otherwise complies with
+  the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+  any Contribution intentionally submitted for inclusion in the Work
+  by You to the Licensor shall be under the terms and conditions of
+  this License, without any additional terms or conditions.
+  Notwithstanding the above, nothing herein shall supersede or modify
+  the terms of any separate license agreement you may have executed
+  with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+  names, trademarks, service marks, or product names of the Licensor,
+  except as required for reasonable and customary use in describing the
+  origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+  agreed to in writing, Licensor provides the Work (and each
+  Contributor provides its Contributions) on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+  implied, including, without limitation, any warranties or conditions
+  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+  PARTICULAR PURPOSE. You are solely responsible for determining the
+  appropriateness of using or redistributing the Work and assume any
+  risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+  whether in tort (including negligence), contract, or otherwise,
+  unless required by applicable law (such as deliberate and grossly
+  negligent acts) or agreed to in writing, shall any Contributor be
+  liable to You for damages, including any direct, indirect, special,
+  incidental, or consequential damages of any character arising as a
+  result of this License or out of the use or inability to use the
+  Work (including but not limited to damages for loss of goodwill,
+  work stoppage, computer failure or malfunction, or any and all
+  other commercial damages or losses), even if such Contributor
+  has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+  the Work or Derivative Works thereof, You may choose to offer,
+  and charge a fee for, acceptance of support, warranty, indemnity,
+  or other liability obligations and/or rights consistent with this
+  License. However, in accepting such obligations, You may act only
+  on Your own behalf and on Your sole responsibility, not on behalf
+  of any other Contributor, and only if You agree to indemnify,
+  defend, and hold each Contributor harmless for any liability
+  incurred by, or claims asserted against, such Contributor by reason
+  of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+  To apply the Apache License to your work, attach the following
+  boilerplate notice, with the fields enclosed by brackets "[]"
+  replaced with your own identifying information. (Don't include
+  the brackets!)  The text should be enclosed in the appropriate
+  comment syntax for the file format. We also recommend that a
+  file or class name and description of purpose be included on the
+  same "printed page" as the copyright notice for easier
+  identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+================================================================================
+
+psm@0.1.31 (MIT OR Apache-2.0); authors declared by package: Simonas Kazlauskas <psm@kazlauskas.me>
+
+https://crates.io/api/v1/crates/psm/0.1.31/download :: LICENSE-MIT
+
+Copyright © 2018, Simonas Kazlauskas
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+================================================================================
+
 pulp-wasm-simd-flag@0.1.1 (MIT); authors declared by package: sarah quiñones <sarah@veganb.tw>
 pulp@0.22.3 (MIT); authors declared by package: sarah quiñones <sarah@veganb.tw>
 
@@ -30705,6 +32084,241 @@
 
 ================================================================================
 
+pyo3-build-config@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+pyo3-ffi@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+pyo3-macros-backend@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+pyo3-macros@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+pyo3@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+
+https://crates.io/api/v1/crates/pyo3-build-config/0.29.3/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/pyo3-ffi/0.29.3/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/pyo3-macros-backend/0.29.3/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/pyo3-macros/0.29.3/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/pyo3/0.29.3/download :: LICENSE-APACHE
+https://crates.io/api/v1/crates/pyo3/0.29.3/download :: pyo3-runtime/LICENSE-APACHE
+
+Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
+
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+================================================================================
+
+pyo3-build-config@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+pyo3-ffi@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+pyo3-macros-backend@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+pyo3-macros@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+pyo3@0.29.3 (MIT OR Apache-2.0); authors declared by package: PyO3 Project and Contributors <https://github.com/PyO3>
+
+https://crates.io/api/v1/crates/pyo3-build-config/0.29.3/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/pyo3-ffi/0.29.3/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/pyo3-macros-backend/0.29.3/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/pyo3-macros/0.29.3/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/pyo3/0.29.3/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/pyo3/0.29.3/download :: pyo3-runtime/LICENSE-MIT
+
+Copyright (c) 2023-present PyO3 Project and Contributors.  https://github.com/PyO3
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+================================================================================
+
 qoi@0.4.1 (MIT/Apache-2.0); authors declared by package: Ivan Smirnov <rust@ivan.smirnov.ie>
 
 https://crates.io/api/v1/crates/qoi/0.4.1/download :: LICENSE-MIT
@@ -31178,6 +32792,40 @@
 
 ================================================================================
 
+quote-use-macros@0.9.0 (MIT)
+quote-use@0.9.0 (MIT)
+
+https://crates.io/api/v1/crates/quote-use-macros/0.9.0/download :: LICENSE
+https://crates.io/api/v1/crates/quote-use/0.9.0/download :: LICENSE
+
+Copyright (c) Roland Fredenhagen
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+================================================================================
+
 radium@0.7.0 (MIT); authors declared by package: Nika Layzell <nika@thelayzells.com>, myrrlyn <self@myrrlyn.dev>
 
 https://crates.io/api/v1/crates/radium/0.7.0/download :: LICENSE.txt
@@ -33743,6 +35391,450 @@
 
 ================================================================================
 
+ruff_python_ast@0.0.14 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>
+ruff_python_codegen@0.0.14 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>
+ruff_python_literal@0.0.14 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>, RustPython Team
+ruff_python_parser@0.0.14 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>, RustPython Team
+ruff_python_stdlib@0.0.14 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>
+ruff_python_trivia@0.0.14 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>
+ruff_source_file@0.0.14 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>
+ruff_text_size@0.0.14 (MIT); authors declared by package: Charlie Marsh <charlie.r.marsh@gmail.com>
+
+https://raw.githubusercontent.com/astral-sh/ruff/62914c4b9b79a9e5004374a9c482ad2ed69290e1/LICENSE
+
+MIT License
+
+Copyright (c) 2022 Charles Marsh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+end of terms and conditions
+
+The externally maintained libraries from which parts of the Software is derived
+are:
+
+- autoflake, licensed as follows:
+  """
+    Copyright (C) 2012-2018 Steven Myint
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy of
+    this software and associated documentation files (the "Software"), to deal in
+    the Software without restriction, including without limitation the rights to
+    use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+    of the Software, and to permit persons to whom the Software is furnished to do
+    so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- autotyping, licensed as follows:
+  """
+    MIT License
+
+    Copyright (c) 2023 Jelle Zijlstra
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- Flake8, licensed as follows:
+  """
+    == Flake8 License (MIT) ==
+
+    Copyright (C) 2011-2013 Tarek Ziade <tarek@ziade.org>
+    Copyright (C) 2012-2016 Ian Cordasco <graffatcolmingov@gmail.com>
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy of
+    this software and associated documentation files (the "Software"), to deal in
+    the Software without restriction, including without limitation the rights to
+    use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+    of the Software, and to permit persons to whom the Software is furnished to do
+    so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- flake8-eradicate, licensed as follows:
+  """
+    MIT License
+
+    Copyright (c) 2018 Nikita Sobolev
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- flake8-pyi, licensed as follows:
+  """
+    The MIT License (MIT)
+
+    Copyright (c) 2016 Łukasz Langa
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- flake8-simplify, licensed as follows:
+  """
+    MIT License
+
+    Copyright (c) 2020 Martin Thoma
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- isort, licensed as follows:
+  """
+    The MIT License (MIT)
+
+    Copyright (c) 2013 Timothy Edmund Crosley
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.
+  """
+
+- pygrep-hooks, licensed as follows:
+  """
+    Copyright (c) 2018 Anthony Sottile
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.
+  """
+
+- pycodestyle, licensed as follows:
+  """
+    Copyright © 2006-2009 Johann C. Rocholl <johann@rocholl.net>
+    Copyright © 2009-2014 Florent Xicluna <florent.xicluna@gmail.com>
+    Copyright © 2014-2020 Ian Lee <IanLee1521@gmail.com>
+
+    Licensed under the terms of the Expat License
+
+    Permission is hereby granted, free of charge, to any person
+    obtaining a copy of this software and associated documentation files
+    (the "Software"), to deal in the Software without restriction,
+    including without limitation the rights to use, copy, modify, merge,
+    publish, distribute, sublicense, and/or sell copies of the Software,
+    and to permit persons to whom the Software is furnished to do so,
+    subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be
+    included in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+    BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+    ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+    CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- pydocstyle, licensed as follows:
+  """
+    Copyright (c) 2012 GreenSteam, <http://greensteam.dk/>
+
+    Copyright (c) 2014-2020 Amir Rachum, <http://amir.rachum.com/>
+
+    Copyright (c) 2020 Sambhav Kothari, <https://github.com/samj1912>
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy of
+    this software and associated documentation files (the "Software"), to deal in
+    the Software without restriction, including without limitation the rights to
+    use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+    of the Software, and to permit persons to whom the Software is furnished to do
+    so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- Pyflakes, licensed as follows:
+  """
+    Copyright 2005-2011 Divmod, Inc.
+    Copyright 2013-2014 Florent Xicluna
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be
+    included in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+  """
+
+- Pyright, licensed as follows:
+  """
+    MIT License
+
+    Pyright - A static type checker for the Python language
+    Copyright (c) Microsoft Corporation. All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
+  """
+
+- pyupgrade, licensed as follows:
+  """
+    Copyright (c) 2017 Anthony Sottile
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.
+  """
+
+- rome/tools, licensed under the MIT license:
+  """
+    MIT License
+
+    Copyright (c) Rome Tools, Inc. and its affiliates.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- RustPython, licensed as follows:
+  """
+    MIT License
+
+    Copyright (c) 2020 RustPython Team
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+  """
+
+- rust-analyzer/text-size, licensed under the MIT license:
+  """
+    Permission is hereby granted, free of charge, to any
+    person obtaining a copy of this software and associated
+    documentation files (the "Software"), to deal in the
+    Software without restriction, including without
+    limitation the rights to use, copy, modify, merge,
+    publish, distribute, sublicense, and/or sell copies of
+    the Software, and to permit persons to whom the Software
+    is furnished to do so, subject to the following
+    conditions:
+
+    The above copyright notice and this permission notice
+    shall be included in all copies or substantial portions
+    of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+    ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+    TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+    PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+    SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+    IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+    DEALINGS IN THE SOFTWARE.
+  """
+
+================================================================================
+
 rust-embed-impl@8.13.0 (MIT); authors declared by package: pyrossh
 rust-embed-utils@8.13.0 (MIT); authors declared by package: pyrossh
 rust-embed@8.13.0 (MIT); authors declared by package: pyrossh
@@ -36088,6 +38180,34 @@
 
 ================================================================================
 
+speedate@0.17.0 (MIT); authors declared by package: Samuel Colvin <s@muelcolvin.com>
+
+https://crates.io/api/v1/crates/speedate/0.17.0/download :: LICENSE
+
+The MIT License (MIT)
+
+Copyright (c) 2022 Samuel Colvin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+================================================================================
+
 spin@0.10.1 (MIT); authors declared by package: Mathijs van de Nes <git@mathijs.vd-nes.nl>, John Ericson <git@JohnEricson.me>, Joshua Barretto <joshua.s.barretto@gmail.com>
 spin@0.9.9 (MIT); authors declared by package: Mathijs van de Nes <git@mathijs.vd-nes.nl>, John Ericson <git@JohnEricson.me>, Joshua Barretto <joshua.s.barretto@gmail.com>
 tracing-core@0.1.36 (MIT); authors declared by package: Tokio Contributors <team@tokio.rs>
@@ -39167,6 +41287,84 @@
 
 ================================================================================
 
+unicode_names2@1.3.0 ((MIT OR Apache-2.0) AND Unicode-DFS-2016); authors declared by package: Huon Wilson <dbau.pp@gmail.com>, Kang Seonghoon <public+rust@mearie.org>, Valentin Lorentz <progval+git@progval.net>, Jeong YunWon <jeong@youknowone.org>
+
+https://crates.io/api/v1/crates/unicode_names2/1.3.0/download :: data/LICENSE-UNICODE
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 1991-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+================================================================================
+
+unicode_names2@1.3.0 ((MIT OR Apache-2.0) AND Unicode-DFS-2016); authors declared by package: Huon Wilson <dbau.pp@gmail.com>, Kang Seonghoon <public+rust@mearie.org>, Valentin Lorentz <progval+git@progval.net>, Jeong YunWon <jeong@youknowone.org>
+unicode_names2_generator@1.3.0 (MIT OR Apache-2.0); authors declared by package: Huon Wilson <dbau.pp@gmail.com>
+
+https://crates.io/api/v1/crates/unicode_names2/1.3.0/download :: LICENSE-MIT
+https://crates.io/api/v1/crates/unicode_names2_generator/1.3.0/download :: LICENSE-MIT
+
+Copyright (c) 2014 Huon Wilson
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+================================================================================
+
 universal-hash@0.6.1 (MIT OR Apache-2.0); authors declared by package: RustCrypto Developers
 
 https://crates.io/api/v1/crates/universal-hash/0.6.1/download :: LICENSE-MIT
@@ -42642,7 +44840,6 @@
 windows-strings@0.4.2 (MIT OR Apache-2.0); authors declared by package: Microsoft
 windows-strings@0.5.1 (MIT OR Apache-2.0)
 windows-sys@0.48.0 (MIT OR Apache-2.0); authors declared by package: Microsoft
-windows-sys@0.52.0 (MIT OR Apache-2.0); authors declared by package: Microsoft
 windows-sys@0.59.0 (MIT OR Apache-2.0); authors declared by package: Microsoft
 windows-sys@0.60.2 (MIT OR Apache-2.0); authors declared by package: Microsoft
 windows-sys@0.61.2 (MIT OR Apache-2.0)
@@ -42691,7 +44888,6 @@
 https://crates.io/api/v1/crates/windows-strings/0.4.2/download :: license-apache-2.0
 https://crates.io/api/v1/crates/windows-strings/0.5.1/download :: license-apache-2.0
 https://crates.io/api/v1/crates/windows-sys/0.48.0/download :: license-apache-2.0
-https://crates.io/api/v1/crates/windows-sys/0.52.0/download :: license-apache-2.0
 https://crates.io/api/v1/crates/windows-sys/0.59.0/download :: license-apache-2.0
 https://crates.io/api/v1/crates/windows-sys/0.60.2/download :: license-apache-2.0
 https://crates.io/api/v1/crates/windows-sys/0.61.2/download :: license-apache-2.0
diff --git a/products/maka/cli/notices.json b/products/maka/cli/notices.json
index 3780dfc..04cf5e2 100644
--- a/products/maka/cli/notices.json
+++ b/products/maka/cli/notices.json
@@ -1,30 +1,32 @@
 {
   "inputs": {
-    "Cargo.lock": "814b2e24e3860b0aff7a656be433cbb8682c35a9bd3b8d596320b1c5623d4863",
-    "Cargo.toml": "524434a6949c5e8ccaff2e920db94d2346629a4e258a950b7c8ceccc03079cba",
+    "Cargo.lock": "0beef01d067cb7053b60920692fb96b33e6de94bc79d7b64138ece9955e589c7",
+    "Cargo.toml": "dd22513000b4ab225b51ee4efc369a7c1f4699e659afa4ce238d554c550ce1ee",
     "package-lock.json": "2cd0e1423449277ccf0721dbfe554c6a6297d9242211f33e44b1a282a6d2b4b8",
     "package.json": "a6cf2b6e2d6c14ed98f1e09ba195f50260b7e1564a29a8e7477575654dc5d177",
     "packages/plugin-sdk/src/configurations.ts": "93fcc2c070289ffd4b48dcbaee426d72abff74f95c3166ad73447eec588c011a",
-    "packages/plugin-sdk/src/contracts.ts": "8e4b9bae0398c4cca1425e9fdbe707a3b1c987d1d78faa20565706021c5de0b4",
-    "packages/plugin-sdk/src/generated/methods.ts": "46e7bda81e73826a4eafa445f78ca2dcc9d6321c83445228188a8f087871b704",
-    "packages/plugin-sdk/src/generated/runtime.ts": "ebe975e68f6a941a7ec229bd7ea6b6f883ade048b5f315467840f3b8e352c2d2",
+    "packages/plugin-sdk/src/contracts.ts": "f0782038b0efbb92f62d2b74f6d7371b1f344d2beabfd303810d32ff0d2f18ca",
+    "packages/plugin-sdk/src/generated/methods.ts": "b455734da9caad154ec229cbaebeae8b438fa18250526f8c9c16df1ef76190bb",
+    "packages/plugin-sdk/src/generated/runtime.ts": "4b14adc35f45f5a81f05f363fb98fcea749842fbe7a0df886f4acbf65ae3d15f",
     "packages/plugin-sdk/src/index.ts": "88b6d3a3d55e0d720584967c27abeb10d5ca343cd2f346563452c8608f423e67",
     "packages/plugin-sdk/src/native.ts": "f94d07642c8dd32d786444c7ff4cbbadd5bb1debea44f124f84eadd321607fa8",
     "packages/plugin-sdk/src/ui.ts": "d669d2c5c70fc61aae3c0582f586950bf9cea863ee72b48af673e57c30c1b0b9",
     "patches/zod+4.6.5.patch": "5a6cbff1b31ca2a5d2b7c006abb7b1002241dbf4ae42c315c27940201f52b081",
     "platform/background-health/Cargo.toml": "41e89dc7e43adf066306b03b3083cbd4163a5550f39d5be6669463d3c16c53a5",
     "platform/capabilities/Cargo.toml": "b6a0d3d90f3289fcc2f263fcad661df3d76ac2f5c953c07940f2b5c9c8afa5c8",
-    "platform/computer-use/Cargo.toml": "b3397d40d450aca20eb2a1ca0612e5eb565980b2b83b5557d20bd14ec9e58db5",
+    "platform/code-runtime/Cargo.toml": "505ab957667bc855d35da1382a9abea525225c12f7114df0cd595b0fe4710400",
+    "platform/computer-use/Cargo.toml": "52d90fef3fd7a0d75f274a4d955bc428c902911a44b78f2c709be229b6d43756",
     "platform/computer-use/THIRD_PARTY_NOTICES": "709951ed2ee5c4b9ed933f375a37c5b15ec0efa2dea340dc0f289906d72a7bde",
     "platform/event-log/Cargo.toml": "cab3a186e667b93116cb6b2721e429b8efd3b62de72ee5b2e4d5f21c9da9464a",
     "platform/host-js/Cargo.toml": "ad83d0133b55b69298aeb65db408c6de4170bf1d55afb47f93b121992335a3b5",
     "platform/host-runtime/Cargo.toml": "6ac21566be141265f87876bd25bf30de562db4f5407b8cb77080b38984de967f",
-    "platform/js-runtime/Cargo.toml": "a59b8da9e38ad76d4829d1e1326ea550f126924f9766c99800b314412a746919",
+    "platform/js-runtime/Cargo.toml": "028b15e9586d04f4d89c4d7992aca8456392ecec75c8ff8ca540c9aa10a2f7a6",
     "platform/network/Cargo.toml": "e266344203daba9569d7b92ca86bc27b2ce6c327bd27201c7c72335dc458bcda",
     "platform/packages/Cargo.toml": "b67355742e1b728cbc502584bd963e78a0ae9cbf4e1b4b6b71efebd7eca7766c",
     "platform/plugin-core/Cargo.toml": "fdf62719358de260a7f2d5c799868d26f0d5118c2542e0d55433d9ecbeb19fda",
     "platform/presentation/Cargo.toml": "e443041376121b1548fcafdfe887679ceaff0dc5af60f833f9caf9e0a34b0a64",
     "platform/process/Cargo.toml": "319f952cac326aa23da6de712d5a7289b6fafcb6578f6a6fa28a6579a0b2d272",
+    "platform/python-runtime/Cargo.toml": "03132dd94ac0a4617404563a7fbefea488c4151b1079b0951abae6ea7fad21ff",
     "platform/sandbox/Cargo.toml": "9f564d3ab6fa2e98f9cc4052409ab1f49cbe3897069297a0fcb15747e92a155f",
     "platform/transport/Cargo.toml": "bfb11b8885f639bfe9e8dfdd63b334204b35f93a0bb34fea40f215d2dbbf3b4e",
     "platform/ui-js/Cargo.toml": "9e14fefad630e56df7699cab071b0a02b5c5e34ac7bfd55cc2bb0209c9a98780",
@@ -37,13 +39,13 @@
     "plugins/agent/api/Cargo.toml": "7f33b8ad23980598820684a18fbde28a078a8624e951147564da3d121736fecc",
     "plugins/agent/assistant/Cargo.toml": "8cd96558bb9ca26f16ca43928417199f22744892d11d368d1c398abfe32c4121",
     "plugins/agent/authority/Cargo.toml": "0846b250243a9fe802a75cf08cb1b73beb991708b1f46d3c69bb9938cb6558b7",
-    "plugins/agent/engine/Cargo.toml": "dc8541b10937a726f9d13c82689a9341c6b2133ab50cf180dc3d85b7d4890df2",
+    "plugins/agent/engine/Cargo.toml": "66dcaa9a694a1ff40cc468067b75c98a11009bb6c539db7355ffa79ab97202fb",
     "plugins/agent/facts/Cargo.toml": "dbf0a5f2efdc04ceba07043e86b692adb8a2ddfaa78f04eb5a6cdc0ba800649c",
     "plugins/agent/goal/Cargo.toml": "0e7b81aaa8b60b884a0f64fb586c03f7ecbdf1dc426d2d731ce8f80ba61cf9eb",
     "plugins/agent/graph/Cargo.toml": "b12c9de4be4fff7472d313e7176fd4289686f73f691fead2b130739256c8f7f8",
     "plugins/agent/insights/Cargo.toml": "e11b391c1304bb27d552322e9f31b9e1858340f81f49ebbb3d484b02c9238def",
     "plugins/agent/model/Cargo.toml": "7381fd93808e887daba801f0c8ba5604fb8055d2b44f461064eba47f1a5b967e",
-    "plugins/agent/native/Cargo.toml": "1c3d52ed44f77af20aac1a9c0c4a6bf9f5d3fe0b8594d88401f408de66d222b0",
+    "plugins/agent/native/Cargo.toml": "4598708c46f69f360807fa1e6ecdf1f737913e317a84a689abb94c6c893d6ebf",
     "plugins/agent/ports/Cargo.toml": "f7623bda4c4413a1d4377eda079a769ff98a6ca9b6b40cf880d34dc30ba6a6f7",
     "plugins/agent/provider-protocol/Cargo.toml": "3375dc87772abd33b4cc19ed45969b7e96a16dc7fe8a00037765a3ce04567208",
     "plugins/agent/providers/Cargo.toml": "39a004b9e37326da6b30c04d07b4de8e35ab5d33aedb26bd1a7685ed68fe0865",
@@ -54,7 +56,7 @@
     "plugins/agent/session-recap/Cargo.toml": "5416a07f862ca4b9e347e1aa0009887c98526739d9a179db8cce21adb025c378",
     "plugins/agent/session-title/Cargo.toml": "16ab72c30e4df4b4c41e5c43b1c51c79e620d3d9f54faf2cb8d4780f3d192728",
     "plugins/agent/tool-catalog/Cargo.toml": "26feb9456d1c99d6de709dec314ec147b6c77fbf60b41f2c0f043f233e0c5e6a",
-    "plugins/agent/tools/Cargo.toml": "36373548222487adec6921f6db2c3d4644bd219c0d0dde9be701db5c46aaf748",
+    "plugins/agent/tools/Cargo.toml": "4742728d5c53aa4116a033b5d6409acb5896f2b4c0148db07fe07fd5897674e3",
     "plugins/application/authoring-gateway/package.ts": "bb36aa4a4261e73c18848ec22370282987e69fe3998e5e86f8b8540693a32e0a",
     "plugins/application/authoring/native/Cargo.toml": "48429aa408d5369cc6523855b25cb69e27fd46ab33449cba3a7c9eb8e45dd785",
     "plugins/application/authoring/package.ts": "83870f6e14f16aaf2442c8d15c0c50b8ca889110744f968a119de12e7f2825da",
@@ -89,7 +91,7 @@
     "plugins/workspace/api/Cargo.toml": "fff7bc83092332b402161429ca5dd4acbeea4a5f693f5c9f192adfa2a376ca15",
     "plugins/workspace/protocol-processes/package.ts": "7cad0def0303cf37e5ab786e5bae958dbe7692a9945ac4e752a83717d6aafbfa",
     "plugins/workspace/support/Cargo.toml": "3a490f5bf2c108f94254b177cd8ad1ad012e3db497c104d1ac09887577f126e2",
-    "plugins/workspace/workspace-computer/native/Cargo.toml": "3356e18bd757de70e23b9acbe5eb5c86d9394446db71beb47af1e7a4d6677623",
+    "plugins/workspace/workspace-computer/native/Cargo.toml": "957a81c39abbb9141b5efdcc0e4b68a72e2d69e883f2eb1a8bb47b715cd3c762",
     "plugins/workspace/workspace-computer/package.ts": "c8b4300fa50103d41e19e2a973c6d025e50403be0d03969baba3391e23629573",
     "plugins/workspace/workspace-files/engine/Cargo.toml": "1135eea9fa8416f716b69f0e154d7b05f4f31a49c09834193d39923b30435973",
     "plugins/workspace/workspace-files/engine/tests/support/glob_source.mjs": "866d1db83f5585a9c9dc74de8b22ebe9c64dd3cd5dd298fb489c22c96a7ea924",
@@ -110,7 +112,7 @@
     "products/maka/bundle/scripts/build.mjs": "db11d8cd6f29ef7ead087261848568da1ad3889a870a89f23fa969449d769d47",
     "products/maka/bundle/src/composition.ts": "05e17fbd85e5ffd1712911d22f77d62b2bc62330f4b32a4b9a85b57b76eb6b79",
     "products/maka/bundle/src/installation.ts": "e13d8adc85cf4d78f38054548e65fe59c1ff95aaf14be7b50649f537313b1788",
-    "products/maka/cli/Cargo.toml": "23452216b91436254a2cdb2777bba5c3b4913f95ad5de9feb76de82c76b54911",
+    "products/maka/cli/Cargo.toml": "5d4f70ace56af46863e700e4ade41b788cf223a302d1b76aaf77b9b72d9be6d5",
     "products/maka/cli/build.rs": "97c68def305bc101788428268fd99b114e5229fa2400542b0fea2eced6edbecc",
     "products/maka/cli/build/product.rs": "44d6ab9638f91a3db0615bd509e4386d5b3aef008f24e3cb1e4dc5a5247b3102",
     "products/maka/client/Cargo.toml": "33a6ff74d79ce70081336cad1f552f7705d0bf10ad82c341f3c0739332c0503c",
@@ -200,7 +202,7 @@
     "scripts/rust/licenses/selectors-0.38.0.txt": "d040d92f5deb344505a902a2442a75e99c7a2057f836d96150664c9310ceeed4",
     "scripts/rust/licenses/zune-core-0.4.12-notice.txt": "6683bf9cc7f7802fb9bb8a0b18a05e969ffb584d9976fec980bbbe88b3d4b7ed",
     "scripts/rust/notices-sources.json": "6fe7475665b5074b4f9171167ead90b64dd7145c88023e0463c8661df603e505",
-    "scripts/rust/notices.mjs": "8135d14895f7264a3848702ebd8dfdbddd095aca1f91e0fe43f95cb23f9fd982",
+    "scripts/rust/notices.mjs": "adc08deb7d055c77759b835a7c52d1675a9c3c0f32cffd68cc33285dfb6f2846",
     "scripts/rust/v8-cache.mjs": "7b54f331b2a3f9b71bb7d72fc9eac260c47c2e157b84917fad6284452a7714f5",
     "scripts/rust/v8-notices.mjs": "b97838d131fc81bc547cec0994a357fa8a4d36c94ea418ebaedc75bedf291e37",
     "scripts/rust/v8-prebuilt.mjs": "3500ad76d885b3490f2ead8f0f4138f26be384837f4f1fb6913261e9e0e37e90",
@@ -2743,5 +2745,5 @@
     "third-party/termina/upstream.json": "31ce8c2b8b45305bff1ce8a52db55f06e5887e770346dbc6c3ea3c574b58ebad",
     "tools/schema/Cargo.toml": "d8f47765451f555f872ea034945abd7afd54dc4c188ad5d5553932f8f2bc2462"
   },
-  "sha256": "80ef47abfb8a3450b17634e74d080f2e5d7dd67709effb60767c1c79473b9e21"
+  "sha256": "ee11c025782319106c6a590e9ce1b0b1abd4e296faee0c6938d3678d1bcaa024"
 }
diff --git a/products/maka/cli/src/code.rs b/products/maka/cli/src/code.rs
index c1e5157..1bc5cee 100644
--- a/products/maka/cli/src/code.rs
+++ b/products/maka/cli/src/code.rs
@@ -182,6 +182,7 @@
                 collaboration_mode: CollaborationMode::Agent,
                 orchestration_mode: BehaviorId::default(),
                 tool_mode: ToolMode::CodeMode,
+                code_language: Default::default(),
                 model: None,
                 thinking_level: None,
             })),
diff --git a/products/maka/cli/src/distribution.rs b/products/maka/cli/src/distribution.rs
index eca164d..179542f 100644
--- a/products/maka/cli/src/distribution.rs
+++ b/products/maka/cli/src/distribution.rs
@@ -573,6 +573,7 @@
             }
         }
         append(target.executable(), &binary);
+        append(target.python_worker(), &binary);
         if let Some(gui) = desktop_gui {
             if target == Target::Win32X64 {
                 binary[156..158].copy_from_slice(&(if gui { 2_u16 } else { 3_u16 }).to_le_bytes());
@@ -692,6 +693,7 @@
             let app = |name: &str| format!("{}/{name}", target.desktop_app());
             assert_eq!(artifact.integrity, integrity);
             assert!(artifact.executable.is_file());
+            assert!(artifact.directory.join(target.python_worker()).is_file());
             let desktop = artifact.directory.join(target.desktop_executable());
             assert!(desktop.is_file());
             assert_eq!(
@@ -965,6 +967,13 @@
             (linux, Some("bin/maka-terminal-shell"), false, None),
             (linux, None, false, Some("bin/app/gpui-shell.json")),
             (linux, None, false, Some("bin/app/main.js")),
+            (linux, None, false, Some("bin/maka-python-worker")),
+            (
+                Target::Win32X64,
+                None,
+                false,
+                Some("bin/maka-python-worker.exe"),
+            ),
             (macos, None, false, Some("bin/Maka.app/Contents/Info.plist")),
             (
                 macos,
diff --git a/products/maka/cli/src/distribution/archive.rs b/products/maka/cli/src/distribution/archive.rs
index 520eff2..91476fe 100644
--- a/products/maka/cli/src/distribution/archive.rs
+++ b/products/maka/cli/src/distribution/archive.rs
@@ -71,6 +71,7 @@
         "THIRD_PARTY_NOTICES.txt",
         target.executable(),
         target.desktop_executable(),
+        target.python_worker(),
     ]
     .into_iter()
     .chain(target.desktop_members().iter().copied())
@@ -398,6 +399,10 @@
         &mut regular_file(&directory.join(target.desktop_executable()))?,
         true,
     )?;
+    target.validate_binary(
+        &mut regular_file(&directory.join(target.python_worker()))?,
+        false,
+    )?;
     if let Some(service) = target.service_executable() {
         target.validate_binary(&mut regular_file(&directory.join(service))?, true)?;
     }
diff --git a/products/maka/cli/src/distribution/target.rs b/products/maka/cli/src/distribution/target.rs
index 67f790d..692f9b2 100644
--- a/products/maka/cli/src/distribution/target.rs
+++ b/products/maka/cli/src/distribution/target.rs
@@ -123,8 +123,17 @@
         }
     }
 
+    pub fn python_worker(self) -> &'static str {
+        if self == Self::Win32X64 {
+            "bin/maka-python-worker.exe"
+        } else {
+            "bin/maka-python-worker"
+        }
+    }
+
     pub fn is_executable(self, name: &str) -> bool {
         name == self.executable()
+            || name == self.python_worker()
             || name == self.desktop_executable()
             || Some(name) == self.service_executable()
     }
diff --git a/products/maka/terminal-shell/app/ConnectionModel.tsx b/products/maka/terminal-shell/app/ConnectionModel.tsx
index 844f428..a1bf55b 100644
--- a/products/maka/terminal-shell/app/ConnectionModel.tsx
+++ b/products/maka/terminal-shell/app/ConnectionModel.tsx
@@ -58,6 +58,76 @@
           hint={tr('Optional. Empty uses the provider’s name.')}
         />
         <Text style={{ ...bodyTextStyle, color: C.text, fontWeight: '500' }}>
+          {tr('Code Mode')}
+        </Text>
+        <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 12 }}>
+          <Each
+            of={
+              [
+                { label: 'Default', value: null },
+                { label: 'Enabled', value: true },
+                { label: 'Disabled', value: false },
+              ] as const
+            }
+            key={(item) => item.label}
+          >
+            {(item) => (
+              <Button
+                disabled={disabled()}
+                selected={model().codeMode === item().value}
+                onPress={inputAction(owner.changeCodeMode, {
+                  ...owner.modelAction(),
+                  enabled: item().value,
+                })}
+                style={{ ...controlStyle, flexDirection: 'row', alignItems: 'center', gap: 8 }}
+                hoverStyle={controlHoverStyle}
+                focusStyle={controlFocusStyle}
+                disabledStyle={controlDisabledStyle}
+              >
+                <ChoiceIndicator
+                  kind="radio"
+                  checked={model().codeMode === item().value}
+                  disabled={disabled()}
+                />
+                <Text style={{ ...captionTextStyle, color: C.text }}>{tr(item().label)}</Text>
+              </Button>
+            )}
+          </Each>
+        </View>
+        <Text style={{ ...bodyTextStyle, color: C.text, fontWeight: '500' }}>
+          {tr('Code Mode language')}
+        </Text>
+        <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 12 }}>
+          <Each of={['javascript', 'python'] as const} key={(language) => language}>
+            {(language) => (
+              <Button
+                disabled={disabled()}
+                selected={(model().codeModeLanguage ?? 'javascript') === language()}
+                onPress={inputAction(owner.changeCodeLanguage, {
+                  ...owner.modelAction(),
+                  language: language(),
+                })}
+                style={{ ...controlStyle, flexDirection: 'row', alignItems: 'center', gap: 8 }}
+                hoverStyle={controlHoverStyle}
+                focusStyle={controlFocusStyle}
+                disabledStyle={controlDisabledStyle}
+              >
+                <ChoiceIndicator
+                  kind="radio"
+                  checked={(model().codeModeLanguage ?? 'javascript') === language()}
+                  disabled={disabled()}
+                />
+                <Text style={{ ...captionTextStyle, color: C.text }}>
+                  {language() === 'python' ? 'Python' : 'JavaScript'}
+                </Text>
+              </Button>
+            )}
+          </Each>
+        </View>
+        <Text style={{ ...captionTextStyle, color: C.muted }}>
+          {tr('Used when Code Mode is enabled. Applies to newly submitted messages.')}
+        </Text>
+        <Text style={{ ...bodyTextStyle, color: C.text, fontWeight: '500' }}>
           {tr('Supported reasoning efforts')}
         </Text>
         <If when={model().effective}>
diff --git a/products/maka/terminal-shell/app/locale-settings.ts b/products/maka/terminal-shell/app/locale-settings.ts
index 5cc47e2..563d943 100644
--- a/products/maka/terminal-shell/app/locale-settings.ts
+++ b/products/maka/terminal-shell/app/locale-settings.ts
@@ -59,6 +59,13 @@
 } from '../../../../plugins/shared/tui-messages.js';
 
 export const settingsMessages = {
+  'Code Mode': ['Code Mode', 'Code Mode', 'Code Mode'],
+  'Code Mode language': ['Code Mode language', 'Code Mode 语言', 'Code Mode 語言'],
+  'Used when Code Mode is enabled. Applies to newly submitted messages.': [
+    'Used when Code Mode is enabled. Applies to newly submitted messages.',
+    '启用 Code Mode 时使用,设置对新提交的消息生效。',
+    '啟用 Code Mode 時使用,設定對新提交的訊息生效。',
+  ],
   'A provider credential is stored. Leave blank to keep it; enter a key to replace it.': [
     'A provider credential is stored. Leave blank to keep it; enter a key to replace it.',
     '已保存提供商凭据。留空可保留,输入密钥可替换。',
diff --git a/products/maka/terminal-shell/app/settings.ts b/products/maka/terminal-shell/app/settings.ts
index dfffc79..73caa31 100644
--- a/products/maka/terminal-shell/app/settings.ts
+++ b/products/maka/terminal-shell/app/settings.ts
@@ -22,6 +22,7 @@
 import { message, UiError } from './text';
 import type {
   CatalogMutationResult,
+  CodeLanguage,
   ConnectionVersionBasis,
   CredentialStatus,
   ModelOverride,
@@ -59,6 +60,8 @@
   modelId: string | null;
 };
 export type ModelEditor = {
+  codeMode: boolean | null;
+  codeModeLanguage: CodeLanguage | null;
   originalId: string | null;
   id: string;
   label: string;
@@ -569,6 +572,8 @@
       originalId: id,
       id: id ?? '',
       label: raw?.displayName ?? '',
+      codeMode: raw?.codeMode ?? null,
+      codeModeLanguage: raw?.codeModeLanguage ?? null,
       thinkingLevels: raw?.thinkingLevels ? [...raw.thinkingLevels] : null,
       defaultThinkingLevel: raw?.defaultThinkingLevel ?? null,
       effective: null,
@@ -641,6 +646,12 @@
     )
       changeModel({ defaultThinkingLevel: request.level });
   };
+  const changeCodeMode = (request: ModelAction & { enabled: boolean | null }) => {
+    if (currentModel(request)) changeModel({ codeMode: request.enabled });
+  };
+  const changeCodeLanguage = (request: ModelAction & { language: CodeLanguage }) => {
+    if (currentModel(request)) changeModel({ codeModeLanguage: request.language });
+  };
   const showModels = (request: ConnectionAction) => {
     if (current(request) && !busy() && !dirty() && editor()?.baseline) {
       page.set('models');
@@ -668,6 +679,10 @@
       else value.thinkingLevels = current.thinkingLevels;
       if (current.defaultThinkingLevel) value.defaultThinkingLevel = current.defaultThinkingLevel;
       else delete value.defaultThinkingLevel;
+      if (current.codeMode === null) delete value.codeMode;
+      else value.codeMode = current.codeMode;
+      if (current.codeModeLanguage === null) delete value.codeModeLanguage;
+      else value.codeModeLanguage = current.codeModeLanguage;
       overrides[id] = value;
       const result = await mutate('settings', 'update', {
         expected: basis(form.baseline),
@@ -859,6 +874,8 @@
     toggleThinking,
     useProviderThinking,
     defaultThinking,
+    changeCodeMode,
+    changeCodeLanguage,
     showModels,
     saveModel,
     setDefault,
diff --git a/scripts/asf-license-headers.mjs b/scripts/asf-license-headers.mjs
index 75ff26d..0b70fe2 100644
--- a/scripts/asf-license-headers.mjs
+++ b/scripts/asf-license-headers.mjs
@@ -257,6 +257,7 @@
       'platform/computer-use/src/api.md',
       'platform/computer-use/src/api.zh-CN.md',
       'platform/computer-use/src/api.zh-TW.md',
+      'plugins/agent/tools/src/cell/python.md',
     ),
   },
   {
diff --git a/scripts/rust/build-cli.mjs b/scripts/rust/build-cli.mjs
index 14fde8e..0de37bf 100644
--- a/scripts/rust/build-cli.mjs
+++ b/scripts/rust/build-cli.mjs
@@ -69,6 +69,8 @@
     'maka-cli',
     '-p',
     'maka-desktop-shell',
+    '-p',
+    'maka-python-runtime',
     '--target-dir',
     targetDirectory,
   ];
diff --git a/scripts/rust/build-cli.test.mjs b/scripts/rust/build-cli.test.mjs
index 03e171f..f160e25 100644
--- a/scripts/rust/build-cli.test.mjs
+++ b/scripts/rust/build-cli.test.mjs
@@ -136,6 +136,8 @@
       'maka-cli',
       '-p',
       'maka-desktop-shell',
+      '-p',
+      'maka-python-runtime',
       '--target-dir',
       directory,
       '--release',
@@ -164,6 +166,8 @@
     'maka-cli',
     '-p',
     'maka-desktop-shell',
+    '-p',
+    'maka-python-runtime',
     '--target-dir',
     join(root, 'target'),
   ]);
diff --git a/scripts/rust/notices.mjs b/scripts/rust/notices.mjs
index 2a67fa4..dd4f4dd 100644
--- a/scripts/rust/notices.mjs
+++ b/scripts/rust/notices.mjs
@@ -217,7 +217,7 @@
     );
     const nodes = new Map(metadata.resolve.nodes.map((node) => [node.id, node]));
     const catalog = new Map(metadata.packages.map((pkg) => [pkg.id, pkg]));
-    const pending = ['maka-cli', 'maka-desktop-shell'].map(
+    const pending = ['maka-cli', 'maka-desktop-shell', 'maka-python-runtime'].map(
       (name) => metadata.packages.find((pkg) => pkg.name === name).id,
     );
     const seen = new Set();
diff --git a/scripts/rust/pack-cli.mjs b/scripts/rust/pack-cli.mjs
index 5cb7c7a..460fe02 100644
--- a/scripts/rust/pack-cli.mjs
+++ b/scripts/rust/pack-cli.mjs
@@ -64,6 +64,13 @@
     const executable = platform.os === 'win32' ? 'maka.exe' : 'maka';
     await copyRegular(resolve(binary), join(directory, 'bin', executable), 512 * 1024 * 1024);
     await chmod(join(directory, 'bin', executable), 0o755);
+    const worker = platform.os === 'win32' ? 'maka-python-worker.exe' : 'maka-python-worker';
+    await copyRegular(
+      join(dirname(resolve(binary)), worker),
+      join(directory, 'bin', worker),
+      512 * 1024 * 1024,
+    );
+    await chmod(join(directory, 'bin', worker), 0o755);
     const desktop = platform.os === 'win32' ? 'maka-desktop-shell.exe' : 'maka-desktop-shell';
     if (platform.os === 'darwin') {
       await stageDesktopBundle(
diff --git a/scripts/rust/pack-cli.test.mjs b/scripts/rust/pack-cli.test.mjs
index f067460..5591124 100644
--- a/scripts/rust/pack-cli.test.mjs
+++ b/scripts/rust/pack-cli.test.mjs
@@ -58,6 +58,8 @@
       'maka-desktop-shell',
       'maka-desktop-shell.exe',
       'maka-service.exe',
+      'maka-python-worker',
+      'maka-python-worker.exe',
     ])
       await writeFile(join(root, 'build', name), name + ' bytes');
     // Exercise the actual external validator call without executing foreign-target
@@ -82,6 +84,7 @@
       assert.equal(execFileSync('tar', ['-xOf', archive, shell], {encoding:'utf8'}), shell.split('/').pop() + ' bytes');
       if (process.platform !== 'win32') assert.match(execFileSync('tar', ['-tvzf', archive, shell], {encoding:'utf8'}), /^-rwx/);
       assert.equal(files.includes('package/bin/maka-service.exe'), windows);
+      assert.ok(files.includes('package/bin/' + (windows ? 'maka-python-worker.exe' : 'maka-python-worker')));
       assert.equal(files.some((file) => file.startsWith('package/bin/Maka.app/')), macos);
       assert.equal(files.some((file) => file.startsWith('package/bin/app/')), !macos);
       assert.equal(files.includes('package/bin/maka-desktop-shell'), !macos && !windows);
diff --git a/scripts/rust/release-cli.mjs b/scripts/rust/release-cli.mjs
index 4ae1adc..acf387c 100644
--- a/scripts/rust/release-cli.mjs
+++ b/scripts/rust/release-cli.mjs
@@ -202,6 +202,16 @@
       });
       if (!terminal.stdout.trim().endsWith(' ' + candidate.version))
         throw new Error('Built terminal shell reports another source version');
+      const worker = join(
+        dirname(binary),
+        platform.os === 'win32' ? 'maka-python-worker.exe' : 'maka-python-worker',
+      );
+      const workerVersion = await run(worker, ['--version'], {
+        timeout: 15_000,
+        windowsHide: true,
+      });
+      if (workerVersion.stdout.trim() !== 'maka-python-worker ' + candidate.version)
+        throw new Error('Built Python worker reports another source version');
       const executables = [
         binary,
         ...(platform.os === 'win32' ? [join(dirname(binary), 'maka-service.exe')] : []),
diff --git a/scripts/rust/run-cli.mjs b/scripts/rust/run-cli.mjs
index 90473fc..2f97164 100644
--- a/scripts/rust/run-cli.mjs
+++ b/scripts/rust/run-cli.mjs
@@ -50,16 +50,29 @@
     '--',
     ...argv,
   ];
-  return await new Promise((resolveRun, reject) => {
-    const child = spawn('cargo', args, {
-      cwd: repositoryRoot,
-      env,
-      stdio: 'inherit',
-      windowsHide: true,
+  const build = await cargo([
+    'build',
+    '--locked',
+    '-p',
+    'maka-python-runtime',
+    '--bin',
+    'maka-python-worker',
+  ]);
+  if (build.code !== 0 || build.signal) return build;
+  return await cargo(args);
+
+  function cargo(args) {
+    return new Promise((resolveRun, reject) => {
+      const child = spawn('cargo', args, {
+        cwd: repositoryRoot,
+        env,
+        stdio: 'inherit',
+        windowsHide: true,
+      });
+      child.once('error', reject);
+      child.once('exit', (code, signal) => resolveRun({ code, signal }));
     });
-    child.once('error', reject);
-    child.once('exit', (code, signal) => resolveRun({ code, signal }));
-  });
+  }
 }
 
 if (process.argv[1] && import.meta.url === pathToFileURL(resolve(process.argv[1])).href) {
diff --git a/scripts/rust/run-cli.test.mjs b/scripts/rust/run-cli.test.mjs
index c8f5678..09584e3 100644
--- a/scripts/rust/run-cli.test.mjs
+++ b/scripts/rust/run-cli.test.mjs
@@ -117,7 +117,7 @@
   assert.equal(result.stderr, '');
   assert.deepEqual(JSON.parse(result.stdout), {
     command: 'cargo',
-    args: ['run', '--locked', '-p', 'maka-cli', '--no-default-features', '--', '--help'],
+    args: ['build', '--locked', '-p', 'maka-python-runtime', '--bin', 'maka-python-worker'],
     cwd: root,
   });
 });