@qvac/llm-llamacpp 0.63.0 → 0.64.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,6 +25,7 @@ This native C++ addon, built using the `Bare` Runtime, simplifies running Large
25
25
  - [Architecture](#architecture)
26
26
  - [Benchmarking](#benchmarking)
27
27
  - [Tests](#tests)
28
+ - [Fuzzing](#fuzzing)
28
29
  - [Glossary](#glossary)
29
30
  - [License](#license)
30
31
 
@@ -340,6 +341,8 @@ const response = await model.run([
340
341
 
341
342
  `arguments` is an object or the text of a JSON object, and `content` may be empty on the assistant turn. A malformed tool turn is rejected with `InvalidInputFormat`. [`examples/toolCalling.js`](./examples/toolCalling.js) shows a full round trip.
342
343
 
344
+ The tool grammar holds the model to the order of `parameters`. Inside an object it accepts the required properties first, in declared order, then the optional ones, also in declared order. When the model writes a property out of that order, the call isn't rejected with an error: the model drops a field, writes a broken value or never finishes the call. Declare `required` properties before optional ones at every level, and declare each group in the order the model is likely to write it. This applies to nested objects, and to every argument in formats that write the arguments as one JSON object (Qwen3). Qwen3.5's top-level `<parameter=...>` arguments are less strict: up to six required arguments in any order, then the optional ones in any order. An optional argument before a required one is still rejected there.
345
+
343
346
  #### Batch inference
344
347
 
345
348
  Load the model with `parallel >= 2`, then pass an array of prompts. Each chunk arrives tagged with the id of the sequence that produced it; `await()` returns results in input order.
@@ -698,6 +701,28 @@ npm run test:cpp:models:ci # exactly what .github/workflows/cpp-tests-llm.yml
698
701
 
699
702
  First-run downloads pull several GB from Hugging Face. Every fixture is SHA256-verified against a digest pinned in `scripts/download-unit-test-models.js`; mismatched or partial files are re-downloaded automatically. Set `HF_TOKEN` if a repo requires authentication. Override paths with env vars such as `SHARDED_MODEL_FIRST_SHARD_PATH` (see `test/unit/test_common.hpp`).
700
703
 
704
+ ### Fuzzing
705
+
706
+ `forLogMessage`, `toLowerAscii`, and `matchesAnyStopString` have a
707
+ [Google FuzzTest][fuzztest] target, `llm-string-fuzz`. Fuzzing is Linux-only:
708
+ it needs clang with libFuzzer and AddressSanitizer, CMake 3.25 or newer,
709
+ [vcpkg](https://vcpkg.io/) (set `VCPKG_ROOT`) and `bare-make`. The target does
710
+ not link `@qvac/fabric`, so it runs with full ASan and LeakSanitizer.
711
+
712
+ ```bash
713
+ npm install
714
+ npm run fuzz # bounded run of every FUZZ_TEST, as Linux CI does
715
+ npm run fuzz:continuous # coverage-guided, one FUZZ_TEST at a time
716
+ npm run fuzz:continuous -- LlmStringFuzz.MatchesAnyStopNeverCrashes --fuzz_for=30m
717
+ ```
718
+
719
+ Flags other than `--continuous` and `--build-dir` go to the fuzz binary. See
720
+ [`docs/architecture/ADDON-FUZZING.md`](../../docs/architecture/ADDON-FUZZING.md)
721
+ for the fuzzing design, the vcpkg-supplied FuzzTest stack, and how to add a
722
+ target.
723
+
724
+ [fuzztest]: https://github.com/google/fuzztest
725
+
701
726
  ## Glossary
702
727
 
703
728
  • **Bare Runtime** – Small and modular JavaScript runtime for desktop and mobile. [Learn more](https://docs.pears.com/reference/bare-overview).
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@qvac/llm-llamacpp",
3
- "version": "0.63.0",
3
+ "version": "0.64.1",
4
4
  "description": "llama addon for qvac",
5
5
  "addon": true,
6
6
  "scripts": {
7
7
  "build": "npm run build:ts && npm run build:native",
8
- "build:native": "bare-make generate && bare-make build && bare-make install",
8
+ "build:native": "bare-make generate -D BUILD_FUZZING=OFF && bare-make build && bare-make install",
9
9
  "build:ts": "tsc -p tsconfig.build.json",
10
10
  "build:pack": "npm run build:ts && mkdir -p dist && npm pack --pack-destination dist",
11
11
  "mobile:copy-prebuilds": "cp -r prebuilds/android-arm64 prebuilds/android-ia32 || echo 'Warning: Failed to copy llamacpp prebuilds to android-ia32'; cp -r prebuilds/android-arm64 prebuilds/android-arm || echo 'Warning: Failed to copy llamacpp prebuilds to android-arm'; cp -r prebuilds/android-arm64 prebuilds/android-x64 || echo 'Warning: Failed to copy llamacpp prebuilds to android-x64'; cp -r prebuilds/ios-arm64 prebuilds/ios-arm64-simulator 2>/dev/null || echo 'iOS prebuilds already present'; cp -r prebuilds/ios-arm64 prebuilds/ios-x64-simulator 2>/dev/null || echo 'iOS prebuilds already present'",
@@ -32,13 +32,13 @@
32
32
  "test:unit:generate": "brittle -r test/unit/all.js test/unit/*.test.js",
33
33
  "test:prestage": "node --test scripts/__tests__/*.test.js ../../.github/actions/cache-models/warm-models.test.mjs",
34
34
  "test:unit": "npm run build:ts && npm run test:unit:generate && bare test/unit/all.js --exit && npm run test:prestage && npm run test:mobile:validate",
35
- "test:cpp:build": "bare-make generate -D BUILD_TESTING=ON && bare-make build --target addon-test",
35
+ "test:cpp:build": "bare-make generate -D BUILD_TESTING=ON -D BUILD_FUZZING=OFF && bare-make build --target addon-test",
36
36
  "test:cpp:models": "node scripts/download-unit-test-models.js",
37
37
  "test:cpp:models:ci": "node scripts/download-unit-test-models.js --ci",
38
38
  "test:cpp:run": "node scripts/run-cpp-tests.js",
39
39
  "test:cpp:run:ci": "node scripts/run-cpp-tests.js --ci",
40
40
  "test:cpp": "npm run test:cpp:build && npm run test:cpp:run",
41
- "coverage:cpp:build": "bare-make generate -D BUILD_TESTING=ON -D ENABLE_COVERAGE=ON && bare-make build --target addon-test",
41
+ "coverage:cpp:build": "bare-make generate -D BUILD_TESTING=ON -D ENABLE_COVERAGE=ON -D BUILD_FUZZING=OFF && bare-make build --target addon-test",
42
42
  "coverage:cpp:run": "node scripts/run-cpp-tests.js --coverage",
43
43
  "coverage:cpp:run:ci": "node scripts/run-cpp-tests.js --coverage --ci",
44
44
  "coverage:cpp:summary": "cd build/test/unit && llvm-cov report ./addon-test --instr-profile=coverage.profdata -ignore-filename-regex='(tests|build|node_modules|gtest|gmock|\\.vcpkg|/usr)/' > coverage-summary.txt",
@@ -46,7 +46,13 @@
46
46
  "coverage:cpp": "npm run coverage:cpp:build && npm run coverage:cpp:run && npm run coverage:cpp:report",
47
47
  "test:all": "npm run test:unit && npm run test:integration && npm run test:cpp",
48
48
  "benchmarks": "./benchmarks/run-benchmarks.sh",
49
- "benchmarks:windows": "powershell -ExecutionPolicy Bypass -File ./benchmarks/run-benchmarks.ps1"
49
+ "benchmarks:windows": "powershell -ExecutionPolicy Bypass -File ./benchmarks/run-benchmarks.ps1",
50
+ "fuzz:build": "bare-make generate -D BUILD_FUZZING=ON -D BUILD_TESTING=OFF -D FUZZTEST_FUZZING_MODE=OFF && bare-make build --target llm-string-fuzz",
51
+ "fuzz:build:continuous": "bare-make generate -D BUILD_FUZZING=ON -D BUILD_TESTING=OFF -D FUZZTEST_FUZZING_MODE=ON && bare-make build --target llm-string-fuzz",
52
+ "fuzz:run": "npm run test:scripts && node scripts/run-cpp-fuzz.js",
53
+ "test:scripts": "node --test scripts/__tests__/run-cpp-fuzz.test.js",
54
+ "fuzz": "npm run fuzz:build && npm run fuzz:run",
55
+ "fuzz:continuous": "npm run fuzz:build:continuous && node scripts/run-cpp-fuzz.js --continuous"
50
56
  },
51
57
  "files": [
52
58
  "binding.js",
@@ -73,8 +79,8 @@
73
79
  "bugs": "https://github.com/tetherto/qvac/issues",
74
80
  "homepage": "https://qvac.tether.io",
75
81
  "devDependencies": {
76
- "@qvac/fabric-android-arm64": "0.22.0",
77
- "@qvac/fabric-ios": "0.22.0",
82
+ "@qvac/fabric-android-arm64": "0.23.0",
83
+ "@qvac/fabric-ios": "0.23.0",
78
84
  "@types/node": "^24.2.1",
79
85
  "bare-crypto": "^1.15.3",
80
86
  "bare-process": "^4.2.2",
@@ -96,22 +102,22 @@
96
102
  "typescript-eslint": "^8.63.0"
97
103
  },
98
104
  "dependencies": {
99
- "@qvac/fabric": "^0.22.0",
105
+ "@qvac/fabric": "^0.23.0",
100
106
  "@qvac/infer-base": "^0.8.0",
101
107
  "@qvac/logging": "^0.1.0",
102
108
  "bare-fs": "^4.5.1",
103
109
  "bare-path": "^3.0.0"
104
110
  },
105
111
  "optionalDependencies": {
106
- "@qvac/fabric-linux-x64": "^0.22.0",
107
- "@qvac/fabric-linux-arm64": "^0.22.0",
108
- "@qvac/fabric-darwin-arm64": "^0.22.0",
109
- "@qvac/fabric-darwin-x64": "^0.22.0",
110
- "@qvac/fabric-win32-x64": "^0.22.0"
112
+ "@qvac/fabric-linux-x64": "^0.23.0",
113
+ "@qvac/fabric-linux-arm64": "^0.23.0",
114
+ "@qvac/fabric-darwin-arm64": "^0.23.0",
115
+ "@qvac/fabric-darwin-x64": "^0.23.0",
116
+ "@qvac/fabric-win32-x64": "^0.23.0"
111
117
  },
112
118
  "peerDependencies": {
113
- "@qvac/fabric-android-arm64": "^0.22.0",
114
- "@qvac/fabric-ios": "^0.22.0"
119
+ "@qvac/fabric-android-arm64": "^0.23.0",
120
+ "@qvac/fabric-ios": "^0.23.0"
115
121
  },
116
122
  "peerDependenciesMeta": {
117
123
  "@qvac/fabric-android-arm64": {
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "current_versions": [
9
9
  {
10
- "version": "0.63"
10
+ "version": "0.64.1"
11
11
  }
12
12
  ],
13
13
  "exported_symbols": [
@@ -233,6 +233,7 @@
233
233
  "__ZNK30qvac_lib_inference_addon_llama8batching20RuntimeStatsSnapshot22prefillTokensPerSecondEv",
234
234
  "__ZN14TextLlmContext15checkAntipromptEmi",
235
235
  "__ZN10LlamaModel13setInitLoaderENSt3__18optionalIN10InitLoader11LOADER_TYPEEEENS1_I23FinetuneConfigOverridesEE",
236
+ "__ZN30qvac_lib_inference_addon_llama5utils21renderWithoutUserTurnEPK21common_chat_templatesRK28common_chat_templates_inputsRKNSt3__18functionIFNS7_6vectorIiNS7_9allocatorIiEEEERKNS7_12basic_stringIcNS7_11char_traitsIcEENSA_IcEEEEEEE",
236
237
  "__ZThn48_N14TextLlmContext18onDraftLogitsReadyEiijRKNSt3__18functionIFvRKNS0_12basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEEEE",
237
238
  "__ZNK30qvac_lib_inference_addon_llama8batching7Request13tokenToFeedAtEi",
238
239
  "__ZNK14MtmdLlmContext19residentStateTokensEv",
@@ -675,8 +676,9 @@
675
676
  "__ZThn40_N10LlamaModelD0Ev",
676
677
  "__ZNK14TextLlmContext9saveCacheERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
677
678
  "__ZThn48_NK14MtmdLlmContext28appendCheckpointsToCacheFileERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
678
- "__ZN30qvac_lib_inference_addon_llama8batching19MultiRequestBatcher6cancelEjRKNSt3__18functionIFvjEEE",
679
+ "__ZN30qvac_lib_inference_addon_llama5utils11hasUserTurnERKNSt3__16vectorI15common_chat_msgNS1_9allocatorIS3_EEEE",
679
680
  "__ZN30qvac_lib_inference_addon_llama7parsers26parseReasoningBudgetConfigENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE",
681
+ "__ZN30qvac_lib_inference_addon_llama8batching19MultiRequestBatcher6cancelEjRKNSt3__18functionIFvjEEE",
680
682
  "__ZN30qvac_lib_inference_addon_llama8batching22aggregateObservedStatsERKNSt3__16vectorINS0_20ObservedRequestStatsENS1_9allocatorIS3_EEEE",
681
683
  "__ZN14MtmdLlmContext11evalMessageERKNSt3__16vectorI15common_chat_msgNS0_9allocatorIS2_EEEEbb",
682
684
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchScheduler23cancelKeyDeferredLockedEv",
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "current_versions": [
9
9
  {
10
- "version": "0.63"
10
+ "version": "0.64.1"
11
11
  }
12
12
  ],
13
13
  "exported_symbols": [
@@ -896,6 +896,7 @@
896
896
  "__ZNK10LlamaModel23batchRuntimeStatsLockedEv",
897
897
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchScheduler15failGroupLockedERKNSt3__110shared_ptrINS1_10BatchGroupEEESt13exception_ptrNS1_15SaveCachePolicyE",
898
898
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchSchedulerC1E15LlmModelContextjjmiRK13common_paramsNSt3__18functionIFNS6_10unique_ptrI14SequenceDriverNS6_14default_deleteIS9_EEEES5_jiEEE",
899
+ "__ZN30qvac_lib_inference_addon_llama5utils21renderWithoutUserTurnEPK21common_chat_templatesRK28common_chat_templates_inputsRKNSt3__18functionIFNS7_6vectorIiNS7_9allocatorIiEEEERKNS7_12basic_stringIcNS7_11char_traitsIcEENSA_IcEEEEEEE",
899
900
  "__ZNK30qvac_lib_inference_addon_llama8batching7Request21chunkConsumesAllUnfedEj",
900
901
  "__ZN10LlamaModel7processERKNSt3__13anyE",
901
902
  "__ZThn48_N14MtmdLlmContext18onDraftLogitsReadyEiijRKNSt3__18functionIFvRKNS0_12basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEEEE",
@@ -1127,6 +1128,7 @@
1127
1128
  "__ZN14TextLlmContext29clearCacheReconciliationStateEv",
1128
1129
  "__ZN14MtmdLlmContext18adoptResidentStateERKNSt3__16vectorIiNS0_9allocatorIiEEEE",
1129
1130
  "__ZThn40_N10LlamaModelD0Ev",
1131
+ "__ZN30qvac_lib_inference_addon_llama5utils11hasUserTurnERKNSt3__16vectorI15common_chat_msgNS1_9allocatorIS3_EEEE",
1130
1132
  "__ZN30qvac_lib_inference_addon_llama8batching22aggregateObservedStatsERKNSt3__16vectorINS0_20ObservedRequestStatsENS1_9allocatorIS3_EEEE",
1131
1133
  "__ZN14MtmdLlmContext11evalMessageERKNSt3__16vectorI15common_chat_msgNS0_9allocatorIS2_EEEEbb",
1132
1134
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchScheduler23cancelKeyDeferredLockedEv",
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "current_versions": [
9
9
  {
10
- "version": "0.63"
10
+ "version": "0.64.1"
11
11
  }
12
12
  ],
13
13
  "exported_symbols": [
@@ -233,6 +233,7 @@
233
233
  "__ZNK30qvac_lib_inference_addon_llama8batching20RuntimeStatsSnapshot22prefillTokensPerSecondEv",
234
234
  "__ZN14TextLlmContext15checkAntipromptEmi",
235
235
  "__ZN10LlamaModel13setInitLoaderENSt3__18optionalIN10InitLoader11LOADER_TYPEEEENS1_I23FinetuneConfigOverridesEE",
236
+ "__ZN30qvac_lib_inference_addon_llama5utils21renderWithoutUserTurnEPK21common_chat_templatesRK28common_chat_templates_inputsRKNSt3__18functionIFNS7_6vectorIiNS7_9allocatorIiEEEERKNS7_12basic_stringIcNS7_11char_traitsIcEENSA_IcEEEEEEE",
236
237
  "__ZThn48_N14TextLlmContext18onDraftLogitsReadyEiijRKNSt3__18functionIFvRKNS0_12basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEEEE",
237
238
  "__ZNK30qvac_lib_inference_addon_llama8batching7Request13tokenToFeedAtEi",
238
239
  "__ZNK14MtmdLlmContext19residentStateTokensEv",
@@ -675,8 +676,9 @@
675
676
  "__ZThn40_N10LlamaModelD0Ev",
676
677
  "__ZNK14TextLlmContext9saveCacheERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
677
678
  "__ZThn48_NK14MtmdLlmContext28appendCheckpointsToCacheFileERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
678
- "__ZN30qvac_lib_inference_addon_llama8batching19MultiRequestBatcher6cancelEjRKNSt3__18functionIFvjEEE",
679
+ "__ZN30qvac_lib_inference_addon_llama5utils11hasUserTurnERKNSt3__16vectorI15common_chat_msgNS1_9allocatorIS3_EEEE",
679
680
  "__ZN30qvac_lib_inference_addon_llama7parsers26parseReasoningBudgetConfigENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE",
681
+ "__ZN30qvac_lib_inference_addon_llama8batching19MultiRequestBatcher6cancelEjRKNSt3__18functionIFvjEEE",
680
682
  "__ZN30qvac_lib_inference_addon_llama8batching22aggregateObservedStatsERKNSt3__16vectorINS0_20ObservedRequestStatsENS1_9allocatorIS3_EEEE",
681
683
  "__ZN14MtmdLlmContext11evalMessageERKNSt3__16vectorI15common_chat_msgNS0_9allocatorIS2_EEEEbb",
682
684
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchScheduler23cancelKeyDeferredLockedEv",
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "current_versions": [
9
9
  {
10
- "version": "0.63"
10
+ "version": "0.64.1"
11
11
  }
12
12
  ],
13
13
  "exported_symbols": [
@@ -233,6 +233,7 @@
233
233
  "__ZNK30qvac_lib_inference_addon_llama8batching20RuntimeStatsSnapshot22prefillTokensPerSecondEv",
234
234
  "__ZN14TextLlmContext15checkAntipromptEmi",
235
235
  "__ZN10LlamaModel13setInitLoaderENSt3__18optionalIN10InitLoader11LOADER_TYPEEEENS1_I23FinetuneConfigOverridesEE",
236
+ "__ZN30qvac_lib_inference_addon_llama5utils21renderWithoutUserTurnEPK21common_chat_templatesRK28common_chat_templates_inputsRKNSt3__18functionIFNS7_6vectorIiNS7_9allocatorIiEEEERKNS7_12basic_stringIcNS7_11char_traitsIcEENSA_IcEEEEEEE",
236
237
  "__ZThn48_N14TextLlmContext18onDraftLogitsReadyEiijRKNSt3__18functionIFvRKNS0_12basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEEEE",
237
238
  "__ZNK30qvac_lib_inference_addon_llama8batching7Request13tokenToFeedAtEi",
238
239
  "__ZNK14MtmdLlmContext19residentStateTokensEv",
@@ -675,8 +676,9 @@
675
676
  "__ZThn40_N10LlamaModelD0Ev",
676
677
  "__ZNK14TextLlmContext9saveCacheERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
677
678
  "__ZThn48_NK14MtmdLlmContext28appendCheckpointsToCacheFileERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
678
- "__ZN30qvac_lib_inference_addon_llama8batching19MultiRequestBatcher6cancelEjRKNSt3__18functionIFvjEEE",
679
+ "__ZN30qvac_lib_inference_addon_llama5utils11hasUserTurnERKNSt3__16vectorI15common_chat_msgNS1_9allocatorIS3_EEEE",
679
680
  "__ZN30qvac_lib_inference_addon_llama7parsers26parseReasoningBudgetConfigENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE",
681
+ "__ZN30qvac_lib_inference_addon_llama8batching19MultiRequestBatcher6cancelEjRKNSt3__18functionIFvjEEE",
680
682
  "__ZN30qvac_lib_inference_addon_llama8batching22aggregateObservedStatsERKNSt3__16vectorINS0_20ObservedRequestStatsENS1_9allocatorIS3_EEEE",
681
683
  "__ZN14MtmdLlmContext11evalMessageERKNSt3__16vectorI15common_chat_msgNS0_9allocatorIS2_EEEEbb",
682
684
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchScheduler23cancelKeyDeferredLockedEv",
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "current_versions": [
9
9
  {
10
- "version": "0.63"
10
+ "version": "0.64.1"
11
11
  }
12
12
  ],
13
13
  "exported_symbols": [
@@ -909,6 +909,7 @@
909
909
  "__ZNK10LlamaModel23batchRuntimeStatsLockedEv",
910
910
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchScheduler15failGroupLockedERKNSt3__110shared_ptrINS1_10BatchGroupEEESt13exception_ptrNS1_15SaveCachePolicyE",
911
911
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchSchedulerC1E15LlmModelContextjjmiRK13common_paramsNSt3__18functionIFNS6_10unique_ptrI14SequenceDriverNS6_14default_deleteIS9_EEEES5_jiEEE",
912
+ "__ZN30qvac_lib_inference_addon_llama5utils21renderWithoutUserTurnEPK21common_chat_templatesRK28common_chat_templates_inputsRKNSt3__18functionIFNS7_6vectorIiNS7_9allocatorIiEEEERKNS7_12basic_stringIcNS7_11char_traitsIcEENSA_IcEEEEEEE",
912
913
  "__ZNK30qvac_lib_inference_addon_llama8batching7Request21chunkConsumesAllUnfedEj",
913
914
  "__ZN10LlamaModel7processERKNSt3__13anyE",
914
915
  "__ZThn48_N14MtmdLlmContext18onDraftLogitsReadyEiijRKNSt3__18functionIFvRKNS0_12basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEEEE",
@@ -1140,6 +1141,7 @@
1140
1141
  "__ZN14TextLlmContext29clearCacheReconciliationStateEv",
1141
1142
  "__ZN14MtmdLlmContext18adoptResidentStateERKNSt3__16vectorIiNS0_9allocatorIiEEEE",
1142
1143
  "__ZThn40_N10LlamaModelD0Ev",
1144
+ "__ZN30qvac_lib_inference_addon_llama5utils11hasUserTurnERKNSt3__16vectorI15common_chat_msgNS1_9allocatorIS3_EEEE",
1143
1145
  "__ZN30qvac_lib_inference_addon_llama8batching22aggregateObservedStatsERKNSt3__16vectorINS0_20ObservedRequestStatsENS1_9allocatorIS3_EEEE",
1144
1146
  "__ZN14MtmdLlmContext11evalMessageERKNSt3__16vectorI15common_chat_msgNS0_9allocatorIS2_EEEEbb",
1145
1147
  "__ZN30qvac_lib_inference_addon_llama8batching24ContinuousBatchScheduler23cancelKeyDeferredLockedEv",