From 28c318905ee8274600c5730914daae87be1228ae Mon Sep 17 00:00:00 2001 From: Negative Star Innovators Date: Thu, 1 Oct 2026 13:15:15 +1300 Subject: [PATCH] docs: refresh READMEs for the Linux release; skip heavy Linux CI on docs-only PRs Root README: - platform-neutral intro/feature bullets (drop the WinUI 3 and Store/Velopack Windows-centric bullets) - Install section first, split into Windows/Linux subsections; fix the Linux update wording (GUI installs self-update in-app; only headless installs use `agentredactor update` + `systemctl --user restart`) - Repository layout: add linux/, website/, docs/; correct the core/ row; refresh tests/scripts/CI rows - fold Prerequisites into per-platform Building subsections and add the Linux build instructions - rewrite Tests for the cross-platform suites windows/README.md: license Proprietary -> MIT (points at ../LICENSE); fix self-release model path/endpoint (%LOCALAPPDATA%\AgentRedactor\models via the R2 models endpoint, per core/src/model_downloader.cpp); drop stale windows-app-openai references and the MSI claim (no MSI/WiX in any build script); add buildquick.ps1 note and the 53-language feature. linux/README.md: cross-link root README for end users; name the models endpoint URL; add MIT license section. build-linux.yml: add the docs-only `changes` gate used by build-msix.yml and release-selfrelease.yml so README-only PRs skip the full Linux pipeline while still reporting the per-arch build checks the branch ruleset requires. Manual dispatches always build. No code changes; no release impact. --- .github/workflows/build-linux.yml | 69 ++++++++++++- README.md | 163 ++++++++++++++++++++---------- linux/README.md | 12 ++- windows/README.md | 33 +++--- 4 files changed, 206 insertions(+), 71 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 3b2ae7d..f6f125d 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -7,6 +7,15 @@ name: Build Linux # release-selfrelease.yml: only tag pushes (v*) or manual dispatches with # publish checked upload to R2 (channels "linux" / "linux-arm64"); PRs get a # pack dry-run with the packages as artifacts. +# +# Docs-only changes (markdown, website/, docs/) skip the expensive +# build/test/pack steps via the `changes` gate job below (see RUN_BUILD in the +# build job) — the same pattern as build-msix.yml and release-selfrelease.yml. +# The gate is deliberately on the STEPS, not the job: a skipped matrix job +# reports a single "build" check, which does not satisfy the required per-arch +# checks ("build (x64)"/"build (arm64)") — a job whose steps all skip reports +# success under the real leg names. (Trigger-level paths-ignore is worse +# still: no check runs at all, so required checks block merging.) on: push: tags: ['v*'] @@ -28,7 +37,36 @@ permissions: contents: read jobs: + # Gate job: decides whether the diff contains anything but docs. Cheap + # (ubuntu, seconds); the build job below keys off its output. + changes: + runs-on: ubuntu-latest + outputs: + code: ${{ steps.diff.outputs.code }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - id: diff + shell: bash + run: | + if [ "${{ github.event_name }}" = "pull_request" ]; then + BASE="${{ github.event.pull_request.base.sha }}" + elif [ -n "${{ github.event.before }}" ] && [ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ]; then + BASE="${{ github.event.before }}" + else + # No parent to diff against (e.g. manual dispatch or first push) — build. + echo "code=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + if git diff --name-only "$BASE" HEAD | grep -qvE '\.md$|^website/|^docs/'; then + echo "code=true" >> "$GITHUB_OUTPUT" + else + echo "code=false" >> "$GITHUB_OUTPUT" + fi + build: + needs: changes strategy: # One arch failing must not cancel the other; publish only runs when # both succeed anyway (same pattern as release-selfrelease.yml). @@ -39,17 +77,24 @@ jobs: runs-on: ${{ matrix.arch == 'x64' && 'ubuntu-24.04' || 'ubuntu-24.04-arm' }} env: ONNXRUNTIME_DIR: ${{ github.workspace }}/onnxruntime + # Manual dispatches and code diffs always build; docs-only PRs skip the + # steps below (the job still reports success under the per-arch check + # names, keeping the branch ruleset satisfied). + RUN_BUILD: ${{ github.event_name == 'workflow_dispatch' || needs.changes.outputs.code == 'true' }} steps: - name: Checkout + if: env.RUN_BUILD == 'true' uses: actions/checkout@v4 - name: Resolve version from version.txt + if: env.RUN_BUILD == 'true' run: | version=$(tr -d '[:space:]' < windows/version.txt) echo "VERSION_FROM_VERSION_TXT=$version" >> "$GITHUB_ENV" echo "Building version $version" - name: Install build + test dependencies + if: env.RUN_BUILD == 'true' run: | sudo apt-get update sudo apt-get install -y build-essential cmake ninja-build pkg-config \ @@ -60,6 +105,7 @@ jobs: # onnxruntime has no apt package; official tarball per arch, same as # linux/README.md documents for local builds. - name: Download onnxruntime + if: env.RUN_BUILD == 'true' run: | mkdir -p "$ONNXRUNTIME_DIR" rid="${{ matrix.arch == 'x64' && 'x64' || 'aarch64' }}" @@ -67,11 +113,13 @@ jobs: | tar xz -C "$ONNXRUNTIME_DIR" --strip-components=1 - name: Set up Python + if: env.RUN_BUILD == 'true' uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install test dependencies + if: env.RUN_BUILD == 'true' run: pip install -r tests/requirements.txt # The engine refuses to serve (proxy ports stay closed) until the NER @@ -81,6 +129,7 @@ jobs: # the gitignored weights are downloaded, from the same R2 models # endpoint the app itself uses. Cached across runs. - name: Cache ONNX model weights + if: env.RUN_BUILD == 'true' id: model-cache uses: actions/cache@v4 with: @@ -88,7 +137,7 @@ jobs: key: onnx-model-ner-${{ runner.arch }}-v1 - name: Stage model files (cache miss only) - if: steps.model-cache.outputs.cache-hit != 'true' + if: env.RUN_BUILD == 'true' && steps.model-cache.outputs.cache-hit != 'true' run: | dest=~/.local/share/agentredactor/models mkdir -p "$dest/onnx" @@ -99,6 +148,7 @@ jobs: https://api.agentredactor.negativestarinnovators.com/models/model_quantized.onnx_data - name: Build (dev config, updater off) + if: env.RUN_BUILD == 'true' run: | cmake -S linux -B linux/build -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ @@ -110,12 +160,15 @@ jobs: # and tests/migration both ship a top-level conftest.py and a shared # module name breaks a combined run. - name: Run CLI tests + if: env.RUN_BUILD == 'true' run: python -m pytest tests/cli -q - name: Run migration tests + if: env.RUN_BUILD == 'true' run: python -m pytest tests/migration -q - name: Run Linux tests (offscreen GUI smoke) + if: env.RUN_BUILD == 'true' run: python -m pytest tests/linux -q -m "not atspi" # The AT-SPI suite (tests/linux/test_gui_atspi.py) drives the real GUI @@ -124,6 +177,7 @@ jobs: # for the a11y bus. The gi/Atspi bindings come from the distro packages # above; PYTHONPATH exposes them to the setup-python interpreter. - name: Run Linux GUI tests (AT-SPI, Xvfb) + if: env.RUN_BUILD == 'true' run: | PYTHONPATH=/usr/lib/python3/dist-packages \ dbus-run-session -- xvfb-run -a -s "-screen 0 1280x800x24" \ @@ -132,7 +186,7 @@ jobs: # On AT-SPI failures upload the per-test GUI logs and the accessibility # tree dumps the driver writes on lookup timeouts. - name: Upload AT-SPI failure diagnostics - if: failure() + if: env.RUN_BUILD == 'true' && failure() uses: actions/upload-artifact@v4 with: name: atspi-diagnostics-${{ matrix.arch }} @@ -144,6 +198,7 @@ jobs: retention-days: 14 - name: Set up .NET (for vpk) + if: env.RUN_BUILD == 'true' uses: actions/setup-dotnet@v4 with: dotnet-version: "8.0.x" @@ -151,17 +206,20 @@ jobs: # Pinned to the Velopack library version vendored by # linux/fetch-velopack.sh — keep the two in sync. - name: Install vpk 1.2.0 (Velopack CLI) + if: env.RUN_BUILD == 'true' run: dotnet tool install -g vpk --version 1.2.0 # build-release.sh derives the vpk runtime/channel from the host arch # (linux-x64/'linux', linux-arm64/'linux-arm64'). - name: Build and pack AppImage (build-release.sh) + if: env.RUN_BUILD == 'true' env: ONNXRUNTIME_INCLUDE_DIR: ${{ github.workspace }}/onnxruntime/include ONNXRUNTIME_LIB: ${{ github.workspace }}/onnxruntime/lib/libonnxruntime.so run: linux/build-release.sh - name: Verify Velopack output + if: env.RUN_BUILD == 'true' run: | dir=linux/build-release/velopack channel="${{ matrix.arch == 'x64' && 'linux' || 'linux-arm64' }}" @@ -176,6 +234,7 @@ jobs: # build time. The staged AppDir is the packed content, so checking it # covers the shipped AppImage. - name: Verify xcb platform plugin dependencies + if: env.RUN_BUILD == 'true' run: | plugin=linux/build-release/appdir/plugins/platforms/libqxcb.so test -f "$plugin" || { echo "xcb plugin missing from AppDir"; exit 1; } @@ -188,7 +247,7 @@ jobs: echo "xcb plugin dependencies OK" - name: Upload Velopack output artifact - if: always() + if: always() && env.RUN_BUILD == 'true' uses: actions/upload-artifact@v4 with: name: AgentRedactor-velopack-linux-${{ matrix.arch }} @@ -200,6 +259,7 @@ jobs: # Runs after packing since it consumes the pack output; skips locally # when vpk or the pack output is missing. - name: Run update E2E (AppImage self-update) + if: env.RUN_BUILD == 'true' run: python -m pytest tests/linux/test_update_feed.py -q # Grab the previous LIVE release's AppImage from R2 for the upgrade E2E. @@ -207,6 +267,7 @@ jobs: # build. Skipped gracefully when the channel has no live release yet, or # when the live version is not older than this build's version. - name: Download previous live AppImage from R2 + if: env.RUN_BUILD == 'true' id: prevappimage run: | channel="${{ matrix.arch == 'x64' && 'linux' || 'linux-arm64' }}" @@ -269,7 +330,7 @@ jobs: echo "appimage_path=$(pwd)/prev-appimage/$appimage" >> "$GITHUB_OUTPUT" - name: Upgrade E2E (previous live release -> this build) - if: steps.prevappimage.outputs.found == 'true' + if: env.RUN_BUILD == 'true' && steps.prevappimage.outputs.found == 'true' env: AGENTREDACTOR_UPGRADE_TEST: "1" AGENTREDACTOR_CHANNEL: ${{ matrix.arch == 'x64' && 'linux' || 'linux-arm64' }} diff --git a/README.md b/README.md index 6556b5b..ea2abee 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,23 @@ # Agent Redactor -A desktop app for Windows and Linux that sits between AI coding agents and -their LLM endpoints as a local proxy, redacting PII (names, emails, phone -numbers, secrets, and more) from outbound requests before they leave your -machine — and un-redacting the responses coming back. +A local privacy proxy for AI coding agents, with a desktop app on Windows and +Linux. It sits between your agents and their LLM endpoints, redacting PII +(names, emails, phone numbers, secrets, and more) from outbound requests +before they leave your machine — and un-redacting the responses coming back. -- Windows: WinUI 3 (C++/WinRT) desktop app, self-contained Windows App SDK -- Local HTTP proxy with on-device ONNX NER model — no cloud calls for detection +- Local HTTP proxy with an on-device ONNX NER model — no cloud calls for detection - Custom keyword and regex redaction rules on top of model-based PII detection +- Works with any agent that can point at a local proxy — Claude Code, Codex, OpenClaw, OpenCode, Hermes (guides below) - Localized UI in 53 languages -- Distributed via the Microsoft Store (Windows MSIX) and a self-release channel - (Velopack, with built-in auto-updates) for Windows and Linux +- Per-user install — no admin or root required; on headless Linux the installer sets up a systemd user service +- Auto-updates via the Microsoft Store or the built-in Velopack updater **Website:** -## Documentation - -Step-by-step integration guides for the supported AI coding agents are on the -website: - -- [Claude Code](https://agentredactor.negativestarinnovators.com/claude-code.html) -- [Codex](https://agentredactor.negativestarinnovators.com/codex.html) -- [OpenClaw](https://agentredactor.negativestarinnovators.com/openclaw.html) -- [OpenCode](https://agentredactor.negativestarinnovators.com/opencode.html) -- [Hermes](https://agentredactor.negativestarinnovators.com/hermes.html) - ## Install +### Windows + **Microsoft Store** (x64 and ARM64; updates via the Store): @@ -36,41 +27,67 @@ website: iex "& { $(irm https://api.agentredactor.negativestarinnovators.com/install.ps1) }" ``` -The installer picks the native build for your architecture (falling back to the -x64 build on ARM64 if no native package is published yet) and installs per-user -under `%LOCALAPPDATA%\AgentRedactor`. Self-release builds are unsigned for now — -Windows SmartScreen may warn on first run. +The installer picks the native build for your architecture (falling back to +the x64 build on ARM64 if no native package is published yet) and installs +per-user under `%LOCALAPPDATA%\AgentRedactor`. Self-release builds are +unsigned for now — Windows SmartScreen may warn on first run. + +### Linux -**Linux** (x64 and ARM64; per-user AppImage install). Run in a terminal: +(x64 and ARM64; per-user AppImage install). Run in a terminal: ```bash curl -fsSL https://api.agentredactor.negativestarinnovators.com/install.sh | bash ``` -The installer detects your architecture, places the AppImage in -`~/Applications`, and symlinks the `agentredactor` CLI into `~/.local/bin`. -With a display it starts the GUI; on a headless machine it instead installs a -systemd user service (starts at boot), downloads the AI model, and confirms -with `agentredactor status`. Works under WSL as well (GUI via WSLg, headless -otherwise). Remove with `agentredactor uninstall`. +The installer detects your architecture and: + +- places the AppImage in `~/Applications` and symlinks the `agentredactor` CLI into `~/.local/bin` +- with a display, starts the GUI; on a headless machine it instead installs a + systemd user service (starts at boot, survives logout), downloads the AI + model, and confirms with `agentredactor status` +- works under WSL as well (GUI via WSLg, headless otherwise) -Linux has no automatic update prompt: `agentredactor status` reports when a -newer release exists, then run `agentredactor update` and restart to apply -(`systemctl --user restart agentredactor` on headless installs). +Remove with `agentredactor uninstall`. + +**Updates.** Linux GUI installs self-update in-app, like Windows: the app +checks at startup and offers "Restart now / later" once an update is +downloaded (Settings also has a "Check for updates" button). Headless installs +have no GUI prompt — `agentredactor status` reports when a newer release +exists, then run `agentredactor update` and +`systemctl --user restart agentredactor` to apply. + +## Documentation + +Step-by-step integration guides for the supported AI coding agents are on the +website: + +- [Claude Code](https://agentredactor.negativestarinnovators.com/claude-code.html) +- [Codex](https://agentredactor.negativestarinnovators.com/codex.html) +- [OpenClaw](https://agentredactor.negativestarinnovators.com/openclaw.html) +- [OpenCode](https://agentredactor.negativestarinnovators.com/opencode.html) +- [Hermes](https://agentredactor.negativestarinnovators.com/hermes.html) ## Repository layout | Path | Contents | |---|---| -| `windows/` | The WinUI 3 app (C++), build scripts, models, resources | -| `core/` | OS-agnostic C++ core (HTTP proxy, ONNX NER, regex/redaction engines) shared by all platform frontends; CMake scaffolding, currently built via the Windows project | -| `cloudflare/` | The Cloudflare worker + R2 behind the self-release channel (`/install.ps1`, `/updates`, `/models`) | -| `tests/` | GUI end-to-end tests (FlaUI + pytest + mock LLM) and self-release install/upgrade E2E | +| `windows/` | The Windows app (WinUI 3, C++/WinRT), build scripts, models, resources, MSIX packaging | +| `linux/` | The Linux app (Qt 6 GUI plus engine/CLI build), AppImage packaging, systemd user unit | +| `core/` | OS-agnostic C++ core (HTTP proxy, ONNX NER, regex/redaction engines, CLI) shared by the platform frontends; built by both the Windows and Linux projects | +| `cloudflare/` | The Cloudflare worker + R2 behind the self-release channel (`/install.ps1`, `/install.sh`, `/updates`, `/models`) | +| `website/` | The website with the agent integration guides, translated into every supported language | +| `docs/` | Design and spec documents (Linux implementation spec, port plan) | +| `tests/` | pytest suites: cross-platform `cli/` and `migration/`, Linux GUI tests in `linux/` (AT-SPI), Windows GUI end-to-end tests in `gui/` (FlaUI + mock LLM), self-release install/upgrade E2E | | `third_party_tests/` | Integration tests driving real third-party agent CLIs through the proxy | -| `scripts/` | PowerShell helpers that configure third-party clients for the integration tests | -| `.github/workflows/` | CI: MSIX build + package tests, self-release (Velopack) build/test/publish, worker deploy | +| `scripts/` | Build/release helpers and scripts that configure third-party clients for the integration tests | +| `.github/workflows/` | CI: MSIX build + package tests, self-release (Velopack) build/test/publish for Windows and Linux, worker deploy | + +## Building -## Prerequisites +### Windows + +Prerequisites: - Windows 10/11, x64 or ARM64 - Visual Studio 2022 (or Build Tools) with the *Desktop development with C++* workload @@ -87,8 +104,6 @@ newer release exists, then run `agentredactor update` and restart to apply [Releases](https://github.com/Negative-Star-Innovators/AgentRedactor/releases) page and place it in `windows\models\onnx\`. -## Building - Quick build for local development (EXE only, no packaging): ```powershell @@ -121,23 +136,67 @@ cd windows ``` Releases are published by pushing a `v*` tag — the Self-Release workflow builds, -tests and uploads both channels to R2 (see `cloudflare/README.md`). +tests and uploads both Windows channels to R2 (see `cloudflare/README.md`). + +### Linux + +Prerequisites (Ubuntu 24.04): + +```bash +sudo apt install -y build-essential cmake ninja-build pkg-config \ + libsecret-1-dev libcurl4-openssl-dev libssl-dev nlohmann-json3-dev \ + qt6-base-dev qt6-l10n-tools libgl1-mesa-dev patchelf + +# onnxruntime is not packaged in apt; use the official x64 tarball +# (developed/tested against 1.29.0; on ARM64 use the aarch64 tarball): +mkdir -p ~/onnxruntime +curl -sL https://github.com/microsoft/onnxruntime/releases/download/v1.29.0/onnxruntime-linux-x64-1.29.0.tgz \ + | tar xz -C ~/onnxruntime --strip-components=1 +``` + +The engine also needs the NER model files: `config.json`, `tokenizer.json`, +`viterbi_calibration.json` and `onnx/model_quantized.onnx` live in +`windows/models/`; the ~1.6 GB `onnx/model_quantized.onnx_data` weights are +downloaded automatically on first run. + +Build the GUI and engine/CLI: + +```bash +cd linux +cmake -B build -G Ninja \ + -DONNXRUNTIME_INCLUDE_DIR=~/onnxruntime/include \ + -DONNXRUNTIME_LIB=~/onnxruntime/lib/libonnxruntime.so +cmake --build build +``` + +Release packaging (Velopack AppImage, produced under +`linux/build-release/velopack/`) is `linux/build-release.sh` — it needs the +.NET SDK and the pinned `vpk` tool. See `linux/README.md` for packaging, +publishing and running the AppImage. Linux releases publish the same way as +Windows: push a `v*` tag and the Build Linux workflow builds, tests and +uploads both channels to R2. ## Tests -See `tests/README.md` and `third_party_tests/README.md`. In short: +The suites live in `tests/` (see `tests/README.md`) and `third_party_tests/` +(see `third_party_tests/README.md`). The cross-platform suites (`cli/`, +`migration/`) and the Linux suite (`linux/`) run in CI on every PR; the +`linux/` AT-SPI GUI tests need a display (CI runs them under Xvfb + D-Bus — +see `linux/README.md`): -```powershell +```bash cd tests -pip install -r requirements.txt -pytest -v gui/ +python -m pytest cli -q +python -m pytest migration -q +python -m pytest linux -q ``` -The tests drive the real application UI (FlaUI) and therefore require an -interactive Windows desktop session — in CI they run on GitHub-hosted runners -(`windows-latest` and `windows-11-arm`, which provide one) via the -workflow-dispatch **Tests** workflow, or locally on any Windows desktop. -Third-party integration tests additionally need an +The Windows GUI end-to-end tests in `tests/gui/` drive the real application UI +(FlaUI) and therefore require an interactive Windows desktop session — in CI +they run on GitHub-hosted runners (`windows-latest` and `windows-11-arm`, +which provide one) via the workflow-dispatch **Tests** workflow, or locally on +any Windows desktop. The dispatched Tests workflow also runs the CLI suite on +Windows. Third-party integration tests additionally need an OpenRouter API key (copy `third_party_tests\.env.example` to `.env`). ## License diff --git a/linux/README.md b/linux/README.md index 7976c66..e7457b1 100644 --- a/linux/README.md +++ b/linux/README.md @@ -1,5 +1,9 @@ # Agent Redactor — Linux build +For installing and *using* Agent Redactor (end users), see the +[root README](../README.md) — this document covers building and developing +on Linux. + Build the engine/CLI (`agentredactor`) and the Qt GUI (`agentredactor-gui`) on Linux: @@ -24,8 +28,8 @@ cmake --build build The engine also needs the NER model files. `config.json`, `tokenizer.json`, `viterbi_calibration.json` and `onnx/model_quantized.onnx` live in `windows/models/`; the ~1.6 GB `onnx/model_quantized.onnx_data` weights are -downloaded automatically on first run (or grab them from the models endpoint -used by the Windows CI). +downloaded automatically on first run (or grab them directly from +). Run the tests from the repo root (one pytest process per suite — the suites share the `conftest` module name and cannot be collected together): @@ -199,3 +203,7 @@ Test hooks (self-release builds only, same contract as Windows): - `tests/linux/test_update_from_live.py` — downloads the previous live AppImage from R2 and asserts it upgrades to the just-built release. Wired into the `build-linux.yml` workflow. + +## License + +MIT — see [LICENSE](../LICENSE). diff --git a/windows/README.md b/windows/README.md index 7e5ecba..5fc2ace 100644 --- a/windows/README.md +++ b/windows/README.md @@ -22,6 +22,7 @@ A native Windows C++ desktop application that acts as an intelligent HTTP proxy - **System Tray**: Runs minimized in the system tray; auto-start with Windows. - **Native Win32 GUI**: No WebView2 — pure native C++ with RichEdit colored logs. - **Stats & Logs**: Per-profile statistics and colored logs (blue = user→proxy, green = proxy→LLM, orange = LLM→proxy, purple = proxy→user). +- **Localized UI**: The app is translated into 53 languages (the shared list lives in `../core/include/constants.h`). - **Two distribution channels**: Microsoft Store MSIX, and a self-updating Velopack self-release channel (`version.txt` is the version source of truth). ## Project Structure @@ -31,7 +32,7 @@ windows/ ├── src/ # C++ source files ├── include/ # C++ headers ├── resources/ # Icons, manifest, RC file -├── models/ # OpenAI Privacy Filter ONNX model (copied from parent project) +├── models/ # ONNX NER model files (the ~1.6 GB weights are downloaded separately — see Build Instructions) ├── CMakeLists.txt # CMake build config ├── vcpkg.json # vcpkg dependencies ├── Package.appxmanifest # MSIX manifest @@ -46,10 +47,11 @@ windows/ ONNX weights inside the package and contains no self-update code. - **Self-release (Velopack)** — built with `.\build-selfrelease.ps1` (x64). The installer is produced by `vpk pack` into `build\velopack\`; the large - model weights are downloaded on first run from the `models-v1` GitHub - release into `%LOCALAPPDATA%\windows\models`, and app updates are - delivered from `api.agentredactor.negativestarinnovators.com` via the - bundled Velopack `Update.exe`. The version comes from `version.txt`. + model weights are downloaded on first run from + `api.agentredactor.negativestarinnovators.com/models` into + `%LOCALAPPDATA%\AgentRedactor\models`, and app updates are + delivered from the same host via the bundled Velopack `Update.exe`. The + version comes from `version.txt`. ## Build Requirements @@ -57,7 +59,7 @@ windows/ - Visual Studio 2022 with C++ workload - CMake 3.20+ - vcpkg (integrated with CMake) -- ONNX Runtime model files (from `windows-app-openai/models`) +- The ONNX model weights in `models\onnx\` (~1.6 GB — downloaded in step 1) ## Dependencies (vcpkg) @@ -72,11 +74,11 @@ windows/ ### 1. Ensure model files are present -Copy or symlink the ONNX model from the existing project: - -```powershell -Copy-Item -Recurse ..\windows-app-openai\models .\windows\models -``` +The repo ships everything under `models\` except the ~1.6 GB +`models\onnx\model_quantized.onnx_data` weights. Download them from the +[Releases](https://github.com/Negative-Star-Innovators/AgentRedactor/releases) +page (or `https://api.agentredactor.negativestarinnovators.com/models/model_quantized.onnx_data`) +and place the file in `models\onnx\`. ### 2. Configure with CMake @@ -92,7 +94,12 @@ cmake .. -DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake cmake --build . --config Release ``` -### 4. Package (MSI + MSIX) +For a quick local development build (EXE only, no packaging), run +`.\buildquick.ps1` from the `windows` folder. + +### 4. Package (MSIX) + +From the `windows` folder: ```powershell .\build.ps1 @@ -150,4 +157,4 @@ For each incoming response: ## License -Proprietary — Agent Redactor Project. +MIT — see [LICENSE](../LICENSE).