@tryhamster/gerbil 1.0.0-rc.1 → 1.0.0-rc.11

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 (90) hide show
  1. package/README.md +14 -5
  2. package/dist/browser/{index.d.mts → index.d.ts} +354 -3
  3. package/dist/browser/index.d.ts.map +1 -0
  4. package/dist/browser/{index.mjs → index.js} +631 -259
  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 +14 -15
  10. package/dist/cli.mjs.map +1 -1
  11. package/dist/frameworks/express.d.mts +1 -1
  12. package/dist/frameworks/express.mjs +3 -4
  13. package/dist/frameworks/express.mjs.map +1 -1
  14. package/dist/frameworks/fastify.d.mts +1 -1
  15. package/dist/frameworks/fastify.mjs +2 -3
  16. package/dist/frameworks/fastify.mjs.map +1 -1
  17. package/dist/frameworks/hono.d.mts +1 -1
  18. package/dist/frameworks/hono.mjs +2 -3
  19. package/dist/frameworks/hono.mjs.map +1 -1
  20. package/dist/frameworks/next.d.mts +2 -2
  21. package/dist/frameworks/next.mjs +2 -3
  22. package/dist/frameworks/next.mjs.map +1 -1
  23. package/dist/frameworks/react.d.mts +1 -1
  24. package/dist/frameworks/trpc.d.mts +1 -1
  25. package/dist/frameworks/trpc.mjs +2 -3
  26. package/dist/frameworks/trpc.mjs.map +1 -1
  27. package/dist/gerbil-DJGqq7BX.mjs +4 -0
  28. package/dist/{gerbil-yoSpRHgv.mjs → gerbil-DoDGHe6Z.mjs} +187 -19
  29. package/dist/gerbil-DoDGHe6Z.mjs.map +1 -0
  30. package/dist/{gerbil-POAz8peb.d.mts → gerbil-qOTe1nl2.d.mts} +2 -2
  31. package/dist/{gerbil-POAz8peb.d.mts.map → gerbil-qOTe1nl2.d.mts.map} +1 -1
  32. package/dist/index.d.mts +19 -3
  33. package/dist/index.d.mts.map +1 -1
  34. package/dist/index.mjs +6 -7
  35. package/dist/index.mjs.map +1 -1
  36. package/dist/integrations/ai-sdk.d.mts +1 -1
  37. package/dist/integrations/ai-sdk.mjs +4 -5
  38. package/dist/integrations/ai-sdk.mjs.map +1 -1
  39. package/dist/integrations/langchain.d.mts +1 -1
  40. package/dist/integrations/langchain.mjs +2 -3
  41. package/dist/integrations/langchain.mjs.map +1 -1
  42. package/dist/integrations/llamaindex.d.mts +1 -1
  43. package/dist/integrations/llamaindex.mjs +2 -3
  44. package/dist/integrations/llamaindex.mjs.map +1 -1
  45. package/dist/integrations/mcp-client.mjs +2 -2
  46. package/dist/integrations/mcp.d.mts +2 -2
  47. package/dist/integrations/mcp.mjs +5 -6
  48. package/dist/kokoro-BNTb6egA.mjs +20210 -0
  49. package/dist/kokoro-BNTb6egA.mjs.map +1 -0
  50. package/dist/{mcp-Bitg4sjX.mjs → mcp-kzDDWIoS.mjs} +3 -3
  51. package/dist/{mcp-Bitg4sjX.mjs.map → mcp-kzDDWIoS.mjs.map} +1 -1
  52. package/dist/{one-liner-B1rmFto6.mjs → one-liner-DxnNs_JK.mjs} +2 -2
  53. package/dist/{one-liner-B1rmFto6.mjs.map → one-liner-DxnNs_JK.mjs.map} +1 -1
  54. package/dist/repl-DGUw4fCc.mjs +9 -0
  55. package/dist/skills/index.d.mts +2 -2
  56. package/dist/skills/index.d.mts.map +1 -1
  57. package/dist/skills/index.mjs +4 -5
  58. package/dist/{skills-5DxAV-rn.mjs → skills-DulrOPeP.mjs} +12 -12
  59. package/dist/skills-DulrOPeP.mjs.map +1 -0
  60. package/dist/stt-1WIefHwc.mjs +3 -0
  61. package/dist/{stt-Bv_dum-R.mjs → stt-CG_7KB_0.mjs} +3 -2
  62. package/dist/stt-CG_7KB_0.mjs.map +1 -0
  63. package/dist/{tools-IYPrqoek.mjs → tools-Bi1P7Xoy.mjs} +2 -2
  64. package/dist/{tools-IYPrqoek.mjs.map → tools-Bi1P7Xoy.mjs.map} +1 -1
  65. package/dist/{tts-5yWeP_I0.mjs → tts-B1pZMlDv.mjs} +1 -1
  66. package/dist/{tts-DG6denWG.mjs → tts-CyHhcLtN.mjs} +6 -4
  67. package/dist/tts-CyHhcLtN.mjs.map +1 -0
  68. package/dist/{types-s6Py2_DL.d.mts → types-CiTc7ez3.d.mts} +1 -1
  69. package/dist/{types-s6Py2_DL.d.mts.map → types-CiTc7ez3.d.mts.map} +1 -1
  70. package/dist/{utils-CkB4Roi6.mjs → utils-CZBZ8dgR.mjs} +1 -1
  71. package/dist/{utils-CkB4Roi6.mjs.map → utils-CZBZ8dgR.mjs.map} +1 -1
  72. package/docs/architecture/overview.md +15 -7
  73. package/docs/tts.md +11 -8
  74. package/package.json +6 -6
  75. package/dist/browser/index.d.mts.map +0 -1
  76. package/dist/browser/index.mjs.map +0 -1
  77. package/dist/gerbil-DeQlX_Mt.mjs +0 -5
  78. package/dist/gerbil-yoSpRHgv.mjs.map +0 -1
  79. package/dist/models-BAtL8qsA.mjs +0 -171
  80. package/dist/models-BAtL8qsA.mjs.map +0 -1
  81. package/dist/models-CE0fBq0U.d.mts +0 -22
  82. package/dist/models-CE0fBq0U.d.mts.map +0 -1
  83. package/dist/repl-D20JO260.mjs +0 -10
  84. package/dist/skills-5DxAV-rn.mjs.map +0 -1
  85. package/dist/stt-Bv_dum-R.mjs.map +0 -1
  86. package/dist/stt-KzSoNvwI.mjs +0 -3
  87. package/dist/tts-DG6denWG.mjs.map +0 -1
  88. /package/dist/{auto-update-DsWBBnEk.mjs → auto-update-S9s5-g0C.mjs} +0 -0
  89. /package/dist/{chunk-Ct1HF2bE.mjs → chunk-CkXuGtQK.mjs} +0 -0
  90. /package/dist/{microphone-D-6y9aiE.mjs → microphone-DaMZFRuR.mjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"langchain.mjs","names":["instance: Gerbil | null","loadPromise: Promise<void> | null","results: string[]"],"sources":["../../src/integrations/langchain.ts"],"sourcesContent":["/**\n * Gerbil LangChain Integration\n *\n * @example Text Generation\n * ```ts\n * import { GerbilLLM } from \"gerbil/langchain\";\n * const llm = new GerbilLLM({ model: \"qwen3-0.6b\" });\n * const result = await llm.invoke(\"Hello!\");\n * ```\n *\n * @example Embeddings\n * ```ts\n * import { GerbilEmbeddings } from \"gerbil/langchain\";\n * const embeddings = new GerbilEmbeddings();\n * const vectors = await embeddings.embedDocuments([\"Hello\", \"World\"]);\n * ```\n *\n * @example Text-to-Speech\n * ```ts\n * import { GerbilTTS } from \"gerbil/langchain\";\n * const tts = new GerbilTTS({ voice: \"af_heart\" });\n * const audio = await tts.speak(\"Hello world!\");\n * ```\n *\n * @example Speech-to-Text\n * ```ts\n * import { GerbilSTT } from \"gerbil/langchain\";\n * const stt = new GerbilSTT({ model: \"whisper-tiny.en\" });\n * const text = await stt.transcribe(audioBuffer);\n * ```\n */\n\nimport { Gerbil } from \"../core/gerbil.js\";\nimport type {\n GenerateOptions,\n GerbilConfig,\n ImageInput,\n SpeakOptions,\n TranscribeOptions,\n} from \"../core/types.js\";\n\n// Singleton Gerbil instance\nlet instance: Gerbil | null = null;\nlet loadPromise: Promise<void> | null = null;\n\nasync function getInstance(model: string): Promise<Gerbil> {\n if (!instance) {\n instance = new Gerbil();\n }\n if (!(instance.isLoaded() || loadPromise)) {\n loadPromise = instance.loadModel(model);\n }\n if (loadPromise) {\n await loadPromise;\n loadPromise = null;\n }\n return instance;\n}\n\n/**\n * Gerbil LLM for LangChain\n *\n * Supports text generation with optional vision (images) input.\n */\nexport class GerbilLLM {\n private readonly model: string;\n private readonly options: GenerateOptions;\n\n constructor(config: GerbilConfig & GenerateOptions = {}) {\n this.model = config.model || \"qwen3-0.6b\";\n this.options = config;\n }\n\n get _llmType(): string {\n return \"gerbil\";\n }\n\n /**\n * Generate text from a prompt\n */\n async invoke(prompt: string, options?: GenerateOptions): Promise<string> {\n const g = await getInstance(this.model);\n const result = await g.generate(prompt, { ...this.options, ...options });\n return result.text;\n }\n\n /**\n * Generate text with images (vision)\n *\n * @example\n * ```ts\n * const llm = new GerbilLLM({ model: \"ministral-3b\" });\n * const result = await llm.invokeWithImages(\"Describe this image\", [\n * { source: \"https://example.com/photo.jpg\" }\n * ]);\n * ```\n */\n async invokeWithImages(\n prompt: string,\n images: ImageInput[],\n options?: GenerateOptions,\n ): Promise<string> {\n const g = await getInstance(this.model);\n const result = await g.generate(prompt, { ...this.options, ...options, images });\n return result.text;\n }\n\n /**\n * Stream text generation\n */\n async *stream(prompt: string, options?: GenerateOptions): AsyncGenerator<string> {\n const g = await getInstance(this.model);\n yield* g.stream(prompt, { ...this.options, ...options });\n }\n\n /**\n * Batch generate text for multiple prompts\n */\n async batch(prompts: string[], options?: GenerateOptions): Promise<string[]> {\n const results: string[] = [];\n for (const prompt of prompts) {\n results.push(await this.invoke(prompt, options));\n }\n return results;\n }\n\n /**\n * Check if the model supports vision input\n */\n async supportsVision(): Promise<boolean> {\n const g = await getInstance(this.model);\n return g.supportsVision();\n }\n\n // LangChain compatibility methods\n async call(prompt: string): Promise<string> {\n return this.invoke(prompt);\n }\n\n async predict(text: string): Promise<string> {\n return this.invoke(text);\n }\n\n async generate(prompts: string[]): Promise<{ generations: { text: string }[][] }> {\n const results = await this.batch(prompts);\n return {\n generations: results.map((text) => [{ text }]),\n };\n }\n}\n\n/**\n * Gerbil Embeddings for LangChain\n */\nexport class GerbilEmbeddings {\n private readonly model: string;\n\n constructor(config: { model?: string } = {}) {\n this.model = config.model || \"qwen3-0.6b\";\n }\n\n async embedQuery(text: string): Promise<number[]> {\n const g = await getInstance(this.model);\n const result = await g.embed(text);\n return result.vector;\n }\n\n async embedDocuments(documents: string[]): Promise<number[][]> {\n const g = await getInstance(this.model);\n const results = await g.embedBatch(documents);\n return results.map((r) => r.vector);\n }\n}\n\n/**\n * Gerbil Text-to-Speech for LangChain\n *\n * Note: LangChain doesn't have a standard TTS interface, so this is a\n * utility class for use in LangChain pipelines.\n *\n * @example\n * ```ts\n * import { GerbilTTS } from \"gerbil/langchain\";\n *\n * const tts = new GerbilTTS({ voice: \"af_heart\" });\n * const result = await tts.speak(\"Hello world!\");\n * // result.audio = Float32Array, result.sampleRate = 24000\n *\n * // List voices\n * const voices = await tts.listVoices();\n * ```\n */\nexport class GerbilTTS {\n private readonly voice: string;\n private readonly speed: number;\n private gerbil: Gerbil | null = null;\n\n constructor(config: { voice?: string; speed?: number } = {}) {\n this.voice = config.voice || \"af_heart\";\n this.speed = config.speed || 1.0;\n }\n\n private async getInstance(): Promise<Gerbil> {\n if (!this.gerbil) {\n this.gerbil = new Gerbil();\n }\n await this.gerbil.ensureTTSLoaded();\n return this.gerbil;\n }\n\n /**\n * Generate speech from text\n */\n async speak(\n text: string,\n options?: SpeakOptions,\n ): Promise<{ audio: Float32Array; sampleRate: number; duration: number }> {\n const g = await this.getInstance();\n const result = await g.speak(text, {\n voice: options?.voice || this.voice,\n speed: options?.speed || this.speed,\n });\n return {\n audio: result.audio,\n sampleRate: result.sampleRate,\n duration: result.duration,\n };\n }\n\n /**\n * Stream speech generation for long text\n */\n async *speakStream(\n text: string,\n options?: SpeakOptions,\n ): AsyncGenerator<{ samples: Float32Array; index: number; isFinal: boolean }> {\n const g = await this.getInstance();\n yield* g.speakStream(text, {\n voice: options?.voice || this.voice,\n speed: options?.speed || this.speed,\n });\n }\n\n /**\n * List available voices\n */\n async listVoices(): Promise<\n Array<{ id: string; name: string; gender: string; language: string }>\n > {\n const g = await this.getInstance();\n return g.listVoices();\n }\n}\n\n/**\n * Gerbil Speech-to-Text for LangChain\n *\n * Note: LangChain doesn't have a standard STT interface, so this is a\n * utility class for use in LangChain pipelines.\n *\n * @example\n * ```ts\n * import { GerbilSTT } from \"gerbil/langchain\";\n * import { readFileSync } from \"fs\";\n *\n * const stt = new GerbilSTT({ model: \"whisper-tiny.en\" });\n * const audio = new Uint8Array(readFileSync(\"audio.wav\"));\n * const result = await stt.transcribe(audio);\n * console.log(result.text);\n * ```\n */\nexport class GerbilSTT {\n private readonly model: string;\n private gerbil: Gerbil | null = null;\n\n constructor(config: { model?: string } = {}) {\n this.model = config.model || \"whisper-tiny.en\";\n }\n\n private async getInstance(): Promise<Gerbil> {\n if (!this.gerbil) {\n this.gerbil = new Gerbil();\n }\n await this.gerbil.loadSTT(this.model);\n return this.gerbil;\n }\n\n /**\n * Transcribe audio to text\n *\n * @param audio - WAV file as Uint8Array or Float32Array at 16kHz\n */\n async transcribe(\n audio: Uint8Array | Float32Array,\n options?: TranscribeOptions,\n ): Promise<{\n text: string;\n language?: string;\n duration?: number;\n segments?: Array<{ text: string; start: number; end: number }>;\n }> {\n const g = await this.getInstance();\n const result = await g.transcribe(audio, options);\n return {\n text: result.text,\n language: result.language,\n duration: result.duration,\n segments: result.segments,\n };\n }\n\n /**\n * List available STT models\n */\n async listModels(): Promise<Array<{ id: string; size: string; multilingual: boolean }>> {\n const g = await this.getInstance();\n const models = await g.listSTTModels();\n return models.map((m) => ({\n id: m.id,\n size: m.size,\n multilingual: m.multilingual,\n }));\n }\n}\n\nexport default { GerbilLLM, GerbilEmbeddings, GerbilTTS, GerbilSTT };\n"],"mappings":"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"}
