@qvac/translation-nmtcpp 0.19.0 → 0.19.2

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
@@ -562,6 +562,27 @@ TypeScript declarations ship with the package (`index.d.ts`).
562
562
 
563
563
  ### Methods
564
564
 
565
+ Call `TranslationNmtcpp.assessFit({ files, config, marginBytes? })` before
566
+ constructing a model to estimate whether its weights can load with the memory
567
+ free right now. `files` and `config` match the constructor; `files.model` must
568
+ be an absolute path. The synchronous result contains `status` (`fits`,
569
+ `does-not-fit`, or `error`), `reason`, `backend`, `modelBytes`, `requiredBytes`,
570
+ `freeBytes`, and a readable `report`. No model instance or weights are loaded.
571
+ The estimate budgets four times the model file size plus 512 MiB for copies,
572
+ tokenizers, and inference buffers; actual use varies by model. An indeterminate placement reports `error`
573
+ with `reason: 'insufficient-evidence'`. IndicTrans `main-gpu` selection currently
574
+ reports `unsupported-config`. Fit is a point-in-time estimate, so
575
+ another load can consume memory before `load()` runs.
576
+
577
+ ```js
578
+ const fit = TranslationNmtcpp.assessFit({
579
+ files: { model: '/absolute/path/to/model.bin' },
580
+ config: { modelType: TranslationNmtcpp.ModelTypes.IndicTrans },
581
+ marginBytes: 256 * 1024 * 1024
582
+ })
583
+ if (fit.status !== 'fits') console.log(fit.report)
584
+ ```
585
+
565
586
  - `load(): Promise<void>` — loads the model (both stages for pivot setups);
566
587
  reloads if already loaded. Rejects after `destroy()`.
567
588
  - `run(input: string): Promise<TranslationResponse>` — translates one text.
