@tryhamster/gerbil 1.0.0-rc.0 → 1.0.0-rc.10

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 (114) hide show
  1. package/README.md +79 -14
  2. package/dist/auto-update-S9s5-g0C.mjs +3 -0
  3. package/dist/browser/index.d.ts +1009 -0
  4. package/dist/browser/index.d.ts.map +1 -0
  5. package/dist/browser/index.js +2492 -0
  6. package/dist/browser/index.js.map +1 -0
  7. package/dist/{chrome-backend-C5Un08O4.mjs → chrome-backend-CORwaIyC.mjs} +514 -73
  8. package/dist/chrome-backend-CORwaIyC.mjs.map +1 -0
  9. package/dist/{chrome-backend-CtwPENIW.mjs → chrome-backend-DIKYoWj-.mjs} +1 -1
  10. package/dist/cli.mjs +3359 -647
  11. package/dist/cli.mjs.map +1 -1
  12. package/dist/frameworks/express.d.mts +1 -1
  13. package/dist/frameworks/express.mjs +3 -4
  14. package/dist/frameworks/express.mjs.map +1 -1
  15. package/dist/frameworks/fastify.d.mts +1 -1
  16. package/dist/frameworks/fastify.mjs +2 -3
  17. package/dist/frameworks/fastify.mjs.map +1 -1
  18. package/dist/frameworks/hono.d.mts +1 -1
  19. package/dist/frameworks/hono.mjs +2 -3
  20. package/dist/frameworks/hono.mjs.map +1 -1
  21. package/dist/frameworks/next.d.mts +2 -2
  22. package/dist/frameworks/next.mjs +2 -3
  23. package/dist/frameworks/next.mjs.map +1 -1
  24. package/dist/frameworks/react.d.mts +1 -1
  25. package/dist/frameworks/trpc.d.mts +1 -1
  26. package/dist/frameworks/trpc.mjs +2 -3
  27. package/dist/frameworks/trpc.mjs.map +1 -1
  28. package/dist/gerbil-DJGqq7BX.mjs +4 -0
  29. package/dist/gerbil-DoDGHe6Z.mjs +1631 -0
  30. package/dist/gerbil-DoDGHe6Z.mjs.map +1 -0
  31. package/dist/gerbil-qOTe1nl2.d.mts +431 -0
  32. package/dist/gerbil-qOTe1nl2.d.mts.map +1 -0
  33. package/dist/index.d.mts +411 -9
  34. package/dist/index.d.mts.map +1 -1
  35. package/dist/index.mjs +7 -6
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/integrations/ai-sdk.d.mts +122 -4
  38. package/dist/integrations/ai-sdk.d.mts.map +1 -1
  39. package/dist/integrations/ai-sdk.mjs +238 -11
  40. package/dist/integrations/ai-sdk.mjs.map +1 -1
  41. package/dist/integrations/langchain.d.mts +132 -2
  42. package/dist/integrations/langchain.d.mts.map +1 -1
  43. package/dist/integrations/langchain.mjs +175 -8
  44. package/dist/integrations/langchain.mjs.map +1 -1
  45. package/dist/integrations/llamaindex.d.mts +1 -1
  46. package/dist/integrations/llamaindex.mjs +2 -3
  47. package/dist/integrations/llamaindex.mjs.map +1 -1
  48. package/dist/integrations/mcp-client.mjs +4 -4
  49. package/dist/integrations/mcp-client.mjs.map +1 -1
  50. package/dist/integrations/mcp.d.mts +2 -2
  51. package/dist/integrations/mcp.d.mts.map +1 -1
  52. package/dist/integrations/mcp.mjs +5 -6
  53. package/dist/kokoro-BNTb6egA.mjs +20210 -0
  54. package/dist/kokoro-BNTb6egA.mjs.map +1 -0
  55. package/dist/kokoro-CMOGDSgT.js +20212 -0
  56. package/dist/kokoro-CMOGDSgT.js.map +1 -0
  57. package/dist/{mcp-R8kRLIKb.mjs → mcp-kzDDWIoS.mjs} +10 -37
  58. package/dist/mcp-kzDDWIoS.mjs.map +1 -0
  59. package/dist/microphone-DaMZFRuR.mjs +3 -0
  60. package/dist/{one-liner-BUQR0nqq.mjs → one-liner-DxnNs_JK.mjs} +2 -2
  61. package/dist/{one-liner-BUQR0nqq.mjs.map → one-liner-DxnNs_JK.mjs.map} +1 -1
  62. package/dist/repl-DGUw4fCc.mjs +9 -0
  63. package/dist/skills/index.d.mts +305 -14
  64. package/dist/skills/index.d.mts.map +1 -1
  65. package/dist/skills/index.mjs +5 -6
  66. package/dist/skills-DulrOPeP.mjs +1435 -0
  67. package/dist/skills-DulrOPeP.mjs.map +1 -0
  68. package/dist/stt-1WIefHwc.mjs +3 -0
  69. package/dist/stt-CG_7KB_0.mjs +434 -0
  70. package/dist/stt-CG_7KB_0.mjs.map +1 -0
  71. package/dist/stt-Dne6SENv.js +434 -0
  72. package/dist/stt-Dne6SENv.js.map +1 -0
  73. package/dist/{tools-BsiEE6f2.mjs → tools-Bi1P7Xoy.mjs} +6 -7
  74. package/dist/{tools-BsiEE6f2.mjs.map → tools-Bi1P7Xoy.mjs.map} +1 -1
  75. package/dist/transformers.web-DiD1gTwk.js +44695 -0
  76. package/dist/transformers.web-DiD1gTwk.js.map +1 -0
  77. package/dist/transformers.web-u34VxRFM.js +3 -0
  78. package/dist/tts-B1pZMlDv.mjs +3 -0
  79. package/dist/tts-C2FzKuSx.js +725 -0
  80. package/dist/tts-C2FzKuSx.js.map +1 -0
  81. package/dist/tts-CyHhcLtN.mjs +731 -0
  82. package/dist/tts-CyHhcLtN.mjs.map +1 -0
  83. package/dist/types-CiTc7ez3.d.mts +353 -0
  84. package/dist/types-CiTc7ez3.d.mts.map +1 -0
  85. package/dist/{utils-7vXqtq2Q.mjs → utils-CZBZ8dgR.mjs} +1 -1
  86. package/dist/{utils-7vXqtq2Q.mjs.map → utils-CZBZ8dgR.mjs.map} +1 -1
  87. package/docs/ai-sdk.md +137 -21
  88. package/docs/browser.md +241 -2
  89. package/docs/memory.md +72 -0
  90. package/docs/stt.md +494 -0
  91. package/docs/tts.md +569 -0
  92. package/docs/vision.md +396 -0
  93. package/package.json +21 -22
  94. package/dist/auto-update-BbNHbSU1.mjs +0 -3
  95. package/dist/browser/index.d.mts +0 -262
  96. package/dist/browser/index.d.mts.map +0 -1
  97. package/dist/browser/index.mjs +0 -755
  98. package/dist/browser/index.mjs.map +0 -1
  99. package/dist/chrome-backend-C5Un08O4.mjs.map +0 -1
  100. package/dist/gerbil-BfnsFWRE.mjs +0 -644
  101. package/dist/gerbil-BfnsFWRE.mjs.map +0 -1
  102. package/dist/gerbil-BjW-z7Fq.mjs +0 -5
  103. package/dist/gerbil-DZ1k3ChC.d.mts +0 -138
  104. package/dist/gerbil-DZ1k3ChC.d.mts.map +0 -1
  105. package/dist/mcp-R8kRLIKb.mjs.map +0 -1
  106. package/dist/models-DKULvhOr.mjs +0 -136
  107. package/dist/models-DKULvhOr.mjs.map +0 -1
  108. package/dist/models-De2-_GmQ.d.mts +0 -22
  109. package/dist/models-De2-_GmQ.d.mts.map +0 -1
  110. package/dist/skills-D3CEpgDc.mjs +0 -630
  111. package/dist/skills-D3CEpgDc.mjs.map +0 -1
  112. package/dist/types-BS1N92Jt.d.mts +0 -183
  113. package/dist/types-BS1N92Jt.d.mts.map +0 -1
  114. /package/dist/{chunk-Ct1HF2bE.mjs → chunk-CkXuGtQK.mjs} +0 -0
