diff --git a/docs/docs.json b/docs/docs.json index eb95ac2a9..3e9dcf01e 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -494,6 +494,7 @@ "group": "Release Notes", "pages": [ "releases/index", + "releases/v0.23.0", "releases/v0.22.0", "releases/v0.21.2", "releases/v0.21.1", @@ -553,7 +554,7 @@ "navbar": { "links": [ { - "label": "v0.22.0 \u00b7 Lemonade 10.10.0", + "label": "v0.23.0 \u00b7 Lemonade 11.0.0", "href": "https://github.com/amd/gaia/releases" }, { diff --git a/docs/releases/v0.23.0.mdx b/docs/releases/v0.23.0.mdx new file mode 100644 index 000000000..616857312 --- /dev/null +++ b/docs/releases/v0.23.0.mdx @@ -0,0 +1,221 @@ +--- +title: "v0.23.0" +description: "The Agent UI gets in-app install, auto-update, and a first-run wizard so a new user never touches a terminal; the email agent gains a full-autonomy engine that files low-signal mail on its own while always confirming anything destructive; and every agent runs as its own daemon-supervised process instead of living inside the UI." +--- + +# GAIA v0.23.0 Release Notes + +GAIA v0.23.0 is a large release built around making the Agent UI a real application instead of a developer tool with a browser front end. It can now install and update itself, walk a new user through hardware checks and model download on first launch, and run every agent as an isolated process supervised by a background daemon instead of code loaded into the UI. The email agent grows a full-autonomy mode that decides what to handle silently and what to ask about, and Outlook support extends to work and school accounts with a zero-setup sign-in flow. Underneath, every agent now shares one model and one context size so switching between them is instant, Lemonade Server moves to 11.0.0, and a dedicated security-audit pipeline replaces a general weekly pass with deterministic scanning plus reasoning over CWE-specific classes. + +**Why upgrade:** +- **Install agents from inside the app** — the Agent UI's Hub install now actually works (a real backend install, not the old "not yet implemented" stub), verified end to end. +- **The email agent can run your inbox for you (beta)** — turn on autonomy and it files low-signal mail on its own, always asks before anything destructive, and pulls back the moment you correct it. +- **Agents run as their own processes** — each agent is a daemon-supervised sidecar instead of code living inside the Agent UI, so a running agent (a long chat or an in-flight job) survives closing the window. +- **Agents share one model** — every agent now resolves to the same model and context size, so switching between them no longer forces Lemonade to unload and reload a different model. + + +**Email autonomy is beta.** It only auto-executes reversible actions, each with undo, and the confirmation floor for anything destructive (send, forward, permanent delete, RSVP, quarantine) never relaxes — not even for a fully-trusted sender. It's genuinely useful, but it's new this release: watch what it does for the first few days rather than trusting it blind, and report anything that looks wrong. **Platform this release:** the email agent installs and runs on **Linux**; the **Windows** binary isn't available yet (#1648). Autonomy is turned on and inspected through the API/CLI — there's no Agent-UI control for it yet. + + + +**This release moves a lot of the platform onto a new foundation.** Agents now run under an always-on `gaia` daemon, and the desktop app installs and updates itself in place. Both are built and tested, but this is the first release they ship in and they're still settling — so if a sidecar gets stuck or an in-app update doesn't apply cleanly, restarting the daemon (`gaia daemon stop`) or reinstalling the app are the fallbacks. Please report anything that looks off. + + +--- + +## Breaking Changes + +### Closing the Agent UI no longer stops the email agent + +Sidecar agents (currently email) are now supervised by the always-on `gaia` daemon, not the Agent UI backend process. Before, closing the UI killed the email sidecar along with it. Now the sidecar keeps running — so an in-flight job or a long chat survives the window closing — and you stop it explicitly: `gaia daemon stop-agent email` or `gaia daemon stop` (PR [#2144](https://github.com/amd/gaia/pull/2144)). + +### Hub agent packages moved to an agent-first layout + +Hub packages used to be split by language first — `hub/agents/python/email/` and `hub/agents/npm/agent-email/` for the same agent. They're now grouped by agent first: `hub/agents//{python,npm}/` (e.g. `hub/agents/email/python/`, `hub/agents/email/npm/`). The published wheel name (`gaia-agent-email`) and npm package name (`@amd-gaia/agent-email`) are unchanged — only the on-disk source paths moved. If you have local scripts, forks, or docs referencing the old `hub/agents/python//` or `hub/agents/npm//` paths, update them to `hub/agents///` (PR [#2060](https://github.com/amd/gaia/pull/2060)). `gaia agent init --layout hub` was added afterward so scaffolding a new agent produces the correct layout in one command (PR [#2295](https://github.com/amd/gaia/pull/2295)). + +--- + +## What's New + +### Install agents from the Hub — Agent UI + +Clicking install on a Hub agent used to hit an IPC handler that threw "not yet implemented"; now it drives the real backend install runtime with streaming progress, so importing an agent from the Hub actually works — verified end to end (install → a real binary on disk → it runs) (PR [#2196](https://github.com/amd/gaia/pull/2196)). The in-app Hub is also reorganized into Apps, Components, and Agents lanes (PR [#2201](https://github.com/amd/gaia/pull/2201)). + +--- + +### The email agent can decide for itself — full autonomy (beta) + +Until now the email agent only ever acted when you asked it to. Turn on autonomy and it triages and files low-signal mail on its own, and it learns from your corrections — correct it once and it's back to asking for that sender immediately. (The complementary direction — growing quieter as a sender earns trust — is scaffolded in this release but not yet active.) It never silently sends, forwards, permanently deletes, quarantines, or RSVPs; those always wait for your confirmation regardless of how much trust a sender has earned. Every auto-executed action is reversible and comes with undo (PR [#2363](https://github.com/amd/gaia/pull/2363)): + +``` +POST /v1/email/agent/autonomy {"level": "earn_trust"} # "off" is the kill switch +GET /v1/email/agent/autonomy/{id} # inspect earned trust +``` + +--- + +### Agents run as isolated, daemon-supervised processes + +Agents used to run as code loaded directly into whatever hosted them — the email agent's sidecar lived and died with the Agent UI backend, and every future agent would have needed to reinvent that lifecycle plumbing. Now the always-on `gaia` daemon owns agent supervision: the UI, `gaia email` on the CLI, and `gaia api` are all thin clients of the same daemon-managed sidecar, so they share one running instance instead of each spawning their own. A killed daemon reaps its orphaned sidecars on the next start instead of leaking processes (PR [#2144](https://github.com/amd/gaia/pull/2144)). + +Behind that one architectural move: `gaia email` and `gaia api` now both relay through the daemon instead of running the email agent in-process (PRs [#2191](https://github.com/amd/gaia/pull/2191), [#2205](https://github.com/amd/gaia/pull/2205)), chat streams over a proper SSE reverse proxy (PR [#2188](https://github.com/amd/gaia/pull/2188)), a per-agent-scoped custody API keeps one agent from ever reading another's memory or sessions (PR [#2197](https://github.com/amd/gaia/pull/2197)), OAuth tokens forward from the daemon to a sidecar as short-lived access tokens rather than the sidecar holding your refresh token (PR [#2203](https://github.com/amd/gaia/pull/2203)), and existing `~/.gaia` sessions and memory migrate into the new layout automatically, once, without data loss (PR [#2200](https://github.com/amd/gaia/pull/2200)). + +--- + +### Every agent shares one model + +Agents that left their model unset used to default to a different model than chat and email, so moving between agents forced Lemonade to unload and cold-reload the model. Every agent now resolves to Gemma-4-E4B at one context size per device profile, so the resident model is reused across a switch instead of reloaded (PR [#2284](https://github.com/amd/gaia/pull/2284)). + +--- + +### Lemonade Server 11.0.0 + +The pinned Lemonade Server moves 10.10.0 → 11.0.0 (PR [#2130](https://github.com/amd/gaia/pull/2130)). This doesn't move existing installs — a machine already on a 10.x that clears every profile's minimum is left alone — but it fixes a version-check bug found while crossing the major boundary: GAIA compared Lemonade's major version for equality, so every 10.x install was about to start seeing a false "version mismatch" warning on every run, the exact opposite of what `gaia init` reported. The check is now a floor (10.2.0), not an equality check, so a newer server is never flagged as wrong. + +--- + +## Bug Fixes + +- **Bulk `gaia agent init` scaffolding put files in the wrong place after the hub layout move** (PR [#2295](https://github.com/amd/gaia/pull/2295)) — `--output` had no way to produce the new agent-first layout, and could even set the agent's id to the literal string `"python"`. +- **Lemonade device validation didn't recognize grouped GPU device keys** (PR [#2368](https://github.com/amd/gaia/pull/2368)) — `amd_gpu`/`nvidia_gpu` now returning as lists broke hardware capability checks. +- **A missing hub-installed agent binary produced a confusing error** (PR [#2357](https://github.com/amd/gaia/pull/2357)) — the message now names what's missing and how to fix it instead of a generic failure. +- **`gaia init` output ate bracketed text** (PR [#2340](https://github.com/amd/gaia/pull/2340)) — Rich markup parsing swallowed tokens like `[some-model]` from status lines instead of printing them. +- **Unknown-language routing killed the process** (PR [#2337](https://github.com/amd/gaia/pull/2337)) — an unrecognized language now defaults to TypeScript instead of crashing. +- **GPU wasn't detected on every platform** (PR [#2244](https://github.com/amd/gaia/pull/2244), [#2285](https://github.com/amd/gaia/pull/2285)) — detection now reads Lemonade's real payload shape and honors `default_device` everywhere. +- **The builder agent returned a generic error for a missing model** (PR [#2245](https://github.com/amd/gaia/pull/2245)) — a 404 from Lemonade now surfaces as a specific "model not found," not boilerplate. +- **The Agent UI blamed Lemonade for turns the user cancelled** (PR [#2141](https://github.com/amd/gaia/pull/2141)) — a cancelled or empty turn is no longer reported as a backend failure. +- **Stop didn't actually stop generation** (PR [#2166](https://github.com/amd/gaia/pull/2166)) — clicking Stop now aborts the in-flight streaming turn instead of leaving it running in the background. +- **Outlook inbox pre-scan failed with more than one mailbox connected** (PR [#2129](https://github.com/amd/gaia/pull/2129)) — pre-scan now consolidates across every connected mailbox instead of erroring. +- **REST triage ignored the model's own spam verdict** (PR [#2125](https://github.com/amd/gaia/pull/2125)) — the endpoint now honors what the LLM actually decided instead of a narrow sender-based check. +- **Outlook thread fetches could fail with a Graph API error** (PR [#2140](https://github.com/amd/gaia/pull/2140)) — an unnecessary `$orderby` triggered Microsoft Graph's `InefficientFilter` rejection on some threads. +- **Calendar listing without an explicit date range returned nothing useful** (PR [#2168](https://github.com/amd/gaia/pull/2168)) — it now defaults to a forward-looking window. +- **Explicitly targeting an unconnected mailbox silently used a different one** (PR [#2172](https://github.com/amd/gaia/pull/2172)) — it now errors instead of substituting. +- **A model-load failure could fail silently** (PR [#2185](https://github.com/amd/gaia/pull/2185)) — `_ensure_model_loaded` now raises loudly instead of swallowing the error. +- **The `amd-gaia[agents]` extra could downgrade the core wheel** (PR [#2262](https://github.com/amd/gaia/pull/2262)) — pip's resolver could pull in an older core package than the one already installed. +- **Security: the MCP bridge bound to all interfaces** (PR [#2246](https://github.com/amd/gaia/pull/2246)) — it now binds to loopback only. +- **Security: the API allowed a wildcard CORS origin with credentials** (PR [#2238](https://github.com/amd/gaia/pull/2238)) — that combination is now rejected. +- **Security: SQL wasn't parameterized and some logs leaked sensitive values** (PR [#2239](https://github.com/amd/gaia/pull/2239)) — SQL is parameterized and those values are redacted. +- **Security suppressions are now review-gated** (PR [#2343](https://github.com/amd/gaia/pull/2343)) — a reviewed allowlist replaces silently-accepted suppressions. + +--- + +## Contributors + +Thanks to the community member who contributed to this release: + +- [@alexey-tyurin](https://github.com/alexey-tyurin) — adaptive, review-gated onboarding conversation for agent memory (PR [#2143](https://github.com/amd/gaia/pull/2143)) + +--- + +## Full Changelog + +**106 commits** since v0.22.0: + +- `5f624706` — fix(hub): importable CLI wheel agents + chat distribution via gaia init (#2373) +- `3ad39e60` — fix(sidecar): actionable user-mode binary error (#2347) (#2357) +- `bfc0f5b8` — fix(lemonade): recognize grouped amd_gpu/nvidia_gpu device keys in validation (#2368) +- `0553c8b0` — feat(email): full autonomy — earn-trust engine, learning loop, scheduled driver (#2363) +- `0284300b` — feat(connectors): support work/school Outlook + zero-setup device-code sign-in (#2364) +- `1aaba5cc` — feat(lint): require security suppressions to be reviewed in an allowlist (#2343) +- `19b1a4c5` — test(daemon): de-flake sidecar stop test on the pid-liveness check (#2349) +- `174e9d0c` — refactor(chat): extract ProfileSpec, honest manifest, lazy RAG — one class → separable profiles (#2323) (#2362) +- `57f970b0` — chore(audit): drop the security dimension from the weekly audit (#2348) +- `23181040` — feat(security): proactive Claude security-audit workflow + CVSS/SARIF tooling (#2346) +- `d605caec` — fix(security): enforce --allowed-paths sandbox on file read tools (#2344) +- `1c8a91c9` — fix(security): remove pre-existing bandit HIGH findings and enable the HIGH gate (#2350) +- `4b5c16b7` — ci(labeler): add tui/daemon/sidecar auto-label rules (#2356) +- `a905b057` — chore(deps): bump the github-actions group with 2 updates (#2341) +- `b3f793af` — fix(routing): default unknown language to TypeScript, not a process kill (#2337) +- `48286dbd` — fix(init): stop Rich eating bracketed tokens in gaia init output (#2340) +- `638a7643` — docs(skills): add porting-agent-to-hub — the legacy-agent port flow (#2338) +- `d2c00b55` — fix(hub): harden agent-archive extraction against path traversal (#2342) +- `a4417656` — fix(ci): repair the startup-failing GAIA CLI aggregate workflow (#2307) +- `0835a250` — fix(ci): make the weekly eval and runner heartbeat monitor actually run (#2306) +- `977c158f` — fix(cli): add --layout hub to gaia agent init for the agent-first hub tree (#2295) +- `558a73e6` — chore(deps): bump the github-actions group with 3 updates (#2294) +- `f8bff000` — chore(deps-dev): bump electron from 43.1.0 to 43.1.1 in the root-npm-dependencies group (#2292) +- `fb179e32` — ci(eval): gate the Gemma-4-E4B consolidation on agent evals (#2283) +- `6b2aa2db` — chore(deps-dev): bump electron from 43.1.0 to 43.1.1 in /src/gaia/apps/jira/webui in the jira-app-dependencies group (#2291) +- `5837bdac` — chore(deps-dev): bump electron from 43.1.0 to 43.1.1 in /src/gaia/apps/example/webui in the example-app-dependencies group (#2290) +- `3ce4f790` — test(agents): stub live Lemonade probe in context-overflow tests (#2288) +- `1886a92f` — chore(deps): bump electron from 43.1.0 to 43.1.1 in /hub/agents/emr/python/gaia_agent_emr/dashboard/electron in the emr-dashboard-dependencies group (#2289) +- `0a308449` — feat(agents): consolidate every agent onto Gemma-4-E4B at one context size (#2284) +- `4392e06a` — chore(deps-dev): bump the agent-ui-dependencies group in /src/gaia/apps/webui with 3 updates (#2293) +- `d9b11ec7` — refactor(hub): agent-first layout — hub/agents/\/\ (#2060) +- `5f15b333` — feat(daemon): broker-wire the remaining direct model-load surfaces (#2286) +- `3affe149` — fix(ui): detect GPU from real Lemonade payload shapes (#2285) +- `4f888b78` — fix(hub): report file-based custom agents' real health, not always 'error' (#2277) +- `36c29873` — fix(cli): detect GPU on all platforms and honour default_device (#2244) +- `6c6f8a34` — test(audit): coverage for schedule CLI, perf-vis, VLM extraction, PDF gen/export; fix silent table-row loss (#2259) +- `2425afe8` — fix(builder): surface model-not-found (404) instead of a generic placeholder (#2245) +- `3a0eebe7` — ci(hub): wire nine hub package test suites into CI; fix .cjs docs-link guard gap (#2258) +- `3e82ca61` — docs(connectors): correct the client_id_hash claim in the OAuth runbook (#2264) +- `9f7dca84` — fix(ci): fix Lemonade startup and bash-on-PATH in the doc walkthrough (#2281) +- `53f4b529` — fix(daemon): owner-only DACL for the Windows launch secret (#2250) (#2282) +- `ee8825fa` — fix(security): require allowed_dir in compute_file_hash (#2280) +- `46fb7687` — spec(factory): define the dogfooding loop — Claudia as live validation runtime (#2234) +- `1a679f02` — feat(ui): always-available OAuth client field in Settings (#2104 interim) (#2265) +- `45c796b1` — test(jira): unit tests for JiraAgent HTTP boundary and config discovery (#1991) (#2263) +- `bed702eb` — feat(ci): execution-based weekly doc walkthrough (#2278) +- `f8f309e6` — fix(ui): stop silently accepting unimplemented agent_mode 'autonomous' (#2257) +- `3b0938ed` — fix(ci): weekly audit cross-links the prior parent instead of auto-closing it (#2254) +- `78306480` — test(audit): risk-bearing coverage — jira, trust-gate, flag-precedence, #1655 boundaries (#2253) +- `1aa39ca2` — fix(observability): real system-metrics polling + real rollbackAction (#2251) +- `384b3ca8` — fix(security): bind MCP bridge to loopback, not all interfaces (#2246) +- `037f4370` — fix(cli): implement/gate stubbed api-status, eval flags, schedule --skill (#2247) +- `2b6ed53e` — fix(security): rate-limit exposed routes, harden JS ReDoS/XSS/cleartext-logging (#2237) +- `6c6b3baf` — fix(packaging): stop the amd-gaia[agents] extra from downgrading the core wheel (#2262) +- `8744a51a` — fix(security): validate user-influenced file paths (py/path-injection) (#2252) +- `c921fa7b` — feat(email): quality + robustness batch (#2110/#2113/#2114/#2115/#2116) (#2192) +- `b9391ec2` — fix(security): parameterize SQL, redact sensitive logs, harden ReDoS regexes (#2239) +- `09e0bac4` — fix(security): stop leaking stack traces at API boundaries + least-privilege workflow permissions (#2236) +- `3df5a3db` — fix(security): tighten API CORS — no wildcard origin with credentials (#2238) +- `a3db04ef` — feat(connectors): OAuth forward-out to sidecars (V2-14) (#2203) +- `e0886cbf` — refactor(daemon): reconcile the clocks into one daemon-owned scheduler (V2-15) (#2199) +- `15459153` — feat(daemon): /host/v1 custody API v1 with per-agent scoping (V2-12) (#2197) +- `e226d584` — feat(webui): group session sidebar by agent + session-state polish (#2193) +- `6e48cb22` — feat(daemon): host-owned model-slot broker serializes loads (V2-11) (#2194) +- `c42bb354` — fix(website): correct hub install command and clarify agent availability (#2207) +- `2f18de85` — fix(tests): align email CLI dispatch test with #2191 thin-client contract (#2209) +- `a2ad4eff` — fix(tests): repair stale gaia.ui.email_sidecar.manager import after #2144 (#2208) +- `2b89643c` — fix(webui): repair broken main — AgentHubView imported deleted AgentHubGrid (#2206) +- `68773d46` — test(eval): sidecar eval harness + distributed-seams suite (V2-19) (#2202) +- `d7cffc72` — feat(agent-ui): first-run onboarding wizard — hardware pre-flight, in-app model download, connect-on-install (#2204) +- `5bc7d325` — feat(electron): in-app install, R2 auto-update feed, gaia:// deep links (#2196) +- `eb6b34bf` — feat(daemon): one-time versioned migration of ~/.gaia state (V2-13) (#2200) +- `73b8f98c` — refactor(api): remove the last in-process email mount; relay via daemon (#2176) (#2205) +- `e4ea0e33` — feat(connectors): grant the mailbox to the email agent in the same connect flow (#2195) +- `2bf405db` — feat(webui): in-app Hub page with catalog lanes + install trust gate (#2201) +- `459efba9` — feat(api): relay /v1/\/query through the daemon (V2-17) (#2198) +- `ada5b95a` — feat(cli): gaia email attaches to the daemon — thin client (V2-8) (#2191) +- `a49d257d` — fix(webui): reachable Agent Hub + installed-agent discovery and per-session picker (#2190) +- `7c98b51a` — docs(connectors): rewrite the Google client-ID walkthrough for the current console (#2189) +- `a94a8126` — feat(daemon): deliver sidecar launch secret via 0600 file, not bare env (#2149) (#2186) +- `5601e2a5` — feat(daemon): streaming SSE reverse-proxy for agent routes (#2150) (#2188) +- `1465bc73` — feat(agents): proactive lifecycle hooks with approval-gated proposals (#1484) (#2187) +- `2c4ff395` — test(chat): mirror the amd-gaia floor guard from #2169; harden version parsing (#2184) +- `2271278c` — fix(llm): make swallowed model-load failures loud in _ensure_model_loaded (#2185) +- `2e0294f9` — feat(hub): add multi-component type discriminator to the manifest (#1716) (#2183) +- `b78b71d1` — test(chat): guard the amd-gaia dependency floor against #2112 regression (#2174) +- `33caec54` — refactor(ui): extract _best_effort_cancel helper for the relay cancel paths (#2173) +- `ba58e31a` — feat(email): fast dev-iteration loop for the email agent SDK (#2083) +- `f79c4177` — fix(webui): pin explicitly-set session titles — stop auto-retitle churn (#2165) (#2171) +- `ae741690` — fix(email): error on an explicitly-targeted unconnected mailbox instead of substituting (#2164) (#2172) +- `4dafa091` — fix(email): normalize date operators in search_messages (#2161) (#2170) +- `dd2fa328` — fix(email): raise amd-gaia floor to match get_embedding_model_for_device (#2112) (#2169) +- `011b6e3c` — fix(email): default calendar list to a forward window when range args are absent (#2162) (#2168) +- `ed7d2969` — fix(ui): propagate cancel to the email sidecar on relay timeout/crash (#2158) (#2167) +- `d8daf66d` — fix(agent): abort in-flight streaming generation on Agent-UI Stop (#2166) +- `c907f6c4` — feat(memory): adaptive, review-gated onboarding conversation (#1955) (#2143) +- `def5e979` — fix(ui): stop blaming Lemonade for cancelled/empty chat turns (#2141) +- `553cb541` — fix(email): consolidate Agent UI pre-scan across every connected mailbox (#2129) +- `5446af2c` — fix(agent-email): drop $orderby from Outlook get_thread to avoid Graph InefficientFilter (#2140) +- `8ba66f4d` — fix(email): REST triage honors the LLM's is_spam verdict (#2125) +- `aa44c2c8` — refactor(daemon): daemon-supervised agent sidecars (V2-6) (#2144) +- `ac3cc4cd` — fix(eval): fail the briefing eval loudly on a zero-case/zero-judged run (#2123) +- `c9566b19` — chore(deps): bump Lemonade Server to v11.0.0 (#2130) +- `47c1142a` — feat(ui): route email chat through the sidecar /v1/email/query loop (V2-10) (#2136) +- `b340427d` — docs(skill): correct the release skill against what v0.22.0 actually did (#2133) +- `9f1ece0f` — feat(webui): render→component map + generic render primitives (V2-9) (#2131) + +Full Changelog: [v0.22.0...v0.23.0](https://github.com/amd/gaia/compare/v0.22.0...v0.23.0) diff --git a/src/gaia/apps/webui/package-lock.json b/src/gaia/apps/webui/package-lock.json index 4484ab8b5..233d23871 100644 --- a/src/gaia/apps/webui/package-lock.json +++ b/src/gaia/apps/webui/package-lock.json @@ -1,12 +1,12 @@ { "name": "@amd-gaia/agent-ui", - "version": "0.22.0", + "version": "0.23.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@amd-gaia/agent-ui", - "version": "0.22.0", + "version": "0.23.0", "license": "MIT", "dependencies": { "electron-updater": "^6.8.3" diff --git a/src/gaia/apps/webui/package.json b/src/gaia/apps/webui/package.json index 3b3714c12..70456ff36 100644 --- a/src/gaia/apps/webui/package.json +++ b/src/gaia/apps/webui/package.json @@ -1,6 +1,6 @@ { "name": "@amd-gaia/agent-ui", - "version": "0.22.0", + "version": "0.23.0", "type": "module", "productName": "GAIA Agent UI", "description": "Privacy-first agentic AI interface with document Q&A - runs 100% locally on AMD Ryzen AI", diff --git a/src/gaia/version.py b/src/gaia/version.py index 6bbe215e3..5974a31e1 100644 --- a/src/gaia/version.py +++ b/src/gaia/version.py @@ -6,7 +6,7 @@ import subprocess from importlib.metadata import version as get_package_version_metadata -__version__ = "0.22.0" +__version__ = "0.23.0" # Lemonade version used across CI and installer LEMONADE_VERSION = "11.0.0"