@tryhamster/gerbil 1.0.0-rc.2 → 1.0.0-rc.21

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 (88) hide show
  1. package/README.md +66 -6
  2. package/dist/browser/{index.d.mts → index.d.ts} +596 -5
  3. package/dist/browser/index.d.ts.map +1 -0
  4. package/dist/browser/{index.mjs → index.js} +1589 -298
  5. package/dist/browser/index.js.map +1 -0
  6. package/dist/{chrome-backend-Y9F7W5VQ.mjs → chrome-backend-CORwaIyC.mjs} +1 -1
  7. package/dist/{chrome-backend-Y9F7W5VQ.mjs.map → chrome-backend-CORwaIyC.mjs.map} +1 -1
  8. package/dist/{chrome-backend-JEPeM2YE.mjs → chrome-backend-DIKYoWj-.mjs} +1 -1
  9. package/dist/cli.mjs +16 -16
  10. package/dist/cli.mjs.map +1 -1
  11. package/dist/frameworks/express.d.mts +1 -1
  12. package/dist/frameworks/express.mjs +4 -4
  13. package/dist/frameworks/fastify.d.mts +1 -1
  14. package/dist/frameworks/fastify.mjs +3 -3
  15. package/dist/frameworks/hono.d.mts +1 -1
  16. package/dist/frameworks/hono.mjs +3 -3
  17. package/dist/frameworks/next.d.mts +2 -2
  18. package/dist/frameworks/next.mjs +3 -3
  19. package/dist/frameworks/react.d.mts +1 -1
  20. package/dist/frameworks/trpc.d.mts +1 -1
  21. package/dist/frameworks/trpc.mjs +3 -3
  22. package/dist/{gerbil-yoSpRHgv.mjs → gerbil-BZklpDhM.mjs} +475 -19
  23. package/dist/gerbil-BZklpDhM.mjs.map +1 -0
  24. package/dist/gerbil-CAMb_nrK.mjs +5 -0
  25. package/dist/{gerbil-POAz8peb.d.mts → gerbil-DJygY0sJ.d.mts} +120 -2
  26. package/dist/gerbil-DJygY0sJ.d.mts.map +1 -0
  27. package/dist/index.d.mts +20 -4
  28. package/dist/index.d.mts.map +1 -1
  29. package/dist/index.mjs +6 -7
  30. package/dist/index.mjs.map +1 -1
  31. package/dist/integrations/ai-sdk.d.mts +72 -3
  32. package/dist/integrations/ai-sdk.d.mts.map +1 -1
  33. package/dist/integrations/ai-sdk.mjs +109 -7
  34. package/dist/integrations/ai-sdk.mjs.map +1 -1
  35. package/dist/integrations/langchain.d.mts +1 -1
  36. package/dist/integrations/langchain.mjs +3 -3
  37. package/dist/integrations/llamaindex.d.mts +1 -1
  38. package/dist/integrations/llamaindex.mjs +3 -3
  39. package/dist/integrations/mcp-client.mjs +2 -2
  40. package/dist/integrations/mcp.d.mts +2 -2
  41. package/dist/integrations/mcp.mjs +6 -6
  42. package/dist/kokoro-BNTb6egA.mjs +20210 -0
  43. package/dist/kokoro-BNTb6egA.mjs.map +1 -0
  44. package/dist/{mcp-Bitg4sjX.mjs → mcp-ZCC5OR7B.mjs} +3 -3
  45. package/dist/{mcp-Bitg4sjX.mjs.map → mcp-ZCC5OR7B.mjs.map} +1 -1
  46. package/dist/{one-liner-B1rmFto6.mjs → one-liner-mH5SKPvT.mjs} +2 -2
  47. package/dist/{one-liner-B1rmFto6.mjs.map → one-liner-mH5SKPvT.mjs.map} +1 -1
  48. package/dist/repl-CSM1IBP1.mjs +9 -0
  49. package/dist/skills/index.d.mts +2 -2
  50. package/dist/skills/index.mjs +5 -5
  51. package/dist/{skills-5DxAV-rn.mjs → skills-CPB_9YfF.mjs} +12 -12
  52. package/dist/skills-CPB_9YfF.mjs.map +1 -0
  53. package/dist/stt-1WIefHwc.mjs +3 -0
  54. package/dist/{stt-Bv_dum-R.mjs → stt-CG_7KB_0.mjs} +3 -2
  55. package/dist/stt-CG_7KB_0.mjs.map +1 -0
  56. package/dist/{tools-IYPrqoek.mjs → tools-Bi1P7Xoy.mjs} +2 -2
  57. package/dist/{tools-IYPrqoek.mjs.map → tools-Bi1P7Xoy.mjs.map} +1 -1
  58. package/dist/{tts-5yWeP_I0.mjs → tts-B1pZMlDv.mjs} +1 -1
  59. package/dist/{tts-DG6denWG.mjs → tts-CyHhcLtN.mjs} +6 -4
  60. package/dist/tts-CyHhcLtN.mjs.map +1 -0
  61. package/dist/{types-s6Py2_DL.d.mts → types-evP8RShr.d.mts} +26 -2
  62. package/dist/types-evP8RShr.d.mts.map +1 -0
  63. package/dist/{utils-CkB4Roi6.mjs → utils-CZBZ8dgR.mjs} +1 -1
  64. package/dist/{utils-CkB4Roi6.mjs.map → utils-CZBZ8dgR.mjs.map} +1 -1
  65. package/docs/ai-sdk.md +56 -1
  66. package/docs/architecture/overview.md +15 -7
  67. package/docs/browser.md +103 -0
  68. package/docs/embeddings.md +311 -0
  69. package/docs/tts.md +11 -8
  70. package/package.json +6 -6
  71. package/dist/browser/index.d.mts.map +0 -1
  72. package/dist/browser/index.mjs.map +0 -1
  73. package/dist/gerbil-DeQlX_Mt.mjs +0 -5
  74. package/dist/gerbil-POAz8peb.d.mts.map +0 -1
  75. package/dist/gerbil-yoSpRHgv.mjs.map +0 -1
  76. package/dist/models-BAtL8qsA.mjs +0 -171
  77. package/dist/models-BAtL8qsA.mjs.map +0 -1
  78. package/dist/models-CE0fBq0U.d.mts +0 -22
  79. package/dist/models-CE0fBq0U.d.mts.map +0 -1
  80. package/dist/repl-D20JO260.mjs +0 -10
  81. package/dist/skills-5DxAV-rn.mjs.map +0 -1
  82. package/dist/stt-Bv_dum-R.mjs.map +0 -1
  83. package/dist/stt-KzSoNvwI.mjs +0 -3
  84. package/dist/tts-DG6denWG.mjs.map +0 -1
  85. package/dist/types-s6Py2_DL.d.mts.map +0 -1
  86. /package/dist/{auto-update-DsWBBnEk.mjs → auto-update-S9s5-g0C.mjs} +0 -0
  87. /package/dist/{chunk-Ct1HF2bE.mjs → chunk-CkXuGtQK.mjs} +0 -0
  88. /package/dist/{microphone-D-6y9aiE.mjs → microphone-DaMZFRuR.mjs} +0 -0
