Commit graph

370 commits

Author SHA1 Message Date
Vitaly Chikunov
bd1f4a29a3 ALT: Re-generate tools/server/public/index.html.gz
+ mkdir /usr/src/.npm-global
+ npm config set prefix /usr/src/.npm-global
+ npm install -g @aikidosec/safe-chain
npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me

added 141 packages in 12s

24 packages are looking for funding
  run `npm fund` for details
+ PATH=/usr/src/.npm-global/bin:/usr/bin:/bin:/usr/local/bin
+ cd /usr/src/build
+ rm tools/server/public/index.html.gz
+ cd tools/server/webui
+ aikido-npm ci --ignore-scripts

added 587 packages, and audited 588 packages in 41s

237 packages are looking for funding
  run `npm fund` for details

8 vulnerabilities (2 low, 3 moderate, 3 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
ℹ Safe-chain: Some package versions were suppressed due to minimum age requirement.
  To disable this check, use: --safe-chain-skip-minimum-package-age
+ aikido-npm audit --audit-level=critical fix

added 1 package, changed 13 packages, and audited 588 packages in 23s

237 packages are looking for funding
  run `npm fund` for details

# npm audit report

cookie  <0.7.0
cookie accepts cookie name, path, and domain with out of bounds characters - https://github.com/advisories/GHSA-pxg6-pf52-xh8x
fix available via `npm audit fix --force`
Will install @sveltejs/kit@0.0.30, which is a breaking change
node_modules/cookie
  @sveltejs/kit  >=1.0.0-next.0
  Depends on vulnerable versions of cookie
  node_modules/@sveltejs/kit
    @sveltejs/adapter-static  >=1.0.0-next.0
    Depends on vulnerable versions of @sveltejs/kit
    node_modules/@sveltejs/adapter-static
    runed  >=0.32.0
    Depends on vulnerable versions of @sveltejs/kit
    node_modules/bits-ui/node_modules/runed
      bits-ui  >=2.11.8
      Depends on vulnerable versions of runed
      Depends on vulnerable versions of svelte-toolbelt
      node_modules/bits-ui
      svelte-toolbelt  >=0.10.6
      Depends on vulnerable versions of runed
      node_modules/bits-ui/node_modules/svelte-toolbelt

6 low severity vulnerabilities

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force
ℹ Safe-chain: Some package versions were suppressed due to minimum age requirement.
  To disable this check, use: --safe-chain-skip-minimum-package-age
+ du -sh node_modules
412M	node_modules
+ npm run build

> webui@1.0.0 build
> vite build && ./scripts/post-build.sh

▲ [WARNING] Cannot find base config file "./.svelte-kit/tsconfig.json" [tsconfig.json]

    tsconfig.json:2:12:
      2 │   "extends": "./.svelte-kit/tsconfig.json",
        ╵              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vite v7.2.2 building ssr environment for production...
transforming...
DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

   ╷
17 │ @import 'katex/src/styles/katex.scss';
   │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
    src/styles/katex-custom.scss 17:9  root stylesheet

DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
2 │ @import "./fonts.scss";
  │         ^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/katex.scss 2:9  @import
    src/styles/katex-custom.scss 17:9             root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.append instead.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
9 │         $src: append($src, url('#{$font-folder}/KaTeX_#{$family}-#{$family-suffix}.woff2') format('woff2'), comma);
  │               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/fonts.scss 9:15   generate-src()
    node_modules/katex/src/styles/fonts.scss 42:11  font-face()
    node_modules/katex/src/styles/fonts.scss 52:1   @import
    node_modules/katex/src/styles/katex.scss 2:9    @import
    src/styles/katex-custom.scss 17:9               root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
344 │         @for $from from 1 through length($sizes) {
    │                                   ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 344:35  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
345 │             @for $to from 1 through length($sizes) {
    │                                     ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 345:37  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                      ^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:38  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                                         ^^^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:57  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

✓ 4668 modules transformed.
Export "getJsonHeaders" of module "src/lib/utils/api-headers.ts" was reexported through module "src/lib/utils/index.ts" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.
Either change the import in "src/lib/services/chat.service.ts" to point directly to the exporting module or reconfigure "output.manualChunks" to ensure these modules end up in the same chunk.
rendering chunks...
vite v7.2.2 building client environment for production...
transforming...
DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

   ╷
17 │ @import 'katex/src/styles/katex.scss';
   │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
    src/styles/katex-custom.scss 17:9  root stylesheet

DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
2 │ @import "./fonts.scss";
  │         ^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/katex.scss 2:9  @import
    src/styles/katex-custom.scss 17:9             root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.append instead.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
9 │         $src: append($src, url('#{$font-folder}/KaTeX_#{$family}-#{$family-suffix}.woff2') format('woff2'), comma);
  │               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/fonts.scss 9:15   generate-src()
    node_modules/katex/src/styles/fonts.scss 42:11  font-face()
    node_modules/katex/src/styles/fonts.scss 52:1   @import
    node_modules/katex/src/styles/katex.scss 2:9    @import
    src/styles/katex-custom.scss 17:9               root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
344 │         @for $from from 1 through length($sizes) {
    │                                   ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 344:35  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
345 │             @for $to from 1 through length($sizes) {
    │                                     ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 345:37  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                      ^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:38  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                                         ^^^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:57  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

✓ 5399 modules transformed.
rendering chunks...
computing gzip size...
.svelte-kit/output/client/_app/version.json                             0.03 kB │ gzip:     0.05 kB
.svelte-kit/output/client/.vite/manifest.json                           0.33 kB │ gzip:     0.19 kB
.svelte-kit/output/client/_app/immutable/assets/style.CJmKEHj9.css    486.23 kB │ gzip:   286.83 kB
.svelte-kit/output/client/_app/immutable/bundle.MHYfI75F.js         3,794.00 kB │ gzip: 1,124.02 kB

(!) Some chunks are larger than 3072 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 11.19s
.svelte-kit/output/server/.vite/manifest.json                                          5.77 kB
.svelte-kit/output/server/_app/immutable/assets/style.3paQMzOh.css                   485.95 kB
.svelte-kit/output/server/chunks/false.js                                              0.03 kB
.svelte-kit/output/server/chunks/environment.js                                        0.07 kB
.svelte-kit/output/server/chunks/api-key-validation.js                                 0.17 kB
.svelte-kit/output/server/chunks/server.js                                             0.20 kB
.svelte-kit/output/server/entries/pages/_page.ts.js                                    0.25 kB
.svelte-kit/output/server/entries/pages/chat/_id_/_page.ts.js                          0.28 kB
.svelte-kit/output/server/internal.js                                                  0.37 kB
.svelte-kit/output/server/chunks/utils.js                                              0.62 kB
.svelte-kit/output/server/entries/pages/_page.svelte.js                                0.91 kB
.svelte-kit/output/server/entries/pages/chat/_id_/_page.svelte.js                      0.96 kB
.svelte-kit/output/server/chunks/exports.js                                            1.47 kB
.svelte-kit/output/server/chunks/url.js                                                1.60 kB
.svelte-kit/output/server/chunks/label.js                                              2.27 kB
.svelte-kit/output/server/chunks/internal.js                                           2.55 kB
.svelte-kit/output/server/entries/pages/_error.svelte.js                               8.16 kB
.svelte-kit/output/server/remote-entry.js                                              8.56 kB
.svelte-kit/output/server/chunks/shared.js                                            11.83 kB
.svelte-kit/output/server/chunks/precision.js                                         16.33 kB
.svelte-kit/output/server/entries/pages/_layout.svelte.js                             35.10 kB
.svelte-kit/output/server/chunks/root.js                                              38.06 kB
.svelte-kit/output/server/index.js                                                    54.17 kB
.svelte-kit/output/server/chunks/DialogCodePreview.svelte_svelte_type_style_lang.js   76.25 kB
.svelte-kit/output/server/chunks/DialogConfirmation.js                               121.27 kB
.svelte-kit/output/server/chunks/ServerLoadingSplash.js                              223.18 kB
✓ built in 20.68s

Run npm run preview to preview your production build locally.

> Using @sveltejs/adapter-static
Overwriting ../public/index.html with fallback page. Consider using a different name for the fallback.
  Wrote site to "../public"
  ✔ done
✓ Inlined favicon.svg as base64 data URL
✓ Created index.html.gz
2026-03-04 01:18:11 +03:00
Vitaly Chikunov
c532b4731a Merge signed commit 'b8192' into sisyphus
Diff-After-Merge: 2 files changed, 6 insertions(+)

# gpg: Signature made Tue Mar  3 12:40:26 2026 MSK
# gpg:                using RSA key B5690EEEBB952194
# gpg: Good signature from "GitHub <noreply@github.com>" [unknown]

# Conflicts:
#	tools/server/public/index.html.gz
2026-03-03 22:15:54 +00:00
Roj234
3e6ab244ad
server: Add pragma once to server-context.h (#19944) 2026-02-27 18:28:36 +01:00
Sami Kama
5596a35791
server: Mirroring /v1/responses to /responses to match /v1/chat/completions pattern (#19873) 2026-02-28 00:44:42 +08:00
Pascal
2e7e638523
server : support multiple model aliases via comma-separated --alias (#19926)
* server : support multiple model aliases via comma-separated --alias

* server : update --alias description and regenerate docs

* server : multiple model aliases and tags

- address review feedback from ngxson
- --alias accepts comma-separated values (std::set, no duplicates)
- --tags for informational metadata (not used for routing)
- aliases resolve transparently in router via get_meta/has_model
- /v1/models exposes aliases and tags fields

* regenerate docs

* nits

* server : use first alias as model_name for backward compat

address review feedback from ngxson

* server : add single-model test for aliases and tags
2026-02-27 07:05:23 +01:00
Georgi Gerganov
01cd448b8c
server : fix ctx checkpoint restore logic (#19924) 2026-02-26 18:20:16 +02:00
drrros
efba35a860
server: fix load-on-startup not respected in ini file (#19897)
Co-authored-by: Roman Marchenko <r.marchenko@ideco.ru>
2026-02-26 12:32:31 +01:00
yggdrasil75
bd72300591
server : fix typo in server README.md (#19900)
fix typo
2026-02-26 11:26:16 +01:00
Georgi Gerganov
f20469d919
server : enable multi-modal prompt caching (#19877) 2026-02-25 15:15:42 +02:00
Georgi Gerganov
d7d826b3c1
server : support multi-modal context checkpoints (#19849)
* Modify llama-memory-hybrid-iswa.cpp

* Modify llama-memory-recurrent.cpp

* Modify server-common.cpp

* Modify server-common.h

* Modify server-context.cpp

* Modify server-task.h

* Added comment to llama-memory-hybrid-iswa.cpp

* Remove comment from server-context.cpp

* Stylistic fix server-context.cpp

* Fix an issue when seqrm isn't called in server-context.cpp

* cont : alternative impl

* cont : cleanup

* cont : n_tokens -> int64_t

---------

Co-authored-by: timkhronos <timkhronos@gmail.com>
2026-02-25 15:14:27 +02:00
Pascal
47eb12b953
server: fix query params lost when proxying requests in multi-model router mode (#19854)
* server: fix query params lost when proxying requests in multi-model router mode

* server: re-encode query params using httplib::encode_query_component in proxy
2026-02-24 21:46:06 +01:00
Radoslav Gerganov
c830f99cfa
server : support max_completion_tokens request property (#19831)
"max_tokens" is deprectated in favor of "max_completion_tokens" which
sets the upper bound for reasoning+output token.

Closes: #13700
2026-02-24 10:30:00 +02:00
Aleksander Grygier
5eb0ea32f0
feat: Add code blocks full height setting to parameter sync service (#19835) 2026-02-23 22:30:13 +01:00
Aleksander Grygier
9051663d5d
webui: Add setting to have full height Code Blocks in Chat Messages (#19829) 2026-02-23 14:16:50 +01:00
Sigbjørn Skjæret
e8e261699a
cli : provide model with text filename (#19783) 2026-02-22 22:33:49 +01:00
Kilian Krampf
cacc371f99
Fix wrong cli-argument in documentation (#19804) 2026-02-22 16:26:33 +01:00
Aldehir Rojas
34ec1c3f18
server : merge contiguous Responses input items into a single assistant message (#19773)
* server : merge contiguous input items into a single assistant message

* cont : simplify tool call msg

* cont : reduce and combine content

* cont : fix merging content items
2026-02-22 14:11:31 +01:00
crsawyer
07968d53e4
fix: UI single model selection in router mode (#19767) 2026-02-21 09:28:39 +01:00
crsawyer
10b26ee23a
WebUI hide models in router mode (#19374) 2026-02-19 22:53:42 +01:00
Tarek Dakhran
c5897995a7
mtmd : chat : Fix extra \n between text and media marker (#19595)
* mtmd : chat : Fix extra \n between text and media marker

Thanks to @tugot17 for detecting and reporting the issue.

For vision models (e.g. LFM2.5-VL-1.6B and Qwen/Qwen3-VL-4B-Instruct) `llama-mtmd-cli` produces identical output to HF implementation.

However `llama-server` doesn't. I traced it down to extra newline
inserted after `<__media__>`.

This happens in `to_json_oaicompat`, that treats media markers as text
and joins all parts with `\n` separator.

PR introduces new type `media_marker` and uses it for media markers.
Extra logic is added to prevent insertion of newlines before and after
media markers.

With this change number of input tokens is identical to HF
implementation and as a result the output is also identical.

I explored other ways to address the issue
* remove completely `\n` between text parts in `to_json_oaicompat`
* merge text messages in server-common.cpp before sending them to `to_json_oaicompat`

Please propose alternative ways of fixing this issue.

* Refactor to use explicite per type ifs

* Update common/chat.cpp

Co-authored-by: Piotr Wilkin (ilintar) <piotr.wilkin@syndatis.com>

* Update common_chat_templates_apply_legacy

---------

Co-authored-by: Piotr Wilkin (ilintar) <piotr.wilkin@syndatis.com>
2026-02-19 12:18:57 +01:00
Aleksander Grygier
03fd9d3bb4
webui: Fix Attachments not being included in completion request (#19731)
* fix: Add missing argument

* chore: update webui build output
2026-02-19 10:27:38 +01:00
matteo
b55dcdef5d
server: save generated text for the /slots endpoint (for LLAMA_SERVER_SLOTS_DEBUG=1) (#19622)
* save generated text for the /slots endpoint

* update debug_generated_text only when LLAMA_SERVER_SLOTS_DEBUG > 0

* Apply suggestions from code review

---------

Co-authored-by: Matteo <matteo@matteo>
Co-authored-by: Xuan-Son Nguyen <thichthat@gmail.com>
2026-02-18 18:53:37 +01:00
Aleksander Grygier
ea003229d3
Pre-MCP UI and architecture cleanup (#19689) 2026-02-18 12:02:02 +01:00
Aleksander Grygier
afa6bfe4f7
Pre-MCP UI and architecture cleanup (#19685)
* webui: extract non-MCP changes from mcp-mvp review split

* webui: extract additional pre-MCP UI and architecture cleanup

* chore: update webui build output
2026-02-17 13:47:45 +01:00
Adrien Gallouët
ae46a61e41
build : link ws2_32 as PUBLIC on Windows (#19666)
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2026-02-17 08:37:07 +01:00
Adrien Gallouët
9e118b97c4
build : remove LLAMA_HTTPLIB option (#19623)
This option was introduced as a workaround because cpp-httplib could not
build on visionOS. Since it has been fixed and now compiles on all platforms,
we can remove it and simplify many things.

Signed-off-by: Adrien Gallouët <angt@huggingface.co>
2026-02-15 15:38:50 +01:00
Aleksander Grygier
baa12f3831
webui: Architecture and UI improvements (#19596) 2026-02-14 09:06:41 +01:00
Aleksander Grygier
5174d7206f
webui: UI and routing fixes (#19586)
* chore: update webui build output

* chore: update webui build output

* fix: Scroll issues in DropdownMenuSearchable

* webui: fix redirect to root ignoring base path

* fix: Word wrapping

* fix: remove obsolete modality UI tests causing CI failures

- Remove VisionModality/AudioModality test stories
- Remove mockServerProps usage and imports
- Simplify Default test (remove dropdown interaction checks)
- Simplify FileAttachments test (remove mocks)

* feat: Improve formatting performance time

---------

Co-authored-by: Pascal <admin@serveurperso.com>
2026-02-13 12:31:00 +01:00
Vitaly Chikunov
10b6f2f57a ALT: Re-generate tools/server/public/index.html.gz
+ mkdir /usr/src/.npm-global
+ npm config set prefix /usr/src/.npm-global
+ npm install -g @aikidosec/safe-chain

added 58 packages in 7s

6 packages are looking for funding
  run `npm fund` for details
+ PATH=/usr/src/.npm-global/bin:/usr/bin:/bin:/usr/local/bin
+ cd /usr/src/build
+ rm tools/server/public/index.html.gz
+ cd tools/server/webui
+ aikido-npm ci --ignore-scripts

added 547 packages, and audited 548 packages in 28s

218 packages are looking for funding
  run `npm fund` for details

6 vulnerabilities (1 low, 1 moderate, 4 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
ℹ Safe-chain: Some package versions were suppressed due to minimum age requirement.
  To disable this check, use: --safe-chain-skip-minimum-package-age
+ aikido-npm audit --audit-level=critical fix

added 12 packages, removed 1 package, changed 8 packages, and audited 559 packages in 26s

227 packages are looking for funding
  run `npm fund` for details

# npm audit report

cookie  <0.7.0
cookie accepts cookie name, path, and domain with out of bounds characters - https://github.com/advisories/GHSA-pxg6-pf52-xh8x
fix available via `npm audit fix --force`
Will install @sveltejs/kit@0.0.30, which is a breaking change
node_modules/cookie
  @sveltejs/kit  >=1.0.0-next.0
  Depends on vulnerable versions of cookie
  node_modules/@sveltejs/kit
    @sveltejs/adapter-static  >=1.0.0-next.0
    Depends on vulnerable versions of @sveltejs/kit
    node_modules/@sveltejs/adapter-static
    runed  >=0.32.0
    Depends on vulnerable versions of @sveltejs/kit
    node_modules/bits-ui/node_modules/runed
      bits-ui  >=2.11.8
      Depends on vulnerable versions of runed
      Depends on vulnerable versions of svelte-toolbelt
      node_modules/bits-ui
      svelte-toolbelt  >=0.10.6
      Depends on vulnerable versions of runed
      node_modules/bits-ui/node_modules/svelte-toolbelt

6 low severity vulnerabilities

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force
ℹ Safe-chain: Some package versions were suppressed due to minimum age requirement.
  To disable this check, use: --safe-chain-skip-minimum-package-age
+ du -sh node_modules
407M	node_modules
+ npm run build

> webui@1.0.0 build
> vite build && ./scripts/post-build.sh

▲ [WARNING] Cannot find base config file "./.svelte-kit/tsconfig.json" [tsconfig.json]

    tsconfig.json:2:12:
      2 │   "extends": "./.svelte-kit/tsconfig.json",
        ╵              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

│
▲  Failed to load preset:
│  "file:/usr/src/build/tools/server/webui/node_modules/@storybook/builder-vite/dist/preset.js"
│
■  Error [ERR_MODULE_NOT_FOUND]: Cannot find module
│  './node_modules/@storybook/builder-vite/dist/preset.js' imported from
│  ./node_modules/storybook/dist/_node-chunks/chunk-C6KVY6VB.js
│  at finalizeResolution (node:internal/modules/esm/resolve:274:11)
│  at moduleResolve (node:internal/modules/esm/resolve:859:10)
│  at defaultResolve (node:internal/modules/esm/resolve:983:11)
│  at nextResolve (node:internal/modules/esm/hooks:748:28)
│  at o
│  (file://./node_modules/@tailwindcss/node/dist/esm-cache.loader.mjs:1:69)
│  at nextResolve (node:internal/modules/esm/hooks:748:28)
│  at Hooks.resolve (node:internal/modules/esm/hooks:240:30)
│  at handleMessage (node:internal/modules/esm/worker:199:24)
│  at Immediate.checkForMessages
│  (node:internal/modules/esm/worker:141:28)
│  at process.processImmediate (node:internal/timers:485:21)
vite v7.2.2 building ssr environment for production...
transforming...
5:14:02 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatForm/ChatForm.svelte:60:22 This reference only captures the initial value of `initialMessage`. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally
58:   let fileInputRef: ChatFormFileInputInvisible | undefined = $state(undefined);
59:   let isRecording = $state(false);
60:   let message = $state(initialMessage);
                                         ^
61:   let pasteLongTextToFileLength = $derived.by(() => {
62:     const n = Number(currentConfig.pasteLongTextToFileLen);
5:14:02 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatForm/ChatForm.svelte:65:32 This reference only captures the initial value of `isLoading`. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally
63:     return Number.isNaN(n) ? Number(SETTING_CONFIG_DEFAULT.pasteLongTextToFileLen) : n;
64:   });
65:   let previousIsLoading = $state(isLoading);
                                              ^
66:   let previousInitialMessage = $state(initialMessage);
67:   let recordingSupported = $state(false);
5:14:02 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatForm/ChatForm.svelte:66:37 This reference only captures the initial value of `initialMessage`. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally
64:   });
65:   let previousIsLoading = $state(isLoading);
66:   let previousInitialMessage = $state(initialMessage);
                                                        ^
67:   let recordingSupported = $state(false);
68:   let textareaRef: ChatFormTextarea | undefined = $state(undefined);
5:14:02 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatMessages/ChatMessage.svelte:64:28 This reference only captures the initial value of `message`. Did you mean to reference it inside a derived instead?
https://svelte.dev/e/state_referenced_locally
62:     messageTypes: string[];
63:   } | null>(null);
64:   let editedContent = $state(message.content);
                                        ^
65:   let editedExtras = $state<DatabaseMessageExtra[]>(message.extra ? [...message.extra] : []);
66:   let editedUploadedFiles = $state<ChatUploadedFile[]>([]);
5:14:02 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatMessages/ChatMessage.svelte:65:51 This reference only captures the initial value of `message`. Did you mean to reference it inside a derived instead?
https://svelte.dev/e/state_referenced_locally
63:   } | null>(null);
64:   let editedContent = $state(message.content);
65:   let editedExtras = $state<DatabaseMessageExtra[]>(message.extra ? [...message.extra] : []);
                                                               ^
66:   let editedUploadedFiles = $state<ChatUploadedFile[]>([]);
67:   let isEditing = $state(false);
5:14:02 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatMessages/ChatMessage.svelte:65:71 This reference only captures the initial value of `message`. Did you mean to reference it inside a derived instead?
https://svelte.dev/e/state_referenced_locally
63:   } | null>(null);
64:   let editedContent = $state(message.content);
65:   let editedExtras = $state<DatabaseMessageExtra[]>(message.extra ? [...message.extra] : []);
                                                                                   ^
66:   let editedUploadedFiles = $state<ChatUploadedFile[]>([]);
67:   let isEditing = $state(false);
5:14:02 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatMessages/ChatMessageStatistics.svelte:30:47 This reference only captures the initial value of `initialView`. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally
28:   }: Props = $props();
29:
30:   let activeView: ChatMessageStatsView = $state(initialView);
                                                               ^
31:   let hasAutoSwitchedToGeneration = $state(false);
32:
DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

   ╷
17 │ @import 'katex/src/styles/katex.scss';
   │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
    src/styles/katex-custom.scss 17:9  root stylesheet

DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
2 │ @import "./fonts.scss";
  │         ^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/katex.scss 2:9  @import
    src/styles/katex-custom.scss 17:9             root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.append instead.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
9 │         $src: append($src, url('#{$font-folder}/KaTeX_#{$family}-#{$family-suffix}.woff2') format('woff2'), comma);
  │               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/fonts.scss 9:15   generate-src()
    node_modules/katex/src/styles/fonts.scss 42:11  font-face()
    node_modules/katex/src/styles/fonts.scss 52:1   @import
    node_modules/katex/src/styles/katex.scss 2:9    @import
    src/styles/katex-custom.scss 17:9               root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
344 │         @for $from from 1 through length($sizes) {
    │                                   ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 344:35  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
345 │             @for $to from 1 through length($sizes) {
    │                                     ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 345:37  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                      ^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:38  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                                         ^^^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:57  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

"default" is imported from external module "highlight.js" but never used in "src/lib/components/app/misc/SyntaxHighlightedCode.svelte".
✓ 4637 modules transformed.
Export "getJsonHeaders" of module "src/lib/utils/api-headers.ts" was reexported through module "src/lib/utils/index.ts" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.
Either change the import in "src/lib/services/models.ts" to point directly to the exporting module or reconfigure "output.manualChunks" to ensure these modules end up in the same chunk.
Export "getJsonHeaders" of module "src/lib/utils/api-headers.ts" was reexported through module "src/lib/utils/index.ts" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.
Either change the import in "src/lib/services/chat.ts" to point directly to the exporting module or reconfigure "output.manualChunks" to ensure these modules end up in the same chunk.
rendering chunks...
│
▲  Failed to load preset:
│  "file:/usr/src/build/tools/server/webui/node_modules/@storybook/builder-vite/dist/preset.js"
│
■  Error [ERR_MODULE_NOT_FOUND]: Cannot find module
│  './node_modules/@storybook/builder-vite/dist/preset.js' imported from
│  ./node_modules/storybook/dist/_node-chunks/chunk-C6KVY6VB.js
│  at finalizeResolution (node:internal/modules/esm/resolve:274:11)
│  at moduleResolve (node:internal/modules/esm/resolve:859:10)
│  at defaultResolve (node:internal/modules/esm/resolve:983:11)
│  at nextResolve (node:internal/modules/esm/hooks:748:28)
│  at o
│  (file://./node_modules/@tailwindcss/node/dist/esm-cache.loader.mjs:1:69)
│  at nextResolve (node:internal/modules/esm/hooks:748:28)
│  at Hooks.resolve (node:internal/modules/esm/hooks:240:30)
│  at handleMessage (node:internal/modules/esm/worker:199:24)
│  at Immediate.checkForMessages
│  (node:internal/modules/esm/worker:141:28)
│  at process.processImmediate (node:internal/timers:485:21)
vite v7.2.2 building client environment for production...
transforming...
5:14:10 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatForm/ChatForm.svelte:60:22 This reference only captures the initial value of `initialMessage`. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally
58:   let fileInputRef: ChatFormFileInputInvisible | undefined = $state(undefined);
59:   let isRecording = $state(false);
60:   let message = $state(initialMessage);
                                         ^
61:   let pasteLongTextToFileLength = $derived.by(() => {
62:     const n = Number(currentConfig.pasteLongTextToFileLen);
5:14:10 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatForm/ChatForm.svelte:65:32 This reference only captures the initial value of `isLoading`. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally
63:     return Number.isNaN(n) ? Number(SETTING_CONFIG_DEFAULT.pasteLongTextToFileLen) : n;
64:   });
65:   let previousIsLoading = $state(isLoading);
                                              ^
66:   let previousInitialMessage = $state(initialMessage);
67:   let recordingSupported = $state(false);
5:14:10 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatForm/ChatForm.svelte:66:37 This reference only captures the initial value of `initialMessage`. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally
64:   });
65:   let previousIsLoading = $state(isLoading);
66:   let previousInitialMessage = $state(initialMessage);
                                                        ^
67:   let recordingSupported = $state(false);
68:   let textareaRef: ChatFormTextarea | undefined = $state(undefined);
5:14:10 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatMessages/ChatMessage.svelte:64:28 This reference only captures the initial value of `message`. Did you mean to reference it inside a derived instead?
https://svelte.dev/e/state_referenced_locally
62:     messageTypes: string[];
63:   } | null>(null);
64:   let editedContent = $state(message.content);
                                        ^
65:   let editedExtras = $state<DatabaseMessageExtra[]>(message.extra ? [...message.extra] : []);
66:   let editedUploadedFiles = $state<ChatUploadedFile[]>([]);
5:14:10 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatMessages/ChatMessage.svelte:65:51 This reference only captures the initial value of `message`. Did you mean to reference it inside a derived instead?
https://svelte.dev/e/state_referenced_locally
63:   } | null>(null);
64:   let editedContent = $state(message.content);
65:   let editedExtras = $state<DatabaseMessageExtra[]>(message.extra ? [...message.extra] : []);
                                                               ^
66:   let editedUploadedFiles = $state<ChatUploadedFile[]>([]);
67:   let isEditing = $state(false);
5:14:10 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatMessages/ChatMessage.svelte:65:71 This reference only captures the initial value of `message`. Did you mean to reference it inside a derived instead?
https://svelte.dev/e/state_referenced_locally
63:   } | null>(null);
64:   let editedContent = $state(message.content);
65:   let editedExtras = $state<DatabaseMessageExtra[]>(message.extra ? [...message.extra] : []);
                                                                                   ^
66:   let editedUploadedFiles = $state<ChatUploadedFile[]>([]);
67:   let isEditing = $state(false);
5:14:10 AM [vite-plugin-svelte] src/lib/components/app/chat/ChatMessages/ChatMessageStatistics.svelte:30:47 This reference only captures the initial value of `initialView`. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally
28:   }: Props = $props();
29:
30:   let activeView: ChatMessageStatsView = $state(initialView);
                                                               ^
31:   let hasAutoSwitchedToGeneration = $state(false);
32:
DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

   ╷
17 │ @import 'katex/src/styles/katex.scss';
   │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
    src/styles/katex-custom.scss 17:9  root stylesheet

DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
2 │ @import "./fonts.scss";
  │         ^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/katex.scss 2:9  @import
    src/styles/katex-custom.scss 17:9             root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.append instead.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
9 │         $src: append($src, url('#{$font-folder}/KaTeX_#{$family}-#{$family-suffix}.woff2') format('woff2'), comma);
  │               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/fonts.scss 9:15   generate-src()
    node_modules/katex/src/styles/fonts.scss 42:11  font-face()
    node_modules/katex/src/styles/fonts.scss 52:1   @import
    node_modules/katex/src/styles/katex.scss 2:9    @import
    src/styles/katex-custom.scss 17:9               root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
344 │         @for $from from 1 through length($sizes) {
    │                                   ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 344:35  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
345 │             @for $to from 1 through length($sizes) {
    │                                     ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 345:37  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                      ^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:38  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                                         ^^^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:57  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

✓ 5368 modules transformed.
rendering chunks...
computing gzip size...
.svelte-kit/output/client/_app/version.json                             0.03 kB │ gzip:     0.05 kB
.svelte-kit/output/client/.vite/manifest.json                           0.33 kB │ gzip:     0.19 kB
.svelte-kit/output/client/_app/immutable/assets/style.DXqLu93h.css    484.73 kB │ gzip:   286.45 kB
.svelte-kit/output/client/_app/immutable/bundle.BE6Kqhhx.js         3,791.27 kB │ gzip: 1,122.18 kB

(!) Some chunks are larger than 3072 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 11.33s
.svelte-kit/output/server/.vite/manifest.json                                              5.75 kB
.svelte-kit/output/server/_app/immutable/assets/style.eK-nbzvn.css                       484.45 kB
.svelte-kit/output/server/chunks/environment.js                                            0.07 kB
.svelte-kit/output/server/chunks/api-key-validation.js                                     0.14 kB
.svelte-kit/output/server/entries/pages/_page.ts.js                                        0.21 kB
.svelte-kit/output/server/entries/pages/chat/_id_/_page.ts.js                              0.22 kB
.svelte-kit/output/server/chunks/server.js                                                 0.22 kB
.svelte-kit/output/server/chunks/browser-only.js                                           0.31 kB
.svelte-kit/output/server/internal.js                                                      0.35 kB
.svelte-kit/output/server/chunks/utils.js                                                  0.63 kB
.svelte-kit/output/server/entries/pages/_page.svelte.js                                    0.99 kB
.svelte-kit/output/server/entries/pages/chat/_id_/_page.svelte.js                          1.00 kB
.svelte-kit/output/server/chunks/label.js                                                  2.20 kB
.svelte-kit/output/server/chunks/exports.js                                                3.06 kB
.svelte-kit/output/server/chunks/supported-file-types.js                                   4.32 kB
.svelte-kit/output/server/entries/pages/_error.svelte.js                                   8.38 kB
.svelte-kit/output/server/remote-entry.js                                                  8.59 kB
.svelte-kit/output/server/chunks/internal.js                                               9.67 kB
.svelte-kit/output/server/chunks/shared.js                                                11.22 kB
.svelte-kit/output/server/chunks/index.js                                                 28.70 kB
.svelte-kit/output/server/entries/pages/_layout.svelte.js                                 33.29 kB
.svelte-kit/output/server/index.js                                                        52.95 kB
.svelte-kit/output/server/chunks/SyntaxHighlightedCode.svelte_svelte_type_style_lang.js   87.17 kB
.svelte-kit/output/server/chunks/DialogConfirmation.js                                   112.36 kB
.svelte-kit/output/server/chunks/ServerLoadingSplash.js                                  216.58 kB
✓ built in 20.86s

Run npm run preview to preview your production build locally.

> Using @sveltejs/adapter-static
Overwriting ../public/index.html with fallback page. Consider using a different name for the fallback.
  Wrote site to "../public"
  ✔ done
✓ Inlined favicon.svg as base64 data URL
✓ Created index.html.gz
2026-02-13 08:15:20 +03:00
Vitaly Chikunov
c61b893e63 Merge signed commit 'b8018' into sisyphus
Diff-After-Merge: 2 files changed, 6 insertions(+)

# gpg: Signature made Thu Feb 12 18:11:22 2026 MSK
# gpg:                using RSA key B5690EEEBB952194
# gpg: Good signature from "GitHub <noreply@github.com>" [unknown]

# Conflicts:
#	tools/server/public/index.html.gz
2026-02-13 05:12:34 +00:00
Aleksander Grygier
4c61875bf8
webui: Add switcher to Chat Message UI to show raw LLM output (#19571) 2026-02-12 19:55:51 +01:00
Aleksander Grygier
4d688f9ebb
(webui) FEATURE: Enable adding or injecting System Message into chat (#19556)
* feat: Enable adding System Prompt per-chat

* fix: Save draft message in Chat Form when adding System Prompt from new chat view

* fix: Proper system message deletion logic

* chore: Formatting

* chore: update webui build output
2026-02-12 13:56:08 +01:00
Aleksander Grygier
f486ce9f30
(webui) REFACTOR: UI primitives and polish (#19551)
* webui: UI primitives and polish (non-MCP)

* chore: update webui build output
2026-02-12 12:21:00 +01:00
Aleksander Grygier
38adc7d469
WebUI Architecture Cleanup (#19541)
* webui: architecture foundation (non-MCP core refactors)

* chore: update webui build output
2026-02-12 11:22:27 +01:00
RichardScottOZ
fa16e517a3
server : fix typo in README.md for features list (#19510)
extra l for full
2026-02-12 08:56:25 +01:00
손희준
820ebfa6f4
Server: log when converting requests to chat completions format (#19457)
* Log converting requests

* Print as debug instead of info [no ci]

---------

Co-authored-by: openingnow <>
2026-02-09 16:22:57 +01:00
Sascha Rogmann
292f6908cd
spec : remove check rate (#19377)
* spec: remove parameter spec-ngram-check-rate

* spec : renamed statistics vars

* spec : add n_call_begin, n_call_accept

* spec : don't enable key-map-stats
2026-02-09 15:30:50 +02:00
Georgi Gerganov
eb449cdfa4
server : improve context checkpoint logic (#19408) 2026-02-08 09:40:04 +02:00
Georgi Gerganov
dfde5993ea
common : add common_speculative_is_compat() (#19270)
* llama : add llama_memory_can_rm_suffix()

* Revert "llama : add llama_memory_can_rm_suffix()"

This reverts commit d30e59b62a15ef4266a6503e3f4eba770aec001b.

* spec : check if the target context is compatible for spec decoding
2026-02-06 16:47:22 +02:00
Matthieu Coudron
a3fa035822
server: print actual model name in 'model not found" error (#19117)
Experimenting with AI, my environment gets messy fast and it's not
always easy to know what model my software is trying to load. This helps
with troubleshooting.

before:

Error: {
  code = 400,
  message = "model not found",
  type = "invalid_request_error"
}

After:

Error: {
  code = 400,
  message = "model 'toto' not found",
  type = "invalid_request_error"
}
2026-02-02 16:55:27 +01:00
Christian Kastner
7a4ca3cbd9
docs : Minor cleanups (#19252)
* Update old URLs to github.com/ggml-org/

* Bump copyrights
2026-02-02 08:38:55 +02:00
Georgi Gerganov
bbada8bfb9
server : wrap around the "id_slot" parameter (#19207)
* server : wrap around the "id_slot" parameter

* cont : minor
2026-01-30 19:46:10 +02:00
Georgi Gerganov
dabaa2e77a
spec : add ngram-mod (#19164)
* spec : add ngram-mod

* cont : simplify + keep track of occupancy

* cont : cleanup

* cont : move initialization to common/speculative

* cont : cleanup

* cont : cleanup

* cont : fix
2026-01-30 18:21:48 +02:00
Andrew Marshall
84b0a98319
webui: Update Svelte to fix effect_update_depth_exceeded errors (#19144)
The upstream fix is first available in 5.38.2, so constrain to at least
that version.

Rebuild pre-compiled webui index.html.gz based on these changes.

See also:
https://github.com/ggml-org/llama.cpp/issues/16347
https://github.com/huntabyte/bits-ui/issues/1687
https://github.com/sveltejs/svelte/issues/16548
2026-01-29 15:56:39 +01:00
Sascha Rogmann
72d3b1898a
spec : add self‑speculative decoding (no draft model required) + refactor (#18471)
* server: introduce self-speculative decoding

* server: moved self-call into speculative.cpp

* can_speculate() includes self-speculation

Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>

* server: can_speculate() tests self-spec

* server: replace can_speculate() with slot.can_speculate()

Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>

* common: use %zu format specifier for size_t in logging

Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>

* server: can_speculate() requires a task instance

* common: ngram map, config self-speculative decoding

* common: add enum common_speculative_type

* common: add vector of speculative states

* common: add option --spec-draftless

* server: cleanup (remove slot.batch_spec, rename)

* common: moved self-spec impl to ngram-map

* common: cleanup (use common_speculative_state_draft)

* spec : refactor

* cont : naming

* spec: remove --spec-config

* doc: (draftless) speculative decoding

* common: print performance in spec decoding

* minor : cleanup

* common : better names

* minor : cleanup + fix build

* minor: comments

* CODEOWNERS: add common/ngram-map.* (#18471)

* common : rename speculative.draftless_type -> speculative.type

* ngram-map : fix uninitialized values

* ngram-map : take into account the input can become shorter

* ngram-map : revert len check for now

* arg : change `--spec-draftless` -> `--spec-type`

* spec : add common_speculative_state::accept()

* spec : refactor + add common_speculative_begin()

* spec : fix begin() call with mtmd

* spec : additional refactor + remove common_speculative_params

---------

Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
2026-01-28 19:42:42 +02:00
Georgi Gerganov
b931f81b5a
server : adjust spec tests to generate up to 16 tokens (#19093) 2026-01-28 09:11:40 +02:00
Daniel Bevenius
16639ba217
common : use two decimal places for float arg help messages (#19048)
* common : use two decimal places for float arg help messages

This commit updates the help messages for various command-line arguments
in arg.cpp to display floating-point default values with two decimal
places instead of one.

The motivation for this changes is that currently only having one decimal
place means that values generated using --help or llama-gen-docs will not
display the correct values.

For example, currently the value of top-p in tools/server/README.md is
`0.9`, but the default value is actually '0.95'. And running
llama-gen-docs does not update this value as it uses the output from the
help message, which shows only one decimal place, so the values look
like they are unchanged.

* docs : run llama-gen-docs to update docs
2026-01-25 07:31:42 +01:00
Vitaly Chikunov
e1130f67db ALT: Re-generate tools/server/public/index.html.gz
+ mkdir /usr/src/.npm-global
+ npm config set prefix /usr/src/.npm-global
+ npm install -g @aikidosec/safe-chain

added 57 packages in 6s

5 packages are looking for funding
  run `npm fund` for details
+ PATH=/usr/src/.npm-global/bin:/usr/bin:/bin:/usr/local/bin
+ cd /usr/src/build
+ rm tools/server/public/index.html.gz
+ cd tools/server/webui
+ aikido-npm ci --ignore-scripts

added 547 packages, and audited 548 packages in 26s

218 packages are looking for funding
  run `npm fund` for details

7 vulnerabilities (1 low, 1 moderate, 5 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
+ aikido-npm audit --audit-level=critical fix

added 12 packages, removed 1 package, changed 8 packages, and audited 559 packages in 27s

227 packages are looking for funding
  run `npm fund` for details

# npm audit report

cookie  <0.7.0
cookie accepts cookie name, path, and domain with out of bounds characters - https://github.com/advisories/GHSA-pxg6-pf52-xh8x
fix available via `npm audit fix --force`
Will install @sveltejs/kit@0.0.30, which is a breaking change
node_modules/cookie
  @sveltejs/kit  >=1.0.0-next.0
  Depends on vulnerable versions of cookie
  node_modules/@sveltejs/kit
    @sveltejs/adapter-static  >=1.0.0-next.0
    Depends on vulnerable versions of @sveltejs/kit
    node_modules/@sveltejs/adapter-static
    runed  >=0.32.0
    Depends on vulnerable versions of @sveltejs/kit
    node_modules/bits-ui/node_modules/runed
      bits-ui  >=2.11.8
      Depends on vulnerable versions of runed
      Depends on vulnerable versions of svelte-toolbelt
      node_modules/bits-ui
      svelte-toolbelt  >=0.10.6
      Depends on vulnerable versions of runed
      node_modules/bits-ui/node_modules/svelte-toolbelt

6 low severity vulnerabilities

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force
ℹ Safe-chain: Some package versions were suppressed due to minimum age requirement.
  To disable this check, use: --safe-chain-skip-minimum-package-age
+ du -sh node_modules
407M	node_modules
+ npm run build

> webui@1.0.0 build
> vite build && ./scripts/post-build.sh

▲ [WARNING] Cannot find base config file "./.svelte-kit/tsconfig.json" [tsconfig.json]

    tsconfig.json:2:12:
      2 │   "extends": "./.svelte-kit/tsconfig.json",
        ╵              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

│
▲  Failed to load preset:
│  "file:/usr/src/build/tools/server/webui/node_modules/@storybook/builder-vite/dist/preset.js"
│
■  Error [ERR_MODULE_NOT_FOUND]: Cannot find module
│  './node_modules/@storybook/builder-vite/dist/preset.js' imported from
│  ./node_modules/storybook/dist/_node-chunks/chunk-OXJURHEN.js
│  at finalizeResolution (node:internal/modules/esm/resolve:274:11)
│  at moduleResolve (node:internal/modules/esm/resolve:859:10)
│  at defaultResolve (node:internal/modules/esm/resolve:983:11)
│  at nextResolve (node:internal/modules/esm/hooks:748:28)
│  at o
│  (file://./node_modules/@tailwindcss/node/dist/esm-cache.loader.mjs:1:69)
│  at nextResolve (node:internal/modules/esm/hooks:748:28)
│  at Hooks.resolve (node:internal/modules/esm/hooks:240:30)
│  at handleMessage (node:internal/modules/esm/worker:199:24)
│  at Immediate.checkForMessages
│  (node:internal/modules/esm/worker:141:28)
│  at process.processImmediate (node:internal/timers:485:21)
vite v7.2.2 building ssr environment for production...
transforming...
DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

   ╷
17 │ @import 'katex/src/styles/katex.scss';
   │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
    src/styles/katex-custom.scss 17:9  root stylesheet

DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
2 │ @import "./fonts.scss";
  │         ^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/katex.scss 2:9  @import
    src/styles/katex-custom.scss 17:9             root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.append instead.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
9 │         $src: append($src, url('#{$font-folder}/KaTeX_#{$family}-#{$family-suffix}.woff2') format('woff2'), comma);
  │               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/fonts.scss 9:15   generate-src()
    node_modules/katex/src/styles/fonts.scss 42:11  font-face()
    node_modules/katex/src/styles/fonts.scss 52:1   @import
    node_modules/katex/src/styles/katex.scss 2:9    @import
    src/styles/katex-custom.scss 17:9               root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
344 │         @for $from from 1 through length($sizes) {
    │                                   ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 344:35  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
345 │             @for $to from 1 through length($sizes) {
    │                                     ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 345:37  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                      ^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:38  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                                         ^^^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:57  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

node_modules/@sveltejs/kit/src/runtime/client/client.js (333:26): "fork" is not exported by "node_modules/svelte/src/index-server.js", imported by "node_modules/@sveltejs/kit/src/runtime/client/client.js".
"default" is imported from external module "highlight.js" but never used in "src/lib/components/app/misc/SyntaxHighlightedCode.svelte".
✓ 4621 modules transformed.
Export "getJsonHeaders" of module "src/lib/utils/api-headers.ts" was reexported through module "src/lib/utils/index.ts" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.
Either change the import in "src/lib/services/models.ts" to point directly to the exporting module or reconfigure "output.manualChunks" to ensure these modules end up in the same chunk.
Export "getJsonHeaders" of module "src/lib/utils/api-headers.ts" was reexported through module "src/lib/utils/index.ts" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.
Either change the import in "src/lib/services/chat.ts" to point directly to the exporting module or reconfigure "output.manualChunks" to ensure these modules end up in the same chunk.
rendering chunks...
│
▲  Failed to load preset:
│  "file:/usr/src/build/tools/server/webui/node_modules/@storybook/builder-vite/dist/preset.js"
│
■  Error [ERR_MODULE_NOT_FOUND]: Cannot find module
│  './node_modules/@storybook/builder-vite/dist/preset.js' imported from
│  ./node_modules/storybook/dist/_node-chunks/chunk-OXJURHEN.js
│  at finalizeResolution (node:internal/modules/esm/resolve:274:11)
│  at moduleResolve (node:internal/modules/esm/resolve:859:10)
│  at defaultResolve (node:internal/modules/esm/resolve:983:11)
│  at nextResolve (node:internal/modules/esm/hooks:748:28)
│  at o
│  (file://./node_modules/@tailwindcss/node/dist/esm-cache.loader.mjs:1:69)
│  at nextResolve (node:internal/modules/esm/hooks:748:28)
│  at Hooks.resolve (node:internal/modules/esm/hooks:240:30)
│  at handleMessage (node:internal/modules/esm/worker:199:24)
│  at Immediate.checkForMessages
│  (node:internal/modules/esm/worker:141:28)
│  at process.processImmediate (node:internal/timers:485:21)
vite v7.2.2 building client environment for production...
transforming...
DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

   ╷
17 │ @import 'katex/src/styles/katex.scss';
   │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
    src/styles/katex-custom.scss 17:9  root stylesheet

DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
2 │ @import "./fonts.scss";
  │         ^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/katex.scss 2:9  @import
    src/styles/katex-custom.scss 17:9             root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.append instead.

More info and automated migrator: https://sass-lang.com/d/import

  ╷
9 │         $src: append($src, url('#{$font-folder}/KaTeX_#{$family}-#{$family-suffix}.woff2') format('woff2'), comma);
  │               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
    node_modules/katex/src/styles/fonts.scss 9:15   generate-src()
    node_modules/katex/src/styles/fonts.scss 42:11  font-face()
    node_modules/katex/src/styles/fonts.scss 52:1   @import
    node_modules/katex/src/styles/katex.scss 2:9    @import
    src/styles/katex-custom.scss 17:9               root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
344 │         @for $from from 1 through length($sizes) {
    │                                   ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 344:35  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.length instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
345 │             @for $to from 1 through length($sizes) {
    │                                     ^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 345:37  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                      ^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:38  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use list.nth instead.

More info and automated migrator: https://sass-lang.com/d/import

    ╷
348 │                     font-size: calc((nth($sizes, $to) / nth($sizes, $from)) * 1em);
    │                                                         ^^^^^^^^^^^^^^^^^^
    ╵
    node_modules/katex/src/styles/katex.scss 348:57  @import
    src/styles/katex-custom.scss 17:9                root stylesheet

node_modules/@sveltejs/kit/src/runtime/client/client.js (332:26): "fork" is not exported by "node_modules/svelte/src/index-client.js", imported by "node_modules/@sveltejs/kit/src/runtime/client/client.js".
✓ 5356 modules transformed.
rendering chunks...
computing gzip size...
.svelte-kit/output/client/_app/version.json                             0.03 kB │ gzip:     0.05 kB
.svelte-kit/output/client/.vite/manifest.json                           0.33 kB │ gzip:     0.19 kB
.svelte-kit/output/client/_app/immutable/assets/style.sWIT1xAp.css    482.64 kB │ gzip:   286.19 kB
.svelte-kit/output/client/_app/immutable/bundle.DxpKjihs.js         3,777.47 kB │ gzip: 1,118.20 kB

(!) Some chunks are larger than 3072 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 11.56s
.svelte-kit/output/server/.vite/manifest.json                                              5.75 kB
.svelte-kit/output/server/_app/immutable/assets/style.BvrYRhgP.css                       482.35 kB
.svelte-kit/output/server/chunks/environment.js                                            0.07 kB
.svelte-kit/output/server/chunks/api-key-validation.js                                     0.14 kB
.svelte-kit/output/server/entries/pages/_page.ts.js                                        0.17 kB
.svelte-kit/output/server/entries/pages/chat/_id_/_page.ts.js                              0.18 kB
.svelte-kit/output/server/chunks/server.js                                                 0.22 kB
.svelte-kit/output/server/chunks/browser-only.js                                           0.31 kB
.svelte-kit/output/server/internal.js                                                      0.35 kB
.svelte-kit/output/server/chunks/utils.js                                                  0.63 kB
.svelte-kit/output/server/entries/pages/_page.svelte.js                                    0.98 kB
.svelte-kit/output/server/entries/pages/chat/_id_/_page.svelte.js                          1.00 kB
.svelte-kit/output/server/chunks/label.js                                                  2.21 kB
.svelte-kit/output/server/chunks/exports.js                                                3.06 kB
.svelte-kit/output/server/chunks/supported-file-types.js                                   4.32 kB
.svelte-kit/output/server/chunks/internal.js                                               6.02 kB
.svelte-kit/output/server/chunks/shared.js                                                 7.48 kB
.svelte-kit/output/server/remote-entry.js                                                  8.29 kB
.svelte-kit/output/server/entries/pages/_error.svelte.js                                   8.43 kB
.svelte-kit/output/server/chunks/index.js                                                 21.41 kB
.svelte-kit/output/server/entries/pages/_layout.svelte.js                                 34.19 kB
.svelte-kit/output/server/index.js                                                        56.23 kB
.svelte-kit/output/server/chunks/SyntaxHighlightedCode.svelte_svelte_type_style_lang.js   86.69 kB
.svelte-kit/output/server/chunks/DialogConfirmation.js                                   109.90 kB
.svelte-kit/output/server/chunks/ServerLoadingSplash.js                                  217.27 kB
✓ built in 21.04s

Run npm run preview to preview your production build locally.

> Using @sveltejs/adapter-static
Overwriting ../public/index.html with fallback page. Consider using a different name for the fallback.
  Wrote site to "../public"
  ✔ done
✓ Inlined favicon.svg as base64 data URL
✓ Created index.html.gz
2026-01-24 04:50:31 +03:00
Xuan-Son Nguyen
51fa458a92
server : support preserving reasoning_content in assistant message (#18994)
* support reasoning_content input

* report template caps to webui

* add docs

* rm commented code
2026-01-22 21:30:06 +01:00
Xuan-Son Nguyen
4e595b250a
server: do not log certain endpoints (avoid log spam) (#19028) 2026-01-22 19:24:37 +01:00