package/index.d.ts CHANGED
@@ -59,6 +59,8 @@ interface TranslationNmtcpp {
59
59
  */
60
60
  interface TranslationNmtcppConstructor {
61
61
  new (args: TranslationNmtcppArgs): TranslationNmtcpp;
62
+ /** Assess a model before loading it, using current device memory. */
63
+ assessFit(request: TranslationNmtcpp.FitRequest): TranslationNmtcpp.FitResult;
62
64
  /**
63
65
  * Available model types for translation
64
66
  */
@@ -74,6 +76,22 @@ declare const TranslationNmtcpp: TranslationNmtcppConstructor;
74
76
  * `module.exports` remains the bare class.
75
77
  */
76
78
  declare namespace TranslationNmtcpp {
79
+ interface FitRequest {
80
+ files: TranslationNmtcppFiles;
81
+ config: TranslationNmtcppConfig;
82
+ /** Additional free memory to reserve, in bytes. */
83
+ marginBytes?: number;
84
+ }
85
+ interface FitResult {
86
+ status: "fits" | "does-not-fit" | "error";
87
+ reason: string;
88
+ /** CPU or selected GGML device name. */
89
+ backend: string;
90
+ modelBytes: number;
91
+ requiredBytes: number;
92
+ freeBytes: number;
93
+ report: string;
94
+ }
77
95
  interface TranslationNmtcppFiles {
78
96
  model: string;
79
97
  srcVocab?: string;
package/index.js CHANGED
@@ -35,6 +35,24 @@ function resolveBackendsDir() {
35
35
  return fabricRoot;
36
36
  return path.join(__dirname, "prebuilds");
37
37
  }
38
+ function isAbsoluteModelPath(modelPath) {
39
+ return (modelPath.startsWith("/") ||
40
+ /^[A-Za-z]:[\\/]/.test(modelPath) ||
41
+ modelPath.startsWith("\\\\"));
42
+ }
43
+ function normalizeGpuAliases(config) {
44
+ for (const [canonical, alias] of [
45
+ ["use_gpu", "useGPU"],
46
+ ["gpu_backend", "gpuBackend"],
47
+ ["gpu_device", "gpuDevice"],
48
+ ["op_offload_min_batch", "opOffloadMinBatch"],
49
+ ]) {
50
+ if (config[canonical] === undefined && config[alias] !== undefined) {
51
+ config[canonical] = config[alias];
52
+ }
53
+ delete config[alias];
54
+ }
55
+ }
38
56
  class QvacIndicTransResponse extends infer_base_1.QvacResponse {
39
57
  processor;
40
58
  dstLang;
@@ -79,6 +97,48 @@ const TranslationNmtcpp = class TranslationNmtcpp {
79
97
  IndicTrans: "IndicTrans",
80
98
  Bergamot: "Bergamot",
81
99
  };
100
+ static assessFit(request) {
101
+ if (!request ||
102
+ !request.files ||
103
+ typeof request.files.model !== "string" ||
104
+ !isAbsoluteModelPath(request.files.model)) {
105
+ throw new TypeError("files.model must be an absolute path");
106
+ }
107
+ if (request.files.pivotModel && !isAbsoluteModelPath(request.files.pivotModel)) {
108
+ throw new TypeError("files.pivotModel must be an absolute path");
109
+ }
110
+ const modelType = request.config?.modelType;
111
+ if (modelType !== "IndicTrans" && modelType !== "Bergamot") {
112
+ throw new TypeError("config.modelType must be IndicTrans or Bergamot");
113
+ }
114
+ if (modelType === "IndicTrans" &&
115
+ (request.config["main-gpu"] !== undefined ||
116
+ request.config.main_gpu !== undefined)) {
117
+ return {
118
+ status: "error",
119
+ reason: "unsupported-config",
120
+ backend: "",
121
+ modelBytes: 0,
122
+ requiredBytes: 0,
123
+ freeBytes: 0,
124
+ report: "Fit with main-gpu selection is unavailable",
125
+ };
126
+ }
127
+ // eslint-disable-next-line @typescript-eslint/no-require-imports -- native binding is resolved lazily.
128
+ const binding = require("./binding");
129
+ if (typeof binding.assessFit !== "function") {
130
+ throw new Error("the translation-nmtcpp prebuild does not expose assessFit");
131
+ }
132
+ const config = { ...request.config };
133
+ normalizeGpuAliases(config);
134
+ return binding.assessFit({
135
+ ...request,
136
+ config: {
137
+ ...config,
138
+ backendsDir: request.config.backendsDir ?? resolveBackendsDir(),
139
+ },
140
+ });
141
+ }
82
142
  opts;
83
143
  logger;
84
144
  addon;
@@ -277,25 +337,7 @@ const TranslationNmtcpp = class TranslationNmtcpp {
277
337
  // expects snake_case (mirrors nmt_context_params field names), so we
278
338
  // translate camelCase → snake_case here. snake_case takes precedence
279
339
  // when both are present (explicit user choice wins over alias).
280
- if (otherConfig.use_gpu === undefined && otherConfig.useGPU !== undefined) {
281
- otherConfig.use_gpu = otherConfig.useGPU;
282
- }
283
- if (otherConfig.gpu_backend === undefined &&
284
- otherConfig.gpuBackend !== undefined) {
285
- otherConfig.gpu_backend = otherConfig.gpuBackend;
286
- }
287
- if (otherConfig.gpu_device === undefined &&
288
- otherConfig.gpuDevice !== undefined) {
289
- otherConfig.gpu_device = otherConfig.gpuDevice;
290
- }
291
- if (otherConfig.op_offload_min_batch === undefined &&
292
- otherConfig.opOffloadMinBatch !== undefined) {
293
- otherConfig.op_offload_min_batch = otherConfig.opOffloadMinBatch;
294
- }
295
- delete otherConfig.useGPU;
296
- delete otherConfig.gpuBackend;
297
- delete otherConfig.gpuDevice;
298
- delete otherConfig.opOffloadMinBatch;
340
+ normalizeGpuAliases(otherConfig);
299
341
  if (otherConfig.backendsDir === undefined) {
300
342
  otherConfig.backendsDir = resolveBackendsDir();
301
343
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qvac/translation-nmtcpp",
3
- "version": "0.19.0",
3
+ "version": "0.19.2",
4
4
  "description": "translation addon for qvac",
5
5
  "addon": true,
6
6
  "engines": {
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "current_versions": [
9
9
  {
10
- "version": "0.19"
10
+ "version": "0.19.2"
11
11
  }
12
12
  ],
13
13
  "exported_symbols": [
@@ -62,6 +62,7 @@
62
62
  "__ZTIN6marian6models20EncoderPoolerFactoryE",
63
63
  "__ZTIN6marian3mlp6OutputE",
64
64
  "__ZTSN6google8protobuf2io17ArrayOutputStreamE",
65
+ "__ZTCN6marian2io16OutputFileStreamE0_NSt3__113basic_ostreamIcNS2_11char_traitsIcEEEE",
65
66
  "__ZTSN6google8protobuf2io19OstreamOutputStreamE",
66
67
  "__ZN4absl12lts_2025081414flags_internal17kStrippedFlagHelpE",
67
68
  "__ZTSN6marian6models14EncoderFactoryE",
@@ -190,6 +191,7 @@
190
191
  "__ZTSN13sentencepiece23SentencePieceNormalizerE",
191
192
  "__ZTVN6google8protobuf2io24ConcatenatingInputStreamE",
192
193
  "__ZN6marian7FastOpt13uniqueNullPtrE",
194
+ "__ZTCN6marian2io13TemporaryFileE0_NSt3__113basic_ostreamIcNS2_11char_traitsIcEEEE",
193
195
  "__ZTIN6google8protobuf8internal12ExtensionSet20LazyMessageExtensionE",
194
196
  "__ZTIN6marian4data25LexicalShortlistGeneratorE",
195
197
  "__ZTSN13sentencepiece7unigram7LatticeE",
@@ -205,7 +207,6 @@
205
207
  "__ZTVN13sentencepiece24ModelProto_SentencePieceE",
206
208
  "__ZTSN4YAML11KeyNotFoundE",
207
209
  "__ZN24NmtLazyInitializeBackend13g_initializedE",
208
- "__ZTCN6marian2io13TemporaryFileE0_NSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE",
209
210
  "__ZTIN13sentencepiece4word5ModelE",
210
211
  "__ZN6google8protobuf8internal15ThreadSafeArena23lifecycle_id_generator_E",
211
212
  "__ZTSN6google8protobuf11MessageLiteE",
@@ -274,7 +275,6 @@
274
275
  "__ZTSN6marian2io16OutputFileStreamE",
275
276
  "__ZTVN4absl12lts_2025081413time_internal4cctz14ZoneInfoSourceE",
276
277
  "__ZTSN6Pathie9GlobErrorE",
277
- "__ZTCN6marian2io16OutputFileStreamE0_NSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE",
278
278
  "__ZTVN13sentencepiece12SelfTestDataE",
279
279
  "__ZN13sentencepiece11TrainerSpec5Impl_56_i_give_permission_to_break_this_code_default_unk_piece_E",
280
280
  "__ZTSN6google8protobuf8internal12ExtensionSet20LazyMessageExtensionE",
@@ -409,9 +409,9 @@
409
409
  "__ZTSN13sentencepiece4word7TrainerE",
410
410
  "__ZTIN6marian6models17ClassifierFactoryE",
411
411
  "__ZN13sentencepiece11TrainerSpec5Impl_56_i_give_permission_to_break_this_code_default_pad_piece_E",
412
+ "__ZTCN6marian2io15InputFileStreamE0_NSt3__113basic_istreamIcNS2_11char_traitsIcEEEE",
412
413
  "__ZTIN6google8protobuf2io16ArrayInputStreamE",
413
414
  "_deflate_copyright",
414
- "__ZTCN6marian2io15InputFileStreamE0_NSt3__113basic_istreamIcNS1_11char_traitsIcEEEE",
415
415
  "__ZN4absl12lts_2025081416numbers_internal9kHexTableE",
416
416
  "__ZN6google8protobuf11kuint128maxE",
417
417
  "__ZTIN4absl12lts_2025081413time_internal4cctz10TimeZoneIfE",
@@ -850,11 +850,11 @@
850
850
  "__ZN4YAMLlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEERKNS_4NodeE",
851
851
  "__ZN3ruy26IsObviouslyLinearTraversalEiiiiiRKNS_14CpuCacheParamsE",
852
852
  "__ZN6google8protobuf19WebSafeBase64EscapeENS0_20stringpiece_internal11StringPieceEPNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE",
853
- "__ZN6google8protobuf8internal26UnknownFieldSerializerLiteEPKhjjjPNS0_2io17CodedOutputStreamE",
854
853
  "__ZN6marian11concatenateERKNSt3__16vectorI12IntrusivePtrINS_9ChainableIS2_INS_10TensorBaseEEEEENS0_9allocatorIS7_EEEEi",
854
+ "__ZN6google8protobuf8internal26UnknownFieldSerializerLiteEPKhjjjPNS0_2io17CodedOutputStreamE",
855
855
  "__ZN6marian8bergamot13TextProcessorC1ENSt3__110shared_ptrINS_7OptionsEEERKNS0_6VocabsERKNS0_13AlignedVectorIcEE",
856
- "__ZNK4absl12lts_2025081414flags_internal15DynValueDeleterclEPv",
857
856
  "__ZN6google8protobuf8internal11SerialArena3NewENS2_6MemoryEPvPNS1_20ThreadSafeArenaStatsE",
857
+ "__ZNK4absl12lts_2025081414flags_internal15DynValueDeleterclEPv",
858
858
  "__ZN6google8protobuf2io24ConcatenatingInputStream4NextEPPKvPi",
859
859
  "__ZN6marian8bergamot13TextProcessorC1ENSt3__110shared_ptrINS_7OptionsEEERKNS0_6VocabsERKNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE",
860
860
  "__ZN13sentencepiece17SentencePieceTextC1ERKS0_",
@@ -3961,12 +3961,12 @@
3961
3961
  "__ZN3ruy9AllocatorD1Ev",
3962
3962
  "__ZN6google8protobuf2io18IstreamInputStream25CopyingIstreamInputStream4ReadEPvi",
3963
3963
  "__ZN6google8protobuf8internal20WriteLengthDelimitedEjNS0_20stringpiece_internal11StringPieceEPNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE",
3964
- "__ZNK13sentencepiece7unigram5Model20SampleEncodeAndScoreENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEfibb",
3965
3964
  "_pcre2_match_context_copy_8",
3966
3965
  "__ZN4YAML16EmitterExceptionD1Ev",
3967
3966
  "__ZN3ruy3Ctx19set_explicit_tuningENS_6TuningE",
3968
3967
  "__ZN4YAML11NodeBuilderD2Ev",
3969
3968
  "__ZN4YAML5Utils19ComputeStringFormatERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_13EMITTER_MANIPENS_8FlowType5valueEb",
3969
+ "__ZNK13sentencepiece7unigram5Model20SampleEncodeAndScoreENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEfibb",
3970
3970
  "__ZN6google8protobuf4util15status_internal20InvalidArgumentErrorENS0_20stringpiece_internal11StringPieceE",
3971
3971
  "__ZN13sentencepiece14NormalizerSpec21CheckTypeAndMergeFromERKN6google8protobuf11MessageLiteE",
3972
3972
  "__ZN2ug6ssplit14SentenceStreamrsERNSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE",
@@ -4084,8 +4084,8 @@
4084
4084
  "__ZN4absl12lts_2025081419str_format_internal13FormatArgImpl8DispatchIbEEbNS2_4DataENS1_24FormatConversionSpecImplEPv",
4085
4085
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE4SwapEPS9_",
4086
4086
  "__ZNK6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE14GetOwningArenaEv",
4087
+ "__ZZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask5startINSt3__19monostateEEEP10js_value_sP8js_env_sNS1_12CallbackDataIT_E4WorkENSB_7MarshalEENUlP11uv_handle_sE_8__invokeESF_",
4087
4088
  "__ZN9Microsoft3MSR4CNTK22ExceptionWithCallStackISt11logic_errorEC1ERKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEESD_",
4088
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm1EEE10__dispatchB8ne190102IOZNS0_6__ctorINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE19__generic_constructB8ne190102IRKNS0_18__copy_constructorISF_LNS0_6_TraitE1EEEEEvRSG_OT_EUlSP_E_JRKNS0_6__baseILSJ_1EJS8_xSE_EEEEEEDcSO_DpT0_",
4089
4089
  "__ZN4absl12lts_2025081418container_internal12raw_hash_setINS1_17FlatHashMapPolicyIyPN13sentencepiece3bpe7Trainer6SymbolEEENS0_13hash_internal4HashIyEENSt3__18equal_toIyEENSD_9allocatorINSD_4pairIKyS8_EEEEE46transfer_unprobed_elements_to_next_capacity_fnERNS1_12CommonFieldsEPKNS1_6ctrl_tEPvSR_PFvSR_hmmE",
4090
4090
  "__ZN3ruy7RunPackILNS_4PathE1ENS_17FixedKernelLayoutILNS_5OrderE0ELi1ELi1EEEaaEEvNS_6TuningERKNS_4EMatEPNS_5PEMatEii",
4091
4091
  "__ZN6google8protobuf13RepeatedFieldIyEC1ERKS2_",
@@ -4098,6 +4098,7 @@
4098
4098
  "__ZN6google8protobuf13RepeatedFieldIbE5beginEv",
4099
4099
  "__ZNK6google8protobuf13RepeatedFieldIdE2atEi",
4100
4100
  "__ZN6google8protobuf13RepeatedFieldIiE3SetEiRKi",
4101
+ "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask13onCloseHandleINSt3__19monostateEEEvP11uv_handle_s",
4101
4102
  "__ZN6google8protobuf13RepeatedFieldIiE3AddEv",
4102
4103
  "__ZNK4absl12lts_2025081416strings_internal11BigUnsignedILi4EE8ToStringEv",
4103
4104
  "__ZNK6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE6rbeginEv",
@@ -4293,6 +4294,7 @@
4293
4294
  "__ZN6google8protobuf13RepeatedFieldIbE18InternalDeallocateEPNS2_3RepEib",
4294
4295
  "__ZN6google8protobuf8internal21arena_destruct_objectINS1_19ImplicitWeakMessageEEEvPv",
4295
4296
  "__ZN6google8protobuf13RepeatedFieldIjED2Ev",
4297
+ "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask13onEnvTeardownINSt3__19monostateEEEvP22js_deferred_teardown_sPv",
4296
4298
  "__ZN6google8protobuf13RepeatedFieldIjE5beginEv",
4297
4299
  "__ZNK6google8protobuf13RepeatedFieldIfE4cendEv",
4298
4300
  "__ZN6google8protobuf13RepeatedFieldIxE7ReserveEi",
@@ -4320,7 +4322,6 @@
4320
4322
  "__ZNK6google8protobuf13RepeatedFieldIiE5beginEv",
4321
4323
  "__ZN4absl12lts_2025081418container_internal12raw_hash_setINS1_17FlatHashMapPolicyINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEExEENS1_10StringHashENS1_8StringEqENS8_INS4_4pairIKSA_xEEEEE46transfer_unprobed_elements_to_next_capacity_fnERNS1_12CommonFieldsEPKNS1_6ctrl_tEPvSO_PFvSO_hmmE",
4322
4324
  "__ZN6google8protobuf13RepeatedFieldIfE18AddAlreadyReservedERKf",
4323
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm2ELm2EEE10__dispatchB8ne190102IOZNS0_12__assignmentINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE16__generic_assignB8ne190102IRKNS0_17__copy_assignmentISF_LNS0_6_TraitE1EEEEEvOT_EUlRSN_OT0_E_JRNS0_6__baseILSJ_1EJS8_xSE_EEERKSV_EEEDcSN_DpT0_",
4324
4325
  "__ZNK6google8protobuf13RepeatedFieldIiE2atEi",
4325
4326
  "__ZNK6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE3endEv",
4326
4327
  "__ZN6google8protobuf13RepeatedFieldIdE18AddAlreadyReservedEv",
@@ -4361,7 +4362,6 @@
4361
4362
  "__ZN4absl12lts_2025081419internal_stacktrace16ShouldFixUpStackEv",
4362
4363
  "__ZN6google8protobuf8internal16RepeatedIteratorIxEC1EPx",
4363
4364
  "__ZN6google8protobuf13RepeatedFieldIxEC2ERKS2_",
4364
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm0ELm0EEE10__dispatchB8ne190102IOZNS0_12__assignmentINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE16__generic_assignB8ne190102IRKNS0_17__copy_assignmentISF_LNS0_6_TraitE1EEEEEvOT_EUlRSN_OT0_E_JRNS0_6__baseILSJ_1EJS8_xSE_EEERKSV_EEEDcSN_DpT0_",
4365
4365
  "__ZNK6google8protobuf13RepeatedFieldIjE4cendEv",
4366
4366
  "__ZN4absl12lts_2025081419str_format_internal13FormatArgImpl8DispatchINS1_7VoidPtrEEEbNS2_4DataENS1_24FormatConversionSpecImplEPv",
4367
4367
  "__ZN4absl12lts_2025081418container_internal29TryFindNewIndexWithoutProbingIvEEmmmmPNS1_6ctrl_tEm",
@@ -4417,7 +4417,6 @@
4417
4417
  "__ZNK6google8protobuf13RepeatedFieldIdE4dataEv",
4418
4418
  "__ZN6google8protobuf8internal16RepeatedIteratorIxEpLEl",
4419
4419
  "__ZN6google8protobuf8internal16RepeatedIteratorIdEmmEi",
4420
- "__ZZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask3runEP8js_env_sNSt3__18functionIFvvEEEENUlP11uv_handle_sE_8__invokeES9_",
4421
4420
  "__ZN28qvac_lib_inference_addon_cpp6logger8JsLogger13asyncCallbackEP10uv_async_s",
4422
4421
  "__ZN6google8protobuf8internal16RepeatedIteratorIxEmIEl",
4423
4422
  "__ZN6google8protobuf13RepeatedFieldIfE6ResizeEiRKf",
@@ -4427,7 +4426,6 @@
4427
4426
  "__ZN6google8protobuf13RepeatedFieldIyE8TruncateEi",
4428
4427
  "__ZN4absl12lts_2025081419functional_internal12InvokeObjectIZNS0_18container_internal12raw_hash_setINS3_17FlatHashSetPolicyINSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEEENS3_10StringHashENS3_8StringEqENSA_ISC_EEE13destroy_slotsEvEUlPKNS3_6ctrl_tEPvE_vJSK_SL_EEET0_NS1_7VoidPtrEDpNS1_8ForwardTIT1_E4typeE",
4429
4428
  "__ZN4absl12lts_2025081416strings_internal11BigUnsignedILi4EE8Digits10Ev",
4430
- "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask13onCloseHandleEP11uv_handle_s",
4431
4429
  "__ZNK6google8protobuf13RepeatedFieldIbE3GetEi",
4432
4430
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC1ERKS9_",
4433
4431
  "__ZN4absl12lts_2025081419str_format_internal13FormatArgImpl8DispatchIhEEbNS2_4DataENS1_24FormatConversionSpecImplEPv",
@@ -4458,7 +4456,6 @@
4458
4456
  "__ZN6google8protobuf13RepeatedFieldIjEC2EPNS0_5ArenaE",
4459
4457
  "__ZN4absl12lts_202508149Condition10AlwaysTrueEPKS1_",
4460
4458
  "__ZN6google8protobuf8internal16RepeatedIteratorIyEmIEl",
4461
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm1ELm1EEE10__dispatchB8ne190102IOZNS0_12__assignmentINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE16__generic_assignB8ne190102IRKNS0_17__copy_assignmentISF_LNS0_6_TraitE1EEEEEvOT_EUlRSN_OT0_E_JRNS0_6__baseILSJ_1EJS8_xSE_EEERKSV_EEEDcSN_DpT0_",
4462
4459
  "__ZN3ruy9RunKernelINS_6KernelILNS_4PathE32EaaiiEEE3RunENS_6TuningERKNS_8SidePairINS_5PEMatEEEPKvRKNS6_IiEESF_PNS_4EMatE",
4463
4460
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2ERKS9_",
4464
4461
  "__ZN6google8protobuf13RepeatedFieldIbE18AddAlreadyReservedEv",
@@ -4661,7 +4658,6 @@
4661
4658
  "__ZNK6google8protobuf8internal16RepeatedIteratorIyEptEv",
4662
4659
  "__ZN4absl12lts_2025081414flags_internal7FlagOpsIiEEPvNS1_6FlagOpEPKvS3_S3_",
4663
4660
  "__ZNK6google8protobuf8internal16RepeatedIteratorIbEplEl",
4664
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm1EEE10__dispatchB8ne190102IONS1_9__variant15__value_visitorIZZN28qvac_lib_inference_addon_cpp9out_handl27JsRuntimeStatsOutputHandlerC1EvENKUlRKNS_6vectorINS_4pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_7variantIJdxEEEEENSG_ISL_EEEEE_clESP_EUlOT_E_EEJRKNS0_6__baseILNS0_6_TraitE0EJdxEEEEEEDcSR_DpT0_",
4665
4661
  "__ZN6google8protobuf13RepeatedFieldIyEC1EOS2_",
4666
4662
  "__ZN6google8protobuf8internal16RepeatedIteratorIxEppEi",
4667
4663
  "__ZNK4absl12lts_2025081416strings_internal11BigUnsignedILi84EE8ToStringEv",
@@ -4682,11 +4678,10 @@
4682
4678
  "_AbslInternalPerThreadSemPoke_lts_20250814",
4683
4679
  "__ZN4absl12lts_2025081416strings_internal11BigUnsignedILi84EE22MultiplyByFiveToTheNthEi",
4684
4680
  "__ZN6google8protobuf13RepeatedFieldIjEC1EPNS0_5ArenaE",
4685
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm2ELm2EEE10__dispatchB8ne190102IOZNS0_12__assignmentINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE16__generic_assignB8ne190102INS0_17__move_assignmentISF_LNS0_6_TraitE1EEEEEvOT_EUlRSL_OT0_E_JRNS0_6__baseILSJ_1EJS8_xSE_EEEOST_EEEDcSL_DpT0_",
4681
+ "__ZThn16_NK9Microsoft3MSR4CNTK22ExceptionWithCallStackISt11logic_errorE9CallStackEv",
4686
4682
  "__ZNK6google8protobuf13RepeatedFieldIyE3repEv",
4687
4683
  "__ZN4absl12lts_2025081416strings_internal11BigUnsignedILi4EEC1Ey",
4688
4684
  "__ZNK6google8protobuf13RepeatedFieldIyE4dataEv",
4689
- "__ZThn16_NK9Microsoft3MSR4CNTK22ExceptionWithCallStackISt11logic_errorE9CallStackEv",
4690
4685
  "__ZNK6google8protobuf13RepeatedFieldIxE3GetEi",
4691
4686
  "__ZZN28qvac_lib_inference_addon_cpp16OutputCallBackJs16drainAndTeardownEPNS0_5StateEbbENUlP11uv_handle_sE_8__invokeES4_",
4692
4687
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2EOS9_",
@@ -4698,6 +4693,7 @@
4698
4693
  "__ZN6google8protobuf13RepeatedFieldIbE9MoveArrayEPbS3_i",
4699
4694
  "__ZN4absl12lts_2025081419str_format_internal13FormatArgImpl8DispatchINSt3__117basic_string_viewIwNS4_11char_traitsIwEEEEEEbNS2_4DataENS1_24FormatConversionSpecImplEPv",
4700
4695
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE4rendEv",
4696
+ "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask10onCompleteINSt3__19monostateEEEvP10uv_async_s",
4701
4697
  "__ZN6google8protobuf13RepeatedFieldIdE10RemoveLastEv",
4702
4698
  "__ZN6google8protobuf8internal21arena_destruct_objectINS0_16RepeatedPtrFieldINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEEvPv",
4703
4699
  "__ZN8any_type4typeIxE2idEv",
@@ -4708,9 +4704,8 @@
4708
4704
  "__ZN8any_type4typeINSt3__16vectorImNS1_9allocatorImEEEEE2idEv",
4709
4705
  "__ZN4absl12lts_2025081418container_internal12raw_hash_setINS1_17FlatHashMapPolicyINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEyEENS1_10StringHashENS1_8StringEqENS8_INS4_4pairIKSA_yEEEEE19transfer_n_slots_fnEPvSJ_SJ_m",
4710
4706
  "__ZN3fmt8internal9MakeValueINS_14BasicFormatterIcNS0_17BasicArgFormatterIcEEEEE17format_custom_argINSt3__117basic_string_viewIcNS8_11char_traitsIcEEEEEEvPvPKvSD_",
4711
- "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask10onCompleteEP10uv_async_s",
4712
- "__ZN3PHF4hashINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEEjP3phfT_",
4713
4707
  "__ZN6google8protobuf13RepeatedFieldIfE15ExtractSubrangeEiiPf",
4708
+ "__ZN3PHF4hashINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEEjP3phfT_",
4714
4709
  "__ZN6google8protobuf8internal16RepeatedIteratorIiEppEi",
4715
4710
  "__ZN6marian15fastopt_helpers2AsIfE5applyERKNS_7FastOptE",
4716
4711
  "__ZN6marian5inits10fromVectorIjEENSt3__110shared_ptrINS0_15NodeInitializerEEEONS2_6vectorIT_NS2_9allocatorIS7_EEEE",
@@ -4747,12 +4742,10 @@
4747
4742
  "__ZNK6google8protobuf8internal16RepeatedIteratorIjEdeEv",
4748
4743
  "__ZN4absl12lts_2025081416strings_internal11BigUnsignedILi4EE12AddWithCarryEiy",
4749
4744
  "__ZN4absl12lts_2025081416strings_internal11BigUnsignedILi4EEC2Ey",
4750
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm0EEE10__dispatchB8ne190102IOZNS0_6__ctorINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE19__generic_constructB8ne190102IRKNS0_18__copy_constructorISF_LNS0_6_TraitE1EEEEEvRSG_OT_EUlSP_E_JRKNS0_6__baseILSJ_1EJS8_xSE_EEEEEEDcSO_DpT0_",
4751
4745
  "__ZN6marian15fastopt_helpers2AsImE5applyERKNS_7FastOptE",
4752
4746
  "__ZN6google8protobuf13RepeatedFieldIjE18AddAlreadyReservedEv",
4753
4747
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE22UnsafeArenaReleaseLastEv",
4754
4748
  "__ZN3fmt8internal9MakeValueINS_14BasicFormatterIcNS0_17BasicArgFormatterIcEEEEE17format_custom_argIN6marian5ShapeEEEvPvPKvSA_",
4755
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm2EEE10__dispatchB8ne190102IOZNS0_6__ctorINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE19__generic_constructB8ne190102IRKNS0_18__copy_constructorISF_LNS0_6_TraitE1EEEEEvRSG_OT_EUlSP_E_JRKNS0_6__baseILSJ_1EJS8_xSE_EEEEEEDcSO_DpT0_",
4756
4749
  "__ZN6google8protobuf8internal16RepeatedIteratorIdEC2Ev",
4757
4750
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE15ExtractSubrangeEiiPPS8_",
4758
4751
  "__ZN6google8protobuf13RepeatedFieldIjEC2ERKS2_",
@@ -4768,7 +4761,6 @@
4768
4761
  "__ZN5faiss9HeapArrayINS_4CMaxIfxEEE7heapifyEv",
4769
4762
  "__ZN4absl12lts_2025081419str_format_internal13ConvertIntArgItEEbT_NS1_24FormatConversionSpecImplEPNS1_14FormatSinkImplE",
4770
4763
  "__ZN6google8protobuf13RepeatedFieldIiE3endEv",
4771
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm0EEE10__dispatchB8ne190102IOZNS0_6__ctorINS0_8__traitsIJdxNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE19__generic_constructB8ne190102IRKNS0_18__copy_constructorISE_LNS0_6_TraitE1EEEEEvRSF_OT_EUlSO_E_JRKNS0_6__baseILSI_1EJdxSD_EEEEEEDcSN_DpT0_",
4772
4764
  "__ZN6google8protobuf13RepeatedFieldIiE12InternalSwapEPS2_",
4773
4765
  "__ZN6google8protobuf13RepeatedFieldIiEC2EOS2_",
4774
4766
  "_AbslInternalMutexYield_lts_20250814",
@@ -4784,7 +4776,6 @@
4784
4776
  "__ZNK6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE4cendEv",
4785
4777
  "__ZNK6google8protobuf13RepeatedFieldIjE26SpaceUsedExcludingSelfLongEv",
4786
4778
  "__ZThn16_NK9Microsoft3MSR4CNTK22ExceptionWithCallStackISt13runtime_errorE9CallStackEv",
4787
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm0EEE10__dispatchB8ne190102IONS1_9__variant15__value_visitorIZZN28qvac_lib_inference_addon_cpp9out_handl27JsRuntimeStatsOutputHandlerC1EvENKUlRKNS_6vectorINS_4pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_7variantIJdxEEEEENSG_ISL_EEEEE_clESP_EUlOT_E_EEJRKNS0_6__baseILNS0_6_TraitE0EJdxEEEEEEDcSR_DpT0_",
4788
4779
  "__ZNK6google8protobuf13RepeatedFieldIbE5beginEv",
4789
4780
  "__ZNK6google8protobuf13RepeatedFieldIfE26SpaceUsedExcludingSelfLongEv",
4790
4781
  "__ZN4absl12lts_2025081418container_internal23TypeErasedApplyToSlotFnINS0_13hash_internal4HashIjEEjLb1EEEmPKvPvm",
@@ -4799,13 +4790,11 @@
4799
4790
  "__ZN6google8protobuf13RepeatedFieldIyE3AddERKy",
4800
4791
  "__ZN6google8protobuf13RepeatedFieldIxE5eraseENS0_8internal16RepeatedIteratorIKxEE",
4801
4792
  "__ZN6google8protobuf13RepeatedFieldIbE5ClearEv",
4802
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm1EEE10__dispatchB8ne190102IOZNS0_6__ctorINS0_8__traitsIJdxNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE19__generic_constructB8ne190102IRKNS0_18__copy_constructorISE_LNS0_6_TraitE1EEEEEvRSF_OT_EUlSO_E_JRKNS0_6__baseILSI_1EJdxSD_EEEEEEDcSN_DpT0_",
4803
4793
  "__ZN6google8protobuf13RepeatedFieldIxE6ResizeEiRKx",
4804
4794
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE14ReleaseClearedEv",
4805
4795
  "__ZN4absl12lts_2025081419str_format_internal13ConvertIntArgIlEEbT_NS1_24FormatConversionSpecImplEPNS1_14FormatSinkImplE",
4806
4796
  "__ZN6google8protobuf13RepeatedFieldIdE3Rep8elementsEv",
4807
4797
  "__ZN6google8protobuf8internal16RepeatedIteratorIiEppEv",
4808
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm0ELm0EEE10__dispatchB8ne190102IOZNS0_12__assignmentINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE16__generic_assignB8ne190102INS0_17__move_assignmentISF_LNS0_6_TraitE1EEEEEvOT_EUlRSL_OT0_E_JRNS0_6__baseILSJ_1EJS8_xSE_EEEOST_EEEDcSL_DpT0_",
4809
4798
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE6rbeginEv",
4810
4799
  "__ZN4absl12lts_2025081416strings_internal11BigUnsignedILi84EEC2Ev",
4811
4800
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12SwapElementsEii",
@@ -4865,7 +4854,6 @@
4865
4854
  "__ZN6google8protobuf13RepeatedFieldIjEC2EOS2_",
4866
4855
  "__ZN28qvac_lib_inference_addon_cpp16OutputCallBackJs13onEnvTeardownEPv",
4867
4856
  "__ZNK6google8protobuf13RepeatedFieldIiE4dataEv",
4868
- "__ZN28qvac_lib_inference_addon_cpp2js11JsAsyncTask13onEnvTeardownEP22js_deferred_teardown_sPv",
4869
4857
  "__ZN6google8protobuf13RepeatedFieldIiE3AddERKi",
4870
4858
  "__ZN6marian5inits10fromVectorIfEENSt3__110shared_ptrINS0_15NodeInitializerEEERKNS2_6vectorIT_NS2_9allocatorIS7_EEEE",
4871
4859
  "__ZN4absl12lts_2025081416strings_internal11BigUnsignedILi84EE10MultiplyByEiPKj",
@@ -4879,7 +4867,6 @@
4879
4867
  "__ZN6marian10TensorBase5debugIdEENSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEii",
4880
4868
  "__ZNK6google8protobuf13RepeatedFieldIdE8GetArenaEv",
4881
4869
  "__ZN6google8protobuf8internal16RepeatedIteratorIiEpLEl",
4882
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm1ELm1EEE10__dispatchB8ne190102IOZNS0_12__assignmentINS0_8__traitsIJNS_9monostateExNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE16__generic_assignB8ne190102INS0_17__move_assignmentISF_LNS0_6_TraitE1EEEEEvOT_EUlRSL_OT0_E_JRNS0_6__baseILSJ_1EJS8_xSE_EEEOST_EEEDcSL_DpT0_",
4883
4870
  "__ZNK6google8protobuf13RepeatedFieldIbE3repEv",
4884
4871
  "__ZNK6google8protobuf13RepeatedFieldIxE26SpaceUsedExcludingSelfLongEv",
4885
4872
  "__ZN5faiss9HeapArrayINS_4CMinIfxEEE13addn_with_idsEmPKfPKxxmx",
@@ -4929,7 +4916,6 @@
4929
4916
  "__ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE3AddEv",
4930
4917
  "__ZNK6google8protobuf13RepeatedFieldIdE4sizeEv",
4931
4918
  "__ZN6marian15fastopt_helpers2AsIiE5applyERKNS_7FastOptE",
4932
- "__ZNSt3__116__variant_detail12__visitation6__base12__dispatcherIJLm2EEE10__dispatchB8ne190102IOZNS0_6__ctorINS0_8__traitsIJdxNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEEE19__generic_constructB8ne190102IRKNS0_18__copy_constructorISE_LNS0_6_TraitE1EEEEEvRSF_OT_EUlSO_E_JRKNS0_6__baseILSI_1EJdxSD_EEEEEEDcSN_DpT0_",
4933
4919
  "__ZN3ruy7RunPackILNS_4PathE16ENS_17FixedKernelLayoutILNS_5OrderE0ELi16ELi4EEEaaEEvNS_6TuningERKNS_4EMatEPNS_5PEMatEii",
4934
4920
  "__ZN6google8protobuf13RepeatedFieldIbE6rbeginEv",
4935
4921
  "__ZN6google8protobuf13RepeatedFieldIdEC1EPNS0_5ArenaE",
@@ -4969,6 +4955,7 @@
4969
4955
  "__ZN6google8protobuf13RepeatedFieldIjE6rbeginEv",
4970
4956
  "__ZN6google8protobuf8internal16RepeatedIteratorIyEmmEv",
4971
4957
  "__ZN6google8protobuf8internal21arena_destruct_objectINS1_16InternalMetadata9ContainerINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEEEEEvPv",
4958
+ "__ZN28qvac_lib_inference_addon_nmt9assessFitEP8js_env_sP18js_callback_info_s",
4972
4959
  "__ZN6google8protobuf13RepeatedFieldIxED1Ev",
4973
4960
  "__ZNK6google8protobuf13RepeatedFieldIxE4sizeEv",
4974
4961
  "__ZN6google8protobuf13RepeatedFieldIfE5ClearEv",