diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 4affc427..bcea8a83 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,12 +1,30 @@
version: 2
+
+# Grouping note
+# ─────────────
+# Every ecosystem below groups its minor+patch updates into ONE pull request.
+# Before this, each bump arrived as its own PR: the 2026-09 batch produced six
+# open PRs (#49 memmap2, #51 tokenizers, #52 mimalloc, #53 windows, #64
+# System.Text.Json, #69 log) plus three more against /Deploy. They then sat
+# long enough to fall 61 commits behind main, and each carried its own stale
+# Cargo.lock. Replaying those lockfiles individually would have reverted the
+# quinn-proto 0.11.17 fix for alert #28 that landed on main in the meantime.
+#
+# One grouped PR per ecosystem resolves a single lockfile against current main
+# and is gated once. Major bumps stay ungrouped so they keep an individual,
+# reviewable PR -- those are the ones that break APIs.
+
updates:
- # Rust dependencies (pcai_core workspace)
+ # ── Rust: pcai_core workspace ────────────────────────────────
- package-ecosystem: "cargo"
directory: "/Native/pcai_core"
schedule:
interval: "weekly"
day: "tuesday"
open-pull-requests-limit: 5
+ groups:
+ cargo-pcai-core:
+ update-types: ["minor", "patch"]
labels:
- "dependencies"
- "rust"
@@ -15,13 +33,35 @@ updates:
commit-message:
prefix: "chore(deps):"
- # Rust dependencies (FunctionGemma workspace)
+ # ── Rust: FunctionGemma workspace ────────────────────────────
+ # NOTE: no CI job builds this workspace. rust-guidelines.yml has it
+ # commented out ("FunctionGemma workspaces require CUDA bindgen"), so
+ # nothing here is gated. Bumps must be verified locally in a VS
+ # developer environment before merging.
- package-ecosystem: "cargo"
directory: "/Deploy"
schedule:
interval: "weekly"
day: "tuesday"
open-pull-requests-limit: 3
+ groups:
+ cargo-deploy:
+ update-types: ["minor", "patch"]
+ ignore:
+ # The candle stack is pinned to 0.9.2 to match the vendored CUDA
+ # kernels under Deploy/vendor/ (candle-kernels-0.9.2,
+ # candle-flash-attn-0.9.2), which the workspace [patch] table points
+ # at. Dependabot raised candle-transformers 0.9.2 -> 0.11.0 (#66) on
+ # its own, which would have left rust-functiongemma-core depending on
+ # candle-core 0.9.2 and candle-transformers 0.11.0 at the same time --
+ # two semver-incompatible copies of Tensor in one crate, a guaranteed
+ # compile error. Moving candle requires re-vendoring the kernels too,
+ # so it is a deliberate coordinated change, not a dependabot bump.
+ - dependency-name: "candle-core"
+ - dependency-name: "candle-nn"
+ - dependency-name: "candle-transformers"
+ - dependency-name: "candle-flash-attn"
+ - dependency-name: "candle-kernels"
labels:
- "dependencies"
- "rust"
@@ -30,13 +70,38 @@ updates:
commit-message:
prefix: "chore(deps):"
- # .NET dependencies (PcaiNative)
+ # ── .NET ─────────────────────────────────────────────────────
+ # PcaiServiceHost and both test projects were previously absent from this
+ # file, so nothing ever raised a PR for them. PcaiServiceHost had drifted
+ # to System.Text.Json 10.0.7 while PcaiNative (which IS covered) sat at
+ # 10.0.9 -- two versions of one package in a single solution, invisible
+ # because only half the projects were watched.
- package-ecosystem: "nuget"
directory: "/Native/PcaiNative"
schedule:
interval: "weekly"
day: "tuesday"
open-pull-requests-limit: 3
+ groups:
+ nuget-pcainative:
+ update-types: ["minor", "patch"]
+ labels:
+ - "dependencies"
+ - "dotnet"
+ reviewers:
+ - "David-Martel"
+ commit-message:
+ prefix: "chore(deps):"
+
+ - package-ecosystem: "nuget"
+ directory: "/Native/PcaiServiceHost"
+ schedule:
+ interval: "weekly"
+ day: "tuesday"
+ open-pull-requests-limit: 3
+ groups:
+ nuget-servicehost:
+ update-types: ["minor", "patch"]
labels:
- "dependencies"
- "dotnet"
@@ -45,13 +110,49 @@ updates:
commit-message:
prefix: "chore(deps):"
- # .NET dependencies (PcaiChatTui)
- package-ecosystem: "nuget"
directory: "/Native/PcaiChatTui"
schedule:
interval: "weekly"
day: "tuesday"
open-pull-requests-limit: 2
+ groups:
+ nuget-chattui:
+ update-types: ["minor", "patch"]
+ labels:
+ - "dependencies"
+ - "dotnet"
+ reviewers:
+ - "David-Martel"
+ commit-message:
+ prefix: "chore(deps):"
+
+ - package-ecosystem: "nuget"
+ directory: "/Native/PcaiNative.Tests"
+ schedule:
+ interval: "weekly"
+ day: "tuesday"
+ open-pull-requests-limit: 2
+ groups:
+ nuget-pcainative-tests:
+ update-types: ["minor", "patch"]
+ labels:
+ - "dependencies"
+ - "dotnet"
+ reviewers:
+ - "David-Martel"
+ commit-message:
+ prefix: "chore(deps):"
+
+ - package-ecosystem: "nuget"
+ directory: "/Native/PcaiChatTui.Tests"
+ schedule:
+ interval: "weekly"
+ day: "tuesday"
+ open-pull-requests-limit: 2
+ groups:
+ nuget-chattui-tests:
+ update-types: ["minor", "patch"]
labels:
- "dependencies"
- "dotnet"
@@ -60,13 +161,16 @@ updates:
commit-message:
prefix: "chore(deps):"
- # GitHub Actions versions
+ # ── GitHub Actions ───────────────────────────────────────────
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "tuesday"
open-pull-requests-limit: 5
+ groups:
+ github-actions:
+ update-types: ["minor", "patch"]
labels:
- "dependencies"
- "ci"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a3fb001c..8430019d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,9 +2,9 @@ name: CI
on:
pull_request:
- branches: [main, develop]
+ branches: [main]
push:
- branches: [develop]
+ branches: [main]
concurrency:
group: ci-${{ github.ref }}
@@ -352,6 +352,60 @@ jobs:
}
}
+ # ──────────────────────────────────────────────────────────────
+ # .NET
+ # ──────────────────────────────────────────────────────────────
+ # No job built any .NET project before this one. dependabot watches all five
+ # csproj files (.github/dependabot.yml), so a bump to PcaiServiceHost or to
+ # either test project could satisfy every gate while leaving that project
+ # unable to restore or compile -- nothing compiled it. The only .NET build
+ # that ever ran was in portable-ci.yml, which built PcaiNative alone, on
+ # Linux, and turned failures into warnings.
+ dotnet-build:
+ name: .NET Build
+ runs-on: windows-latest
+ timeout-minutes: 20
+ steps:
+ - uses: actions/checkout@v4
+ # Both SDKs: four projects target net8.0, but PcaiChatTui.Tests targets
+ # net10.0 -- a test project on a newer TFM than the code it exercises.
+ # That builds locally where the 10.x SDK is installed and would fail on a
+ # runner given only 8.0.x, which is part of why this gap went unnoticed.
+ # Installing both makes the gate work today; aligning the TFMs is a
+ # separate decision.
+ - uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: |
+ 8.0.x
+ 10.0.x
+ - name: Build every .NET project
+ shell: pwsh
+ run: |
+ $projects = @(Get-ChildItem -Path Native -Recurse -Filter *.csproj |
+ Where-Object { $_.FullName -notmatch '[\\/](bin|obj)[\\/]' })
+ # Positive control: a discovery glob that silently matches nothing is
+ # not a gate. Fail loudly if the project set shrinks unexpectedly.
+ if ($projects.Count -lt 5) {
+ throw "Expected at least 5 .csproj files under Native/, found $($projects.Count)"
+ }
+ Write-Host "Building $($projects.Count) projects" -ForegroundColor Cyan
+ foreach ($p in $projects) {
+ Write-Host "== $($p.Name)" -ForegroundColor Cyan
+ dotnet build $p.FullName -c Release --nologo -v minimal
+ if ($LASTEXITCODE -ne 0) { throw "dotnet build failed: $($p.Name)" }
+ }
+ - name: Run .NET test projects
+ shell: pwsh
+ run: |
+ $tests = @(Get-ChildItem -Path Native -Recurse -Filter *.Tests.csproj |
+ Where-Object { $_.FullName -notmatch '[\\/](bin|obj)[\\/]' })
+ if ($tests.Count -lt 1) { throw "Expected at least 1 .NET test project, found 0" }
+ foreach ($t in $tests) {
+ Write-Host "== $($t.Name)" -ForegroundColor Cyan
+ dotnet test $t.FullName -c Release --nologo -v minimal
+ if ($LASTEXITCODE -ne 0) { throw "dotnet test failed: $($t.Name)" }
+ }
+
# ──────────────────────────────────────────────────────────────
# Gate (required status check for branch protection)
# ──────────────────────────────────────────────────────────────
@@ -370,6 +424,7 @@ jobs:
- powershell-test
- build-llamacpp
- integration-tests
+ - dotnet-build
steps:
- name: Evaluate Results
shell: pwsh
@@ -382,7 +437,8 @@ jobs:
'${{ needs.rust-test.result }}',
'${{ needs.powershell-test.result }}',
'${{ needs.build-llamacpp.result }}',
- '${{ needs.integration-tests.result }}'
+ '${{ needs.integration-tests.result }}',
+ '${{ needs.dotnet-build.result }}'
)
# 'success' only. No job here carries an `if:`, so the only way a
# gated job skips is an upstream `needs` failing -- and that upstream
@@ -394,4 +450,4 @@ jobs:
Write-Host "Non-success results: $($failed -join ', ')" -ForegroundColor Red
exit 1
}
- Write-Host "CI Gate PASSED - all 8 checks succeeded" -ForegroundColor Green
+ Write-Host "CI Gate PASSED - all 9 checks succeeded" -ForegroundColor Green
diff --git a/.github/workflows/nvidia-validation.yml b/.github/workflows/nvidia-validation.yml
index 5310b93a..a6dd976b 100644
--- a/.github/workflows/nvidia-validation.yml
+++ b/.github/workflows/nvidia-validation.yml
@@ -5,7 +5,7 @@ name: NVIDIA Stack Validation
# on every PR.
on:
pull_request:
- branches: [main, develop]
+ branches: [main]
paths:
- 'Modules/PC-AI.Gpu/**'
- 'Config/nvidia-software-registry.json'
@@ -14,7 +14,7 @@ on:
- 'Tools/Sync-NvidiaDriverVersion.ps1'
- 'Tools/Initialize-CudaEnvironment.ps1'
push:
- branches: [develop]
+ branches: [main]
paths:
- 'Modules/PC-AI.Gpu/**'
- 'Config/nvidia-software-registry.json'
diff --git a/.github/workflows/portable-ci.yml b/.github/workflows/portable-ci.yml
deleted file mode 100644
index 5a7b095a..00000000
--- a/.github/workflows/portable-ci.yml
+++ /dev/null
@@ -1,179 +0,0 @@
-name: Portable CI (Linux)
-
-# Validates that the codebase compiles and passes quality checks on Ubuntu.
-# Primary consumers: Jules and other remote AI agents that run on Linux runners.
-# This workflow is intentionally kept dependency-light — no CUDA, no native DLLs,
-# no Windows-only APIs. All checks must pass before the main CI gate runs.
-
-on:
- pull_request:
- branches: [main, develop]
- workflow_dispatch: {}
-
-concurrency:
- group: portable-ci-${{ github.ref }}
- cancel-in-progress: true
-
-env:
- CARGO_TERM_COLOR: always
- RUST_BACKTRACE: 1
- # Disable sccache — not available on Ubuntu runners without extra setup
- RUSTC_WRAPPER: ""
-
-jobs:
- # ──────────────────────────────────────────────────────────────
- # Single job.
- #
- # The "~4-6 min total" this comment used to claim was never measured. A
- # dispatched run on 2026-09-07 spent over 40 minutes in `Rust Tests` alone,
- # because `cargo test --workspace` builds all seven crates including the
- # candle-based media crates. With no timeout-minutes the job inherited
- # GitHub's 6-hour default, so a genuine hang would burn six hours of runner
- # time before anyone noticed.
- #
- # MEASURED 2026-09-07 (run on 447d838): with the full workspace this job was
- # KILLED by the 60-minute cap -- so "over an hour" is the real figure, not an
- # estimate. Two changes below address the cause rather than the symptom:
- # Swatinem/rust-cache for a cache that actually restores, and excluding the
- # three candle-based pcai-media* crates from the Rust steps. The 60-minute
- # cap is deliberately left in place as a backstop; once a run completes,
- # lower it to something near the real duration so a hang is caught early.
- # ──────────────────────────────────────────────────────────────
-
- portable-tests:
- name: Cross-Platform Quality Gate
- runs-on: ubuntu-latest
- timeout-minutes: 60
- defaults:
- run:
- working-directory: .
-
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- # ── Rust toolchain ────────────────────────────────────────
- - uses: dtolnay/rust-toolchain@stable
- with:
- components: rustfmt, clippy
-
- # Swatinem/rust-cache rather than a hand-rolled actions/cache: it keys on
- # the lockfile AND the toolchain, prunes stale artefacts instead of
- # growing without bound, and skips caching the workspace crates' own
- # build output (which must be rebuilt anyway). The hand-rolled version it
- # replaces cached `target/` wholesale, which restores slowly and can
- # exceed the cache size limit.
- - uses: Swatinem/rust-cache@v2
- with:
- workspaces: Native/pcai_core
-
- # ── .NET toolchain ────────────────────────────────────────
- - uses: actions/setup-dotnet@v4
- with:
- dotnet-version: '8.0.x'
-
- # ── PowerShell modules ────────────────────────────────────
- # Install before the Rust steps so both can run concurrently in later PRs.
- - name: Install PowerShell modules
- shell: pwsh
- run: |
- Set-PSRepository PSGallery -InstallationPolicy Trusted
- # -MinimumVersion pins nothing: it installs the NEWEST version at or
- # above the floor, and Pester 6 is published. This job was running
- # Pester 6 against a suite that declares ModuleVersion 5.0.0, so
- # PC-AI.Robustness and PC-AI.Router died at discovery with
- # "A 'break' or 'continue' statement ... escaped from your code",
- # taking whole files at once. Same fix as ci.yml (4b45f2b); this call
- # site was missed.
- Install-Module -Name Pester -MinimumVersion 5.6.1 -MaximumVersion 5.99.99 -Force -Scope CurrentUser
- Install-Module -Name PSScriptAnalyzer -Force -Scope CurrentUser
-
- # ── Rust: format ──────────────────────────────────────────
- - name: Rust Format Check
- working-directory: Native/pcai_core
- run: cargo fmt --all --check
-
- # ── Rust: clippy ──────────────────────────────────────────
- # -A clippy::type_complexity suppresses the one lint that trips on generated
- # FFI struct layouts where a complex type is unavoidable.
- #
- # The three pcai-media* crates are excluded from BOTH Rust steps here.
- # They pull the candle stack (candle-core/nn/transformers + tokenizers),
- # which this job then compiles twice -- once for clippy, once for the test
- # binaries. That is what pushed the job past an hour: the 2026-09-07 run
- # on 447d838 was killed by the 60-minute cap with the full workspace.
- # They are GPU/CUDA-oriented and not what a Linux portability gate is
- # for, and they are NOT going unchecked -- rust-guidelines.yml and
- # ci.yml's `Build.ps1 -Component lint` both cover the whole workspace on
- # Windows. If this job ever needs to cover them, give them their own job
- # so a slow media build cannot mask a portability regression.
- - name: Rust Clippy
- working-directory: Native/pcai_core
- run: >
- cargo clippy --workspace --all-targets --no-deps
- --exclude pcai-media --exclude pcai-media-model --exclude pcai-media-server
- -- -D warnings -A clippy::type_complexity
-
- # ── Rust: unit tests (no GPU, no backend) ─────────────────
- # Uses the same feature set as the Windows CI to keep coverage comparable.
- - name: Rust Tests
- working-directory: Native/pcai_core
- run: >
- cargo test --workspace --no-default-features --features server,ffi --lib
- --exclude pcai-media --exclude pcai-media-model --exclude pcai-media-server
-
- # ── C#: build (best-effort, DLLs not present on Linux) ────
- # Deliberately non-blocking: Windows-only APIs fail to resolve without
- # the native DLLs. `|| true` alone made the outcome invisible, so a
- # regression here looked identical to a pass. Now it still does not fail
- # the gate, but a failure is reported as an annotation.
- - name: C# Build
- run: |
- if dotnet build Native/PcaiNative/PcaiNative.csproj --nologo -v q; then
- echo "C# build succeeded on Linux."
- else
- echo "::warning::C# build failed on Linux (non-blocking: Windows-only APIs are expected to be unresolvable here)."
- fi
-
- # ── C#: P/Invoke signature tests ──────────────────────────
- # Cross-platform reflection tests — no native DLLs loaded. Same reasoning
- # as above: kept non-blocking, but no longer silent.
- - name: C# P/Invoke Signature Tests
- run: |
- if dotnet test Native/PcaiNative.Tests/PcaiNative.Tests.csproj \
- --nologo --logger "console;verbosity=normal"; then
- echo "P/Invoke signature tests passed."
- else
- echo "::warning::P/Invoke signature tests failed on Linux (non-blocking). These are pure reflection tests, so a failure here is most likely a real signature mismatch."
- fi
-
- # ── PowerShell: static analysis ───────────────────────────
- # Emit warnings rather than failing the gate so Linux-specific false
- # positives (e.g. Windows-only CIM cmdlets) don't block PRs.
- - name: PSScriptAnalyzer
- shell: pwsh
- run: |
- $results = Invoke-ScriptAnalyzer `
- -Path Modules/ -Recurse `
- -Settings PSScriptAnalyzerSettings.psd1 `
- -Severity Warning,Error
- if ($results) {
- $results | Format-Table -AutoSize
- Write-Host "::warning::PSScriptAnalyzer found $($results.Count) issues"
- } else {
- Write-Host "PSScriptAnalyzer: clean"
- }
-
- # ── PowerShell: portable Pester tests ─────────────────────
- # Only tests tagged [Portable] run here — they must not depend on Windows
- # APIs, native DLLs, hardware, or Administrator privileges.
- - name: Portable Pester Tests
- shell: pwsh
- run: |
- $config = New-PesterConfiguration
- $config.Filter.Tag = @('Portable')
- $config.Run.Path = @('Tests/Unit/')
- $config.Output.Verbosity = 'Detailed'
- $config.Run.Exit = $true
- Invoke-Pester -Configuration $config
diff --git a/.github/workflows/rust-guidelines.yml b/.github/workflows/rust-guidelines.yml
index 17884b39..70132134 100644
--- a/.github/workflows/rust-guidelines.yml
+++ b/.github/workflows/rust-guidelines.yml
@@ -2,13 +2,13 @@ name: Rust Guidelines
on:
pull_request:
- branches: [main, develop]
+ branches: [main]
paths:
- '**.rs'
- '**/Cargo.toml'
- '**/Cargo.lock'
push:
- branches: [develop]
+ branches: [main]
paths:
- '**.rs'
- '**/Cargo.toml'
diff --git a/CLAUDE.md b/CLAUDE.md
index 5e995742..d07eb4f0 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -427,10 +427,18 @@ git push origin v1.0.0
- SM 89: Ada Lovelace (RTX 40 series, RTX 2000 Ada)
- SM 120: Blackwell (RTX 50 series)
+**Platform scope — Windows only, by design.** This repo targets Windows/PC and is
+aggressively optimized for it. Cross-platform portability is **not a goal**, and the
+PowerShell modules, tests, and diagnostics are free to depend on Windows-only cmdlets
+(`Get-CimInstance`, `Get-PnpDevice`, registry providers, drive letters). Linux is used
+only where a Docker/WSL build, test, or deploy requirement demands it — never as a
+general portability target. Do not add cross-platform gates or "fix" tests to run on
+Linux; a Linux CI job that runs the PowerShell suite is a misconfiguration, not coverage.
+
**CI/CD Workflows (`.github/workflows/`):**
| Workflow | Trigger |
|----------|---------|
-| `ci.yml` | PR/push to develop — unified gate: security, lint, Rust+PS test, build |
+| `ci.yml` | PR/push to main — unified gate: security, lint, Rust+PS test, build |
| `release-cuda.yml` | Tag push (`v*`) — builds 4 CUDA/CPU release ZIPs |
| `release.yml` | Tag push — PowerShell module release package |
| `maintenance.yml` | Weekly Monday — security scan, dep health, PS 5.1 + MSRV compat |
@@ -439,7 +447,6 @@ git push origin v1.0.0
| `tooling-automation.yml` | Manual — doc/FG/LLM tooling |
| `rust-guidelines.yml` | PR/push (Rust files) — format, clippy, test, audit for .rs/Cargo changes |
| `nvidia-validation.yml` | PR/push (GPU files) — NVIDIA stack validation for PC-AI.Gpu changes |
-| `portable-ci.yml` | PR to main/develop — Portable CI (Linux) cross-platform gate |
| `jules-review.yml` | Weekly Monday 06:00 UTC + manual — Jules automated review |
## Diagnostic Categories
@@ -543,7 +550,7 @@ Test-Path "$env:USERPROFILE\Desktop\Hardware-Diagnostics-Report.txt"
### Git Hooks (lefthook)
-Pre-commit hooks are managed via `lefthook.yml`. Install: `lefthook install`. On staged Rust files the hooks run `cargo fmt --all --check` (`pcai-rust-fmt`, rooted at `Native/pcai_core/`) plus an ast-grep scan and a TODO-expect check. They do **not** run clippy — that is enforced in CI only (portable-ci, rust-guidelines, nvidia-validation, and `ci.yml` via `Build.ps1 -Component lint`). See `.qa-gate.conf` for why the git-guard Rust gate is off in this repo.
+Pre-commit hooks are managed via `lefthook.yml`. Install: `lefthook install`. On staged Rust files the hooks run `cargo fmt --all --check` (`pcai-rust-fmt`, rooted at `Native/pcai_core/`) plus an ast-grep scan and a TODO-expect check. They do **not** run clippy — that is enforced in CI only (rust-guidelines, nvidia-validation, and `ci.yml` via `Build.ps1 -Component lint`). See `.qa-gate.conf` for why the git-guard Rust gate is off in this repo.
### PowerShell Requirements
diff --git a/Native/PcaiNative/PcaiNative.csproj b/Native/PcaiNative/PcaiNative.csproj
index c3d5692b..5489c997 100644
--- a/Native/PcaiNative/PcaiNative.csproj
+++ b/Native/PcaiNative/PcaiNative.csproj
@@ -44,7 +44,7 @@
-
+
diff --git a/Native/PcaiServiceHost/PcaiServiceHost.csproj b/Native/PcaiServiceHost/PcaiServiceHost.csproj
index 1804abab..902dc852 100644
--- a/Native/PcaiServiceHost/PcaiServiceHost.csproj
+++ b/Native/PcaiServiceHost/PcaiServiceHost.csproj
@@ -14,10 +14,17 @@
-
+
-
+
+
diff --git a/Native/pcai_core/Cargo.lock b/Native/pcai_core/Cargo.lock
index 9ec2d137..e65ece0b 100644
--- a/Native/pcai_core/Cargo.lock
+++ b/Native/pcai_core/Cargo.lock
@@ -602,7 +602,7 @@ dependencies = [
"gemm 0.19.0",
"half",
"libm",
- "memmap2 0.9.10",
+ "memmap2 0.9.11",
"num-traits",
"num_cpus",
"rand 0.9.3",
@@ -628,7 +628,7 @@ dependencies = [
"gemm 0.19.0",
"half",
"libm",
- "memmap2 0.9.10",
+ "memmap2 0.9.11",
"num-traits",
"num_cpus",
"rand 0.9.3",
@@ -1186,6 +1186,12 @@ dependencies = [
"libloading 0.9.0",
]
+[[package]]
+name = "daachorse"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5614204febbc33cc07a2806aa6440b904ac012b68eecc37f4493ea4a76455a3d"
+
[[package]]
name = "darling"
version = "0.11.0"
@@ -1508,7 +1514,7 @@ dependencies = [
"libc",
"option-ext",
"redox_users",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -1690,7 +1696,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -2663,7 +2669,7 @@ dependencies = [
"js-sys",
"log",
"wasm-bindgen",
- "windows-core 0.58.0",
+ "windows-core 0.62.2",
]
[[package]]
@@ -3102,9 +3108,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libmimalloc-sys"
-version = "0.1.47"
+version = "0.1.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d1eacfa31c33ec25e873c136ba5669f00f9866d0688bea7be4d3f7e43067df6"
+checksum = "6a45a52f43e1c16f667ccfe4dd8c85b7f7c204fd5e3bf46c5b0db9a5c3c0b8e9"
dependencies = [
"cc",
]
@@ -3255,9 +3261,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.29"
+version = "0.4.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
+checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
[[package]]
name = "loop9"
@@ -3405,9 +3411,9 @@ dependencies = [
[[package]]
name = "memmap2"
-version = "0.9.10"
+version = "0.9.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
+checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0"
dependencies = [
"libc",
"stable_deref_trait",
@@ -3415,9 +3421,9 @@ dependencies = [
[[package]]
name = "mimalloc"
-version = "0.1.50"
+version = "0.1.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3627c4272df786b9260cabaa46aec1d59c93ede723d4c3ef646c503816b0640"
+checksum = "2d4139bb28d14ad1facf21d5eb8825051b326e172d216b39f6d31df53cc97862"
dependencies = [
"libmimalloc-sys",
]
@@ -3692,7 +3698,7 @@ dependencies = [
"half",
"hf-hub 0.4.3",
"lazy_static",
- "memmap2 0.9.10",
+ "memmap2 0.9.11",
"paste",
"rayon",
"regex",
@@ -3858,7 +3864,7 @@ version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -4269,7 +4275,7 @@ dependencies = [
"candle-transformers 0.10.2",
"hf-hub 0.5.0",
"image",
- "memmap2 0.9.10",
+ "memmap2 0.9.11",
"ort",
"pcai-media-model",
"pcai_core_lib",
@@ -4279,7 +4285,7 @@ dependencies = [
"serde_json",
"tempfile",
"thiserror 2.0.18",
- "tokenizers 0.22.2",
+ "tokenizers 0.23.2",
"tokio",
"tower-http",
"tracing",
@@ -4360,7 +4366,7 @@ dependencies = [
"ignore",
"libc",
"log",
- "memmap2 0.9.10",
+ "memmap2 0.9.11",
"num_cpus",
"nvml-wrapper",
"parking_lot",
@@ -4377,7 +4383,7 @@ dependencies = [
"thiserror 2.0.18",
"tokio",
"walkdir",
- "windows 0.58.0",
+ "windows 0.62.2",
"windows-sys 0.61.2",
"winreg",
]
@@ -4644,7 +4650,7 @@ dependencies = [
"byteorder",
"candle-core 0.9.2",
"candle-nn 0.9.2",
- "memmap2 0.9.10",
+ "memmap2 0.9.11",
"peft-rs",
"serde",
"serde_json",
@@ -4721,7 +4727,7 @@ dependencies = [
"once_cell",
"socket2",
"tracing",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -5226,7 +5232,7 @@ dependencies = [
"candle-transformers 0.9.2",
"clap",
"itertools 0.14.0",
- "memmap2 0.9.10",
+ "memmap2 0.9.11",
"mimalloc",
"rand 0.8.6",
"rust-functiongemma-core",
@@ -5300,7 +5306,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -5359,7 +5365,7 @@ dependencies = [
"security-framework 3.5.1",
"security-framework-sys",
"webpki-root-certs",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -6292,7 +6298,7 @@ dependencies = [
"getrandom 0.4.2",
"once_cell",
"rustix",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -6523,6 +6529,39 @@ dependencies = [
"esaxx-rs",
"fancy-regex 0.14.0",
"getrandom 0.3.4",
+ "itertools 0.14.0",
+ "log",
+ "macro_rules_attribute 0.2.2",
+ "monostate",
+ "onig",
+ "paste",
+ "rand 0.9.3",
+ "rayon",
+ "rayon-cond 0.4.0",
+ "regex",
+ "regex-syntax 0.8.8",
+ "serde",
+ "serde_json",
+ "spm_precompiled",
+ "thiserror 2.0.18",
+ "unicode-normalization-alignments",
+ "unicode-segmentation",
+ "unicode_categories",
+]
+
+[[package]]
+name = "tokenizers"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7afbf6e88718afcc138bad01d6ccc3051dbbc3b2ce9793d8b8a3aeb610969cfc"
+dependencies = [
+ "ahash",
+ "compact_str",
+ "daachorse",
+ "dary_heap",
+ "derive_builder 0.20.2",
+ "esaxx-rs",
+ "getrandom 0.3.4",
"indicatif 0.18.3",
"itertools 0.14.0",
"log",
@@ -6878,7 +6917,7 @@ dependencies = [
"gemm 0.18.2",
"half",
"libloading 0.8.9",
- "memmap2 0.9.10",
+ "memmap2 0.9.11",
"num",
"num-traits",
"num_cpus",
@@ -7411,7 +7450,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -7420,16 +7459,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-[[package]]
-name = "windows"
-version = "0.58.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
-dependencies = [
- "windows-core 0.58.0",
- "windows-targets 0.52.6",
-]
-
[[package]]
name = "windows"
version = "0.61.3"
@@ -7473,27 +7502,14 @@ dependencies = [
"windows-core 0.62.2",
]
-[[package]]
-name = "windows-core"
-version = "0.58.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
-dependencies = [
- "windows-implement 0.58.0",
- "windows-interface 0.58.0",
- "windows-result 0.2.0",
- "windows-strings 0.1.0",
- "windows-targets 0.52.6",
-]
-
[[package]]
name = "windows-core"
version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
dependencies = [
- "windows-implement 0.60.2",
- "windows-interface 0.59.3",
+ "windows-implement",
+ "windows-interface",
"windows-link 0.1.3",
"windows-result 0.3.4",
"windows-strings 0.4.2",
@@ -7505,8 +7521,8 @@ version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
dependencies = [
- "windows-implement 0.60.2",
- "windows-interface 0.59.3",
+ "windows-implement",
+ "windows-interface",
"windows-link 0.2.1",
"windows-result 0.4.1",
"windows-strings 0.5.1",
@@ -7534,17 +7550,6 @@ dependencies = [
"windows-threading 0.2.1",
]
-[[package]]
-name = "windows-implement"
-version = "0.58.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.114",
-]
-
[[package]]
name = "windows-implement"
version = "0.60.2"
@@ -7556,17 +7561,6 @@ dependencies = [
"syn 2.0.114",
]
-[[package]]
-name = "windows-interface"
-version = "0.58.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.114",
-]
-
[[package]]
name = "windows-interface"
version = "0.59.3"
@@ -7621,15 +7615,6 @@ dependencies = [
"windows-strings 0.5.1",
]
-[[package]]
-name = "windows-result"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
[[package]]
name = "windows-result"
version = "0.3.4"
@@ -7648,16 +7633,6 @@ dependencies = [
"windows-link 0.2.1",
]
-[[package]]
-name = "windows-strings"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
-dependencies = [
- "windows-result 0.2.0",
- "windows-targets 0.52.6",
-]
-
[[package]]
name = "windows-strings"
version = "0.4.2"
diff --git a/Native/pcai_core/pcai_core_lib/Cargo.toml b/Native/pcai_core/pcai_core_lib/Cargo.toml
index f5140d0f..487fd232 100644
--- a/Native/pcai_core/pcai_core_lib/Cargo.toml
+++ b/Native/pcai_core/pcai_core_lib/Cargo.toml
@@ -45,7 +45,7 @@ nvml = ["dep:nvml-wrapper"]
[target.'cfg(windows)'.dependencies]
winreg.workspace = true
-windows = { version = "0.58", features = [
+windows = { version = "0.62.2", features = [
"Win32_Foundation",
"Win32_System_SystemInformation",
"Win32_System_Performance",
diff --git a/Native/pcai_core/pcai_media/Cargo.toml b/Native/pcai_core/pcai_media/Cargo.toml
index 47e5a445..132695cc 100644
--- a/Native/pcai_core/pcai_media/Cargo.toml
+++ b/Native/pcai_core/pcai_media/Cargo.toml
@@ -24,7 +24,7 @@ candle-core = { version = "0.10" }
candle-nn = "0.10"
candle-transformers = "0.10"
safetensors = "0.7"
-tokenizers = "0.22"
+tokenizers = "0.23.2"
image = "0.25"
rand = "0.9"
# Disable ureq (sync HTTP client) to eliminate the ring crate dependency.