@tryhamster/gerbil 1.11.2 → 1.11.4

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.
Files changed (45) hide show
  1. package/dist/cli.mjs +7 -7
  2. package/dist/cli.mjs.map +1 -1
  3. package/dist/frameworks/express.mjs +1 -1
  4. package/dist/frameworks/fastify.mjs +1 -1
  5. package/dist/frameworks/hono.mjs +1 -1
  6. package/dist/frameworks/next.d.mts +2 -2
  7. package/dist/frameworks/next.mjs +1 -1
  8. package/dist/frameworks/trpc.mjs +1 -1
  9. package/dist/{gerbil-Cs8L0iVm.d.mts → gerbil-5_80K0gA.d.mts} +2 -2
  10. package/dist/{gerbil-Cs8L0iVm.d.mts.map → gerbil-5_80K0gA.d.mts.map} +1 -1
  11. package/dist/gerbil-CTefAwKp.mjs +4 -0
  12. package/dist/{gerbil-CfNSSpgW.mjs → gerbil-CYVmU8sQ.mjs} +2 -2
  13. package/dist/{gerbil-CfNSSpgW.mjs.map → gerbil-CYVmU8sQ.mjs.map} +1 -1
  14. package/dist/gpu/hooks.d.mts +1 -1
  15. package/dist/gpu/index.d.mts +1 -1
  16. package/dist/gpu/index.mjs +2 -2
  17. package/dist/{gpu-BQ8I-VDx.mjs → gpu-CrzjQHv2.mjs} +38 -19
  18. package/dist/{gpu-BQ8I-VDx.mjs.map → gpu-CrzjQHv2.mjs.map} +1 -1
  19. package/dist/{index-t_hY-XWW.d.mts → index-h8TDu1qm.d.mts} +21 -1
  20. package/dist/{index-t_hY-XWW.d.mts.map → index-h8TDu1qm.d.mts.map} +1 -1
  21. package/dist/index.d.mts +2 -2
  22. package/dist/index.mjs +4 -4
  23. package/dist/integrations/ai-sdk.mjs +1 -1
  24. package/dist/integrations/langchain.mjs +1 -1
  25. package/dist/integrations/llamaindex.mjs +1 -1
  26. package/dist/integrations/mcp.d.mts +2 -2
  27. package/dist/integrations/mcp.mjs +4 -4
  28. package/dist/{mcp-BITYRhF6.mjs → mcp-CAsD7eCj.mjs} +3 -3
  29. package/dist/{mcp-BITYRhF6.mjs.map → mcp-CAsD7eCj.mjs.map} +1 -1
  30. package/dist/{moonshine-stt-BI-5UmD_.mjs → moonshine-stt-BXoZaHJE.mjs} +12 -1
  31. package/dist/moonshine-stt-BXoZaHJE.mjs.map +1 -0
  32. package/dist/moonshine-stt-DZVnKgPO.mjs +4 -0
  33. package/dist/{one-liner-BLz8g6Gz.mjs → one-liner-ppgw4jHH.mjs} +2 -2
  34. package/dist/{one-liner-BLz8g6Gz.mjs.map → one-liner-ppgw4jHH.mjs.map} +1 -1
  35. package/dist/{repl-CXCSbfES.mjs → repl-C0Ew7_Z-.mjs} +3 -3
  36. package/dist/skills/index.d.mts +4 -4
  37. package/dist/skills/index.mjs +3 -3
  38. package/dist/{skills-BPQb-p5b.mjs → skills-CQa1Gshd.mjs} +2 -2
  39. package/dist/{skills-BPQb-p5b.mjs.map → skills-CQa1Gshd.mjs.map} +1 -1
  40. package/dist/tune/index.d.mts.map +1 -1
  41. package/dist/tune/index.mjs +1 -1
  42. package/package.json +1 -1
  43. package/dist/gerbil-Cq20PKtz.mjs +0 -4
  44. package/dist/moonshine-stt-BI-5UmD_.mjs.map +0 -1
  45. package/dist/moonshine-stt-CZ00EdnB.mjs +0 -4
@@ -1,6 +1,6 @@
1
1
  import { a as resolveDefaultRepo, i as isTTSRepo, n as OUTETTS_ASSETS, r as OUTETTS_PRESET_VOICES, t as DEFAULT_MODELS } from "./defaults-DfGx4d1m.mjs";
2
2
  import { A as kaniSinTensor, C as computeKaniPositions, D as kaniAttentionLayerIndices, E as generateNanoCodecDecoderGraph, F as CANONICAL_KEYS, I as DTYPE_BYTES, L as GEMMA4_VIS_KEYS, M as parseKaniConfig, N as DEFAULT_GROUP_SIZE, O as kaniCosTensor, S as buildKaniLayerCosSin, T as generateKaniTtsGraph, a as PARLER_DAC_LATENT_DIM, b as KANI_START_OF_HUMAN, c as PARLER_SAMPLE_RATE, d as generateParlerEncoderGraph, f as parseParlerConfig, i as PARLER_DAC_DECODER_DIM, k as kaniLayerAlpha, l as buildT5RelativeBias, o as PARLER_DECODER_RATES, p as revertDelayPattern, r as PARLER_BOS_TOKEN_ID, s as PARLER_EOS_TOKEN_ID, u as generateParlerDecoderGraph, x as audioTokensToCodes, y as KANI_END_OF_HUMAN } from "./architectures-DmZMEFsA.mjs";