package/README.md CHANGED
@@ -5,15 +5,15 @@
5
5
  <h1 align="center">Gerbil</h1>
6
6
 
7
7
  <p align="center">
8
- <strong>Local LLM inference for Node.js. GPU-accelerated. Zero config.</strong>
8
+ <strong>Local AI inference for Node.js. LLM, TTS, STT. GPU-accelerated. Zero config.</strong>
9
9
  </p>
10
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="#skills">Skills</a> •
14
+ <a href="#text-to-speech">TTS</a> •
15
+ <a href="#speech-to-text">STT</a> •
15
16
  <a href="./docs/ai-sdk.md">AI SDK</a> •
16
- <a href="./docs/frameworks.md">Frameworks</a> •
17
17
  <a href="./docs/cli.md">CLI</a>
18
18
  </p>
19
19
 
@@ -45,6 +45,7 @@ const text = await gerbil("Explain recursion in one sentence");
45
45
  - **Zero Config** — `npx @tryhamster/gerbil "your prompt"` just works
46
46
  - **Local & Private** — No API keys, no data leaves your machine
47
47
  - **GPU Accelerated** — WebGPU with CPU fallback
48
+ - **Complete Audio** — Text-to-Speech (Kokoro) & Speech-to-Text (Whisper)
48
49
  - **Framework Ready** — AI SDK v5, Next.js, Express, LangChain
