@mastra/voice-cloudflare 0.11.12-alpha.0 → 0.12.0-beta.0
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/CHANGELOG.md +7 -10
- package/dist/index.cjs +21 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -23
- package/dist/index.js.map +1 -1
- package/package.json +7 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
# @mastra/voice-cloudflare
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.12.0-beta.0
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Minor Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- Update peer dependencies to match core package version bump (1.0.0) ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
- @mastra/core@0.24.0-alpha.0
|
|
9
|
+
- Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
- Removed old tracing code based on OpenTelemetry ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
|
|
13
12
|
|
|
14
13
|
### Patch Changes
|
|
15
14
|
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
- Updated dependencies []:
|
|
19
|
-
- @mastra/core@0.23.1
|
|
15
|
+
- Updated dependencies [[`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
|
|
16
|
+
- @mastra/core@1.0.0-beta.0
|
|
20
17
|
|
|
21
18
|
## 0.11.10
|
|
22
19
|
|
package/dist/index.cjs
CHANGED
|
@@ -45,31 +45,29 @@ var CloudflareVoice = class extends voice.MastraVoice {
|
|
|
45
45
|
return { enabled: true };
|
|
46
46
|
}
|
|
47
47
|
async listen(audioStream, options) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
chunks.push(Buffer.from(chunk));
|
|
53
|
-
} else {
|
|
54
|
-
chunks.push(chunk);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const audioBuffer = Buffer.concat(chunks);
|
|
58
|
-
const base64Audio = audioBuffer.toString("base64");
|
|
59
|
-
const model = options?.model || defaultListeningModel.model;
|
|
60
|
-
if (this.binding) {
|
|
61
|
-
const response = await this.binding.run(model, {
|
|
62
|
-
audio: base64Audio
|
|
63
|
-
});
|
|
64
|
-
return response.text;
|
|
65
|
-
} else if (this.client) {
|
|
66
|
-
const payload = { audio: base64Audio, account_id: options?.account_id || defaultListeningModel.account_id };
|
|
67
|
-
const response = await this.client.ai.run(model, payload);
|
|
68
|
-
return response.text;
|
|
48
|
+
const chunks = [];
|
|
49
|
+
for await (const chunk of audioStream) {
|
|
50
|
+
if (typeof chunk === "string") {
|
|
51
|
+
chunks.push(Buffer.from(chunk));
|
|
69
52
|
} else {
|
|
70
|
-
|
|
53
|
+
chunks.push(chunk);
|
|
71
54
|
}
|
|
72
|
-
}
|
|
55
|
+
}
|
|
56
|
+
const audioBuffer = Buffer.concat(chunks);
|
|
57
|
+
const base64Audio = audioBuffer.toString("base64");
|
|
58
|
+
const model = options?.model || defaultListeningModel.model;
|
|
59
|
+
if (this.binding) {
|
|
60
|
+
const response = await this.binding.run(model, {
|
|
61
|
+
audio: base64Audio
|
|
62
|
+
});
|
|
63
|
+
return response.text;
|
|
64
|
+
} else if (this.client) {
|
|
65
|
+
const payload = { audio: base64Audio, account_id: options?.account_id || defaultListeningModel.account_id };
|
|
66
|
+
const response = await this.client.ai.run(model, payload);
|
|
67
|
+
return response.text;
|
|
68
|
+
} else {
|
|
69
|
+
throw new Error("Neither binding nor REST client is configured");
|
|
70
|
+
}
|
|
73
71
|
}
|
|
74
72
|
async speak() {
|
|
75
73
|
throw new Error("This feature is not yet implemented.");
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["MastraVoice","Cloudflare"],"mappings":";;;;;;;;;;AAoBA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,KAAA,EAAO,mCAAA;AAAA,EACP,MAAA,EAAQ,QAAQ,GAAA,CAAI,qBAAA;AAAA,EACpB,UAAA,EAAY,QAAQ,GAAA,CAAI;AAC1B,CAAA;AAEO,IAAM,eAAA,GAAN,cAA8BA,iBAAA,CAAY;AAAA,EACvC,QAAA;AAAA,EACA,MAAA,GAA4B,IAAA;AAAA,EAC5B,OAAA;AAAA,EAER,WAAA,CAAY;AAAA,IACV,cAAA;AAAA,IACA;AAAA,GACF,GAGI,EAAC,EAAG;AACN,IAAA,KAAA,CAAM;AAAA,MACJ,cAAA,EAAgB;AAAA,QACd,IAAA,EAAM,cAAA,EAAgB,KAAA,IAAS,qBAAA,CAAsB,KAAA;AAAA,QACrD,MAAA,EAAQ,cAAA,EAAgB,MAAA,IAAU,qBAAA,CAAsB;AAAA;AAC1D,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAGf,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,IAAA,CAAK,QAAA,GAAW,cAAA,EAAgB,MAAA,IAAU,qBAAA,CAAsB,MAAA;AAChE,MAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,QAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,MAC7E;AACA,MAAA,IAAA,CAAK,SAAS,IAAIC,2BAAA,CAAW,EAAE,QAAA,EAAU,IAAA,CAAK,UAAU,CAAA;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAA,GAAc;AAClB,IAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,EACzB;AAAA,EAEA,MAAM,MAAA,CAAO,WAAA,EAAoC,OAAA,EAAoD;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["MastraVoice","Cloudflare"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n Ai,\n Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output,\n Ai_Cf_Openai_Whisper_Output,\n Ai_Cf_Openai_Whisper_Tiny_En_Output,\n} from '@cloudflare/workers-types';\nimport { MastraVoice } from '@mastra/core/voice';\nimport Cloudflare from 'cloudflare';\n\ninterface CloudflareListenOptions {\n apiKey?: string;\n model?: '@cf/openai/whisper-tiny-en' | '@cf/openai/whisper' | '@cf/openai/whisper-large-v3-turbo';\n account_id?: string;\n}\n\ntype CloudflareListenOutput =\n | Ai_Cf_Openai_Whisper_Tiny_En_Output\n | Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output\n | Ai_Cf_Openai_Whisper_Output;\n\nconst defaultListeningModel = {\n model: '@cf/openai/whisper-large-v3-turbo' as const,\n apiKey: process.env.CLOUDFLARE_AI_API_KEY,\n account_id: process.env.CLOUDFLARE_ACCOUNT_ID!,\n};\n\nexport class CloudflareVoice extends MastraVoice {\n private apiToken?: string;\n private client: Cloudflare | null = null;\n private binding?: Ai;\n\n constructor({\n listeningModel,\n binding,\n }: {\n listeningModel?: CloudflareListenOptions;\n binding?: Ai;\n } = {}) {\n super({\n listeningModel: {\n name: listeningModel?.model ?? defaultListeningModel.model,\n apiKey: listeningModel?.apiKey ?? defaultListeningModel.apiKey,\n },\n });\n\n // Store Workers AI binding if provided\n this.binding = binding;\n\n // Only setup REST client if no binding provided or both are needed\n if (!binding) {\n this.apiToken = listeningModel?.apiKey || defaultListeningModel.apiKey;\n if (!this.apiToken) {\n throw new Error('CLOUDFLARE_AI_API_KEY must be set when not using bindings');\n }\n this.client = new Cloudflare({ apiToken: this.apiToken });\n }\n }\n\n /**\n * Checks if listening capabilities are enabled.\n *\n * @returns {Promise<{ enabled: boolean }>}\n */\n async getListener() {\n return { enabled: true };\n }\n\n async listen(audioStream: NodeJS.ReadableStream, options?: CloudflareListenOptions): Promise<string> {\n // Collect audio data into buffer\n const chunks: Buffer[] = [];\n for await (const chunk of audioStream) {\n if (typeof chunk === 'string') {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk);\n }\n }\n const audioBuffer = Buffer.concat(chunks);\n const base64Audio = audioBuffer.toString('base64');\n\n const model = options?.model || defaultListeningModel.model;\n\n // Use native binding if available, otherwise use REST API\n if (this.binding) {\n // Using Workers AI binding\n const response = (await this.binding.run(model, {\n audio: base64Audio,\n })) as CloudflareListenOutput;\n return response.text;\n } else if (this.client) {\n // Using REST API client\n const payload = { audio: base64Audio, account_id: options?.account_id || defaultListeningModel.account_id };\n const response = (await this.client.ai.run(model, payload)) as any;\n return response.text as string;\n } else {\n throw new Error('Neither binding nor REST client is configured');\n }\n }\n async speak(): Promise<NodeJS.ReadableStream> {\n throw new Error('This feature is not yet implemented.');\n }\n async getSpeakers(): Promise<Array<{ voiceId: string; [key: string]: any }>> {\n throw new Error('This feature is not yet implemented.');\n }\n}\n"]}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,EAAE,EAIH,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,UAAU,uBAAuB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAAG,mCAAmC,CAAC;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAC,CAAK;gBAET,EACV,cAAc,EACd,OAAO,GACR,GAAE;QACD,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,OAAO,CAAC,EAAE,EAAE,CAAC;KACT;IAqBN;;;;OAIG;IACG,WAAW;;;IAIX,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,EAAE,EAIH,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,UAAU,uBAAuB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAAG,mCAAmC,CAAC;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAC,CAAK;gBAET,EACV,cAAc,EACd,OAAO,GACR,GAAE;QACD,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,OAAO,CAAC,EAAE,EAAE,CAAC;KACT;IAqBN;;;;OAIG;IACG,WAAW;;;IAIX,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IA+B9F,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;IAGvC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAC;CAG7E"}
|
package/dist/index.js
CHANGED
|
@@ -39,31 +39,29 @@ var CloudflareVoice = class extends MastraVoice {
|
|
|
39
39
|
return { enabled: true };
|
|
40
40
|
}
|
|
41
41
|
async listen(audioStream, options) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
chunks.push(Buffer.from(chunk));
|
|
47
|
-
} else {
|
|
48
|
-
chunks.push(chunk);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const audioBuffer = Buffer.concat(chunks);
|
|
52
|
-
const base64Audio = audioBuffer.toString("base64");
|
|
53
|
-
const model = options?.model || defaultListeningModel.model;
|
|
54
|
-
if (this.binding) {
|
|
55
|
-
const response = await this.binding.run(model, {
|
|
56
|
-
audio: base64Audio
|
|
57
|
-
});
|
|
58
|
-
return response.text;
|
|
59
|
-
} else if (this.client) {
|
|
60
|
-
const payload = { audio: base64Audio, account_id: options?.account_id || defaultListeningModel.account_id };
|
|
61
|
-
const response = await this.client.ai.run(model, payload);
|
|
62
|
-
return response.text;
|
|
42
|
+
const chunks = [];
|
|
43
|
+
for await (const chunk of audioStream) {
|
|
44
|
+
if (typeof chunk === "string") {
|
|
45
|
+
chunks.push(Buffer.from(chunk));
|
|
63
46
|
} else {
|
|
64
|
-
|
|
47
|
+
chunks.push(chunk);
|
|
65
48
|
}
|
|
66
|
-
}
|
|
49
|
+
}
|
|
50
|
+
const audioBuffer = Buffer.concat(chunks);
|
|
51
|
+
const base64Audio = audioBuffer.toString("base64");
|
|
52
|
+
const model = options?.model || defaultListeningModel.model;
|
|
53
|
+
if (this.binding) {
|
|
54
|
+
const response = await this.binding.run(model, {
|
|
55
|
+
audio: base64Audio
|
|
56
|
+
});
|
|
57
|
+
return response.text;
|
|
58
|
+
} else if (this.client) {
|
|
59
|
+
const payload = { audio: base64Audio, account_id: options?.account_id || defaultListeningModel.account_id };
|
|
60
|
+
const response = await this.client.ai.run(model, payload);
|
|
61
|
+
return response.text;
|
|
62
|
+
} else {
|
|
63
|
+
throw new Error("Neither binding nor REST client is configured");
|
|
64
|
+
}
|
|
67
65
|
}
|
|
68
66
|
async speak() {
|
|
69
67
|
throw new Error("This feature is not yet implemented.");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;AAoBA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,KAAA,EAAO,mCAAA;AAAA,EACP,MAAA,EAAQ,QAAQ,GAAA,CAAI,qBAAA;AAAA,EACpB,UAAA,EAAY,QAAQ,GAAA,CAAI;AAC1B,CAAA;AAEO,IAAM,eAAA,GAAN,cAA8B,WAAA,CAAY;AAAA,EACvC,QAAA;AAAA,EACA,MAAA,GAA4B,IAAA;AAAA,EAC5B,OAAA;AAAA,EAER,WAAA,CAAY;AAAA,IACV,cAAA;AAAA,IACA;AAAA,GACF,GAGI,EAAC,EAAG;AACN,IAAA,KAAA,CAAM;AAAA,MACJ,cAAA,EAAgB;AAAA,QACd,IAAA,EAAM,cAAA,EAAgB,KAAA,IAAS,qBAAA,CAAsB,KAAA;AAAA,QACrD,MAAA,EAAQ,cAAA,EAAgB,MAAA,IAAU,qBAAA,CAAsB;AAAA;AAC1D,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAGf,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,IAAA,CAAK,QAAA,GAAW,cAAA,EAAgB,MAAA,IAAU,qBAAA,CAAsB,MAAA;AAChE,MAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,QAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,MAC7E;AACA,MAAA,IAAA,CAAK,SAAS,IAAI,UAAA,CAAW,EAAE,QAAA,EAAU,IAAA,CAAK,UAAU,CAAA;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAA,GAAc;AAClB,IAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,EACzB;AAAA,EAEA,MAAM,MAAA,CAAO,WAAA,EAAoC,OAAA,EAAoD;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;AAoBA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,KAAA,EAAO,mCAAA;AAAA,EACP,MAAA,EAAQ,QAAQ,GAAA,CAAI,qBAAA;AAAA,EACpB,UAAA,EAAY,QAAQ,GAAA,CAAI;AAC1B,CAAA;AAEO,IAAM,eAAA,GAAN,cAA8B,WAAA,CAAY;AAAA,EACvC,QAAA;AAAA,EACA,MAAA,GAA4B,IAAA;AAAA,EAC5B,OAAA;AAAA,EAER,WAAA,CAAY;AAAA,IACV,cAAA;AAAA,IACA;AAAA,GACF,GAGI,EAAC,EAAG;AACN,IAAA,KAAA,CAAM;AAAA,MACJ,cAAA,EAAgB;AAAA,QACd,IAAA,EAAM,cAAA,EAAgB,KAAA,IAAS,qBAAA,CAAsB,KAAA;AAAA,QACrD,MAAA,EAAQ,cAAA,EAAgB,MAAA,IAAU,qBAAA,CAAsB;AAAA;AAC1D,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAGf,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,IAAA,CAAK,QAAA,GAAW,cAAA,EAAgB,MAAA,IAAU,qBAAA,CAAsB,MAAA;AAChE,MAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,QAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,MAC7E;AACA,MAAA,IAAA,CAAK,SAAS,IAAI,UAAA,CAAW,EAAE,QAAA,EAAU,IAAA,CAAK,UAAU,CAAA;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAA,GAAc;AAClB,IAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,EACzB;AAAA,EAEA,MAAM,MAAA,CAAO,WAAA,EAAoC,OAAA,EAAoD;AAEnG,IAAA,MAAM,SAAmB,EAAC;AAC1B,IAAA,WAAA,MAAiB,SAAS,WAAA,EAAa;AACrC,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,MAChC,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,MACnB;AAAA,IACF;AACA,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AACxC,IAAA,MAAM,WAAA,GAAc,WAAA,CAAY,QAAA,CAAS,QAAQ,CAAA;AAEjD,IAAA,MAAM,KAAA,GAAQ,OAAA,EAAS,KAAA,IAAS,qBAAA,CAAsB,KAAA;AAGtD,IAAA,IAAI,KAAK,OAAA,EAAS;AAEhB,MAAA,MAAM,QAAA,GAAY,MAAM,IAAA,CAAK,OAAA,CAAQ,IAAI,KAAA,EAAO;AAAA,QAC9C,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,CAAA,MAAA,IAAW,KAAK,MAAA,EAAQ;AAEtB,MAAA,MAAM,OAAA,GAAU,EAAE,KAAA,EAAO,WAAA,EAAa,YAAY,OAAA,EAAS,UAAA,IAAc,sBAAsB,UAAA,EAAW;AAC1G,MAAA,MAAM,WAAY,MAAM,IAAA,CAAK,OAAO,EAAA,CAAG,GAAA,CAAI,OAAO,OAAO,CAAA;AACzD,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,IACjE;AAAA,EACF;AAAA,EACA,MAAM,KAAA,GAAwC;AAC5C,IAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,EACxD;AAAA,EACA,MAAM,WAAA,GAAuE;AAC3E,IAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,EACxD;AACF","file":"index.js","sourcesContent":["import type {\n Ai,\n Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output,\n Ai_Cf_Openai_Whisper_Output,\n Ai_Cf_Openai_Whisper_Tiny_En_Output,\n} from '@cloudflare/workers-types';\nimport { MastraVoice } from '@mastra/core/voice';\nimport Cloudflare from 'cloudflare';\n\ninterface CloudflareListenOptions {\n apiKey?: string;\n model?: '@cf/openai/whisper-tiny-en' | '@cf/openai/whisper' | '@cf/openai/whisper-large-v3-turbo';\n account_id?: string;\n}\n\ntype CloudflareListenOutput =\n | Ai_Cf_Openai_Whisper_Tiny_En_Output\n | Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output\n | Ai_Cf_Openai_Whisper_Output;\n\nconst defaultListeningModel = {\n model: '@cf/openai/whisper-large-v3-turbo' as const,\n apiKey: process.env.CLOUDFLARE_AI_API_KEY,\n account_id: process.env.CLOUDFLARE_ACCOUNT_ID!,\n};\n\nexport class CloudflareVoice extends MastraVoice {\n private apiToken?: string;\n private client: Cloudflare | null = null;\n private binding?: Ai;\n\n constructor({\n listeningModel,\n binding,\n }: {\n listeningModel?: CloudflareListenOptions;\n binding?: Ai;\n } = {}) {\n super({\n listeningModel: {\n name: listeningModel?.model ?? defaultListeningModel.model,\n apiKey: listeningModel?.apiKey ?? defaultListeningModel.apiKey,\n },\n });\n\n // Store Workers AI binding if provided\n this.binding = binding;\n\n // Only setup REST client if no binding provided or both are needed\n if (!binding) {\n this.apiToken = listeningModel?.apiKey || defaultListeningModel.apiKey;\n if (!this.apiToken) {\n throw new Error('CLOUDFLARE_AI_API_KEY must be set when not using bindings');\n }\n this.client = new Cloudflare({ apiToken: this.apiToken });\n }\n }\n\n /**\n * Checks if listening capabilities are enabled.\n *\n * @returns {Promise<{ enabled: boolean }>}\n */\n async getListener() {\n return { enabled: true };\n }\n\n async listen(audioStream: NodeJS.ReadableStream, options?: CloudflareListenOptions): Promise<string> {\n // Collect audio data into buffer\n const chunks: Buffer[] = [];\n for await (const chunk of audioStream) {\n if (typeof chunk === 'string') {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk);\n }\n }\n const audioBuffer = Buffer.concat(chunks);\n const base64Audio = audioBuffer.toString('base64');\n\n const model = options?.model || defaultListeningModel.model;\n\n // Use native binding if available, otherwise use REST API\n if (this.binding) {\n // Using Workers AI binding\n const response = (await this.binding.run(model, {\n audio: base64Audio,\n })) as CloudflareListenOutput;\n return response.text;\n } else if (this.client) {\n // Using REST API client\n const payload = { audio: base64Audio, account_id: options?.account_id || defaultListeningModel.account_id };\n const response = (await this.client.ai.run(model, payload)) as any;\n return response.text as string;\n } else {\n throw new Error('Neither binding nor REST client is configured');\n }\n }\n async speak(): Promise<NodeJS.ReadableStream> {\n throw new Error('This feature is not yet implemented.');\n }\n async getSpeakers(): Promise<Array<{ voiceId: string; [key: string]: any }>> {\n throw new Error('This feature is not yet implemented.');\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/voice-cloudflare",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0-beta.0",
|
|
4
4
|
"description": "Mastra Cloudflare AI voice integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"typescript": "^5.8.3",
|
|
36
36
|
"vitest": "^3.2.4",
|
|
37
37
|
"zod": "^3.25.76",
|
|
38
|
-
"@internal/lint": "0.0.
|
|
39
|
-
"@internal/types-builder": "0.0.
|
|
40
|
-
"@mastra/core": "0.
|
|
38
|
+
"@internal/lint": "0.0.53",
|
|
39
|
+
"@internal/types-builder": "0.0.28",
|
|
40
|
+
"@mastra/core": "1.0.0-beta.0"
|
|
41
41
|
},
|
|
42
42
|
"keywords": [
|
|
43
43
|
"mastra",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"speech-recognition"
|
|
51
51
|
],
|
|
52
52
|
"peerDependencies": {
|
|
53
|
-
"@mastra/core": ">=0.
|
|
53
|
+
"@mastra/core": ">=1.0.0-0 <2.0.0-0",
|
|
54
54
|
"zod": "^3.25.0 || ^4.0.0"
|
|
55
55
|
},
|
|
56
56
|
"homepage": "https://mastra.ai",
|
|
@@ -62,12 +62,8 @@
|
|
|
62
62
|
"bugs": {
|
|
63
63
|
"url": "https://github.com/mastra-ai/mastra/issues"
|
|
64
64
|
},
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"publish-branch": [
|
|
68
|
-
"main",
|
|
69
|
-
"0.x"
|
|
70
|
-
]
|
|
65
|
+
"engines": {
|
|
66
|
+
"node": ">=22.13.0"
|
|
71
67
|
},
|
|
72
68
|
"scripts": {
|
|
73
69
|
"build": "tsup --silent --config tsup.config.ts",
|