3
- import { C as createUniformBuffer, D as verifyGPU, E as initGPU, S as createStorageBuffer, T as getOrCreatePipeline, a as loadModel, b as clearPipelineCache, c as loadParlerTTS, d as remapPrunedToken, g as fetchAdapter, h as buildLoRADeltas, i as loadKaniTTS, l as quantizeBackboneInt4, p as Executor, r as createKeyMapperForArch, s as loadOuteTTS, u as quantizeKaniBackbone, v as KERNEL_REGISTRY, w as destroyBuffers, x as createBindGroup, y as MATMUL_BIAS_F16C_SPEC } from "./moonshine-stt-BI-5UmD_.mjs";
3
+ import { C as createUniformBuffer, D as verifyGPU, E as initGPU, S as createStorageBuffer, T as getOrCreatePipeline, a as loadModel, b as clearPipelineCache, c as loadParlerTTS, d as remapPrunedToken, g as fetchAdapter, h as buildLoRADeltas, i as loadKaniTTS, l as quantizeBackboneInt4, p as Executor, r as createKeyMapperForArch, s as loadOuteTTS, u as quantizeKaniBackbone, v as KERNEL_REGISTRY, w as destroyBuffers, x as createBindGroup, y as MATMUL_BIAS_F16C_SPEC } from "./moonshine-stt-BXoZaHJE.mjs";
4
4
 
5
5
  //#region src/gpu/architectures/gemma4_vision.ts