49
50
  - **Skills System** — Built-in + custom skills with Zod validation
50
51
  - **Tool Calling** — Agentic capabilities with Qwen3 models
@@ -92,6 +93,55 @@ const data = await g.json("Extract: John, 32, NYC", {
92
93
  });
93
94
  ```
94
95
 
96
+ ## Text-to-Speech
97
+
98
+ Generate natural speech locally using Kokoro TTS (28 voices):
99
+
100
+ ```typescript
101
+ const result = await g.speak("Hello, I'm Gerbil!", { voice: "af_heart" });
102
+ // result.audio = Float32Array, result.sampleRate = 24000
103
+
104
+ // Stream long text
105
+ for await (const chunk of g.speakStream("Long paragraph...")) {
106
+ // Play each chunk as it's generated
107
+ }
108
+ ```
109
+
110
+ ```bash
111
+ # CLI
112
+ gerbil speak "Hello world" --voice bf_emma
113
+ ```
114
+
115
+ 📖 **[Full TTS Documentation →](./docs/tts.md)**
116
+
117
+ ## Speech-to-Text
118
+
119
+ Transcribe audio locally using Whisper (7 models, 80+ languages):
120
+
121
+ ```typescript
122
+ import { readFileSync } from "fs";
123
+
124
+ const audio = new Uint8Array(readFileSync("recording.wav"));
125
+ const result = await g.transcribe(audio);
126
+ console.log(result.text);
127
+
128
+ // With timestamps
129
+ const result = await g.transcribe(audio, { timestamps: true });
130
+ for (const seg of result.segments) {
131
+ console.log(`[${seg.start}s] ${seg.text}`);
132
+ }
133
+
134
+ // Record from microphone
135
+ const result = await g.listen(5000); // 5 seconds
136
+ ```
137
+
138
+ ```bash
139
+ # CLI
140
+ gerbil transcribe audio.wav --timestamps
141
+ ```
142
+
143
+ 📖 **[Full STT Documentation →](./docs/stt.md)**
144
+
95
145
  ## Skills
96
146
 
97
147
  Built-in AI skills with Zod-validated inputs:
@@ -169,6 +219,8 @@ gerbil "Write a haiku" # Generate text
169
219
  gerbil commit # Commit message from staged changes
170
220
  gerbil summarize README.md # Summarize file
171
221
  gerbil chat --thinking # Interactive chat
222
+ gerbil speak "Hello world" --voice af_heart # Text-to-speech
223
+ gerbil transcribe audio.wav # Speech-to-text
172
224
  gerbil serve --mcp # MCP server for Claude/Cursor
173
225
  gerbil update # Update to latest version
174
226
  ```
