v0.3.22

sergeyzwezdin/hubav0.3.22Sep 29, 2026by github-actions[bot]

Upgrading?

AI Summary

Adds a TypeScript SDK, batch decision endpoints, and various parity improvements with the Python version.

Key Highlights

  • Full TypeScript SDK addition for the framework.
  • New batch decision endpoint (`/v1/systemone/batch`).
  • Support for reverse-proxy URL prefixes.
  • Opt-in warmup function to prevent compilation stalls on first requests.

New Features

  • TypeScript SDK
  • Batch decision endpoint
  • Reverse-proxy URL prefix support
  • Opt-in warmup optimization

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