6
6
  /**
@@ -5579,6 +5579,19 @@ var WebGPUEngine = class WebGPUEngine {
5579
5579
  release();
5580
5580
  }
5581
5581
  }
5582
+ /**
5583
+ * Resolve the end-of-turn stop token id, or null if the model has none.
5584
+ *
5585
+ * Chat models like Gemma 4 end an assistant turn with a dedicated end-of-turn
5586
+ * token (`<turn|>`, id 106) rather than the generic `<eos>`. Every text-decode
5587
+ * loop must treat it as a stop token or the model runs on past its answer and
5588
+ * repeats until it hits `maxTokens`. Resolved from the tokenizer's added tokens
5589
+ * so it is null for models without a turn delimiter (Qwen, LFM2, …), leaving
5590
+ * their decode behaviour unchanged.
5591
+ */
5592
+ resolveEndOfTurnId() {
5593
+ return this.tokenizer.tokenToId("<turn|>") ?? this.tokenizer.tokenToId("<end_of_turn>");
5594
+ }
5582
5595
  async _generateLocked(prompt, options = {}) {
5583
5596
  this.checkDestroyed();
5584
5597
  const { maxTokens = 512, stopSequences = [], sampling = {}, systemPrompt, onToken } = options;
@@ -5615,10 +5628,11 @@ var WebGPUEngine = class WebGPUEngine {
5615
5628
  let finishReason = "max_tokens";
5616
5629
  let generatedText = "";
5617
5630
  const eosId = this.tokenizer.config.eosTokenId;
5631
+ const eotId = this.resolveEndOfTurnId();
5618
5632
  const decodeStart = performance.now();
5619
5633
  const consumeToken = (nextToken) => {
5620
5634
  generatedIds.push(nextToken);
5621
- if (eosId !== null && nextToken === eosId) {
5635
+ if (eosId !== null && nextToken === eosId || eotId !== null && nextToken === eotId) {
5622
5636
  finishReason = "eos";
5623
5637
  return true;
5624
5638
  }
@@ -5645,9 +5659,10 @@ var WebGPUEngine = class WebGPUEngine {
5645
5659
  };
5646
5660
  const mmDecode = hasMRoPE;
5647
5661
  let mmLogicalPos = inputIds.length;
5662
+ const streamsPle = this.executor.hasPleSource();
5648
5663
  const keepPlan = this.config.vocabKeepPlan;
5649
5664
  const remapTok = keepPlan ? (i) => remapPrunedToken(i, keepPlan) : (i) => i;
5650
- if (isGreedy && !this.executor.needsMultiEncoder && !mmDecode) {
5665
+ if (isGreedy && !this.executor.needsMultiEncoder && !mmDecode && !streamsPle) {
5651
5666
  const firstToken = remapTok(sampleToken(logits, sampling, [...inputIds, ...generatedIds]));
5652
5667
  if (!consumeToken(firstToken)) {
5653
5668
  const depth = Executor.PIPELINE_DEPTH;
@@ -5664,19 +5679,22 @@ var WebGPUEngine = class WebGPUEngine {
5664
5679
  if (consumeToken(tok)) break;
5665
5680
  }
5666
5681
  }
5667
- } else for (let step = 0; step < maxTokens; step++) {
5668
- let nextToken;
5669
- if (step === 0 || !isGreedy) nextToken = remapTok(sampleToken(logits, sampling, [...inputIds, ...generatedIds]));
5670
- else {
5671
- if (mmDecode) this.writeMRoPEDecodeStep(this.executor.currentSeqPos, mmLogicalPos);
5672
- nextToken = await this.executor.forwardArgmax(new Uint32Array([generatedIds[generatedIds.length - 1]]));
5673
- mmLogicalPos++;
5674
- }
5675
- if (consumeToken(nextToken)) break;
5676
- if (!isGreedy) {
5677
- if (mmDecode) this.writeMRoPEDecodeStep(this.executor.currentSeqPos, mmLogicalPos);
5678
- logits = (await this.executor.forward(new Uint32Array([nextToken]))).logits;
5679
- mmLogicalPos++;
5682
+ } else {
5683
+ const useCpuForward = !isGreedy || streamsPle;
5684
+ for (let step = 0; step < maxTokens; step++) {
5685
+ let nextToken;
5686
+ if (step === 0 || useCpuForward) nextToken = remapTok(sampleToken(logits, sampling, [...inputIds, ...generatedIds]));
5687
+ else {
5688
+ if (mmDecode) this.writeMRoPEDecodeStep(this.executor.currentSeqPos, mmLogicalPos);
5689
+ nextToken = await this.executor.forwardArgmax(new Uint32Array([generatedIds[generatedIds.length - 1]]));
5690
+ mmLogicalPos++;
5691
+ }
5692
+ if (consumeToken(nextToken)) break;
5693
+ if (useCpuForward) {
5694
+ if (mmDecode) this.writeMRoPEDecodeStep(this.executor.currentSeqPos, mmLogicalPos);
5695
+ logits = (await this.executor.forward(new Uint32Array([nextToken]))).logits;
5696
+ mmLogicalPos++;
5697
+ }
5680
5698
  }
5681
5699
  }
5682
5700
  const totalTime = performance.now() - startTime;
@@ -6161,7 +6179,7 @@ var WebGPUEngine = class WebGPUEngine {
6161
6179
  let finishReason = "max_tokens";
6162
6180
  let generatedText = "";
6163
6181
  const eosId = this.tokenizer.config.eosTokenId;
6164
- const eotId = this.tokenizer.tokenToId("<turn|>");
6182
+ const eotId = this.resolveEndOfTurnId();
6165
6183
  const consumeToken = (nextToken) => {
6166
6184
  generatedIds.push(nextToken);
6167
6185
  if (eosId !== null && nextToken === eosId || eotId !== null && nextToken === eotId) {
@@ -6238,10 +6256,11 @@ var WebGPUEngine = class WebGPUEngine {
6238
6256
  let finishReason = "max_tokens";
6239
6257
  let generatedText = "";
6240
6258
  const eosId = this.tokenizer.config.eosTokenId;
6259
+ const eotId = this.resolveEndOfTurnId();
6241
6260
  let mmLogicalPos = decodeStartPos;
6242
6261
  const consumeToken = (nextToken) => {
6243
6262
  generatedIds.push(nextToken);
6244
- if (eosId !== null && nextToken === eosId) {
6263
+ if (eosId !== null && nextToken === eosId || eotId !== null && nextToken === eotId) {
6245
6264
  finishReason = "eos";
6246
6265
  return true;
6247
6266
  }
@@ -6762,4 +6781,4 @@ var WebGPUEngine = class WebGPUEngine {
6762
6781
 
6763
6782
  //#endregion
6764
6783
  export { dequantizeGemma4VisionProjection as A, audioTokensToDacCodes as C, parseOuteTtsConfig as D, generateOuteTtsBackboneGraph as E, generateGemma4VisionGraph as M, patchGemma4VisionClips as N, KaniTTS as O, resolveGemma4VisionInfo as P, loadOuteSpeaker as S, generateDacSpeechDecoderGraph as T, smartResize as _, buildGemma4PosEmbeds as a, OuteTTS as b, buildMRoPECosSin as c, buildPositionIds as d, buildRotaryCosSin as f, preprocessImageGemma4 as g, preprocessImage as h, buildGemma4PoolMatrix as i, dequantizeMLXProjection as j, generateQwen3_5VisionGraph as k, buildMRoPEPositionIds as l, mropeFreqDims as m, GEMMA4_IMAGE_PROCESSOR as n, buildGemma4RotaryCosSin as o, buildVisionPositionTensors as p, QWEN3_5_IMAGE_PROCESSOR as r, buildGemma4VisionPositionTensors as s, WebGPUEngine as t, buildPosEmbeds as u, VisionExecutor as v, dacOutputLength as w, buildOutePromptString as x, ParlerTTS as y };
6765
- //# sourceMappingURL=gpu-BQ8I-VDx.mjs.map
6784
+ //# sourceMappingURL=gpu-CrzjQHv2.mjs.map