@@ -204,17 +256,19 @@ function Chat() {
204
256
 
205
257
  | Integration | Import | Docs |
206
258
  |-------------|--------|------|
207
- | **Browser** | `@tryhamster/gerbil/browser` | [📖 Browser Guide](./docs/browser.md) |
208
- | **AI SDK v5** | `@tryhamster/gerbil/ai` | [📖 AI SDK Guide](./docs/ai-sdk.md) |
259
+ | **Browser** | `@tryhamster/gerbil/browser` | [📖 Browser](./docs/browser.md) |
260
+ | **AI SDK v5** | `@tryhamster/gerbil/ai` | [📖 AI SDK](./docs/ai-sdk.md) |
209
261
  | **Next.js** | `@tryhamster/gerbil/next` | [📖 Frameworks](./docs/frameworks.md) |
210
262
  | **Express** | `@tryhamster/gerbil/express` | [📖 Frameworks](./docs/frameworks.md) |
211
- | **React** | `@tryhamster/gerbil/react` | [📖 Frameworks](./docs/frameworks.md) |
212
263
  | **LangChain** | `@tryhamster/gerbil/langchain` | [📖 Frameworks](./docs/frameworks.md) |
213
- | **MCP Server** | `npx @tryhamster/gerbil serve --mcp` | [📖 MCP Guide](./docs/mcp.md) |
214
- | **MCP Client** | `@tryhamster/gerbil/mcp-client` | [📖 MCP Client](./docs/mcp-client.md) |
264
+ | **MCP Server** | `npx @tryhamster/gerbil serve --mcp` | [📖 MCP](./docs/mcp.md) |
265
+
266
+ **Audio capabilities:** TTS and STT are built into the core `Gerbil` class, `@tryhamster/gerbil/browser` hooks, and `@tryhamster/gerbil/ai` provider.
215
267
 
216
268
  ## Models
217
269
 
270
+ ### Language Models
271
+
218
272
  | Model | Size | Best For |
219
273
  |-------|------|----------|
220
274
  | `qwen3-0.6b` | ~400MB | General use, reasoning (thinking mode) |
@@ -223,18 +277,29 @@ function Chat() {
223
277
 
224
278
  Use any HuggingFace model: `npx @tryhamster/gerbil -m hf:org/model "prompt"`
225
279
 
280
+ ### Audio Models
281
+
282
+ | Model | Type | Size | Notes |
283
+ |-------|------|------|-------|
284
+ | `kokoro-82m` | TTS | ~330MB | 28 voices, English |
285
+ | `whisper-tiny.en` | STT | 39MB | English, fastest |
286
+ | `whisper-base.en` | STT | 74MB | English, balanced |
287
+ | `whisper-small` | STT | 244MB | 80+ languages |
288
+
226
289
  ## Documentation
227
290
 
228
291
  | Guide | Description |
229
292
  |-------|-------------|
230
- | [📖 Browser](./docs/browser.md) | WebGPU inference in the browser |
231
- | [📖 Skills](./docs/skills.md) | Built-in skills, custom skill development, registry API |
232
- | [📖 Tools](./docs/tools.md) | Tool calling, agentic workflows, custom tools |
293
+ | [📖 Text-to-Speech](./docs/tts.md) | Kokoro TTS, 28 voices, streaming audio |
294
+ | [📖 Speech-to-Text](./docs/stt.md) | Whisper STT, transcription, voice input |
295
+ | [📖 Browser](./docs/browser.md) | WebGPU inference, React hooks |
296
+ | [📖 Skills](./docs/skills.md) | Built-in skills, custom skill development |
297
+ | [📖 Tools](./docs/tools.md) | Tool calling, agentic workflows |
233
298
  | [📖 REPL](./docs/repl.md) | Interactive terminal dashboard |
234
- | [📖 AI SDK](./docs/ai-sdk.md) | Vercel AI SDK v5 integration |
235
- | [📖 Frameworks](./docs/frameworks.md) | Next.js, Express, React, Fastify, Hono, tRPC, LangChain |
299
+ | [📖 AI SDK](./docs/ai-sdk.md) | Vercel AI SDK v5 (LLM, TTS, STT) |
300
+ | [📖 Frameworks](./docs/frameworks.md) | Next.js, Express, React, LangChain |
236
301
  | [📖 CLI](./docs/cli.md) | All CLI commands and options |
237
- | [📖 MCP Server](./docs/mcp.md) | MCP server setup for Claude Desktop & Cursor |
302
+ | [📖 MCP Server](./docs/mcp.md) | MCP server for Claude Desktop & Cursor |
238
303
  | [📖 MCP Client](./docs/mcp-client.md) | Connect to external MCP servers |
239
304
 
240
305
  ## Requirements
@@ -0,0 +1,3 @@
1
+ import { c as checkForUpdate, l as compareVersions, s as CURRENT_VERSION, u as installUpdate } from "./cli.mjs";
2
+
3
+ export { CURRENT_VERSION, checkForUpdate, installUpdate };