1
+ {"version":3,"file":"langchain.mjs","names":["instance: Gerbil | null","loadPromise: Promise<void> | null","results: string[]"],"sources":["../../src/integrations/langchain.ts"],"sourcesContent":["/**\n * Gerbil LangChain Integration\n *\n * @example Text Generation\n * ```ts\n * import { GerbilLLM } from \"gerbil/langchain\";\n * const llm = new GerbilLLM({ model: \"qwen3-0.6b\" });\n * const result = await llm.invoke(\"Hello!\");\n * ```\n *\n * @example Embeddings\n * ```ts\n * import { GerbilEmbeddings } from \"gerbil/langchain\";\n * const embeddings = new GerbilEmbeddings();\n * const vectors = await embeddings.embedDocuments([\"Hello\", \"World\"]);\n * ```\n *\n * @example Text-to-Speech\n * ```ts\n * import { GerbilTTS } from \"gerbil/langchain\";\n * const tts = new GerbilTTS({ voice: \"af_heart\" });\n * const audio = await tts.speak(\"Hello world!\");\n * ```\n *\n * @example Speech-to-Text\n * ```ts\n * import { GerbilSTT } from \"gerbil/langchain\";\n * const stt = new GerbilSTT({ model: \"whisper-tiny.en\" });\n * const text = await stt.transcribe(audioBuffer);\n * ```\n */\n\nimport { Gerbil } from \"../core/gerbil.js\";\nimport type {\n GenerateOptions,\n GerbilConfig,\n ImageInput,\n SpeakOptions,\n TranscribeOptions,\n} from \"../core/types.js\";\n\n// Singleton Gerbil instance\nlet instance: Gerbil | null = null;\nlet loadPromise: Promise<void> | null = null;\n\nasync function getInstance(model: string): Promise<Gerbil> {\n if (!instance) {\n instance = new Gerbil();\n }\n if (!(instance.isLoaded() || loadPromise)) {\n loadPromise = instance.loadModel(model);\n }\n if (loadPromise) {\n await loadPromise;\n loadPromise = null;\n }\n return instance;\n}\n\n/**\n * Gerbil LLM for LangChain\n *\n * Supports text generation with optional vision (images) input.\n */\nexport class GerbilLLM {\n private readonly model: string;\n private readonly options: GenerateOptions;\n\n constructor(config: GerbilConfig & GenerateOptions = {}) {\n this.model = config.model || \"qwen3-0.6b\";\n this.options = config;\n }\n\n get _llmType(): string {\n return \"gerbil\";\n }\n\n /**\n * Generate text from a prompt\n */\n async invoke(prompt: string, options?: GenerateOptions): Promise<string> {\n const g = await getInstance(this.model);\n const result = await g.generate(prompt, { ...this.options, ...options });\n return result.text;\n }\n\n /**\n * Generate text with images (vision)\n *\n * @example\n * ```ts\n * const llm = new GerbilLLM({ model: \"ministral-3b\" });\n * const result = await llm.invokeWithImages(\"Describe this image\", [\n * { source: \"https://example.com/photo.jpg\" }\n * ]);\n * ```\n */\n async invokeWithImages(\n prompt: string,\n images: ImageInput[],\n options?: GenerateOptions,\n ): Promise<string> {\n const g = await getInstance(this.model);\n const result = await g.generate(prompt, { ...this.options, ...options, images });\n return result.text;\n }\n\n /**\n * Stream text generation\n */\n async *stream(prompt: string, options?: GenerateOptions): AsyncGenerator<string> {\n const g = await getInstance(this.model);\n yield* g.stream(prompt, { ...this.options, ...options });\n }\n\n /**\n * Batch generate text for multiple prompts\n */\n async batch(prompts: string[], options?: GenerateOptions): Promise<string[]> {\n const results: string[] = [];\n for (const prompt of prompts) {\n results.push(await this.invoke(prompt, options));\n }\n return results;\n }\n\n /**\n * Check if the model supports vision input\n */\n async supportsVision(): Promise<boolean> {\n const g = await getInstance(this.model);\n return g.supportsVision();\n }\n\n // LangChain compatibility methods\n async call(prompt: string): Promise<string> {\n return this.invoke(prompt);\n }\n\n async predict(text: string): Promise<string> {\n return this.invoke(text);\n }\n\n async generate(prompts: string[]): Promise<{ generations: { text: string }[][] }> {\n const results = await this.batch(prompts);\n return {\n generations: results.map((text) => [{ text }]),\n };\n }\n}\n\n/**\n * Gerbil Embeddings for LangChain\n */\nexport class GerbilEmbeddings {\n private readonly model: string;\n\n constructor(config: { model?: string } = {}) {\n this.model = config.model || \"qwen3-0.6b\";\n }\n\n async embedQuery(text: string): Promise<number[]> {\n const g = await getInstance(this.model);\n const result = await g.embed(text);\n return result.vector;\n }\n\n async embedDocuments(documents: string[]): Promise<number[][]> {\n const g = await getInstance(this.model);\n const results = await g.embedBatch(documents);\n return results.map((r) => r.vector);\n }\n}\n\n/**\n * Gerbil Text-to-Speech for LangChain\n *\n * Note: LangChain doesn't have a standard TTS interface, so this is a\n * utility class for use in LangChain pipelines.\n *\n * @example\n * ```ts\n * import { GerbilTTS } from \"gerbil/langchain\";\n *\n * const tts = new GerbilTTS({ voice: \"af_heart\" });\n * const result = await tts.speak(\"Hello world!\");\n * // result.audio = Float32Array, result.sampleRate = 24000\n *\n * // List voices\n * const voices = await tts.listVoices();\n * ```\n */\nexport class GerbilTTS {\n private readonly voice: string;\n private readonly speed: number;\n private gerbil: Gerbil | null = null;\n\n constructor(config: { voice?: string; speed?: number } = {}) {\n this.voice = config.voice || \"af_heart\";\n this.speed = config.speed || 1.0;\n }\n\n private async getInstance(): Promise<Gerbil> {\n if (!this.gerbil) {\n this.gerbil = new Gerbil();\n }\n await this.gerbil.ensureTTSLoaded();\n return this.gerbil;\n }\n\n /**\n * Generate speech from text\n */\n async speak(\n text: string,\n options?: SpeakOptions,\n ): Promise<{ audio: Float32Array; sampleRate: number; duration: number }> {\n const g = await this.getInstance();\n const result = await g.speak(text, {\n voice: options?.voice || this.voice,\n speed: options?.speed || this.speed,\n });\n return {\n audio: result.audio,\n sampleRate: result.sampleRate,\n duration: result.duration,\n };\n }\n\n /**\n * Stream speech generation for long text\n */\n async *speakStream(\n text: string,\n options?: SpeakOptions,\n ): AsyncGenerator<{ samples: Float32Array; index: number; isFinal: boolean }> {\n const g = await this.getInstance();\n yield* g.speakStream(text, {\n voice: options?.voice || this.voice,\n speed: options?.speed || this.speed,\n });\n }\n\n /**\n * List available voices\n */\n async listVoices(): Promise<\n Array<{ id: string; name: string; gender: string; language: string }>\n > {\n const g = await this.getInstance();\n return g.listVoices();\n }\n}\n\n/**\n * Gerbil Speech-to-Text for LangChain\n *\n * Note: LangChain doesn't have a standard STT interface, so this is a\n * utility class for use in LangChain pipelines.\n *\n * @example\n * ```ts\n * import { GerbilSTT } from \"gerbil/langchain\";\n * import { readFileSync } from \"fs\";\n *\n * const stt = new GerbilSTT({ model: \"whisper-tiny.en\" });\n * const audio = new Uint8Array(readFileSync(\"audio.wav\"));\n * const result = await stt.transcribe(audio);\n * console.log(result.text);\n * ```\n */\nexport class GerbilSTT {\n private readonly model: string;\n private gerbil: Gerbil | null = null;\n\n constructor(config: { model?: string } = {}) {\n this.model = config.model || \"whisper-tiny.en\";\n }\n\n private async getInstance(): Promise<Gerbil> {\n if (!this.gerbil) {\n this.gerbil = new Gerbil();\n }\n await this.gerbil.loadSTT(this.model);\n return this.gerbil;\n }\n\n /**\n * Transcribe audio to text\n *\n * @param audio - WAV file as Uint8Array or Float32Array at 16kHz\n */\n async transcribe(\n audio: Uint8Array | Float32Array,\n options?: TranscribeOptions,\n ): Promise<{\n text: string;\n language?: string;\n duration?: number;\n segments?: Array<{ text: string; start: number; end: number }>;\n }> {\n const g = await this.getInstance();\n const result = await g.transcribe(audio, options);\n return {\n text: result.text,\n language: result.language,\n duration: result.duration,\n segments: result.segments,\n };\n }\n\n /**\n * List available STT models\n */\n async listModels(): Promise<Array<{ id: string; size: string; multilingual: boolean }>> {\n const g = await this.getInstance();\n const models = await g.listSTTModels();\n return models.map((m) => ({\n id: m.id,\n size: m.size,\n multilingual: m.multilingual,\n }));\n }\n}\n\nexport default { GerbilLLM, GerbilEmbeddings, GerbilTTS, GerbilSTT };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { c as GerbilConfig, o as GenerateOptions } from "../types-s6Py2_DL.mjs";
1
+ import { c as GerbilConfig, o as GenerateOptions } from "../types-CiTc7ez3.mjs";
2
2
 
3
3
  //#region src/integrations/llamaindex.d.ts
4
4
 
@@ -1,6 +1,5 @@
1
- import { t as Gerbil } from "../gerbil-yoSpRHgv.mjs";
2
- import "../models-BAtL8qsA.mjs";
3
- import "../utils-CkB4Roi6.mjs";
1
+ import { t as Gerbil } from "../gerbil-DoDGHe6Z.mjs";
2
+ import "../utils-CZBZ8dgR.mjs";
4
3
 
5
4
  //#region src/integrations/llamaindex.ts
6
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"llamaindex.mjs","names":["instance: Gerbil | null","loadPromise: Promise<void> | null"],"sources":["../../src/integrations/llamaindex.ts"],"sourcesContent":["/**\n * Gerbil LlamaIndex Integration\n *\n * @example\n * ```ts\n * import { GerbilLLM, GerbilEmbedding } from \"gerbil/llamaindex\";\n *\n * const llm = new GerbilLLM({ model: \"qwen3-0.6b\" });\n * const embedModel = new GerbilEmbedding();\n *\n * const index = await VectorStoreIndex.fromDocuments(documents, {\n * llm,\n * embedModel,\n * });\n * ```\n */\n\nimport { Gerbil } from \"../core/gerbil.js\";\nimport type { GenerateOptions, GerbilConfig } from \"../core/types.js\";\n\n// Singleton Gerbil instance\nlet instance: Gerbil | null = null;\nlet loadPromise: Promise<void> | null = null;\n\nasync function getInstance(model: string): Promise<Gerbil> {\n if (!instance) {\n instance = new Gerbil();\n }\n if (!(instance.isLoaded() || loadPromise)) {\n loadPromise = instance.loadModel(model);\n }\n if (loadPromise) {\n await loadPromise;\n loadPromise = null;\n }\n return instance;\n}\n\n/**\n * Gerbil LLM for LlamaIndex\n */\nexport class GerbilLLM {\n private readonly model: string;\n private readonly options: GenerateOptions;\n\n constructor(config: GerbilConfig & GenerateOptions = {}) {\n this.model = config.model || \"qwen3-0.6b\";\n this.options = config;\n }\n\n async complete(prompt: string, options?: GenerateOptions): Promise<{ text: string }> {\n const g = await getInstance(this.model);\n const result = await g.generate(prompt, { ...this.options, ...options });\n return { text: result.text };\n }\n\n async chat(\n messages: { role: string; content: string }[],\n ): Promise<{ message: { content: string } }> {\n // Convert chat messages to a single prompt\n const prompt = messages.map((m) => `${m.role}: ${m.content}`).join(\"\\n\");\n\n const g = await getInstance(this.model);\n const result = await g.generate(prompt, this.options);\n\n return {\n message: { content: result.text },\n };\n }\n\n async *stream(prompt: string, options?: GenerateOptions): AsyncGenerator<{ delta: string }> {\n const g = await getInstance(this.model);\n for await (const chunk of g.stream(prompt, { ...this.options, ...options })) {\n yield { delta: chunk };\n }\n }\n}\n\n/**\n * Gerbil Embedding Model for LlamaIndex\n */\nexport class GerbilEmbedding {\n private readonly model: string;\n\n constructor(config: { model?: string } = {}) {\n this.model = config.model || \"qwen3-0.6b\";\n }\n\n async getTextEmbedding(text: string): Promise<number[]> {\n const g = await getInstance(this.model);\n const result = await g.embed(text);\n return result.vector;\n }\n\n async getTextEmbeddings(texts: string[]): Promise<number[][]> {\n const g = await getInstance(this.model);\n const results = await g.embedBatch(texts);\n return results.map((r) => r.vector);\n }\n\n async getQueryEmbedding(query: string): Promise<number[]> {\n return this.getTextEmbedding(query);\n }\n}\n\nexport default { GerbilLLM, GerbilEmbedding };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,IAAIA,WAA0B;AAC9B,IAAIC,cAAoC;AAExC,eAAe,YAAY,OAAgC;AACzD,KAAI,CAAC,SACH,YAAW,IAAI,QAAQ;AAEzB,KAAI,EAAE,SAAS,UAAU,IAAI,aAC3B,eAAc,SAAS,UAAU,MAAM;AAEzC,KAAI,aAAa;AACf,QAAM;AACN,gBAAc;;AAEhB,QAAO;;;;;AAMT,IAAa,YAAb,MAAuB;CACrB,AAAiB;CACjB,AAAiB;CAEjB,YAAY,SAAyC,EAAE,EAAE;AACvD,OAAK,QAAQ,OAAO,SAAS;AAC7B,OAAK,UAAU;;CAGjB,MAAM,SAAS,QAAgB,SAAsD;AAGnF,SAAO,EAAE,OADM,OADL,MAAM,YAAY,KAAK,MAAM,EAChB,SAAS,QAAQ;GAAE,GAAG,KAAK;GAAS,GAAG;GAAS,CAAC,EAClD,MAAM;;CAG9B,MAAM,KACJ,UAC2C;EAE3C,MAAM,SAAS,SAAS,KAAK,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,UAAU,CAAC,KAAK,KAAK;AAKxE,SAAO,EACL,SAAS,EAAE,UAHE,OADL,MAAM,YAAY,KAAK,MAAM,EAChB,SAAS,QAAQ,KAAK,QAAQ,EAGxB,MAAM,EAClC;;CAGH,OAAO,OAAO,QAAgB,SAA8D;EAC1F,MAAM,IAAI,MAAM,YAAY,KAAK,MAAM;AACvC,aAAW,MAAM,SAAS,EAAE,OAAO,QAAQ;GAAE,GAAG,KAAK;GAAS,GAAG;GAAS,CAAC,CACzE,OAAM,EAAE,OAAO,OAAO;;;;;;AAQ5B,IAAa,kBAAb,MAA6B;CAC3B,AAAiB;CAEjB,YAAY,SAA6B,EAAE,EAAE;AAC3C,OAAK,QAAQ,OAAO,SAAS;;CAG/B,MAAM,iBAAiB,MAAiC;AAGtD,UADe,OADL,MAAM,YAAY,KAAK,MAAM,EAChB,MAAM,KAAK,EACpB;;CAGhB,MAAM,kBAAkB,OAAsC;AAG5D,UADgB,OADN,MAAM,YAAY,KAAK,MAAM,EACf,WAAW,MAAM,EAC1B,KAAK,MAAM,EAAE,OAAO;;CAGrC,MAAM,kBAAkB,OAAkC;AACxD,SAAO,KAAK,iBAAiB,MAAM;;;AAIvC,yBAAe;CAAE;CAAW;CAAiB"}
1
+ {"version":3,"file":"llamaindex.mjs","names":["instance: Gerbil | null","loadPromise: Promise<void> | null"],"sources":["../../src/integrations/llamaindex.ts"],"sourcesContent":["/**\n * Gerbil LlamaIndex Integration\n *\n * @example\n * ```ts\n * import { GerbilLLM, GerbilEmbedding } from \"gerbil/llamaindex\";\n *\n * const llm = new GerbilLLM({ model: \"qwen3-0.6b\" });\n * const embedModel = new GerbilEmbedding();\n *\n * const index = await VectorStoreIndex.fromDocuments(documents, {\n * llm,\n * embedModel,\n * });\n * ```\n */\n\nimport { Gerbil } from \"../core/gerbil.js\";\nimport type { GenerateOptions, GerbilConfig } from \"../core/types.js\";\n\n// Singleton Gerbil instance\nlet instance: Gerbil | null = null;\nlet loadPromise: Promise<void> | null = null;\n\nasync function getInstance(model: string): Promise<Gerbil> {\n if (!instance) {\n instance = new Gerbil();\n }\n if (!(instance.isLoaded() || loadPromise)) {\n loadPromise = instance.loadModel(model);\n }\n if (loadPromise) {\n await loadPromise;\n loadPromise = null;\n }\n return instance;\n}\n\n/**\n * Gerbil LLM for LlamaIndex\n */\nexport class GerbilLLM {\n private readonly model: string;\n private readonly options: GenerateOptions;\n\n constructor(config: GerbilConfig & GenerateOptions = {}) {\n this.model = config.model || \"qwen3-0.6b\";\n this.options = config;\n }\n\n async complete(prompt: string, options?: GenerateOptions): Promise<{ text: string }> {\n const g = await getInstance(this.model);\n const result = await g.generate(prompt, { ...this.options, ...options });\n return { text: result.text };\n }\n\n async chat(\n messages: { role: string; content: string }[],\n ): Promise<{ message: { content: string } }> {\n // Convert chat messages to a single prompt\n const prompt = messages.map((m) => `${m.role}: ${m.content}`).join(\"\\n\");\n\n const g = await getInstance(this.model);\n const result = await g.generate(prompt, this.options);\n\n return {\n message: { content: result.text },\n };\n }\n\n async *stream(prompt: string, options?: GenerateOptions): AsyncGenerator<{ delta: string }> {\n const g = await getInstance(this.model);\n for await (const chunk of g.stream(prompt, { ...this.options, ...options })) {\n yield { delta: chunk };\n }\n }\n}\n\n/**\n * Gerbil Embedding Model for LlamaIndex\n */\nexport class GerbilEmbedding {\n private readonly model: string;\n\n constructor(config: { model?: string } = {}) {\n this.model = config.model || \"qwen3-0.6b\";\n }\n\n async getTextEmbedding(text: string): Promise<number[]> {\n const g = await getInstance(this.model);\n const result = await g.embed(text);\n return result.vector;\n }\n\n async getTextEmbeddings(texts: string[]): Promise<number[][]> {\n const g = await getInstance(this.model);\n const results = await g.embedBatch(texts);\n return results.map((r) => r.vector);\n }\n\n async getQueryEmbedding(query: string): Promise<number[]> {\n return this.getTextEmbedding(query);\n }\n}\n\nexport default { GerbilLLM, GerbilEmbedding };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,IAAIA,WAA0B;AAC9B,IAAIC,cAAoC;AAExC,eAAe,YAAY,OAAgC;AACzD,KAAI,CAAC,SACH,YAAW,IAAI,QAAQ;AAEzB,KAAI,EAAE,SAAS,UAAU,IAAI,aAC3B,eAAc,SAAS,UAAU,MAAM;AAEzC,KAAI,aAAa;AACf,QAAM;AACN,gBAAc;;AAEhB,QAAO;;;;;AAMT,IAAa,YAAb,MAAuB;CACrB,AAAiB;CACjB,AAAiB;CAEjB,YAAY,SAAyC,EAAE,EAAE;AACvD,OAAK,QAAQ,OAAO,SAAS;AAC7B,OAAK,UAAU;;CAGjB,MAAM,SAAS,QAAgB,SAAsD;AAGnF,SAAO,EAAE,OADM,OADL,MAAM,YAAY,KAAK,MAAM,EAChB,SAAS,QAAQ;GAAE,GAAG,KAAK;GAAS,GAAG;GAAS,CAAC,EAClD,MAAM;;CAG9B,MAAM,KACJ,UAC2C;EAE3C,MAAM,SAAS,SAAS,KAAK,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,UAAU,CAAC,KAAK,KAAK;AAKxE,SAAO,EACL,SAAS,EAAE,UAHE,OADL,MAAM,YAAY,KAAK,MAAM,EAChB,SAAS,QAAQ,KAAK,QAAQ,EAGxB,MAAM,EAClC;;CAGH,OAAO,OAAO,QAAgB,SAA8D;EAC1F,MAAM,IAAI,MAAM,YAAY,KAAK,MAAM;AACvC,aAAW,MAAM,SAAS,EAAE,OAAO,QAAQ;GAAE,GAAG,KAAK;GAAS,GAAG;GAAS,CAAC,CACzE,OAAM,EAAE,OAAO,OAAO;;;;;;AAQ5B,IAAa,kBAAb,MAA6B;CAC3B,AAAiB;CAEjB,YAAY,SAA6B,EAAE,EAAE;AAC3C,OAAK,QAAQ,OAAO,SAAS;;CAG/B,MAAM,iBAAiB,MAAiC;AAGtD,UADe,OADL,MAAM,YAAY,KAAK,MAAM,EAChB,MAAM,KAAK,EACpB;;CAGhB,MAAM,kBAAkB,OAAsC;AAG5D,UADgB,OADN,MAAM,YAAY,KAAK,MAAM,EACf,WAAW,MAAM,EAC1B,KAAK,MAAM,EAAE,OAAO;;CAGrC,MAAM,kBAAkB,OAAkC;AACxD,SAAO,KAAK,iBAAiB,MAAM;;;AAIvC,yBAAe;CAAE;CAAW;CAAiB"}
@@ -1,5 +1,5 @@
1
- import "../utils-CkB4Roi6.mjs";
2
- import { t as defineTool } from "../tools-IYPrqoek.mjs";
1
+ import "../utils-CZBZ8dgR.mjs";
2
+ import { t as defineTool } from "../tools-Bi1P7Xoy.mjs";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/integrations/mcp-client.ts
@@ -1,5 +1,5 @@
1
- import { c as GerbilConfig } from "../types-s6Py2_DL.mjs";
2
- import { t as Gerbil } from "../gerbil-POAz8peb.mjs";
1
+ import { c as GerbilConfig } from "../types-CiTc7ez3.mjs";
2
+ import { t as Gerbil } from "../gerbil-qOTe1nl2.mjs";
3
3
 
4
4
  //#region src/integrations/mcp.d.ts
5
5
 
@@ -1,8 +1,7 @@
1
- import "../gerbil-yoSpRHgv.mjs";
2
- import "../models-BAtL8qsA.mjs";
3
- import "../utils-CkB4Roi6.mjs";
4
- import "../one-liner-B1rmFto6.mjs";
5
- import "../skills-5DxAV-rn.mjs";
6
- import { n as mcp_default, r as startMCPServer, t as createMCPServer } from "../mcp-Bitg4sjX.mjs";
1
+ import "../gerbil-DoDGHe6Z.mjs";
2
+ import "../utils-CZBZ8dgR.mjs";
3
+ import "../one-liner-DxnNs_JK.mjs";
4
+ import "../skills-DulrOPeP.mjs";
5
+ import { n as mcp_default, r as startMCPServer, t as createMCPServer } from "../mcp-kzDDWIoS.mjs";
7
6
 
8
7
  export { createMCPServer, mcp_default as default, startMCPServer };