package/README.md CHANGED
@@ -11,8 +11,10 @@
11
11
  <p align="center">
12
12
  <a href="#install">Install</a> •
13
13
  <a href="#quick-start">Quick Start</a> •
14
+ <a href="#embeddings">Embeddings</a> •
14
15
  <a href="#text-to-speech">TTS</a> •
15
16
  <a href="#speech-to-text">STT</a> •
17
+ <a href="./docs/vision.md">Vision</a> •
16
18
  <a href="./docs/ai-sdk.md">AI SDK</a> •
17
19
  <a href="./docs/cli.md">CLI</a>
18
20
  </p>
@@ -45,7 +47,9 @@ const text = await gerbil("Explain recursion in one sentence");
45
47
  - **Zero Config** — `npx @tryhamster/gerbil "your prompt"` just works
46
48
  - **Local & Private** — No API keys, no data leaves your machine
47
49
  - **GPU Accelerated** — WebGPU with CPU fallback
48
- - **Complete Audio** — Text-to-Speech (Kokoro) & Speech-to-Text (Whisper)
50
+ - **Embeddings** — Semantic search, similarity, RAG
51
+ - **Vision** — Analyze images with Ministral 3B
52
+ - **Complete Audio** — Text-to-Speech (Kokoro/Supertonic) & Speech-to-Text (Whisper)
49
53
  - **Framework Ready** — AI SDK v5, Next.js, Express, LangChain
50
54
  - **Skills System** — Built-in + custom skills with Zod validation
51
55
  - **Tool Calling** — Agentic capabilities with Qwen3 models
@@ -65,6 +69,30 @@ npm install @tryhamster/gerbil
65
69
 
66
70
  After global install, use `gerbil` directly instead of `npx @tryhamster/gerbil`.
67
71
 
72
+ ## Model Preloading
73
+
74
+ Download models ahead of time so users don't wait:
75
+
76
+ ```typescript
77
+ import { Gerbil } from "@tryhamster/gerbil";
78
+
79
+ const g = new Gerbil();
80
+
81
+ // Option 1: Preload for later (download only, free memory)
82
+ await g.preloadModel("qwen3-0.6b", {
83
+ onProgress: (p) => console.log(p.status, p.progress),
84
+ });
85
+ // Later: loads from disk cache (fast, no network)
86
+ await g.loadModel("qwen3-0.6b");
87
+
88
+ // Option 2: Preload and keep in memory (instant use)
89
+ await g.preloadModel("qwen3-0.6b", { keepLoaded: true });
90
+ // Instant - no loading needed
91
+ await g.generate("Hello");
92
+ ```
93
+
94
+ Works for all model types: `preloadTTS()`, `preloadSTT()`, `preloadEmbedding()`.
95
+
68
96
  ## Quick Start
