v0.3.22
googleworkspace/cliv0.3.22Sep 29, 2026by github-actions[bot]
Upgrading?
AI Summary
This release introduces a TypeScript SDK, batch decision endpoints, and reverse-proxy support, alongside numerous bug fixes and parity improvements between Python and TypeScript implementations.
Key Highlights
- Add TypeScript SDK and batch decision endpoint
- Support reverse-proxy URL prefixes
- Port confidence-based abstention gating
- Validate questions and reject null state before serialization
- Forward budgets and hooks from CrewAI/LlamaIndex
New Features
- TypeScript SDK
- Batch decision endpoint
- Reverse-proxy URL prefix support
- Confidence-based abstention gating
Full Release Notes
## What's Changed * feat(ts): per-checkpoint SHA-256 artifact verification in Router by @Swatantra-66 in https://github.com/NandhaKishorM/laya/pull/723 * feat(serve): forward the /v1/systemone controls a JSON body can state by @aashish254 in https://github.com/NandhaKishorM/laya/pull/724 * chore(deps): Bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in https://github.com/NandhaKishorM/laya/pull/627 * chore(deps): Bump zensical from 0.0.64 to 0.0.65 by @dependabot[bot] in https://github.com/NandhaKishorM/laya/pull/632 * fix(serve): read the checkpoints a client may name from laya.router by @aashish254 in https://github.com/NandhaKishorM/laya/pull/638 * feat(eval): selective-prediction report for metamorphic variants by @Charanraj-24 in https://github.com/NandhaKishorM/laya/pull/639 * fix(agent): say what precision a call runs in, not only the autocast target (#621) by @phant0um in https://github.com/NandhaKishorM/laya/pull/641 * feat(ts): port confidence-based abstention gating on answer_confidence (#361) by @Swatantra-66 in https://github.com/NandhaKishorM/laya/pull/644 * fix(ts): validate questions and reject null state before serialization (#607, #608) by @Swatantra-66 in https://github.com/NandhaKishorM/laya/pull/648 * feat(research): non-English fixed states for presentation_checks (#602, part b) by @hiroki-abe-58 in https://github.com/NandhaKishorM/laya/pull/650 * feat(integrations): forward budgets and hooks from CrewAI/LlamaIndex by @aashish254 in https://github.com/NandhaKishorM/laya/pull/652 * fix(agent): merge per-question usage across predict_long windows by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/653 * feat(cli): make core's length grouping reachable from every surface by @aashish254 in https://github.com/NandhaKishorM/laya/pull/654 * fix(integrations): read text out of LangChain content-block lists by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/655 * feat(serve): support reverse-proxy URL prefixes by @SomSamantray in https://github.com/NandhaKishorM/laya/pull/656 * feat(mcp): expose core's min_confidence abstention control on the decision tools by @aashish254 in https://github.com/NandhaKishorM/laya/pull/657 * fix(mcp): normalise LAYA_DEVICE once, so torch and laya_status agree by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/659 * fix(evals): return the documented exit code for a usage error by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/661 * fix(onnx): reject the same invalid inputs Agent.predict_batch already rejected by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/662 * feat(evals): a run identity, and a gate that refuses a baseline it cannot match by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/664 * fix(docker): run the child command instead of exec'ing it on Windows by @liwenjie200543 in https://github.com/NandhaKishorM/laya/pull/665 * fix(structured): honour minimum when a score answer has no probabilities by @cr-sbarbouche in https://github.com/NandhaKishorM/laya/pull/666 * fix(common): report state truncation from the token budget that applies by @somtri in https://github.com/NandhaKishorM/laya/pull/668 * fix(ts): honour score minimum in structured projection (#663) by @Swatantra-66 in https://github.com/NandhaKishorM/laya/pull/676 * fix(evals): use nearest-rank 95th percentile by @rahul05ranjan in https://github.com/NandhaKishorM/laya/pull/682 * fix(structured): expose answer_confidence on DecisionResult by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/685 * fix(email): cut a sign-off whose name carries a mark from any script by @Denimworld12 in https://github.com/NandhaKishorM/laya/pull/686 * fix(serve): measure the state limit on the text the tokenizer receives by @keemsisi in https://github.com/NandhaKishorM/laya/pull/691 * fix(agent): preserve start-hook questions in long scans by @kapelame in https://github.com/NandhaKishorM/laya/pull/692 * fix(security): split the CVE audit into shipped (blocking) and extras (advisory) by @devloper961-maker in https://github.com/NandhaKishorM/laya/pull/694 * docs(common): the state budget is max_len - head_len - 1, not max_len - head_max_len by @Parswanadh in https://github.com/NandhaKishorM/laya/pull/696 * research: accuracy against evidence position at fixed document length by @Parswanadh in https://github.com/NandhaKishorM/laya/pull/697 * fix(notebook): trim train items before DDP sharding by @lab1207 in https://github.com/NandhaKishorM/laya/pull/699 * perf(agent): reuse CUDA autocast weight cache across batches by @RagingSilence in https://github.com/NandhaKishorM/laya/pull/700 * feat(finetune): single-device training script for any checkpoint by @wlfonseca in https://github.com/NandhaKishorM/laya/pull/704 * feat(eval): report budget-confounded metamorphic comparisons by @Rukafuu in https://github.com/NandhaKishorM/laya/pull/706 * fix(agent): reject malformed question types with clear errors by @zhangxinping666 in https://github.com/NandhaKishorM/laya/pull/708 * fix(ts): reject a null choice label, as Python does (#508 parity) by @Divit-aggarwal in https://github.com/NandhaKishorM/laya/pull/710 * fix(ts): reject choice labels that share an answer key, as Python does (#496 parity) by @Divit-aggarwal in https://github.com/NandhaKishorM/laya/pull/711 * fix(ts): refuse a temperature that is not a list of 3 at construction, as Python does (#502 parity) by @Divit-aggarwal in https://github.com/NandhaKishorM/laya/pull/712 * fix(ts): let emailState set the body budget, as Python does (#589 parity) by @Divit-aggarwal in https://github.com/NandhaKishorM/laya/pull/713 * fix(examples): the demo's model field must resolve names like core by @aashish254 in https://github.com/NandhaKishorM/laya/pull/714 * fix(docker): forward LAYA_REVISION so a Compose deployment can actually pin by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/715 * fix(onnx): export at batch 2 with explicit Dims so the graph runs at any batch size by @cklxx in https://github.com/NandhaKishorM/laya/pull/717 * feat(agent): opt-in warmup() so compile=True does not stall the first requests by @cklxx in https://github.com/NandhaKishorM/laya/pull/718 * docs: engineering notes for compile=True and the TileLang fast path by @cklxx in https://github.com/NandhaKishorM/laya/pull/719 * feat: fit and persist per-bucket temperatures by @mvanhorn in https://github.com/NandhaKishorM/laya/pull/19 * fix(benchmarks): trace every table to its run, align script outputs with cited paths by @Nafeel005 in https://github.com/NandhaKishorM/laya/pull/190 * feat(sdk): add TypeScript SDK by @baninaveen in https://github.com/NandhaKishorM/laya/pull/198 * feat(ts): port Agent.predict_batch and Router.route_batch/predict_batch by @aashish254 in https://github.com/NandhaKishorM/laya/pull/329 * feat(ts): report state truncation in usage from the real token budget by @aashish254 in https://github.com/NandhaKishorM/laya/pull/336 * feat(agent): let a question choose the order its options are shown in by @Suzzt in https://github.com/NandhaKishorM/laya/pull/352 * feat(notebooks): add Apple Silicon fine-tuning script by @Angboo in https://github.com/NandhaKishorM/laya/pull/355 * feat(serve): add batch decision endpoint (/v1/systemone/batch) by @sirgio03 in https://github.com/NandhaKishorM/laya/pull/387 * research: refresh the 51-language multilingual columns from the re-run (#208) by @PerryLink in https://github.com/NandhaKishorM/laya/pull/389 * feat(ts): retrying loads with abort signal and progress by @nnlgsakib in https://github.com/NandhaKishorM/laya/pull/411 * docs(ts): point examples at the shipped model weights by @nnlgsakib in https://github.com/NandhaKishorM/laya/pull/412 * feat(ts): dx helpers, shortlist auto-embed, and encode caches by @nnlgsakib in https://github.com/NandhaKishorM/laya/pull/414 * docs: add the Questions and answers guide (#390) by @PerryLink in https://github.com/NandhaKishorM/laya/pull/418 * docs(reference): render answer_confidence, which no page documented by @PerryLink in https://github.com/NandhaKishorM/laya/pull/419 * fix(agent): a score legend echoed the caller own type instead of level text by @PerryLink in https://github.com/NandhaKishorM/laya/pull/420 * fix(hooks): hooks_installed removed a hook it did not install by @PerryLink in https://github.com/NandhaKishorM/laya/pull/424 * fix(agent): lang_temperatures crashed on the inputs it exists to reject by @PerryLink in https://github.com/NandhaKishorM/laya/pull/428 * docs(benchmarks): add independent NVIDIA capacity results by @bhushankinge in https://github.com/NandhaKishorM/laya/pull/429 * docs: add command line and MCP server guide by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/430 * fix(mcp): handle auto model in routing fallback by @soumojit-D48 in https://github.com/NandhaKishorM/laya/pull/445 * fix(serve): a lone surrogate in the body was a 500 instead of a 400 by @PerryLink in https://github.com/NandhaKishorM/laya/pull/454 * fix(agent): the over-budget message named the one knob that makes it worse by @PerryLink in https://github.com/NandhaKishorM/laya/pull/455 * fix(ts): make split ONNX loadable in the browser by @nnlgsakib in https://github.com/NandhaKishorM/laya/pull/457 * feat(laya-ts): browser triage demo with custom questions by @nnlgsakib in https://github.com/NandhaKishorM/laya/pull/458 * fix(agent): scope the autocast fallback to the failed request by @MoonPointer-Byte in https://github.com/NandhaKishorM/laya/pull/459 * fix(lang): repeated English word colliding with a foreign function word routed English to multilingual by @AlKor13 in https://github.com/NandhaKishorM/laya/pull/460 * feat(examples): add the 41-script learning path by @thread3d in https://github.com/NandhaKishorM/laya/pull/465 * feat(verify): add the local verification harnesses by @thread3d in https://github.com/NandhaKishorM/laya/pull/466 * fix(email): preserve request text after device mentions by @lloyd-aloysius in https://github.com/NandhaKishorM/laya/pull/468 * docs(confidence): note option-count sensitivity by @humairaambreen in https://github.com/NandhaKishorM/laya/pull/476 * test(serve): verify inference timing headers are absent on 4xx responses by @peterfriese in https://github.com/NandhaKishorM/laya/pull/481 * docs(security): document opt-in revision pinning and digest verification by @keemsisi in https://github.com/NandhaKishorM/laya/pull/528 * chore(deps): Bump actions/setup-node from 4.4.0 to 7.0.0 by @dependabot[bot] in https://github.com/NandhaKishorM/laya/pull/626 * chore(deps): Bump actions/download-artifact from 4.3.0 to 8.0.1 by @dependabot[bot] in https://github.com/NandhaKishorM/laya/pull/628 * chore(deps): Bump actions/setup-python from 5.6.0 to 7.0.0 by @dependabot[bot] in https://github.com/NandhaKishorM/laya/pull/629 * chore(deps): Bump actions/checkout from 4.4.0 to 7.0.1 by @dependabot[bot] in https://github.com/NandhaKishorM/laya/pull/630 * test(mcp): gate the shortlist k default against laya.shortlist by @aashish254 in https://github.com/NandhaKishorM/laya/pull/636 * feat(mcp): carry each batch request's token budget to the forward pass by @aashish254 in https://github.com/NandhaKishorM/laya/pull/640 ## New Contributors * @Charanraj-24 made their first contribution in https://github.com/NandhaKishorM/laya/pull/639 * @phant0um made their first contribution in https://github.com/NandhaKishorM/laya/pull/641 * @SomSamantray made their first contribution in https://github.com/NandhaKishorM/laya/pull/656 * @cr-sbarbouche made their first contribution in https://github.com/NandhaKishorM/laya/pull/666 * @Denimworld12 made their first contribution in https://github.com/NandhaKishorM/laya/pull/686 * @kapelame made their first contribution in https://github.com/NandhaKishorM/laya/pull/692 * @Parswanadh made their first contribution in https://github.com/NandhaKishorM/laya/pull/696 * @lab1207 made their first contribution in https://github.com/NandhaKishorM/laya/pull/699 * @wlfonseca made their first contribution in https://github.com/NandhaKishorM/laya/pull/704 * @mvanhorn made their first contribution in https://github.com/NandhaKishorM/laya/pull/19 * @Nafeel005 made their first contribution in https://github.com/NandhaKishorM/laya/pull/190 * @baninaveen made their first contribution in https://github.com/NandhaKishorM/laya/pull/198 * @Angboo made their first contribution in https://github.com/NandhaKishorM/laya/pull/355 * @soumojit-D48 made their first contribution in https://github.com/NandhaKishorM/laya/pull/445 * @MoonPointer-Byte made their first contribution in https://github.com/NandhaKishorM/laya/pull/459 * @lloyd-aloysius made their first contribution in https://github.com/NandhaKishorM/laya/pull/468 * @humairaambreen made their first contribution in https://github.com/NandhaKishorM/laya/pull/476 **Full Changelog**: https://github.com/NandhaKishorM/laya/compare/v0.3.21...v0.3.22
Related Repositories
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one