69
97
 
70
98
  ```typescript
@@ -93,6 +121,30 @@ const data = await g.json("Extract: John, 32, NYC", {
93
121
  });
94
122
  ```
95
123
 
124
+ ## Embeddings
125
+
126
+ Generate semantic embeddings for search, similarity, and RAG:
127
+
128
+ ```typescript
129
+ // Compare two texts
130
+ const similarity = await g.similarity("Hello world", "Hi there");
131
+ console.log(similarity.score); // 0.85
132
+
133
+ // Semantic search
134
+ const results = await g.search("capital of France", [
135
+ "Paris is beautiful",
136
+ "London is in England",
137
+ "Dogs are pets"
138
+ ]);
139
+ // [{ text: "Paris is beautiful", score: 0.89, index: 0 }, ...]
140
+
141
+ // Generate embedding vector
142
+ const { vector } = await g.embed("Hello world");
143
+ // number[384]
144
+ ```
145
+
146
+ 📖 **[Full Embeddings Documentation →](./docs/embeddings.md)**
147
+
96
148
  ## Text-to-Speech
97
149
 
98
150
  Generate natural speech locally using Kokoro TTS (28 voices):
@@ -272,8 +324,12 @@ function Chat() {
272
324
  | Model | Size | Best For |
273
325
  |-------|------|----------|
274
326
  | `qwen3-0.6b` | ~400MB | General use, reasoning (thinking mode) |
327
+ | `qwen2.5-0.5b` | ~350MB | Fast and capable |
275
328
  | `qwen2.5-coder-0.5b` | ~400MB | Code generation |
276
- | `smollm2-135m` | ~100MB | Quick completions |
329
+ | `smollm2-360m` | ~250MB | Fast, simple tasks |
330
+ | `smollm2-135m` | ~100MB | Fastest, basic |
331
+ | `phi-3-mini` | ~2.1GB | High quality |
332
+ | `ministral-3b` | ~2.5GB | **Vision** + reasoning, 256k context |
277
333
 
278
334
  Use any HuggingFace model: `npx @tryhamster/gerbil -m hf:org/model "prompt"`
279
335
 
@@ -281,22 +337,26 @@ Use any HuggingFace model: `npx @tryhamster/gerbil -m hf:org/model "prompt"`
281
337
 
282
338
  | Model | Type | Size | Notes |
283
339
  |-------|------|------|-------|
284
- | `kokoro-82m` | TTS | ~330MB | 28 voices, English |
340
+ | `kokoro-82m` | TTS | ~330MB | 28 voices, English (default) |
341
+ | `supertonic-66m` | TTS | ~250MB | 4 voices, 44.1kHz, faster |
285
342
  | `whisper-tiny.en` | STT | 39MB | English, fastest |
286
343
  | `whisper-base.en` | STT | 74MB | English, balanced |
287
- | `whisper-small` | STT | 244MB | 80+ languages |
344
+ | `whisper-small` | STT | 244MB | Multilingual, 80+ languages |
345
+ | `whisper-large-v3-turbo` | STT | 809MB | Best quality, 5.4x faster than v3 |
288
346
 
289
347
  ## Documentation
290
348
 
291
349
  | Guide | Description |
292
350
  |-------|-------------|
293
- | [📖 Text-to-Speech](./docs/tts.md) | Kokoro TTS, 28 voices, streaming audio |
351
+ | [📖 Embeddings](./docs/embeddings.md) | Semantic search, similarity, RAG |
352
+ | [📖 Vision](./docs/vision.md) | Image analysis with Ministral 3B |
353
+ | [📖 Text-to-Speech](./docs/tts.md) | Kokoro & Supertonic TTS, streaming audio |
294
354
  | [📖 Speech-to-Text](./docs/stt.md) | Whisper STT, transcription, voice input |
295
355
  | [📖 Browser](./docs/browser.md) | WebGPU inference, React hooks |
296
356
  | [📖 Skills](./docs/skills.md) | Built-in skills, custom skill development |
297
357
  | [📖 Tools](./docs/tools.md) | Tool calling, agentic workflows |
298
358
  | [📖 REPL](./docs/repl.md) | Interactive terminal dashboard |
299
- | [📖 AI SDK](./docs/ai-sdk.md) | Vercel AI SDK v5 (LLM, TTS, STT) |
359
+ | [📖 AI SDK](./docs/ai-sdk.md) | Vercel AI SDK v5 (LLM, TTS, STT, Embeddings) |
300
360
  | [📖 Frameworks](./docs/frameworks.md) | Next.js, Express, React, LangChain |
301
361
  | [📖 CLI](./docs/cli.md) | All CLI commands and options |
302
362
  | [📖 MCP Server](./docs/mcp.md) | MCP server for Claude Desktop & Cursor |